@touchvue/chat 1.0.0-beta.2 → 1.0.0-beta.3
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/_virtual/_plugin-vue_export-helper.mjs +10 -0
- package/es/_virtual/_plugin-vue_export-helper.mjs.map +1 -0
- package/es/package.json.mjs +1 -1
- package/es/packages/components/touchchat/component/CardView.vue.mjs +3 -2
- package/es/packages/components/touchchat/component/CardView.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/component/CardView.vue2.mjs +66 -42
- package/es/packages/components/touchchat/component/CardView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/FileView.vue.mjs +3 -2
- package/es/packages/components/touchchat/component/FileView.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/component/FileView.vue2.mjs +17 -4
- package/es/packages/components/touchchat/component/FileView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/HelloChat.vue.mjs +3 -2
- package/es/packages/components/touchchat/component/HelloChat.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/component/HelloChat.vue2.mjs +26 -14
- package/es/packages/components/touchchat/component/HelloChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/ImageView.vue.mjs +3 -2
- package/es/packages/components/touchchat/component/ImageView.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/component/LinkView.vue.mjs +3 -2
- package/es/packages/components/touchchat/component/LinkView.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/component/LinkView.vue2.mjs +17 -3
- package/es/packages/components/touchchat/component/LinkView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/index.mjs +4 -4
- package/es/packages/components/touchchat/index.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +223 -162
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +137 -116
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs +216 -142
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs +60 -52
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/MessageActions.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/MessageActions.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs +199 -166
- package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +196 -157
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs +90 -17
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +36 -27
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.mjs +80 -68
- package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/Content.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiRobot/Content.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/Content.vue2.mjs +144 -105
- package/es/packages/components/touchchat/src/AiRobot/Content.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/Header.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiRobot/Header.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/Header.vue2.mjs +36 -27
- package/es/packages/components/touchchat/src/AiRobot/Header.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/Input.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiRobot/Input.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/Scene.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiRobot/Scene.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/Scene.vue2.mjs +14 -8
- package/es/packages/components/touchchat/src/AiRobot/Scene.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/component/HelloChat.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiRobot/component/HelloChat.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/component/HelloChat.vue2.mjs +219 -159
- package/es/packages/components/touchchat/src/AiRobot/component/HelloChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/component/face.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiRobot/component/face.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/component/face.vue2.mjs +22 -9
- package/es/packages/components/touchchat/src/AiRobot/component/face.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/component/letter.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiRobot/component/letter.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/component/letter.vue2.mjs +6 -2
- package/es/packages/components/touchchat/src/AiRobot/component/letter.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue2.mjs +2 -2
- package/es/packages/components/touchchat/src/AiRobot/component/start.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiRobot/component/start.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/component/start.vue2.mjs +2 -2
- package/es/packages/components/touchchat/src/AiRobot/index.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiRobot/index.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiRobot/index.vue2.mjs +107 -39
- package/es/packages/components/touchchat/src/AiRobot/index.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/index.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/index.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/index.vue2.mjs +84 -52
- package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
- package/lib/_virtual/_plugin-vue_export-helper.js +14 -0
- package/lib/_virtual/_plugin-vue_export-helper.js.map +1 -0
- package/lib/package.json.js +1 -1
- package/lib/packages/components/touchchat/component/CardView.vue.js +3 -2
- package/lib/packages/components/touchchat/component/CardView.vue.js.map +1 -1
- package/lib/packages/components/touchchat/component/CardView.vue2.js +66 -42
- package/lib/packages/components/touchchat/component/CardView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/FileView.vue.js +3 -2
- package/lib/packages/components/touchchat/component/FileView.vue.js.map +1 -1
- package/lib/packages/components/touchchat/component/FileView.vue2.js +16 -3
- package/lib/packages/components/touchchat/component/FileView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/HelloChat.vue.js +3 -2
- package/lib/packages/components/touchchat/component/HelloChat.vue.js.map +1 -1
- package/lib/packages/components/touchchat/component/HelloChat.vue2.js +26 -14
- package/lib/packages/components/touchchat/component/HelloChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/ImageView.vue.js +3 -2
- package/lib/packages/components/touchchat/component/ImageView.vue.js.map +1 -1
- package/lib/packages/components/touchchat/component/LinkView.vue.js +3 -2
- package/lib/packages/components/touchchat/component/LinkView.vue.js.map +1 -1
- package/lib/packages/components/touchchat/component/LinkView.vue2.js +16 -2
- package/lib/packages/components/touchchat/component/LinkView.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/AiMessage.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +223 -162
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +136 -115
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js +215 -141
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js +59 -51
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js +199 -166
- package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +195 -156
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js +89 -16
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +35 -26
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.js +79 -67
- package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/Content.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiRobot/Content.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/Content.vue2.js +143 -104
- package/lib/packages/components/touchchat/src/AiRobot/Content.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/Header.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiRobot/Header.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/Header.vue2.js +35 -26
- package/lib/packages/components/touchchat/src/AiRobot/Header.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/Input.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiRobot/Input.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/Scene.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiRobot/Scene.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/Scene.vue2.js +14 -8
- package/lib/packages/components/touchchat/src/AiRobot/Scene.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/HelloChat.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiRobot/component/HelloChat.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/HelloChat.vue2.js +219 -159
- package/lib/packages/components/touchchat/src/AiRobot/component/HelloChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/face.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiRobot/component/face.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/face.vue2.js +21 -8
- package/lib/packages/components/touchchat/src/AiRobot/component/face.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/letter.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiRobot/component/letter.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/letter.vue2.js +6 -2
- package/lib/packages/components/touchchat/src/AiRobot/component/letter.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue2.js +2 -2
- package/lib/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/start.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiRobot/component/start.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/start.vue2.js +2 -2
- package/lib/packages/components/touchchat/src/AiRobot/component/start.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/index.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiRobot/index.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiRobot/index.vue2.js +106 -38
- package/lib/packages/components/touchchat/src/AiRobot/index.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/index.vue.js +3 -2
- package/lib/packages/components/touchchat/src/index.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/index.vue2.js +83 -51
- package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
- package/package.json +1 -1
- package/theme/components/index.css +12 -0
- package/theme/index.css +12 -0
- package/theme/skin/default.css +12 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPanel.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiRobot/ChatPanel.vue"],"sourcesContent":["<script lang=\"ts\">\nconst STORAGE_KEY = 'aiRobotChatHistory'\n</script>\n<template>\n <div\n v-show=\"!isChatPanelOpen\"\n :class=\"!isNotHeader ? 'ai-robot-container' : 'ai-robot-container-not-header'\"\n >\n <!-- 聊天消息区域 -->\n <div class=\"chat-container\">\n <!-- @history=\"handleHistory\" -->\n <Header\n v-if=\"!isNotHeader\"\n :chat-history=\"chatHistory\"\n :active-chat=\"activeChat\"\n @select-chat=\"handleSelectChat\"\n @close=\"toggleChatPanel\"\n @new-chat=\"handleNewChat\"\n @delete-chat=\"handleDeleteChat\"\n @rename-chat=\"handleRenameChat\"\n />\n <div v-if=\"!messages.length\">\n <slot name=\"welcome\">\n <HelloChat @handle-item-click=\"handleItemClick\"></HelloChat>\n </slot>\n </div>\n <Content\n :messages=\"messages\"\n @complete=\"complete\"\n @copy=\"handleMessageAction\"\n @retry=\"handleMessageAction\"\n @like=\"handleMessageAction\"\n @dislike=\"handleMessageAction\"\n @edit=\"handleMessageAction\"\n @delete=\"handleMessageAction\"\n @save-edit=\"handleSaveEdit\"\n @cancel-edit=\"handleCancelEdit\"\n >\n <template #aiAvatar>\n <slot name=\"aiAvatar\" />\n </template>\n <template #userAvatar>\n <slot name=\"userAvatar\" />\n </template>\n </Content>\n <div class=\"bottom-area\">\n <!-- 场景按钮 -->\n <Scene\n v-if=\"!isNotHeader\"\n :scripts=\"scripts\"\n :btn-disable=\"btnDisable\"\n :selected-script-name=\"selectedScriptName\"\n @scene-click=\"sceneClick\"\n />\n <!-- 输入区域 -->\n <Input\n v-model:input-message=\"inputMessage\"\n :btn-disable=\"btnDisable\"\n @send-message=\"sendMessage\"\n >\n <template #input=\"{ disabled }\">\n <slot name=\"input\" :disabled=\"disabled\" />\n </template>\n </Input>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { showToast } from '../../utils/tools';\nimport { ref, onMounted, provide, getCurrentInstance, watch, inject } from 'vue';\nimport Header from './Header.vue';\nimport Content from './Content.vue';\nimport Scene from './Scene.vue';\nimport Input from './Input.vue';\nimport start from './component/start.vue';\nimport face from './component/face.vue';\nimport meterialPrepare from './component/meterialPrepare.vue';\nimport HelloChat from './component/HelloChat.vue';\n\n// 定义与 HistoryList.vue 中匹配的类型\ninterface ChatMessage {\n id: string; // 添加 id 属性\n chatId?: string;\n user: string;\n type: 'user' | 'ai'; // 将 string 改为 'user' | 'ai'\n content: string;\n component?: string;\n isShowAvatar?: boolean;\n avatar?: string;\n isChating?: boolean;\n thinkContent?: string;\n reasoningContent?: string;\n isLiked?: boolean;\n isDisliked?: boolean;\n isEditing?: boolean;\n editContent?: string;\n}\n\ninterface HistoryItem {\n id: string;\n title: string;\n time: Date;\n messages: ChatMessage[]; // 将 Message[] 改为 ChatMessage[]\n}\n\nconst props = defineProps({\n isChatPanelOpen: {\n type: Boolean,\n required: true,\n },\n scripts: {\n type: Array<{\n name: string;\n content: Array<{\n user: string;\n data?: string;\n subData?: Array<string>;\n type?: string;\n }>;\n }>,\n default: () => [],\n },\n});\n\nconst emit = defineEmits(['toggleChatPanel']);\n\n// 定义 helloChatInfo 的类型\ninterface HelloChatInfo {\n info1: Script[];\n info2: Script[];\n info3: Script[];\n}\n\ninterface ScriptContent {\n user: string;\n data?: string;\n subData?: string[];\n type?: string;\n}\n\ninterface Script {\n name: string;\n id?: string;\n subTitle?: string;\n content: ScriptContent[];\n}\n\nconst robotUnmatched = inject('robotUnmatched', '');\nconst helloChatList: Script[] = inject<Script[]>('helloChatList', []);\n// 显式指定变量类型为 HelloChatInfo\nconst helloChatInfo: HelloChatInfo = inject<HelloChatInfo>('helloChatInfo', {\n info1: [] as Script[],\n info2: [] as Script[],\n info3: [] as Script[],\n});\nconst isNotHeader = inject('isNotHeader', false);\n\nconst componentMap = {\n start,\n face,\n meterialPrepare,\n};\n\n// 消息类型定义\ninterface Message {\n id: string;\n type: 'user' | 'ai';\n component?: string;\n time?: string;\n content?: string;\n isLiked?: boolean;\n isDisliked?: boolean;\n isEditing?: boolean;\n editContent?: string;\n}\n\n// 状态定义\nconst inputMessage = ref('');\nconst messages = ref<ChatMessage[]>([]);\nconst btnDisable = ref(false);\nconst selectedScriptName = ref('');\nconst currentScriptIndex = ref(0);\n// 添加聊天历史记录状态\nconst chatHistory = ref<HistoryItem[]>([]);\nconst activeChat = ref('');\n// 状态定义\nconst isSwitchingHistory = ref(false);\nconst sendMessageType = ref('');\n\n// 选择历史记录 没有文字流显示\nprovide('isSwitchingHistory', isSwitchingHistory);\n\n// 处理选择聊天事件\nconst handleSelectChat = (chatId: string) => {\n activeChat.value = chatId;\n isSwitchingHistory.value = false;\n\n const selectedChat = chatHistory.value.find(chat => chat.id === chatId);\n\n if (selectedChat) {\n isSwitchingHistory.value = true;\n messages.value = [...selectedChat.messages];\n // 添加延迟以确保消息渲染完成\n setTimeout(() => {\n isSwitchingHistory.value = false;\n }, 1000);\n } else {\n console.error(`未找到ID为${chatId}的聊天记录`);\n }\n};\n\n// 本地存储相关\n\n\n// 从本地存储加载聊天历史\nconst loadFromLocalStorage = () => {\n const savedHistory = localStorage.getItem(STORAGE_KEY);\n if (savedHistory) {\n try {\n // 解析时将字符串日期转换为Date对象\n const parsedHistory = JSON.parse(savedHistory, (key, value) => {\n if (key === 'time' && typeof value === 'string') {\n return new Date(value);\n }\n return value;\n });\n chatHistory.value = parsedHistory;\n if (chatHistory.value.length > 0) {\n // 加载最近的对话\n activeChat.value = chatHistory.value[0].id;\n messages.value = chatHistory.value[0].messages;\n }\n } catch (error) {\n console.error('Failed to load chat history:', error);\n // 加载失败时初始化一个新对话\n createNewChat();\n }\n } else {\n // 没有历史记录时初始化一个新对话\n createNewChat();\n }\n};\n\n// 保存聊天历史到本地存储\nconst saveToLocalStorage = () => {\n try {\n // 将Date对象转换为字符串\n const historyToSave = JSON.stringify(chatHistory.value, (key, value) => {\n if (key === 'time') {\n // 检查value是否是有效的Date对象\n if (value instanceof Date && !isNaN(value.getTime())) {\n return value.toISOString();\n }\n // 如果不是有效Date对象,返回当前时间作为默认值\n return new Date().toISOString();\n }\n return value;\n });\n localStorage.setItem(STORAGE_KEY, historyToSave);\n } catch (error) {\n console.error('Failed to save chat history:', error);\n }\n};\n\n// 创建新对话\nconst createNewChat = (title: string = '新对话') => {\n selectedScriptName.value = '';\n const newChat: HistoryItem = {\n id: Date.now().toString(),\n title,\n time: new Date(),\n messages: [],\n };\n\n chatHistory.value.unshift(newChat);\n activeChat.value = newChat.id;\n messages.value = newChat.messages;\n saveToLocalStorage();\n};\n\n// 更新当前对话\nconst updateCurrentChat = () => {\n const currentChat = chatHistory.value.find(item => item.id === activeChat.value);\n if (currentChat) {\n currentChat.messages = [...messages.value];\n // currentChat.time = new Date();\n // 如果是第一条消息且是系统消息,尝试用用户的第一条消息作为标题\n if (currentChat.messages.length > 1 && currentChat.title === '新对话') {\n const userMessage = currentChat.messages.find(msg => msg.type === 'user');\n if (userMessage && userMessage.content) {\n currentChat.title =\n userMessage.content.substring(0, 20) + (userMessage.content.length > 20 ? '...' : '');\n }\n }\n saveToLocalStorage();\n }\n};\n\n// 完成函数修改\nconst complete = () => {\n btnDisable.value = false;\n updateCurrentChat(); // 完成后保存对话\n};\n\nconst handleDeleteChat = (id: string) => {\n // 查找要删除的聊天索引\n const index = chatHistory.value.findIndex(chat => chat.id === id);\n if (index !== -1) {\n // 删除该聊天\n chatHistory.value.splice(index, 1);\n // 如果删除的是当前活跃的聊天\n if (id === activeChat.value) {\n if (chatHistory.value.length > 0) {\n // 切换到最近的聊天\n activeChat.value = chatHistory.value[0].id;\n messages.value = [...chatHistory.value[0].messages];\n } else {\n // 如果没有聊天了,创建一个新的\n createNewChat();\n }\n }\n // 保存更改\n saveToLocalStorage();\n }\n};\n\n// 处理重命名聊天事件\nconst handleRenameChat = (data: { id: string; newTitle: string }) => {\n const { id, newTitle } = data;\n // 查找要重命名的聊天\n const chat = chatHistory.value.find(item => item.id === id);\n if (chat) {\n // 更新标题\n chat.title = newTitle;\n // 更新时间为当前时间\n chat.time = new Date();\n // 保存更改\n saveToLocalStorage();\n }\n};\n\n// 添加保存编辑处理函数\nconst handleSaveEdit = (index: number, content: string) => {\n const message = messages.value[index];\n if (message && message.type === 'user') {\n // 更新消息内容\n message.content = content;\n message.isEditing = false;\n // 删除临时编辑内容\n delete message.editContent;\n // 更新消息数组\n messages.value.splice(index, 1, { ...message });\n // 保存到本地存储\n updateCurrentChat();\n // 显示成功提示\n showToast('编辑成功');\n\n // --- 修正:删除用户消息后的所有连续AI回复 --- //\n // 查找用户消息后的所有AI回复并删除\n let aiMessagesCount = 0;\n for (let i = index + 1; i < messages.value.length; i++) {\n if (messages.value[i].type === 'ai') {\n aiMessagesCount++;\n } else {\n // 遇到非AI消息则停止删除\n break;\n }\n }\n // 删除找到的所有AI消息\n if (aiMessagesCount > 0) {\n messages.value.splice(index + 1, aiMessagesCount);\n }\n // --- 修正:在用户消息后插入新的AI回复 --- //\n // 触发AI重新回复\n setTimeout(() => {\n // 使用更新后的用户消息内容生成新的AI回复\n const result = findMatchingScriptContent(content, sendMessageType.value);\n\n if (result && result.responses.length > 0) {\n currentScriptIndex.value = result.nextIndex;\n // 存储新AI消息的数组,将类型改为 ChatMessage[]\n const newAiMessages: ChatMessage[] = [];\n\n result.responses.forEach((response, idx) => {\n const pauseMarker = Array.isArray(response.data) ? '\\u200B'.repeat(20) : '';\n const responseContent = Array.isArray(response.data)\n ? response.data.join(pauseMarker)\n : response.data;\n\n const newAiMsgId = `ai-${Date.now()}-${idx}`;\n newAiMessages.push({\n id: newAiMsgId,\n type: 'ai',\n user: 'ai', // 添加 user 属性\n component: response.type || undefined,\n content: responseContent || '',\n });\n });\n\n // 在用户消息后插入新的AI消息\n messages.value.splice(index + 1, 0, ...newAiMessages);\n } else {\n const newAiMsgId = `ai-${Date.now()}`;\n // 在用户消息后插入默认AI回复\n messages.value.splice(index + 1, 0, {\n id: newAiMsgId,\n type: 'ai',\n user: 'ai', // 添加 user 属性\n content: robotUnmatched,\n });\n }\n // 保存聊天记录\n updateCurrentChat();\n }, 500);\n // --- 插入新AI回复结束 --- //\n }\n};\n\n// 添加取消编辑处理函数\nconst handleCancelEdit = (index: number) => {\n const message = messages.value[index];\n if (message && message.type === 'user') {\n // 恢复原始内容\n message.content = message.editContent || '';\n message.isEditing = false;\n // 删除临时编辑内容\n delete message.editContent;\n // 更新消息数组\n messages.value.splice(index, 1, { ...message });\n // 显示成功提示\n showToast('编辑已取消');\n }\n};\n\n// 挂载时加载历史记录\nonMounted(() => {\n if (!isNotHeader) {\n loadFromLocalStorage();\n }\n if (isNotHeader && props.scripts && props.scripts.length > 0) {\n // 检查scripts[0]的第一条消息是否为AI消息\n const firstScript = props.scripts[0];\n if (firstScript && firstScript.content && firstScript.content.length > 0) {\n const firstMessage = firstScript.content[0];\n if (firstMessage.user === 'ai') {\n // 直接展示AI消息\n selectedScriptName.value = firstScript.name;\n const aiMsgId = `ai-${Date.now()}`;\n messages.value.push({\n id: aiMsgId,\n type: 'ai',\n user: 'ai', // 添加 user 属性\n component: firstMessage.type || undefined,\n content: firstMessage.data || '',\n });\n updateCurrentChat();\n\n // 初始化脚本索引,确保后续用户回复能正确匹配\n // currentScriptIndex.value = 1; // 假设AI消息后是下一个用户输入点\n } else {\n // 原有逻辑:发送第一条用户消息\n sceneClick(firstScript);\n }\n }\n }\n});\nconst handleItemClick = (script: Script, type?: string) => {\n if (type) {\n sendMessageType.value = type;\n }\n sceneClick(script);\n};\n\nconst sceneClick = (script: Script) => {\n // 更新选中状态\n selectedScriptName.value = script.name;\n\n // 提取重复逻辑为辅助函数\n const findAndSendFirstUserMessage = (dataSource: Script[]) => {\n const targetScript = dataSource.find(item => item.name === script.name);\n if (targetScript && targetScript.content.length) {\n const firstUserMessage = targetScript.content.find(citem => citem.user === 'i')?.data;\n if (firstUserMessage) {\n sendMessage(firstUserMessage);\n }\n }\n };\n\n // 根据不同类型调用辅助函数\n if (!sendMessageType.value && props.scripts.length) {\n findAndSendFirstUserMessage(props.scripts);\n } else if (sendMessageType.value === '0' && helloChatList.length) {\n findAndSendFirstUserMessage(helloChatList);\n } else if (sendMessageType.value === '1' && helloChatInfo.info1.length) {\n findAndSendFirstUserMessage(helloChatInfo.info1);\n } else if (sendMessageType.value === '2' && helloChatInfo.info2.length) {\n findAndSendFirstUserMessage(helloChatInfo.info2);\n } else if (sendMessageType.value === '3' && helloChatInfo.info3.length) {\n findAndSendFirstUserMessage(helloChatInfo.info3);\n }\n};\n\n// 添加点击事件处理函数\nconst toggleChatPanel = () => {\n emit('toggleChatPanel');\n};\n\n// 然后修改findMatchingScriptContent函数\nconst findMatchingScriptContent = (\n userInput: string,\n type?: string\n): {\n responses: Array<{\n user: string;\n data?: string;\n subData?: Array<string>;\n type?: string;\n }>;\n nextIndex: number;\n} | null => {\n // 获取当前选中的脚本\n let array = props.scripts;\n switch (type) {\n case '0':\n array = helloChatList;\n break;\n case '1':\n array = helloChatInfo.info1;\n break;\n case '2':\n array = helloChatInfo.info2;\n break;\n case '3':\n array = helloChatInfo.info3;\n break;\n default:\n break;\n }\n const currentScript = array.find(s => s.name === selectedScriptName.value);\n if (!currentScript) return null;\n\n // 如果 currentScriptIndex 是 0 且第一条消息是 AI 消息,寻找第一个用户输入点\n if (\n currentScriptIndex.value === 0 &&\n currentScript.content.length > 0 &&\n currentScript.content[0].user === 'ai'\n ) {\n let firstUserInputIndex = -1;\n for (let i = 0; i < currentScript.content.length; i++) {\n if (currentScript.content[i].user === 'i') {\n firstUserInputIndex = i;\n break;\n }\n }\n\n if (firstUserInputIndex !== -1) {\n currentScriptIndex.value = firstUserInputIndex;\n } else {\n return null;\n }\n }\n\n // 检查是否匹配第一条脚本数据(重置流程)\n const firstItem = currentScript.content[0];\n if (firstItem.user === 'i') {\n // 优先检查data是否匹配\n const isDataMatch = firstItem.data && userInput.includes(firstItem.data);\n\n // 修改subData匹配逻辑,支持数组类型\n let isSubDataMatch = false;\n if (firstItem.subData) {\n if (Array.isArray(firstItem.subData)) {\n isSubDataMatch = firstItem.subData.some(item => userInput.includes(item));\n }\n }\n\n if (isDataMatch || isSubDataMatch) {\n currentScriptIndex.value = 0;\n\n // 收集第一条后的AI回复直到下一个用户输入点\n const responses: Array<{\n user: string;\n data?: string;\n subData?: Array<string>;\n type?: string;\n }> = [];\n let nextIndex = currentScript.content.length;\n\n for (let i = 1; i < currentScript.content.length; i++) {\n const item = currentScript.content[i];\n if (item.user === 'i') {\n nextIndex = i;\n break;\n }\n if (item.user === 'ai') {\n responses.push(item);\n }\n }\n\n return { responses, nextIndex };\n }\n }\n\n // 检查当前索引位置的条目\n const currentItem = currentScript.content[currentScriptIndex.value];\n if (!currentItem || currentItem.user !== 'i') {\n return null;\n }\n\n // 当前条目是否匹配用户输入(优先检查data)\n const isDataMatch = currentItem.data && userInput.includes(currentItem.data);\n\n // 修改subData匹配逻辑,支持数组类型\n let isSubDataMatch = false;\n if (currentItem.subData) {\n if (Array.isArray(currentItem.subData)) {\n // 如果是数组,检查数组中是否有任何一个元素被userInput包含\n isSubDataMatch = currentItem.subData.some(item => userInput.includes(item));\n }\n }\n\n if (isDataMatch || isSubDataMatch) {\n // 收集AI回复\n const responses: Array<{\n user: string;\n data?: string;\n subData?: Array<string>;\n type?: string;\n }> = [];\n let nextIndex = currentScript.content.length; // 默认设为脚本末尾\n\n // 查找下一个用户输入点并收集AI回复\n for (let i = currentScriptIndex.value + 1; i < currentScript.content.length; i++) {\n const item = currentScript.content[i];\n if (item.user === 'ai') {\n responses.push(item);\n } else if (item.user === 'i') {\n nextIndex = i;\n break;\n }\n }\n\n // 更新当前索引\n currentScriptIndex.value = nextIndex;\n\n return { responses, nextIndex };\n }\n\n return null;\n};\n// 修改发送消息函数\nconst sendMessage = (message?: string) => {\n if (btnDisable.value) return;\n if (message !== undefined && typeof message !== 'string') {\n console.error('message must be a string');\n return;\n }\n btnDisable.value = true;\n const contentToSend = message !== undefined ? message : inputMessage.value;\n if (!contentToSend.trim()) return;\n\n // 添加用户消息,包含 user 属性\n const userMsgId = `user-${Date.now()}`;\n messages.value.push({\n id: userMsgId,\n type: 'user',\n user: 'user', // 添加 user 属性\n content: contentToSend.trim(),\n });\n\n // 清空输入框\n if (message === undefined) {\n inputMessage.value = '';\n }\n\n // 模拟AI回复\n setTimeout(() => {\n const result = findMatchingScriptContent(contentToSend, sendMessageType.value);\n\n if (result && result.responses.length > 0) {\n currentScriptIndex.value = result.nextIndex;\n result.responses.forEach((response, index) => {\n const pauseMarker = Array.isArray(response.data) ? ''.repeat(20) : '';\n const content = Array.isArray(response.data)\n ? response.data.join(pauseMarker)\n : response.data;\n\n setTimeout(() => {\n const aiMsgId = `ai-${Date.now()}-${index}`;\n messages.value.push({\n id: aiMsgId,\n type: 'ai',\n user: 'ai', // 添加 user 属性\n component: response.type || undefined,\n content: content || '',\n });\n }, index * 800);\n });\n } else {\n const aiMsgId = `ai-${Date.now()}`;\n messages.value.push({\n id: aiMsgId,\n type: 'ai',\n user: 'ai', // 添加 user 属性\n content: robotUnmatched,\n });\n }\n // 保存聊天记录\n updateCurrentChat();\n }, 500);\n};\n\n// 处理新对话函数修改\nconst handleNewChat = () => {\n // 查找是否有消息内容为空的对话\n const emptyChat = chatHistory.value.find(chat => chat.messages.length === 0);\n if (emptyChat) {\n // 然后跳转到该对话\n handleSelectChat(emptyChat.id);\n return;\n }\n createNewChat();\n currentScriptIndex.value = 0;\n};\n\n// 监听聊天历史变化,自动保存\nwatch(\n () => chatHistory.value,\n () => saveToLocalStorage(),\n { deep: true }\n);\n\nconst instance = getCurrentInstance();\n// 添加消息操作处理函数\nconst handleMessageAction = (\n action: 'copy' | 'edit' | 'retry' | 'like' | 'dislike' | 'delete',\n index: number\n) => {\n console.log(action, index, messages.value, '=== 560 ===');\n const message = messages.value[index];\n if (!message) return;\n\n switch (action) {\n case 'copy':\n navigator.clipboard.writeText(message.content || '').then(() => {\n // 实际项目中可以替换为项目中使用的提示组件\n showToast('复制成功');\n });\n break;\n case 'edit':\n // 启用编辑模式\n if (message) {\n message.isEditing = true;\n message.editContent = message.content; // 初始化编辑内容\n // 更新消息\n messages.value.splice(index, 1, { ...message });\n }\n break;\n case 'delete':\n messageUtils.deleteMessageChain(index);\n updateCurrentChat();\n break;\n case 'retry': {\n // 获取当前AI消息和对应的用户消息\n const userMessageIndex = index - 1;\n const userMessage = messages.value[userMessageIndex];\n\n if (userMessage && userMessage.type === 'user') {\n // 先删除当前AI消息\n messages.value.splice(index, 1);\n\n // 立即更新视图\n updateCurrentChat();\n\n // 直接生成新的AI消息,不重新发送用户消息\n setTimeout(() => {\n // 使用用户原始消息内容查找匹配的脚本回复\n const result = findMatchingScriptContent(\n userMessage?.content || '',\n sendMessageType.value\n );\n\n if (result && result.responses.length > 0) {\n currentScriptIndex.value = result.nextIndex;\n // 存储新AI消息的数组\n const newAiMessages: ChatMessage[] = [];\n\n result.responses.forEach((response, idx) => {\n const pauseMarker = Array.isArray(response.data) ? '\\u200B'.repeat(20) : '';\n const content = Array.isArray(response.data)\n ? response.data.join(pauseMarker)\n : response.data;\n\n const newAiMsgId = `ai-${Date.now()}-${idx}`;\n newAiMessages.push({\n id: newAiMsgId,\n type: 'ai',\n user: 'ai',\n component: response.type || undefined,\n content: content || '',\n });\n });\n\n // 在用户消息后插入新的AI消息\n messages.value.splice(userMessageIndex + 1, 0, ...newAiMessages);\n } else {\n const newAiMsgId = `ai-${Date.now()}`;\n // 在用户消息后插入默认AI回复\n messages.value.splice(userMessageIndex + 1, 0, {\n id: newAiMsgId,\n type: 'ai',\n user: 'ai',\n content: robotUnmatched,\n });\n }\n // 保存聊天记录\n updateCurrentChat();\n }, 500);\n }\n break;\n }\n case 'like':\n messageUtils.updateMessage(index, {\n isLiked: true,\n isDisliked: false,\n });\n updateCurrentChat();\n break;\n case 'dislike':\n messageUtils.updateMessage(index, {\n isLiked: false,\n isDisliked: true,\n });\n updateCurrentChat();\n break;\n }\n};\n\n// 添加消息管理工具函数\nconst messageUtils = {\n // 更新消息内容\n updateMessage: (index: number, updates: Partial<Message>) => {\n if (index < 0 || index >= messages.value.length) return;\n messages.value.splice(index, 1, { ...messages.value[index], ...updates });\n },\n\n // 删除消息及其后续所有连续的AI回复,直到遇到下一个用户消息\n deleteMessageChain: (index: number) => {\n if (index < 0 || index >= messages.value.length) return;\n\n // 起始删除位置\n let startIndex = index;\n\n // 删除数量(至少删除当前消息)\n let deleteCount = 1;\n\n // 检查后续消息是否为AI消息\n for (let i = index + 1; i < messages.value.length; i++) {\n if (messages.value[i].type === 'ai') {\n deleteCount++;\n } else {\n // 遇到非AI消息(用户消息)则停止\n break;\n }\n }\n\n messages.value.splice(startIndex, deleteCount);\n },\n};\n\n// 在provide中添加handleMessageAction方法\nprovide('parentContext', {\n instance,\n methods: {\n sendMessage,\n handleMessageAction,\n },\n components: componentMap,\n state: {\n messages,\n inputMessage,\n },\n});\n</script>\n\n<!-- <style lang=\"less\" scoped>\n@import '../../style/variables.less';\n@import './style/index.less';\n</style> -->\n"],"names":["start","face","meterialPrepare","isDataMatch","isSubDataMatch","_createElementBlock","_unref","_createElementVNode","_createBlock","Header","_renderSlot","_createVNode","HelloChat","Content","Scene","Input","_withCtx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChatPanel.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiRobot/ChatPanel.vue"],"sourcesContent":["<script lang=\"ts\">\nconst STORAGE_KEY = 'aiRobotChatHistory'\n</script>\n<template>\n <div\n v-show=\"!isChatPanelOpen\"\n :class=\"!isNotHeader ? 'ai-robot-container' : 'ai-robot-container-not-header'\"\n >\n <!-- 聊天消息区域 -->\n <div class=\"chat-container\">\n <!-- @history=\"handleHistory\" -->\n <Header\n v-if=\"!isNotHeader\"\n :chat-history=\"chatHistory\"\n :active-chat=\"activeChat\"\n @select-chat=\"handleSelectChat\"\n @close=\"toggleChatPanel\"\n @new-chat=\"handleNewChat\"\n @delete-chat=\"handleDeleteChat\"\n @rename-chat=\"handleRenameChat\"\n />\n <div v-if=\"!messages.length\">\n <slot name=\"welcome\">\n <HelloChat @handle-item-click=\"handleItemClick\"></HelloChat>\n </slot>\n </div>\n <Content\n :messages=\"messages\"\n @complete=\"complete\"\n @copy=\"handleMessageAction\"\n @retry=\"handleMessageAction\"\n @like=\"handleMessageAction\"\n @dislike=\"handleMessageAction\"\n @edit=\"handleMessageAction\"\n @delete=\"handleMessageAction\"\n @save-edit=\"handleSaveEdit\"\n @cancel-edit=\"handleCancelEdit\"\n >\n <template #aiAvatar>\n <slot name=\"aiAvatar\" />\n </template>\n <template #userAvatar>\n <slot name=\"userAvatar\" />\n </template>\n </Content>\n <div class=\"bottom-area\">\n <!-- 场景按钮 -->\n <Scene\n v-if=\"!isNotHeader\"\n :scripts=\"scripts\"\n :btn-disable=\"btnDisable\"\n :selected-script-name=\"selectedScriptName\"\n @scene-click=\"sceneClick\"\n />\n <!-- 输入区域 -->\n <Input\n v-model:input-message=\"inputMessage\"\n :btn-disable=\"btnDisable\"\n @send-message=\"sendMessage\"\n >\n <template #input=\"{ disabled }\">\n <slot name=\"input\" :disabled=\"disabled\" />\n </template>\n </Input>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { showToast } from '../../utils/tools';\nimport { ref, onMounted, provide, getCurrentInstance, watch, inject } from 'vue';\nimport Header from './Header.vue';\nimport Content from './Content.vue';\nimport Scene from './Scene.vue';\nimport Input from './Input.vue';\nimport start from './component/start.vue';\nimport face from './component/face.vue';\nimport meterialPrepare from './component/meterialPrepare.vue';\nimport HelloChat from './component/HelloChat.vue';\n\n// 定义与 HistoryList.vue 中匹配的类型\ninterface ChatMessage {\n id: string; // 添加 id 属性\n chatId?: string;\n user: string;\n type: 'user' | 'ai'; // 将 string 改为 'user' | 'ai'\n content: string;\n component?: string;\n isShowAvatar?: boolean;\n avatar?: string;\n isChating?: boolean;\n thinkContent?: string;\n reasoningContent?: string;\n isLiked?: boolean;\n isDisliked?: boolean;\n isEditing?: boolean;\n editContent?: string;\n}\n\ninterface HistoryItem {\n id: string;\n title: string;\n time: Date;\n messages: ChatMessage[]; // 将 Message[] 改为 ChatMessage[]\n}\n\nconst props = defineProps({\n isChatPanelOpen: {\n type: Boolean,\n required: true,\n },\n scripts: {\n type: Array<{\n name: string;\n content: Array<{\n user: string;\n data?: string;\n subData?: Array<string>;\n type?: string;\n }>;\n }>,\n default: () => [],\n },\n});\n\nconst emit = defineEmits(['toggleChatPanel']);\n\n// 定义 helloChatInfo 的类型\ninterface HelloChatInfo {\n info1: Script[];\n info2: Script[];\n info3: Script[];\n}\n\ninterface ScriptContent {\n user: string;\n data?: string;\n subData?: string[];\n type?: string;\n}\n\ninterface Script {\n name: string;\n id?: string;\n subTitle?: string;\n content: ScriptContent[];\n}\n\nconst robotUnmatched = inject('robotUnmatched', '');\nconst helloChatList: Script[] = inject<Script[]>('helloChatList', []);\n// 显式指定变量类型为 HelloChatInfo\nconst helloChatInfo: HelloChatInfo = inject<HelloChatInfo>('helloChatInfo', {\n info1: [] as Script[],\n info2: [] as Script[],\n info3: [] as Script[],\n});\nconst isNotHeader = inject('isNotHeader', false);\n\nconst componentMap = {\n start,\n face,\n meterialPrepare,\n};\n\n// 消息类型定义\ninterface Message {\n id: string;\n type: 'user' | 'ai';\n component?: string;\n time?: string;\n content?: string;\n isLiked?: boolean;\n isDisliked?: boolean;\n isEditing?: boolean;\n editContent?: string;\n}\n\n// 状态定义\nconst inputMessage = ref('');\nconst messages = ref<ChatMessage[]>([]);\nconst btnDisable = ref(false);\nconst selectedScriptName = ref('');\nconst currentScriptIndex = ref(0);\n// 添加聊天历史记录状态\nconst chatHistory = ref<HistoryItem[]>([]);\nconst activeChat = ref('');\n// 状态定义\nconst isSwitchingHistory = ref(false);\nconst sendMessageType = ref('');\n\n// 选择历史记录 没有文字流显示\nprovide('isSwitchingHistory', isSwitchingHistory);\n\n// 处理选择聊天事件\nconst handleSelectChat = (chatId: string) => {\n activeChat.value = chatId;\n isSwitchingHistory.value = false;\n\n const selectedChat = chatHistory.value.find(chat => chat.id === chatId);\n\n if (selectedChat) {\n isSwitchingHistory.value = true;\n messages.value = [...selectedChat.messages];\n // 添加延迟以确保消息渲染完成\n setTimeout(() => {\n isSwitchingHistory.value = false;\n }, 1000);\n } else {\n console.error(`未找到ID为${chatId}的聊天记录`);\n }\n};\n\n// 本地存储相关\n\n\n// 从本地存储加载聊天历史\nconst loadFromLocalStorage = () => {\n const savedHistory = localStorage.getItem(STORAGE_KEY);\n if (savedHistory) {\n try {\n // 解析时将字符串日期转换为Date对象\n const parsedHistory = JSON.parse(savedHistory, (key, value) => {\n if (key === 'time' && typeof value === 'string') {\n return new Date(value);\n }\n return value;\n });\n chatHistory.value = parsedHistory;\n if (chatHistory.value.length > 0) {\n // 加载最近的对话\n activeChat.value = chatHistory.value[0].id;\n messages.value = chatHistory.value[0].messages;\n }\n } catch (error) {\n console.error('Failed to load chat history:', error);\n // 加载失败时初始化一个新对话\n createNewChat();\n }\n } else {\n // 没有历史记录时初始化一个新对话\n createNewChat();\n }\n};\n\n// 保存聊天历史到本地存储\nconst saveToLocalStorage = () => {\n try {\n // 将Date对象转换为字符串\n const historyToSave = JSON.stringify(chatHistory.value, (key, value) => {\n if (key === 'time') {\n // 检查value是否是有效的Date对象\n if (value instanceof Date && !isNaN(value.getTime())) {\n return value.toISOString();\n }\n // 如果不是有效Date对象,返回当前时间作为默认值\n return new Date().toISOString();\n }\n return value;\n });\n localStorage.setItem(STORAGE_KEY, historyToSave);\n } catch (error) {\n console.error('Failed to save chat history:', error);\n }\n};\n\n// 创建新对话\nconst createNewChat = (title: string = '新对话') => {\n selectedScriptName.value = '';\n const newChat: HistoryItem = {\n id: Date.now().toString(),\n title,\n time: new Date(),\n messages: [],\n };\n\n chatHistory.value.unshift(newChat);\n activeChat.value = newChat.id;\n messages.value = newChat.messages;\n saveToLocalStorage();\n};\n\n// 更新当前对话\nconst updateCurrentChat = () => {\n const currentChat = chatHistory.value.find(item => item.id === activeChat.value);\n if (currentChat) {\n currentChat.messages = [...messages.value];\n // currentChat.time = new Date();\n // 如果是第一条消息且是系统消息,尝试用用户的第一条消息作为标题\n if (currentChat.messages.length > 1 && currentChat.title === '新对话') {\n const userMessage = currentChat.messages.find(msg => msg.type === 'user');\n if (userMessage && userMessage.content) {\n currentChat.title =\n userMessage.content.substring(0, 20) + (userMessage.content.length > 20 ? '...' : '');\n }\n }\n saveToLocalStorage();\n }\n};\n\n// 完成函数修改\nconst complete = () => {\n btnDisable.value = false;\n updateCurrentChat(); // 完成后保存对话\n};\n\nconst handleDeleteChat = (id: string) => {\n // 查找要删除的聊天索引\n const index = chatHistory.value.findIndex(chat => chat.id === id);\n if (index !== -1) {\n // 删除该聊天\n chatHistory.value.splice(index, 1);\n // 如果删除的是当前活跃的聊天\n if (id === activeChat.value) {\n if (chatHistory.value.length > 0) {\n // 切换到最近的聊天\n activeChat.value = chatHistory.value[0].id;\n messages.value = [...chatHistory.value[0].messages];\n } else {\n // 如果没有聊天了,创建一个新的\n createNewChat();\n }\n }\n // 保存更改\n saveToLocalStorage();\n }\n};\n\n// 处理重命名聊天事件\nconst handleRenameChat = (data: { id: string; newTitle: string }) => {\n const { id, newTitle } = data;\n // 查找要重命名的聊天\n const chat = chatHistory.value.find(item => item.id === id);\n if (chat) {\n // 更新标题\n chat.title = newTitle;\n // 更新时间为当前时间\n chat.time = new Date();\n // 保存更改\n saveToLocalStorage();\n }\n};\n\n// 添加保存编辑处理函数\nconst handleSaveEdit = (index: number, content: string) => {\n const message = messages.value[index];\n if (message && message.type === 'user') {\n // 更新消息内容\n message.content = content;\n message.isEditing = false;\n // 删除临时编辑内容\n delete message.editContent;\n // 更新消息数组\n messages.value.splice(index, 1, { ...message });\n // 保存到本地存储\n updateCurrentChat();\n // 显示成功提示\n showToast('编辑成功');\n\n // --- 修正:删除用户消息后的所有连续AI回复 --- //\n // 查找用户消息后的所有AI回复并删除\n let aiMessagesCount = 0;\n for (let i = index + 1; i < messages.value.length; i++) {\n if (messages.value[i].type === 'ai') {\n aiMessagesCount++;\n } else {\n // 遇到非AI消息则停止删除\n break;\n }\n }\n // 删除找到的所有AI消息\n if (aiMessagesCount > 0) {\n messages.value.splice(index + 1, aiMessagesCount);\n }\n // --- 修正:在用户消息后插入新的AI回复 --- //\n // 触发AI重新回复\n setTimeout(() => {\n // 使用更新后的用户消息内容生成新的AI回复\n const result = findMatchingScriptContent(content, sendMessageType.value);\n\n if (result && result.responses.length > 0) {\n currentScriptIndex.value = result.nextIndex;\n // 存储新AI消息的数组,将类型改为 ChatMessage[]\n const newAiMessages: ChatMessage[] = [];\n\n result.responses.forEach((response, idx) => {\n const pauseMarker = Array.isArray(response.data) ? '\\u200B'.repeat(20) : '';\n const responseContent = Array.isArray(response.data)\n ? response.data.join(pauseMarker)\n : response.data;\n\n const newAiMsgId = `ai-${Date.now()}-${idx}`;\n newAiMessages.push({\n id: newAiMsgId,\n type: 'ai',\n user: 'ai', // 添加 user 属性\n component: response.type || undefined,\n content: responseContent || '',\n });\n });\n\n // 在用户消息后插入新的AI消息\n messages.value.splice(index + 1, 0, ...newAiMessages);\n } else {\n const newAiMsgId = `ai-${Date.now()}`;\n // 在用户消息后插入默认AI回复\n messages.value.splice(index + 1, 0, {\n id: newAiMsgId,\n type: 'ai',\n user: 'ai', // 添加 user 属性\n content: robotUnmatched,\n });\n }\n // 保存聊天记录\n updateCurrentChat();\n }, 500);\n // --- 插入新AI回复结束 --- //\n }\n};\n\n// 添加取消编辑处理函数\nconst handleCancelEdit = (index: number) => {\n const message = messages.value[index];\n if (message && message.type === 'user') {\n // 恢复原始内容\n message.content = message.editContent || '';\n message.isEditing = false;\n // 删除临时编辑内容\n delete message.editContent;\n // 更新消息数组\n messages.value.splice(index, 1, { ...message });\n // 显示成功提示\n showToast('编辑已取消');\n }\n};\n\n// 挂载时加载历史记录\nonMounted(() => {\n if (!isNotHeader) {\n loadFromLocalStorage();\n }\n if (isNotHeader && props.scripts && props.scripts.length > 0) {\n // 检查scripts[0]的第一条消息是否为AI消息\n const firstScript = props.scripts[0];\n if (firstScript && firstScript.content && firstScript.content.length > 0) {\n const firstMessage = firstScript.content[0];\n if (firstMessage.user === 'ai') {\n // 直接展示AI消息\n selectedScriptName.value = firstScript.name;\n const aiMsgId = `ai-${Date.now()}`;\n messages.value.push({\n id: aiMsgId,\n type: 'ai',\n user: 'ai', // 添加 user 属性\n component: firstMessage.type || undefined,\n content: firstMessage.data || '',\n });\n updateCurrentChat();\n\n // 初始化脚本索引,确保后续用户回复能正确匹配\n // currentScriptIndex.value = 1; // 假设AI消息后是下一个用户输入点\n } else {\n // 原有逻辑:发送第一条用户消息\n sceneClick(firstScript);\n }\n }\n }\n});\nconst handleItemClick = (script: Script, type?: string) => {\n if (type) {\n sendMessageType.value = type;\n }\n sceneClick(script);\n};\n\nconst sceneClick = (script: Script) => {\n // 更新选中状态\n selectedScriptName.value = script.name;\n\n // 提取重复逻辑为辅助函数\n const findAndSendFirstUserMessage = (dataSource: Script[]) => {\n const targetScript = dataSource.find(item => item.name === script.name);\n if (targetScript && targetScript.content.length) {\n const firstUserMessage = targetScript.content.find(citem => citem.user === 'i')?.data;\n if (firstUserMessage) {\n sendMessage(firstUserMessage);\n }\n }\n };\n\n // 根据不同类型调用辅助函数\n if (!sendMessageType.value && props.scripts.length) {\n findAndSendFirstUserMessage(props.scripts);\n } else if (sendMessageType.value === '0' && helloChatList.length) {\n findAndSendFirstUserMessage(helloChatList);\n } else if (sendMessageType.value === '1' && helloChatInfo.info1.length) {\n findAndSendFirstUserMessage(helloChatInfo.info1);\n } else if (sendMessageType.value === '2' && helloChatInfo.info2.length) {\n findAndSendFirstUserMessage(helloChatInfo.info2);\n } else if (sendMessageType.value === '3' && helloChatInfo.info3.length) {\n findAndSendFirstUserMessage(helloChatInfo.info3);\n }\n};\n\n// 添加点击事件处理函数\nconst toggleChatPanel = () => {\n emit('toggleChatPanel');\n};\n\n// 然后修改findMatchingScriptContent函数\nconst findMatchingScriptContent = (\n userInput: string,\n type?: string\n): {\n responses: Array<{\n user: string;\n data?: string;\n subData?: Array<string>;\n type?: string;\n }>;\n nextIndex: number;\n} | null => {\n // 获取当前选中的脚本\n let array = props.scripts;\n switch (type) {\n case '0':\n array = helloChatList;\n break;\n case '1':\n array = helloChatInfo.info1;\n break;\n case '2':\n array = helloChatInfo.info2;\n break;\n case '3':\n array = helloChatInfo.info3;\n break;\n default:\n break;\n }\n const currentScript = array.find(s => s.name === selectedScriptName.value);\n if (!currentScript) return null;\n\n // 如果 currentScriptIndex 是 0 且第一条消息是 AI 消息,寻找第一个用户输入点\n if (\n currentScriptIndex.value === 0 &&\n currentScript.content.length > 0 &&\n currentScript.content[0].user === 'ai'\n ) {\n let firstUserInputIndex = -1;\n for (let i = 0; i < currentScript.content.length; i++) {\n if (currentScript.content[i].user === 'i') {\n firstUserInputIndex = i;\n break;\n }\n }\n\n if (firstUserInputIndex !== -1) {\n currentScriptIndex.value = firstUserInputIndex;\n } else {\n return null;\n }\n }\n\n // 检查是否匹配第一条脚本数据(重置流程)\n const firstItem = currentScript.content[0];\n if (firstItem.user === 'i') {\n // 优先检查data是否匹配\n const isDataMatch = firstItem.data && userInput.includes(firstItem.data);\n\n // 修改subData匹配逻辑,支持数组类型\n let isSubDataMatch = false;\n if (firstItem.subData) {\n if (Array.isArray(firstItem.subData)) {\n isSubDataMatch = firstItem.subData.some(item => userInput.includes(item));\n }\n }\n\n if (isDataMatch || isSubDataMatch) {\n currentScriptIndex.value = 0;\n\n // 收集第一条后的AI回复直到下一个用户输入点\n const responses: Array<{\n user: string;\n data?: string;\n subData?: Array<string>;\n type?: string;\n }> = [];\n let nextIndex = currentScript.content.length;\n\n for (let i = 1; i < currentScript.content.length; i++) {\n const item = currentScript.content[i];\n if (item.user === 'i') {\n nextIndex = i;\n break;\n }\n if (item.user === 'ai') {\n responses.push(item);\n }\n }\n\n return { responses, nextIndex };\n }\n }\n\n // 检查当前索引位置的条目\n const currentItem = currentScript.content[currentScriptIndex.value];\n if (!currentItem || currentItem.user !== 'i') {\n return null;\n }\n\n // 当前条目是否匹配用户输入(优先检查data)\n const isDataMatch = currentItem.data && userInput.includes(currentItem.data);\n\n // 修改subData匹配逻辑,支持数组类型\n let isSubDataMatch = false;\n if (currentItem.subData) {\n if (Array.isArray(currentItem.subData)) {\n // 如果是数组,检查数组中是否有任何一个元素被userInput包含\n isSubDataMatch = currentItem.subData.some(item => userInput.includes(item));\n }\n }\n\n if (isDataMatch || isSubDataMatch) {\n // 收集AI回复\n const responses: Array<{\n user: string;\n data?: string;\n subData?: Array<string>;\n type?: string;\n }> = [];\n let nextIndex = currentScript.content.length; // 默认设为脚本末尾\n\n // 查找下一个用户输入点并收集AI回复\n for (let i = currentScriptIndex.value + 1; i < currentScript.content.length; i++) {\n const item = currentScript.content[i];\n if (item.user === 'ai') {\n responses.push(item);\n } else if (item.user === 'i') {\n nextIndex = i;\n break;\n }\n }\n\n // 更新当前索引\n currentScriptIndex.value = nextIndex;\n\n return { responses, nextIndex };\n }\n\n return null;\n};\n// 修改发送消息函数\nconst sendMessage = (message?: string) => {\n if (btnDisable.value) return;\n if (message !== undefined && typeof message !== 'string') {\n console.error('message must be a string');\n return;\n }\n btnDisable.value = true;\n const contentToSend = message !== undefined ? message : inputMessage.value;\n if (!contentToSend.trim()) return;\n\n // 添加用户消息,包含 user 属性\n const userMsgId = `user-${Date.now()}`;\n messages.value.push({\n id: userMsgId,\n type: 'user',\n user: 'user', // 添加 user 属性\n content: contentToSend.trim(),\n });\n\n // 清空输入框\n if (message === undefined) {\n inputMessage.value = '';\n }\n\n // 模拟AI回复\n setTimeout(() => {\n const result = findMatchingScriptContent(contentToSend, sendMessageType.value);\n\n if (result && result.responses.length > 0) {\n currentScriptIndex.value = result.nextIndex;\n result.responses.forEach((response, index) => {\n const pauseMarker = Array.isArray(response.data) ? ''.repeat(20) : '';\n const content = Array.isArray(response.data)\n ? response.data.join(pauseMarker)\n : response.data;\n\n setTimeout(() => {\n const aiMsgId = `ai-${Date.now()}-${index}`;\n messages.value.push({\n id: aiMsgId,\n type: 'ai',\n user: 'ai', // 添加 user 属性\n component: response.type || undefined,\n content: content || '',\n });\n }, index * 800);\n });\n } else {\n const aiMsgId = `ai-${Date.now()}`;\n messages.value.push({\n id: aiMsgId,\n type: 'ai',\n user: 'ai', // 添加 user 属性\n content: robotUnmatched,\n });\n }\n // 保存聊天记录\n updateCurrentChat();\n }, 500);\n};\n\n// 处理新对话函数修改\nconst handleNewChat = () => {\n // 查找是否有消息内容为空的对话\n const emptyChat = chatHistory.value.find(chat => chat.messages.length === 0);\n if (emptyChat) {\n // 然后跳转到该对话\n handleSelectChat(emptyChat.id);\n return;\n }\n createNewChat();\n currentScriptIndex.value = 0;\n};\n\n// 监听聊天历史变化,自动保存\nwatch(\n () => chatHistory.value,\n () => saveToLocalStorage(),\n { deep: true }\n);\n\nconst instance = getCurrentInstance();\n// 添加消息操作处理函数\nconst handleMessageAction = (\n action: 'copy' | 'edit' | 'retry' | 'like' | 'dislike' | 'delete',\n index: number\n) => {\n console.log(action, index, messages.value, '=== 560 ===');\n const message = messages.value[index];\n if (!message) return;\n\n switch (action) {\n case 'copy':\n navigator.clipboard.writeText(message.content || '').then(() => {\n // 实际项目中可以替换为项目中使用的提示组件\n showToast('复制成功');\n });\n break;\n case 'edit':\n // 启用编辑模式\n if (message) {\n message.isEditing = true;\n message.editContent = message.content; // 初始化编辑内容\n // 更新消息\n messages.value.splice(index, 1, { ...message });\n }\n break;\n case 'delete':\n messageUtils.deleteMessageChain(index);\n updateCurrentChat();\n break;\n case 'retry': {\n // 获取当前AI消息和对应的用户消息\n const userMessageIndex = index - 1;\n const userMessage = messages.value[userMessageIndex];\n\n if (userMessage && userMessage.type === 'user') {\n // 先删除当前AI消息\n messages.value.splice(index, 1);\n\n // 立即更新视图\n updateCurrentChat();\n\n // 直接生成新的AI消息,不重新发送用户消息\n setTimeout(() => {\n // 使用用户原始消息内容查找匹配的脚本回复\n const result = findMatchingScriptContent(\n userMessage?.content || '',\n sendMessageType.value\n );\n\n if (result && result.responses.length > 0) {\n currentScriptIndex.value = result.nextIndex;\n // 存储新AI消息的数组\n const newAiMessages: ChatMessage[] = [];\n\n result.responses.forEach((response, idx) => {\n const pauseMarker = Array.isArray(response.data) ? '\\u200B'.repeat(20) : '';\n const content = Array.isArray(response.data)\n ? response.data.join(pauseMarker)\n : response.data;\n\n const newAiMsgId = `ai-${Date.now()}-${idx}`;\n newAiMessages.push({\n id: newAiMsgId,\n type: 'ai',\n user: 'ai',\n component: response.type || undefined,\n content: content || '',\n });\n });\n\n // 在用户消息后插入新的AI消息\n messages.value.splice(userMessageIndex + 1, 0, ...newAiMessages);\n } else {\n const newAiMsgId = `ai-${Date.now()}`;\n // 在用户消息后插入默认AI回复\n messages.value.splice(userMessageIndex + 1, 0, {\n id: newAiMsgId,\n type: 'ai',\n user: 'ai',\n content: robotUnmatched,\n });\n }\n // 保存聊天记录\n updateCurrentChat();\n }, 500);\n }\n break;\n }\n case 'like':\n messageUtils.updateMessage(index, {\n isLiked: true,\n isDisliked: false,\n });\n updateCurrentChat();\n break;\n case 'dislike':\n messageUtils.updateMessage(index, {\n isLiked: false,\n isDisliked: true,\n });\n updateCurrentChat();\n break;\n }\n};\n\n// 添加消息管理工具函数\nconst messageUtils = {\n // 更新消息内容\n updateMessage: (index: number, updates: Partial<Message>) => {\n if (index < 0 || index >= messages.value.length) return;\n messages.value.splice(index, 1, { ...messages.value[index], ...updates });\n },\n\n // 删除消息及其后续所有连续的AI回复,直到遇到下一个用户消息\n deleteMessageChain: (index: number) => {\n if (index < 0 || index >= messages.value.length) return;\n\n // 起始删除位置\n let startIndex = index;\n\n // 删除数量(至少删除当前消息)\n let deleteCount = 1;\n\n // 检查后续消息是否为AI消息\n for (let i = index + 1; i < messages.value.length; i++) {\n if (messages.value[i].type === 'ai') {\n deleteCount++;\n } else {\n // 遇到非AI消息(用户消息)则停止\n break;\n }\n }\n\n messages.value.splice(startIndex, deleteCount);\n },\n};\n\n// 在provide中添加handleMessageAction方法\nprovide('parentContext', {\n instance,\n methods: {\n sendMessage,\n handleMessageAction,\n },\n components: componentMap,\n state: {\n messages,\n inputMessage,\n },\n});\n</script>\n\n<!-- <style lang=\"less\" scoped>\n@import '../../style/variables.less';\n@import './style/index.less';\n</style> -->\n"],"names":["isDataMatch","isSubDataMatch","_createElementBlock","_unref","_createCommentVNode","_createElementVNode","_createBlock","_renderSlot","_createVNode","_withCtx"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _sfc_main from './Content.vue2.mjs';
|
|
2
|
+
import _export_sfc from '../../../../../_virtual/_plugin-vue_export-helper.mjs';
|
|
2
3
|
|
|
4
|
+
var Content = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "Content.vue"]]);
|
|
3
5
|
|
|
4
|
-
|
|
5
|
-
export { _sfc_main as default };
|
|
6
|
+
export { Content as default };
|
|
6
7
|
//# sourceMappingURL=Content.vue.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Content.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Content.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { defineComponent, inject, ref, watch, nextTick, onMounted, openBlock, createElementBlock, Fragment, renderList, normalizeClass, renderSlot, unref,
|
|
1
|
+
import { defineComponent, inject, ref, watch, nextTick, onMounted, openBlock, createElementBlock, createCommentVNode, Fragment, renderList, normalizeClass, renderSlot, unref, createElementVNode, createBlock, resolveDynamicComponent, toDisplayString, withDirectives, vModelText, createVNode } from 'vue';
|
|
2
2
|
import _imports_0 from '../../img/AI.png.mjs';
|
|
3
3
|
import _imports_1 from '../../img/asir.png.mjs';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
4
|
+
import TouchLetter from './component/letter.vue.mjs';
|
|
5
|
+
import start from './component/start.vue.mjs';
|
|
6
|
+
import face from './component/face.vue.mjs';
|
|
7
|
+
import meterialPrepare from './component/meterialPrepare.vue.mjs';
|
|
8
|
+
import MessageActions from '../AiChat/MessageActions.vue.mjs';
|
|
9
9
|
|
|
10
10
|
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
11
11
|
__name: "Content",
|
|
@@ -30,9 +30,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
30
30
|
const isAvatar = inject("isAvatar", false);
|
|
31
31
|
const messageContainer = ref(null);
|
|
32
32
|
const componentMap = {
|
|
33
|
-
start
|
|
34
|
-
face
|
|
35
|
-
meterialPrepare
|
|
33
|
+
start,
|
|
34
|
+
face,
|
|
35
|
+
meterialPrepare,
|
|
36
36
|
...rootMap
|
|
37
37
|
};
|
|
38
38
|
const editContents = ref({});
|
|
@@ -120,102 +120,141 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
120
120
|
{ deep: true }
|
|
121
121
|
);
|
|
122
122
|
return (_ctx, _cache) => {
|
|
123
|
-
return openBlock(), createElementBlock(
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
key:
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
123
|
+
return openBlock(), createElementBlock(
|
|
124
|
+
"div",
|
|
125
|
+
{
|
|
126
|
+
ref_key: "messageContainer",
|
|
127
|
+
ref: messageContainer,
|
|
128
|
+
class: "message-list"
|
|
129
|
+
},
|
|
130
|
+
[
|
|
131
|
+
createCommentVNode(" \u7EDF\u4E00\u6E32\u67D3\u6240\u6709\u6D88\u606F "),
|
|
132
|
+
(openBlock(true), createElementBlock(
|
|
133
|
+
Fragment,
|
|
134
|
+
null,
|
|
135
|
+
renderList(props.messages, (msg, index) => {
|
|
136
|
+
return openBlock(), createElementBlock(
|
|
137
|
+
"div",
|
|
138
|
+
{
|
|
139
|
+
key: msg.id,
|
|
140
|
+
class: normalizeClass(["message-item", `${msg.type}-message`])
|
|
141
|
+
},
|
|
142
|
+
[
|
|
143
|
+
msg.type === "ai" ? (openBlock(), createElementBlock("div", {
|
|
144
|
+
key: 0,
|
|
145
|
+
class: "avatar-container"
|
|
146
|
+
}, [
|
|
147
|
+
renderSlot(_ctx.$slots, "aiAvatar", {}, () => [
|
|
148
|
+
unref(isAvatar) ? (openBlock(), createElementBlock("img", {
|
|
149
|
+
key: 0,
|
|
150
|
+
src: _imports_0,
|
|
151
|
+
alt: "AI \u5934\u50CF",
|
|
152
|
+
class: "avatar"
|
|
153
|
+
})) : createCommentVNode("v-if", true)
|
|
154
|
+
])
|
|
155
|
+
])) : createCommentVNode("v-if", true),
|
|
156
|
+
createCommentVNode(" text-content "),
|
|
157
|
+
createElementVNode(
|
|
158
|
+
"div",
|
|
159
|
+
{
|
|
160
|
+
class: normalizeClass(["text-content-wrapper", { "is-editing": msg.isEditing }])
|
|
161
|
+
},
|
|
162
|
+
[
|
|
163
|
+
!msg.isEditing ? (openBlock(), createElementBlock("div", {
|
|
164
|
+
key: 0,
|
|
165
|
+
class: "text-content"
|
|
166
|
+
}, [
|
|
167
|
+
msg.type === "ai" && msg.component ? (openBlock(), createBlock(resolveDynamicComponent(componentMap[msg.component]), {
|
|
168
|
+
key: 0,
|
|
169
|
+
data: msg.content,
|
|
170
|
+
onComplete: handleComplete
|
|
171
|
+
}, null, 40, ["data"])) : msg.type === "ai" && !msg.component ? (openBlock(), createBlock(TouchLetter, {
|
|
172
|
+
key: 1,
|
|
173
|
+
data: msg.content,
|
|
174
|
+
onComplete: handleComplete
|
|
175
|
+
}, null, 8, ["data"])) : (openBlock(), createElementBlock(
|
|
176
|
+
"div",
|
|
177
|
+
{ key: 2 },
|
|
178
|
+
toDisplayString(msg.content),
|
|
179
|
+
1
|
|
180
|
+
/* TEXT */
|
|
181
|
+
))
|
|
182
|
+
])) : (openBlock(), createElementBlock(
|
|
183
|
+
Fragment,
|
|
184
|
+
{ key: 1 },
|
|
185
|
+
[
|
|
186
|
+
createCommentVNode(" \u7F16\u8F91\u533A\u57DF "),
|
|
187
|
+
createElementVNode("div", { class: "edit-input-container" }, [
|
|
188
|
+
withDirectives(createElementVNode("textarea", {
|
|
189
|
+
ref_for: true,
|
|
190
|
+
ref: "editTextareaRefs[index]",
|
|
191
|
+
"onUpdate:modelValue": ($event) => editContents.value[index] = $event,
|
|
192
|
+
class: "edit-textarea",
|
|
193
|
+
placeholder: "\u8BF7\u8F93\u5165\u6D88\u606F\u5185\u5BB9..."
|
|
194
|
+
}, null, 8, ["onUpdate:modelValue"]), [
|
|
195
|
+
[vModelText, editContents.value[index]]
|
|
196
|
+
]),
|
|
197
|
+
createElementVNode("div", { class: "edit-controls" }, [
|
|
198
|
+
createElementVNode("button", {
|
|
199
|
+
class: "btn cancel-btn",
|
|
200
|
+
onClick: ($event) => onCancelEdit(index)
|
|
201
|
+
}, "\u53D6\u6D88", 8, ["onClick"]),
|
|
202
|
+
createElementVNode("button", {
|
|
203
|
+
class: "btn send-btn",
|
|
204
|
+
disabled: !editContents.value[index].trim(),
|
|
205
|
+
onClick: ($event) => onSaveEdit(index)
|
|
206
|
+
}, " \u53D1\u9001 ", 8, ["disabled", "onClick"])
|
|
207
|
+
])
|
|
208
|
+
])
|
|
209
|
+
],
|
|
210
|
+
2112
|
|
211
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
212
|
+
)),
|
|
213
|
+
createCommentVNode(" \u6D88\u606F\u64CD\u4F5C\u6309\u94AE - \u79FB\u5230\u5185\u5BB9\u4E0B\u65B9 "),
|
|
214
|
+
createVNode(MessageActions, {
|
|
215
|
+
"message-type": msg.type,
|
|
216
|
+
index,
|
|
217
|
+
"show-copy": true,
|
|
218
|
+
"is-show-like": msg.type === "ai",
|
|
219
|
+
"is-liked": msg.isLiked || false,
|
|
220
|
+
"is-disliked": msg.isDisliked || false,
|
|
221
|
+
"is-editing": msg.isEditing || false,
|
|
222
|
+
onCopy: ($event) => handleCopy(index),
|
|
223
|
+
onRetry: ($event) => handleRetry(index),
|
|
224
|
+
onLike: ($event) => handleLike(index),
|
|
225
|
+
onDislike: ($event) => handleDislike(index),
|
|
226
|
+
onEdit: ($event) => handleEdit(index),
|
|
227
|
+
onDelete: ($event) => handleDelete(index)
|
|
228
|
+
}, null, 8, ["message-type", "index", "is-show-like", "is-liked", "is-disliked", "is-editing", "onCopy", "onRetry", "onLike", "onDislike", "onEdit", "onDelete"])
|
|
229
|
+
],
|
|
230
|
+
2
|
|
231
|
+
/* CLASS */
|
|
232
|
+
),
|
|
233
|
+
msg.type === "user" ? (openBlock(), createElementBlock("div", {
|
|
234
|
+
key: 1,
|
|
235
|
+
class: "avatar-container"
|
|
236
|
+
}, [
|
|
237
|
+
renderSlot(_ctx.$slots, "userAvatar", {}, () => [
|
|
238
|
+
unref(isAvatar) ? (openBlock(), createElementBlock("img", {
|
|
239
|
+
key: 0,
|
|
240
|
+
src: _imports_1,
|
|
241
|
+
alt: "\u7528\u6237\u5934\u50CF",
|
|
242
|
+
class: "avatar"
|
|
243
|
+
})) : createCommentVNode("v-if", true)
|
|
244
|
+
])
|
|
245
|
+
])) : createCommentVNode("v-if", true)
|
|
246
|
+
],
|
|
247
|
+
2
|
|
248
|
+
/* CLASS */
|
|
249
|
+
);
|
|
250
|
+
}),
|
|
251
|
+
128
|
|
252
|
+
/* KEYED_FRAGMENT */
|
|
253
|
+
))
|
|
254
|
+
],
|
|
255
|
+
512
|
|
256
|
+
/* NEED_PATCH */
|
|
257
|
+
);
|
|
219
258
|
};
|
|
220
259
|
}
|
|
221
260
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Content.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiRobot/Content.vue"],"sourcesContent":["<template>\n <div ref=\"messageContainer\" class=\"message-list\">\n <!-- 统一渲染所有消息 -->\n <div\n v-for=\"(msg, index) in props.messages\"\n :key=\"msg.id\"\n :class=\"['message-item', `${msg.type}-message`]\"\n >\n <div v-if=\"msg.type === 'ai'\" class=\"avatar-container\">\n <slot name=\"aiAvatar\">\n <img v-if=\"isAvatar\" src=\"../../img/AI.png\" alt=\"AI 头像\" class=\"avatar\" />\n </slot>\n </div>\n <!-- text-content -->\n <div class=\"text-content-wrapper\" :class=\"{ 'is-editing': msg.isEditing }\">\n <div v-if=\"!msg.isEditing\" class=\"text-content\">\n <component\n :is=\"componentMap[msg.component]\"\n v-if=\"msg.type === 'ai' && msg.component\"\n :data=\"msg.content\"\n @complete=\"handleComplete\"\n />\n <letter\n v-else-if=\"msg.type === 'ai' && !msg.component\"\n :data=\"msg.content as string\"\n @complete=\"handleComplete\"\n >\n </letter>\n <div v-else>{{ msg.content }}</div>\n </div>\n <!-- 编辑区域 -->\n <div v-else class=\"edit-input-container\">\n <textarea\n ref=\"editTextareaRefs[index]\"\n v-model=\"editContents[index]\"\n class=\"edit-textarea\"\n placeholder=\"请输入消息内容...\"\n ></textarea>\n <div class=\"edit-controls\">\n <button class=\"btn cancel-btn\" @click=\"onCancelEdit(index)\">取消</button>\n <button\n class=\"btn send-btn\"\n :disabled=\"!editContents[index].trim()\"\n @click=\"onSaveEdit(index)\"\n >\n 发送\n </button>\n </div>\n </div>\n <!-- 消息操作按钮 - 移到内容下方 -->\n <MessageActions\n :message-type=\"msg.type\"\n :index=\"index\"\n :show-copy=\"true\"\n :is-show-like=\"msg.type === 'ai'\"\n :is-liked=\"msg.isLiked || false\"\n :is-disliked=\"msg.isDisliked || false\"\n :is-editing=\"msg.isEditing || false\"\n @copy=\"handleCopy(index)\"\n @retry=\"handleRetry(index)\"\n @like=\"handleLike(index)\"\n @dislike=\"handleDislike(index)\"\n @edit=\"handleEdit(index)\"\n @delete=\"handleDelete(index)\"\n />\n </div>\n <div v-if=\"msg.type === 'user'\" class=\"avatar-container\">\n <slot name=\"userAvatar\">\n <img v-if=\"isAvatar\" src=\"../../img/asir.png\" alt=\"用户头像\" class=\"avatar\" />\n </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, nextTick, onMounted, inject, watch } from 'vue';\nimport Letter from './component/letter.vue';\nimport start from './component/start.vue';\nimport face from './component/face.vue';\nimport meterialPrepare from './component/meterialPrepare.vue';\nimport MessageActions from '../AiChat/MessageActions.vue';\n\n// 定义组件映射接口,添加字符串索引签名\ninterface ComponentMap {\n start: typeof start;\n face: typeof face;\n meterialPrepare: typeof meterialPrepare;\n [key: string]: any; // 添加字符串索引签名\n}\n\nexport interface Message {\n id: string;\n type: 'user' | 'ai';\n component?: string;\n time?: string;\n content?: string;\n isLiked?: boolean;\n isDisliked?: boolean;\n isEditing?: boolean;\n}\n\nconst props = defineProps<{\n messages: Message[];\n}>();\nconst emit = defineEmits([\n 'complete',\n 'copy',\n 'retry',\n 'like',\n 'dislike',\n 'edit',\n 'delete',\n 'save-edit',\n 'cancel-edit',\n]);\n\nconst rootMap = inject('rootMap', () => ({}));\nconst isAvatar = inject('isAvatar', false);\nconst messageContainer = ref<HTMLElement | null>(null);\n// 明确componentMap的类型为ComponentMap\nconst componentMap: ComponentMap = {\n start,\n face,\n meterialPrepare,\n ...rootMap,\n};\n\n// 编辑相关状态管理\nconst editContents = ref<Record<number, string>>({});\nconst editTextareaRefs = ref<Record<number, HTMLTextAreaElement | null>>({});\n\n// 监听messages变化,更新编辑内容\nwatch(\n () => props.messages,\n newMessages => {\n newMessages.forEach((msg, index) => {\n if (msg.isEditing) {\n editContents.value[index] = msg.content || '';\n // 延迟聚焦到编辑框\n nextTick(() => {\n if (editTextareaRefs.value[index]) {\n editTextareaRefs.value[index]?.focus();\n }\n });\n }\n });\n },\n { deep: true }\n);\n\nconst handleComplete = () => {\n emit('complete');\n // scrollToBottom();\n};\n\nconst handleCopy = (index: number) => {\n emit('copy', 'copy', index);\n};\n\nconst handleRetry = (index: number) => {\n emit('retry', 'retry', index);\n};\n\nconst handleLike = (index: number) => {\n emit('like', 'like', index);\n};\n\nconst handleDislike = (index: number) => {\n emit('dislike', 'dislike', index);\n};\n\nconst handleEdit = (index: number) => {\n emit('edit', 'edit', index);\n};\n\nconst handleDelete = (index: number) => {\n emit('delete', 'delete', index);\n};\n\n// 保存编辑\nconst onSaveEdit = (index: number) => {\n const content = editContents.value[index];\n if (content.trim()) {\n emit('save-edit', index, content);\n }\n};\n\n// 取消编辑\nconst onCancelEdit = (index: number) => {\n emit('cancel-edit', index);\n};\n\n// 滚动到底部\nconst scrollToBottom = () => {\n nextTick(() => {\n if (messageContainer.value) {\n messageContainer.value.scrollTop = messageContainer.value.scrollHeight;\n }\n });\n};\n\n// 初始化滚动到底部\nonMounted(() => {\n scrollToBottom();\n});\n\n// 添加一个新的监听器,监听messages数组的变化\nwatch(\n () => props.messages.length,\n (newLength, oldLength) => {\n // 当消息数量增加时,滚动到底部\n if (newLength > oldLength) {\n scrollToBottom();\n }\n }\n);\n\n// 保留现有的watch监听器\nwatch(\n () => props.messages,\n newMessages => {\n newMessages.forEach((msg, index) => {\n if (msg.isEditing) {\n editContents.value[index] = msg.content || '';\n // 延迟聚焦到编辑框\n nextTick(() => {\n if (editTextareaRefs.value[index]) {\n editTextareaRefs.value[index]?.focus();\n }\n });\n }\n });\n },\n { deep: true }\n);\n</script>\n\n<!-- <style lang=\"less\" scoped>\n@import '../../style/variables.less';\n@import './style/index.less';\n@import '../../style/UserMessage.less';\n@import '../../style/AiMessage.less';\n@import './style/Content.less';\n</style> -->\n"],"names":["start","face","meterialPrepare","_createElementBlock","_openBlock","_Fragment","_normalizeClass","_renderSlot","_unref","_createElementVNode","_createBlock","_resolveDynamicComponent","Letter","_toDisplayString","_vModelText","_createVNode","MessageActions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Content.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiRobot/Content.vue"],"sourcesContent":["<template>\n <div ref=\"messageContainer\" class=\"message-list\">\n <!-- 统一渲染所有消息 -->\n <div\n v-for=\"(msg, index) in props.messages\"\n :key=\"msg.id\"\n :class=\"['message-item', `${msg.type}-message`]\"\n >\n <div v-if=\"msg.type === 'ai'\" class=\"avatar-container\">\n <slot name=\"aiAvatar\">\n <img v-if=\"isAvatar\" src=\"../../img/AI.png\" alt=\"AI 头像\" class=\"avatar\" />\n </slot>\n </div>\n <!-- text-content -->\n <div class=\"text-content-wrapper\" :class=\"{ 'is-editing': msg.isEditing }\">\n <div v-if=\"!msg.isEditing\" class=\"text-content\">\n <component\n :is=\"componentMap[msg.component]\"\n v-if=\"msg.type === 'ai' && msg.component\"\n :data=\"msg.content\"\n @complete=\"handleComplete\"\n />\n <letter\n v-else-if=\"msg.type === 'ai' && !msg.component\"\n :data=\"msg.content as string\"\n @complete=\"handleComplete\"\n >\n </letter>\n <div v-else>{{ msg.content }}</div>\n </div>\n <!-- 编辑区域 -->\n <div v-else class=\"edit-input-container\">\n <textarea\n ref=\"editTextareaRefs[index]\"\n v-model=\"editContents[index]\"\n class=\"edit-textarea\"\n placeholder=\"请输入消息内容...\"\n ></textarea>\n <div class=\"edit-controls\">\n <button class=\"btn cancel-btn\" @click=\"onCancelEdit(index)\">取消</button>\n <button\n class=\"btn send-btn\"\n :disabled=\"!editContents[index].trim()\"\n @click=\"onSaveEdit(index)\"\n >\n 发送\n </button>\n </div>\n </div>\n <!-- 消息操作按钮 - 移到内容下方 -->\n <MessageActions\n :message-type=\"msg.type\"\n :index=\"index\"\n :show-copy=\"true\"\n :is-show-like=\"msg.type === 'ai'\"\n :is-liked=\"msg.isLiked || false\"\n :is-disliked=\"msg.isDisliked || false\"\n :is-editing=\"msg.isEditing || false\"\n @copy=\"handleCopy(index)\"\n @retry=\"handleRetry(index)\"\n @like=\"handleLike(index)\"\n @dislike=\"handleDislike(index)\"\n @edit=\"handleEdit(index)\"\n @delete=\"handleDelete(index)\"\n />\n </div>\n <div v-if=\"msg.type === 'user'\" class=\"avatar-container\">\n <slot name=\"userAvatar\">\n <img v-if=\"isAvatar\" src=\"../../img/asir.png\" alt=\"用户头像\" class=\"avatar\" />\n </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, nextTick, onMounted, inject, watch } from 'vue';\nimport Letter from './component/letter.vue';\nimport start from './component/start.vue';\nimport face from './component/face.vue';\nimport meterialPrepare from './component/meterialPrepare.vue';\nimport MessageActions from '../AiChat/MessageActions.vue';\n\n// 定义组件映射接口,添加字符串索引签名\ninterface ComponentMap {\n start: typeof start;\n face: typeof face;\n meterialPrepare: typeof meterialPrepare;\n [key: string]: any; // 添加字符串索引签名\n}\n\nexport interface Message {\n id: string;\n type: 'user' | 'ai';\n component?: string;\n time?: string;\n content?: string;\n isLiked?: boolean;\n isDisliked?: boolean;\n isEditing?: boolean;\n}\n\nconst props = defineProps<{\n messages: Message[];\n}>();\nconst emit = defineEmits([\n 'complete',\n 'copy',\n 'retry',\n 'like',\n 'dislike',\n 'edit',\n 'delete',\n 'save-edit',\n 'cancel-edit',\n]);\n\nconst rootMap = inject('rootMap', () => ({}));\nconst isAvatar = inject('isAvatar', false);\nconst messageContainer = ref<HTMLElement | null>(null);\n// 明确componentMap的类型为ComponentMap\nconst componentMap: ComponentMap = {\n start,\n face,\n meterialPrepare,\n ...rootMap,\n};\n\n// 编辑相关状态管理\nconst editContents = ref<Record<number, string>>({});\nconst editTextareaRefs = ref<Record<number, HTMLTextAreaElement | null>>({});\n\n// 监听messages变化,更新编辑内容\nwatch(\n () => props.messages,\n newMessages => {\n newMessages.forEach((msg, index) => {\n if (msg.isEditing) {\n editContents.value[index] = msg.content || '';\n // 延迟聚焦到编辑框\n nextTick(() => {\n if (editTextareaRefs.value[index]) {\n editTextareaRefs.value[index]?.focus();\n }\n });\n }\n });\n },\n { deep: true }\n);\n\nconst handleComplete = () => {\n emit('complete');\n // scrollToBottom();\n};\n\nconst handleCopy = (index: number) => {\n emit('copy', 'copy', index);\n};\n\nconst handleRetry = (index: number) => {\n emit('retry', 'retry', index);\n};\n\nconst handleLike = (index: number) => {\n emit('like', 'like', index);\n};\n\nconst handleDislike = (index: number) => {\n emit('dislike', 'dislike', index);\n};\n\nconst handleEdit = (index: number) => {\n emit('edit', 'edit', index);\n};\n\nconst handleDelete = (index: number) => {\n emit('delete', 'delete', index);\n};\n\n// 保存编辑\nconst onSaveEdit = (index: number) => {\n const content = editContents.value[index];\n if (content.trim()) {\n emit('save-edit', index, content);\n }\n};\n\n// 取消编辑\nconst onCancelEdit = (index: number) => {\n emit('cancel-edit', index);\n};\n\n// 滚动到底部\nconst scrollToBottom = () => {\n nextTick(() => {\n if (messageContainer.value) {\n messageContainer.value.scrollTop = messageContainer.value.scrollHeight;\n }\n });\n};\n\n// 初始化滚动到底部\nonMounted(() => {\n scrollToBottom();\n});\n\n// 添加一个新的监听器,监听messages数组的变化\nwatch(\n () => props.messages.length,\n (newLength, oldLength) => {\n // 当消息数量增加时,滚动到底部\n if (newLength > oldLength) {\n scrollToBottom();\n }\n }\n);\n\n// 保留现有的watch监听器\nwatch(\n () => props.messages,\n newMessages => {\n newMessages.forEach((msg, index) => {\n if (msg.isEditing) {\n editContents.value[index] = msg.content || '';\n // 延迟聚焦到编辑框\n nextTick(() => {\n if (editTextareaRefs.value[index]) {\n editTextareaRefs.value[index]?.focus();\n }\n });\n }\n });\n },\n { deep: true }\n);\n</script>\n\n<!-- <style lang=\"less\" scoped>\n@import '../../style/variables.less';\n@import './style/index.less';\n@import '../../style/UserMessage.less';\n@import '../../style/AiMessage.less';\n@import './style/Content.less';\n</style> -->\n"],"names":["_createElementBlock","_createCommentVNode","_openBlock","_Fragment","_normalizeClass","_renderSlot","_unref","_createElementVNode","_createBlock","_resolveDynamicComponent","Letter","_toDisplayString","_vModelText","_createVNode"],"mappings":"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"}
|