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