@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.mjs","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":["body","_createElementBlock","_renderSlot","_createCommentVNode","_createBlock","_createElementVNode","inputValue","_unref","_normalizeClass","isChating","_toDisplayString","enableDeepThinking","_Fragment","_createVNode"],"mappings":"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"}
1
+ {"version":3,"file":"ChatInput.vue2.mjs","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":["body","_createElementBlock","_renderSlot","_createCommentVNode","_createBlock","_createElementVNode","inputValue","_unref","_normalizeClass","isChating","_toDisplayString","enableDeepThinking","_Fragment","_createVNode"],"mappings":"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"}
@@ -9,7 +9,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
9
9
  hasRetry: { type: Boolean },
10
10
  showCopy: { type: Boolean }
11
11
  },
12
- emits: ["copy", "retry", "like", "dislike", "edit", "delete"],
12
+ emits: ["copy", "retry", "like", "dislike", "edit", "delete", "quote", "withDraw"],
13
13
  setup(__props, { emit: __emit }) {
14
14
  const scripts = inject("scripts", []);
15
15
  const props = __props;
@@ -33,12 +33,19 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
33
33
  }
34
34
  emits("dislike", props.index);
35
35
  };
36
+ const onQuote = () => {
37
+ emits("quote");
38
+ };
36
39
  const onEdit = () => emits("edit", props.index);
37
40
  const handleConfirmDelete = () => {
38
41
  emits("delete", props.index);
39
42
  remove(props.item, props.index);
40
43
  isDeleteDialogVisible.value = false;
41
44
  };
45
+ const onWithdraw = () => {
46
+ emits("withDraw");
47
+ withDraw(props.item, props.index);
48
+ };
42
49
  const handleCancelDelete = () => {
43
50
  isDeleteDialogVisible.value = false;
44
51
  };
@@ -51,8 +58,18 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
51
58
  const remove = inject("remove", () => {
52
59
  console.warn("\u672A\u63D0\u4F9BdetailRemove\u51FD\u6570");
53
60
  });
61
+ const share = inject("share", () => {
62
+ console.warn("\u672A\u63D0\u4F9Bshare\u51FD\u6570");
63
+ });
64
+ const withDraw = inject("withDraw", () => {
65
+ console.warn("\u672A\u63D0\u4F9BwithDraw\u51FD\u6570");
66
+ });
67
+ const messageActions = inject("messageActions");
68
+ const onShare = () => {
69
+ share(props.item, props.index);
70
+ };
54
71
  return (_ctx, _cache) => {
55
- var _a, _b, _c, _d, _e;
72
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
56
73
  return openBlock(), createElementBlock(
57
74
  "div",
58
75
  {
@@ -72,18 +89,18 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
72
89
  Fragment,
73
90
  { key: 1 },
74
91
  [
75
- _ctx.hasRetry ? (openBlock(), createElementBlock("div", {
92
+ _ctx.hasRetry && ((_b = unref(messageActions)) == null ? void 0 : _b.ai.includes("retry")) ? (openBlock(), createElementBlock("div", {
76
93
  key: 0,
77
94
  class: "touchchat-action-item value-refresh",
78
95
  onClick: onRetry
79
96
  }, [
80
97
  createElementVNode("div", { class: "touchchat-action-tip" }, "\u91CD\u65B0\u83B7\u53D6")
81
98
  ])) : createCommentVNode("v-if", true),
82
- ((_b = _ctx.item) == null ? void 0 : _b.isShowLike) ? (openBlock(), createElementBlock(
99
+ ((_c = _ctx.item) == null ? void 0 : _c.isShowLike) && ((_d = unref(messageActions)) == null ? void 0 : _d.ai.includes("like")) ? (openBlock(), createElementBlock(
83
100
  "div",
84
101
  {
85
102
  key: 1,
86
- class: normalizeClass(["touchchat-action-item value-good", { "is-on": (_c = _ctx.item) == null ? void 0 : _c.isLiked }]),
103
+ class: normalizeClass(["touchchat-action-item value-good", { "is-on": (_e = _ctx.item) == null ? void 0 : _e.isLiked }]),
87
104
  onClick: onLike
88
105
  },
89
106
  [
@@ -92,10 +109,11 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
92
109
  2
93
110
  /* CLASS */
94
111
  )) : createCommentVNode("v-if", true),
95
- createElementVNode(
112
+ ((_f = unref(messageActions)) == null ? void 0 : _f.ai.includes("dislike")) ? (openBlock(), createElementBlock(
96
113
  "div",
97
114
  {
98
- class: normalizeClass(["touchchat-action-item value-bad", { "is-on": (_d = _ctx.item) == null ? void 0 : _d.isDisliked }]),
115
+ key: 2,
116
+ class: normalizeClass(["touchchat-action-item value-bad", { "is-on": (_g = _ctx.item) == null ? void 0 : _g.isDisliked }]),
99
117
  onClick: onDislike
100
118
  },
101
119
  [
@@ -103,7 +121,21 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
103
121
  ],
104
122
  2
105
123
  /* CLASS */
106
- ),
124
+ )) : createCommentVNode("v-if", true),
125
+ ((_h = unref(messageActions)) == null ? void 0 : _h.ai.includes("share")) ? (openBlock(), createElementBlock("div", {
126
+ key: 3,
127
+ class: "touchchat-action-item value-share",
128
+ onClick: onShare
129
+ }, [
130
+ createElementVNode("div", { class: "touchchat-action-tip" }, "\u8F6C\u53D1")
131
+ ])) : createCommentVNode("v-if", true),
132
+ ((_i = unref(messageActions)) == null ? void 0 : _i.ai.includes("quote")) ? (openBlock(), createElementBlock("div", {
133
+ key: 4,
134
+ class: "touchchat-action-item value-quote",
135
+ onClick: onQuote
136
+ }, [
137
+ createElementVNode("div", { class: "touchchat-action-tip" }, "\u5F15\u7528")
138
+ ])) : createCommentVNode("v-if", true),
107
139
  createCommentVNode(' <slot name="extendsFn" :item="item" :index="index" /> ')
108
140
  ],
109
141
  64
@@ -114,19 +146,27 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
114
146
  Fragment,
115
147
  { key: 2 },
116
148
  [
117
- ((_e = _ctx.item) == null ? void 0 : _e.content) && !unref(scripts).length ? (openBlock(), createElementBlock("div", {
149
+ ((_j = _ctx.item) == null ? void 0 : _j.content) && !unref(scripts).length && ((_k = unref(messageActions)) == null ? void 0 : _k.user.includes("edit")) ? (openBlock(), createElementBlock("div", {
118
150
  key: 0,
119
151
  class: "touchchat-action-item value-edit",
120
152
  onClick: onEdit
121
153
  }, [
122
154
  createElementVNode("div", { class: "touchchat-action-tip" }, "\u7F16\u8F91")
123
155
  ])) : createCommentVNode("v-if", true),
124
- createElementVNode("div", {
156
+ ((_l = unref(messageActions)) == null ? void 0 : _l.user.includes("delete")) ? (openBlock(), createElementBlock("div", {
157
+ key: 1,
125
158
  class: "touchchat-action-item value-remove",
126
159
  onClick: ($event) => isDeleteDialogVisible.value = true
127
160
  }, [
128
161
  createElementVNode("div", { class: "touchchat-action-tip" }, "\u5220\u9664")
129
- ], 8, ["onClick"]),
162
+ ], 8, ["onClick"])) : createCommentVNode("v-if", true),
163
+ ((_m = unref(messageActions)) == null ? void 0 : _m.user.includes("withDraw")) ? (openBlock(), createElementBlock("div", {
164
+ key: 2,
165
+ class: "touchchat-action-item value-enter",
166
+ onClick: onWithdraw
167
+ }, [
168
+ createElementVNode("div", { class: "touchchat-action-tip" }, "\u64A4\u56DE")
169
+ ])) : createCommentVNode("v-if", true),
130
170
  createCommentVNode(' <slot name="extendsFn" :item="item" :index="index" /> ')
131
171
  ],
132
172
  64
@@ -1 +1 @@
1
- {"version":3,"file":"MessageActions.vue2.mjs","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":["_createElementBlock","_normalizeClass","messageType","_createCommentVNode","item","_createElementVNode","_Fragment","hasRetry","_unref","_renderSlot","index"],"mappings":"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"}
1
+ {"version":3,"file":"MessageActions.vue2.mjs","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":["_createElementBlock","_normalizeClass","messageType","_createCommentVNode","item","_createElementVNode","_Fragment","hasRetry","_unref","_renderSlot","index"],"mappings":"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"}
@@ -155,7 +155,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
155
155
  isLiked: (_b = data.isLiked) != null ? _b : false,
156
156
  isDisliked: (_c = data.isDisliked) != null ? _c : false,
157
157
  isEditing: (_d = data.isEditing) != null ? _d : false,
158
- editContent: (_e = data.editContent) != null ? _e : ""
158
+ editContent: (_e = data.editContent) != null ? _e : "",
159
+ msgList: []
159
160
  };
160
161
  }
161
162
  };
@@ -481,7 +482,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
481
482
  isShowLike: true,
482
483
  isShowCopy: true,
483
484
  componentName: currentComponentName.value,
484
- typeFlag: typeFlag.value
485
+ typeFlag: typeFlag.value,
486
+ msgList: []
485
487
  };
486
488
  if (insertIndex !== void 0 && insertIndex <= chatList.value.length) {
487
489
  chatList.value.splice(insertIndex, 0, chatItem);
@@ -597,7 +599,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
597
599
  user: "u",
598
600
  type: "text",
599
601
  content: inputValue.value,
600
- files: fileList || []
602
+ files: fileList || [],
603
+ msgList: []
601
604
  };
602
605
  chatList.value.push(userMessage);
603
606
  const index = chatList.value.length - 1;