@touchvue/chat 1.0.0-beta.6 → 1.0.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/package.json.mjs +1 -1
- package/es/packages/components/index.mjs +1 -1
- package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs +1 -1
- package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/index.mjs +3 -3
- package/es/packages/components/touchchat/index.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +25 -51
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs +4 -3
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/index.vue2.mjs +1 -1
- package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
- package/global.d.ts +2 -2
- package/lib/package.json.js +1 -1
- package/lib/packages/components/index.js +2 -2
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/index.js +4 -4
- package/lib/packages/components/touchchat/index.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +25 -51
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/index.vue2.js +1 -1
- package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
- package/package.json +1 -1
- package/theme/font/iconfont.woff +0 -0
- package/theme/font/iconfont.woff2 +0 -0
- package/types/global.d.ts +2 -2
package/es/package.json.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, ref, inject, onMounted, openBlock, createElementBlock, createElementVNode, createTextVNode, toDisplayString, createCommentVNode } from 'vue';
|
|
2
2
|
|
|
3
|
-
const __default__ = defineComponent({ name: "
|
|
3
|
+
const __default__ = defineComponent({ name: "Touchletter" });
|
|
4
4
|
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
5
5
|
...__default__,
|
|
6
6
|
props: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"letter.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/component/AiRobot/letter.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: '
|
|
1
|
+
{"version":3,"file":"letter.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/component/AiRobot/letter.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'Touchletter' });\n</script>\n<template>\n\t<div class=\"letter-container\">\n\t\t<div class=\"data-content\">\n\t\t\t{{ displayedText }}\n\t\t\t<span v-if=\"showCursor\" class=\"cursor\">|</span>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, onMounted, defineProps, defineEmits, inject, Ref } from 'vue'\n\n\n\n// 定义props和emits\nconst props = defineProps<{\n\tdata: string\n}>()\n\nconst emit = defineEmits<{\n\t(e: 'complete'): void\n}>()\n\n// 状态管理\nconst displayedText = ref('')\nconst showCursor = ref(false)\n// 正确注入Ref<boolean>类型\nconst isSwitchingHistory = inject<Ref<boolean>>('isSwitchingHistory', ref(false))\nlet typingInterval: number | null = null\n\n// 文字流实现\nconst startStreaming = () => {\n\tif (typingInterval) return\n\n\t// 访问.value以获取布尔值\n\tif (isSwitchingHistory.value) {\n\t\tdisplayedText.value = props.data\n\t\tshowCursor.value = false\n\t\temit('complete')\n\t\treturn\n\t}\n\n\t// 新增消息的文字流逻辑\n\tshowCursor.value = true\n\tdisplayedText.value = ''\n\tlet currentIndex = 0\n\tconst fullText = props.data\n\n\ttypingInterval = window.setInterval(() => {\n\t\tif (currentIndex < fullText.length) {\n\t\t\tdisplayedText.value += fullText[currentIndex]\n\t\t\tcurrentIndex++\n\t\t} else {\n\t\t\twindow.clearInterval(typingInterval!)\n\t\t\ttypingInterval = null\n\t\t\tshowCursor.value = false\n\t\t\temit('complete')\n\t\t}\n\t}, 50)\n}\n\n// 组件挂载时开始显示\nonMounted(() => {\n\tstartStreaming()\n})\n</script>\n\n<!-- <style lang=\"less\" scoped>\n@import '../style/Letter.less';\n</style> -->\n"],"names":["DO_defineComponent","_createElementBlock","_createElementVNode","_createTextVNode","_toDisplayString"],"mappings":";;AAEA,MAAA,WAA6B,GAAAA,eAAA,CAAmB,EAAE,IAAA,EAAM,eAAe,CAAA,CAAA;;;;;;;;AAiBvE,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAId,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AAKb,IAAM,MAAA,aAAA,GAAgB,IAAI,EAAE,CAAA,CAAA;AAC5B,IAAM,MAAA,UAAA,GAAa,IAAI,KAAK,CAAA,CAAA;AAE5B,IAAA,MAAM,kBAAqB,GAAA,MAAA,CAAqB,oBAAsB,EAAA,GAAA,CAAI,KAAK,CAAC,CAAA,CAAA;AAChF,IAAA,IAAI,cAAgC,GAAA,IAAA,CAAA;AAGpC,IAAA,MAAM,iBAAiB,MAAM;AAC5B,MAAI,IAAA,cAAA;AAAgB,QAAA,OAAA;AAGpB,MAAA,IAAI,mBAAmB,KAAO,EAAA;AAC7B,QAAA,aAAA,CAAc,QAAQ,KAAM,CAAA,IAAA,CAAA;AAC5B,QAAA,UAAA,CAAW,KAAQ,GAAA,KAAA,CAAA;AACnB,QAAA,IAAA,CAAK,UAAU,CAAA,CAAA;AACf,QAAA,OAAA;AAAA,OACD;AAGA,MAAA,UAAA,CAAW,KAAQ,GAAA,IAAA,CAAA;AACnB,MAAA,aAAA,CAAc,KAAQ,GAAA,EAAA,CAAA;AACtB,MAAA,IAAI,YAAe,GAAA,CAAA,CAAA;AACnB,MAAA,MAAM,WAAW,KAAM,CAAA,IAAA,CAAA;AAEvB,MAAiB,cAAA,GAAA,MAAA,CAAO,YAAY,MAAM;AACzC,QAAI,IAAA,YAAA,GAAe,SAAS,MAAQ,EAAA;AACnC,UAAc,aAAA,CAAA,KAAA,IAAS,SAAS,YAAY,CAAA,CAAA;AAC5C,UAAA,YAAA,EAAA,CAAA;AAAA,SACM,MAAA;AACN,UAAA,MAAA,CAAO,cAAc,cAAe,CAAA,CAAA;AACpC,UAAiB,cAAA,GAAA,IAAA,CAAA;AACjB,UAAA,UAAA,CAAW,KAAQ,GAAA,KAAA,CAAA;AACnB,UAAA,IAAA,CAAK,UAAU,CAAA,CAAA;AAAA,SAChB;AAAA,SACE,EAAE,CAAA,CAAA;AAAA,KACN,CAAA;AAGA,IAAA,SAAA,CAAU,MAAM;AACf,MAAe,cAAA,EAAA,CAAA;AAAA,KACf,CAAA,CAAA;;wBA/DA,EAAAC,kBAAA,CAKM,OAAA,EALD,KAAA,EAAM,oBAAkB,EAAA;AAAA,QAC5BC,kBAGM,CAAA,KAAA,EAAA,EAHD,KAAA,EAAM,gBAAc,EAAA;AAAA,UACrBC,gBAAAC,eAAA,CAAA,aAAA,CAAA,KAAa,CAAA,GAAG,KACnB,CAAA,CAAA;AAAA,UAAY,UAAU,CAAA,KAAA,iBAAtBH,mBAA+C,MAAA,EAAA;AAAA;YAAvB,KAAM,EAAA,QAAA;AAAA,WAAS,EAAA,GAAC;;;;;;;;;"}
|
|
@@ -2,8 +2,8 @@ import _sfc_main from './src/index.vue2.mjs';
|
|
|
2
2
|
import _sfc_main$1 from './component/AiRobot/letter.vue2.mjs';
|
|
3
3
|
import { withInstall } from '../../utils/types.mjs';
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
const
|
|
5
|
+
const Touchchat = withInstall(_sfc_main);
|
|
6
|
+
const Touchletter = withInstall(_sfc_main$1);
|
|
7
7
|
|
|
8
|
-
export {
|
|
8
|
+
export { Touchchat, Touchletter };
|
|
9
9
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../packages/components/touchchat/index.ts"],"sourcesContent":["import ToTouchChat from './src/index.vue'\nimport ToTouchLetter from '../touchchat/component/AiRobot/letter.vue'\n\nimport { SFCWithInstall, withInstall } from '@touchvue/utils'\n\nexport const
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../packages/components/touchchat/index.ts"],"sourcesContent":["import ToTouchChat from './src/index.vue'\nimport ToTouchLetter from '../touchchat/component/AiRobot/letter.vue'\n\nimport { SFCWithInstall, withInstall } from '@touchvue/utils'\n\nexport const Touchchat: SFCWithInstall<typeof ToTouchChat> = withInstall(ToTouchChat)\nexport const Touchletter: SFCWithInstall<typeof ToTouchLetter> = withInstall(ToTouchLetter)\n\nexport * from './src/index.vue'\nexport * from '../touchchat/component/AiRobot/letter.vue'\n"],"names":["ToTouchChat","ToTouchLetter"],"mappings":";;;;AAKa,MAAA,SAAA,GAAgD,YAAYA,SAAW,EAAA;AACvE,MAAA,WAAA,GAAoD,YAAYC,WAAa;;;;"}
|
|
@@ -49,8 +49,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
49
49
|
const aiChatType = inject("aiChatType", "Flow");
|
|
50
50
|
const scripts = inject("scripts", []);
|
|
51
51
|
const robotUnmatched = inject("robotUnmatched", "\u60A8\u7684\u6D88\u606F\u672A\u5339\u914D\u5230\u4EFB\u4F55\u5185\u5BB9");
|
|
52
|
-
const
|
|
53
|
-
const selectedScriptName = ref("");
|
|
52
|
+
const selectedScriptName = ref(scripts.length > 0 ? scripts[0].name : "");
|
|
54
53
|
const afterSendMessage = inject("afterSendMessage", () => {
|
|
55
54
|
console.warn("\u672A\u63D0\u4F9BafterSendMessage\u51FD\u6570");
|
|
56
55
|
});
|
|
@@ -187,57 +186,31 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
187
186
|
}
|
|
188
187
|
if (!currentScript)
|
|
189
188
|
return null;
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
if (
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}
|
|
199
|
-
if (isDataMatch2 || isSubDataMatch2) {
|
|
200
|
-
currentScriptIndex.value = 0;
|
|
201
|
-
const responses = [];
|
|
202
|
-
let nextIndex = currentScript.content.length;
|
|
203
|
-
for (let i = 1; i < currentScript.content.length; i++) {
|
|
204
|
-
const item = currentScript.content[i];
|
|
205
|
-
if (item.user === "i") {
|
|
206
|
-
nextIndex = i;
|
|
207
|
-
break;
|
|
189
|
+
for (let i = 0; i < currentScript.content.length; i++) {
|
|
190
|
+
const item = currentScript.content[i];
|
|
191
|
+
if (item.user === "i") {
|
|
192
|
+
const isDataMatch = item.data && userInput.includes(item.data);
|
|
193
|
+
let isSubDataMatch = false;
|
|
194
|
+
if (item.subData) {
|
|
195
|
+
if (Array.isArray(item.subData)) {
|
|
196
|
+
isSubDataMatch = item.subData.some((subItem) => userInput.includes(subItem));
|
|
208
197
|
}
|
|
209
|
-
if (item.user === "ai") {
|
|
210
|
-
responses.push(item);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
return { responses, nextIndex };
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
const currentItem = currentScript.content[currentScriptIndex.value];
|
|
217
|
-
if (!currentItem || currentItem.user !== "i") {
|
|
218
|
-
return null;
|
|
219
|
-
}
|
|
220
|
-
const isDataMatch = currentItem.data && userInput.includes(currentItem.data);
|
|
221
|
-
let isSubDataMatch = false;
|
|
222
|
-
if (currentItem.subData) {
|
|
223
|
-
if (Array.isArray(currentItem.subData)) {
|
|
224
|
-
isSubDataMatch = currentItem.subData.some((item) => userInput.includes(item));
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
if (isDataMatch || isSubDataMatch) {
|
|
228
|
-
const responses = [];
|
|
229
|
-
let nextIndex = currentScript.content.length;
|
|
230
|
-
for (let i = currentScriptIndex.value + 1; i < currentScript.content.length; i++) {
|
|
231
|
-
const item = currentScript.content[i];
|
|
232
|
-
if (item.user === "i") {
|
|
233
|
-
nextIndex = i;
|
|
234
|
-
break;
|
|
235
198
|
}
|
|
236
|
-
if (
|
|
237
|
-
responses
|
|
199
|
+
if (isDataMatch || isSubDataMatch) {
|
|
200
|
+
const responses = [];
|
|
201
|
+
for (let j = i + 1; j < currentScript.content.length; j++) {
|
|
202
|
+
const nextItem = currentScript.content[j];
|
|
203
|
+
if (nextItem.user === "i") {
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
if (nextItem.user === "ai") {
|
|
207
|
+
responses.push(nextItem);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
const nextIndex = currentScript.content.findIndex((contentItem, index) => index > i && contentItem.user === "i");
|
|
211
|
+
return { responses, nextIndex: nextIndex === -1 ? currentScript.content.length : nextIndex };
|
|
238
212
|
}
|
|
239
213
|
}
|
|
240
|
-
return { responses, nextIndex };
|
|
241
214
|
}
|
|
242
215
|
return null;
|
|
243
216
|
};
|
|
@@ -710,7 +683,6 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
710
683
|
const result = findMatchingScriptContent(userInput);
|
|
711
684
|
console.log("result === handleSend", result);
|
|
712
685
|
if (result && result.responses.length > 0) {
|
|
713
|
-
currentScriptIndex.value = result.nextIndex;
|
|
714
686
|
const newAiMessages = [];
|
|
715
687
|
result.responses.forEach((response, idx) => {
|
|
716
688
|
const pauseMarker = Array.isArray(response.data) ? "\u200B".repeat(20) : "";
|
|
@@ -937,7 +909,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
937
909
|
});
|
|
938
910
|
};
|
|
939
911
|
onMounted(async () => {
|
|
940
|
-
|
|
912
|
+
if (isMounted.value) {
|
|
913
|
+
init();
|
|
914
|
+
}
|
|
941
915
|
isMounted.value = true;
|
|
942
916
|
watch(
|
|
943
917
|
isDeepSeek,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TouchChat.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiChat/TouchChat.vue"],"sourcesContent":["<script lang=\"ts\">\nconst enum MessageAction {\n\tCOPY = 'copy',\n\tEDIT = 'edit',\n\tDELETE = 'delete',\n\tRETRY = 'retry',\n\tLIKE = 'like',\n\tDISLIKE = 'dislike'\n}\nconst enum ThinkStatus {\n\tTHINKING = 'thinking',\n\tCOMPLETED = 'completed',\n\tSTOPPED = 'stopped'\n}\n</script>\n<template>\n\t<div class=\"touchchat-main\">\n\t\t<div ref=\"chatContainer\" class=\"touchchat-dialog\">\n\t\t\t<slot name=\"tabView\"> </slot>\n\t\t\t<div v-if=\"chatList.length === 0\" class=\"touchchat-welcome\">\n\t\t\t\t<slot name=\"welcome\">\n\t\t\t\t\t<HelloChat @send-message=\"sendMessage\" />\n\t\t\t\t</slot>\n\t\t\t</div>\n\t\t\t<div class=\"touchchat-dialog-content\">\n\t\t\t\t<template v-for=\"(item, index) in chatList\" :key=\"item.chatId\">\n\t\t\t\t\t<UserMessage v-if=\"item.user === 'u'\" :item=\"item\" :index=\"index\" @copy=\"handleMessageAction(MessageAction.COPY, index)\" @edit=\"handleMessageAction(MessageAction.EDIT, index)\" @delete=\"handleMessageAction(MessageAction.DELETE, index)\" @save-edit=\"saveEdit\" @cancel-edit=\"cancelEdit(index)\">\n\t\t\t\t\t\t<template #userAvatar>\n\t\t\t\t\t\t\t<slot name=\"userAvatar\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #messageActions>\n\t\t\t\t\t\t\t<slot name=\"messageActions\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</UserMessage>\n\t\t\t\t\t<AiMessage v-else :item=\"item\" :index=\"index\" :enable-deep-thinking=\"enableDeepThinking\" @copy=\"handleMessageAction(MessageAction.COPY, index)\" @retry=\"handleMessageAction(MessageAction.RETRY, index)\" @like=\"handleMessageAction(MessageAction.LIKE, index)\" @dislike=\"handleMessageAction(MessageAction.DISLIKE, index)\" @content-rendered=\"attachCopyButtons\" @complete-rendered=\"completeRendered\" @toggle-sidebar=\"toggleSidebarClick\">\n\t\t\t\t\t\t<template #aiMessageContent>\n\t\t\t\t\t\t\t<slot name=\"aiMessageContent\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #aiAvatar>\n\t\t\t\t\t\t\t<slot name=\"aiAvatar\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #messageActions>\n\t\t\t\t\t\t\t<slot name=\"messageActions\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</AiMessage>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t\t<!-- <Scene v-if=\"scripts.length > 0\" :scripts=\"scripts\" :selected-script-name=\"selectedScriptName\" :btn-disable=\"false\" @scene-click=\"sceneClick\"> </Scene> -->\n\t\t<slot name=\"chatInput\">\n\t\t\t<ChatInput v-model:input-value=\"inputValue\" v-model:enable-deep-thinking=\"enableDeepThinking\" :is-chating=\"isChating\" @send=\"handleBeforeSend\" @stop=\"handleStop\" @toggle-deep-thinking=\"(val: boolean) => (enableDeepThinking = val)\"> </ChatInput>\n\t\t</slot>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport UserMessage from './UserMessage.vue'\nimport AiMessage from './AiMessage.vue'\nimport ChatInput from './ChatInput.vue'\n// import Scene from './Scene.vue'\nimport HelloChat from '../../component/HelloChat.vue'\nimport { ref, onMounted, onBeforeUnmount, nextTick, inject, watch, computed, provide } from 'vue'\nimport type { ComputedRef } from 'vue'\nimport { throttle } from 'throttle-debounce'\nimport { FetchStream } from '../../utils/fetchStream.ts'\nimport { ChatRobot } from '../../utils/chatRobot.ts'\nimport markdown from '../../utils/markdown.ts'\nimport { showToast } from '../../utils/tools.ts'\n\n// 类型定义\ninterface ChatMessage {\n\tchatId?: string\n\tuser: string\n\ttype: string\n\tcontent: string\n\tisChating?: boolean\n\tthinkContent?: string\n\treasoningContent?: string\n\tisLiked?: boolean\n\tisDisliked?: boolean\n\tisShowLike?: boolean\n\tisEditing?: boolean\n\teditContent?: string\n\tcomponentName?: string\n\tthinkStatus?: string\n\tthinkStartTime?: number\n\tthinkTime?: number\n\t[key: string]: any\n}\n\ninterface ChatInfoItem {\n\tmsgContent: string\n}\n\ninterface RenderData {\n\tmainContent: string\n\tthinkContent: string\n\treasoningContent: string\n}\n\ninterface ScriptContent {\n\tuser: string\n\tdata?: string\n\tsubData?: string[]\n\ttype?: string\n}\n\ninterface Script {\n\tname: string\n\tid?: string\n\tsubTitle?: string\n\tcontent: ScriptContent[]\n}\n\n// 枚举定义\n\n\n\n\n// 组件属性和注入\nconst emit = defineEmits(['sendMessage', 'toggleSidebar', 'beforeSendMessage'])\nconst action = inject<string>('action', '')\nconst headers = inject<Record<string, string> | Headers | undefined>('headers', undefined)\nconst body = inject<Record<string, any> | undefined>('body', undefined)\nconst token = inject<string>('token', '')\nconst wsUrl = inject<string>('wsUrl', '')\nconst connectionType = inject<string>('connectionType')\nconst isDeepSeek = inject<ComputedRef<boolean>>(\n\t'isDeepSeek',\n\tcomputed(() => true)\n)\nconst aiChatType = inject<'Flow' | 'Intelligent'>('aiChatType', 'Flow')\nconst scripts = inject<any[]>('scripts', [])\nconst robotUnmatched = inject<string>('robotUnmatched', '您的消息未匹配到任何内容')\n// 当前脚本索引\nconst currentScriptIndex = ref(0)\n// 当前选中的脚本名称\nconst selectedScriptName = ref('')\nconst afterSendMessage = inject<(content: string) => void>('afterSendMessage', () => {\n\tconsole.warn('未提供afterSendMessage函数')\n})\nconst sendMessageInject = inject<(value: string) => void>('handleSend', () => {\n\tconsole.warn('未提供handleSend函数')\n})\nconst beforeSend = inject<() => { result: boolean; componentName?: string }>('beforeSend', () => ({\n\tresult: true\n}))\n\n// 组件属性\nconst props = defineProps({\n\tmodel: {\n\t\ttype: String,\n\t\tdefault: 'deepseek-v3'\n\t},\n\tvalue: {\n\t\ttype: Array as () => ChatMessage[],\n\t\tdefault: () => []\n\t},\n\tplaceholder: {\n\t\ttype: String,\n\t\tdefault: '快来和我聊天吧~'\n\t},\n\tcomponents: {\n\t\ttype: Object,\n\t\tdefault: () => ({})\n\t},\n\topenSSECallback: {\n\t\ttype: Function as unknown as () => (fetchStream: typeof FetchStream) => void,\n\t\tdefault: null\n\t}\n})\n\n// 组件状态\nconst chatContainer = ref<HTMLElement | null>(null)\nconst htmlContentRef = ref<(HTMLElement | null)[]>([])\nconst thinkingContentRef = ref<(HTMLElement | null)[]>([])\nconst reasoningContentRef = ref<(HTMLElement | null)[]>([])\nconst isMounted = ref(false)\nconst isChating = ref(false)\nconst inputValue = ref('')\nconst enableDeepThinking = ref(false)\nconst chatList = ref<ChatMessage[]>([])\nconst renderQueue = ref<RenderData[]>([])\nconst isRendering = ref(false)\nconst currIndex = ref(0)\nconst fetchStream = ref<InstanceType<typeof FetchStream> | null>(null)\nconst TouchChatRobot = ref<ChatRobot>()\nconst isUnmounting = ref(false)\nconst currentComponentName = ref('')\n\n// 消息管理工具函数\nconst messageUtils = {\n\tupdateMessage: (index: number, updates: Partial<ChatMessage>): void => {\n\t\tif (index < 0 || index >= chatList.value.length) return\n\t\tchatList.value.splice(index, 1, { ...chatList.value[index], ...updates })\n\t\tnextTick(() => {\n\t\t\tconst message = chatList.value[index]\n\t\t\tif (message) {\n\t\t\t\trenderContent(message.content, 'main', index)\n\t\t\t\tif (message.thinkContent) {\n\t\t\t\t\trenderContent(message.thinkContent, 'thinking', index)\n\t\t\t\t}\n\t\t\t\tif (message.reasoningContent) {\n\t\t\t\t\trenderContent(message.reasoningContent, 'reasoning', index)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t},\n\n\tdeleteMessageChain: (index: number): void => {\n\t\tif (index < 0 || index >= chatList.value.length) return\n\t\tconst nextIndex = index + 1\n\t\tconst deleteCount = nextIndex < chatList.value.length && chatList.value[nextIndex].user === 'ai' ? 2 : 1\n\t\tchatList.value.splice(index, deleteCount)\n\t},\n\n\tcreateStandardMessage: (data: Partial<ChatMessage>): ChatMessage => ({\n\t\tchatId: data.chatId || 'ai_' + crypto.randomUUID().replace(/-/gi, ''),\n\t\tuser: data.user || 'ai',\n\t\ttype: data.type || 'text',\n\t\tcontent: data.content || '',\n\t\tisChating: data.isChating ?? false,\n\t\tthinkContent: data.thinkContent || '',\n\t\treasoningContent: data.reasoningContent || '',\n\t\tisLiked: data.isLiked ?? false,\n\t\tisDisliked: data.isDisliked ?? false,\n\t\tisEditing: data.isEditing ?? false,\n\t\teditContent: data.editContent ?? ''\n\t})\n}\n\nconst sceneClick = (script: Script) => {\n\tselectedScriptName.value = script.name\n\t// 提取重复逻辑为辅助函数\n\tconst findAndSendFirstUserMessage = (dataSource: Script[]) => {\n\t\tconst targetScript = dataSource.find(item => item.name === script.name)\n\t\tif (targetScript && targetScript.content.length) {\n\t\t\tconst firstUserMessage = targetScript.content.find(citem => citem.user === 'i')?.data\n\t\t\tif (firstUserMessage) {\n\t\t\t\tsendMessage({\n\t\t\t\t\tname: firstUserMessage\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\t// 根据不同类型调用辅助函数\n\tif (scripts.length) {\n\t\tfindAndSendFirstUserMessage(scripts)\n\t}\n}\nconsole.log('sceneClick', sceneClick)\n\nconst completeRendered = () => {\n\t// emit('sendMessage', JSON.parse(JSON.stringify(chatList.value)))\n\tconsole.log('completeRendered', '渲染完成')\n}\n\nconst toggleSidebarClick = (item: ChatMessage, index: number) => {\n\t// emit('sendMessage', JSON.parse(JSON.stringify(chatList.value)))\n\temit('toggleSidebar', item, index)\n}\n// 初始化函数\nconst init = (): void => {\n\ttry {\n\t\tif (Array.isArray(props.value) && props.value.length && isDeepSeek.value) {\n\t\t\tchatList.value = props.value.map(item => ({\n\t\t\t\t...item,\n\t\t\t\tcontent: item.thinkContent ? item.content || '' : item.content || '',\n\t\t\t\tthinkContent: item.thinkContent || ''\n\t\t\t}))\n\n\t\t\tnextTick(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tchatList.value.forEach((item, index) => {\n\t\t\t\t\t\tcurrIndex.value = index\n\t\t\t\t\t\tif (item.thinkContent) {\n\t\t\t\t\t\t\trenderContent(item.thinkContent, 'thinking')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (item.reasoningContent) {\n\t\t\t\t\t\t\trenderContent(item.reasoningContent, 'reasoning')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (item.content) {\n\t\t\t\t\t\t\trenderContent(item.content, 'main')\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t\tif (connectionType === 'Websocket' && isDeepSeek.value) {\n\t\t\topenWebsocket()\n\t\t}\n\t\t// if (!isDeepSeek.value && scripts && Array.isArray(scripts) && scripts.length > 0) {\n\t\t// \tsceneClick(scripts[0])\n\t\t// }\n\t} catch (error) {\n\t\tconsole.error('初始化失败:', error)\n\t}\n}\n\n// 查找匹配的脚本内容(从AiRobot逻辑中提取)\nconst findMatchingScriptContent = (userInput: string) => {\n\tconsole.log('findMatchingScriptContent', selectedScriptName.value)\n\tif (!scripts || scripts.length === 0) return null\n\n\tlet currentScript = scripts.find(item => item.name === selectedScriptName.value)\n\t// let currentScript = scripts[0]\n\n\t// 如果没有找到当前脚本,则使用第一个脚本\n\tif (!currentScript && scripts.length > 0) {\n\t\tcurrentScript = scripts[0]\n\t\tselectedScriptName.value = currentScript.name\n\t}\n\n\tif (!currentScript) return null\n\n\t// 检查是否匹配第一条脚本数据(重置流程)\n\tconst firstItem = currentScript.content[0]\n\tif (firstItem.user === 'i') {\n\t\t// 优先检查data是否匹配\n\t\tconst isDataMatch = firstItem.data && userInput.includes(firstItem.data)\n\n\t\t// 检查subData是否匹配\n\t\tlet isSubDataMatch = false\n\t\tif (firstItem.subData) {\n\t\t\tif (Array.isArray(firstItem.subData)) {\n\t\t\t\tisSubDataMatch = firstItem.subData.some((item: string) => userInput.includes(item))\n\t\t\t}\n\t\t}\n\n\t\tif (isDataMatch || isSubDataMatch) {\n\t\t\tcurrentScriptIndex.value = 0\n\n\t\t\t// 收集第一条后的AI回复直到下一个用户输入点\n\t\t\tconst responses: any[] = []\n\t\t\tlet nextIndex = currentScript.content.length\n\n\t\t\tfor (let i = 1; i < currentScript.content.length; i++) {\n\t\t\t\tconst item = currentScript.content[i]\n\t\t\t\tif (item.user === 'i') {\n\t\t\t\t\tnextIndex = i\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif (item.user === 'ai') {\n\t\t\t\t\tresponses.push(item)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn { responses, nextIndex }\n\t\t}\n\t}\n\n\t// 检查当前索引位置的条目\n\tconst currentItem = currentScript.content[currentScriptIndex.value]\n\tif (!currentItem || currentItem.user !== 'i') {\n\t\treturn null\n\t}\n\n\t// 当前条目是否匹配用户输入\n\tconst isDataMatch = currentItem.data && userInput.includes(currentItem.data)\n\n\t// 检查subData是否匹配\n\tlet isSubDataMatch = false\n\tif (currentItem.subData) {\n\t\tif (Array.isArray(currentItem.subData)) {\n\t\t\tisSubDataMatch = currentItem.subData.some((item: string) => userInput.includes(item))\n\t\t}\n\t}\n\n\tif (isDataMatch || isSubDataMatch) {\n\t\t// 收集AI回复\n\t\tconst responses: any[] = []\n\t\tlet nextIndex = currentScript.content.length // 默认设为脚本末尾\n\n\t\t// 查找下一个用户输入点并收集AI回复\n\t\tfor (let i = currentScriptIndex.value + 1; i < currentScript.content.length; i++) {\n\t\t\tconst item = currentScript.content[i]\n\t\t\tif (item.user === 'i') {\n\t\t\t\tnextIndex = i\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif (item.user === 'ai') {\n\t\t\t\tresponses.push(item)\n\t\t\t}\n\t\t}\n\n\t\treturn { responses, nextIndex }\n\t}\n\n\treturn null\n}\n\n// 监听props.value变化\nwatch(\n\t() => props.value,\n\t(newVal, oldVal) => {\n\t\tif (!Array.isArray(newVal)) return\n\t\tif (newVal.length && JSON.stringify(newVal) !== JSON.stringify(oldVal)) {\n\t\t\tchatList.value = newVal.map(item => ({\n\t\t\t\t...item,\n\t\t\t\tcontent: item.thinkContent ? item.content || '' : item.content || '',\n\t\t\t\tthinkContent: item.thinkContent || ''\n\t\t\t}))\n\n\t\t\tnextTick(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tchatList.value.forEach((item, index) => {\n\t\t\t\t\t\tcurrIndex.value = index\n\t\t\t\t\t\tif (item.thinkContent) {\n\t\t\t\t\t\t\trenderContent(item.thinkContent, 'thinking')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (item.reasoningContent) {\n\t\t\t\t\t\t\trenderContent(item.reasoningContent, 'reasoning')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (item.content) {\n\t\t\t\t\t\t\trenderContent(item.content, 'main')\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t},\n\t{ deep: true, immediate: true }\n)\n\n// WebSocket连接\nconst openWebsocket = (): void => {\n\tif (!wsUrl) {\n\t\tthrow new Error('wsUrl is required')\n\t}\n\tif (!token) {\n\t\tthrow new Error('token is required')\n\t}\n\n\tlet config = {\n\t\ttoken,\n\t\twsUrl\n\t}\n\tTouchChatRobot.value = new ChatRobot(config)\n\n\tTouchChatRobot.value &&\n\t\tTouchChatRobot.value.addListener('chatCrmSuccess', {\n\t\t\tmsgCallback: chatCrmSuccess,\n\t\t\tstatusCallback: () => {}\n\t\t})\n\tTouchChatRobot.value &&\n\t\tTouchChatRobot.value.addListener('onMessageError', {\n\t\t\tmsgCallback: () => {}\n\t\t})\n\tTouchChatRobot.value &&\n\t\tTouchChatRobot.value.addListener('chatCrmError', {\n\t\t\tmsgCallback: data => {\n\t\t\t\tconsole.log('AI 对话连接错误回调', data)\n\t\t\t}\n\t\t})\n\tTouchChatRobot.value.connect()\n}\n\n// WebSocket消息处理\nconst chatCrmSuccess = (data: any): void => {\n\tif (data && data.chatType === 'response') {\n\t\tif (Array.isArray(data.chatInfo)) {\n\t\t\tlet msgContentList = (data.chatInfo as ChatInfoItem[]).map(item => item.msgContent)\n\t\t\tlet msgContent = msgContentList.length ? msgContentList[0] : ''\n\n\t\t\tchatList.value.push({\n\t\t\t\tuser: 'u',\n\t\t\t\ttype: 'text',\n\t\t\t\tcontent: msgContent\n\t\t\t})\n\t\t}\n\t}\n}\n\n// SSE连接\nconst openSSE = (userContent: string, insertIndex?: number, type?: number): void => {\n\ttry {\n\t\tif (isUnmounting.value) return\n\t\tisChating.value = true\n\n\t\tif (props.openSSECallback) {\n\t\t\tprops.openSSECallback(FetchStream)\n\t\t\treturn\n\t\t}\n\n\t\tconst currentAiMessage = chatList.value.find(item => item.isChating)\n\t\tif (currentAiMessage) {\n\t\t\tcurrentAiMessage.isShowLike = true\n\t\t\tcurrentAiMessage.isShowCopy = true\n\t\t\tcurrentAiMessage.componentName = currentComponentName.value\n\t\t}\n\t\tconst chatId = currentAiMessage?.chatId || 'ai_' + crypto.randomUUID().replace(/-/gi, '')\n\t\tlet aiContent = currentAiMessage?.content || ''\n\t\tlet reasoningContent = currentAiMessage?.reasoningContent || ''\n\t\tlet allAiContent = ''\n\n\t\tif (!currentAiMessage) {\n\t\t\tconst chatItem: ChatMessage = {\n\t\t\t\tchatId: chatId,\n\t\t\t\tuser: 'ai',\n\t\t\t\ttype: 'text',\n\t\t\t\tisChating: true,\n\t\t\t\tcontent: '',\n\t\t\t\tthinkContent: '',\n\t\t\t\treasoningContent: '',\n\t\t\t\tthinkStatus: ThinkStatus.THINKING,\n\t\t\t\tthinkStartTime: Date.now(),\n\t\t\t\tisShowLike: true,\n\t\t\t\tisShowCopy: true,\n\t\t\t\tcomponentName: currentComponentName.value\n\t\t\t}\n\t\t\tif (insertIndex !== undefined && insertIndex <= chatList.value.length) {\n\t\t\t\tchatList.value.splice(insertIndex, 0, chatItem)\n\t\t\t} else {\n\t\t\t\tchatList.value.push(chatItem)\n\t\t\t}\n\t\t}\n\t\tcurrIndex.value = chatList.value.findIndex(ele => ele.chatId === chatId)\n\t\tfetchStream.value = new FetchStream({\n\t\t\turl: action ?? 'https://api.apiyi.com/v1/chat/completions',\n\t\t\trequestInit: {\n\t\t\t\theaders: headers ?? {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: 'Bearer sk-fe9MtODvds8wpzz05f3417Fe3e9641C1926e6fC588425dEd'\n\t\t\t\t},\n\t\t\t\tbody: !isDeepSeek\n\t\t\t\t\t? JSON.stringify(body)\n\t\t\t\t\t: JSON.stringify({\n\t\t\t\t\t\t\tmodel: enableDeepThinking.value ? 'deepseek-reasoner' : 'deepseek-v3',\n\t\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\trole: 'user',\n\t\t\t\t\t\t\t\t\tcontent: userContent\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tstream: true\n\t\t\t\t\t\t})\n\t\t\t},\n\t\t\tonmessage: (line: string) => {\n\t\t\t\tif (isUnmounting.value) return\n\t\t\t\tlet dataString = ''\n\t\t\t\tif (line.length) {\n\t\t\t\t\tif (line.includes('data:')) {\n\t\t\t\t\t\tdataString = line.split('data:')[1]\n\t\t\t\t\t} else if (line.startsWith('{') && line.endsWith('}')) {\n\t\t\t\t\t\tdataString = line\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdataString = dataString.trim()\n\n\t\t\t\tif (dataString && dataString.startsWith('{') && dataString.endsWith('}')) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = JSON.parse(dataString)\n\t\t\t\t\t\tconst newAiMessage = chatList.value[currIndex.value]\n\n\t\t\t\t\t\tif (isDeepSeek) {\n\t\t\t\t\t\t\tif (result?.choices?.[0]?.delta?.content) {\n\t\t\t\t\t\t\t\taiContent += result.choices[0].delta.content\n\t\t\t\t\t\t\t\tif (newAiMessage?.thinkStatus === ThinkStatus.THINKING) {\n\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStatus = ThinkStatus.COMPLETED\n\t\t\t\t\t\t\t\t\tnewAiMessage.thinkTime = Date.now() - (newAiMessage.thinkStartTime || Date.now())\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (result?.choices?.[0]?.delta?.reasoning_content) {\n\t\t\t\t\t\t\t\treasoningContent += result.choices[0].delta.reasoning_content\n\t\t\t\t\t\t\t\tif (!newAiMessage?.thinkStatus) {\n\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStatus = ThinkStatus.THINKING\n\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStartTime = Date.now()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (aiChatType === 'Flow') {\n\t\t\t\t\t\t\t\tif (result?.message && result?.category === 'answer') {\n\t\t\t\t\t\t\t\t\taiContent += result.message\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (aiChatType === 'Intelligent') {\n\t\t\t\t\t\t\t\tif (result?.content && result?.category === 'task_stream_content') {\n\t\t\t\t\t\t\t\t\taiContent += result.content\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (result?.message && result?.category === 'answer') {\n\t\t\t\t\t\t\t\t\tallAiContent = result.message\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (chatList.value.some(ele => ele.chatId === chatId)) {\n\t\t\t\t\t\t\tenqueueRender({\n\t\t\t\t\t\t\t\tmainContent: aiContent,\n\t\t\t\t\t\t\t\tthinkContent: '',\n\t\t\t\t\t\t\t\treasoningContent: reasoningContent\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (type === 1) {\n\t\t\t\t\t\t\tscrollToBottom()\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('解析SSE消息失败:', error)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tondone: () => {\n\t\t\t\tnextTick(() => {\n\t\t\t\t\tisChating.value = false\n\t\t\t\t\tif (isUnmounting.value || !isMounted.value) return\n\t\t\t\t\tconst index = chatList.value.findIndex(ele => ele.chatId === chatId)\n\t\t\t\t\tif (index !== -1 && chatList.value[index]) {\n\t\t\t\t\t\tchatList.value[index].isChating = false\n\t\t\t\t\t\tchatList.value[index].componentName = currentComponentName.value\n\t\t\t\t\t\tif (aiChatType === 'Intelligent' && allAiContent) {\n\t\t\t\t\t\t\tafterSendMessage(allAiContent)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst waitForRenderComplete = () => {\n\t\t\t\t\t\t\tif (renderQueue.value.length === 0 && !isRendering.value) {\n\t\t\t\t\t\t\t\tif (chatList.value.length > 0 && isDeepSeek) {\n\t\t\t\t\t\t\t\t\temit('sendMessage', JSON.parse(JSON.stringify(chatList.value)))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trequestAnimationFrame(waitForRenderComplete)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\twaitForRenderComplete()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t\tonabort: () => {\n\t\t\t\thandleAbort()\n\t\t\t},\n\t\t\tonerror: (response: Error | Response) => {\n\t\t\t\thandleError(response)\n\t\t\t}\n\t\t})\n\t} catch (error) {\n\t\tconsole.error('OpenSSE错误:', error)\n\t\tisChating.value = false\n\t\tshowToast('请求失败,请重试', 'error', 3000)\n\t}\n}\n\n// 处理请求中止\nconst handleAbort = (): void => {\n\tisChating.value = false\n\tif (isUnmounting.value) return\n\n\tconst currentAiMessage = chatList.value[currIndex.value]\n\tconst hasContent = currentAiMessage && (currentAiMessage.content || currentAiMessage.thinkContent || currentAiMessage.reasoningContent)\n\n\tif (currentAiMessage) {\n\t\tif (currentAiMessage.thinkStatus === ThinkStatus.THINKING) {\n\t\t\tcurrentAiMessage.thinkStatus = ThinkStatus.STOPPED\n\t\t\tcurrentAiMessage.thinkTime = Date.now() - (currentAiMessage.thinkStartTime || Date.now())\n\t\t}\n\t\tif (!hasContent) {\n\t\t\tconst userMessageIndex = currIndex.value - 1\n\t\t\tif (userMessageIndex >= 0 && chatList.value[userMessageIndex].user === 'u') {\n\t\t\t\tchatList.value.splice(currIndex.value, 1)\n\t\t\t\tchatList.value.splice(userMessageIndex, 1)\n\t\t\t} else {\n\t\t\t\tchatList.value.splice(currIndex.value, 1)\n\t\t\t}\n\t\t} else {\n\t\t\tconst updatedAiMessage = {\n\t\t\t\t...currentAiMessage,\n\t\t\t\tisChating: false,\n\t\t\t\tcontent: currentAiMessage.content ? currentAiMessage.content + '。。。' : '',\n\t\t\t\tthinkContent: currentAiMessage.thinkContent ? currentAiMessage.thinkContent + '。。。' : undefined,\n\t\t\t\treasoningContent: currentAiMessage.reasoningContent ? currentAiMessage.reasoningContent + '。。。' : undefined,\n\t\t\t\tthinkStatus: currentAiMessage.thinkStatus as ThinkStatus\n\t\t\t}\n\n\t\t\tchatList.value.splice(currIndex.value, 1, updatedAiMessage)\n\n\t\t\tnextTick(() => {\n\t\t\t\trenderContent(updatedAiMessage.thinkContent || '', 'thinking')\n\t\t\t\trenderContent(updatedAiMessage.reasoningContent || '', 'reasoning')\n\t\t\t\trenderContent(updatedAiMessage.content || '', 'main')\n\t\t\t\temit('sendMessage', [...chatList.value])\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n\n\tif (chatList.value.length > 0) {\n\t\temit('sendMessage', [...chatList.value])\n\t}\n}\n\n// 处理请求错误\nconst handleError = (response: Error | Response): void => {\n\tif (isUnmounting.value) return\n\tisChating.value = false\n\n\tlet errorMessage = '未知错误'\n\tif (response instanceof Error) {\n\t\tconsole.error('API请求错误:', response)\n\t\terrorMessage = response.message\n\t} else if (response instanceof Response) {\n\t\tconsole.error('API请求错误, 响应状态:', response.status, response.statusText)\n\t\terrorMessage = `请求失败: ${response.status} ${response.statusText}`\n\t}\n\n\tconst currentAiMessage = chatList.value[currIndex.value]\n\tif (currentAiMessage) {\n\t\tcurrentAiMessage.content = `<div style=\"color: red; display: flex; align-items: center;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"16\" viewBox=\"0 0 15 16\" fill=\"none\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.5 15.5C11.6421 15.5 15 12.1421 15 8C15 3.85786 11.6421 0.5 7.5 0.5C3.35786 0.5 0 3.85786 0 8C0 12.1421 3.35786 15.5 7.5 15.5ZM9.7539 4.9506L10.5494 5.7461L8.2951 8.0001L10.5494 10.2539L9.7539 11.0494L7.5001 8.7951L5.2461 11.0494L4.4506 10.2539L6.7051 8.0001L4.4506 5.7461L5.2461 4.9506L7.5001 7.2051L9.7539 4.9506Z\" fill=\"#F93920\"/>\n</svg>${errorMessage}</div>`\n\t\tcurrentAiMessage.isChating = false\n\t\tcurrentAiMessage.componentName = ''\n\t\tcurrentAiMessage.isShowLike = false\n\t\tcurrentAiMessage.isShowCopy = false\n\n\t\tnextTick(() => {\n\t\t\trenderContent(currentAiMessage.content || '', 'main')\n\t\t\temit('sendMessage', [...chatList.value])\n\t\t})\n\t} else {\n\t\tshowToast(errorMessage, 'error', 3000)\n\t\temit('sendMessage', [...chatList.value])\n\t}\n}\n\n// 渲染队列\nconst enqueueRender = (data: RenderData): void => {\n\tif (isUnmounting.value || !isMounted.value) return\n\tif (currIndex.value < 0 || currIndex.value >= chatList.value.length) return\n\trenderQueue.value.push(data)\n\tif (!isRendering.value) {\n\t\tisRendering.value = true\n\t\tprocessRenderQueue()\n\t}\n}\n\nconst processRenderQueue = (): void => {\n\tif (isUnmounting.value || !isMounted.value) {\n\t\trenderQueue.value = []\n\t\tisRendering.value = false\n\t\treturn\n\t}\n\n\tif (renderQueue.value.length === 0) {\n\t\tisRendering.value = false\n\t\treturn\n\t}\n\n\trequestAnimationFrame(() => {\n\t\tconst data = renderQueue.value.shift()\n\t\tif (data) {\n\t\t\tformatMarkdown(data)\n\t\t}\n\t\tprocessRenderQueue()\n\t})\n}\n\n// 格式化Markdown内容\nconst formatMarkdown = (data: RenderData): void => {\n\tif (!isMounted.value) return\n\tif (currIndex.value < 0 || currIndex.value >= chatList.value.length) return\n\n\tconst currentItem = chatList.value[currIndex.value]\n\tcurrentItem.thinkContent = data.thinkContent\n\tcurrentItem.content = data.mainContent\n\tcurrentItem.reasoningContent = data.reasoningContent\n\n\tnextTick(() => {\n\t\tconst thinkingContainer = thinkingContentRef.value[currIndex.value]\n\t\tif (thinkingContainer) {\n\t\t\tif (data.thinkContent) {\n\t\t\t\trenderContent(data.thinkContent, 'thinking')\n\t\t\t\tthinkingContainer.style.display = 'block'\n\t\t\t\tthinkingContainer.style.visibility = 'visible'\n\t\t\t} else {\n\t\t\t\tthinkingContainer.style.display = 'none'\n\t\t\t\tthinkingContainer.style.visibility = 'hidden'\n\t\t\t}\n\t\t}\n\n\t\tconst reasoningContainer = reasoningContentRef.value[currIndex.value]\n\t\tif (reasoningContainer) {\n\t\t\tif (data.reasoningContent) {\n\t\t\t\trenderContent(data.reasoningContent, 'reasoning')\n\t\t\t\treasoningContainer.style.display = 'block'\n\t\t\t\treasoningContainer.style.visibility = 'visible'\n\t\t\t} else {\n\t\t\t\treasoningContainer.style.display = 'none'\n\t\t\t\treasoningContainer.style.visibility = 'hidden'\n\t\t\t}\n\t\t}\n\n\t\trenderContent(data.mainContent, 'main')\n\t})\n}\n\n// 附加复制按钮\nconst attachCopyButtons = (container: HTMLElement): void => {\n\tconst codeBlocks = container.querySelectorAll('pre code')\n\tcodeBlocks.forEach(codeBlock => {\n\t\tconst pre = codeBlock.parentElement\n\t\tif (pre) {\n\t\t\tconst copyBtn = document.createElement('button')\n\t\t\tcopyBtn.className = 'touchchat-code-copy'\n\t\t\tcopyBtn.addEventListener('click', () => {\n\t\t\t\tconst code = codeBlock.textContent || ''\n\t\t\t\tnavigator.clipboard\n\t\t\t\t\t.writeText(code)\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tshowToast('复制成功', 'info', 2000)\n\t\t\t\t\t\tcopyBtn.textContent = '已复制'\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tcopyBtn.textContent = ''\n\t\t\t\t\t\t}, 2000)\n\t\t\t\t\t})\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tconsole.error('复制失败:', err)\n\t\t\t\t\t\tshowToast('复制失败', 'error', 2000)\n\t\t\t\t\t})\n\t\t\t})\n\n\t\t\tpre.style.position = 'relative'\n\t\t\tpre.appendChild(copyBtn)\n\t\t}\n\t})\n}\n\n// 渲染内容\nconst renderContent = (content: string, type: 'main' | 'thinking' | 'reasoning', index?: number): void => {\n\tconst renderIndex = index ?? currIndex.value\n\tif (renderIndex < 0 || renderIndex >= chatList.value.length) return\n\n\tconst refArrays = {\n\t\tmain: htmlContentRef,\n\t\tthinking: thinkingContentRef,\n\t\treasoning: reasoningContentRef\n\t}\n\tconst processors = {\n\t\tmain: (content: string) => markdown?.render(content, { isReasoning: false }) || '',\n\t\tthinking: (content: string) => markdown?.render(content, { isReasoning: false }) || '',\n\t\treasoning: (content: string) => markdown?.render(content, { isReasoning: false }) || ''\n\t}\n\n\tconst container = refArrays[type].value[renderIndex]\n\tif (!container) return\n\n\tcontainer.innerHTML = processors[type](content || '')\n\tattachCopyButtons(container)\n}\n\n// 发送消息\nconst sendMessage = (item: any): void => {\n\tinputValue.value = item.name || ''\n\thandleBeforeSend()\n}\n\n// 发送前处理\nconst handleBeforeSend = (): void => {\n\tif (beforeSend) {\n\t\tconst fn = beforeSend()\n\t\tif (fn && typeof (fn as any).then === 'function') {\n\t\t\t;(Promise.resolve(fn) as Promise<{ result: boolean; componentName?: string }>)\n\t\t\t\t.then(res => {\n\t\t\t\t\tif (res.result) {\n\t\t\t\t\t\tcurrentComponentName.value = res.componentName || ''\n\t\t\t\t\t\thandleSend()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.log(error)\n\t\t\t\t})\n\t\t} else {\n\t\t\tif (fn.result) {\n\t\t\t\tcurrentComponentName.value = fn.componentName || ''\n\t\t\t\thandleSend()\n\t\t\t}\n\t\t}\n\t}\n}\n\n// 处理发送\nconst handleSend = (content?: string): void => {\n\t// debugger\n\temit('beforeSendMessage')\n\t// 如果isDeepSeek为false(使用AiRobot逻辑)\n\tif (!isDeepSeek.value && scripts && Array.isArray(scripts) && scripts.length > 0) {\n\t\tconst userInput = content ?? inputValue.value.trim()\n\t\tif (!userInput) return\n\n\t\t// 添加用户消息\n\t\tconst userChatId = `user_${Date.now()}`\n\t\tconst userMessage: ChatMessage = {\n\t\t\tchatId: userChatId,\n\t\t\tuser: 'u',\n\t\t\ttype: 'text',\n\t\t\tcontent: userInput,\n\t\t\tisShowLike: false,\n\t\t\tisShowCopy: true\n\t\t}\n\t\tchatList.value.push(userMessage)\n\t\temit('sendMessage', [...chatList.value])\n\n\t\t// 滚动到底部\n\t\tnextTick(() => {\n\t\t\tscrollToBottom()\n\t\t\t// 立即渲染用户消息\n\t\t\trenderContent(userMessage.content, 'main', chatList.value.length - 1)\n\t\t})\n\n\t\t// 查找匹配的脚本内容\n\t\tconst result = findMatchingScriptContent(userInput)\n\t\tconsole.log('result === handleSend', result)\n\n\t\tif (result && result.responses.length > 0) {\n\t\t\tcurrentScriptIndex.value = result.nextIndex\n\t\t\t// 存储新AI消息的数组\n\t\t\tconst newAiMessages: ChatMessage[] = []\n\n\t\t\tresult.responses.forEach((response: any, idx: number) => {\n\t\t\t\tconst pauseMarker = Array.isArray(response.data) ? '\\u200B'.repeat(20) : ''\n\t\t\t\tconst content = Array.isArray(response.data) ? response.data.join(pauseMarker) : response.data\n\n\t\t\t\tconst aiChatId = `ai_${Date.now()}_${idx}`\n\t\t\t\tconst aiMessage: ChatMessage = {\n\t\t\t\t\tchatId: aiChatId,\n\t\t\t\t\tuser: 'ai',\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tcontent: content || '',\n\t\t\t\t\tcomponentName: response.type || '',\n\t\t\t\t\tisShowLike: true,\n\t\t\t\t\tisShowCopy: true\n\t\t\t\t}\n\t\t\t\tnewAiMessages.push(aiMessage)\n\t\t\t})\n\t\t\tchatList.value.push(...newAiMessages)\n\t\t\temit('sendMessage', [...chatList.value])\n\t\t\t// 滚动到底部并渲染AI消息\n\t\t\tnextTick(() => {\n\t\t\t\tscrollToBottom()\n\t\t\t\tnewAiMessages.forEach(msg => {\n\t\t\t\t\tconst msgIndex = chatList.value.findIndex(item => item.chatId === msg.chatId)\n\t\t\t\t\tif (msgIndex !== -1) {\n\t\t\t\t\t\trenderContent(msg.content, 'main', msgIndex)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t} else {\n\t\t\t// 插入默认AI回复\n\t\t\tconst defaultAiChatId = `ai_${Date.now()}`\n\t\t\tconst defaultAiMessage: ChatMessage = {\n\t\t\t\tchatId: defaultAiChatId,\n\t\t\t\tuser: 'ai',\n\t\t\t\ttype: 'text',\n\t\t\t\tcontent: robotUnmatched,\n\t\t\t\tisShowLike: true,\n\t\t\t\tisShowCopy: true\n\t\t\t}\n\t\t\tchatList.value.push(defaultAiMessage)\n\t\t\temit('sendMessage', [...chatList.value])\n\t\t\t// 滚动到底部并渲染默认回复\n\t\t\tnextTick(() => {\n\t\t\t\tscrollToBottom()\n\t\t\t\tconst msgIndex = chatList.value.findIndex(item => item.chatId === defaultAiChatId)\n\t\t\t\tif (msgIndex !== -1) {\n\t\t\t\t\trenderContent(defaultAiMessage.content, 'main', msgIndex)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tinputValue.value = ''\n\t\t// emit('sendMessage', JSON.parse(JSON.stringify(chatList.value)))\n\t} else {\n\t\tif (content) {\n\t\t\tinputValue.value = content\n\t\t}\n\t\tif (isChating.value || !inputValue.value.trim()) return\n\t\tconst userChatId = 'user_' + crypto.randomUUID().replace(/-/gi, '')\n\t\tconst userMessage: ChatMessage = {\n\t\t\tchatId: userChatId,\n\t\t\tuser: 'u',\n\t\t\ttype: 'text',\n\t\t\tcontent: inputValue.value\n\t\t}\n\t\tsendMessageInject(inputValue.value)\n\t\tchatList.value.push(userMessage)\n\t\tconst index = chatList.value.length - 1\n\t\tnextTick(() => {\n\t\t\trenderContent(userMessage.content, 'main', index)\n\t\t\tscrollToBottom()\n\t\t})\n\t\tif (connectionType === 'SSE') {\n\t\t\topenSSE(inputValue.value, index + 1, 1)\n\t\t} else if (connectionType === 'Websocket') {\n\t\t\tlet chatInfo = [\n\t\t\t\t{\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tmsgContent: inputValue.value\n\t\t\t\t}\n\t\t\t]\n\t\t\tTouchChatRobot.value?.send(chatInfo)\n\t\t}\n\t\tinputValue.value = ''\n\t}\n}\n\n// 停止生成\nconst handleStop = (): void => {\n\tfetchStream.value?.abort()\n\n\tconst aiIndex = chatList.value.findIndex(item => item.isChating)\n\tif (aiIndex !== -1) {\n\t\tconst currentAiMessage = chatList.value[aiIndex]\n\n\t\tif (currentAiMessage.content?.trim()) {\n\t\t\tnextTick(() => {\n\t\t\t\tchatList.value[aiIndex] = {\n\t\t\t\t\t...currentAiMessage,\n\t\t\t\t\tcontent: currentAiMessage.content + '...',\n\t\t\t\t\tisChating: false\n\t\t\t\t}\n\t\t\t\trenderContent(chatList.value[aiIndex].content, 'main', aiIndex)\n\t\t\t\temit('sendMessage', chatList.value)\n\t\t\t})\n\t\t} else {\n\t\t\tif (aiIndex > 0) {\n\t\t\t\tconst userMessageIndex = aiIndex - 1\n\t\t\t\tif (chatList.value[userMessageIndex].user === 'u') {\n\t\t\t\t\tchatList.value.splice(userMessageIndex, 2)\n\t\t\t\t} else {\n\t\t\t\t\tchatList.value.splice(aiIndex, 1)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tchatList.value.splice(aiIndex, 1)\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst lastIndex = chatList.value.length - 1\n\t\tif (lastIndex >= 0 && chatList.value[lastIndex].user === 'u') {\n\t\t\tchatList.value.pop()\n\t\t}\n\t}\n\n\tisChating.value = false\n}\n\n// 滚动到底部\nconst scrollToBottom = throttle(300, () => {\n\tif (!isMounted.value || isUnmounting.value) return\n\tconst endEl = document.querySelector('.to-chat-item:last-child')\n\tif (endEl?.scrollIntoView) {\n\t\tendEl.scrollIntoView({ behavior: 'smooth', block: 'end', inline: 'nearest' })\n\t}\n})\n\n// 处理消息操作\nconst handleMessageAction = (action: MessageAction, index: number): void => {\n\tconst message = chatList.value[index]\n\tif (!message) return\n\n\tswitch (action) {\n\t\tcase MessageAction.COPY:\n\t\t\tnavigator.clipboard\n\t\t\t\t.writeText(message.content)\n\t\t\t\t.then(() => {\n\t\t\t\t\tshowToast('复制成功', 'info')\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error('复制失败:', err)\n\t\t\t\t\tshowToast('复制失败', 'error')\n\t\t\t\t})\n\t\t\tbreak\n\t\tcase MessageAction.EDIT:\n\t\t\tmessage.isEditing = true\n\t\t\tmessage.editContent = message.content\n\t\t\tbreak\n\t\tcase MessageAction.DELETE:\n\t\t\tmessageUtils.deleteMessageChain(index)\n\t\t\temit('sendMessage', chatList.value)\n\t\t\tbreak\n\t\tcase MessageAction.RETRY: {\n\t\t\tconst aiMessage = chatList.value[index]\n\t\t\tconst userMessageIndex = index - 1\n\t\t\tconst userMessage = chatList.value[userMessageIndex]\n\n\t\t\tif (userMessage && userMessage.user === 'u') {\n\t\t\t\tconst updatedAiMessage = {\n\t\t\t\t\t...aiMessage,\n\t\t\t\t\tcontent: '',\n\t\t\t\t\tthinkContent: '',\n\t\t\t\t\treasoningContent: '',\n\t\t\t\t\tisLiked: false,\n\t\t\t\t\tisDisliked: false,\n\t\t\t\t\tisChating: true,\n\t\t\t\t\tchatId: aiMessage.chatId,\n\t\t\t\t\tuser: aiMessage.user,\n\t\t\t\t\ttype: aiMessage.type,\n\t\t\t\t\tthinkStatus: ThinkStatus.COMPLETED,\n\t\t\t\t\tthinkStartTime: 0,\n\t\t\t\t\tthinkEndTime: 0\n\t\t\t\t}\n\t\t\t\tchatList.value.splice(index, 1, updatedAiMessage)\n\n\t\t\t\tnextTick(() => {\n\t\t\t\t\tif (htmlContentRef.value[index]) htmlContentRef.value[index].innerHTML = ''\n\t\t\t\t\tif (thinkingContentRef.value[index]) thinkingContentRef.value[index].innerHTML = ''\n\t\t\t\t\tif (reasoningContentRef.value[index]) reasoningContentRef.value[index].innerHTML = ''\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\topenSSE(userMessage.content || '', index, 2)\n\t\t\t\t\t}, 50)\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tcase MessageAction.LIKE:\n\t\t\tmessageUtils.updateMessage(index, {\n\t\t\t\tisLiked: true,\n\t\t\t\tisDisliked: false\n\t\t\t})\n\t\t\tbreak\n\t\tcase MessageAction.DISLIKE:\n\t\t\tmessageUtils.updateMessage(index, {\n\t\t\t\tisLiked: false,\n\t\t\t\tisDisliked: true\n\t\t\t})\n\t\t\tbreak\n\t}\n}\n\n// 保存编辑\nconst saveEdit = (index: number, newContent: string): void => {\n\tconst message = chatList.value[index]\n\tif (!message || !message.editContent) return\n\n\tchatList.value[index] = {\n\t\t...message,\n\t\tcontent: newContent,\n\t\tisEditing: false,\n\t\teditContent: undefined\n\t}\n\tnextTick(() => {\n\t\trenderContent(message.content, 'main', index)\n\t})\n\n\tif (index + 1 < chatList.value.length && chatList.value[index + 1].user === 'ai') {\n\t\tchatList.value.splice(index + 1, 1)\n\t}\n\n\topenSSE(newContent, index + 1)\n\temit('sendMessage', chatList.value)\n}\n\n// 取消编辑\nconst cancelEdit = (index: number): void => {\n\tconst message = chatList.value[index]\n\tif (!message) return\n\n\tmessage.isEditing = false\n\tmessage.editContent = ''\n\tnextTick(() => {\n\t\trenderContent(message.content, 'main', index)\n\t})\n}\n\n// 组件生命周期\nonMounted(async () => {\n\tinit()\n\tisMounted.value = true\n\twatch(\n\t\tisDeepSeek,\n\t\t() => {\n\t\t\tinit()\n\t\t},\n\t\t{ immediate: false }\n\t)\n\t// 监听scripts变化\n\twatch(\n\t\t() => scripts,\n\t\t() => {\n\t\t\tif (!isDeepSeek.value) {\n\t\t\t\tinit()\n\t\t\t}\n\t\t},\n\t\t{ deep: true, immediate: false }\n\t)\n})\n\nonBeforeUnmount(() => {\n\tif (!isUnmounting.value) {\n\t\tisUnmounting.value = true\n\t\tif (fetchStream.value) {\n\t\t\tfetchStream.value.abort()\n\t\t\tfetchStream.value = null\n\t\t}\n\t\tif (TouchChatRobot.value) {\n\t\t\tTouchChatRobot.value.close()\n\t\t\tTouchChatRobot.value = undefined\n\t\t}\n\t\tisMounted.value = false\n\t\trenderQueue.value = []\n\t\thtmlContentRef.value = []\n\t\tthinkingContentRef.value = []\n\t\treasoningContentRef.value = []\n\t}\n})\n\nexport type { ChatMessage }\n\nprovide('parentContext', {\n\tmethods: {\n\t\tsendMessage,\n\t\thandleMessageAction\n\t}\n})\n\ndefineExpose({\n\thandleSendOut: (value: string) => {\n\t\thandleSend(value)\n\t}\n})\n</script>\n"],"names":["isDataMatch","isSubDataMatch","content","action","_createElementBlock","_createElementVNode","_renderSlot","_createVNode","HelloChat","_openBlock","_Fragment","_renderList","_createBlock","UserMessage","AiMessage","ChatInput"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TouchChat.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiChat/TouchChat.vue"],"sourcesContent":["<script lang=\"ts\">\nconst enum MessageAction {\n\tCOPY = 'copy',\n\tEDIT = 'edit',\n\tDELETE = 'delete',\n\tRETRY = 'retry',\n\tLIKE = 'like',\n\tDISLIKE = 'dislike'\n}\nconst enum ThinkStatus {\n\tTHINKING = 'thinking',\n\tCOMPLETED = 'completed',\n\tSTOPPED = 'stopped'\n}\n</script>\n<template>\n\t<div class=\"touchchat-main\">\n\t\t<div ref=\"chatContainer\" class=\"touchchat-dialog\">\n\t\t\t<slot name=\"tabView\"> </slot>\n\t\t\t<div v-if=\"chatList.length === 0\" class=\"touchchat-welcome\">\n\t\t\t\t<slot name=\"welcome\">\n\t\t\t\t\t<HelloChat @send-message=\"sendMessage\" />\n\t\t\t\t</slot>\n\t\t\t</div>\n\t\t\t<div class=\"touchchat-dialog-content\">\n\t\t\t\t<template v-for=\"(item, index) in chatList\" :key=\"item.chatId\">\n\t\t\t\t\t<UserMessage v-if=\"item.user === 'u'\" :item=\"item\" :index=\"index\" @copy=\"handleMessageAction(MessageAction.COPY, index)\" @edit=\"handleMessageAction(MessageAction.EDIT, index)\" @delete=\"handleMessageAction(MessageAction.DELETE, index)\" @save-edit=\"saveEdit\" @cancel-edit=\"cancelEdit(index)\">\n\t\t\t\t\t\t<template #userAvatar>\n\t\t\t\t\t\t\t<slot name=\"userAvatar\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #messageActions>\n\t\t\t\t\t\t\t<slot name=\"messageActions\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</UserMessage>\n\t\t\t\t\t<AiMessage v-else :item=\"item\" :index=\"index\" :enable-deep-thinking=\"enableDeepThinking\" @copy=\"handleMessageAction(MessageAction.COPY, index)\" @retry=\"handleMessageAction(MessageAction.RETRY, index)\" @like=\"handleMessageAction(MessageAction.LIKE, index)\" @dislike=\"handleMessageAction(MessageAction.DISLIKE, index)\" @content-rendered=\"attachCopyButtons\" @complete-rendered=\"completeRendered\" @toggle-sidebar=\"toggleSidebarClick\">\n\t\t\t\t\t\t<template #aiMessageContent>\n\t\t\t\t\t\t\t<slot name=\"aiMessageContent\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #aiAvatar>\n\t\t\t\t\t\t\t<slot name=\"aiAvatar\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #messageActions>\n\t\t\t\t\t\t\t<slot name=\"messageActions\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</AiMessage>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t\t<!-- <Scene v-if=\"scripts.length > 0\" :scripts=\"scripts\" :selected-script-name=\"selectedScriptName\" :btn-disable=\"false\" @scene-click=\"sceneClick\"> </Scene> -->\n\t\t<slot name=\"chatInput\">\n\t\t\t<ChatInput v-model:input-value=\"inputValue\" v-model:enable-deep-thinking=\"enableDeepThinking\" :is-chating=\"isChating\" @send=\"handleBeforeSend\" @stop=\"handleStop\" @toggle-deep-thinking=\"(val: boolean) => (enableDeepThinking = val)\"> </ChatInput>\n\t\t</slot>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport UserMessage from './UserMessage.vue'\nimport AiMessage from './AiMessage.vue'\nimport ChatInput from './ChatInput.vue'\n// import Scene from './Scene.vue'\nimport HelloChat from '../../component/HelloChat.vue'\nimport { ref, onMounted, onBeforeUnmount, nextTick, inject, watch, computed, provide } from 'vue'\nimport type { ComputedRef } from 'vue'\nimport { throttle } from 'throttle-debounce'\nimport { FetchStream } from '../../utils/fetchStream.ts'\nimport { ChatRobot } from '../../utils/chatRobot.ts'\nimport markdown from '../../utils/markdown.ts'\nimport { showToast } from '../../utils/tools.ts'\n\n// 类型定义\ninterface ChatMessage {\n\tchatId?: string\n\tuser: string\n\ttype: string\n\tcontent: string\n\tisChating?: boolean\n\tthinkContent?: string\n\treasoningContent?: string\n\tisLiked?: boolean\n\tisDisliked?: boolean\n\tisShowLike?: boolean\n\tisEditing?: boolean\n\teditContent?: string\n\tcomponentName?: string\n\tthinkStatus?: string\n\tthinkStartTime?: number\n\tthinkTime?: number\n\t[key: string]: any\n}\n\ninterface ChatInfoItem {\n\tmsgContent: string\n}\n\ninterface RenderData {\n\tmainContent: string\n\tthinkContent: string\n\treasoningContent: string\n}\n\ninterface ScriptContent {\n\tuser: string\n\tdata?: string\n\tsubData?: string[]\n\ttype?: string\n}\n\ninterface Script {\n\tname: string\n\tid?: string\n\tsubTitle?: string\n\tcontent: ScriptContent[]\n}\n\n// 枚举定义\n\n\n\n\n// 组件属性和注入\nconst emit = defineEmits(['sendMessage', 'toggleSidebar', 'beforeSendMessage'])\nconst action = inject<string>('action', '')\nconst headers = inject<Record<string, string> | Headers | undefined>('headers', undefined)\nconst body = inject<Record<string, any> | undefined>('body', undefined)\nconst token = inject<string>('token', '')\nconst wsUrl = inject<string>('wsUrl', '')\nconst connectionType = inject<string>('connectionType')\nconst isDeepSeek = inject<ComputedRef<boolean>>(\n\t'isDeepSeek',\n\tcomputed(() => true)\n)\nconst aiChatType = inject<'Flow' | 'Intelligent'>('aiChatType', 'Flow')\nconst scripts = inject<any[]>('scripts', [])\nconst robotUnmatched = inject<string>('robotUnmatched', '您的消息未匹配到任何内容')\n// 当前选中的脚本名称\nconst selectedScriptName = ref<string>(scripts.length > 0 ? scripts[0].name : '')\nconst afterSendMessage = inject<(content: string) => void>('afterSendMessage', () => {\n\tconsole.warn('未提供afterSendMessage函数')\n})\nconst sendMessageInject = inject<(value: string) => void>('handleSend', () => {\n\tconsole.warn('未提供handleSend函数')\n})\nconst beforeSend = inject<() => { result: boolean; componentName?: string }>('beforeSend', () => ({\n\tresult: true\n}))\n\n// 组件属性\nconst props = defineProps({\n\tmodel: {\n\t\ttype: String,\n\t\tdefault: 'deepseek-v3'\n\t},\n\tvalue: {\n\t\ttype: Array as () => ChatMessage[],\n\t\tdefault: () => []\n\t},\n\tplaceholder: {\n\t\ttype: String,\n\t\tdefault: '快来和我聊天吧~'\n\t},\n\tcomponents: {\n\t\ttype: Object,\n\t\tdefault: () => ({})\n\t},\n\topenSSECallback: {\n\t\ttype: Function as unknown as () => (fetchStream: typeof FetchStream) => void,\n\t\tdefault: null\n\t}\n})\n\n// 组件状态\nconst chatContainer = ref<HTMLElement | null>(null)\nconst htmlContentRef = ref<(HTMLElement | null)[]>([])\nconst thinkingContentRef = ref<(HTMLElement | null)[]>([])\nconst reasoningContentRef = ref<(HTMLElement | null)[]>([])\nconst isMounted = ref(false)\nconst isChating = ref(false)\nconst inputValue = ref('')\nconst enableDeepThinking = ref(false)\nconst chatList = ref<ChatMessage[]>([])\nconst renderQueue = ref<RenderData[]>([])\nconst isRendering = ref(false)\nconst currIndex = ref(0)\nconst fetchStream = ref<InstanceType<typeof FetchStream> | null>(null)\nconst TouchChatRobot = ref<ChatRobot>()\nconst isUnmounting = ref(false)\nconst currentComponentName = ref('')\n\n// 消息管理工具函数\nconst messageUtils = {\n\tupdateMessage: (index: number, updates: Partial<ChatMessage>): void => {\n\t\tif (index < 0 || index >= chatList.value.length) return\n\t\tchatList.value.splice(index, 1, { ...chatList.value[index], ...updates })\n\t\tnextTick(() => {\n\t\t\tconst message = chatList.value[index]\n\t\t\tif (message) {\n\t\t\t\trenderContent(message.content, 'main', index)\n\t\t\t\tif (message.thinkContent) {\n\t\t\t\t\trenderContent(message.thinkContent, 'thinking', index)\n\t\t\t\t}\n\t\t\t\tif (message.reasoningContent) {\n\t\t\t\t\trenderContent(message.reasoningContent, 'reasoning', index)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t},\n\n\tdeleteMessageChain: (index: number): void => {\n\t\tif (index < 0 || index >= chatList.value.length) return\n\t\tconst nextIndex = index + 1\n\t\tconst deleteCount = nextIndex < chatList.value.length && chatList.value[nextIndex].user === 'ai' ? 2 : 1\n\t\tchatList.value.splice(index, deleteCount)\n\t},\n\n\tcreateStandardMessage: (data: Partial<ChatMessage>): ChatMessage => ({\n\t\tchatId: data.chatId || 'ai_' + crypto.randomUUID().replace(/-/gi, ''),\n\t\tuser: data.user || 'ai',\n\t\ttype: data.type || 'text',\n\t\tcontent: data.content || '',\n\t\tisChating: data.isChating ?? false,\n\t\tthinkContent: data.thinkContent || '',\n\t\treasoningContent: data.reasoningContent || '',\n\t\tisLiked: data.isLiked ?? false,\n\t\tisDisliked: data.isDisliked ?? false,\n\t\tisEditing: data.isEditing ?? false,\n\t\teditContent: data.editContent ?? ''\n\t})\n}\n\nconst sceneClick = (script: Script) => {\n\tselectedScriptName.value = script.name\n\t// 提取重复逻辑为辅助函数\n\tconst findAndSendFirstUserMessage = (dataSource: Script[]) => {\n\t\tconst targetScript = dataSource.find(item => item.name === script.name)\n\t\tif (targetScript && targetScript.content.length) {\n\t\t\tconst firstUserMessage = targetScript.content.find(citem => citem.user === 'i')?.data\n\t\t\tif (firstUserMessage) {\n\t\t\t\tsendMessage({\n\t\t\t\t\tname: firstUserMessage\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\t// 根据不同类型调用辅助函数\n\tif (scripts.length) {\n\t\tfindAndSendFirstUserMessage(scripts)\n\t}\n}\nconsole.log('sceneClick', sceneClick)\n\nconst completeRendered = () => {\n\t// emit('sendMessage', JSON.parse(JSON.stringify(chatList.value)))\n\tconsole.log('completeRendered', '渲染完成')\n}\n\nconst toggleSidebarClick = (item: ChatMessage, index: number) => {\n\t// emit('sendMessage', JSON.parse(JSON.stringify(chatList.value)))\n\temit('toggleSidebar', item, index)\n}\n// 初始化函数\nconst init = (): void => {\n\ttry {\n\t\tif (Array.isArray(props.value) && props.value.length && isDeepSeek.value) {\n\t\t\tchatList.value = props.value.map(item => ({\n\t\t\t\t...item,\n\t\t\t\tcontent: item.thinkContent ? item.content || '' : item.content || '',\n\t\t\t\tthinkContent: item.thinkContent || ''\n\t\t\t}))\n\n\t\t\tnextTick(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tchatList.value.forEach((item, index) => {\n\t\t\t\t\t\tcurrIndex.value = index\n\t\t\t\t\t\tif (item.thinkContent) {\n\t\t\t\t\t\t\trenderContent(item.thinkContent, 'thinking')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (item.reasoningContent) {\n\t\t\t\t\t\t\trenderContent(item.reasoningContent, 'reasoning')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (item.content) {\n\t\t\t\t\t\t\trenderContent(item.content, 'main')\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t\tif (connectionType === 'Websocket' && isDeepSeek.value) {\n\t\t\topenWebsocket()\n\t\t}\n\t\t// if (!isDeepSeek.value && scripts && Array.isArray(scripts) && scripts.length > 0) {\n\t\t// \tsceneClick(scripts[0])\n\t\t// }\n\t} catch (error) {\n\t\tconsole.error('初始化失败:', error)\n\t}\n}\n\n// 查找匹配的脚本内容(从AiRobot逻辑中提取)\nconst findMatchingScriptContent = (userInput: string) => {\n\tconsole.log('findMatchingScriptContent', selectedScriptName.value)\n\tif (!scripts || scripts.length === 0) return null\n\n\tlet currentScript = scripts.find(item => item.name === selectedScriptName.value)\n\t// 如果没有找到当前脚本,则使用第一个脚本\n\tif (!currentScript && scripts.length > 0) {\n\t\tcurrentScript = scripts[0]\n\t\tselectedScriptName.value = currentScript.name\n\t}\n\n\tif (!currentScript) return null\n\n\t// 遍历当前脚本内容,查找匹配的用户输入\n\tfor (let i = 0; i < currentScript.content.length; i++) {\n\t\tconst item = currentScript.content[i]\n\t\tif (item.user === 'i') {\n\t\t\t// 检查 data 是否匹配\n\t\t\tconst isDataMatch = item.data && userInput.includes(item.data)\n\t\t\t// 检查 subData 是否匹配\n\t\t\tlet isSubDataMatch = false\n\t\t\tif (item.subData) {\n\t\t\t\tif (Array.isArray(item.subData)) {\n\t\t\t\t\tisSubDataMatch = item.subData.some((subItem: string) => userInput.includes(subItem))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isDataMatch || isSubDataMatch) {\n\t\t\t\t// 收集 AI 回复\n\t\t\t\tconst responses: any[] = []\n\t\t\t\t// 从匹配位置的下一个元素开始遍历\n\t\t\t\tfor (let j = i + 1; j < currentScript.content.length; j++) {\n\t\t\t\t\tconst nextItem = currentScript.content[j]\n\t\t\t\t\tif (nextItem.user === 'i') {\n\t\t\t\t\t\tbreak // 遇到下一个用户消息,停止收集\n\t\t\t\t\t}\n\t\t\t\t\tif (nextItem.user === 'ai') {\n\t\t\t\t\t\tresponses.push(nextItem)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// 查找下一个用户消息的索引\n\t\t\t\tconst nextIndex = currentScript.content.findIndex((contentItem: any, index: number) => index > i && contentItem.user === 'i')\n\t\t\t\treturn { responses, nextIndex: nextIndex === -1 ? currentScript.content.length : nextIndex }\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null\n}\n\n// 监听props.value变化\nwatch(\n\t() => props.value,\n\t(newVal, oldVal) => {\n\t\tif (!Array.isArray(newVal)) return\n\t\tif (newVal.length && JSON.stringify(newVal) !== JSON.stringify(oldVal)) {\n\t\t\tchatList.value = newVal.map(item => ({\n\t\t\t\t...item,\n\t\t\t\tcontent: item.thinkContent ? item.content || '' : item.content || '',\n\t\t\t\tthinkContent: item.thinkContent || ''\n\t\t\t}))\n\n\t\t\tnextTick(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tchatList.value.forEach((item, index) => {\n\t\t\t\t\t\tcurrIndex.value = index\n\t\t\t\t\t\tif (item.thinkContent) {\n\t\t\t\t\t\t\trenderContent(item.thinkContent, 'thinking')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (item.reasoningContent) {\n\t\t\t\t\t\t\trenderContent(item.reasoningContent, 'reasoning')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (item.content) {\n\t\t\t\t\t\t\trenderContent(item.content, 'main')\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t},\n\t{ deep: true, immediate: true }\n)\n\n// WebSocket连接\nconst openWebsocket = (): void => {\n\tif (!wsUrl) {\n\t\tthrow new Error('wsUrl is required')\n\t}\n\tif (!token) {\n\t\tthrow new Error('token is required')\n\t}\n\n\tlet config = {\n\t\ttoken,\n\t\twsUrl\n\t}\n\tTouchChatRobot.value = new ChatRobot(config)\n\n\tTouchChatRobot.value &&\n\t\tTouchChatRobot.value.addListener('chatCrmSuccess', {\n\t\t\tmsgCallback: chatCrmSuccess,\n\t\t\tstatusCallback: () => {}\n\t\t})\n\tTouchChatRobot.value &&\n\t\tTouchChatRobot.value.addListener('onMessageError', {\n\t\t\tmsgCallback: () => {}\n\t\t})\n\tTouchChatRobot.value &&\n\t\tTouchChatRobot.value.addListener('chatCrmError', {\n\t\t\tmsgCallback: data => {\n\t\t\t\tconsole.log('AI 对话连接错误回调', data)\n\t\t\t}\n\t\t})\n\tTouchChatRobot.value.connect()\n}\n\n// WebSocket消息处理\nconst chatCrmSuccess = (data: any): void => {\n\tif (data && data.chatType === 'response') {\n\t\tif (Array.isArray(data.chatInfo)) {\n\t\t\tlet msgContentList = (data.chatInfo as ChatInfoItem[]).map(item => item.msgContent)\n\t\t\tlet msgContent = msgContentList.length ? msgContentList[0] : ''\n\n\t\t\tchatList.value.push({\n\t\t\t\tuser: 'u',\n\t\t\t\ttype: 'text',\n\t\t\t\tcontent: msgContent\n\t\t\t})\n\t\t}\n\t}\n}\n\n// SSE连接\nconst openSSE = (userContent: string, insertIndex?: number, type?: number): void => {\n\ttry {\n\t\tif (isUnmounting.value) return\n\t\tisChating.value = true\n\n\t\tif (props.openSSECallback) {\n\t\t\tprops.openSSECallback(FetchStream)\n\t\t\treturn\n\t\t}\n\n\t\tconst currentAiMessage = chatList.value.find(item => item.isChating)\n\t\tif (currentAiMessage) {\n\t\t\tcurrentAiMessage.isShowLike = true\n\t\t\tcurrentAiMessage.isShowCopy = true\n\t\t\tcurrentAiMessage.componentName = currentComponentName.value\n\t\t}\n\t\tconst chatId = currentAiMessage?.chatId || 'ai_' + crypto.randomUUID().replace(/-/gi, '')\n\t\tlet aiContent = currentAiMessage?.content || ''\n\t\tlet reasoningContent = currentAiMessage?.reasoningContent || ''\n\t\tlet allAiContent = ''\n\n\t\tif (!currentAiMessage) {\n\t\t\tconst chatItem: ChatMessage = {\n\t\t\t\tchatId: chatId,\n\t\t\t\tuser: 'ai',\n\t\t\t\ttype: 'text',\n\t\t\t\tisChating: true,\n\t\t\t\tcontent: '',\n\t\t\t\tthinkContent: '',\n\t\t\t\treasoningContent: '',\n\t\t\t\tthinkStatus: ThinkStatus.THINKING,\n\t\t\t\tthinkStartTime: Date.now(),\n\t\t\t\tisShowLike: true,\n\t\t\t\tisShowCopy: true,\n\t\t\t\tcomponentName: currentComponentName.value\n\t\t\t}\n\t\t\tif (insertIndex !== undefined && insertIndex <= chatList.value.length) {\n\t\t\t\tchatList.value.splice(insertIndex, 0, chatItem)\n\t\t\t} else {\n\t\t\t\tchatList.value.push(chatItem)\n\t\t\t}\n\t\t}\n\t\tcurrIndex.value = chatList.value.findIndex(ele => ele.chatId === chatId)\n\t\tfetchStream.value = new FetchStream({\n\t\t\turl: action ?? 'https://api.apiyi.com/v1/chat/completions',\n\t\t\trequestInit: {\n\t\t\t\theaders: headers ?? {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: 'Bearer sk-fe9MtODvds8wpzz05f3417Fe3e9641C1926e6fC588425dEd'\n\t\t\t\t},\n\t\t\t\tbody: !isDeepSeek\n\t\t\t\t\t? JSON.stringify(body)\n\t\t\t\t\t: JSON.stringify({\n\t\t\t\t\t\t\tmodel: enableDeepThinking.value ? 'deepseek-reasoner' : 'deepseek-v3',\n\t\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\trole: 'user',\n\t\t\t\t\t\t\t\t\tcontent: userContent\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tstream: true\n\t\t\t\t\t\t})\n\t\t\t},\n\t\t\tonmessage: (line: string) => {\n\t\t\t\tif (isUnmounting.value) return\n\t\t\t\tlet dataString = ''\n\t\t\t\tif (line.length) {\n\t\t\t\t\tif (line.includes('data:')) {\n\t\t\t\t\t\tdataString = line.split('data:')[1]\n\t\t\t\t\t} else if (line.startsWith('{') && line.endsWith('}')) {\n\t\t\t\t\t\tdataString = line\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdataString = dataString.trim()\n\n\t\t\t\tif (dataString && dataString.startsWith('{') && dataString.endsWith('}')) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = JSON.parse(dataString)\n\t\t\t\t\t\tconst newAiMessage = chatList.value[currIndex.value]\n\n\t\t\t\t\t\tif (isDeepSeek) {\n\t\t\t\t\t\t\tif (result?.choices?.[0]?.delta?.content) {\n\t\t\t\t\t\t\t\taiContent += result.choices[0].delta.content\n\t\t\t\t\t\t\t\tif (newAiMessage?.thinkStatus === ThinkStatus.THINKING) {\n\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStatus = ThinkStatus.COMPLETED\n\t\t\t\t\t\t\t\t\tnewAiMessage.thinkTime = Date.now() - (newAiMessage.thinkStartTime || Date.now())\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (result?.choices?.[0]?.delta?.reasoning_content) {\n\t\t\t\t\t\t\t\treasoningContent += result.choices[0].delta.reasoning_content\n\t\t\t\t\t\t\t\tif (!newAiMessage?.thinkStatus) {\n\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStatus = ThinkStatus.THINKING\n\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStartTime = Date.now()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (aiChatType === 'Flow') {\n\t\t\t\t\t\t\t\tif (result?.message && result?.category === 'answer') {\n\t\t\t\t\t\t\t\t\taiContent += result.message\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (aiChatType === 'Intelligent') {\n\t\t\t\t\t\t\t\tif (result?.content && result?.category === 'task_stream_content') {\n\t\t\t\t\t\t\t\t\taiContent += result.content\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (result?.message && result?.category === 'answer') {\n\t\t\t\t\t\t\t\t\tallAiContent = result.message\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (chatList.value.some(ele => ele.chatId === chatId)) {\n\t\t\t\t\t\t\tenqueueRender({\n\t\t\t\t\t\t\t\tmainContent: aiContent,\n\t\t\t\t\t\t\t\tthinkContent: '',\n\t\t\t\t\t\t\t\treasoningContent: reasoningContent\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (type === 1) {\n\t\t\t\t\t\t\tscrollToBottom()\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('解析SSE消息失败:', error)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tondone: () => {\n\t\t\t\tnextTick(() => {\n\t\t\t\t\tisChating.value = false\n\t\t\t\t\tif (isUnmounting.value || !isMounted.value) return\n\t\t\t\t\tconst index = chatList.value.findIndex(ele => ele.chatId === chatId)\n\t\t\t\t\tif (index !== -1 && chatList.value[index]) {\n\t\t\t\t\t\tchatList.value[index].isChating = false\n\t\t\t\t\t\tchatList.value[index].componentName = currentComponentName.value\n\t\t\t\t\t\tif (aiChatType === 'Intelligent' && allAiContent) {\n\t\t\t\t\t\t\tafterSendMessage(allAiContent)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst waitForRenderComplete = () => {\n\t\t\t\t\t\t\tif (renderQueue.value.length === 0 && !isRendering.value) {\n\t\t\t\t\t\t\t\tif (chatList.value.length > 0 && isDeepSeek) {\n\t\t\t\t\t\t\t\t\temit('sendMessage', JSON.parse(JSON.stringify(chatList.value)))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trequestAnimationFrame(waitForRenderComplete)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\twaitForRenderComplete()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t\tonabort: () => {\n\t\t\t\thandleAbort()\n\t\t\t},\n\t\t\tonerror: (response: Error | Response) => {\n\t\t\t\thandleError(response)\n\t\t\t}\n\t\t})\n\t} catch (error) {\n\t\tconsole.error('OpenSSE错误:', error)\n\t\tisChating.value = false\n\t\tshowToast('请求失败,请重试', 'error', 3000)\n\t}\n}\n\n// 处理请求中止\nconst handleAbort = (): void => {\n\tisChating.value = false\n\tif (isUnmounting.value) return\n\n\tconst currentAiMessage = chatList.value[currIndex.value]\n\tconst hasContent = currentAiMessage && (currentAiMessage.content || currentAiMessage.thinkContent || currentAiMessage.reasoningContent)\n\n\tif (currentAiMessage) {\n\t\tif (currentAiMessage.thinkStatus === ThinkStatus.THINKING) {\n\t\t\tcurrentAiMessage.thinkStatus = ThinkStatus.STOPPED\n\t\t\tcurrentAiMessage.thinkTime = Date.now() - (currentAiMessage.thinkStartTime || Date.now())\n\t\t}\n\t\tif (!hasContent) {\n\t\t\tconst userMessageIndex = currIndex.value - 1\n\t\t\tif (userMessageIndex >= 0 && chatList.value[userMessageIndex].user === 'u') {\n\t\t\t\tchatList.value.splice(currIndex.value, 1)\n\t\t\t\tchatList.value.splice(userMessageIndex, 1)\n\t\t\t} else {\n\t\t\t\tchatList.value.splice(currIndex.value, 1)\n\t\t\t}\n\t\t} else {\n\t\t\tconst updatedAiMessage = {\n\t\t\t\t...currentAiMessage,\n\t\t\t\tisChating: false,\n\t\t\t\tcontent: currentAiMessage.content ? currentAiMessage.content + '。。。' : '',\n\t\t\t\tthinkContent: currentAiMessage.thinkContent ? currentAiMessage.thinkContent + '。。。' : undefined,\n\t\t\t\treasoningContent: currentAiMessage.reasoningContent ? currentAiMessage.reasoningContent + '。。。' : undefined,\n\t\t\t\tthinkStatus: currentAiMessage.thinkStatus as ThinkStatus\n\t\t\t}\n\n\t\t\tchatList.value.splice(currIndex.value, 1, updatedAiMessage)\n\n\t\t\tnextTick(() => {\n\t\t\t\trenderContent(updatedAiMessage.thinkContent || '', 'thinking')\n\t\t\t\trenderContent(updatedAiMessage.reasoningContent || '', 'reasoning')\n\t\t\t\trenderContent(updatedAiMessage.content || '', 'main')\n\t\t\t\temit('sendMessage', [...chatList.value])\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n\n\tif (chatList.value.length > 0) {\n\t\temit('sendMessage', [...chatList.value])\n\t}\n}\n\n// 处理请求错误\nconst handleError = (response: Error | Response): void => {\n\tif (isUnmounting.value) return\n\tisChating.value = false\n\n\tlet errorMessage = '未知错误'\n\tif (response instanceof Error) {\n\t\tconsole.error('API请求错误:', response)\n\t\terrorMessage = response.message\n\t} else if (response instanceof Response) {\n\t\tconsole.error('API请求错误, 响应状态:', response.status, response.statusText)\n\t\terrorMessage = `请求失败: ${response.status} ${response.statusText}`\n\t}\n\n\tconst currentAiMessage = chatList.value[currIndex.value]\n\tif (currentAiMessage) {\n\t\tcurrentAiMessage.content = `<div style=\"color: red; display: flex; align-items: center;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"16\" viewBox=\"0 0 15 16\" fill=\"none\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.5 15.5C11.6421 15.5 15 12.1421 15 8C15 3.85786 11.6421 0.5 7.5 0.5C3.35786 0.5 0 3.85786 0 8C0 12.1421 3.35786 15.5 7.5 15.5ZM9.7539 4.9506L10.5494 5.7461L8.2951 8.0001L10.5494 10.2539L9.7539 11.0494L7.5001 8.7951L5.2461 11.0494L4.4506 10.2539L6.7051 8.0001L4.4506 5.7461L5.2461 4.9506L7.5001 7.2051L9.7539 4.9506Z\" fill=\"#F93920\"/>\n</svg>${errorMessage}</div>`\n\t\tcurrentAiMessage.isChating = false\n\t\tcurrentAiMessage.componentName = ''\n\t\tcurrentAiMessage.isShowLike = false\n\t\tcurrentAiMessage.isShowCopy = false\n\n\t\tnextTick(() => {\n\t\t\trenderContent(currentAiMessage.content || '', 'main')\n\t\t\temit('sendMessage', [...chatList.value])\n\t\t})\n\t} else {\n\t\tshowToast(errorMessage, 'error', 3000)\n\t\temit('sendMessage', [...chatList.value])\n\t}\n}\n\n// 渲染队列\nconst enqueueRender = (data: RenderData): void => {\n\tif (isUnmounting.value || !isMounted.value) return\n\tif (currIndex.value < 0 || currIndex.value >= chatList.value.length) return\n\trenderQueue.value.push(data)\n\tif (!isRendering.value) {\n\t\tisRendering.value = true\n\t\tprocessRenderQueue()\n\t}\n}\n\nconst processRenderQueue = (): void => {\n\tif (isUnmounting.value || !isMounted.value) {\n\t\trenderQueue.value = []\n\t\tisRendering.value = false\n\t\treturn\n\t}\n\n\tif (renderQueue.value.length === 0) {\n\t\tisRendering.value = false\n\t\treturn\n\t}\n\n\trequestAnimationFrame(() => {\n\t\tconst data = renderQueue.value.shift()\n\t\tif (data) {\n\t\t\tformatMarkdown(data)\n\t\t}\n\t\tprocessRenderQueue()\n\t})\n}\n\n// 格式化Markdown内容\nconst formatMarkdown = (data: RenderData): void => {\n\tif (!isMounted.value) return\n\tif (currIndex.value < 0 || currIndex.value >= chatList.value.length) return\n\n\tconst currentItem = chatList.value[currIndex.value]\n\tcurrentItem.thinkContent = data.thinkContent\n\tcurrentItem.content = data.mainContent\n\tcurrentItem.reasoningContent = data.reasoningContent\n\n\tnextTick(() => {\n\t\tconst thinkingContainer = thinkingContentRef.value[currIndex.value]\n\t\tif (thinkingContainer) {\n\t\t\tif (data.thinkContent) {\n\t\t\t\trenderContent(data.thinkContent, 'thinking')\n\t\t\t\tthinkingContainer.style.display = 'block'\n\t\t\t\tthinkingContainer.style.visibility = 'visible'\n\t\t\t} else {\n\t\t\t\tthinkingContainer.style.display = 'none'\n\t\t\t\tthinkingContainer.style.visibility = 'hidden'\n\t\t\t}\n\t\t}\n\n\t\tconst reasoningContainer = reasoningContentRef.value[currIndex.value]\n\t\tif (reasoningContainer) {\n\t\t\tif (data.reasoningContent) {\n\t\t\t\trenderContent(data.reasoningContent, 'reasoning')\n\t\t\t\treasoningContainer.style.display = 'block'\n\t\t\t\treasoningContainer.style.visibility = 'visible'\n\t\t\t} else {\n\t\t\t\treasoningContainer.style.display = 'none'\n\t\t\t\treasoningContainer.style.visibility = 'hidden'\n\t\t\t}\n\t\t}\n\n\t\trenderContent(data.mainContent, 'main')\n\t})\n}\n\n// 附加复制按钮\nconst attachCopyButtons = (container: HTMLElement): void => {\n\tconst codeBlocks = container.querySelectorAll('pre code')\n\tcodeBlocks.forEach(codeBlock => {\n\t\tconst pre = codeBlock.parentElement\n\t\tif (pre) {\n\t\t\tconst copyBtn = document.createElement('button')\n\t\t\tcopyBtn.className = 'touchchat-code-copy'\n\t\t\tcopyBtn.addEventListener('click', () => {\n\t\t\t\tconst code = codeBlock.textContent || ''\n\t\t\t\tnavigator.clipboard\n\t\t\t\t\t.writeText(code)\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tshowToast('复制成功', 'info', 2000)\n\t\t\t\t\t\tcopyBtn.textContent = '已复制'\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tcopyBtn.textContent = ''\n\t\t\t\t\t\t}, 2000)\n\t\t\t\t\t})\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tconsole.error('复制失败:', err)\n\t\t\t\t\t\tshowToast('复制失败', 'error', 2000)\n\t\t\t\t\t})\n\t\t\t})\n\n\t\t\tpre.style.position = 'relative'\n\t\t\tpre.appendChild(copyBtn)\n\t\t}\n\t})\n}\n\n// 渲染内容\nconst renderContent = (content: string, type: 'main' | 'thinking' | 'reasoning', index?: number): void => {\n\tconst renderIndex = index ?? currIndex.value\n\tif (renderIndex < 0 || renderIndex >= chatList.value.length) return\n\n\tconst refArrays = {\n\t\tmain: htmlContentRef,\n\t\tthinking: thinkingContentRef,\n\t\treasoning: reasoningContentRef\n\t}\n\tconst processors = {\n\t\tmain: (content: string) => markdown?.render(content, { isReasoning: false }) || '',\n\t\tthinking: (content: string) => markdown?.render(content, { isReasoning: false }) || '',\n\t\treasoning: (content: string) => markdown?.render(content, { isReasoning: false }) || ''\n\t}\n\n\tconst container = refArrays[type].value[renderIndex]\n\tif (!container) return\n\n\tcontainer.innerHTML = processors[type](content || '')\n\tattachCopyButtons(container)\n}\n\n// 发送消息\nconst sendMessage = (item: any): void => {\n\tinputValue.value = item.name || ''\n\thandleBeforeSend()\n}\n\n// 发送前处理\nconst handleBeforeSend = (): void => {\n\tif (beforeSend) {\n\t\tconst fn = beforeSend()\n\t\tif (fn && typeof (fn as any).then === 'function') {\n\t\t\t;(Promise.resolve(fn) as Promise<{ result: boolean; componentName?: string }>)\n\t\t\t\t.then(res => {\n\t\t\t\t\tif (res.result) {\n\t\t\t\t\t\tcurrentComponentName.value = res.componentName || ''\n\t\t\t\t\t\thandleSend()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.log(error)\n\t\t\t\t})\n\t\t} else {\n\t\t\tif (fn.result) {\n\t\t\t\tcurrentComponentName.value = fn.componentName || ''\n\t\t\t\thandleSend()\n\t\t\t}\n\t\t}\n\t}\n}\n\n// 处理发送\nconst handleSend = (content?: string): void => {\n\t// debugger\n\temit('beforeSendMessage')\n\t// 如果isDeepSeek为false(使用AiRobot逻辑)\n\tif (!isDeepSeek.value && scripts && Array.isArray(scripts) && scripts.length > 0) {\n\t\tconst userInput = content ?? inputValue.value.trim()\n\t\tif (!userInput) return\n\n\t\t// 添加用户消息\n\t\tconst userChatId = `user_${Date.now()}`\n\t\tconst userMessage: ChatMessage = {\n\t\t\tchatId: userChatId,\n\t\t\tuser: 'u',\n\t\t\ttype: 'text',\n\t\t\tcontent: userInput,\n\t\t\tisShowLike: false,\n\t\t\tisShowCopy: true\n\t\t}\n\t\tchatList.value.push(userMessage)\n\t\temit('sendMessage', [...chatList.value])\n\n\t\t// 滚动到底部\n\t\tnextTick(() => {\n\t\t\tscrollToBottom()\n\t\t\t// 立即渲染用户消息\n\t\t\trenderContent(userMessage.content, 'main', chatList.value.length - 1)\n\t\t})\n\n\t\t// 查找匹配的脚本内容\n\t\tconst result = findMatchingScriptContent(userInput)\n\t\tconsole.log('result === handleSend', result)\n\n\t\tif (result && result.responses.length > 0) {\n\t\t\t// 存储新AI消息的数组\n\t\t\tconst newAiMessages: ChatMessage[] = []\n\n\t\t\tresult.responses.forEach((response: any, idx: number) => {\n\t\t\t\tconst pauseMarker = Array.isArray(response.data) ? '\\u200B'.repeat(20) : ''\n\t\t\t\tconst content = Array.isArray(response.data) ? response.data.join(pauseMarker) : response.data\n\n\t\t\t\tconst aiChatId = `ai_${Date.now()}_${idx}`\n\t\t\t\tconst aiMessage: ChatMessage = {\n\t\t\t\t\tchatId: aiChatId,\n\t\t\t\t\tuser: 'ai',\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tcontent: content || '',\n\t\t\t\t\tcomponentName: response.type || '',\n\t\t\t\t\tisShowLike: true,\n\t\t\t\t\tisShowCopy: true\n\t\t\t\t}\n\t\t\t\tnewAiMessages.push(aiMessage)\n\t\t\t})\n\t\t\tchatList.value.push(...newAiMessages)\n\t\t\temit('sendMessage', [...chatList.value])\n\t\t\t// 滚动到底部并渲染AI消息\n\t\t\tnextTick(() => {\n\t\t\t\tscrollToBottom()\n\t\t\t\tnewAiMessages.forEach(msg => {\n\t\t\t\t\tconst msgIndex = chatList.value.findIndex(item => item.chatId === msg.chatId)\n\t\t\t\t\tif (msgIndex !== -1) {\n\t\t\t\t\t\trenderContent(msg.content, 'main', msgIndex)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t} else {\n\t\t\t// 插入默认AI回复\n\t\t\tconst defaultAiChatId = `ai_${Date.now()}`\n\t\t\tconst defaultAiMessage: ChatMessage = {\n\t\t\t\tchatId: defaultAiChatId,\n\t\t\t\tuser: 'ai',\n\t\t\t\ttype: 'text',\n\t\t\t\tcontent: robotUnmatched,\n\t\t\t\tisShowLike: true,\n\t\t\t\tisShowCopy: true\n\t\t\t}\n\t\t\tchatList.value.push(defaultAiMessage)\n\t\t\temit('sendMessage', [...chatList.value])\n\t\t\t// 滚动到底部并渲染默认回复\n\t\t\tnextTick(() => {\n\t\t\t\tscrollToBottom()\n\t\t\t\tconst msgIndex = chatList.value.findIndex(item => item.chatId === defaultAiChatId)\n\t\t\t\tif (msgIndex !== -1) {\n\t\t\t\t\trenderContent(defaultAiMessage.content, 'main', msgIndex)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tinputValue.value = ''\n\t\t// emit('sendMessage', JSON.parse(JSON.stringify(chatList.value)))\n\t} else {\n\t\tif (content) {\n\t\t\tinputValue.value = content\n\t\t}\n\t\tif (isChating.value || !inputValue.value.trim()) return\n\t\tconst userChatId = 'user_' + crypto.randomUUID().replace(/-/gi, '')\n\t\tconst userMessage: ChatMessage = {\n\t\t\tchatId: userChatId,\n\t\t\tuser: 'u',\n\t\t\ttype: 'text',\n\t\t\tcontent: inputValue.value\n\t\t}\n\t\tsendMessageInject(inputValue.value)\n\t\tchatList.value.push(userMessage)\n\t\tconst index = chatList.value.length - 1\n\t\tnextTick(() => {\n\t\t\trenderContent(userMessage.content, 'main', index)\n\t\t\tscrollToBottom()\n\t\t})\n\t\tif (connectionType === 'SSE') {\n\t\t\topenSSE(inputValue.value, index + 1, 1)\n\t\t} else if (connectionType === 'Websocket') {\n\t\t\tlet chatInfo = [\n\t\t\t\t{\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tmsgContent: inputValue.value\n\t\t\t\t}\n\t\t\t]\n\t\t\tTouchChatRobot.value?.send(chatInfo)\n\t\t}\n\t\tinputValue.value = ''\n\t}\n}\n\n// 停止生成\nconst handleStop = (): void => {\n\tfetchStream.value?.abort()\n\n\tconst aiIndex = chatList.value.findIndex(item => item.isChating)\n\tif (aiIndex !== -1) {\n\t\tconst currentAiMessage = chatList.value[aiIndex]\n\n\t\tif (currentAiMessage.content?.trim()) {\n\t\t\tnextTick(() => {\n\t\t\t\tchatList.value[aiIndex] = {\n\t\t\t\t\t...currentAiMessage,\n\t\t\t\t\tcontent: currentAiMessage.content + '...',\n\t\t\t\t\tisChating: false\n\t\t\t\t}\n\t\t\t\trenderContent(chatList.value[aiIndex].content, 'main', aiIndex)\n\t\t\t\temit('sendMessage', chatList.value)\n\t\t\t})\n\t\t} else {\n\t\t\tif (aiIndex > 0) {\n\t\t\t\tconst userMessageIndex = aiIndex - 1\n\t\t\t\tif (chatList.value[userMessageIndex].user === 'u') {\n\t\t\t\t\tchatList.value.splice(userMessageIndex, 2)\n\t\t\t\t} else {\n\t\t\t\t\tchatList.value.splice(aiIndex, 1)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tchatList.value.splice(aiIndex, 1)\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst lastIndex = chatList.value.length - 1\n\t\tif (lastIndex >= 0 && chatList.value[lastIndex].user === 'u') {\n\t\t\tchatList.value.pop()\n\t\t}\n\t}\n\n\tisChating.value = false\n}\n\n// 滚动到底部\nconst scrollToBottom = throttle(300, () => {\n\tif (!isMounted.value || isUnmounting.value) return\n\tconst endEl = document.querySelector('.to-chat-item:last-child')\n\tif (endEl?.scrollIntoView) {\n\t\tendEl.scrollIntoView({ behavior: 'smooth', block: 'end', inline: 'nearest' })\n\t}\n})\n\n// 处理消息操作\nconst handleMessageAction = (action: MessageAction, index: number): void => {\n\tconst message = chatList.value[index]\n\tif (!message) return\n\n\tswitch (action) {\n\t\tcase MessageAction.COPY:\n\t\t\tnavigator.clipboard\n\t\t\t\t.writeText(message.content)\n\t\t\t\t.then(() => {\n\t\t\t\t\tshowToast('复制成功', 'info')\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error('复制失败:', err)\n\t\t\t\t\tshowToast('复制失败', 'error')\n\t\t\t\t})\n\t\t\tbreak\n\t\tcase MessageAction.EDIT:\n\t\t\tmessage.isEditing = true\n\t\t\tmessage.editContent = message.content\n\t\t\tbreak\n\t\tcase MessageAction.DELETE:\n\t\t\tmessageUtils.deleteMessageChain(index)\n\t\t\temit('sendMessage', chatList.value)\n\t\t\tbreak\n\t\tcase MessageAction.RETRY: {\n\t\t\tconst aiMessage = chatList.value[index]\n\t\t\tconst userMessageIndex = index - 1\n\t\t\tconst userMessage = chatList.value[userMessageIndex]\n\n\t\t\tif (userMessage && userMessage.user === 'u') {\n\t\t\t\tconst updatedAiMessage = {\n\t\t\t\t\t...aiMessage,\n\t\t\t\t\tcontent: '',\n\t\t\t\t\tthinkContent: '',\n\t\t\t\t\treasoningContent: '',\n\t\t\t\t\tisLiked: false,\n\t\t\t\t\tisDisliked: false,\n\t\t\t\t\tisChating: true,\n\t\t\t\t\tchatId: aiMessage.chatId,\n\t\t\t\t\tuser: aiMessage.user,\n\t\t\t\t\ttype: aiMessage.type,\n\t\t\t\t\tthinkStatus: ThinkStatus.COMPLETED,\n\t\t\t\t\tthinkStartTime: 0,\n\t\t\t\t\tthinkEndTime: 0\n\t\t\t\t}\n\t\t\t\tchatList.value.splice(index, 1, updatedAiMessage)\n\n\t\t\t\tnextTick(() => {\n\t\t\t\t\tif (htmlContentRef.value[index]) htmlContentRef.value[index].innerHTML = ''\n\t\t\t\t\tif (thinkingContentRef.value[index]) thinkingContentRef.value[index].innerHTML = ''\n\t\t\t\t\tif (reasoningContentRef.value[index]) reasoningContentRef.value[index].innerHTML = ''\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\topenSSE(userMessage.content || '', index, 2)\n\t\t\t\t\t}, 50)\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tcase MessageAction.LIKE:\n\t\t\tmessageUtils.updateMessage(index, {\n\t\t\t\tisLiked: true,\n\t\t\t\tisDisliked: false\n\t\t\t})\n\t\t\tbreak\n\t\tcase MessageAction.DISLIKE:\n\t\t\tmessageUtils.updateMessage(index, {\n\t\t\t\tisLiked: false,\n\t\t\t\tisDisliked: true\n\t\t\t})\n\t\t\tbreak\n\t}\n}\n\n// 保存编辑\nconst saveEdit = (index: number, newContent: string): void => {\n\tconst message = chatList.value[index]\n\tif (!message || !message.editContent) return\n\n\tchatList.value[index] = {\n\t\t...message,\n\t\tcontent: newContent,\n\t\tisEditing: false,\n\t\teditContent: undefined\n\t}\n\tnextTick(() => {\n\t\trenderContent(message.content, 'main', index)\n\t})\n\n\tif (index + 1 < chatList.value.length && chatList.value[index + 1].user === 'ai') {\n\t\tchatList.value.splice(index + 1, 1)\n\t}\n\n\topenSSE(newContent, index + 1)\n\temit('sendMessage', chatList.value)\n}\n\n// 取消编辑\nconst cancelEdit = (index: number): void => {\n\tconst message = chatList.value[index]\n\tif (!message) return\n\n\tmessage.isEditing = false\n\tmessage.editContent = ''\n\tnextTick(() => {\n\t\trenderContent(message.content, 'main', index)\n\t})\n}\n\n// 组件生命周期\nonMounted(async () => {\n\tif (isMounted.value) {\n\t\tinit()\n\t}\n\tisMounted.value = true\n\twatch(\n\t\tisDeepSeek,\n\t\t() => {\n\t\t\tinit()\n\t\t},\n\t\t{ immediate: false }\n\t)\n\t// 监听scripts变化\n\twatch(\n\t\t() => scripts,\n\t\t() => {\n\t\t\tif (!isDeepSeek.value) {\n\t\t\t\tinit()\n\t\t\t}\n\t\t},\n\t\t{ deep: true, immediate: false }\n\t)\n})\n\nonBeforeUnmount(() => {\n\tif (!isUnmounting.value) {\n\t\tisUnmounting.value = true\n\t\tif (fetchStream.value) {\n\t\t\tfetchStream.value.abort()\n\t\t\tfetchStream.value = null\n\t\t}\n\t\tif (TouchChatRobot.value) {\n\t\t\tTouchChatRobot.value.close()\n\t\t\tTouchChatRobot.value = undefined\n\t\t}\n\t\tisMounted.value = false\n\t\trenderQueue.value = []\n\t\thtmlContentRef.value = []\n\t\tthinkingContentRef.value = []\n\t\treasoningContentRef.value = []\n\t}\n})\n\nexport type { ChatMessage }\n\nprovide('parentContext', {\n\tmethods: {\n\t\tsendMessage,\n\t\thandleMessageAction\n\t}\n})\n\ndefineExpose({\n\thandleSendOut: (value: string) => {\n\t\thandleSend(value)\n\t}\n})\n</script>\n"],"names":["content","action","_createElementBlock","_createElementVNode","_renderSlot","_createVNode","HelloChat","_openBlock","_Fragment","_renderList","_createBlock","UserMessage","AiMessage","ChatInput"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, reactive, ref, inject, computed, watch, onMounted, openBlock, createElementBlock, unref, createElementVNode, withModifiers, createCommentVNode, createBlock,
|
|
1
|
+
import { defineComponent, reactive, ref, inject, computed, watch, onMounted, openBlock, createElementBlock, unref, createElementVNode, withModifiers, createCommentVNode, createBlock, withCtx, renderSlot, withDirectives, createVNode, vShow } from 'vue';
|
|
2
2
|
import _sfc_main$2 from './TouchChat.vue2.mjs';
|
|
3
3
|
import _sfc_main$1 from './HistorySidebar.vue2.mjs';
|
|
4
4
|
import _sfc_main$3 from './SiderBarView.vue2.mjs';
|
|
@@ -268,9 +268,10 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
268
268
|
onRenameChat: handleRenameChat,
|
|
269
269
|
onDeleteChat: deleteChat
|
|
270
270
|
}, null, 8, ["is-sidebar-collapsed", "active-chat", "chat-history"])) : createCommentVNode("", true),
|
|
271
|
-
|
|
271
|
+
(openBlock(), createBlock(_sfc_main$2, {
|
|
272
272
|
ref_key: "chatComponent",
|
|
273
273
|
ref: chatComponent,
|
|
274
|
+
key: state.activeChat,
|
|
274
275
|
value: currentChatMessages.value,
|
|
275
276
|
onSendMessage: sendMessage,
|
|
276
277
|
onToggleSidebar: toggleSidebarOut,
|
|
@@ -304,7 +305,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
304
305
|
})
|
|
305
306
|
]),
|
|
306
307
|
_: 3
|
|
307
|
-
}, 8, ["value"]),
|
|
308
|
+
}, 8, ["value"])),
|
|
308
309
|
withDirectives(createVNode(_sfc_main$3, {
|
|
309
310
|
flag: state.isSidebarCollapsed,
|
|
310
311
|
item: messageItem.value,
|