@touchvue/chat 1.0.0-beta.42 → 1.0.0-beta.44

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 (75) hide show
  1. package/README.md +25 -25
  2. package/es/node_modules/.pnpm/@touchvue_a2ui@1.0.0-beta.46/node_modules/@touchvue/a2ui/dist/index.mjs +4816 -0
  3. package/es/node_modules/.pnpm/@touchvue_a2ui@1.0.0-beta.46/node_modules/@touchvue/a2ui/dist/index.mjs.map +1 -0
  4. package/es/package.json.css +1 -1
  5. package/es/package.json.mjs +2 -2
  6. package/es/packages/components/resolver.mjs.map +1 -1
  7. package/es/packages/components/touchchat/component/AiRobot/letter.vue.mjs +1 -1
  8. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -1
  9. package/es/packages/components/touchchat/component/QuoteContent.vue.mjs +7 -0
  10. package/es/packages/components/touchchat/component/QuoteContent.vue.mjs.map +1 -0
  11. package/es/packages/components/touchchat/component/QuoteContent.vue2.mjs +29 -0
  12. package/es/packages/components/touchchat/component/QuoteContent.vue2.mjs.map +1 -0
  13. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +70 -13
  14. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
  15. package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs +1 -0
  16. package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs.map +1 -1
  17. package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs +21 -5
  18. package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs.map +1 -1
  19. package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs +34 -1
  20. package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs.map +1 -1
  21. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +20 -2
  22. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
  23. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs +51 -11
  24. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs.map +1 -1
  25. package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs +6 -3
  26. package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs.map +1 -1
  27. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +21 -5
  28. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
  29. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs +13 -5
  30. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
  31. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +22 -9
  32. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
  33. package/es/packages/components/touchchat/src/index.vue2.mjs +20 -2
  34. package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
  35. package/es/packages/components/touchchat/utils/fetchStream.mjs.map +1 -1
  36. package/lib/node_modules/.pnpm/@touchvue_a2ui@1.0.0-beta.46/node_modules/@touchvue/a2ui/dist/index.js +4819 -0
  37. package/lib/node_modules/.pnpm/@touchvue_a2ui@1.0.0-beta.46/node_modules/@touchvue/a2ui/dist/index.js.map +1 -0
  38. package/lib/package.json.css +1 -1
  39. package/lib/package.json.js +2 -2
  40. package/lib/packages/components/resolver.js.map +1 -1
  41. package/lib/packages/components/touchchat/component/AiRobot/letter.vue.js +1 -1
  42. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -1
  43. package/lib/packages/components/touchchat/component/QuoteContent.vue.js +11 -0
  44. package/lib/packages/components/touchchat/component/QuoteContent.vue.js.map +1 -0
  45. package/lib/packages/components/touchchat/component/QuoteContent.vue2.js +33 -0
  46. package/lib/packages/components/touchchat/component/QuoteContent.vue2.js.map +1 -0
  47. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +69 -12
  48. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
  49. package/lib/packages/components/touchchat/src/AiChat/Chat/types.js +1 -0
  50. package/lib/packages/components/touchchat/src/AiChat/Chat/types.js.map +1 -1
  51. package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js +21 -5
  52. package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js.map +1 -1
  53. package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js +34 -1
  54. package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js.map +1 -1
  55. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +20 -2
  56. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
  57. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js +51 -11
  58. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js.map +1 -1
  59. package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js +6 -3
  60. package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js.map +1 -1
  61. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +21 -5
  62. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
  63. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js +12 -4
  64. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
  65. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +22 -9
  66. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
  67. package/lib/packages/components/touchchat/src/index.vue2.js +20 -2
  68. package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
  69. package/lib/packages/components/touchchat/utils/fetchStream.js.map +1 -1
  70. package/package.json +2 -2
  71. package/theme/components/index.css +51 -0
  72. package/theme/font/iconfont.woff +0 -0
  73. package/theme/font/iconfont.woff2 +0 -0
  74. package/theme/index.css +51 -0
  75. package/theme/skin/default.css +51 -0
@@ -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<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</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<!-- 发送按钮 -->\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 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 { 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', [])\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\temits('send', props.inputValue, fileList.value)\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})\ndefineExpose({\n\thandlePaste,\n\topenMarkLayer,\n\tcolseMarkLayer,\n\titemUploadFile\n})\n</script>\n"],"names":["inject","ref","watch","provide","computed","body","nextTick","showToast","onMounted","_createElementBlock","_renderSlot","_createCommentVNode","_createBlock","FileContent","_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>\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', [])\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\temits('send', props.inputValue, fileList.value)\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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"}
@@ -13,7 +13,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
13
13
  hasRetry: { type: Boolean },
14
14
  showCopy: { type: Boolean }
15
15
  },
16
- emits: ["copy", "retry", "like", "dislike", "edit", "delete"],
16
+ emits: ["copy", "retry", "like", "dislike", "edit", "delete", "quote", "withDraw"],
17
17
  setup(__props, { emit: __emit }) {
18
18
  const scripts = vue.inject("scripts", []);
19
19
  const props = __props;
@@ -37,12 +37,19 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
37
37
  }
38
38
  emits("dislike", props.index);
39
39
  };
40
+ const onQuote = () => {
41
+ emits("quote");
42
+ };
40
43
  const onEdit = () => emits("edit", props.index);
41
44
  const handleConfirmDelete = () => {
42
45
  emits("delete", props.index);
43
46
  remove(props.item, props.index);
44
47
  isDeleteDialogVisible.value = false;
45
48
  };
49
+ const onWithdraw = () => {
50
+ emits("withDraw");
51
+ withDraw(props.item, props.index);
52
+ };
46
53
  const handleCancelDelete = () => {
47
54
  isDeleteDialogVisible.value = false;
48
55
  };
@@ -55,8 +62,18 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
55
62
  const remove = vue.inject("remove", () => {
56
63
  console.warn("\u672A\u63D0\u4F9BdetailRemove\u51FD\u6570");
57
64
  });
65
+ const share = vue.inject("share", () => {
66
+ console.warn("\u672A\u63D0\u4F9Bshare\u51FD\u6570");
67
+ });
68
+ const withDraw = vue.inject("withDraw", () => {
69
+ console.warn("\u672A\u63D0\u4F9BwithDraw\u51FD\u6570");
70
+ });
71
+ const messageActions = vue.inject("messageActions");
72
+ const onShare = () => {
73
+ share(props.item, props.index);
74
+ };
58
75
  return (_ctx, _cache) => {
59
- var _a, _b, _c, _d, _e;
76
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
60
77
  return vue.openBlock(), vue.createElementBlock(
61
78
  "div",
62
79
  {
@@ -76,18 +93,18 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
76
93
  vue.Fragment,
77
94
  { key: 1 },
78
95
  [
79
- _ctx.hasRetry ? (vue.openBlock(), vue.createElementBlock("div", {
96
+ _ctx.hasRetry && ((_b = vue.unref(messageActions)) == null ? void 0 : _b.ai.includes("retry")) ? (vue.openBlock(), vue.createElementBlock("div", {
80
97
  key: 0,
81
98
  class: "touchchat-action-item value-refresh",
82
99
  onClick: onRetry
83
100
  }, [
84
101
  vue.createElementVNode("div", { class: "touchchat-action-tip" }, "\u91CD\u65B0\u83B7\u53D6")
85
102
  ])) : vue.createCommentVNode("v-if", true),
86
- ((_b = _ctx.item) == null ? void 0 : _b.isShowLike) ? (vue.openBlock(), vue.createElementBlock(
103
+ ((_c = _ctx.item) == null ? void 0 : _c.isShowLike) && ((_d = vue.unref(messageActions)) == null ? void 0 : _d.ai.includes("like")) ? (vue.openBlock(), vue.createElementBlock(
87
104
  "div",
88
105
  {
89
106
  key: 1,
90
- class: vue.normalizeClass(["touchchat-action-item value-good", { "is-on": (_c = _ctx.item) == null ? void 0 : _c.isLiked }]),
107
+ class: vue.normalizeClass(["touchchat-action-item value-good", { "is-on": (_e = _ctx.item) == null ? void 0 : _e.isLiked }]),
91
108
  onClick: onLike
92
109
  },
93
110
  [
@@ -96,10 +113,11 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
96
113
  2
97
114
  /* CLASS */
98
115
  )) : vue.createCommentVNode("v-if", true),
99
- vue.createElementVNode(
116
+ ((_f = vue.unref(messageActions)) == null ? void 0 : _f.ai.includes("dislike")) ? (vue.openBlock(), vue.createElementBlock(
100
117
  "div",
101
118
  {
102
- class: vue.normalizeClass(["touchchat-action-item value-bad", { "is-on": (_d = _ctx.item) == null ? void 0 : _d.isDisliked }]),
119
+ key: 2,
120
+ class: vue.normalizeClass(["touchchat-action-item value-bad", { "is-on": (_g = _ctx.item) == null ? void 0 : _g.isDisliked }]),
103
121
  onClick: onDislike
104
122
  },
105
123
  [
@@ -107,7 +125,21 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
107
125
  ],
108
126
  2
109
127
  /* CLASS */
110
- ),
128
+ )) : vue.createCommentVNode("v-if", true),
129
+ ((_h = vue.unref(messageActions)) == null ? void 0 : _h.ai.includes("share")) ? (vue.openBlock(), vue.createElementBlock("div", {
130
+ key: 3,
131
+ class: "touchchat-action-item value-share",
132
+ onClick: onShare
133
+ }, [
134
+ vue.createElementVNode("div", { class: "touchchat-action-tip" }, "\u8F6C\u53D1")
135
+ ])) : vue.createCommentVNode("v-if", true),
136
+ ((_i = vue.unref(messageActions)) == null ? void 0 : _i.ai.includes("quote")) ? (vue.openBlock(), vue.createElementBlock("div", {
137
+ key: 4,
138
+ class: "touchchat-action-item value-quote",
139
+ onClick: onQuote
140
+ }, [
141
+ vue.createElementVNode("div", { class: "touchchat-action-tip" }, "\u5F15\u7528")
142
+ ])) : vue.createCommentVNode("v-if", true),
111
143
  vue.createCommentVNode(' <slot name="extendsFn" :item="item" :index="index" /> ')
112
144
  ],
113
145
  64
@@ -118,19 +150,27 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
118
150
  vue.Fragment,
119
151
  { key: 2 },
120
152
  [
121
- ((_e = _ctx.item) == null ? void 0 : _e.content) && !vue.unref(scripts).length ? (vue.openBlock(), vue.createElementBlock("div", {
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", {
122
154
  key: 0,
123
155
  class: "touchchat-action-item value-edit",
124
156
  onClick: onEdit
125
157
  }, [
126
158
  vue.createElementVNode("div", { class: "touchchat-action-tip" }, "\u7F16\u8F91")
127
159
  ])) : vue.createCommentVNode("v-if", true),
128
- vue.createElementVNode("div", {
160
+ ((_l = vue.unref(messageActions)) == null ? void 0 : _l.user.includes("delete")) ? (vue.openBlock(), vue.createElementBlock("div", {
161
+ key: 1,
129
162
  class: "touchchat-action-item value-remove",
130
163
  onClick: ($event) => isDeleteDialogVisible.value = true
131
164
  }, [
132
165
  vue.createElementVNode("div", { class: "touchchat-action-tip" }, "\u5220\u9664")
133
- ], 8, ["onClick"]),
166
+ ], 8, ["onClick"])) : vue.createCommentVNode("v-if", true),
167
+ ((_m = vue.unref(messageActions)) == null ? void 0 : _m.user.includes("withDraw")) ? (vue.openBlock(), vue.createElementBlock("div", {
168
+ key: 2,
169
+ class: "touchchat-action-item value-enter",
170
+ onClick: onWithdraw
171
+ }, [
172
+ vue.createElementVNode("div", { class: "touchchat-action-tip" }, "\u64A4\u56DE")
173
+ ])) : vue.createCommentVNode("v-if", true),
134
174
  vue.createCommentVNode(' <slot name="extendsFn" :item="item" :index="index" /> ')
135
175
  ],
136
176
  64
@@ -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\" 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\" 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 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<!-- <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\" 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 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<!-- <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 } 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}>()\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 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 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})\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>\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":";;;;;;;;;;;;;;;;;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,WAAsBC,IAAW,CAAA,WAAA,KAAA,IAAA,EAAA,CAAA,CAAA;AAAA;;UAC7DC,uBAAwB,+EAAA,CAAA;AAAA,UACbC,CAAAA,CAAAA,EAAAA,GAAAA,IAAAA,CAAI,IAAJA,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAM,UAAcF,KAAAA,IAAAA,CAAW,gBAAA,yBAA1C,EAAAF,sBAAA,CAEM,KAAA,EAAA;AAAA;YAFiD,KAAM,EAAA,kCAAA;AAAA,YAAoC,OAAO,EAAA,MAAA;AAAA;YACvGK,uBAA0C,KAArC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,cAAE,CAAA;AAAA;UAGrCF,uBAAiB,0CAAA,CAAA;AAAA,UACDD,IAAW,CAAA,WAAA,KAAA,uBAA3B,EAAAF,sBAAA;AAAA,YAiBWM,YAAA;AAAA,YAAA,EAAA,KAAA,CAAA,EAAA;AAAA,YAAA;AAAA,cAhBCC,IAAAA,CAAAA,QAAAA,KAAAA,CAAY,EAAA,GAAAC,SAAA,CAAA,cAAA,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,EAAG,CAAA,QAAA,CAAQ,4BAAlD,EAAAR,sBAAA,CAEM,KAAA,EAAA;AAAA;gBAFuD,KAAM,EAAA,qCAAA;AAAA,gBAAuC,OAAO,EAAA,OAAA;AAAA;gBAChHK,uBAA4C,KAAvC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,0BAAI,CAAA;AAAA;gBAE5BD,EAAAA,GAAAA,IAAAA,CAAAA,IAAAA,KAAAA,IAAM,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAA,MAAA,CAAc,8BAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,EAAG,CAAA,QAAA,CAAQ,2BAA1D,EAAAJ,sBAAA;AAAA,gBAEM,KAAA;AAAA,gBAAA;AAAA;kBAF8D,KAAA,EAAMC,kBAAA,CAAA,CAAA,kCAAsDG,EAAAA,EAAAA,OAAAA,EAAAA,CAAAA,EAAAA,GAAAA,IAAAA,CAAAA,IAAAA,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAM,OAAO,EAAA,CAAA,CAAA;AAAA,kBAAK,OAAO,EAAA,MAAA;AAAA;;kBACxJC,uBAA0C,KAArC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,cAAE,CAAA;AAAA;;;;cAE1B,CAAA,CAAA,EAAA,GAAAG,SAAA,CAAc,cAAA,CAAd,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,GAAG,QAAQ,CAAA,SAAA,CAAA,oBAAtC,EAAAR,sBAAA;AAAA,gBAEM,KAAA;AAAA,gBAAA;AAAA;kBAF6C,KAAA,EAAMC,kBAAA,CAAA,CAAA,iCAAqDG,EAAAA,EAAAA,OAAAA,EAAAA,CAAAA,EAAAA,GAAAA,IAAAA,CAAAA,IAAAA,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAM,UAAU,EAAA,CAAA,CAAA;AAAA,kBAAK,OAAO,EAAA,SAAA;AAAA;;kBACzIC,uBAA2C,KAAtC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,oBAAG,CAAA;AAAA;;;;cAE3B,CAAA,CAAA,EAAA,GAAAG,SAAA,CAAc,cAAA,CAAA,KAAd,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAA,CAAG,SAAQ,4BAAtC,EAAAR,sBAAA,CAEM,KAAA,EAAA;AAAA;gBAF2C,KAAM,EAAA,mCAAA;AAAA,gBAAqC,OAAO,EAAA,OAAA;AAAA;gBAClGK,uBAA0C,KAArC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,cAAE,CAAA;AAAA;cAE1B,CAAA,CAAA,EAAA,GAAAG,SAAA,CAAc,cAAA,CAAA,KAAd,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAA,CAAG,SAAQ,4BAAtC,EAAAR,sBAAA,CAEM,KAAA,EAAA;AAAA;gBAF2C,KAAM,EAAA,mCAAA;AAAA,gBAAqC,OAAO,EAAA,OAAA;AAAA;gBAClGK,uBAA0C,KAArC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,cAAE,CAAA;AAAA;cAErCF,uBAA8D,yDAAA,CAAA;AAAA;;;;UAG/DA,uBAAiB,oDAAA,CAAA;AAAA,UACDD,IAAW,CAAA,WAAA,KAAA,yBAA3B,EAAAF,sBAAA;AAAA,YAWWM,YAAA;AAAA,YAAA,EAAA,KAAA,CAAA,EAAA;AAAA,YAAA;AAAA,cAAA,CAAA,CAVCF,UAAI,IAAJA,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAM,YAAO,CAAKI,SAAA,CAAO,OAAA,CAAC,CAAA,MAAA,KAAA,CAAU,eAAc,cAAA,CAAA,KAAd,mBAAgB,IAAK,CAAA,QAAA,CAAQ,6BAA5ER,uBAEM,KAAA,EAAA;AAAA;gBAFgF,KAAM,EAAA,kCAAA;AAAA,gBAAoC,OAAO,EAAA,MAAA;AAAA;gBACtIK,uBAA0C,KAArC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,cAAE,CAAA;AAAA;cAE1B,CAAA,CAAA,EAAA,GAAAG,SAAA,CAAc,cAAA,CAAA,KAAd,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAK,SAAQ,6BAAxC,EAAAR,sBAAA,CAEM,KAAA,EAAA;AAAA;gBAF8C,KAAM,EAAA,oCAAA;AAAA,gBAAsC,gBAAO,KAAA,qBAAA,CAAqB,KAAA,GAAA,IAAA;AAAA;gBAC3HK,uBAA0C,KAArC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,cAAE,CAAA;AAAA;cAE1B,CAAA,CAAA,EAAA,GAAAG,SAAA,CAAc,cAAA,CAAA,KAAd,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAK,SAAQ,+BAAxC,EAAAR,sBAAA,CAEM,KAAA,EAAA;AAAA;gBAFgD,KAAM,EAAA,mCAAA;AAAA,gBAAqC,OAAO,EAAA,UAAA;AAAA;gBACvGK,uBAA0C,KAArC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,cAAE,CAAA;AAAA;cAErCF,uBAA8D,yDAAA,CAAA;AAAA;;;;UAG/DM,cAAA,CAAqD,IAAA,CAAA,MAAA,EAAA,WAAA,EAAA;AAAA,YAA7B,MAAML,IAAI,CAAA,IAAA;AAAA,YAAG,OAAOM,IAAK,CAAA,KAAA;AAAA;UAEtC,qBAAqB,CAAA,KAAA,qBAAhCV,uBASM,KAAA,EAAA;AAAA;YAT4B,KAAM,EAAA,uBAAA;AAAA;YACvCK,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;;;;;;;;;;;;;"}
@@ -159,7 +159,8 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
159
159
  isLiked: (_b = data.isLiked) != null ? _b : false,
160
160
  isDisliked: (_c = data.isDisliked) != null ? _c : false,
161
161
  isEditing: (_d = data.isEditing) != null ? _d : false,
162
- editContent: (_e = data.editContent) != null ? _e : ""
162
+ editContent: (_e = data.editContent) != null ? _e : "",
163
+ msgList: []
163
164
  };
164
165
  }
165
166
  };
@@ -485,7 +486,8 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
485
486
  isShowLike: true,
486
487
  isShowCopy: true,
487
488
  componentName: currentComponentName.value,
488
- typeFlag: typeFlag.value
489
+ typeFlag: typeFlag.value,
490
+ msgList: []
489
491
  };
490
492
  if (insertIndex !== void 0 && insertIndex <= chatList.value.length) {
491
493
  chatList.value.splice(insertIndex, 0, chatItem);
@@ -601,7 +603,8 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
601
603
  user: "u",
602
604
  type: "text",
603
605
  content: inputValue.value,
604
- files: fileList || []
606
+ files: fileList || [],
607
+ msgList: []
605
608
  };
606
609
  chatList.value.push(userMessage);
607
610
  const index = chatList.value.length - 1;