@touchvue/chat 1.0.0-beta.2 → 1.0.0-beta.4
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/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue2.mjs +3 -3
- package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue2.mjs +3 -1
- package/es/packages/components/touchchat/component/AiRobot/face.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue2.mjs +9 -6
- package/es/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue2.mjs +1 -1
- package/es/packages/components/touchchat/component/AiRobot/start.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/CardView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/HelloChat.vue2.mjs +2 -2
- package/es/packages/components/touchchat/component/HelloChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/img/aiAvatar.png.mjs +4 -0
- package/es/packages/components/touchchat/img/aiAvatar.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/icon.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/userAvatar.png.mjs +4 -0
- package/es/packages/components/touchchat/img/userAvatar.png.mjs.map +1 -0
- package/es/packages/components/touchchat/index.mjs +1 -1
- package/es/packages/components/touchchat/index.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +115 -199
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +43 -137
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs +90 -127
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs +17 -39
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs +41 -181
- package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue2.mjs +1 -1
- package/es/packages/components/touchchat/src/AiChat/Scene.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue.mjs +6 -0
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs +25 -0
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +618 -390
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs +200 -89
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +42 -37
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/index.vue2.mjs +54 -29
- package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
- package/lib/package.json.js +1 -1
- package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue2.js +3 -3
- package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue2.js +3 -1
- package/lib/packages/components/touchchat/component/AiRobot/face.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue2.js +8 -5
- package/lib/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue2.js +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/start.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/CardView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/HelloChat.vue2.js +2 -2
- package/lib/packages/components/touchchat/component/HelloChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/img/aiAvatar.png.js +8 -0
- package/lib/packages/components/touchchat/img/aiAvatar.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/icon.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/userAvatar.png.js +8 -0
- package/lib/packages/components/touchchat/img/userAvatar.png.js.map +1 -0
- package/lib/packages/components/touchchat/index.js +1 -1
- package/lib/packages/components/touchchat/index.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +107 -191
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +43 -137
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js +89 -126
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js +16 -38
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js +41 -181
- package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue2.js +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Scene.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue.js +10 -0
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js +29 -0
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +615 -387
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js +199 -88
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +41 -36
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/index.vue2.js +53 -28
- package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
- package/package.json +81 -81
- package/theme/components/index.css +1447 -2004
- package/theme/img/aiArrow.png +0 -0
- package/theme/img/loading.png +0 -0
- package/theme/img/logo.png +0 -0
- package/theme/img/userArrow.png +0 -0
- package/theme/index.css +1448 -2005
- package/theme/skin/default.css +1448 -2005
- package/es/packages/components/touchchat/img/AI.png.mjs +0 -4
- package/es/packages/components/touchchat/img/AI.png.mjs.map +0 -1
- package/es/packages/components/touchchat/img/asir.png.mjs +0 -4
- package/es/packages/components/touchchat/img/asir.png.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue.mjs +0 -6
- package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.mjs +0 -620
- package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/Content.vue.mjs +0 -6
- package/es/packages/components/touchchat/src/AiRobot/Content.vue.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/Content.vue2.mjs +0 -224
- package/es/packages/components/touchchat/src/AiRobot/Content.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/Header.vue.mjs +0 -6
- package/es/packages/components/touchchat/src/AiRobot/Header.vue.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/Header.vue2.mjs +0 -188
- package/es/packages/components/touchchat/src/AiRobot/Header.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/Input.vue.mjs +0 -6
- package/es/packages/components/touchchat/src/AiRobot/Input.vue.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/Input.vue2.mjs +0 -69
- package/es/packages/components/touchchat/src/AiRobot/Input.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/Scene.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/component/HelloChat.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/component/face.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/component/letter.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/component/start.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/img/Avatar-AI.png.mjs +0 -4
- package/es/packages/components/touchchat/src/AiRobot/img/Avatar-AI.png.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/img/icon.png.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/index.vue.mjs +0 -6
- package/es/packages/components/touchchat/src/AiRobot/index.vue.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/index.vue2.mjs +0 -67
- package/es/packages/components/touchchat/src/AiRobot/index.vue2.mjs.map +0 -1
- package/lib/packages/components/touchchat/img/AI.png.js +0 -8
- package/lib/packages/components/touchchat/img/AI.png.js.map +0 -1
- package/lib/packages/components/touchchat/img/asir.png.js +0 -8
- package/lib/packages/components/touchchat/img/asir.png.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue.js +0 -10
- package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.js +0 -624
- package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/Content.vue.js +0 -10
- package/lib/packages/components/touchchat/src/AiRobot/Content.vue.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/Content.vue2.js +0 -228
- package/lib/packages/components/touchchat/src/AiRobot/Content.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/Header.vue.js +0 -10
- package/lib/packages/components/touchchat/src/AiRobot/Header.vue.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/Header.vue2.js +0 -192
- package/lib/packages/components/touchchat/src/AiRobot/Header.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/Input.vue.js +0 -10
- package/lib/packages/components/touchchat/src/AiRobot/Input.vue.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/Input.vue2.js +0 -73
- package/lib/packages/components/touchchat/src/AiRobot/Input.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/Scene.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/HelloChat.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/face.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/letter.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/start.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/img/Avatar-AI.png.js +0 -8
- package/lib/packages/components/touchchat/src/AiRobot/img/Avatar-AI.png.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/img/icon.png.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/index.vue.js +0 -10
- package/lib/packages/components/touchchat/src/AiRobot/index.vue.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/index.vue2.js +0 -71
- package/lib/packages/components/touchchat/src/AiRobot/index.vue2.js.map +0 -1
- package/theme/img/default.png +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue.mjs +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue.mjs.map +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue.mjs +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue.mjs.map +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue.mjs +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue.mjs.map +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue2.mjs +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue.mjs +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue.mjs.map +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue.mjs +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue.mjs.map +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/img → img}/icon.png.mjs +0 -0
- /package/es/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue.mjs +0 -0
- /package/es/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue.mjs.map +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue.js +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue.js.map +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue.js +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue.js.map +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue.js +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue.js.map +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue2.js +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue.js +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue.js.map +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue.js +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue.js.map +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/img → img}/icon.png.js +0 -0
- /package/lib/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue.js +0 -0
- /package/lib/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue.js.map +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPanel.vue2.js","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":["inject","start","face","meterialPrepare","ref","provide","showToast","onMounted","isDataMatch","isSubDataMatch","watch","getCurrentInstance","_createElementBlock","_unref","_createElementVNode","_createBlock","Header","_renderSlot","_createVNode","HelloChat","Content","Scene","Input","_withCtx"],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var Content_vue_vue_type_script_setup_true_lang = require('./Content.vue2.js');
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
exports.default = Content_vue_vue_type_script_setup_true_lang.default;
|
|
10
|
-
//# sourceMappingURL=Content.vue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Content.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var vue = require('vue');
|
|
6
|
-
var AI = require('../../img/AI.png.js');
|
|
7
|
-
var asir = require('../../img/asir.png.js');
|
|
8
|
-
var letter_vue_vue_type_script_setup_true_lang = require('./component/letter.vue2.js');
|
|
9
|
-
var start_vue_vue_type_script_setup_true_lang = require('./component/start.vue2.js');
|
|
10
|
-
var face_vue_vue_type_script_setup_true_lang = require('./component/face.vue2.js');
|
|
11
|
-
var meterialPrepare_vue_vue_type_script_setup_true_lang = require('./component/meterialPrepare.vue2.js');
|
|
12
|
-
var MessageActions_vue_vue_type_script_setup_true_lang = require('../AiChat/MessageActions.vue2.js');
|
|
13
|
-
|
|
14
|
-
var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
15
|
-
__name: "Content",
|
|
16
|
-
props: {
|
|
17
|
-
messages: {}
|
|
18
|
-
},
|
|
19
|
-
emits: [
|
|
20
|
-
"complete",
|
|
21
|
-
"copy",
|
|
22
|
-
"retry",
|
|
23
|
-
"like",
|
|
24
|
-
"dislike",
|
|
25
|
-
"edit",
|
|
26
|
-
"delete",
|
|
27
|
-
"save-edit",
|
|
28
|
-
"cancel-edit"
|
|
29
|
-
],
|
|
30
|
-
setup(__props, { emit: __emit }) {
|
|
31
|
-
const props = __props;
|
|
32
|
-
const emit = __emit;
|
|
33
|
-
const rootMap = vue.inject("rootMap", () => ({}));
|
|
34
|
-
const isAvatar = vue.inject("isAvatar", false);
|
|
35
|
-
const messageContainer = vue.ref(null);
|
|
36
|
-
const componentMap = {
|
|
37
|
-
start: start_vue_vue_type_script_setup_true_lang.default,
|
|
38
|
-
face: face_vue_vue_type_script_setup_true_lang.default,
|
|
39
|
-
meterialPrepare: meterialPrepare_vue_vue_type_script_setup_true_lang.default,
|
|
40
|
-
...rootMap
|
|
41
|
-
};
|
|
42
|
-
const editContents = vue.ref({});
|
|
43
|
-
const editTextareaRefs = vue.ref({});
|
|
44
|
-
vue.watch(
|
|
45
|
-
() => props.messages,
|
|
46
|
-
(newMessages) => {
|
|
47
|
-
newMessages.forEach((msg, index) => {
|
|
48
|
-
if (msg.isEditing) {
|
|
49
|
-
editContents.value[index] = msg.content || "";
|
|
50
|
-
vue.nextTick(() => {
|
|
51
|
-
var _a;
|
|
52
|
-
if (editTextareaRefs.value[index]) {
|
|
53
|
-
(_a = editTextareaRefs.value[index]) == null ? void 0 : _a.focus();
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
},
|
|
59
|
-
{ deep: true }
|
|
60
|
-
);
|
|
61
|
-
const handleComplete = () => {
|
|
62
|
-
emit("complete");
|
|
63
|
-
};
|
|
64
|
-
const handleCopy = (index) => {
|
|
65
|
-
emit("copy", "copy", index);
|
|
66
|
-
};
|
|
67
|
-
const handleRetry = (index) => {
|
|
68
|
-
emit("retry", "retry", index);
|
|
69
|
-
};
|
|
70
|
-
const handleLike = (index) => {
|
|
71
|
-
emit("like", "like", index);
|
|
72
|
-
};
|
|
73
|
-
const handleDislike = (index) => {
|
|
74
|
-
emit("dislike", "dislike", index);
|
|
75
|
-
};
|
|
76
|
-
const handleEdit = (index) => {
|
|
77
|
-
emit("edit", "edit", index);
|
|
78
|
-
};
|
|
79
|
-
const handleDelete = (index) => {
|
|
80
|
-
emit("delete", "delete", index);
|
|
81
|
-
};
|
|
82
|
-
const onSaveEdit = (index) => {
|
|
83
|
-
const content = editContents.value[index];
|
|
84
|
-
if (content.trim()) {
|
|
85
|
-
emit("save-edit", index, content);
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
const onCancelEdit = (index) => {
|
|
89
|
-
emit("cancel-edit", index);
|
|
90
|
-
};
|
|
91
|
-
const scrollToBottom = () => {
|
|
92
|
-
vue.nextTick(() => {
|
|
93
|
-
if (messageContainer.value) {
|
|
94
|
-
messageContainer.value.scrollTop = messageContainer.value.scrollHeight;
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
};
|
|
98
|
-
vue.onMounted(() => {
|
|
99
|
-
scrollToBottom();
|
|
100
|
-
});
|
|
101
|
-
vue.watch(
|
|
102
|
-
() => props.messages.length,
|
|
103
|
-
(newLength, oldLength) => {
|
|
104
|
-
if (newLength > oldLength) {
|
|
105
|
-
scrollToBottom();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
);
|
|
109
|
-
vue.watch(
|
|
110
|
-
() => props.messages,
|
|
111
|
-
(newMessages) => {
|
|
112
|
-
newMessages.forEach((msg, index) => {
|
|
113
|
-
if (msg.isEditing) {
|
|
114
|
-
editContents.value[index] = msg.content || "";
|
|
115
|
-
vue.nextTick(() => {
|
|
116
|
-
var _a;
|
|
117
|
-
if (editTextareaRefs.value[index]) {
|
|
118
|
-
(_a = editTextareaRefs.value[index]) == null ? void 0 : _a.focus();
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
},
|
|
124
|
-
{ deep: true }
|
|
125
|
-
);
|
|
126
|
-
return (_ctx, _cache) => {
|
|
127
|
-
return vue.openBlock(), vue.createElementBlock("div", {
|
|
128
|
-
ref_key: "messageContainer",
|
|
129
|
-
ref: messageContainer,
|
|
130
|
-
class: "message-list"
|
|
131
|
-
}, [
|
|
132
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(props.messages, (msg, index) => {
|
|
133
|
-
return vue.openBlock(), vue.createElementBlock("div", {
|
|
134
|
-
key: msg.id,
|
|
135
|
-
class: vue.normalizeClass(["message-item", `${msg.type}-message`])
|
|
136
|
-
}, [
|
|
137
|
-
msg.type === "ai" ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
138
|
-
key: 0,
|
|
139
|
-
class: "avatar-container"
|
|
140
|
-
}, [
|
|
141
|
-
vue.renderSlot(_ctx.$slots, "aiAvatar", {}, () => [
|
|
142
|
-
vue.unref(isAvatar) ? (vue.openBlock(), vue.createElementBlock("img", {
|
|
143
|
-
key: 0,
|
|
144
|
-
src: AI.default,
|
|
145
|
-
alt: "AI \u5934\u50CF",
|
|
146
|
-
class: "avatar"
|
|
147
|
-
})) : vue.createCommentVNode("", true)
|
|
148
|
-
])
|
|
149
|
-
])) : vue.createCommentVNode("", true),
|
|
150
|
-
vue.createElementVNode("div", {
|
|
151
|
-
class: vue.normalizeClass(["text-content-wrapper", { "is-editing": msg.isEditing }])
|
|
152
|
-
}, [
|
|
153
|
-
!msg.isEditing ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
154
|
-
key: 0,
|
|
155
|
-
class: "text-content"
|
|
156
|
-
}, [
|
|
157
|
-
msg.type === "ai" && msg.component ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(componentMap[msg.component]), {
|
|
158
|
-
key: 0,
|
|
159
|
-
data: msg.content,
|
|
160
|
-
onComplete: handleComplete
|
|
161
|
-
}, null, 40, ["data"])) : msg.type === "ai" && !msg.component ? (vue.openBlock(), vue.createBlock(letter_vue_vue_type_script_setup_true_lang.default, {
|
|
162
|
-
key: 1,
|
|
163
|
-
data: msg.content,
|
|
164
|
-
onComplete: handleComplete
|
|
165
|
-
}, null, 8, ["data"])) : (vue.openBlock(), vue.createElementBlock("div", { key: 2 }, vue.toDisplayString(msg.content), 1))
|
|
166
|
-
])) : (vue.openBlock(), vue.createElementBlock("div", {
|
|
167
|
-
key: 1,
|
|
168
|
-
class: "edit-input-container"
|
|
169
|
-
}, [
|
|
170
|
-
vue.withDirectives(vue.createElementVNode("textarea", {
|
|
171
|
-
ref_for: true,
|
|
172
|
-
ref: "editTextareaRefs[index]",
|
|
173
|
-
"onUpdate:modelValue": ($event) => editContents.value[index] = $event,
|
|
174
|
-
class: "edit-textarea",
|
|
175
|
-
placeholder: "\u8BF7\u8F93\u5165\u6D88\u606F\u5185\u5BB9..."
|
|
176
|
-
}, null, 8, ["onUpdate:modelValue"]), [
|
|
177
|
-
[vue.vModelText, editContents.value[index]]
|
|
178
|
-
]),
|
|
179
|
-
vue.createElementVNode("div", { class: "edit-controls" }, [
|
|
180
|
-
vue.createElementVNode("button", {
|
|
181
|
-
class: "btn cancel-btn",
|
|
182
|
-
onClick: ($event) => onCancelEdit(index)
|
|
183
|
-
}, "\u53D6\u6D88", 8, ["onClick"]),
|
|
184
|
-
vue.createElementVNode("button", {
|
|
185
|
-
class: "btn send-btn",
|
|
186
|
-
disabled: !editContents.value[index].trim(),
|
|
187
|
-
onClick: ($event) => onSaveEdit(index)
|
|
188
|
-
}, " \u53D1\u9001 ", 8, ["disabled", "onClick"])
|
|
189
|
-
])
|
|
190
|
-
])),
|
|
191
|
-
vue.createVNode(MessageActions_vue_vue_type_script_setup_true_lang.default, {
|
|
192
|
-
"message-type": msg.type,
|
|
193
|
-
index,
|
|
194
|
-
"show-copy": true,
|
|
195
|
-
"is-show-like": msg.type === "ai",
|
|
196
|
-
"is-liked": msg.isLiked || false,
|
|
197
|
-
"is-disliked": msg.isDisliked || false,
|
|
198
|
-
"is-editing": msg.isEditing || false,
|
|
199
|
-
onCopy: ($event) => handleCopy(index),
|
|
200
|
-
onRetry: ($event) => handleRetry(index),
|
|
201
|
-
onLike: ($event) => handleLike(index),
|
|
202
|
-
onDislike: ($event) => handleDislike(index),
|
|
203
|
-
onEdit: ($event) => handleEdit(index),
|
|
204
|
-
onDelete: ($event) => handleDelete(index)
|
|
205
|
-
}, null, 8, ["message-type", "index", "is-show-like", "is-liked", "is-disliked", "is-editing", "onCopy", "onRetry", "onLike", "onDislike", "onEdit", "onDelete"])
|
|
206
|
-
], 2),
|
|
207
|
-
msg.type === "user" ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
208
|
-
key: 1,
|
|
209
|
-
class: "avatar-container"
|
|
210
|
-
}, [
|
|
211
|
-
vue.renderSlot(_ctx.$slots, "userAvatar", {}, () => [
|
|
212
|
-
vue.unref(isAvatar) ? (vue.openBlock(), vue.createElementBlock("img", {
|
|
213
|
-
key: 0,
|
|
214
|
-
src: asir.default,
|
|
215
|
-
alt: "\u7528\u6237\u5934\u50CF",
|
|
216
|
-
class: "avatar"
|
|
217
|
-
})) : vue.createCommentVNode("", true)
|
|
218
|
-
])
|
|
219
|
-
])) : vue.createCommentVNode("", true)
|
|
220
|
-
], 2);
|
|
221
|
-
}), 128))
|
|
222
|
-
], 512);
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
exports.default = _sfc_main;
|
|
228
|
-
//# sourceMappingURL=Content.vue2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Content.vue2.js","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":["inject","ref","start","face","meterialPrepare","watch","nextTick","onMounted","_createElementBlock","_openBlock","_Fragment","_normalizeClass","_renderSlot","_unref","_imports_0","_createElementVNode","_createBlock","_resolveDynamicComponent","Letter","_toDisplayString","_vModelText","_createVNode","MessageActions","_imports_1"],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var Header_vue_vue_type_script_setup_true_lang = require('./Header.vue2.js');
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
exports.default = Header_vue_vue_type_script_setup_true_lang.default;
|
|
10
|
-
//# sourceMappingURL=Header.vue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Header.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var vue = require('vue');
|
|
6
|
-
var HistoryList_vue_vue_type_script_setup_true_lang = require('../AiChat/HistoryList.vue2.js');
|
|
7
|
-
|
|
8
|
-
var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
9
|
-
__name: "Header",
|
|
10
|
-
props: {
|
|
11
|
-
chatHistory: {
|
|
12
|
-
type: Array,
|
|
13
|
-
required: true
|
|
14
|
-
},
|
|
15
|
-
activeChat: {
|
|
16
|
-
type: String,
|
|
17
|
-
required: true
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
emits: ["close", "newChat", "history", "selectChat", "renameChat", "deleteChat"],
|
|
21
|
-
setup(__props, { emit: __emit }) {
|
|
22
|
-
const props = __props;
|
|
23
|
-
const state = vue.reactive({
|
|
24
|
-
currentRenameId: "",
|
|
25
|
-
currentTitle: ""
|
|
26
|
-
});
|
|
27
|
-
const emit = __emit;
|
|
28
|
-
const isHistoryOpen = vue.ref(false);
|
|
29
|
-
const historyDropdown = vue.ref(null);
|
|
30
|
-
const activeItemMenu = vue.ref(null);
|
|
31
|
-
const handleRenameChat = (id, newTitle) => {
|
|
32
|
-
const chat = props.chatHistory.find((item) => item.id === id);
|
|
33
|
-
if (chat) {
|
|
34
|
-
state.currentRenameId = id;
|
|
35
|
-
state.currentTitle = chat.title;
|
|
36
|
-
emit("renameChat", {
|
|
37
|
-
id,
|
|
38
|
-
newTitle: newTitle.trim()
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
const handleDeleteChat = (id) => {
|
|
43
|
-
emit("deleteChat", id);
|
|
44
|
-
};
|
|
45
|
-
const toggleHistoryDropdown = () => {
|
|
46
|
-
isHistoryOpen.value = !isHistoryOpen.value;
|
|
47
|
-
emit("history", isHistoryOpen.value);
|
|
48
|
-
};
|
|
49
|
-
const selectChat = (chatId) => {
|
|
50
|
-
emit("selectChat", chatId);
|
|
51
|
-
closeHistoryDropdown();
|
|
52
|
-
};
|
|
53
|
-
const closeHistoryDropdown = () => {
|
|
54
|
-
isHistoryOpen.value = false;
|
|
55
|
-
activeItemMenu.value = null;
|
|
56
|
-
};
|
|
57
|
-
const handleClose = () => {
|
|
58
|
-
emit("close");
|
|
59
|
-
};
|
|
60
|
-
const handleNewChat = () => {
|
|
61
|
-
emit("newChat");
|
|
62
|
-
closeHistoryDropdown();
|
|
63
|
-
};
|
|
64
|
-
const handleDocumentClick = (event) => {
|
|
65
|
-
if (historyDropdown.value && !historyDropdown.value.contains(event.target)) {
|
|
66
|
-
closeHistoryDropdown();
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
vue.onMounted(() => {
|
|
70
|
-
document.addEventListener("click", handleDocumentClick);
|
|
71
|
-
});
|
|
72
|
-
vue.onBeforeUnmount(() => {
|
|
73
|
-
document.removeEventListener("click", handleDocumentClick);
|
|
74
|
-
});
|
|
75
|
-
return (_ctx, _cache) => {
|
|
76
|
-
return vue.openBlock(), vue.createElementBlock("div", { class: "header-container" }, [
|
|
77
|
-
vue.createElementVNode("div", { class: "chat-header" }, [
|
|
78
|
-
vue.createElementVNode("div", {
|
|
79
|
-
class: "close-btn",
|
|
80
|
-
onClick: handleClose
|
|
81
|
-
}, [
|
|
82
|
-
(vue.openBlock(), vue.createElementBlock("svg", {
|
|
83
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
84
|
-
width: "16",
|
|
85
|
-
height: "16",
|
|
86
|
-
viewBox: "0 0 16 16",
|
|
87
|
-
fill: "none"
|
|
88
|
-
}, [
|
|
89
|
-
vue.createElementVNode("path", {
|
|
90
|
-
"fill-rule": "evenodd",
|
|
91
|
-
"clip-rule": "evenodd",
|
|
92
|
-
d: "M3.375 3.178L15.579 15.382L14.625 16.336L2.421 4.132L3.375 3.178Z",
|
|
93
|
-
fill: "#1D2129"
|
|
94
|
-
}),
|
|
95
|
-
vue.createElementVNode("path", {
|
|
96
|
-
"fill-rule": "evenodd",
|
|
97
|
-
"clip-rule": "evenodd",
|
|
98
|
-
d: "M15.579 4.132L3.375 16.336L2.421 15.382L14.625 3.178L15.579 4.132Z",
|
|
99
|
-
fill: "#1D2129"
|
|
100
|
-
})
|
|
101
|
-
]))
|
|
102
|
-
]),
|
|
103
|
-
vue.createElementVNode("div", { class: "header-title" }, "AI \u5BF9\u8BDD"),
|
|
104
|
-
vue.createElementVNode("div", { class: "header-actions" }, [
|
|
105
|
-
vue.createElementVNode("div", {
|
|
106
|
-
class: "action-icon new-chat",
|
|
107
|
-
onClick: handleNewChat
|
|
108
|
-
}, [
|
|
109
|
-
(vue.openBlock(), vue.createElementBlock("svg", {
|
|
110
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
111
|
-
width: "14",
|
|
112
|
-
height: "14",
|
|
113
|
-
viewBox: "0 0 14 14",
|
|
114
|
-
fill: "none"
|
|
115
|
-
}, [
|
|
116
|
-
vue.createElementVNode("path", {
|
|
117
|
-
d: "M6.16668 13.5089H7.83334V7.67554H13.6667V6.00887H7.83334V0.175537H6.16668V6.00887H0.333344V7.67554H6.16668V13.5089Z",
|
|
118
|
-
fill: "#1D2129"
|
|
119
|
-
})
|
|
120
|
-
]))
|
|
121
|
-
]),
|
|
122
|
-
vue.createElementVNode("div", {
|
|
123
|
-
class: "action-icon history",
|
|
124
|
-
onClick: vue.withModifiers(toggleHistoryDropdown, ["stop"])
|
|
125
|
-
}, [
|
|
126
|
-
(vue.openBlock(), vue.createElementBlock("svg", {
|
|
127
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
128
|
-
width: "20",
|
|
129
|
-
height: "21",
|
|
130
|
-
viewBox: "0 0 20 21",
|
|
131
|
-
fill: "none"
|
|
132
|
-
}, [
|
|
133
|
-
vue.createElementVNode("path", {
|
|
134
|
-
"fill-rule": "evenodd",
|
|
135
|
-
"clip-rule": "evenodd",
|
|
136
|
-
d: "M10 3.95312C6.1954 3.95312 3.11113 7.03739 3.11113 10.842V17.7309H10C13.8047 17.7309 16.8889 14.6466 16.8889 10.842C16.8889 7.03738 13.8047 3.95312 10 3.95312ZM2.36113 18.4809L1.61113 18.4808V10.842C1.61113 6.20895 5.36698 2.45312 10 2.45312C14.6331 2.45312 18.3889 6.20896 18.3889 10.842C18.3889 15.4751 14.6331 19.2309 10 19.2309H2.36168L2.36113 18.4809ZM2.36113 18.4809L2.36168 19.2309C1.94747 19.2309 1.61113 18.8951 1.61113 18.4808L2.36113 18.4809Z",
|
|
137
|
-
fill: "#1D2129"
|
|
138
|
-
}),
|
|
139
|
-
vue.createElementVNode("path", {
|
|
140
|
-
"fill-rule": "evenodd",
|
|
141
|
-
"clip-rule": "evenodd",
|
|
142
|
-
d: "M5.43055 7.80035H13.8056V9.30035H5.43055V7.80035Z",
|
|
143
|
-
fill: "#1D2129"
|
|
144
|
-
}),
|
|
145
|
-
vue.createElementVNode("path", {
|
|
146
|
-
"fill-rule": "evenodd",
|
|
147
|
-
"clip-rule": "evenodd",
|
|
148
|
-
d: "M5.43055 10.8559H13.8056V12.3559H5.43055V10.8559Z",
|
|
149
|
-
fill: "#1D2129"
|
|
150
|
-
}),
|
|
151
|
-
vue.createElementVNode("path", {
|
|
152
|
-
"fill-rule": "evenodd",
|
|
153
|
-
"clip-rule": "evenodd",
|
|
154
|
-
d: "M5.43055 13.9115H10.75V15.4115H5.43055V13.9115Z",
|
|
155
|
-
fill: "#1D2129"
|
|
156
|
-
})
|
|
157
|
-
]))
|
|
158
|
-
])
|
|
159
|
-
])
|
|
160
|
-
]),
|
|
161
|
-
isHistoryOpen.value ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
162
|
-
key: 0,
|
|
163
|
-
ref_key: "historyDropdown",
|
|
164
|
-
ref: historyDropdown,
|
|
165
|
-
class: "history-dropdown"
|
|
166
|
-
}, [
|
|
167
|
-
vue.createElementVNode("div", null, [
|
|
168
|
-
props.chatHistory.length === 0 ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
169
|
-
key: 0,
|
|
170
|
-
class: "no-history"
|
|
171
|
-
}, [
|
|
172
|
-
vue.createElementVNode("p", null, "\u6682\u65E0\u5386\u53F2\u8BB0\u5F55")
|
|
173
|
-
])) : (vue.openBlock(), vue.createElementBlock("div", { key: 1 }, [
|
|
174
|
-
vue.createElementVNode("div", { class: "history-group" }, [
|
|
175
|
-
vue.createVNode(HistoryList_vue_vue_type_script_setup_true_lang.default, {
|
|
176
|
-
"active-chat": props.activeChat,
|
|
177
|
-
"chat-history": props.chatHistory,
|
|
178
|
-
onSelectChat: selectChat,
|
|
179
|
-
onRenameChat: handleRenameChat,
|
|
180
|
-
onDeleteChat: handleDeleteChat
|
|
181
|
-
}, null, 8, ["active-chat", "chat-history"])
|
|
182
|
-
])
|
|
183
|
-
]))
|
|
184
|
-
])
|
|
185
|
-
], 512)) : vue.createCommentVNode("", true)
|
|
186
|
-
]);
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
exports.default = _sfc_main;
|
|
192
|
-
//# sourceMappingURL=Header.vue2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Header.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiRobot/Header.vue"],"sourcesContent":["<template>\n <div class=\"header-container\">\n <div class=\"chat-header\">\n <div class=\"close-btn\" @click=\"handleClose\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M3.375 3.178L15.579 15.382L14.625 16.336L2.421 4.132L3.375 3.178Z\"\n fill=\"#1D2129\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15.579 4.132L3.375 16.336L2.421 15.382L14.625 3.178L15.579 4.132Z\"\n fill=\"#1D2129\"\n />\n </svg>\n </div>\n <div class=\"header-title\">AI 对话</div>\n <div class=\"header-actions\">\n <div class=\"action-icon new-chat\" @click=\"handleNewChat\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M6.16668 13.5089H7.83334V7.67554H13.6667V6.00887H7.83334V0.175537H6.16668V6.00887H0.333344V7.67554H6.16668V13.5089Z\"\n fill=\"#1D2129\"\n />\n </svg>\n </div>\n <div class=\"action-icon history\" @click.stop=\"toggleHistoryDropdown\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"21\"\n viewBox=\"0 0 20 21\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10 3.95312C6.1954 3.95312 3.11113 7.03739 3.11113 10.842V17.7309H10C13.8047 17.7309 16.8889 14.6466 16.8889 10.842C16.8889 7.03738 13.8047 3.95312 10 3.95312ZM2.36113 18.4809L1.61113 18.4808V10.842C1.61113 6.20895 5.36698 2.45312 10 2.45312C14.6331 2.45312 18.3889 6.20896 18.3889 10.842C18.3889 15.4751 14.6331 19.2309 10 19.2309H2.36168L2.36113 18.4809ZM2.36113 18.4809L2.36168 19.2309C1.94747 19.2309 1.61113 18.8951 1.61113 18.4808L2.36113 18.4809Z\"\n fill=\"#1D2129\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M5.43055 7.80035H13.8056V9.30035H5.43055V7.80035Z\"\n fill=\"#1D2129\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M5.43055 10.8559H13.8056V12.3559H5.43055V10.8559Z\"\n fill=\"#1D2129\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M5.43055 13.9115H10.75V15.4115H5.43055V13.9115Z\"\n fill=\"#1D2129\"\n />\n </svg>\n </div>\n </div>\n </div>\n\n <!-- 历史记录悬浮窗 -->\n <div v-if=\"isHistoryOpen\" ref=\"historyDropdown\" class=\"history-dropdown\">\n <!-- class=\"history-list\" -->\n <div>\n <div v-if=\"props.chatHistory.length === 0\" class=\"no-history\">\n <p>暂无历史记录</p>\n </div>\n <div v-else>\n <div class=\"history-group\">\n <!-- <div class=\"group-header\">\n\t\t\t\t\t\t\t<span>最近对话</span>\n\t\t\t\t\t\t</div> -->\n <HistoryList\n :active-chat=\"props.activeChat\"\n :chat-history=\"props.chatHistory\"\n @select-chat=\"selectChat\"\n @rename-chat=\"handleRenameChat\"\n @delete-chat=\"handleDeleteChat\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, reactive, defineEmits, onMounted, onBeforeUnmount, PropType } from 'vue';\nimport HistoryList from '../AiChat/HistoryList.vue';\n\n// 定义与 HistoryList.vue 中匹配的类型\ninterface ChatMessage {\n chatId?: string;\n user: string;\n type: string;\n content: string;\n isShowAvatar?: boolean;\n avatar?: string;\n isChating?: boolean;\n thinkContent?: string;\n reasoningContent?: string;\n}\n\ninterface HistoryItem {\n id: string;\n title: string;\n time: Date;\n messages: ChatMessage[];\n}\n\nconst props = defineProps({\n chatHistory: {\n type: Array as PropType<HistoryItem[]>,\n required: true,\n },\n activeChat: {\n type: String,\n required: true,\n },\n});\n\n// 添加重命名相关状态\nconst state = reactive<{\n currentRenameId: string;\n currentTitle: string;\n}>({\n currentRenameId: '',\n currentTitle: '',\n});\n\nconst emit = defineEmits<{\n (e: 'close'): void;\n (e: 'newChat'): void;\n (e: 'history', isOpen: boolean): void;\n (e: 'selectChat', id: string): void;\n (e: 'renameChat', data: { id: string; newTitle: string }): void;\n (e: 'deleteChat', id: string): void;\n}>();\n\nconst isHistoryOpen = ref(false);\nconst historyDropdown = ref<HTMLElement | null>(null);\nconst activeItemMenu = ref<string | null>(null);\n\n// 处理重命名对话\nconst handleRenameChat = (id: string, newTitle: string) => {\n // 查找当前对话\n const chat = props.chatHistory.find(item => item.id === id);\n if (chat) {\n state.currentRenameId = id;\n state.currentTitle = chat.title;\n emit('renameChat', {\n id: id,\n newTitle: newTitle.trim(),\n });\n }\n};\n\n// 处理删除对话\nconst handleDeleteChat = (id: string) => {\n // 添加确认对话框\n emit('deleteChat', id);\n};\n\n// 点击历史记录按钮切换悬浮窗显示/隐藏\nconst toggleHistoryDropdown = () => {\n isHistoryOpen.value = !isHistoryOpen.value;\n emit('history', isHistoryOpen.value); // 触发 history 事件,传递当前状态\n};\n\nconst selectChat = (chatId: string) => {\n emit('selectChat', chatId);\n closeHistoryDropdown();\n};\n\n// 关闭悬浮窗\nconst closeHistoryDropdown = () => {\n isHistoryOpen.value = false;\n activeItemMenu.value = null;\n};\n\n// 处理关闭按钮点击\nconst handleClose = () => {\n emit('close');\n};\n\n// 处理新对话按钮点击\nconst handleNewChat = () => {\n emit('newChat');\n closeHistoryDropdown();\n};\n\n// 点击文档其他地方关闭悬浮窗\nconst handleDocumentClick = (event: MouseEvent) => {\n if (historyDropdown.value && !historyDropdown.value.contains(event.target as Node)) {\n closeHistoryDropdown();\n }\n};\n\n// 挂载时添加事件监听\nonMounted(() => {\n document.addEventListener('click', handleDocumentClick);\n});\n\n// 卸载时移除事件监听\nonBeforeUnmount(() => {\n document.removeEventListener('click', handleDocumentClick);\n});\n</script>\n\n<!-- <style lang=\"less\" scoped>\n@import './style/Header.less';\n</style> -->\n"],"names":["reactive","ref","onMounted","onBeforeUnmount","_createElementBlock","_createElementVNode","_createVNode","HistoryList"],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var Input_vue_vue_type_script_setup_true_lang = require('./Input.vue2.js');
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
exports.default = Input_vue_vue_type_script_setup_true_lang.default;
|
|
10
|
-
//# sourceMappingURL=Input.vue.js.map
|