From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目
---
src/components/Tinyflow/Tinyflow.vue | 63 +++++++++++++++++++++++++++++++
1 files changed, 63 insertions(+), 0 deletions(-)
diff --git a/src/components/Tinyflow/Tinyflow.vue b/src/components/Tinyflow/Tinyflow.vue
new file mode 100644
index 0000000..6c4f21c
--- /dev/null
+++ b/src/components/Tinyflow/Tinyflow.vue
@@ -0,0 +1,63 @@
+<template>
+ <div ref="divRef" :class="['tinyflow', className]" :style="style" style="height: 100%"> </div>
+</template>
+
+<script setup lang="ts">
+import { Item, Tinyflow as TinyflowNative } from './ui'
+import './ui/index.css'
+import { onMounted, onUnmounted, ref } from 'vue'
+
+const props = defineProps<{
+ className?: string
+ style?: Record<string, string>
+ data?: Record<string, any>
+ provider?: {
+ llm?: () => Item[] | Promise<Item[]>
+ knowledge?: () => Item[] | Promise<Item[]>
+ internal?: () => Item[] | Promise<Item[]>
+ }
+}>()
+
+const divRef = ref<HTMLDivElement | null>(null)
+let tinyflow: TinyflowNative | null = null
+// 瀹氫箟榛樿鐨� provider 鏂规硶
+const defaultProvider = {
+ llm: () => [] as Item[],
+ knowledge: () => [] as Item[],
+ internal: () => [] as Item[]
+}
+
+onMounted(() => {
+ if (divRef.value) {
+ // 鍚堝苟榛樿 provider 鍜屼紶鍏ョ殑 props.provider
+ const mergedProvider = {
+ ...defaultProvider,
+ ...props.provider
+ }
+ tinyflow = new TinyflowNative({
+ element: divRef.value as Element,
+ data: props.data || {},
+ provider: mergedProvider
+ })
+ }
+})
+
+onUnmounted(() => {
+ if (tinyflow) {
+ tinyflow.destroy()
+ tinyflow = null
+ }
+})
+
+const getData = () => {
+ if (tinyflow) {
+ return tinyflow.getData()
+ }
+ console.warn('Tinyflow instance is not initialized')
+ return null
+}
+
+defineExpose({
+ getData
+})
+</script>
--
Gitblit v1.8.0