@touchvue/chat 1.0.0-beta.49 → 1.0.0-beta.50

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.
Files changed (118) hide show
  1. package/README.md +70 -70
  2. package/es/package.json.css +1 -1
  3. package/es/package.json.mjs +1 -1
  4. package/es/packages/components/resolver.mjs.map +1 -1
  5. package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue2.mjs.map +1 -1
  6. package/es/packages/components/touchchat/component/AiRobot/letter.vue.mjs +1 -1
  7. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs +8 -8
  8. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -1
  9. package/es/packages/components/touchchat/component/FileContent.vue2.mjs +3 -3
  10. package/es/packages/components/touchchat/component/FileContent.vue2.mjs.map +1 -1
  11. package/es/packages/components/touchchat/component/FileView.vue2.mjs +2 -2
  12. package/es/packages/components/touchchat/component/FileView.vue2.mjs.map +1 -1
  13. package/es/packages/components/touchchat/component/HelloChat.vue2.mjs.map +1 -1
  14. package/es/packages/components/touchchat/component/ImageFile.vue2.mjs +6 -6
  15. package/es/packages/components/touchchat/component/ImageFile.vue2.mjs.map +1 -1
  16. package/es/packages/components/touchchat/component/ImageView.vue2.mjs +1 -1
  17. package/es/packages/components/touchchat/component/ImageView.vue2.mjs.map +1 -1
  18. package/es/packages/components/touchchat/component/LinkView.vue2.mjs +4 -4
  19. package/es/packages/components/touchchat/component/LinkView.vue2.mjs.map +1 -1
  20. package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs +1 -1
  21. package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs.map +1 -1
  22. package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs +2 -2
  23. package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs.map +1 -1
  24. package/es/packages/components/touchchat/component/PDFFile.vue2.mjs +10 -10
  25. package/es/packages/components/touchchat/component/PDFFile.vue2.mjs.map +1 -1
  26. package/es/packages/components/touchchat/component/QuoteContent.vue2.mjs.map +1 -1
  27. package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs +1 -1
  28. package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs.map +1 -1
  29. package/es/packages/components/touchchat/component/UploadView.vue2.mjs.map +1 -1
  30. package/es/packages/components/touchchat/component/VideoFile.vue.mjs +1 -1
  31. package/es/packages/components/touchchat/component/VideoFile.vue2.mjs.map +1 -1
  32. package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs +1 -1
  33. package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs.map +1 -1
  34. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +30 -30
  35. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
  36. package/es/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.mjs.map +1 -1
  37. package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs.map +1 -1
  38. package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs.map +1 -1
  39. package/es/packages/components/touchchat/src/AiChat/Chat/useCopy.mjs.map +1 -1
  40. package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs.map +1 -1
  41. package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs +1 -4
  42. package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs.map +1 -1
  43. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +5 -5
  44. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
  45. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs +1 -1
  46. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
  47. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs +3 -3
  48. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
  49. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs +11 -11
  50. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs.map +1 -1
  51. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs +3 -3
  52. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs.map +1 -1
  53. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
  54. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
  55. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +16 -16
  56. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
  57. package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
  58. package/es/packages/components/touchchat/utils/a2aService.mjs.map +1 -1
  59. package/es/packages/components/touchchat/utils/fetchStream.mjs.map +1 -1
  60. package/lib/package.json.css +1 -1
  61. package/lib/package.json.js +1 -1
  62. package/lib/packages/components/resolver.js.map +1 -1
  63. package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue2.js.map +1 -1
  64. package/lib/packages/components/touchchat/component/AiRobot/letter.vue.js +1 -1
  65. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js +8 -8
  66. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -1
  67. package/lib/packages/components/touchchat/component/FileContent.vue2.js +3 -3
  68. package/lib/packages/components/touchchat/component/FileContent.vue2.js.map +1 -1
  69. package/lib/packages/components/touchchat/component/FileView.vue2.js +2 -2
  70. package/lib/packages/components/touchchat/component/FileView.vue2.js.map +1 -1
  71. package/lib/packages/components/touchchat/component/HelloChat.vue2.js.map +1 -1
  72. package/lib/packages/components/touchchat/component/ImageFile.vue2.js +6 -6
  73. package/lib/packages/components/touchchat/component/ImageFile.vue2.js.map +1 -1
  74. package/lib/packages/components/touchchat/component/ImageView.vue2.js +1 -1
  75. package/lib/packages/components/touchchat/component/ImageView.vue2.js.map +1 -1
  76. package/lib/packages/components/touchchat/component/LinkView.vue2.js +4 -4
  77. package/lib/packages/components/touchchat/component/LinkView.vue2.js.map +1 -1
  78. package/lib/packages/components/touchchat/component/MarkLayer.vue2.js +1 -1
  79. package/lib/packages/components/touchchat/component/MarkLayer.vue2.js.map +1 -1
  80. package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js +2 -2
  81. package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js.map +1 -1
  82. package/lib/packages/components/touchchat/component/PDFFile.vue2.js +10 -10
  83. package/lib/packages/components/touchchat/component/PDFFile.vue2.js.map +1 -1
  84. package/lib/packages/components/touchchat/component/QuoteContent.vue2.js.map +1 -1
  85. package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js +1 -1
  86. package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js.map +1 -1
  87. package/lib/packages/components/touchchat/component/UploadView.vue2.js.map +1 -1
  88. package/lib/packages/components/touchchat/component/VideoFile.vue.js +1 -1
  89. package/lib/packages/components/touchchat/component/VideoFile.vue2.js.map +1 -1
  90. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js +1 -1
  91. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js.map +1 -1
  92. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +30 -30
  93. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
  94. package/lib/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.js.map +1 -1
  95. package/lib/packages/components/touchchat/src/AiChat/Chat/types.js.map +1 -1
  96. package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js.map +1 -1
  97. package/lib/packages/components/touchchat/src/AiChat/Chat/useCopy.js.map +1 -1
  98. package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js.map +1 -1
  99. package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js +1 -4
  100. package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js.map +1 -1
  101. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +5 -5
  102. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
  103. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js +1 -1
  104. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
  105. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js +3 -3
  106. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
  107. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js +11 -11
  108. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js.map +1 -1
  109. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js +3 -3
  110. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js.map +1 -1
  111. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
  112. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
  113. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +16 -16
  114. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
  115. package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
  116. package/lib/packages/components/touchchat/utils/a2aService.js.map +1 -1
  117. package/lib/packages/components/touchchat/utils/fetchStream.js.map +1 -1
  118. package/package.json +83 -83
@@ -1 +1 @@
1
- {"version":3,"file":"ChatInput.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/ChatInput.vue"],"sourcesContent":["<template>\n\t<div class=\"touchchat-edit\">\n\t\t<slot name=\"editTop\"></slot>\n\t\t<!-- :file-progress=\"fileProgress\" -->\n\t\t<FileContent v-if=\"fileList.length > 0\" :file-list=\"fileList\" :has-colse=\"true\" type=\"ChatInput\" @colse=\"handleColse\" />\n\t\t<QuoteContent v-if=\"quoteObj && (quoteObj.content || quoteObj.msgList)\" :quote-obj=\"quoteObj\" @close=\"close\" />\n\t\t<div class=\"touchchat-edit-input\">\n\t\t\t<!-- @keydown.enter.prevent -->\n\t\t\t<textarea :value=\"inputValue\" :placeholder=\"placeholder ?? '请输入...'\" @paste=\"handlePaste\" @input=\"handleInputChange\" @keydown.enter=\"handleSend\"> </textarea>\n\t\t</div>\n\n\t\t<!-- 按钮与开关容器 -->\n\t\t<div :class=\"thinkAble ? 'touchchat-edit-submit is-thinkable' : 'touchchat-edit-submit'\">\n\t\t\t<div class=\"touchchat-edit-submit-left\">\n\t\t\t\t<!-- 附件 @click=\"showMarkLaryer = true\" @progress-fn=\"progressFn\" -->\n\t\t\t\t<upload-view v-if=\"uploadAble\" ref=\"uploadViewRef\" :file-list=\"fileList\" @upload-file=\"uploadFile\">\n\t\t\t\t\t<button v-if=\"uploadAble\" class=\"touchchat-edit-attach touchchat-edit-button\" :class=\"{ 'is-dis': isChating }\">\n\t\t\t\t\t\t<div class=\"touchchat-edit-attach-icon\"></div>\n\t\t\t\t\t\t<div class=\"touchchat-edit-tooltip align-left\">\n\t\t\t\t\t\t\t<p>文件数量:最多10个</p>\n\t\t\t\t\t\t\t<p>文件类型:{{ allowedTypes.join('、') || 'pdf,txt,csv,docx,xlsx,xls,pptx,ppt,md,mobi,epub,png,jpeg,jpg' }}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</button>\n\t\t\t\t</upload-view>\n\n\t\t\t\t<button v-if=\"clearAble\" class=\"touchchat-edit-delete touchchat-edit-button\" @click=\"handleClearClick\">\n\t\t\t\t\t<div class=\"touchchat-edit-delete-icon\"></div>\n\t\t\t\t\t<div class=\"touchchat-edit-tooltip\">清空文本</div>\n\t\t\t\t</button>\n\t\t\t\t<!-- {{ finallyModules.length }} -->\n\t\t\t\t<ModuleSelect v-if=\"finallyModules.length > 1\" v-model=\"selectVal\" :modules=\"finallyModules\" />\n\n\t\t\t\t<!-- 深度思考开关 - 修改为按钮样式 -->\n\t\t\t\t<button v-if=\"thinkAble\" class=\"touchchat-edit-think\" :class=\"{ 'is-on': enableDeepThinking, 'is-dis': isChating }\" @click=\"handleDeepThinkingClick\">\n\t\t\t\t\t<div class=\"touchchat-edit-think-icon\"></div>\n\t\t\t\t\t<div class=\"touchchat-edit-think-text\">深度思考</div>\n\t\t\t\t</button>\n\t\t\t\t<slot name=\"editSubmitLeft\"></slot>\n\t\t\t</div>\n\t\t\t<div class=\"touchchat-edit-submit-right\">\n\t\t\t\t<!-- 截图 -->\n\t\t\t\t<screenshot v-if=\"screenAble\" @up-file-list=\"upFileList\"></screenshot>\n\t\t\t\t<!-- 实时语音 -->\n\t\t\t\t<realtime-voice v-if=\"realtimeVoiceAble\" @start-realtime-voice=\"startRealtimeVoice\" @transcription=\"transcription\"></realtime-voice>\n\t\t\t\t<!-- 语音 -->\n\t\t\t\t<voice v-if=\"voiceAble\" ref=\"voiceRef\" @up-file-list=\"upFileList\"></voice>\n\t\t\t\t<slot name=\"editFn\"></slot>\n\t\t\t\t<slot name=\"editSubmitRight\"></slot>\n\t\t\t\t<!-- 发送按钮 -->\n\t\t\t\t<button v-if=\"!isChating\" class=\"touchchat-edit-send\" :disabled=\"!inputValue.trim() && !fileList.length\" @click=\"handleSend\">\n\t\t\t\t\t<div class=\"touchchat-edit-send-icon\"></div>\n\t\t\t\t</button>\n\n\t\t\t\t<!-- 停止按钮 -->\n\t\t\t\t<button v-else class=\"touchchat-edit-stop\" @click=\"handleStop\">\n\t\t\t\t\t<div class=\"touchchat-edit-stop-icon\"></div>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t\t<MarkLayer :show-mark-laryer=\"showMarkLaryer\" @colse-mark-layer=\"showMarkLaryer = false\" />\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\n// todo 要实现默认选中第一个模块\nimport { ref, inject, provide, nextTick, computed, watch, onMounted } from 'vue'\nimport MarkLayer from '../../component/MarkLayer.vue'\nimport FileContent from '../../component/FileContent.vue'\nimport QuoteContent from '../../component/QuoteContent.vue'\nimport UploadView from '../../component/UploadView.vue'\nimport Screenshot from '../../component/Screenshot.vue'\nimport Voice from '../../component/VoiceView.vue'\nimport RealtimeVoice from '../../component/RealtimeVoice.vue'\nimport ModuleSelect from '../../component/ModuleSelect.vue'\nimport { showToast } from '../../utils/tools'\nimport type { ChatMsgList, FileItem } from './Chat/types'\n\n// 定义 body 返回值的类型\ninterface BodyConfig {\n\tmodel: string\n\tmessages: Array<{\n\t\trole: string\n\t\tcontent: string\n\t}>\n\tstream: boolean\n}\n\n// 定义 respoKey 返回值的类型\ninterface RespoKeyConfig {\n\tcategory: string\n\tcontentCategory: string\n\tcontent: string\n\tall: string\n\tallCategory: string\n}\n\ninterface ModuleItem {\n\tname: string\n\tconfig: {\n\t\taction: string\n\t\theaders: () => object\n\t\tbody: () => BodyConfig // 修改为具体类型\n\t\trespoKey: () => RespoKeyConfig // 修改为具体类型\n\t}\n}\n\nconst props = defineProps<{\n\tinputValue: string\n\tisChating: boolean\n\tenableDeepThinking?: boolean\n}>()\n\nconst placeholder = inject('placeholder', '请输入...')\nconst layout = inject<string>('layout', 'side, think, upload, chain, screen,realtime')\nconst modules = inject<(string | ModuleItem)[]>('modules', [])\nconst iModules = ref(modules)\nwatch(\n\t() => modules,\n\tnewVal => {\n\t\tiModules.value = newVal\n\t\tconsole.log('modules === ChatInput.vue === 128', newVal)\n\t}\n\t// { immediate: true }\n)\n\nconst allowedTypes = inject<string[]>('allowedTypes', [])\n\nprovide('uploadFile', (index: number, type?: string) => {\n\tif (uploadViewRef.value) {\n\t\tuploadViewRef.value.uploadFile(index, type)\n\t}\n})\nconst thinkAble = layout.includes('think')\nconst clearAble = layout.includes('clear')\nconst uploadAble = layout.includes('upload')\nconst screenAble = layout.includes('screen')\nconst voiceAble = layout.includes('voice')\nconst realtimeVoiceAble = layout.includes('realtime')\nconst showMarkLaryer = ref<boolean>(false)\nconst fileList = ref<FileItem[]>([])\n// const fileData = ref<FileItem[]>([])\nconst optionalModules = ref<ModuleItem[]>([\n\t{\n\t\tname: 'deepseek-v3',\n\t\tconfig: {\n\t\t\taction: 'https://api.apiyi.com/v1/chat/completions',\n\t\t\theaders: () => ({\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: 'Bearer sk-fe9MtODvds8wpzz05f3417Fe3e9641C1926e6fC588425dEd'\n\t\t\t}),\n\t\t\tbody: () => ({\n\t\t\t\tmodel: 'deepseek-v3',\n\t\t\t\tmessages: [\n\t\t\t\t\t{\n\t\t\t\t\t\trole: 'user',\n\t\t\t\t\t\t// content: props.inputValue // 使用传入的用户内容参数\n\t\t\t\t\t\tcontent: ''\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tstream: true\n\t\t\t}),\n\t\t\trespoKey: () => ({\n\t\t\t\tcategory: 'category',\n\t\t\t\tcontentCategory: 'task_stream_content',\n\t\t\t\tcontent: 'content',\n\t\t\t\tall: 'message',\n\t\t\t\tallCategory: 'answer'\n\t\t\t})\n\t\t}\n\t}\n])\nconst uploadViewRef = ref<InstanceType<typeof UploadView>>()\nconst selectVal = ref('')\nconst selectInfo = ref<ModuleItem>({} as ModuleItem)\nconst voiceRef = ref<InstanceType<typeof Voice>>()\n// const scripts = inject<any[]>('scripts', [])\n\nconst modelChange = inject<(item: ModuleItem, index: number) => void>('modelChange', () => {\n\tconsole.warn('未提供modelChange函数')\n})\n\nconst emits = defineEmits<{\n\t(e: 'send', val: string, list: FileItem[]): void\n\t(e: 'stop'): void\n\t(e: 'update:enableDeepThinking', value: boolean): void\n\t(e: 'update:inputValue', value: string): void // 添加inputValue更新事件\n\t(e: 'moduleInfo', info: ModuleItem): void\n}>()\n\nwatch(\n\t() => selectVal.value,\n\t() => {\n\t\tconsole.log('selectVal.value === ChatInput.vue === 198', selectVal.value)\n\t\tif (finallyModules.value.length > 0) {\n\t\t\tselectInfo.value = finallyModules.value.find((item: any) => item.name === selectVal.value)\n\t\t\tif (selectInfo.value) {\n\t\t\t\temits('moduleInfo', selectInfo.value)\n\t\t\t\tmodelChange(selectInfo.value, finallyModules.value.indexOf(selectInfo.value))\n\t\t\t}\n\t\t}\n\t},\n\t{ deep: true }\n)\n\nwatch(\n\t() => props.enableDeepThinking,\n\t() => {\n\t\tupdateSelectInfo()\n\t},\n\t{ deep: true }\n)\n\nwatch(\n\t() => props.inputValue,\n\t() => {\n\t\tupdateSelectInfo()\n\t},\n\t{ deep: true }\n)\n\nconst finallyModules = computed(() => {\n\t// console.log('modules === ChatInput.vue === 226', modules, iModules.value)\n\tif (!iModules.value.length) {\n\t\treturn optionalModules.value\n\t}\n\treturn iModules.value.flatMap((module: any) => {\n\t\tif (typeof module === 'string') {\n\t\t\t// 若 module 是字符串,在 optionalModules 中查找 name 匹配的项\n\t\t\tconst matchedModule = optionalModules.value.find((optModule: any) => optModule.name === module)\n\t\t\tif (matchedModule) {\n\t\t\t\t// 对匹配到的模块也更新 content 值\n\t\t\t\tconst updatedModule = { ...matchedModule }\n\t\t\t\tconst body = updatedModule.config.body()\n\t\t\t\tif (thinkAble) {\n\t\t\t\t\tbody.model = props.enableDeepThinking ? 'deepseek-reasoner' : 'deepseek-v3'\n\t\t\t\t}\n\t\t\t\tupdatedModule.config.body = () => body\n\t\t\t\treturn [updatedModule]\n\t\t\t}\n\t\t\treturn []\n\t\t} else {\n\t\t\tconst body = module.config.body()\n\t\t\tif (thinkAble) {\n\t\t\t\tbody.model = props.enableDeepThinking ? 'deepseek-reasoner' : 'deepseek-v3'\n\t\t\t}\n\t\t\t// 重新定义 body 方法,返回更新后的 body\n\t\t\tmodule.config.body = () => body\n\t\t\treturn [module]\n\t\t}\n\t})\n})\n\nconst updateSelectInfo = () => {\n\tif (!selectInfo.value.name) {\n\t\tselectInfo.value = finallyModules.value[0]\n\t\tselectVal.value = selectInfo.value.name\n\t}\n\tconst body = (selectInfo.value as ModuleItem).config.body()\n\tif (body.messages && body.messages.length > 0 && body.messages[0].content) {\n\t\tbody.messages[0].content = props.inputValue\n\t} else {\n\t\tbody.messages = [{ role: 'user', content: props.inputValue }]\n\t}\n\t;(selectInfo.value as ModuleItem).config.body = () => body\n\tif (finallyModules.value.length > 0 && selectInfo.value) {\n\t\tconst body = selectInfo.value.config.body()\n\t\tif (thinkAble && body.model) {\n\t\t\tbody.model = props.enableDeepThinking ? 'deepseek-reasoner' : 'deepseek-v3'\n\t\t}\n\t\tselectInfo.value.config.body = () => body\n\t}\n}\n\nconst upFileList = (list: FileItem[]) => {\n\tfileList.value.push(...list)\n\tnextTick(() => {\n\t\tif (uploadViewRef.value) {\n\t\t\t// 只对最新复制的图片进行加载\n\t\t\tuploadViewRef.value.uploadFile(fileList.value.length - 1)\n\t\t}\n\t})\n}\n\nconst handlePaste = (event: any, type?: string) => {\n\t// event.preventDefault();\n\tif (event.clipboardData) {\n\t\tconst clipboardData = event.clipboardData || window.Clipboard\n\t\tconst items = clipboardData.items\n\n\t\tlet isImage = false\n\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\tif (items[i].type.indexOf('image/') !== -1) {\n\t\t\t\tisImage = true\n\t\t\t\t// 获取图片文件\n\t\t\t\tconst blob = items[i].getAsFile()\n\t\t\t\tif (blob) {\n\t\t\t\t\tconst reader = new FileReader()\n\t\t\t\t\treader.onload = e => {\n\t\t\t\t\t\tconst base64 = e.target?.result as string\n\t\t\t\t\t\t// 生成图片属性对象\n\t\t\t\t\t\tconst imageInfo: FileItem = {\n\t\t\t\t\t\t\tfile: blob,\n\t\t\t\t\t\t\tisUploading: false,\n\t\t\t\t\t\t\tuploadProgress: 0,\n\t\t\t\t\t\t\tuploadSuccess: false,\n\t\t\t\t\t\t\tuploadError: false,\n\t\t\t\t\t\t\tfileSize: blob.size,\n\t\t\t\t\t\t\tfileType: blob.type,\n\t\t\t\t\t\t\tname: `pasted_image_${Date.now()}`,\n\t\t\t\t\t\t\tid: Date.now().toString(),\n\t\t\t\t\t\t\tbase64,\n\t\t\t\t\t\t\tlastModified: Date.now()\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfileList.value.push(imageInfo)\n\t\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\t\tif (uploadViewRef.value) {\n\t\t\t\t\t\t\t\t// 只对最新复制的图片进行加载\n\t\t\t\t\t\t\t\tuploadViewRef.value.uploadFile(fileList.value.length - 1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treader.readAsDataURL(blob)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif (isImage) {\n\t\t\tconsole.log('检测到粘贴的是图片')\n\t\t} else {\n\t\t\tconsole.log('粘贴的不是图片')\n\t\t}\n\t} else {\n\t\tif (type === 'copy') {\n\t\t\tfileList.value = event\n\t\t\tnextTick(() => {\n\t\t\t\tif (uploadViewRef.value) {\n\t\t\t\t\t// 只对最新复制的图片进行加载\n\t\t\t\t\tuploadViewRef.value.uploadFile(fileList.value.length - 1)\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t\tfileList.value.push(...event)\n\t\tnextTick(() => {\n\t\t\tif (uploadViewRef.value) {\n\t\t\t\t// 只对最新复制的图片进行加载\n\t\t\t\tuploadViewRef.value.uploadFile(fileList.value.length - 1)\n\t\t\t}\n\t\t})\n\t}\n}\n\nconst openMarkLayer = () => {\n\tshowMarkLaryer.value = true\n}\n\nconst colseMarkLayer = () => {\n\tshowMarkLaryer.value = false\n}\n\nconst handleColse = (id: string) => {\n\tconst index = fileList.value.findIndex((item: any) => item.id === id)\n\tif (index !== -1) {\n\t\tfileList.value.splice(index, 1)\n\t}\n}\n\nconst startRealtimeVoice = () => {\n\tif (voiceRef.value) {\n\t\tvoiceRef.value.toggleRecording(true)\n\t}\n}\n\nconst transcription = (text: string) => {\n\temits('update:inputValue', text)\n}\n\nconst handleClearClick = () => {\n\temits('update:inputValue', '')\n}\n\n// 处理输入框变化\nconst handleInputChange = (e: Event) => {\n\tconst value = (e.target as HTMLTextAreaElement).value\n\temits('update:inputValue', value)\n}\n\n// 处理深度思考按钮点击\nconst handleDeepThinkingClick = () => {\n\t// enableDeepThinking.value ? 'deepseek-reasoner' : 'deepseek-v3'\n\temits('update:enableDeepThinking', !props.enableDeepThinking)\n}\n\nconst uploadFile = (file: FileItem[]) => {\n\tif (file.length > 0) {\n\t\tfileList.value = file\n\t}\n}\n\nconst handleSend = (e?: Event) => {\n\t// 检测是否为 Shift+Enter,如果是则不发送,执行默认换行行为\n\tif (e instanceof KeyboardEvent && e.shiftKey) {\n\t\treturn\n\t}\n\t// 普通 Enter 时阻止默认行为,执行发送逻辑\n\tif (e instanceof KeyboardEvent) {\n\t\te.preventDefault()\n\t}\n\t// if (!scripts.length && fileList.value.length > 0) {\n\t// \tshowToast('暂不支持文件发送')\n\t// \treturn\n\t// }\n\tif (!props.inputValue.trim() && !fileList.value.length) {\n\t\tshowToast('请输入内容')\n\t\treturn\n\t}\n\tlet uploadError = false\n\tif (fileList.value.length > 0) {\n\t\tfileList.value.forEach((item: any) => {\n\t\t\tif (item.uploadError) {\n\t\t\t\tuploadError = true\n\t\t\t}\n\t\t})\n\t}\n\tif (uploadError) {\n\t\tshowToast('上传失败,请重试')\n\t\treturn\n\t}\n\tif (fileList.value.length > 10) {\n\t\tshowToast('文件数量不能超过10个')\n\t\treturn\n\t}\n\t// 过滤文件列表,只发送后端需要的字段\n\tconst sanitizedFileList = fileList.value.map(file => ({\n\t\tid: file.id,\n\t\tname: file.name,\n\t\turl: file.url,\n\t\tfileId: file.fileId,\n\t\tfileType: file.fileType,\n\t\tfileSize: file.fileSize,\n\t\tlastModified: file.lastModified\n\t}))\n\temits('send', props.inputValue, sanitizedFileList as any)\n\tnextTick(() => {\n\t\tfileList.value = []\n\t\tif (uploadViewRef.value) {\n\t\t\tuploadViewRef.value.resetFile()\n\t\t}\n\t\tif (voiceRef.value) {\n\t\t\tvoiceRef.value.resetFile()\n\t\t}\n\t})\n}\n\nconst itemUploadFile = (index: number, type: string) => {\n\tif (uploadViewRef.value) {\n\t\tuploadViewRef.value.uploadFile(index, type)\n\t}\n}\nconst handleStop = () => emits('stop')\nonMounted(() => {\n\tconsole.log('onMounted')\n\t// if (finallyModules.value.length > 0) {\n\t// \tselectVal.value = finallyModules.value[0].name\n\t// \tselectInfo.value = finallyModules.value[0]\n\t// \tif (selectInfo.value) {\n\t// \t\temits('moduleInfo', selectInfo.value)\n\t// \t}\n\t// }\n})\nconst quoteObj = ref<any>(null)\nconst idx = ref(0)\nconst updateQuoteData = (item: ChatMsgList, index: number) => {\n\tquoteObj.value = item\n\tidx.value = index\n}\nconst close = () => {\n\tquoteObj.value = {}\n}\ndefineExpose({\n\thandlePaste,\n\topenMarkLayer,\n\tcolseMarkLayer,\n\titemUploadFile,\n\tupdateQuoteData\n})\n</script>\n"],"names":["inject","ref","watch","provide","computed","body","nextTick","showToast","onMounted","_createElementBlock","_renderSlot","_createCommentVNode","_createBlock","FileContent","QuoteContent","_createElementVNode","inputValue","_unref","UploadView","_normalizeClass","isChating","_toDisplayString","ModuleSelect","enableDeepThinking","Screenshot","RealtimeVoice","Voice","_Fragment","_createVNode","MarkLayer"],"mappings":"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"}
1
+ {"version":3,"file":"ChatInput.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/ChatInput.vue"],"sourcesContent":["<template>\r\n\t<div class=\"touchchat-edit\">\r\n\t\t<slot name=\"editTop\"></slot>\r\n\t\t<!-- :file-progress=\"fileProgress\" -->\r\n\t\t<FileContent v-if=\"fileList.length > 0\" :file-list=\"fileList\" :has-colse=\"true\" type=\"ChatInput\" @colse=\"handleColse\" />\r\n\t\t<QuoteContent v-if=\"quoteObj && (quoteObj.content || quoteObj.msgList)\" :quote-obj=\"quoteObj\" @close=\"close\" />\r\n\t\t<div class=\"touchchat-edit-input\">\r\n\t\t\t<!-- @keydown.enter.prevent -->\r\n\t\t\t<textarea :value=\"inputValue\" :placeholder=\"placeholder ?? '请输入...'\" @paste=\"handlePaste\" @input=\"handleInputChange\" @keydown.enter=\"handleSend\"> </textarea>\r\n\t\t</div>\r\n\r\n\t\t<!-- 按钮与开关容器 -->\r\n\t\t<div :class=\"thinkAble ? 'touchchat-edit-submit is-thinkable' : 'touchchat-edit-submit'\">\r\n\t\t\t<div class=\"touchchat-edit-submit-left\">\r\n\t\t\t\t<!-- 附件 @click=\"showMarkLaryer = true\" @progress-fn=\"progressFn\" -->\r\n\t\t\t\t<upload-view v-if=\"uploadAble\" ref=\"uploadViewRef\" :file-list=\"fileList\" @upload-file=\"uploadFile\">\r\n\t\t\t\t\t<button v-if=\"uploadAble\" class=\"touchchat-edit-attach touchchat-edit-button\" :class=\"{ 'is-dis': isChating }\">\r\n\t\t\t\t\t\t<div class=\"touchchat-edit-attach-icon\"></div>\r\n\t\t\t\t\t\t<div class=\"touchchat-edit-tooltip align-left\">\r\n\t\t\t\t\t\t\t<p>文件数量:最多10个</p>\r\n\t\t\t\t\t\t\t<p>文件类型:{{ allowedTypes.join('、') || 'pdf,txt,csv,docx,xlsx,xls,pptx,ppt,md,mobi,epub,png,jpeg,jpg' }}</p>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</upload-view>\r\n\r\n\t\t\t\t<button v-if=\"clearAble\" class=\"touchchat-edit-delete touchchat-edit-button\" @click=\"handleClearClick\">\r\n\t\t\t\t\t<div class=\"touchchat-edit-delete-icon\"></div>\r\n\t\t\t\t\t<div class=\"touchchat-edit-tooltip\">清空文本</div>\r\n\t\t\t\t</button>\r\n\t\t\t\t<!-- {{ finallyModules.length }} -->\r\n\t\t\t\t<ModuleSelect v-if=\"finallyModules.length > 1\" v-model=\"selectVal\" :modules=\"finallyModules\" />\r\n\r\n\t\t\t\t<!-- 深度思考开关 - 修改为按钮样式 -->\r\n\t\t\t\t<button v-if=\"thinkAble\" class=\"touchchat-edit-think\" :class=\"{ 'is-on': enableDeepThinking, 'is-dis': isChating }\" @click=\"handleDeepThinkingClick\">\r\n\t\t\t\t\t<div class=\"touchchat-edit-think-icon\"></div>\r\n\t\t\t\t\t<div class=\"touchchat-edit-think-text\">深度思考</div>\r\n\t\t\t\t</button>\r\n\t\t\t\t<slot name=\"editSubmitLeft\"></slot>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"touchchat-edit-submit-right\">\r\n\t\t\t\t<!-- 截图 -->\r\n\t\t\t\t<screenshot v-if=\"screenAble\" @up-file-list=\"upFileList\"></screenshot>\r\n\t\t\t\t<!-- 实时语音 -->\r\n\t\t\t\t<realtime-voice v-if=\"realtimeVoiceAble\" @start-realtime-voice=\"startRealtimeVoice\" @transcription=\"transcription\"></realtime-voice>\r\n\t\t\t\t<!-- 语音 -->\r\n\t\t\t\t<voice v-if=\"voiceAble\" ref=\"voiceRef\" @up-file-list=\"upFileList\"></voice>\r\n\t\t\t\t<slot name=\"editFn\"></slot>\r\n\t\t\t\t<slot name=\"editSubmitRight\"></slot>\r\n\t\t\t\t<!-- 发送按钮 -->\r\n\t\t\t\t<button v-if=\"!isChating\" class=\"touchchat-edit-send\" :disabled=\"!inputValue.trim() && !fileList.length\" @click=\"handleSend\">\r\n\t\t\t\t\t<div class=\"touchchat-edit-send-icon\"></div>\r\n\t\t\t\t</button>\r\n\r\n\t\t\t\t<!-- 停止按钮 -->\r\n\t\t\t\t<button v-else class=\"touchchat-edit-stop\" @click=\"handleStop\">\r\n\t\t\t\t\t<div class=\"touchchat-edit-stop-icon\"></div>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<MarkLayer :show-mark-laryer=\"showMarkLaryer\" @colse-mark-layer=\"showMarkLaryer = false\" />\r\n\t</div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\n// todo 要实现默认选中第一个模块\r\nimport { ref, inject, provide, nextTick, computed, watch, onMounted } from 'vue'\r\nimport MarkLayer from '../../component/MarkLayer.vue'\r\nimport FileContent from '../../component/FileContent.vue'\r\nimport QuoteContent from '../../component/QuoteContent.vue'\r\nimport UploadView from '../../component/UploadView.vue'\r\nimport Screenshot from '../../component/Screenshot.vue'\r\nimport Voice from '../../component/VoiceView.vue'\r\nimport RealtimeVoice from '../../component/RealtimeVoice.vue'\r\nimport ModuleSelect from '../../component/ModuleSelect.vue'\r\nimport { showToast } from '../../utils/tools'\r\nimport type { ChatMsgList, FileItem } from './Chat/types'\r\n\r\n// 定义 body 返回值的类型\r\ninterface BodyConfig {\r\n\tmodel: string\r\n\tmessages: Array<{\r\n\t\trole: string\r\n\t\tcontent: string\r\n\t}>\r\n\tstream: boolean\r\n}\r\n\r\n// 定义 respoKey 返回值的类型\r\ninterface RespoKeyConfig {\r\n\tcategory: string\r\n\tcontentCategory: string\r\n\tcontent: string\r\n\tall: string\r\n\tallCategory: string\r\n}\r\n\r\ninterface ModuleItem {\r\n\tname: string\r\n\tconfig: {\r\n\t\taction: string\r\n\t\theaders: () => object\r\n\t\tbody: () => BodyConfig // 修改为具体类型\r\n\t\trespoKey: () => RespoKeyConfig // 修改为具体类型\r\n\t}\r\n}\r\n\r\nconst props = defineProps<{\r\n\tinputValue: string\r\n\tisChating: boolean\r\n\tenableDeepThinking?: boolean\r\n}>()\r\n\r\nconst placeholder = inject('placeholder', '请输入...')\r\nconst layout = inject<string>('layout', 'side, think, upload, chain, screen,realtime')\r\nconst modules = inject<(string | ModuleItem)[]>('modules', [])\r\nconst iModules = ref(modules)\r\nwatch(\r\n\t() => modules,\r\n\tnewVal => {\r\n\t\tiModules.value = newVal\r\n\t\tconsole.log('modules === ChatInput.vue === 128', newVal)\r\n\t}\r\n\t// { immediate: true }\r\n)\r\n\r\nconst allowedTypes = inject<string[]>('allowedTypes', [])\r\n\r\nprovide('uploadFile', (index: number, type?: string) => {\r\n\tif (uploadViewRef.value) {\r\n\t\tuploadViewRef.value.uploadFile(index, type)\r\n\t}\r\n})\r\nconst thinkAble = layout.includes('think')\r\nconst clearAble = layout.includes('clear')\r\nconst uploadAble = layout.includes('upload')\r\nconst screenAble = layout.includes('screen')\r\nconst voiceAble = layout.includes('voice')\r\nconst realtimeVoiceAble = layout.includes('realtime')\r\nconst showMarkLaryer = ref<boolean>(false)\r\nconst fileList = ref<FileItem[]>([])\r\n// const fileData = ref<FileItem[]>([])\r\nconst optionalModules = ref<ModuleItem[]>([\r\n\t{\r\n\t\tname: 'deepseek-v3',\r\n\t\tconfig: {\r\n\t\t\taction: 'https://api.apiyi.com/v1/chat/completions',\r\n\t\t\theaders: () => ({\r\n\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\tAuthorization: 'Bearer sk-fe9MtODvds8wpzz05f3417Fe3e9641C1926e6fC588425dEd'\r\n\t\t\t}),\r\n\t\t\tbody: () => ({\r\n\t\t\t\tmodel: 'deepseek-v3',\r\n\t\t\t\tmessages: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trole: 'user',\r\n\t\t\t\t\t\t// content: props.inputValue // 使用传入的用户内容参数\r\n\t\t\t\t\t\tcontent: ''\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tstream: true\r\n\t\t\t}),\r\n\t\t\trespoKey: () => ({\r\n\t\t\t\tcategory: 'category',\r\n\t\t\t\tcontentCategory: 'task_stream_content',\r\n\t\t\t\tcontent: 'content',\r\n\t\t\t\tall: 'message',\r\n\t\t\t\tallCategory: 'answer'\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n])\r\nconst uploadViewRef = ref<InstanceType<typeof UploadView>>()\r\nconst selectVal = ref('')\r\nconst selectInfo = ref<ModuleItem>({} as ModuleItem)\r\nconst voiceRef = ref<InstanceType<typeof Voice>>()\r\n// const scripts = inject<any[]>('scripts', [])\r\n\r\nconst modelChange = inject<(item: ModuleItem, index: number) => void>('modelChange', () => {\r\n\tconsole.warn('未提供modelChange函数')\r\n})\r\n\r\nconst emits = defineEmits<{\r\n\t(e: 'send', val: string, list: FileItem[]): void\r\n\t(e: 'stop'): void\r\n\t(e: 'update:enableDeepThinking', value: boolean): void\r\n\t(e: 'update:inputValue', value: string): void // 添加inputValue更新事件\r\n\t(e: 'moduleInfo', info: ModuleItem): void\r\n}>()\r\n\r\nwatch(\r\n\t() => selectVal.value,\r\n\t() => {\r\n\t\tconsole.log('selectVal.value === ChatInput.vue === 198', selectVal.value)\r\n\t\tif (finallyModules.value.length > 0) {\r\n\t\t\tselectInfo.value = finallyModules.value.find((item: any) => item.name === selectVal.value)\r\n\t\t\tif (selectInfo.value) {\r\n\t\t\t\temits('moduleInfo', selectInfo.value)\r\n\t\t\t\tmodelChange(selectInfo.value, finallyModules.value.indexOf(selectInfo.value))\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t{ deep: true }\r\n)\r\n\r\nwatch(\r\n\t() => props.enableDeepThinking,\r\n\t() => {\r\n\t\tupdateSelectInfo()\r\n\t},\r\n\t{ deep: true }\r\n)\r\n\r\nwatch(\r\n\t() => props.inputValue,\r\n\t() => {\r\n\t\tupdateSelectInfo()\r\n\t},\r\n\t{ deep: true }\r\n)\r\n\r\nconst finallyModules = computed(() => {\r\n\t// console.log('modules === ChatInput.vue === 226', modules, iModules.value)\r\n\tif (!iModules.value.length) {\r\n\t\treturn optionalModules.value\r\n\t}\r\n\treturn iModules.value.flatMap((module: any) => {\r\n\t\tif (typeof module === 'string') {\r\n\t\t\t// 若 module 是字符串,在 optionalModules 中查找 name 匹配的项\r\n\t\t\tconst matchedModule = optionalModules.value.find((optModule: any) => optModule.name === module)\r\n\t\t\tif (matchedModule) {\r\n\t\t\t\t// 对匹配到的模块也更新 content 值\r\n\t\t\t\tconst updatedModule = { ...matchedModule }\r\n\t\t\t\tconst body = updatedModule.config.body()\r\n\t\t\t\tif (thinkAble) {\r\n\t\t\t\t\tbody.model = props.enableDeepThinking ? 'deepseek-reasoner' : 'deepseek-v3'\r\n\t\t\t\t}\r\n\t\t\t\tupdatedModule.config.body = () => body\r\n\t\t\t\treturn [updatedModule]\r\n\t\t\t}\r\n\t\t\treturn []\r\n\t\t} else {\r\n\t\t\tconst body = module.config.body()\r\n\t\t\tif (thinkAble) {\r\n\t\t\t\tbody.model = props.enableDeepThinking ? 'deepseek-reasoner' : 'deepseek-v3'\r\n\t\t\t}\r\n\t\t\t// 重新定义 body 方法,返回更新后的 body\r\n\t\t\tmodule.config.body = () => body\r\n\t\t\treturn [module]\r\n\t\t}\r\n\t})\r\n})\r\n\r\nconst updateSelectInfo = () => {\r\n\tif (!selectInfo.value.name) {\r\n\t\tselectInfo.value = finallyModules.value[0]\r\n\t\tselectVal.value = selectInfo.value.name\r\n\t}\r\n\tconst body = (selectInfo.value as ModuleItem).config.body()\r\n\tif (body.messages && body.messages.length > 0 && body.messages[0].content) {\r\n\t\tbody.messages[0].content = props.inputValue\r\n\t} else {\r\n\t\tbody.messages = [{ role: 'user', content: props.inputValue }]\r\n\t}\r\n\t;(selectInfo.value as ModuleItem).config.body = () => body\r\n\tif (finallyModules.value.length > 0 && selectInfo.value) {\r\n\t\tconst body = selectInfo.value.config.body()\r\n\t\tif (thinkAble && body.model) {\r\n\t\t\tbody.model = props.enableDeepThinking ? 'deepseek-reasoner' : 'deepseek-v3'\r\n\t\t}\r\n\t\tselectInfo.value.config.body = () => body\r\n\t}\r\n}\r\n\r\nconst upFileList = (list: FileItem[]) => {\r\n\tfileList.value.push(...list)\r\n\tnextTick(() => {\r\n\t\tif (uploadViewRef.value) {\r\n\t\t\t// 只对最新复制的图片进行加载\r\n\t\t\tuploadViewRef.value.uploadFile(fileList.value.length - 1)\r\n\t\t}\r\n\t})\r\n}\r\n\r\nconst handlePaste = (event: any, type?: string) => {\r\n\t// event.preventDefault();\r\n\tif (event.clipboardData) {\r\n\t\tconst clipboardData = event.clipboardData || window.Clipboard\r\n\t\tconst items = clipboardData.items\r\n\r\n\t\tlet isImage = false\r\n\t\tfor (let i = 0; i < items.length; i++) {\r\n\t\t\tif (items[i].type.indexOf('image/') !== -1) {\r\n\t\t\t\tisImage = true\r\n\t\t\t\t// 获取图片文件\r\n\t\t\t\tconst blob = items[i].getAsFile()\r\n\t\t\t\tif (blob) {\r\n\t\t\t\t\tconst reader = new FileReader()\r\n\t\t\t\t\treader.onload = e => {\r\n\t\t\t\t\t\tconst base64 = e.target?.result as string\r\n\t\t\t\t\t\t// 生成图片属性对象\r\n\t\t\t\t\t\tconst imageInfo: FileItem = {\r\n\t\t\t\t\t\t\tfile: blob,\r\n\t\t\t\t\t\t\tisUploading: false,\r\n\t\t\t\t\t\t\tuploadProgress: 0,\r\n\t\t\t\t\t\t\tuploadSuccess: false,\r\n\t\t\t\t\t\t\tuploadError: false,\r\n\t\t\t\t\t\t\tfileSize: blob.size,\r\n\t\t\t\t\t\t\tfileType: blob.type,\r\n\t\t\t\t\t\t\tname: `pasted_image_${Date.now()}`,\r\n\t\t\t\t\t\t\tid: Date.now().toString(),\r\n\t\t\t\t\t\t\tbase64,\r\n\t\t\t\t\t\t\tlastModified: Date.now()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfileList.value.push(imageInfo)\r\n\t\t\t\t\t\tnextTick(() => {\r\n\t\t\t\t\t\t\tif (uploadViewRef.value) {\r\n\t\t\t\t\t\t\t\t// 只对最新复制的图片进行加载\r\n\t\t\t\t\t\t\t\tuploadViewRef.value.uploadFile(fileList.value.length - 1)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t\treader.readAsDataURL(blob)\r\n\t\t\t\t}\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isImage) {\r\n\t\t\tconsole.log('检测到粘贴的是图片')\r\n\t\t} else {\r\n\t\t\tconsole.log('粘贴的不是图片')\r\n\t\t}\r\n\t} else {\r\n\t\tif (type === 'copy') {\r\n\t\t\tfileList.value = event\r\n\t\t\tnextTick(() => {\r\n\t\t\t\tif (uploadViewRef.value) {\r\n\t\t\t\t\t// 只对最新复制的图片进行加载\r\n\t\t\t\t\tuploadViewRef.value.uploadFile(fileList.value.length - 1)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\treturn\r\n\t\t}\r\n\t\tfileList.value.push(...event)\r\n\t\tnextTick(() => {\r\n\t\t\tif (uploadViewRef.value) {\r\n\t\t\t\t// 只对最新复制的图片进行加载\r\n\t\t\t\tuploadViewRef.value.uploadFile(fileList.value.length - 1)\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n}\r\n\r\nconst openMarkLayer = () => {\r\n\tshowMarkLaryer.value = true\r\n}\r\n\r\nconst colseMarkLayer = () => {\r\n\tshowMarkLaryer.value = false\r\n}\r\n\r\nconst handleColse = (id: string) => {\r\n\tconst index = fileList.value.findIndex((item: any) => item.id === id)\r\n\tif (index !== -1) {\r\n\t\tfileList.value.splice(index, 1)\r\n\t}\r\n}\r\n\r\nconst startRealtimeVoice = () => {\r\n\tif (voiceRef.value) {\r\n\t\tvoiceRef.value.toggleRecording(true)\r\n\t}\r\n}\r\n\r\nconst transcription = (text: string) => {\r\n\temits('update:inputValue', text)\r\n}\r\n\r\nconst handleClearClick = () => {\r\n\temits('update:inputValue', '')\r\n}\r\n\r\n// 处理输入框变化\r\nconst handleInputChange = (e: Event) => {\r\n\tconst value = (e.target as HTMLTextAreaElement).value\r\n\temits('update:inputValue', value)\r\n}\r\n\r\n// 处理深度思考按钮点击\r\nconst handleDeepThinkingClick = () => {\r\n\t// enableDeepThinking.value ? 'deepseek-reasoner' : 'deepseek-v3'\r\n\temits('update:enableDeepThinking', !props.enableDeepThinking)\r\n}\r\n\r\nconst uploadFile = (file: FileItem[]) => {\r\n\tif (file.length > 0) {\r\n\t\tfileList.value = file\r\n\t}\r\n}\r\n\r\nconst handleSend = (e?: Event) => {\r\n\t// 检测是否为 Shift+Enter,如果是则不发送,执行默认换行行为\r\n\tif (e instanceof KeyboardEvent && e.shiftKey) {\r\n\t\treturn\r\n\t}\r\n\t// 普通 Enter 时阻止默认行为,执行发送逻辑\r\n\tif (e instanceof KeyboardEvent) {\r\n\t\te.preventDefault()\r\n\t}\r\n\t// if (!scripts.length && fileList.value.length > 0) {\r\n\t// \tshowToast('暂不支持文件发送')\r\n\t// \treturn\r\n\t// }\r\n\tif (!props.inputValue.trim() && !fileList.value.length) {\r\n\t\tshowToast('请输入内容')\r\n\t\treturn\r\n\t}\r\n\tlet uploadError = false\r\n\tif (fileList.value.length > 0) {\r\n\t\tfileList.value.forEach((item: any) => {\r\n\t\t\tif (item.uploadError) {\r\n\t\t\t\tuploadError = true\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\tif (uploadError) {\r\n\t\tshowToast('上传失败,请重试')\r\n\t\treturn\r\n\t}\r\n\tif (fileList.value.length > 10) {\r\n\t\tshowToast('文件数量不能超过10个')\r\n\t\treturn\r\n\t}\r\n\t// 过滤文件列表,只发送后端需要的字段\r\n\tconst sanitizedFileList = fileList.value.map(file => ({\r\n\t\tid: file.id,\r\n\t\tname: file.name,\r\n\t\turl: file.url,\r\n\t\tfileId: file.fileId,\r\n\t\tfileType: file.fileType,\r\n\t\tfileSize: file.fileSize,\r\n\t\tlastModified: file.lastModified\r\n\t}))\r\n\temits('send', props.inputValue, sanitizedFileList as any)\r\n\tnextTick(() => {\r\n\t\tfileList.value = []\r\n\t\tif (uploadViewRef.value) {\r\n\t\t\tuploadViewRef.value.resetFile()\r\n\t\t}\r\n\t\tif (voiceRef.value) {\r\n\t\t\tvoiceRef.value.resetFile()\r\n\t\t}\r\n\t})\r\n}\r\n\r\nconst itemUploadFile = (index: number, type: string) => {\r\n\tif (uploadViewRef.value) {\r\n\t\tuploadViewRef.value.uploadFile(index, type)\r\n\t}\r\n}\r\nconst handleStop = () => emits('stop')\r\nonMounted(() => {\r\n\tconsole.log('onMounted')\r\n\t// if (finallyModules.value.length > 0) {\r\n\t// \tselectVal.value = finallyModules.value[0].name\r\n\t// \tselectInfo.value = finallyModules.value[0]\r\n\t// \tif (selectInfo.value) {\r\n\t// \t\temits('moduleInfo', selectInfo.value)\r\n\t// \t}\r\n\t// }\r\n})\r\nconst quoteObj = ref<any>(null)\r\nconst idx = ref(0)\r\nconst updateQuoteData = (item: ChatMsgList, index: number) => {\r\n\tquoteObj.value = item\r\n\tidx.value = index\r\n}\r\nconst close = () => {\r\n\tquoteObj.value = {}\r\n}\r\ndefineExpose({\r\n\thandlePaste,\r\n\topenMarkLayer,\r\n\tcolseMarkLayer,\r\n\titemUploadFile,\r\n\tupdateQuoteData\r\n})\r\n</script>\r\n"],"names":["inject","ref","watch","provide","computed","body","nextTick","showToast","onMounted","_createElementBlock","_renderSlot","_createCommentVNode","_createBlock","FileContent","QuoteContent","_createElementVNode","_unref","UploadView","_normalizeClass","_toDisplayString","ModuleSelect","Screenshot","RealtimeVoice","Voice","_Fragment","_createVNode","MarkLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA0GA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAMd,IAAM,MAAA,WAAA,GAAcA,UAAO,CAAA,aAAA,EAAe,uBAAQ,CAAA,CAAA;AAClD,IAAM,MAAA,MAAA,GAASA,UAAe,CAAA,QAAA,EAAU,6CAA6C,CAAA,CAAA;AACrF,IAAA,MAAM,OAAU,GAAAA,UAAA,CAAgC,SAAW,EAAA,EAAE,CAAA,CAAA;AAC7D,IAAM,MAAA,QAAA,GAAWC,QAAI,OAAO,CAAA,CAAA;AAC5B,IAAAC,SAAA;AAAA,MACC,MAAM,OAAA;AAAA,MACN,CAAU,MAAA,KAAA;AACT,QAAA,QAAA,CAAS,KAAQ,GAAA,MAAA,CAAA;AACjB,QAAQ,OAAA,CAAA,GAAA,CAAI,qCAAqC,MAAM,CAAA,CAAA;AAAA,OACxD;AAAA;AAAA,KAED,CAAA;AAEA,IAAA,MAAM,YAAe,GAAAF,UAAA,CAAiB,cAAgB,EAAA,EAAE,CAAA,CAAA;AAExD,IAAQG,WAAA,CAAA,YAAA,EAAc,CAAC,KAAA,EAAe,IAAkB,KAAA;AACvD,MAAA,IAAI,cAAc,KAAO,EAAA;AACxB,QAAc,aAAA,CAAA,KAAA,CAAM,UAAW,CAAA,KAAA,EAAO,IAAI,CAAA,CAAA;AAAA,OAC3C;AAAA,KACA,CAAA,CAAA;AACD,IAAM,MAAA,SAAA,GAAY,MAAO,CAAA,QAAA,CAAS,OAAO,CAAA,CAAA;AACzC,IAAM,MAAA,SAAA,GAAY,MAAO,CAAA,QAAA,CAAS,OAAO,CAAA,CAAA;AACzC,IAAM,MAAA,UAAA,GAAa,MAAO,CAAA,QAAA,CAAS,QAAQ,CAAA,CAAA;AAC3C,IAAM,MAAA,UAAA,GAAa,MAAO,CAAA,QAAA,CAAS,QAAQ,CAAA,CAAA;AAC3C,IAAM,MAAA,SAAA,GAAY,MAAO,CAAA,QAAA,CAAS,OAAO,CAAA,CAAA;AACzC,IAAM,MAAA,iBAAA,GAAoB,MAAO,CAAA,QAAA,CAAS,UAAU,CAAA,CAAA;AACpD,IAAM,MAAA,cAAA,GAAiBF,QAAa,KAAK,CAAA,CAAA;AACzC,IAAM,MAAA,QAAA,GAAWA,OAAgB,CAAA,EAAE,CAAA,CAAA;AAEnC,IAAA,MAAM,kBAAkBA,OAAkB,CAAA;AAAA,MACzC;AAAA,QACC,IAAM,EAAA,aAAA;AAAA,QACN,MAAQ,EAAA;AAAA,UACP,MAAQ,EAAA,2CAAA;AAAA,UACR,SAAS,OAAO;AAAA,YACf,cAAgB,EAAA,kBAAA;AAAA,YAChB,aAAe,EAAA,4DAAA;AAAA,WAChB,CAAA;AAAA,UACA,MAAM,OAAO;AAAA,YACZ,KAAO,EAAA,aAAA;AAAA,YACP,QAAU,EAAA;AAAA,cACT;AAAA,gBACC,IAAM,EAAA,MAAA;AAAA;AAAA,gBAEN,OAAS,EAAA,EAAA;AAAA,eACV;AAAA,aACD;AAAA,YACA,MAAQ,EAAA,IAAA;AAAA,WACT,CAAA;AAAA,UACA,UAAU,OAAO;AAAA,YAChB,QAAU,EAAA,UAAA;AAAA,YACV,eAAiB,EAAA,qBAAA;AAAA,YACjB,OAAS,EAAA,SAAA;AAAA,YACT,GAAK,EAAA,SAAA;AAAA,YACL,WAAa,EAAA,QAAA;AAAA,WACd,CAAA;AAAA,SACD;AAAA,OACD;AAAA,KACA,CAAA,CAAA;AACD,IAAA,MAAM,gBAAgBA,OAAqC,EAAA,CAAA;AAC3D,IAAM,MAAA,SAAA,GAAYA,QAAI,EAAE,CAAA,CAAA;AACxB,IAAM,MAAA,UAAA,GAAaA,OAAgB,CAAA,EAAgB,CAAA,CAAA;AACnD,IAAA,MAAM,WAAWA,OAAgC,EAAA,CAAA;AAGjD,IAAM,MAAA,WAAA,GAAcD,UAAkD,CAAA,aAAA,EAAe,MAAM;AAC1F,MAAA,OAAA,CAAQ,KAAK,2CAAkB,CAAA,CAAA;AAAA,KAC/B,CAAA,CAAA;AAED,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AAQd,IAAAE,SAAA;AAAA,MACC,MAAM,SAAU,CAAA,KAAA;AAAA,MAChB,MAAM;AACL,QAAQ,OAAA,CAAA,GAAA,CAAI,2CAA6C,EAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AACxE,QAAI,IAAA,cAAA,CAAe,KAAM,CAAA,MAAA,GAAS,CAAG,EAAA;AACpC,UAAW,UAAA,CAAA,KAAA,GAAQ,eAAe,KAAM,CAAA,IAAA,CAAK,CAAC,IAAc,KAAA,IAAA,CAAK,IAAS,KAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AACzF,UAAA,IAAI,WAAW,KAAO,EAAA;AACrB,YAAM,KAAA,CAAA,YAAA,EAAc,WAAW,KAAK,CAAA,CAAA;AACpC,YAAA,WAAA,CAAY,WAAW,KAAO,EAAA,cAAA,CAAe,MAAM,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAC,CAAA,CAAA;AAAA,WAC7E;AAAA,SACD;AAAA,OACD;AAAA,MACA,EAAE,MAAM,IAAK,EAAA;AAAA,KACd,CAAA;AAEA,IAAAA,SAAA;AAAA,MACC,MAAM,KAAM,CAAA,kBAAA;AAAA,MACZ,MAAM;AACL,QAAiB,gBAAA,EAAA,CAAA;AAAA,OAClB;AAAA,MACA,EAAE,MAAM,IAAK,EAAA;AAAA,KACd,CAAA;AAEA,IAAAA,SAAA;AAAA,MACC,MAAM,KAAM,CAAA,UAAA;AAAA,MACZ,MAAM;AACL,QAAiB,gBAAA,EAAA,CAAA;AAAA,OAClB;AAAA,MACA,EAAE,MAAM,IAAK,EAAA;AAAA,KACd,CAAA;AAEA,IAAM,MAAA,cAAA,GAAiBE,aAAS,MAAM;AAErC,MAAI,IAAA,CAAC,QAAS,CAAA,KAAA,CAAM,MAAQ,EAAA;AAC3B,QAAA,OAAO,eAAgB,CAAA,KAAA,CAAA;AAAA,OACxB;AACA,MAAA,OAAO,QAAS,CAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,MAAgB,KAAA;AAC9C,QAAI,IAAA,OAAO,WAAW,QAAU,EAAA;AAE/B,UAAM,MAAA,aAAA,GAAgB,gBAAgB,KAAM,CAAA,IAAA,CAAK,CAAC,SAAmB,KAAA,SAAA,CAAU,SAAS,MAAM,CAAA,CAAA;AAC9F,UAAA,IAAI,aAAe,EAAA;AAElB,YAAM,MAAA,aAAA,GAAgB,EAAE,GAAG,aAAc,EAAA,CAAA;AACzC,YAAM,MAAA,IAAA,GAAO,aAAc,CAAA,MAAA,CAAO,IAAK,EAAA,CAAA;AACvC,YAAA,IAAI,SAAW,EAAA;AACd,cAAK,IAAA,CAAA,KAAA,GAAQ,KAAM,CAAA,kBAAA,GAAqB,mBAAsB,GAAA,aAAA,CAAA;AAAA,aAC/D;AACA,YAAc,aAAA,CAAA,MAAA,CAAO,OAAO,MAAM,IAAA,CAAA;AAClC,YAAA,OAAO,CAAC,aAAa,CAAA,CAAA;AAAA,WACtB;AACA,UAAA,OAAO,EAAC,CAAA;AAAA,SACF,MAAA;AACN,UAAM,MAAA,IAAA,GAAO,MAAO,CAAA,MAAA,CAAO,IAAK,EAAA,CAAA;AAChC,UAAA,IAAI,SAAW,EAAA;AACd,YAAK,IAAA,CAAA,KAAA,GAAQ,KAAM,CAAA,kBAAA,GAAqB,mBAAsB,GAAA,aAAA,CAAA;AAAA,WAC/D;AAEA,UAAO,MAAA,CAAA,MAAA,CAAO,OAAO,MAAM,IAAA,CAAA;AAC3B,UAAA,OAAO,CAAC,MAAM,CAAA,CAAA;AAAA,SACf;AAAA,OACA,CAAA,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,MAAM,mBAAmB,MAAM;AAC9B,MAAI,IAAA,CAAC,UAAW,CAAA,KAAA,CAAM,IAAM,EAAA;AAC3B,QAAW,UAAA,CAAA,KAAA,GAAQ,cAAe,CAAA,KAAA,CAAM,CAAC,CAAA,CAAA;AACzC,QAAU,SAAA,CAAA,KAAA,GAAQ,WAAW,KAAM,CAAA,IAAA,CAAA;AAAA,OACpC;AACA,MAAA,MAAM,IAAQ,GAAA,UAAA,CAAW,KAAqB,CAAA,MAAA,CAAO,IAAK,EAAA,CAAA;AAC1D,MAAI,IAAA,IAAA,CAAK,QAAY,IAAA,IAAA,CAAK,QAAS,CAAA,MAAA,GAAS,KAAK,IAAK,CAAA,QAAA,CAAS,CAAC,CAAA,CAAE,OAAS,EAAA;AAC1E,QAAA,IAAA,CAAK,QAAS,CAAA,CAAC,CAAE,CAAA,OAAA,GAAU,KAAM,CAAA,UAAA,CAAA;AAAA,OAC3B,MAAA;AACN,QAAK,IAAA,CAAA,QAAA,GAAW,CAAC,EAAE,IAAA,EAAM,QAAQ,OAAS,EAAA,KAAA,CAAM,YAAY,CAAA,CAAA;AAAA,OAC7D;AACC,MAAC,UAAW,CAAA,KAAA,CAAqB,MAAO,CAAA,IAAA,GAAO,MAAM,IAAA,CAAA;AACtD,MAAA,IAAI,cAAe,CAAA,KAAA,CAAM,MAAS,GAAA,CAAA,IAAK,WAAW,KAAO,EAAA;AACxD,QAAA,MAAMC,KAAO,GAAA,UAAA,CAAW,KAAM,CAAA,MAAA,CAAO,IAAK,EAAA,CAAA;AAC1C,QAAI,IAAA,SAAA,IAAaA,MAAK,KAAO,EAAA;AAC5B,UAAAA,KAAK,CAAA,KAAA,GAAQ,KAAM,CAAA,kBAAA,GAAqB,mBAAsB,GAAA,aAAA,CAAA;AAAA,SAC/D;AACA,QAAW,UAAA,CAAA,KAAA,CAAM,MAAO,CAAA,IAAA,GAAO,MAAMA,KAAAA,CAAAA;AAAA,OACtC;AAAA,KACD,CAAA;AAEA,IAAM,MAAA,UAAA,GAAa,CAAC,IAAqB,KAAA;AACxC,MAAS,QAAA,CAAA,KAAA,CAAM,IAAK,CAAA,GAAG,IAAI,CAAA,CAAA;AAC3B,MAAAC,YAAA,CAAS,MAAM;AACd,QAAA,IAAI,cAAc,KAAO,EAAA;AAExB,UAAA,aAAA,CAAc,KAAM,CAAA,UAAA,CAAW,QAAS,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA,CAAA;AAAA,SACzD;AAAA,OACA,CAAA,CAAA;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,WAAA,GAAc,CAAC,KAAA,EAAY,IAAkB,KAAA;AAElD,MAAA,IAAI,MAAM,aAAe,EAAA;AACxB,QAAM,MAAA,aAAA,GAAgB,KAAM,CAAA,aAAA,IAAiB,MAAO,CAAA,SAAA,CAAA;AACpD,QAAA,MAAM,QAAQ,aAAc,CAAA,KAAA,CAAA;AAE5B,QAAA,IAAI,OAAU,GAAA,KAAA,CAAA;AACd,QAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,CAAM,QAAQ,CAAK,EAAA,EAAA;AACtC,UAAA,IAAI,MAAM,CAAC,CAAA,CAAE,KAAK,OAAQ,CAAA,QAAQ,MAAM,CAAI,CAAA,EAAA;AAC3C,YAAU,OAAA,GAAA,IAAA,CAAA;AAEV,YAAA,MAAM,IAAO,GAAA,KAAA,CAAM,CAAC,CAAA,CAAE,SAAU,EAAA,CAAA;AAChC,YAAA,IAAI,IAAM,EAAA;AACT,cAAM,MAAA,MAAA,GAAS,IAAI,UAAW,EAAA,CAAA;AAC9B,cAAA,MAAA,CAAO,SAAS,CAAK,CAAA,KAAA;;AACpB,gBAAM,MAAA,MAAA,GAAA,CAAS,EAAE,GAAA,CAAA,CAAA,MAAA,KAAF,IAAU,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAA;AAEzB,gBAAA,MAAM,SAAsB,GAAA;AAAA,kBAC3B,IAAM,EAAA,IAAA;AAAA,kBACN,WAAa,EAAA,KAAA;AAAA,kBACb,cAAgB,EAAA,CAAA;AAAA,kBAChB,aAAe,EAAA,KAAA;AAAA,kBACf,WAAa,EAAA,KAAA;AAAA,kBACb,UAAU,IAAK,CAAA,IAAA;AAAA,kBACf,UAAU,IAAK,CAAA,IAAA;AAAA,kBACf,IAAA,EAAM,CAAgB,aAAA,EAAA,IAAA,CAAK,GAAI,EAAA,CAAA,CAAA;AAAA,kBAC/B,EAAI,EAAA,IAAA,CAAK,GAAI,EAAA,CAAE,QAAS,EAAA;AAAA,kBACxB,MAAA;AAAA,kBACA,YAAA,EAAc,KAAK,GAAI,EAAA;AAAA,iBACxB,CAAA;AACA,gBAAS,QAAA,CAAA,KAAA,CAAM,KAAK,SAAS,CAAA,CAAA;AAC7B,gBAAAA,YAAA,CAAS,MAAM;AACd,kBAAA,IAAI,cAAc,KAAO,EAAA;AAExB,oBAAA,aAAA,CAAc,KAAM,CAAA,UAAA,CAAW,QAAS,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA,CAAA;AAAA,mBACzD;AAAA,iBACA,CAAA,CAAA;AAAA,eACF,CAAA;AACA,cAAA,MAAA,CAAO,cAAc,IAAI,CAAA,CAAA;AAAA,aAC1B;AACA,YAAA,MAAA;AAAA,WACD;AAAA,SACD;AAEA,QAAA,IAAI,OAAS,EAAA;AACZ,UAAA,OAAA,CAAQ,IAAI,wDAAW,CAAA,CAAA;AAAA,SACjB,MAAA;AACN,UAAA,OAAA,CAAQ,IAAI,4CAAS,CAAA,CAAA;AAAA,SACtB;AAAA,OACM,MAAA;AACN,QAAA,IAAI,SAAS,MAAQ,EAAA;AACpB,UAAA,QAAA,CAAS,KAAQ,GAAA,KAAA,CAAA;AACjB,UAAAA,YAAA,CAAS,MAAM;AACd,YAAA,IAAI,cAAc,KAAO,EAAA;AAExB,cAAA,aAAA,CAAc,KAAM,CAAA,UAAA,CAAW,QAAS,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA,CAAA;AAAA,aACzD;AAAA,WACA,CAAA,CAAA;AACD,UAAA,OAAA;AAAA,SACD;AACA,QAAS,QAAA,CAAA,KAAA,CAAM,IAAK,CAAA,GAAG,KAAK,CAAA,CAAA;AAC5B,QAAAA,YAAA,CAAS,MAAM;AACd,UAAA,IAAI,cAAc,KAAO,EAAA;AAExB,YAAA,aAAA,CAAc,KAAM,CAAA,UAAA,CAAW,QAAS,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA,CAAA;AAAA,WACzD;AAAA,SACA,CAAA,CAAA;AAAA,OACF;AAAA,KACD,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC3B,MAAA,cAAA,CAAe,KAAQ,GAAA,IAAA,CAAA;AAAA,KACxB,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC5B,MAAA,cAAA,CAAe,KAAQ,GAAA,KAAA,CAAA;AAAA,KACxB,CAAA;AAEA,IAAM,MAAA,WAAA,GAAc,CAAC,EAAe,KAAA;AACnC,MAAM,MAAA,KAAA,GAAQ,SAAS,KAAM,CAAA,SAAA,CAAU,CAAC,IAAc,KAAA,IAAA,CAAK,OAAO,EAAE,CAAA,CAAA;AACpE,MAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AACjB,QAAS,QAAA,CAAA,KAAA,CAAM,MAAO,CAAA,KAAA,EAAO,CAAC,CAAA,CAAA;AAAA,OAC/B;AAAA,KACD,CAAA;AAEA,IAAA,MAAM,qBAAqB,MAAM;AAChC,MAAA,IAAI,SAAS,KAAO,EAAA;AACnB,QAAS,QAAA,CAAA,KAAA,CAAM,gBAAgB,IAAI,CAAA,CAAA;AAAA,OACpC;AAAA,KACD,CAAA;AAEA,IAAM,MAAA,aAAA,GAAgB,CAAC,IAAiB,KAAA;AACvC,MAAA,KAAA,CAAM,qBAAqB,IAAI,CAAA,CAAA;AAAA,KAChC,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC9B,MAAA,KAAA,CAAM,qBAAqB,EAAE,CAAA,CAAA;AAAA,KAC9B,CAAA;AAGA,IAAM,MAAA,iBAAA,GAAoB,CAAC,CAAa,KAAA;AACvC,MAAM,MAAA,KAAA,GAAS,EAAE,MAA+B,CAAA,KAAA,CAAA;AAChD,MAAA,KAAA,CAAM,qBAAqB,KAAK,CAAA,CAAA;AAAA,KACjC,CAAA;AAGA,IAAA,MAAM,0BAA0B,MAAM;AAErC,MAAM,KAAA,CAAA,2BAAA,EAA6B,CAAC,KAAA,CAAM,kBAAkB,CAAA,CAAA;AAAA,KAC7D,CAAA;AAEA,IAAM,MAAA,UAAA,GAAa,CAAC,IAAqB,KAAA;AACxC,MAAI,IAAA,IAAA,CAAK,SAAS,CAAG,EAAA;AACpB,QAAA,QAAA,CAAS,KAAQ,GAAA,IAAA,CAAA;AAAA,OAClB;AAAA,KACD,CAAA;AAEA,IAAM,MAAA,UAAA,GAAa,CAAC,CAAc,KAAA;AAEjC,MAAI,IAAA,CAAA,YAAa,aAAiB,IAAA,CAAA,CAAE,QAAU,EAAA;AAC7C,QAAA,OAAA;AAAA,OACD;AAEA,MAAA,IAAI,aAAa,aAAe,EAAA;AAC/B,QAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AAAA,OAClB;AAKA,MAAI,IAAA,CAAC,MAAM,UAAW,CAAA,IAAA,MAAU,CAAC,QAAA,CAAS,MAAM,MAAQ,EAAA;AACvD,QAAAC,eAAA,CAAU,gCAAO,CAAA,CAAA;AACjB,QAAA,OAAA;AAAA,OACD;AACA,MAAA,IAAI,WAAc,GAAA,KAAA,CAAA;AAClB,MAAI,IAAA,QAAA,CAAS,KAAM,CAAA,MAAA,GAAS,CAAG,EAAA;AAC9B,QAAS,QAAA,CAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,IAAc,KAAA;AACrC,UAAA,IAAI,KAAK,WAAa,EAAA;AACrB,YAAc,WAAA,GAAA,IAAA,CAAA;AAAA,WACf;AAAA,SACA,CAAA,CAAA;AAAA,OACF;AACA,MAAA,IAAI,WAAa,EAAA;AAChB,QAAAA,eAAA,CAAU,kDAAU,CAAA,CAAA;AACpB,QAAA,OAAA;AAAA,OACD;AACA,MAAI,IAAA,QAAA,CAAS,KAAM,CAAA,MAAA,GAAS,EAAI,EAAA;AAC/B,QAAAA,eAAA,CAAU,0DAAa,CAAA,CAAA;AACvB,QAAA,OAAA;AAAA,OACD;AAEA,MAAA,MAAM,iBAAoB,GAAA,QAAA,CAAS,KAAM,CAAA,GAAA,CAAI,CAAS,IAAA,MAAA;AAAA,QACrD,IAAI,IAAK,CAAA,EAAA;AAAA,QACT,MAAM,IAAK,CAAA,IAAA;AAAA,QACX,KAAK,IAAK,CAAA,GAAA;AAAA,QACV,QAAQ,IAAK,CAAA,MAAA;AAAA,QACb,UAAU,IAAK,CAAA,QAAA;AAAA,QACf,UAAU,IAAK,CAAA,QAAA;AAAA,QACf,cAAc,IAAK,CAAA,YAAA;AAAA,OAClB,CAAA,CAAA,CAAA;AACF,MAAM,KAAA,CAAA,MAAA,EAAQ,KAAM,CAAA,UAAA,EAAY,iBAAwB,CAAA,CAAA;AACxD,MAAAD,YAAA,CAAS,MAAM;AACd,QAAA,QAAA,CAAS,QAAQ,EAAC,CAAA;AAClB,QAAA,IAAI,cAAc,KAAO,EAAA;AACxB,UAAA,aAAA,CAAc,MAAM,SAAU,EAAA,CAAA;AAAA,SAC/B;AACA,QAAA,IAAI,SAAS,KAAO,EAAA;AACnB,UAAA,QAAA,CAAS,MAAM,SAAU,EAAA,CAAA;AAAA,SAC1B;AAAA,OACA,CAAA,CAAA;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,cAAA,GAAiB,CAAC,KAAA,EAAe,IAAiB,KAAA;AACvD,MAAA,IAAI,cAAc,KAAO,EAAA;AACxB,QAAc,aAAA,CAAA,KAAA,CAAM,UAAW,CAAA,KAAA,EAAO,IAAI,CAAA,CAAA;AAAA,OAC3C;AAAA,KACD,CAAA;AACA,IAAM,MAAA,UAAA,GAAa,MAAM,KAAA,CAAM,MAAM,CAAA,CAAA;AACrC,IAAAE,aAAA,CAAU,MAAM;AACf,MAAA,OAAA,CAAQ,IAAI,WAAW,CAAA,CAAA;AAAA,KAQvB,CAAA,CAAA;AACD,IAAM,MAAA,QAAA,GAAWP,QAAS,IAAI,CAAA,CAAA;AAC9B,IAAM,MAAA,GAAA,GAAMA,QAAI,CAAC,CAAA,CAAA;AACjB,IAAM,MAAA,eAAA,GAAkB,CAAC,IAAA,EAAmB,KAAkB,KAAA;AAC7D,MAAA,QAAA,CAAS,KAAQ,GAAA,IAAA,CAAA;AACjB,MAAA,GAAA,CAAI,KAAQ,GAAA,KAAA,CAAA;AAAA,KACb,CAAA;AACA,IAAA,MAAM,QAAQ,MAAM;AACnB,MAAA,QAAA,CAAS,QAAQ,EAAC,CAAA;AAAA,KACnB,CAAA;AACA,IAAa,QAAA,CAAA;AAAA,MACZ,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,KACA,CAAA,CAAA;;;4BAreA,EAAAQ,sBAAA,CA2DM,OAAA,EA3DD,KAAA,EAAM,kBAAgB,EAAA;AAAA,QAC1BC,cAAA,CAA4B,IAAA,CAAA,MAAA,EAAA,SAAA,CAAA;AAAA,QAC5BC,uBAAuC,kCAAA,CAAA;AAAA,QACpB,SAAA,KAAS,CAAA,MAAA,GAAM,sBAAlCC,gBAAwHC,mBAAA,EAAA;AAAA;UAA/E,aAAW,QAAQ,CAAA,KAAA;AAAA,UAAG,WAAW,EAAA,IAAA;AAAA,UAAM,IAAK,EAAA,WAAA;AAAA,UAAa,OAAO,EAAA,WAAA;AAAA;QACrF,QAAA,CAAA,KAAa,KAAA,QAAA,CAAQ,KAAC,CAAA,OAAA,IAAW,QAAA,CAAA,KAAA,CAAS,2BAA9D,EAAAD,eAAA,CAA+GE,oBAAA,EAAA;AAAA;UAAtC,aAAW,QAAQ,CAAA,KAAA;AAAA,UAAG,OAAO,EAAA,KAAA;AAAA;QACtGC,sBAGM,CAAA,KAAA,EAAA,EAHD,KAAA,EAAM,wBAAsB,EAAA;AAAA,UAChCJ,uBAAgC,2BAAA,CAAA;AAAA,UAChCI,uBAA6J,UAAA,EAAA;AAAA,YAAlJ,OAAO,OAAU,CAAA,UAAA;AAAA,YAAG,WAAa,EAAA,CAAA,EAAA,GAAAC,SAAA,CAAW,WAAA,CAAA,KAAX,IAAW,GAAA,EAAA,GAAA,uBAAA;AAAA,YAAe,OAAO,EAAA,WAAA;AAAA,YAAc,OAAO,EAAA,iBAAA;AAAA,YAAoB,wBAAe,UAAU,EAAA,CAAA,OAAA,CAAA,CAAA;AAAA,aAAE,GAAC,EAAA,EAAA,EAAA,CAAA,OAAA,EAAA,aAAA,CAAA,CAAA;AAAA;QAGnJL,uBAAgB,8CAAA,CAAA;AAAA,QAChBI,sBAAA;AAAA,UA8CM,KAAA;AAAA,UAAA;AAAA,YA9CA,yBAAO,CAAAC,SAAA,CAAS,SAAA,CAAA,GAAA,uCAAA,uBAAA,CAAA;AAAA;;YACrBD,sBAyBM,CAAA,KAAA,EAAA,EAzBD,KAAA,EAAM,8BAA4B,EAAA;AAAA,cACtCJ,uBAAsE,2EAAA,CAAA;AAAA,cACnDK,UAAU,UAAA,CAAA,qBAA7BJ,gBAQcK,kBAAA,EAAA;AAAA;uBARqB,EAAA,eAAA;AAAA,gBAAJ,GAAI,EAAA,aAAA;AAAA,gBAAiB,aAAW,QAAQ,CAAA,KAAA;AAAA,gBAAG,YAAa,EAAA,UAAA;AAAA;qCACtF,MAMS;AAAA,kBANKD,SAAU,CAAA,UAAA,oBAAxB,EAAAP,sBAAA;AAAA,oBAMS,QAAA;AAAA,oBAAA;AAAA;sBANiB,KAAA,EAAKS,mBAAA,CAAC,6CAAA,EAA6C,EAAA,QAAqB,EAAA,OAAA,CAAS,SAAA,EAAA,CAAA,CAAA;AAAA;;sBAC1GH,sBAA8C,CAAA,KAAA,EAAA,EAAzC,KAAA,EAAM,8BAA4B,CAAA;AAAA,sBACvCA,sBAGM,CAAA,KAAA,EAAA,EAHD,KAAA,EAAM,qCAAmC,EAAA;AAAA,wBAC7CA,sBAAA,CAAiB,WAAd,oDAAU,CAAA;AAAA,wBACbA,sBAAA;AAAA,0BAA0G,GAAA;AAAA,0BAAvG,IAAA;AAAA,0BAAA,gCAAA,GAAQI,oBAAAH,SAAA,CAAA,YAAA,EAAa,IAAI,CAAA,QAAA,KAAA,+HAAA,CAAA;AAAA,0BAAA,CAAA;AAAA;AAAA,yBAAA;AAAA;;;;;;;;;cAKjBA,UAAS,SAAA,CAAA,qBAAvBP,uBAGS,QAAA,EAAA;AAAA;gBAHgB,KAAM,EAAA,6CAAA;AAAA,gBAA+C,OAAO,EAAA,gBAAA;AAAA;gBACpFM,sBAA8C,CAAA,KAAA,EAAA,EAAzC,KAAA,EAAM,8BAA4B,CAAA;AAAA,gBACvCA,uBAA8C,KAAzC,EAAA,EAAA,KAAM,EAAA,wBAAA,IAAyB,0BAAI,CAAA;AAAA;cAEzCJ,uBAAoC,+BAAA,CAAA;AAAA,cAChB,eAAA,KAAe,CAAA,MAAA,GAAM,sBAAzCC,gBAA+FQ,oBAAA,EAAA;AAAA;4BAAvC,SAAS,CAAA,KAAA;AAAA,8CAAT,KAAA,SAAA,CAAS,KAAA,GAAA,MAAA;AAAA,gBAAG,SAAS,cAAc,CAAA,KAAA;AAAA;cAE3FT,uBAAyB,qFAAA,CAAA;AAAA,cACXK,SAAS,CAAA,SAAA,oBAAvB,EAAAP,sBAAA;AAAA,gBAGS,QAAA;AAAA,gBAAA;AAAA;kBAHgB,KAAM,EAAAS,kBAAA,CAAA,CAAA,sBAAA,EAA0C,EAAA,OAAA,EAAA,OAAA,CAAA,kBAAA,UAA8B,EAAA,OAAA,CAAS,SAAA,EAAA,CAAA,CAAA;AAAA,kBAAK,OAAO,EAAA,uBAAA;AAAA;;kBAC3HH,sBAA6C,CAAA,KAAA,EAAA,EAAxC,KAAA,EAAM,6BAA2B,CAAA;AAAA,kBACtCA,uBAAiD,KAA5C,EAAA,EAAA,KAAM,EAAA,2BAAA,IAA4B,0BAAI,CAAA;AAAA;;;;cAE5CL,cAAA,CAAmC,IAAA,CAAA,MAAA,EAAA,gBAAA,CAAA;AAAA;YAEpCK,sBAkBM,CAAA,KAAA,EAAA,EAlBD,KAAA,EAAM,+BAA6B,EAAA;AAAA,cACvCJ,uBAAW,gBAAA,CAAA;AAAA,cACOK,UAAU,UAAA,CAAA,qBAA5BJ,gBAAsES,kBAAA,EAAA;AAAA;gBAAvC,YAAc,EAAA,UAAA;AAAA;cAC7CV,uBAAa,4BAAA,CAAA;AAAA,cACSK,UAAiB,iBAAA,CAAA,qBAAvCJ,gBAAoIU,qBAAA,EAAA;AAAA;gBAA1F,oBAAsB,EAAA,kBAAA;AAAA,gBAAqB,eAAe,EAAA,aAAA;AAAA;cACpGX,uBAAW,gBAAA,CAAA;AAAA,cACEK,SAAS,CAAA,SAAA,oBAAtB,EAAAJ,eAAA;AAAA,gBAA0EW,iBAAA;AAAA,gBAAA;AAAA;yBAA9C,EAAA,UAAA;AAAA,kBAAJ,GAAI,EAAA,QAAA;AAAA,kBAAY,YAAc,EAAA,UAAA;AAAA;;;;;cACtDb,cAAA,CAA2B,IAAA,CAAA,MAAA,EAAA,QAAA,CAAA;AAAA,cAC3BA,cAAA,CAAoC,IAAA,CAAA,MAAA,EAAA,iBAAA,CAAA;AAAA,cACpCC,uBAAa,4BAAA,CAAA;AAAA,eACE,OAAS,CAAA,SAAA,qBAAxBF,uBAES,QAAA,EAAA;AAAA;gBAFiB,KAAM,EAAA,qBAAA;AAAA,gBAAuB,QAAA,GAAW,OAAU,CAAA,UAAA,CAAC,MAAW,IAAA,CAAA,SAAA,KAAS,CAAA,MAAA;AAAA,gBAAS,OAAO,EAAA,UAAA;AAAA;gBAChHM,sBAA4C,CAAA,KAAA,EAAA,EAAvC,KAAA,EAAM,4BAA0B,CAAA;AAAA,qDAItC,EAAAN,sBAAA;AAAA,gBAESe,YAAA;AAAA,gBAAA,EAAA,KAAA,CAAA,EAAA;AAAA,gBAAA;AAAA,kBAHTb,uBAAa,4BAAA,CAAA;AAAA,kBACbI,uBAES,QAAA,EAAA;AAAA,oBAFM,KAAM,EAAA,qBAAA;AAAA,oBAAuB,OAAO,EAAA,UAAA;AAAA;oBAClDA,sBAA4C,CAAA,KAAA,EAAA,EAAvC,KAAA,EAAM,4BAA0B,CAAA;AAAA;;;;;;;;;;QAIxCU,gBAA2FC,iBAAA,EAAA;AAAA,UAA/E,oBAAkB,cAAc,CAAA,KAAA;AAAA,UAAG,yBAAkB,KAAA,cAAA,CAAc,KAAA,GAAA,KAAA;AAAA;;;;;;;;"}
@@ -310,7 +310,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
310
310
  key: item.id,
311
311
  ref_for: true,
312
312
  ref: (el) => setHistoryItemRef(item.id, el),
313
- class: vue.normalizeClass([item.id === _ctx.activeChat ? "is-on" : "", "touchchat-history-item"]),
313
+ class: vue.normalizeClass([item.id === __props.activeChat ? "is-on" : "", "touchchat-history-item"]),
314
314
  onClick: ($event) => handleSelectChat(item.id)
315
315
  }, [
316
316
  vue.createElementVNode(
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryList.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/HistoryList.vue"],"sourcesContent":["<template>\n\t<div ref=\"historyListRef\" class=\"touchchat-history\" :class=\"{ 'is-robot': isRobot }\" @scroll=\"handleScroll\">\n\t\t<!-- 动态时间分组 -->\n\t\t<div v-for=\"group in groupedChatHistory\" :key=\"group.groupKey\" class=\"touchchat-history-group\">\n\t\t\t<!-- 分组标题 -->\n\t\t\t<div class=\"touchchat-history-title\">\n\t\t\t\t<div class=\"touchchat-history-title-icon\"></div>\n\t\t\t\t<div class=\"touchchat-history-title-text\">\n\t\t\t\t\t{{ group.groupName }}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!-- 分组内对话项 -->\n\t\t\t<div class=\"touchchat-history-content\">\n\t\t\t\t<div v-for=\"item in group.items\" :key=\"item.id\" :ref=\"el => setHistoryItemRef(item.id, el as HTMLElement)\" :class=\"[item.id === activeChat ? 'is-on' : '', 'touchchat-history-item']\" @click=\"handleSelectChat(item.id)\">\n\t\t\t\t\t<div :ref=\"el => setTooltipContainerRef(item.id, el as HTMLElement)\" class=\"touchchat-history-item-text\" style=\"flex: 1\">\n\t\t\t\t\t\t<template v-if=\"editingId === item.id\">\n\t\t\t\t\t\t\t<div class=\"touchchat-history-input\">\n\t\t\t\t\t\t\t\t<input :ref=\"el => setEditInputRef(item.id, el as HTMLInputElement)\" v-model=\"editTitle\" @blur=\"handleRenameComplete(item.id)\" @keyup.enter=\"handleRenameComplete(item.id)\" @click.stop />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t\t{{ item.title || '新对话' }}\n\t\t\t\t\t\t\t<div v-if=\"shouldShowTooltip(item.id, item.title)\" ref=\"tooltipRef\" class=\"touchchat-tooltip\">\n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<!-- 菜单显示状态 - 添加条件判断隐藏操作按钮 -->\n\t\t\t\t\t<div v-if=\"editingId !== item.id\" class=\"touchchat-history-fn\">\n\t\t\t\t\t\t<button class=\"touchchat-history-more\" @click.stop=\"handleToggleActionMenu(item.id)\">\n\t\t\t\t\t\t\t<div class=\"touchchat-history-more-icon\"></div>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<div v-if=\"state.actionMenuVisible[item.id]\" :ref=\"el => (actionMenus[item.id] = el as HTMLElement)\" class=\"touchchat-history-float\" @mouseenter=\"preventMenuClose\" @mouseleave=\"delayedCloseMenu(item.id)\">\n\t\t\t\t\t\t\t<div class=\"touchchat-history-rename\" @click.stop=\"handleStartRename(item.id)\">\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-rename-icon\"></span>\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-rename-text\">重命名</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"touchchat-history-remove\" @click.stop=\"handleMenuAction('delete', item.id)\">\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-remove-icon\"></span>\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-remove-text\">删除</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div v-if=\"isDeleteDialogVisible\" class=\"delete-dialog-overlay\">\n\t\t\t<div class=\"delete-dialog\">\n\t\t\t\t<div class=\"delete-dialog-title\">永久删除对话</div>\n\t\t\t\t<div class=\"delete-dialog-content\">删除后,该对话将不可恢复。确认删除吗?</div>\n\t\t\t\t<div class=\"delete-dialog-actions\">\n\t\t\t\t\t<button class=\"delete-dialog-cancel\" @click=\"handleCancelDelete\">取消</button>\n\t\t\t\t\t<button class=\"delete-dialog-confirm\" @click=\"handleConfirmDelete\">确认</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, reactive, nextTick, computed, watch, inject } from 'vue'\n\n// 类型定义\ninterface ChatMessage {\n\tchatId?: string\n\tuser: string\n\ttype: string\n\tcontent: string\n\tisShowAvatar?: boolean\n\tavatar?: string\n\tisChating?: boolean\n\tthinkContent?: string\n\treasoningContent?: string\n}\n\ninterface HistoryItem {\n\tid: string\n\ttitle: string\n\ttime: Date\n\ttype: string\n\tmessages?: ChatMessage[]\n}\n\ninterface GroupedChat {\n\tgroupKey: string\n\tgroupName: string\n\titems: HistoryItem[]\n}\n\n// Props\nconst props = defineProps<{\n\tactiveChat: string\n\tchatHistory: HistoryItem[]\n}>()\n\nconst isDeleteDialogVisible = ref(false)\nconst deletingId = ref('')\n\nconst isRobot = inject('scripts', []).length > 0\n\n// Emits\nconst emit = defineEmits<{\n\t(e: 'select-chat', id: string): void\n\t(e: 'rename-chat', id: string, newTitle: string): void\n\t(e: 'delete-chat', id: string): void\n}>()\n\n// 内部状态\nconst actionMenus = ref<Record<string, HTMLElement | null>>({})\nconst tooltipContainerRefs = ref<Record<string, HTMLElement | null>>({})\nconst editingId = ref<string | null>(null)\nconst editTitle = ref('')\nconst editInputRefs = ref<Record<string, HTMLInputElement | null>>({}) // 修改为对象存储多个引用\n\n// 设置输入框引用\nconst setEditInputRef = (id: string, el: HTMLInputElement | null) => {\n\teditInputRefs.value[id] = el\n}\n\nconst setTooltipContainerRef = (id: string, el: HTMLElement | null) => {\n\ttooltipContainerRefs.value[id] = el\n}\n\nconst state = reactive<{\n\tactionMenuVisible: Record<string, boolean>\n}>({\n\tactionMenuVisible: {}\n})\n\nconst sideBottom = inject<() => void>('sideBottom', () => {\n\tconsole.warn('未提供bottom函数')\n})\n\n// 开始重命名\nlet scrollTimeout: ReturnType<typeof setTimeout> | null = null\nconst handleScroll = (event: Event) => {\n\tif (scrollTimeout) {\n\t\tclearTimeout(scrollTimeout)\n\t}\n\tscrollTimeout = setTimeout(() => {\n\t\tconst container = event.target as HTMLElement\n\t\tconst { scrollTop, scrollHeight, clientHeight } = container\n\t\tconst isBottom = scrollHeight - scrollTop <= clientHeight + 10 // 10px 缓冲\n\t\tif (isBottom) {\n\t\t\tsideBottom()\n\t\t}\n\t}, 200)\n}\n\nconst handleStartRename = (id: string) => {\n\tconst item = props.chatHistory.find(item => item.id === id)\n\tif (item) {\n\t\teditingId.value = id\n\t\teditTitle.value = item.title || ''\n\t\tstate.actionMenuVisible[id] = false\n\t\tnextTick(() => {\n\t\t\teditInputRefs.value[id]?.focus()\n\t\t})\n\t}\n}\n\n// 完成重命名\nconst handleRenameComplete = (id: string) => {\n\tif (editingId.value === id) {\n\t\tconst trimmedTitle = editTitle.value.trim()\n\t\tif (trimmedTitle) {\n\t\t\temit('rename-chat', id, trimmedTitle)\n\t\t}\n\t\teditingId.value = null\n\t}\n}\n\n// 时间分组辅助函数\nconst getGroupKey = (date: Date): string => {\n\tconst now = new Date()\n\tconst today = new Date(now.getFullYear(), now.getMonth(), now.getDate())\n\tconst yesterday = new Date(today)\n\tyesterday.setDate(yesterday.getDate() - 1)\n\tconst sevenDaysAgo = new Date(today)\n\tsevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7)\n\tconst thirtyDaysAgo = new Date(today)\n\tthirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30)\n\n\tconst targetDate = new Date(date)\n\tconst targetDateNormalized = new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate())\n\n\tif (targetDateNormalized >= today) return 'today'\n\tif (targetDateNormalized >= yesterday) return 'yesterday'\n\tif (targetDate >= sevenDaysAgo) return 'sevenDays'\n\tif (targetDate >= thirtyDaysAgo) return 'thirtyDays'\n\treturn `${targetDate.getFullYear()}-${String(targetDate.getMonth() + 1).padStart(2, '0')}`\n}\n\n// 格式化分组名称\nconst formatGroupName = (key: string): string => {\n\tswitch (key) {\n\t\tcase 'today':\n\t\t\treturn '今天'\n\t\tcase 'yesterday':\n\t\t\treturn '昨天'\n\t\tcase 'sevenDays':\n\t\t\treturn '7天内'\n\t\tcase 'thirtyDays':\n\t\t\treturn '30天内'\n\t\tdefault:\n\t\t\treturn key\n\t}\n}\n\nconst handleMenuAction = (action: string, id: string) => {\n\tif (action === 'delete') {\n\t\tdeletingId.value = id\n\t\tisDeleteDialogVisible.value = true\n\t}\n}\n\nconst handleConfirmDelete = () => {\n\temit('delete-chat', deletingId.value)\n\tisDeleteDialogVisible.value = false\n}\n\nconst handleCancelDelete = () => {\n\tisDeleteDialogVisible.value = false\n}\n\n// 按时间分组的计算属性\nconst groupedChatHistory = computed<GroupedChat[]>(() => {\n\tif (props.chatHistory.length === 0) return []\n\tconst filterHistory = props.chatHistory.filter(item => item.type === '')\n\t// 复制并排序对话(最新的在前)\n\tconst sortedChats = [...filterHistory].sort((a, b) => new Date(b.time).getTime() - new Date(a.time).getTime())\n\n\t// 分组处理\n\tconst groups: Record<string, HistoryItem[]> = {}\n\tsortedChats.forEach(chat => {\n\t\tconst key = getGroupKey(new Date(chat.time))\n\t\tif (!groups[key]) groups[key] = []\n\t\tgroups[key].push(chat)\n\t})\n\n\t// 转换为有序数组\n\treturn Object.entries(groups)\n\t\t.map(([key, items]) => ({\n\t\t\tgroupKey: key,\n\t\t\tgroupName: formatGroupName(key),\n\t\t\titems\n\t\t}))\n\t\t.sort((a, b) => {\n\t\t\t// 自定义排序确保分组顺序正确\n\t\t\tconst order: Record<string, number> = {\n\t\t\t\ttoday: 0,\n\t\t\t\tyesterday: 1,\n\t\t\t\tsevenDays: 2,\n\t\t\t\tthirtyDays: 3\n\t\t\t}\n\t\t\treturn (order[a.groupKey] ?? 100) - (order[b.groupKey] ?? 100) || b.groupKey.localeCompare(a.groupKey)\n\t\t})\n})\n\n// 修改缓存类型定义\ninterface TooltipCacheItem {\n\tvalue: boolean\n\ttimestamp: number\n}\n\n// 使用Map存储每个ID的测量结果,避免重复计算\nconst tooltipMeasurementCache = new Map<string, TooltipCacheItem>()\n\nconst clearTooltipCache = () => {\n\ttooltipMeasurementCache.clear()\n}\n\nwatch(() => props.chatHistory, clearTooltipCache)\n\n// 改进shouldShowTooltip函数\nconst shouldShowTooltip = (id: string, title: string) => {\n\tif (!title || editingId.value === id) return false\n\n\t// 获取容器元素\n\tconst containerEl = tooltipContainerRefs.value[id]\n\tif (!containerEl) {\n\t\treturn false\n\t}\n\n\t// 强制重新计算布局\n\tcontainerEl.getBoundingClientRect()\n\t// 获取容器的实际宽度(包括padding和border)\n\tconst containerStyle = window.getComputedStyle(containerEl)\n\tconst containerWidth = containerEl.offsetWidth\n\tconst containerPaddingX = parseFloat(containerStyle.paddingLeft) + parseFloat(containerStyle.paddingRight)\n\tconst containerBorderX = parseFloat(containerStyle.borderLeftWidth) + parseFloat(containerStyle.borderRightWidth)\n\t// 内容区域宽度 = 总宽度 - padding - border\n\tconst contentWidth = containerWidth - containerPaddingX - containerBorderX\n\n\t// 如果容器宽度为0,不缓存结果,返回false\n\tif (containerWidth === 0) {\n\t\treturn false\n\t}\n\n\t// 检查缓存,但添加时间戳以支持定期更新\n\tconst now = Date.now()\n\tconst cacheKey = `${id}_${containerWidth}_${contentWidth}` // 改进缓存键\n\tif (tooltipMeasurementCache.has(cacheKey)) {\n\t\tconst cached = tooltipMeasurementCache.get(cacheKey)\n\t\t// 如果缓存项存在且未过期(5秒)\n\t\tif (cached && now - cached.timestamp < 5000) {\n\t\t\treturn cached.value\n\t\t}\n\t}\n\n\t// 创建临时元素测量文本宽度\n\tconst tempElement = document.createElement('span')\n\ttempElement.className = 'history-title'\n\ttempElement.textContent = title\n\n\t// 复制实际元素的样式\n\tconst historyTitleEl = containerEl.querySelector('.history-title')\n\tif (historyTitleEl) {\n\t\tconst titleStyle = window.getComputedStyle(historyTitleEl)\n\t\t// 复制所有相关样式\n\t\ttempElement.style.fontSize = titleStyle.fontSize\n\t\ttempElement.style.fontFamily = titleStyle.fontFamily\n\t\ttempElement.style.fontWeight = titleStyle.fontWeight\n\t\ttempElement.style.letterSpacing = titleStyle.letterSpacing\n\t\ttempElement.style.wordSpacing = titleStyle.wordSpacing\n\t\ttempElement.style.textTransform = titleStyle.textTransform\n\t}\n\n\ttempElement.style.visibility = 'hidden'\n\ttempElement.style.position = 'absolute'\n\ttempElement.style.whiteSpace = 'nowrap'\n\tdocument.body.appendChild(tempElement)\n\n\t// 强制重绘\n\ttempElement.getBoundingClientRect()\n\tconst textWidth = tempElement.offsetWidth\n\n\tdocument.body.removeChild(tempElement)\n\n\t// 添加5px阈值,避免边框等因素导致的误差\n\tconst shouldShow = textWidth > contentWidth + 5\n\n\t// 缓存结果,包含时间戳\n\ttooltipMeasurementCache.set(cacheKey, {\n\t\tvalue: shouldShow,\n\t\ttimestamp: now\n\t})\n\n\treturn shouldShow\n}\n\n// 事件处理\nconst handleSelectChat = (id: string) => {\n\tif (editingId.value === null) {\n\t\temit('select-chat', id)\n\t\tresetAllMenus()\n\t}\n}\n\nconst resetAllMenus = () => {\n\tObject.keys(state.actionMenuVisible).forEach(key => {\n\t\tstate.actionMenuVisible[key] = false\n\t})\n}\n\nconst handleToggleActionMenu = (id: string, event?: MouseEvent) => {\n\tif (editingId.value === null) {\n\t\tevent?.stopPropagation()\n\t\tprops.chatHistory.forEach(item => {\n\t\t\titem.id !== id && (state.actionMenuVisible[item.id] = false)\n\t\t})\n\t\tstate.actionMenuVisible[id] = !state.actionMenuVisible[id]\n\n\t\t// 添加动态定位逻辑\n\t\tif (state.actionMenuVisible[id]) {\n\t\t\tpositionActionMenu(id)\n\t\t}\n\t}\n}\n\n// 添加对history-group容器的引用\nconst historyListRef = ref<HTMLUListElement | null>(null)\n\n// 添加对历史记录项的引用\nconst historyItemRefs = ref<Record<string, HTMLElement | null>>({})\n\nconst setHistoryItemRef = (id: string, el: HTMLElement | null) => {\n\thistoryItemRefs.value[id] = el\n}\n\n// 添加菜单定位函数\nconst positionActionMenu = (id: string) => {\n\tnextTick(() => {\n\t\tconst menuEl = actionMenus.value[id]\n\t\tconst historyItemEl = historyItemRefs.value[id]\n\t\tif (!menuEl || !historyItemEl || !historyListRef.value) return\n\n\t\t// 重置样式\n\t\tmenuEl.style.top = ''\n\t\tmenuEl.style.bottom = ''\n\t\tmenuEl.style.transform = ''\n\t\tmenuEl.style.marginTop = ''\n\t\tmenuEl.style.position = 'absolute'\n\n\t\tconst menuHeight = menuEl.offsetHeight\n\t\tconst historyItemRect = historyItemEl.getBoundingClientRect()\n\t\tconst listRect = historyListRef.value.getBoundingClientRect()\n\t\tconst buttonEl = menuEl.previousElementSibling as HTMLElement\n\n\t\t// 计算历史记录项底部到列表容器底部的距离\n\t\tconst distanceToBottom = listRect.bottom - historyItemRect.bottom\n\n\t\t// 如果距离小于菜单高度,则显示在上方\n\t\tif (distanceToBottom < menuHeight) {\n\t\t\tif (buttonEl) {\n\t\t\t\t// const buttonRect = buttonEl.getBoundingClientRect();\n\t\t\t\t// 直接设置菜单顶部位置为按钮顶部减去菜单高度\n\t\t\t\tmenuEl.style.top = `${-menuHeight}px`\n\t\t\t\tmenuEl.style.bottom = 'auto'\n\t\t\t\tmenuEl.style.transform = 'none'\n\t\t\t}\n\t\t} else {\n\t\t\t// 否则显示在下方\n\t\t\tmenuEl.style.top = '100%'\n\t\t\tmenuEl.style.bottom = 'auto'\n\t\t\tmenuEl.style.transform = 'translateY(0)'\n\t\t}\n\t})\n}\n\n// 添加菜单关闭延迟逻辑\nlet menuCloseTimer: number | null = null\n\nconst preventMenuClose = () => {\n\tif (menuCloseTimer) {\n\t\tclearTimeout(menuCloseTimer)\n\t\tmenuCloseTimer = null\n\t}\n}\n\nconst delayedCloseMenu = (id: string) => {\n\tpreventMenuClose()\n\tmenuCloseTimer = window.setTimeout(() => {\n\t\tstate.actionMenuVisible[id] = false\n\t}, 200)\n}\n</script>\n"],"names":["ref","inject","reactive","item","nextTick","computed","watch","_createElementBlock","_normalizeClass","_createCommentVNode","_Fragment","_renderList","_createElementVNode","_toDisplayString","_openBlock","activeChat","_withKeys","_withModifiers"],"mappings":"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"}
1
+ {"version":3,"file":"HistoryList.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/HistoryList.vue"],"sourcesContent":["<template>\n\t<div ref=\"historyListRef\" class=\"touchchat-history\" :class=\"{ 'is-robot': isRobot }\" @scroll=\"handleScroll\">\n\t\t<!-- 动态时间分组 -->\n\t\t<div v-for=\"group in groupedChatHistory\" :key=\"group.groupKey\" class=\"touchchat-history-group\">\n\t\t\t<!-- 分组标题 -->\n\t\t\t<div class=\"touchchat-history-title\">\n\t\t\t\t<div class=\"touchchat-history-title-icon\"></div>\n\t\t\t\t<div class=\"touchchat-history-title-text\">\n\t\t\t\t\t{{ group.groupName }}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!-- 分组内对话项 -->\n\t\t\t<div class=\"touchchat-history-content\">\n\t\t\t\t<div v-for=\"item in group.items\" :key=\"item.id\" :ref=\"el => setHistoryItemRef(item.id, el as HTMLElement)\" :class=\"[item.id === activeChat ? 'is-on' : '', 'touchchat-history-item']\" @click=\"handleSelectChat(item.id)\">\n\t\t\t\t\t<div :ref=\"el => setTooltipContainerRef(item.id, el as HTMLElement)\" class=\"touchchat-history-item-text\" style=\"flex: 1\">\n\t\t\t\t\t\t<template v-if=\"editingId === item.id\">\n\t\t\t\t\t\t\t<div class=\"touchchat-history-input\">\n\t\t\t\t\t\t\t\t<input :ref=\"el => setEditInputRef(item.id, el as HTMLInputElement)\" v-model=\"editTitle\" @blur=\"handleRenameComplete(item.id)\" @keyup.enter=\"handleRenameComplete(item.id)\" @click.stop />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t\t{{ item.title || '新对话' }}\n\t\t\t\t\t\t\t<div v-if=\"shouldShowTooltip(item.id, item.title)\" ref=\"tooltipRef\" class=\"touchchat-tooltip\">\n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<!-- 菜单显示状态 - 添加条件判断隐藏操作按钮 -->\n\t\t\t\t\t<div v-if=\"editingId !== item.id\" class=\"touchchat-history-fn\">\n\t\t\t\t\t\t<button class=\"touchchat-history-more\" @click.stop=\"handleToggleActionMenu(item.id)\">\n\t\t\t\t\t\t\t<div class=\"touchchat-history-more-icon\"></div>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<div v-if=\"state.actionMenuVisible[item.id]\" :ref=\"el => (actionMenus[item.id] = el as HTMLElement)\" class=\"touchchat-history-float\" @mouseenter=\"preventMenuClose\" @mouseleave=\"delayedCloseMenu(item.id)\">\n\t\t\t\t\t\t\t<div class=\"touchchat-history-rename\" @click.stop=\"handleStartRename(item.id)\">\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-rename-icon\"></span>\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-rename-text\">重命名</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"touchchat-history-remove\" @click.stop=\"handleMenuAction('delete', item.id)\">\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-remove-icon\"></span>\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-remove-text\">删除</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div v-if=\"isDeleteDialogVisible\" class=\"delete-dialog-overlay\">\n\t\t\t<div class=\"delete-dialog\">\n\t\t\t\t<div class=\"delete-dialog-title\">永久删除对话</div>\n\t\t\t\t<div class=\"delete-dialog-content\">删除后,该对话将不可恢复。确认删除吗?</div>\n\t\t\t\t<div class=\"delete-dialog-actions\">\n\t\t\t\t\t<button class=\"delete-dialog-cancel\" @click=\"handleCancelDelete\">取消</button>\n\t\t\t\t\t<button class=\"delete-dialog-confirm\" @click=\"handleConfirmDelete\">确认</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, reactive, nextTick, computed, watch, inject } from 'vue'\n\n// 类型定义\ninterface ChatMessage {\n\tchatId?: string\n\tuser: string\n\ttype: string\n\tcontent: string\n\tisShowAvatar?: boolean\n\tavatar?: string\n\tisChating?: boolean\n\tthinkContent?: string\n\treasoningContent?: string\n}\n\ninterface HistoryItem {\n\tid: string\n\ttitle: string\n\ttime: Date\n\ttype: string\n\tmessages?: ChatMessage[]\n}\n\ninterface GroupedChat {\n\tgroupKey: string\n\tgroupName: string\n\titems: HistoryItem[]\n}\n\n// Props\nconst props = defineProps<{\n\tactiveChat: string\n\tchatHistory: HistoryItem[]\n}>()\n\nconst isDeleteDialogVisible = ref(false)\nconst deletingId = ref('')\n\nconst isRobot = inject('scripts', []).length > 0\n\n// Emits\nconst emit = defineEmits<{\n\t(e: 'select-chat', id: string): void\n\t(e: 'rename-chat', id: string, newTitle: string): void\n\t(e: 'delete-chat', id: string): void\n}>()\n\n// 内部状态\nconst actionMenus = ref<Record<string, HTMLElement | null>>({})\nconst tooltipContainerRefs = ref<Record<string, HTMLElement | null>>({})\nconst editingId = ref<string | null>(null)\nconst editTitle = ref('')\nconst editInputRefs = ref<Record<string, HTMLInputElement | null>>({}) // 修改为对象存储多个引用\n\n// 设置输入框引用\nconst setEditInputRef = (id: string, el: HTMLInputElement | null) => {\n\teditInputRefs.value[id] = el\n}\n\nconst setTooltipContainerRef = (id: string, el: HTMLElement | null) => {\n\ttooltipContainerRefs.value[id] = el\n}\n\nconst state = reactive<{\n\tactionMenuVisible: Record<string, boolean>\n}>({\n\tactionMenuVisible: {}\n})\n\nconst sideBottom = inject<() => void>('sideBottom', () => {\n\tconsole.warn('未提供bottom函数')\n})\n\n// 开始重命名\nlet scrollTimeout: ReturnType<typeof setTimeout> | null = null\nconst handleScroll = (event: Event) => {\n\tif (scrollTimeout) {\n\t\tclearTimeout(scrollTimeout)\n\t}\n\tscrollTimeout = setTimeout(() => {\n\t\tconst container = event.target as HTMLElement\n\t\tconst { scrollTop, scrollHeight, clientHeight } = container\n\t\tconst isBottom = scrollHeight - scrollTop <= clientHeight + 10 // 10px 缓冲\n\t\tif (isBottom) {\n\t\t\tsideBottom()\n\t\t}\n\t}, 200)\n}\n\nconst handleStartRename = (id: string) => {\n\tconst item = props.chatHistory.find(item => item.id === id)\n\tif (item) {\n\t\teditingId.value = id\n\t\teditTitle.value = item.title || ''\n\t\tstate.actionMenuVisible[id] = false\n\t\tnextTick(() => {\n\t\t\teditInputRefs.value[id]?.focus()\n\t\t})\n\t}\n}\n\n// 完成重命名\nconst handleRenameComplete = (id: string) => {\n\tif (editingId.value === id) {\n\t\tconst trimmedTitle = editTitle.value.trim()\n\t\tif (trimmedTitle) {\n\t\t\temit('rename-chat', id, trimmedTitle)\n\t\t}\n\t\teditingId.value = null\n\t}\n}\n\n// 时间分组辅助函数\nconst getGroupKey = (date: Date): string => {\n\tconst now = new Date()\n\tconst today = new Date(now.getFullYear(), now.getMonth(), now.getDate())\n\tconst yesterday = new Date(today)\n\tyesterday.setDate(yesterday.getDate() - 1)\n\tconst sevenDaysAgo = new Date(today)\n\tsevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7)\n\tconst thirtyDaysAgo = new Date(today)\n\tthirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30)\n\n\tconst targetDate = new Date(date)\n\tconst targetDateNormalized = new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate())\n\n\tif (targetDateNormalized >= today) return 'today'\n\tif (targetDateNormalized >= yesterday) return 'yesterday'\n\tif (targetDate >= sevenDaysAgo) return 'sevenDays'\n\tif (targetDate >= thirtyDaysAgo) return 'thirtyDays'\n\treturn `${targetDate.getFullYear()}-${String(targetDate.getMonth() + 1).padStart(2, '0')}`\n}\n\n// 格式化分组名称\nconst formatGroupName = (key: string): string => {\n\tswitch (key) {\n\t\tcase 'today':\n\t\t\treturn '今天'\n\t\tcase 'yesterday':\n\t\t\treturn '昨天'\n\t\tcase 'sevenDays':\n\t\t\treturn '7天内'\n\t\tcase 'thirtyDays':\n\t\t\treturn '30天内'\n\t\tdefault:\n\t\t\treturn key\n\t}\n}\n\nconst handleMenuAction = (action: string, id: string) => {\n\tif (action === 'delete') {\n\t\tdeletingId.value = id\n\t\tisDeleteDialogVisible.value = true\n\t}\n}\n\nconst handleConfirmDelete = () => {\n\temit('delete-chat', deletingId.value)\n\tisDeleteDialogVisible.value = false\n}\n\nconst handleCancelDelete = () => {\n\tisDeleteDialogVisible.value = false\n}\n\n// 按时间分组的计算属性\nconst groupedChatHistory = computed<GroupedChat[]>(() => {\n\tif (props.chatHistory.length === 0) return []\n\tconst filterHistory = props.chatHistory.filter(item => item.type === '')\n\t// 复制并排序对话(最新的在前)\n\tconst sortedChats = [...filterHistory].sort((a, b) => new Date(b.time).getTime() - new Date(a.time).getTime())\n\n\t// 分组处理\n\tconst groups: Record<string, HistoryItem[]> = {}\n\tsortedChats.forEach(chat => {\n\t\tconst key = getGroupKey(new Date(chat.time))\n\t\tif (!groups[key]) groups[key] = []\n\t\tgroups[key].push(chat)\n\t})\n\n\t// 转换为有序数组\n\treturn Object.entries(groups)\n\t\t.map(([key, items]) => ({\n\t\t\tgroupKey: key,\n\t\t\tgroupName: formatGroupName(key),\n\t\t\titems\n\t\t}))\n\t\t.sort((a, b) => {\n\t\t\t// 自定义排序确保分组顺序正确\n\t\t\tconst order: Record<string, number> = {\n\t\t\t\ttoday: 0,\n\t\t\t\tyesterday: 1,\n\t\t\t\tsevenDays: 2,\n\t\t\t\tthirtyDays: 3\n\t\t\t}\n\t\t\treturn (order[a.groupKey] ?? 100) - (order[b.groupKey] ?? 100) || b.groupKey.localeCompare(a.groupKey)\n\t\t})\n})\n\n// 修改缓存类型定义\ninterface TooltipCacheItem {\n\tvalue: boolean\n\ttimestamp: number\n}\n\n// 使用Map存储每个ID的测量结果,避免重复计算\nconst tooltipMeasurementCache = new Map<string, TooltipCacheItem>()\n\nconst clearTooltipCache = () => {\n\ttooltipMeasurementCache.clear()\n}\n\nwatch(() => props.chatHistory, clearTooltipCache)\n\n// 改进shouldShowTooltip函数\nconst shouldShowTooltip = (id: string, title: string) => {\n\tif (!title || editingId.value === id) return false\n\n\t// 获取容器元素\n\tconst containerEl = tooltipContainerRefs.value[id]\n\tif (!containerEl) {\n\t\treturn false\n\t}\n\n\t// 强制重新计算布局\n\tcontainerEl.getBoundingClientRect()\n\t// 获取容器的实际宽度(包括padding和border)\n\tconst containerStyle = window.getComputedStyle(containerEl)\n\tconst containerWidth = containerEl.offsetWidth\n\tconst containerPaddingX = parseFloat(containerStyle.paddingLeft) + parseFloat(containerStyle.paddingRight)\n\tconst containerBorderX = parseFloat(containerStyle.borderLeftWidth) + parseFloat(containerStyle.borderRightWidth)\n\t// 内容区域宽度 = 总宽度 - padding - border\n\tconst contentWidth = containerWidth - containerPaddingX - containerBorderX\n\n\t// 如果容器宽度为0,不缓存结果,返回false\n\tif (containerWidth === 0) {\n\t\treturn false\n\t}\n\n\t// 检查缓存,但添加时间戳以支持定期更新\n\tconst now = Date.now()\n\tconst cacheKey = `${id}_${containerWidth}_${contentWidth}` // 改进缓存键\n\tif (tooltipMeasurementCache.has(cacheKey)) {\n\t\tconst cached = tooltipMeasurementCache.get(cacheKey)\n\t\t// 如果缓存项存在且未过期(5秒)\n\t\tif (cached && now - cached.timestamp < 5000) {\n\t\t\treturn cached.value\n\t\t}\n\t}\n\n\t// 创建临时元素测量文本宽度\n\tconst tempElement = document.createElement('span')\n\ttempElement.className = 'history-title'\n\ttempElement.textContent = title\n\n\t// 复制实际元素的样式\n\tconst historyTitleEl = containerEl.querySelector('.history-title')\n\tif (historyTitleEl) {\n\t\tconst titleStyle = window.getComputedStyle(historyTitleEl)\n\t\t// 复制所有相关样式\n\t\ttempElement.style.fontSize = titleStyle.fontSize\n\t\ttempElement.style.fontFamily = titleStyle.fontFamily\n\t\ttempElement.style.fontWeight = titleStyle.fontWeight\n\t\ttempElement.style.letterSpacing = titleStyle.letterSpacing\n\t\ttempElement.style.wordSpacing = titleStyle.wordSpacing\n\t\ttempElement.style.textTransform = titleStyle.textTransform\n\t}\n\n\ttempElement.style.visibility = 'hidden'\n\ttempElement.style.position = 'absolute'\n\ttempElement.style.whiteSpace = 'nowrap'\n\tdocument.body.appendChild(tempElement)\n\n\t// 强制重绘\n\ttempElement.getBoundingClientRect()\n\tconst textWidth = tempElement.offsetWidth\n\n\tdocument.body.removeChild(tempElement)\n\n\t// 添加5px阈值,避免边框等因素导致的误差\n\tconst shouldShow = textWidth > contentWidth + 5\n\n\t// 缓存结果,包含时间戳\n\ttooltipMeasurementCache.set(cacheKey, {\n\t\tvalue: shouldShow,\n\t\ttimestamp: now\n\t})\n\n\treturn shouldShow\n}\n\n// 事件处理\nconst handleSelectChat = (id: string) => {\n\tif (editingId.value === null) {\n\t\temit('select-chat', id)\n\t\tresetAllMenus()\n\t}\n}\n\nconst resetAllMenus = () => {\n\tObject.keys(state.actionMenuVisible).forEach(key => {\n\t\tstate.actionMenuVisible[key] = false\n\t})\n}\n\nconst handleToggleActionMenu = (id: string, event?: MouseEvent) => {\n\tif (editingId.value === null) {\n\t\tevent?.stopPropagation()\n\t\tprops.chatHistory.forEach(item => {\n\t\t\titem.id !== id && (state.actionMenuVisible[item.id] = false)\n\t\t})\n\t\tstate.actionMenuVisible[id] = !state.actionMenuVisible[id]\n\n\t\t// 添加动态定位逻辑\n\t\tif (state.actionMenuVisible[id]) {\n\t\t\tpositionActionMenu(id)\n\t\t}\n\t}\n}\n\n// 添加对history-group容器的引用\nconst historyListRef = ref<HTMLUListElement | null>(null)\n\n// 添加对历史记录项的引用\nconst historyItemRefs = ref<Record<string, HTMLElement | null>>({})\n\nconst setHistoryItemRef = (id: string, el: HTMLElement | null) => {\n\thistoryItemRefs.value[id] = el\n}\n\n// 添加菜单定位函数\nconst positionActionMenu = (id: string) => {\n\tnextTick(() => {\n\t\tconst menuEl = actionMenus.value[id]\n\t\tconst historyItemEl = historyItemRefs.value[id]\n\t\tif (!menuEl || !historyItemEl || !historyListRef.value) return\n\n\t\t// 重置样式\n\t\tmenuEl.style.top = ''\n\t\tmenuEl.style.bottom = ''\n\t\tmenuEl.style.transform = ''\n\t\tmenuEl.style.marginTop = ''\n\t\tmenuEl.style.position = 'absolute'\n\n\t\tconst menuHeight = menuEl.offsetHeight\n\t\tconst historyItemRect = historyItemEl.getBoundingClientRect()\n\t\tconst listRect = historyListRef.value.getBoundingClientRect()\n\t\tconst buttonEl = menuEl.previousElementSibling as HTMLElement\n\n\t\t// 计算历史记录项底部到列表容器底部的距离\n\t\tconst distanceToBottom = listRect.bottom - historyItemRect.bottom\n\n\t\t// 如果距离小于菜单高度,则显示在上方\n\t\tif (distanceToBottom < menuHeight) {\n\t\t\tif (buttonEl) {\n\t\t\t\t// const buttonRect = buttonEl.getBoundingClientRect();\n\t\t\t\t// 直接设置菜单顶部位置为按钮顶部减去菜单高度\n\t\t\t\tmenuEl.style.top = `${-menuHeight}px`\n\t\t\t\tmenuEl.style.bottom = 'auto'\n\t\t\t\tmenuEl.style.transform = 'none'\n\t\t\t}\n\t\t} else {\n\t\t\t// 否则显示在下方\n\t\t\tmenuEl.style.top = '100%'\n\t\t\tmenuEl.style.bottom = 'auto'\n\t\t\tmenuEl.style.transform = 'translateY(0)'\n\t\t}\n\t})\n}\n\n// 添加菜单关闭延迟逻辑\nlet menuCloseTimer: number | null = null\n\nconst preventMenuClose = () => {\n\tif (menuCloseTimer) {\n\t\tclearTimeout(menuCloseTimer)\n\t\tmenuCloseTimer = null\n\t}\n}\n\nconst delayedCloseMenu = (id: string) => {\n\tpreventMenuClose()\n\tmenuCloseTimer = window.setTimeout(() => {\n\t\tstate.actionMenuVisible[id] = false\n\t}, 200)\n}\n</script>\n"],"names":["ref","inject","reactive","item","nextTick","computed","watch","_createElementBlock","_normalizeClass","_createCommentVNode","_Fragment","_renderList","_createElementVNode","_toDisplayString","_openBlock","_withKeys","_withModifiers"],"mappings":"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"}
@@ -76,13 +76,13 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
76
76
  vue.createElementVNode("div", { class: "touchchat-add-text" }, "\u65B0\u5EFA\u5BF9\u8BDD")
77
77
  ]),
78
78
  vue.createVNode(AgentsView.default, {
79
- "active-chat": _ctx.activeChat,
79
+ "active-chat": __props.activeChat,
80
80
  onSelectChat: agentsSelectChat
81
81
  }, null, 8, ["active-chat"]),
82
82
  vue.createCommentVNode(" \u5F15\u5165\u5386\u53F2\u8BB0\u5F55\u5217\u8868\u7EC4\u4EF6 "),
83
83
  vue.createVNode(HistoryList.default, {
84
- "active-chat": _ctx.activeChat,
85
- "chat-history": _ctx.chatHistory,
84
+ "active-chat": __props.activeChat,
85
+ "chat-history": __props.chatHistory,
86
86
  onSelectChat: handleSelectChat,
87
87
  onRenameChat: handleRenameChat,
88
88
  onDeleteChat: remove
@@ -1 +1 @@
1
- {"version":3,"file":"HistorySidebar.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/HistorySidebar.vue"],"sourcesContent":["<template>\n\t<div class=\"touchchat-side\">\n\t\t<div class=\"touchchat-side-header\">\n\t\t\t<div class=\"touchchat-logo\">\n\t\t\t\t<div class=\"touchchat-logo-pic\"></div>\n\t\t\t\t<div class=\"touchchat-logo-text\">{{ title }}</div>\n\t\t\t</div>\n\t\t\t<div class=\"touchchat-side-fn\" @click=\"handleToggleSidebar\">\n\t\t\t\t<div class=\"touchchat-hidemenu\">\n\t\t\t\t\t<div class=\"touchchat-hidemenu-icon\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- 新对话按钮 -->\n\t\t<button class=\"touchchat-add\" @click=\"handleStartNewChat\">\n\t\t\t<div class=\"touchchat-add-icon\"></div>\n\t\t\t<div class=\"touchchat-add-text\">新建对话</div>\n\t\t</button>\n\n\t\t<agents-view :active-chat=\"activeChat\" @select-chat=\"agentsSelectChat\"></agents-view>\n\n\t\t<!-- 引入历史记录列表组件 -->\n\t\t<HistoryList :active-chat=\"activeChat\" :chat-history=\"chatHistory\" @select-chat=\"handleSelectChat\" @rename-chat=\"handleRenameChat\" @delete-chat=\"remove\" />\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\n// , watch\nimport { reactive, inject, ref } from 'vue'\nimport HistoryList from './HistoryList.vue'\nimport AgentsView from './AgentsView.vue'\n\n// 类型定义\ninterface ChatMessage {\n\tchatId?: string\n\tuser: string\n\ttype: string\n\tcontent: string\n\tisShowAvatar?: boolean\n\tavatar?: string\n\tisChating?: boolean\n\tthinkContent?: string\n\treasoningContent?: string\n}\n\ninterface HistoryItem {\n\tid: string\n\ttitle: string\n\ttime: Date\n\ttype: string\n\tmessages?: ChatMessage[]\n}\n\n// Props\nconst props = defineProps<{\n\tisSidebarCollapsed: boolean\n\tactiveChat: string\n\tchatHistory: HistoryItem[]\n}>()\n\n// watch(\n// \t() => props.chatHistory,\n// \tnewVal => {\n// \t\tconsole.log('props.chatHistory === HistorySidebar.vue === 162', newVal)\n// \t},\n// \t{ deep: true }\n// )\n\n// Emits\nconst emit = defineEmits<{\n\t(e: 'toggle-sidebar'): void\n\t(e: 'start-new-chat'): void\n\t(e: 'select-chat', id: string, type?: string): void\n\t(e: 'rename-chat', id: string, newTitle: string): void\n\t(e: 'delete-chat', id: string): void\n}>()\n\nconst title = ref(inject('title', 'TouchChat'))\n\n// 内部状态\nconst state = reactive<{\n\trenameInput: string\n\tcurrentRenameId: string\n}>({\n\trenameInput: '',\n\tcurrentRenameId: ''\n})\n\n// 处理重命名请求\nconst handleRenameChat = (id: string, title: string) => {\n\tconst item = props.chatHistory.find(item => item.id === id)\n\tif (item) {\n\t\tstate.currentRenameId = id\n\t\tstate.renameInput = item.title\n\t\temit('rename-chat', id, title)\n\t}\n}\n\n// 处理删除请求\nconst remove = (id: string) => {\n\temit('delete-chat', id)\n}\n\n// 其他事件处理\nconst handleToggleSidebar = () => {\n\temit('toggle-sidebar')\n}\n\nconst handleStartNewChat = () => {\n\temit('start-new-chat')\n}\n\nconst agentsSelectChat = (id: string) => {\n\thandleSelectChat(id, 'agents')\n}\n\nconst handleSelectChat = (id: string, type?: string) => {\n\temit('select-chat', id, type)\n}\n</script>\n"],"names":["ref","inject","reactive","title","item","_createElementBlock","_createElementVNode","_createCommentVNode","_createVNode","AgentsView","activeChat","HistoryList","chatHistory"],"mappings":"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"}
1
+ {"version":3,"file":"HistorySidebar.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/HistorySidebar.vue"],"sourcesContent":["<template>\n\t<div class=\"touchchat-side\">\n\t\t<div class=\"touchchat-side-header\">\n\t\t\t<div class=\"touchchat-logo\">\n\t\t\t\t<div class=\"touchchat-logo-pic\"></div>\n\t\t\t\t<div class=\"touchchat-logo-text\">{{ title }}</div>\n\t\t\t</div>\n\t\t\t<div class=\"touchchat-side-fn\" @click=\"handleToggleSidebar\">\n\t\t\t\t<div class=\"touchchat-hidemenu\">\n\t\t\t\t\t<div class=\"touchchat-hidemenu-icon\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- 新对话按钮 -->\n\t\t<button class=\"touchchat-add\" @click=\"handleStartNewChat\">\n\t\t\t<div class=\"touchchat-add-icon\"></div>\n\t\t\t<div class=\"touchchat-add-text\">新建对话</div>\n\t\t</button>\n\n\t\t<agents-view :active-chat=\"activeChat\" @select-chat=\"agentsSelectChat\"></agents-view>\n\n\t\t<!-- 引入历史记录列表组件 -->\n\t\t<HistoryList :active-chat=\"activeChat\" :chat-history=\"chatHistory\" @select-chat=\"handleSelectChat\" @rename-chat=\"handleRenameChat\" @delete-chat=\"remove\" />\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\n// , watch\nimport { reactive, inject, ref } from 'vue'\nimport HistoryList from './HistoryList.vue'\nimport AgentsView from './AgentsView.vue'\n\n// 类型定义\ninterface ChatMessage {\n\tchatId?: string\n\tuser: string\n\ttype: string\n\tcontent: string\n\tisShowAvatar?: boolean\n\tavatar?: string\n\tisChating?: boolean\n\tthinkContent?: string\n\treasoningContent?: string\n}\n\ninterface HistoryItem {\n\tid: string\n\ttitle: string\n\ttime: Date\n\ttype: string\n\tmessages?: ChatMessage[]\n}\n\n// Props\nconst props = defineProps<{\n\tisSidebarCollapsed: boolean\n\tactiveChat: string\n\tchatHistory: HistoryItem[]\n}>()\n\n// watch(\n// \t() => props.chatHistory,\n// \tnewVal => {\n// \t\tconsole.log('props.chatHistory === HistorySidebar.vue === 162', newVal)\n// \t},\n// \t{ deep: true }\n// )\n\n// Emits\nconst emit = defineEmits<{\n\t(e: 'toggle-sidebar'): void\n\t(e: 'start-new-chat'): void\n\t(e: 'select-chat', id: string, type?: string): void\n\t(e: 'rename-chat', id: string, newTitle: string): void\n\t(e: 'delete-chat', id: string): void\n}>()\n\nconst title = ref(inject('title', 'TouchChat'))\n\n// 内部状态\nconst state = reactive<{\n\trenameInput: string\n\tcurrentRenameId: string\n}>({\n\trenameInput: '',\n\tcurrentRenameId: ''\n})\n\n// 处理重命名请求\nconst handleRenameChat = (id: string, title: string) => {\n\tconst item = props.chatHistory.find(item => item.id === id)\n\tif (item) {\n\t\tstate.currentRenameId = id\n\t\tstate.renameInput = item.title\n\t\temit('rename-chat', id, title)\n\t}\n}\n\n// 处理删除请求\nconst remove = (id: string) => {\n\temit('delete-chat', id)\n}\n\n// 其他事件处理\nconst handleToggleSidebar = () => {\n\temit('toggle-sidebar')\n}\n\nconst handleStartNewChat = () => {\n\temit('start-new-chat')\n}\n\nconst agentsSelectChat = (id: string) => {\n\thandleSelectChat(id, 'agents')\n}\n\nconst handleSelectChat = (id: string, type?: string) => {\n\temit('select-chat', id, type)\n}\n</script>\n"],"names":["ref","inject","reactive","title","item","_createElementBlock","_createElementVNode","_createCommentVNode","_createVNode","AgentsView","HistoryList"],"mappings":"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"}
@@ -77,11 +77,11 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
77
77
  return vue.openBlock(), vue.createElementBlock(
78
78
  "div",
79
79
  {
80
- class: vue.normalizeClass(["touchchat-action", { "type-ai": _ctx.messageType === "ai" }])
80
+ class: vue.normalizeClass(["touchchat-action", { "type-ai": __props.messageType === "ai" }])
81
81
  },
82
82
  [
83
83
  vue.createCommentVNode(" \u590D\u5236\u6309\u94AE - \u4E24\u4E2A\u6D88\u606F\u7C7B\u578B\u90FD\u6709 "),
84
- ((_a = _ctx.item) == null ? void 0 : _a.isShowCopy) || _ctx.messageType === "user" ? (vue.openBlock(), vue.createElementBlock("div", {
84
+ ((_a = __props.item) == null ? void 0 : _a.isShowCopy) || __props.messageType === "user" ? (vue.openBlock(), vue.createElementBlock("div", {
85
85
  key: 0,
86
86
  class: "touchchat-action-item value-copy",
87
87
  onClick: onCopy
@@ -89,22 +89,22 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
89
89
  vue.createElementVNode("div", { class: "touchchat-action-tip" }, "\u590D\u5236")
90
90
  ])) : vue.createCommentVNode("v-if", true),
91
91
  vue.createCommentVNode(" AI\u6D88\u606F\u7279\u6709\u6309\u94AE "),
92
- _ctx.messageType === "ai" ? (vue.openBlock(), vue.createElementBlock(
92
+ __props.messageType === "ai" ? (vue.openBlock(), vue.createElementBlock(
93
93
  vue.Fragment,
94
94
  { key: 1 },
95
95
  [
96
- _ctx.hasRetry && ((_b = vue.unref(messageActions)) == null ? void 0 : _b.ai.includes("retry")) ? (vue.openBlock(), vue.createElementBlock("div", {
96
+ __props.hasRetry && ((_b = vue.unref(messageActions)) == null ? void 0 : _b.ai.includes("retry")) ? (vue.openBlock(), vue.createElementBlock("div", {
97
97
  key: 0,
98
98
  class: "touchchat-action-item value-refresh",
99
99
  onClick: onRetry
100
100
  }, [
101
101
  vue.createElementVNode("div", { class: "touchchat-action-tip" }, "\u91CD\u65B0\u83B7\u53D6")
102
102
  ])) : vue.createCommentVNode("v-if", true),
103
- ((_c = _ctx.item) == null ? void 0 : _c.isShowLike) && ((_d = vue.unref(messageActions)) == null ? void 0 : _d.ai.includes("like")) ? (vue.openBlock(), vue.createElementBlock(
103
+ ((_c = __props.item) == null ? void 0 : _c.isShowLike) && ((_d = vue.unref(messageActions)) == null ? void 0 : _d.ai.includes("like")) ? (vue.openBlock(), vue.createElementBlock(
104
104
  "div",
105
105
  {
106
106
  key: 1,
107
- class: vue.normalizeClass(["touchchat-action-item value-good", { "is-on": (_e = _ctx.item) == null ? void 0 : _e.isLiked }]),
107
+ class: vue.normalizeClass(["touchchat-action-item value-good", { "is-on": (_e = __props.item) == null ? void 0 : _e.isLiked }]),
108
108
  onClick: onLike
109
109
  },
110
110
  [
@@ -117,7 +117,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
117
117
  "div",
118
118
  {
119
119
  key: 2,
120
- class: vue.normalizeClass(["touchchat-action-item value-bad", { "is-on": (_g = _ctx.item) == null ? void 0 : _g.isDisliked }]),
120
+ class: vue.normalizeClass(["touchchat-action-item value-bad", { "is-on": (_g = __props.item) == null ? void 0 : _g.isDisliked }]),
121
121
  onClick: onDislike
122
122
  },
123
123
  [
@@ -146,11 +146,11 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
146
146
  /* STABLE_FRAGMENT */
147
147
  )) : vue.createCommentVNode("v-if", true),
148
148
  vue.createCommentVNode(" \u7528\u6237\u6D88\u606F\u7279\u6709\u6309\u94AE "),
149
- _ctx.messageType === "user" ? (vue.openBlock(), vue.createElementBlock(
149
+ __props.messageType === "user" ? (vue.openBlock(), vue.createElementBlock(
150
150
  vue.Fragment,
151
151
  { key: 2 },
152
152
  [
153
- ((_j = _ctx.item) == null ? void 0 : _j.content) && !vue.unref(scripts).length && ((_k = vue.unref(messageActions)) == null ? void 0 : _k.user.includes("edit")) ? (vue.openBlock(), vue.createElementBlock("div", {
153
+ ((_j = __props.item) == null ? void 0 : _j.content) && !vue.unref(scripts).length && ((_k = vue.unref(messageActions)) == null ? void 0 : _k.user.includes("edit")) ? (vue.openBlock(), vue.createElementBlock("div", {
154
154
  key: 0,
155
155
  class: "touchchat-action-item value-edit",
156
156
  onClick: onEdit
@@ -177,8 +177,8 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
177
177
  /* STABLE_FRAGMENT */
178
178
  )) : vue.createCommentVNode("v-if", true),
179
179
  vue.renderSlot(_ctx.$slots, "extendsFn", {
180
- item: _ctx.item,
181
- index: _ctx.index
180
+ item: __props.item,
181
+ index: __props.index
182
182
  }),
183
183
  isDeleteDialogVisible.value ? (vue.openBlock(), vue.createElementBlock("div", {
184
184
  key: 3,
@@ -1 +1 @@
1
- {"version":3,"file":"MessageActions.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/MessageActions.vue"],"sourcesContent":["<template>\n\t<div class=\"touchchat-action\" :class=\"{ 'type-ai': messageType === 'ai' }\">\n\t\t<!-- 复制按钮 - 两个消息类型都有 -->\n\t\t<div v-if=\"item?.isShowCopy || messageType === 'user'\" class=\"touchchat-action-item value-copy\" @click=\"onCopy\">\n\t\t\t<div class=\"touchchat-action-tip\">复制</div>\n\t\t</div>\n\n\t\t<!-- AI消息特有按钮 -->\n\t\t<template v-if=\"messageType === 'ai'\">\n\t\t\t<div v-if=\"hasRetry && messageActions?.ai.includes('retry')\" class=\"touchchat-action-item value-refresh\" @click=\"onRetry\">\n\t\t\t\t<div class=\"touchchat-action-tip\">重新获取</div>\n\t\t\t</div>\n\t\t\t<div v-if=\"item?.isShowLike && messageActions?.ai.includes('like')\" class=\"touchchat-action-item value-good\" :class=\"{ 'is-on': item?.isLiked }\" @click=\"onLike\">\n\t\t\t\t<div class=\"touchchat-action-tip\">点赞</div>\n\t\t\t</div>\n\t\t\t<div v-if=\"messageActions?.ai.includes('dislike')\" class=\"touchchat-action-item value-bad\" :class=\"{ 'is-on': item?.isDisliked }\" @click=\"onDislike\">\n\t\t\t\t<div class=\"touchchat-action-tip\">不喜欢</div>\n\t\t\t</div>\n\t\t\t<div v-if=\"messageActions?.ai.includes('share')\" class=\"touchchat-action-item value-share\" @click=\"onShare\">\n\t\t\t\t<div class=\"touchchat-action-tip\">转发</div>\n\t\t\t</div>\n\t\t\t<div v-if=\"messageActions?.ai.includes('quote')\" class=\"touchchat-action-item value-quote\" @click=\"onQuote\">\n\t\t\t\t<div class=\"touchchat-action-tip\">引用</div>\n\t\t\t</div>\n\t\t\t<!-- <slot name=\"extendsFn\" :item=\"item\" :index=\"index\" /> -->\n\t\t</template>\n\n\t\t<!-- 用户消息特有按钮 -->\n\t\t<template v-if=\"messageType === 'user'\">\n\t\t\t<div v-if=\"item?.content && !scripts.length && messageActions?.user.includes('edit')\" class=\"touchchat-action-item value-edit\" @click=\"onEdit\">\n\t\t\t\t<div class=\"touchchat-action-tip\">编辑</div>\n\t\t\t</div>\n\t\t\t<div v-if=\"messageActions?.user.includes('delete')\" class=\"touchchat-action-item value-remove\" @click=\"isDeleteDialogVisible = true\">\n\t\t\t\t<div class=\"touchchat-action-tip\">删除</div>\n\t\t\t</div>\n\t\t\t<div v-if=\"messageActions?.user.includes('withDraw')\" class=\"touchchat-action-item value-enter\" @click=\"onWithdraw\">\n\t\t\t\t<div class=\"touchchat-action-tip\">撤回</div>\n\t\t\t</div>\n\t\t\t<!-- <slot name=\"extendsFn\" :item=\"item\" :index=\"index\" /> -->\n\t\t</template>\n\n\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\n\t\t<div v-if=\"isDeleteDialogVisible\" class=\"delete-dialog-overlay\">\n\t\t\t<div class=\"delete-dialog\">\n\t\t\t\t<div class=\"delete-dialog-title\">永久删除对话</div>\n\t\t\t\t<div class=\"delete-dialog-content\">删除后,该对话将不可恢复。确认删除吗?</div>\n\t\t\t\t<div class=\"delete-dialog-actions\">\n\t\t\t\t\t<button class=\"delete-dialog-cancel\" @click=\"handleCancelDelete\">取消</button>\n\t\t\t\t\t<button class=\"delete-dialog-confirm\" @click=\"handleConfirmDelete\">确认</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, ref } from 'vue'\nimport type { ChatMessage, MessageActions } from './Chat/types'\nconst scripts = inject<any[]>('scripts', [])\n\nconst props = defineProps<{\n\titem: ChatMessage\n\tindex: number\n\tmessageType: 'ai' | 'user'\n\thasRetry?: boolean\n\tshowCopy?: boolean\n}>()\n\n// const props = withDefaults(\n// \tdefineProps<{\n// \t\tmessageType: 'ai' | 'user' // 消息类型\n// \t\tindex: number // 消息索引\n// \t\tshowCopy?: boolean // 是否显示复制按钮\n// \t\t// AI消息特有属性\n// \t\tisShowLike?: boolean // 是否显示点赞按钮\n// \t\tisLiked?: boolean // 是否已点赞\n// \t\tisDisliked?: boolean // 是否已点踩\n// \t\t// 用户消息特有属性\n// \t\tisEditing?: boolean // 是否正在编辑\n// \t\tcontent?: string // 消息内容,仅用于用户消息\n// \t\thasRetry?: boolean // 是否有重试操作,仅用于AI消息\n// \t}>(),\n// \t{\n// \t\tshowCopy: true,\n// \t\tisShowLike: false,\n// \t\tisLiked: false,\n// \t\tisDisliked: false,\n// \t\tisEditing: false,\n// \t\tcontent: '',\n// \t\thasRetry: true\n// \t}\n// )\n\nconst isDeleteDialogVisible = ref(false)\n\nconst emits = defineEmits<{\n\t(e: 'copy', index: number): void\n\t(e: 'retry', index: number): void\n\t(e: 'like', index: number): void\n\t(e: 'dislike', index: number): void\n\t(e: 'edit', index: number): void\n\t(e: 'delete', index: number): void\n\t(e: 'quote'): void\n\t(e: 'withDraw'): void\n}>()\n\nconst onCopy = () => emits('copy', props.index)\nconst onRetry = () => emits('retry', props.index)\nconst onLike = () => {\n\t// 调用注入的 like 函数,传递索引和当前点赞状态的反值\n\tlike(props.index, !props.item?.isLiked)\n\t// 如果当前是点赞操作(由未点赞变为点赞),则重置不喜欢状态\n\tif (!props.item?.isLiked) {\n\t\tdislike(props.index, false)\n\t}\n\temits('like', props.index)\n}\nconst onDislike = () => {\n\t// 调用注入的 dislike 函数,传递索引和当前不喜欢状态的反值\n\tdislike(props.index, !props.item?.isDisliked)\n\t// 如果当前是不喜欢操作(由未不喜欢变为不喜欢),则重置点赞状态\n\tif (!props.item?.isDisliked) {\n\t\tlike(props.index, false)\n\t}\n\temits('dislike', props.index)\n}\nconst onQuote = () => {\n\temits('quote')\n}\nconst onEdit = () => emits('edit', props.index)\n// const onDelete = () => emits('delete', props.index)\n\nconst handleConfirmDelete = () => {\n\temits('delete', props.index)\n\tremove(props.item, props.index)\n\tisDeleteDialogVisible.value = false\n}\n\nconst onWithdraw = () => {\n\temits('withDraw')\n\twithDraw(props.item, props.index)\n}\n\nconst handleCancelDelete = () => {\n\tisDeleteDialogVisible.value = false\n}\n\nconst like = inject<(index: number, isLike: boolean) => void>('like', () => {\n\tconsole.warn('未提供like函数')\n})\nconst dislike = inject<(index: number, isUnlike: boolean) => void>('dislike', () => {\n\tconsole.warn('未提供dislike函数')\n})\nconst remove = inject<(item: any, index: number) => void>('remove', () => {\n\tconsole.warn('未提供detailRemove函数')\n})\nconst share = inject<(item: any, index: number) => void>('share', () => {\n\tconsole.warn('未提供share函数')\n})\nconst withDraw = inject<(item: any, index: number) => void>('withDraw', () => {\n\tconsole.warn('未提供withDraw函数')\n})\nconst messageActions = inject<MessageActions>('messageActions')\n\nconst onShare = () => {\n\tshare(props.item, props.index)\n}\n</script>\n\n<!-- <style lang=\"less\" scoped>\n@import '../../style/MessageActions.less';\n</style> -->\n"],"names":["inject","ref","_createElementBlock","_normalizeClass","messageType","_createCommentVNode","item","_createElementVNode","_Fragment","hasRetry","_unref","_renderSlot","index"],"mappings":"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"}
1
+ {"version":3,"file":"MessageActions.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/MessageActions.vue"],"sourcesContent":["<template>\r\n\t<div class=\"touchchat-action\" :class=\"{ 'type-ai': messageType === 'ai' }\">\r\n\t\t<!-- 复制按钮 - 两个消息类型都有 -->\r\n\t\t<div v-if=\"item?.isShowCopy || messageType === 'user'\" class=\"touchchat-action-item value-copy\" @click=\"onCopy\">\r\n\t\t\t<div class=\"touchchat-action-tip\">复制</div>\r\n\t\t</div>\r\n\r\n\t\t<!-- AI消息特有按钮 -->\r\n\t\t<template v-if=\"messageType === 'ai'\">\r\n\t\t\t<div v-if=\"hasRetry && messageActions?.ai.includes('retry')\" class=\"touchchat-action-item value-refresh\" @click=\"onRetry\">\r\n\t\t\t\t<div class=\"touchchat-action-tip\">重新获取</div>\r\n\t\t\t</div>\r\n\t\t\t<div v-if=\"item?.isShowLike && messageActions?.ai.includes('like')\" class=\"touchchat-action-item value-good\" :class=\"{ 'is-on': item?.isLiked }\" @click=\"onLike\">\r\n\t\t\t\t<div class=\"touchchat-action-tip\">点赞</div>\r\n\t\t\t</div>\r\n\t\t\t<div v-if=\"messageActions?.ai.includes('dislike')\" class=\"touchchat-action-item value-bad\" :class=\"{ 'is-on': item?.isDisliked }\" @click=\"onDislike\">\r\n\t\t\t\t<div class=\"touchchat-action-tip\">不喜欢</div>\r\n\t\t\t</div>\r\n\t\t\t<div v-if=\"messageActions?.ai.includes('share')\" class=\"touchchat-action-item value-share\" @click=\"onShare\">\r\n\t\t\t\t<div class=\"touchchat-action-tip\">转发</div>\r\n\t\t\t</div>\r\n\t\t\t<div v-if=\"messageActions?.ai.includes('quote')\" class=\"touchchat-action-item value-quote\" @click=\"onQuote\">\r\n\t\t\t\t<div class=\"touchchat-action-tip\">引用</div>\r\n\t\t\t</div>\r\n\t\t\t<!-- <slot name=\"extendsFn\" :item=\"item\" :index=\"index\" /> -->\r\n\t\t</template>\r\n\r\n\t\t<!-- 用户消息特有按钮 -->\r\n\t\t<template v-if=\"messageType === 'user'\">\r\n\t\t\t<div v-if=\"item?.content && !scripts.length && messageActions?.user.includes('edit')\" class=\"touchchat-action-item value-edit\" @click=\"onEdit\">\r\n\t\t\t\t<div class=\"touchchat-action-tip\">编辑</div>\r\n\t\t\t</div>\r\n\t\t\t<div v-if=\"messageActions?.user.includes('delete')\" class=\"touchchat-action-item value-remove\" @click=\"isDeleteDialogVisible = true\">\r\n\t\t\t\t<div class=\"touchchat-action-tip\">删除</div>\r\n\t\t\t</div>\r\n\t\t\t<div v-if=\"messageActions?.user.includes('withDraw')\" class=\"touchchat-action-item value-enter\" @click=\"onWithdraw\">\r\n\t\t\t\t<div class=\"touchchat-action-tip\">撤回</div>\r\n\t\t\t</div>\r\n\t\t\t<!-- <slot name=\"extendsFn\" :item=\"item\" :index=\"index\" /> -->\r\n\t\t</template>\r\n\r\n\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\r\n\r\n\t\t<div v-if=\"isDeleteDialogVisible\" class=\"delete-dialog-overlay\">\r\n\t\t\t<div class=\"delete-dialog\">\r\n\t\t\t\t<div class=\"delete-dialog-title\">永久删除对话</div>\r\n\t\t\t\t<div class=\"delete-dialog-content\">删除后,该对话将不可恢复。确认删除吗?</div>\r\n\t\t\t\t<div class=\"delete-dialog-actions\">\r\n\t\t\t\t\t<button class=\"delete-dialog-cancel\" @click=\"handleCancelDelete\">取消</button>\r\n\t\t\t\t\t<button class=\"delete-dialog-confirm\" @click=\"handleConfirmDelete\">确认</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { inject, ref } from 'vue'\r\nimport type { ChatMessage, MessageActions } from './Chat/types'\r\nconst scripts = inject<any[]>('scripts', [])\r\n\r\nconst props = defineProps<{\r\n\titem: ChatMessage\r\n\tindex: number\r\n\tmessageType: 'ai' | 'user'\r\n\thasRetry?: boolean\r\n\tshowCopy?: boolean\r\n}>()\r\n\r\n// const props = withDefaults(\r\n// \tdefineProps<{\r\n// \t\tmessageType: 'ai' | 'user' // 消息类型\r\n// \t\tindex: number // 消息索引\r\n// \t\tshowCopy?: boolean // 是否显示复制按钮\r\n// \t\t// AI消息特有属性\r\n// \t\tisShowLike?: boolean // 是否显示点赞按钮\r\n// \t\tisLiked?: boolean // 是否已点赞\r\n// \t\tisDisliked?: boolean // 是否已点踩\r\n// \t\t// 用户消息特有属性\r\n// \t\tisEditing?: boolean // 是否正在编辑\r\n// \t\tcontent?: string // 消息内容,仅用于用户消息\r\n// \t\thasRetry?: boolean // 是否有重试操作,仅用于AI消息\r\n// \t}>(),\r\n// \t{\r\n// \t\tshowCopy: true,\r\n// \t\tisShowLike: false,\r\n// \t\tisLiked: false,\r\n// \t\tisDisliked: false,\r\n// \t\tisEditing: false,\r\n// \t\tcontent: '',\r\n// \t\thasRetry: true\r\n// \t}\r\n// )\r\n\r\nconst isDeleteDialogVisible = ref(false)\r\n\r\nconst emits = defineEmits<{\r\n\t(e: 'copy', index: number): void\r\n\t(e: 'retry', index: number): void\r\n\t(e: 'like', index: number): void\r\n\t(e: 'dislike', index: number): void\r\n\t(e: 'edit', index: number): void\r\n\t(e: 'delete', index: number): void\r\n\t(e: 'quote'): void\r\n\t(e: 'withDraw'): void\r\n}>()\r\n\r\nconst onCopy = () => emits('copy', props.index)\r\nconst onRetry = () => emits('retry', props.index)\r\nconst onLike = () => {\r\n\t// 调用注入的 like 函数,传递索引和当前点赞状态的反值\r\n\tlike(props.index, !props.item?.isLiked)\r\n\t// 如果当前是点赞操作(由未点赞变为点赞),则重置不喜欢状态\r\n\tif (!props.item?.isLiked) {\r\n\t\tdislike(props.index, false)\r\n\t}\r\n\temits('like', props.index)\r\n}\r\nconst onDislike = () => {\r\n\t// 调用注入的 dislike 函数,传递索引和当前不喜欢状态的反值\r\n\tdislike(props.index, !props.item?.isDisliked)\r\n\t// 如果当前是不喜欢操作(由未不喜欢变为不喜欢),则重置点赞状态\r\n\tif (!props.item?.isDisliked) {\r\n\t\tlike(props.index, false)\r\n\t}\r\n\temits('dislike', props.index)\r\n}\r\nconst onQuote = () => {\r\n\temits('quote')\r\n}\r\nconst onEdit = () => emits('edit', props.index)\r\n// const onDelete = () => emits('delete', props.index)\r\n\r\nconst handleConfirmDelete = () => {\r\n\temits('delete', props.index)\r\n\tremove(props.item, props.index)\r\n\tisDeleteDialogVisible.value = false\r\n}\r\n\r\nconst onWithdraw = () => {\r\n\temits('withDraw')\r\n\twithDraw(props.item, props.index)\r\n}\r\n\r\nconst handleCancelDelete = () => {\r\n\tisDeleteDialogVisible.value = false\r\n}\r\n\r\nconst like = inject<(index: number, isLike: boolean) => void>('like', () => {\r\n\tconsole.warn('未提供like函数')\r\n})\r\nconst dislike = inject<(index: number, isUnlike: boolean) => void>('dislike', () => {\r\n\tconsole.warn('未提供dislike函数')\r\n})\r\nconst remove = inject<(item: any, index: number) => void>('remove', () => {\r\n\tconsole.warn('未提供detailRemove函数')\r\n})\r\nconst share = inject<(item: any, index: number) => void>('share', () => {\r\n\tconsole.warn('未提供share函数')\r\n})\r\nconst withDraw = inject<(item: any, index: number) => void>('withDraw', () => {\r\n\tconsole.warn('未提供withDraw函数')\r\n})\r\nconst messageActions = inject<MessageActions>('messageActions')\r\n\r\nconst onShare = () => {\r\n\tshare(props.item, props.index)\r\n}\r\n</script>\r\n\r\n<!-- <style lang=\"less\" scoped>\r\n@import '../../style/MessageActions.less';\r\n</style> -->\r\n"],"names":["inject","ref","_createElementBlock","_normalizeClass","_createCommentVNode","_createElementVNode","_Fragment","_unref","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;AA2DA,IAAA,MAAM,OAAU,GAAAA,UAAA,CAAc,SAAW,EAAA,EAAE,CAAA,CAAA;AAE3C,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAiCd,IAAM,MAAA,qBAAA,GAAwBC,QAAI,KAAK,CAAA,CAAA;AAEvC,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AAWd,IAAA,MAAM,MAAS,GAAA,MAAM,KAAM,CAAA,MAAA,EAAQ,MAAM,KAAK,CAAA,CAAA;AAC9C,IAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,OAAA,EAAS,MAAM,KAAK,CAAA,CAAA;AAChD,IAAA,MAAM,SAAS,MAAM;;AAEpB,MAAA,IAAA,CAAK,MAAM,KAAO,EAAA,EAAA,CAAC,EAAM,GAAA,KAAA,CAAA,IAAA,KAAN,mBAAY,OAAO,CAAA,CAAA,CAAA;AAEtC,MAAA,IAAI,EAAC,CAAA,EAAA,GAAA,KAAA,CAAM,IAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAY,OAAS,CAAA,EAAA;AACzB,QAAQ,OAAA,CAAA,KAAA,CAAM,OAAO,KAAK,CAAA,CAAA;AAAA,OAC3B;AACA,MAAM,KAAA,CAAA,MAAA,EAAQ,MAAM,KAAK,CAAA,CAAA;AAAA,KAC1B,CAAA;AACA,IAAA,MAAM,YAAY,MAAM;;AAEvB,MAAA,OAAA,CAAQ,MAAM,KAAO,EAAA,EAAA,CAAC,EAAM,GAAA,KAAA,CAAA,IAAA,KAAN,mBAAY,UAAU,CAAA,CAAA,CAAA;AAE5C,MAAA,IAAI,EAAC,CAAA,EAAA,GAAA,KAAA,CAAM,IAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAY,UAAY,CAAA,EAAA;AAC5B,QAAK,IAAA,CAAA,KAAA,CAAM,OAAO,KAAK,CAAA,CAAA;AAAA,OACxB;AACA,MAAM,KAAA,CAAA,SAAA,EAAW,MAAM,KAAK,CAAA,CAAA;AAAA,KAC7B,CAAA;AACA,IAAA,MAAM,UAAU,MAAM;AACrB,MAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAAA,KACd,CAAA;AACA,IAAA,MAAM,MAAS,GAAA,MAAM,KAAM,CAAA,MAAA,EAAQ,MAAM,KAAK,CAAA,CAAA;AAG9C,IAAA,MAAM,sBAAsB,MAAM;AACjC,MAAM,KAAA,CAAA,QAAA,EAAU,MAAM,KAAK,CAAA,CAAA;AAC3B,MAAO,MAAA,CAAA,KAAA,CAAM,IAAM,EAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAC9B,MAAA,qBAAA,CAAsB,KAAQ,GAAA,KAAA,CAAA;AAAA,KAC/B,CAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACxB,MAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAChB,MAAS,QAAA,CAAA,KAAA,CAAM,IAAM,EAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,KACjC,CAAA;AAEA,IAAA,MAAM,qBAAqB,MAAM;AAChC,MAAA,qBAAA,CAAsB,KAAQ,GAAA,KAAA,CAAA;AAAA,KAC/B,CAAA;AAEA,IAAM,MAAA,IAAA,GAAOD,UAAiD,CAAA,MAAA,EAAQ,MAAM;AAC3E,MAAA,OAAA,CAAQ,KAAK,oCAAW,CAAA,CAAA;AAAA,KACxB,CAAA,CAAA;AACD,IAAM,MAAA,OAAA,GAAUA,UAAmD,CAAA,SAAA,EAAW,MAAM;AACnF,MAAA,OAAA,CAAQ,KAAK,uCAAc,CAAA,CAAA;AAAA,KAC3B,CAAA,CAAA;AACD,IAAM,MAAA,MAAA,GAASA,UAA2C,CAAA,QAAA,EAAU,MAAM;AACzE,MAAA,OAAA,CAAQ,KAAK,4CAAmB,CAAA,CAAA;AAAA,KAChC,CAAA,CAAA;AACD,IAAM,MAAA,KAAA,GAAQA,UAA2C,CAAA,OAAA,EAAS,MAAM;AACvE,MAAA,OAAA,CAAQ,KAAK,qCAAY,CAAA,CAAA;AAAA,KACzB,CAAA,CAAA;AACD,IAAM,MAAA,QAAA,GAAWA,UAA2C,CAAA,UAAA,EAAY,MAAM;AAC7E,MAAA,OAAA,CAAQ,KAAK,wCAAe,CAAA,CAAA;AAAA,KAC5B,CAAA,CAAA;AACD,IAAM,MAAA,cAAA,GAAiBA,WAAuB,gBAAgB,CAAA,CAAA;AAE9D,IAAA,MAAM,UAAU,MAAM;AACrB,MAAM,KAAA,CAAA,KAAA,CAAM,IAAM,EAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,KAC9B,CAAA;;;4BAtKC,EAAAE,sBAAA;AAAA,QAoDM,KAAA;AAAA,QAAA;AAAA,UApDD,KAAA,EAAKC,kBAAA,CAAA,CAAC,kBAAkB,EAAA,EAAA,WAAsB,OAAW,CAAA,WAAA,KAAA,IAAA,EAAA,CAAA,CAAA;AAAA;;UAC7DC,uBAAwB,+EAAA,CAAA;AAAA,UACb,CAAA,CAAA,EAAA,GAAA,OAAA,CAAI,IAAJ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAM,UAAc,KAAA,OAAA,CAAW,gBAAA,yBAA1C,EAAAF,sBAAA,CAEM,KAAA,EAAA;AAAA;YAFiD,KAAM,EAAA,kCAAA;AAAA,YAAoC,OAAO,EAAA,MAAA;AAAA;YACvGG,uBAA0C,KAArC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,cAAE,CAAA;AAAA;UAGrCD,uBAAiB,0CAAA,CAAA;AAAA,UACD,OAAW,CAAA,WAAA,KAAA,uBAA3B,EAAAF,sBAAA;AAAA,YAiBWI,YAAA;AAAA,YAAA,EAAA,KAAA,CAAA,EAAA;AAAA,YAAA;AAAA,cAhBC,OAAA,CAAA,QAAA,KAAA,CAAY,EAAA,GAAAC,SAAA,CAAA,cAAA,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,EAAG,CAAA,QAAA,CAAQ,4BAAlD,EAAAL,sBAAA,CAEM,KAAA,EAAA;AAAA;gBAFuD,KAAM,EAAA,qCAAA;AAAA,gBAAuC,OAAO,EAAA,OAAA;AAAA;gBAChHG,uBAA4C,KAAvC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,0BAAI,CAAA;AAAA;gBAE5B,EAAA,GAAA,OAAA,CAAA,IAAA,KAAA,IAAM,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAA,MAAA,CAAc,8BAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,EAAG,CAAA,QAAA,CAAQ,2BAA1D,EAAAH,sBAAA;AAAA,gBAEM,KAAA;AAAA,gBAAA;AAAA;kBAF8D,KAAA,EAAMC,kBAAA,CAAA,CAAA,kCAAsD,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,OAAA,CAAA,IAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAM,OAAO,EAAA,CAAA,CAAA;AAAA,kBAAK,OAAO,EAAA,MAAA;AAAA;;kBACxJE,uBAA0C,KAArC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,cAAE,CAAA;AAAA;;;;cAE1B,CAAA,CAAA,EAAA,GAAAE,SAAA,CAAc,cAAA,CAAd,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,GAAG,QAAQ,CAAA,SAAA,CAAA,oBAAtC,EAAAL,sBAAA;AAAA,gBAEM,KAAA;AAAA,gBAAA;AAAA;kBAF6C,KAAA,EAAMC,kBAAA,CAAA,CAAA,iCAAqD,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,OAAA,CAAA,IAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAM,UAAU,EAAA,CAAA,CAAA;AAAA,kBAAK,OAAO,EAAA,SAAA;AAAA;;kBACzIE,uBAA2C,KAAtC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,oBAAG,CAAA;AAAA;;;;cAE3B,CAAA,CAAA,EAAA,GAAAE,SAAA,CAAc,cAAA,CAAA,KAAd,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAA,CAAG,SAAQ,4BAAtC,EAAAL,sBAAA,CAEM,KAAA,EAAA;AAAA;gBAF2C,KAAM,EAAA,mCAAA;AAAA,gBAAqC,OAAO,EAAA,OAAA;AAAA;gBAClGG,uBAA0C,KAArC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,cAAE,CAAA;AAAA;cAE1B,CAAA,CAAA,EAAA,GAAAE,SAAA,CAAc,cAAA,CAAA,KAAd,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAA,CAAG,SAAQ,4BAAtC,EAAAL,sBAAA,CAEM,KAAA,EAAA;AAAA;gBAF2C,KAAM,EAAA,mCAAA;AAAA,gBAAqC,OAAO,EAAA,OAAA;AAAA;gBAClGG,uBAA0C,KAArC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,cAAE,CAAA;AAAA;cAErCD,uBAA8D,yDAAA,CAAA;AAAA;;;;UAG/DA,uBAAiB,oDAAA,CAAA;AAAA,UACD,OAAW,CAAA,WAAA,KAAA,yBAA3B,EAAAF,sBAAA;AAAA,YAWWI,YAAA;AAAA,YAAA,EAAA,KAAA,CAAA,EAAA;AAAA,YAAA;AAAA,cAAA,CAAA,CAVC,aAAI,IAAJ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAM,YAAO,CAAKC,SAAA,CAAO,OAAA,CAAC,CAAA,MAAA,KAAA,CAAU,eAAc,cAAA,CAAA,KAAd,mBAAgB,IAAK,CAAA,QAAA,CAAQ,6BAA5EL,uBAEM,KAAA,EAAA;AAAA;gBAFgF,KAAM,EAAA,kCAAA;AAAA,gBAAoC,OAAO,EAAA,MAAA;AAAA;gBACtIG,uBAA0C,KAArC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,cAAE,CAAA;AAAA;cAE1B,CAAA,CAAA,EAAA,GAAAE,SAAA,CAAc,cAAA,CAAA,KAAd,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAK,SAAQ,6BAAxC,EAAAL,sBAAA,CAEM,KAAA,EAAA;AAAA;gBAF8C,KAAM,EAAA,oCAAA;AAAA,gBAAsC,gBAAO,KAAA,qBAAA,CAAqB,KAAA,GAAA,IAAA;AAAA;gBAC3HG,uBAA0C,KAArC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,cAAE,CAAA;AAAA;cAE1B,CAAA,CAAA,EAAA,GAAAE,SAAA,CAAc,cAAA,CAAA,KAAd,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAK,SAAQ,+BAAxC,EAAAL,sBAAA,CAEM,KAAA,EAAA;AAAA;gBAFgD,KAAM,EAAA,mCAAA;AAAA,gBAAqC,OAAO,EAAA,UAAA;AAAA;gBACvGG,uBAA0C,KAArC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,cAAE,CAAA;AAAA;cAErCD,uBAA8D,yDAAA,CAAA;AAAA;;;;UAG/DI,cAAA,CAAqD,IAAA,CAAA,MAAA,EAAA,WAAA,EAAA;AAAA,YAA7B,MAAM,OAAI,CAAA,IAAA;AAAA,YAAG,OAAO,OAAK,CAAA,KAAA;AAAA;UAEtC,qBAAqB,CAAA,KAAA,qBAAhCN,uBASM,KAAA,EAAA;AAAA;YAT4B,KAAM,EAAA,uBAAA;AAAA;YACvCG,sBAOM,CAAA,KAAA,EAAA,EAPD,KAAA,EAAM,iBAAe,EAAA;AAAA,cACzBA,uBAA6C,KAAxC,EAAA,EAAA,KAAM,EAAA,qBAAA,IAAsB,sCAAM,CAAA;AAAA,cACvCA,uBAA4D,KAAvD,EAAA,EAAA,KAAM,EAAA,uBAAA,IAAwB,oHAAmB,CAAA;AAAA,cACtDA,sBAGM,CAAA,KAAA,EAAA,EAHD,KAAA,EAAM,yBAAuB,EAAA;AAAA,gBACjCA,uBAA4E,QAAA,EAAA;AAAA,kBAApE,KAAM,EAAA,sBAAA;AAAA,kBAAwB,OAAO,EAAA,kBAAA;AAAA,mBAAoB,cAAE,CAAA;AAAA,gBACnEA,uBAA8E,QAAA,EAAA;AAAA,kBAAtE,KAAM,EAAA,uBAAA;AAAA,kBAAyB,OAAO,EAAA,mBAAA;AAAA,mBAAqB,cAAE,CAAA;AAAA;;;;;;;;;;;;;"}
@@ -16,12 +16,12 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
16
16
  return vue.openBlock(), vue.createElementBlock(
17
17
  "div",
18
18
  {
19
- class: vue.normalizeClass(["sider-bar-view", _ctx.flag ? "sider-bar-view-flag" : ""])
19
+ class: vue.normalizeClass(["sider-bar-view", __props.flag ? "sider-bar-view-flag" : ""])
20
20
  },
21
21
  [
22
22
  vue.renderSlot(_ctx.$slots, "extend", {
23
- item: _ctx.item,
24
- index: _ctx.index
23
+ item: __props.item,
24
+ index: __props.index
25
25
  })
26
26
  ],
27
27
  2
@@ -1 +1 @@
1
- {"version":3,"file":"SiderBarView.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/SiderBarView.vue"],"sourcesContent":["<template>\n\t<div class=\"sider-bar-view\" :class=\"flag ? 'sider-bar-view-flag' : ''\">\n\t\t<slot name=\"extend\" :item=\"item\" :index=\"index\"></slot>\n\t</div>\n</template>\n<script setup lang=\"ts\">\nimport type { ChatMessage } from './Chat/types'\ndefineProps<{\n\tflag: boolean\n\titem: ChatMessage\n\tindex: number\n}>()\n</script>\n"],"names":["_createElementBlock","_normalizeClass","flag","_renderSlot","item","index"],"mappings":";;;;;;;;;;;;;;;4BACC,EAAAA,sBAAA;AAAA,QAEM,KAAA;AAAA,QAAA;AAAA,UAFD,KAAA,EAAKC,mBAAA,CAAC,gBAAA,EAAyBC,KAAI,IAAA,GAAA,qBAAA,GAAA,EAAA,CAAA,CAAA;AAAA;;UACvCC,cAAA,CAAuD,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA;AAAA,YAAlC,MAAMC,IAAI,CAAA,IAAA;AAAA,YAAG,OAAOC,IAAK,CAAA,KAAA;AAAA;;;;;;;;;;;"}
1
+ {"version":3,"file":"SiderBarView.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/SiderBarView.vue"],"sourcesContent":["<template>\n\t<div class=\"sider-bar-view\" :class=\"flag ? 'sider-bar-view-flag' : ''\">\n\t\t<slot name=\"extend\" :item=\"item\" :index=\"index\"></slot>\n\t</div>\n</template>\n<script setup lang=\"ts\">\nimport type { ChatMessage } from './Chat/types'\ndefineProps<{\n\tflag: boolean\n\titem: ChatMessage\n\tindex: number\n}>()\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_renderSlot"],"mappings":";;;;;;;;;;;;;;;4BACC,EAAAA,sBAAA;AAAA,QAEM,KAAA;AAAA,QAAA;AAAA,UAFD,KAAA,EAAKC,mBAAA,CAAC,gBAAA,EAAyB,QAAI,IAAA,GAAA,qBAAA,GAAA,EAAA,CAAA,CAAA;AAAA;;UACvCC,cAAA,CAAuD,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA;AAAA,YAAlC,MAAM,OAAI,CAAA,IAAA;AAAA,YAAG,OAAO,OAAK,CAAA,KAAA;AAAA;;;;;;;;;;;"}