@touchvue/chat 1.0.0-beta.5 → 1.0.0-beta.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -25
- package/es/_virtual/_plugin-vue_export-helper.mjs +10 -0
- package/es/_virtual/_plugin-vue_export-helper.mjs.map +1 -0
- package/es/index.mjs.map +1 -1
- package/es/node_modules/.pnpm/@touchvue_a2ui@1.0.0-beta.46/node_modules/@touchvue/a2ui/dist/index.mjs +4816 -0
- package/es/node_modules/.pnpm/@touchvue_a2ui@1.0.0-beta.46/node_modules/@touchvue/a2ui/dist/index.mjs.map +1 -0
- package/es/node_modules/.pnpm/dompurify@3.3.0/node_modules/dompurify/dist/purify.es.mjs +1380 -0
- package/es/node_modules/.pnpm/dompurify@3.3.0/node_modules/dompurify/dist/purify.es.mjs.map +1 -0
- package/es/node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/html2canvas.esm.mjs +7824 -0
- package/es/node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/html2canvas.esm.mjs.map +1 -0
- package/es/package.json.css +1 -1
- package/es/package.json.mjs +2 -2
- package/es/packages/components/index.mjs +1 -1
- package/es/packages/components/resolver.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue.mjs +3 -2
- package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue2.mjs +219 -159
- package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/face.vue.mjs +3 -2
- package/es/packages/components/touchchat/component/AiRobot/face.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/face.vue2.mjs +27 -13
- package/es/packages/components/touchchat/component/AiRobot/face.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/letter.vue.mjs +3 -2
- package/es/packages/components/touchchat/component/AiRobot/letter.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs +182 -41
- package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/meterialPrepare.vue.mjs +3 -2
- package/es/packages/components/touchchat/component/AiRobot/meterialPrepare.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.mjs +15 -10
- package/es/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/start.vue.mjs +3 -2
- package/es/packages/components/touchchat/component/AiRobot/start.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/start.vue2.mjs +18 -11
- package/es/packages/components/touchchat/component/AiRobot/start.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/CardView.vue.mjs +3 -2
- package/es/packages/components/touchchat/component/CardView.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/component/CardView.vue2.mjs +66 -42
- package/es/packages/components/touchchat/component/CardView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/FileContent.vue.mjs +7 -0
- package/es/packages/components/touchchat/component/FileContent.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/component/FileContent.vue2.mjs +206 -0
- package/es/packages/components/touchchat/component/FileContent.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/FileView.vue.mjs +3 -2
- package/es/packages/components/touchchat/component/FileView.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/component/FileView.vue2.mjs +17 -4
- package/es/packages/components/touchchat/component/FileView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/HelloChat.vue.mjs +3 -2
- package/es/packages/components/touchchat/component/HelloChat.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/component/HelloChat.vue2.mjs +26 -14
- package/es/packages/components/touchchat/component/HelloChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/ImageFile.vue.mjs +7 -0
- package/es/packages/components/touchchat/component/ImageFile.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/component/ImageFile.vue2.mjs +162 -0
- package/es/packages/components/touchchat/component/ImageFile.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/ImageView.vue.mjs +3 -2
- package/es/packages/components/touchchat/component/ImageView.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/component/ImageView.vue2.mjs +1 -1
- package/es/packages/components/touchchat/component/ImageView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/LinkView.vue.mjs +3 -2
- package/es/packages/components/touchchat/component/LinkView.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/component/LinkView.vue2.mjs +19 -5
- package/es/packages/components/touchchat/component/LinkView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/MarkLayer.vue.mjs +7 -0
- package/es/packages/components/touchchat/component/MarkLayer.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs +56 -0
- package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/ModuleSelect.vue.mjs +7 -0
- package/es/packages/components/touchchat/component/ModuleSelect.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs +121 -0
- package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/PDFFile.vue.mjs +7 -0
- package/es/packages/components/touchchat/component/PDFFile.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/component/PDFFile.vue2.mjs +211 -0
- package/es/packages/components/touchchat/component/PDFFile.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/QuoteContent.vue.mjs +7 -0
- package/es/packages/components/touchchat/component/QuoteContent.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/component/QuoteContent.vue2.mjs +40 -0
- package/es/packages/components/touchchat/component/QuoteContent.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/RealtimeVoice.vue.mjs +7 -0
- package/es/packages/components/touchchat/component/RealtimeVoice.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs +160 -0
- package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/Screenshot.vue.mjs +7 -0
- package/es/packages/components/touchchat/component/Screenshot.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/component/Screenshot.vue2.mjs +208 -0
- package/es/packages/components/touchchat/component/Screenshot.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/ThoughtChain.vue.mjs +7 -0
- package/es/packages/components/touchchat/component/ThoughtChain.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/component/ThoughtChain.vue2.mjs +69 -0
- package/es/packages/components/touchchat/component/ThoughtChain.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/UploadView.vue.mjs +7 -0
- package/es/packages/components/touchchat/component/UploadView.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/component/UploadView.vue2.mjs +186 -0
- package/es/packages/components/touchchat/component/UploadView.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/UploadView_api.vue.mjs +7 -0
- package/es/packages/components/touchchat/component/UploadView_api.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/component/UploadView_api.vue2.mjs +166 -0
- package/es/packages/components/touchchat/component/UploadView_api.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/VideoFile.vue.mjs +7 -0
- package/es/packages/components/touchchat/component/VideoFile.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/component/VideoFile.vue2.mjs +33 -0
- package/es/packages/components/touchchat/component/VideoFile.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/VoiceView.vue.mjs +7 -0
- package/es/packages/components/touchchat/component/VoiceView.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/component/VoiceView.vue2.mjs +165 -0
- package/es/packages/components/touchchat/component/VoiceView.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/img/file/doc.png.mjs +4 -0
- package/es/packages/components/touchchat/img/file/doc.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/file/docx.png.mjs +4 -0
- package/es/packages/components/touchchat/img/file/docx.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/file/gif.png.mjs +4 -0
- package/es/packages/components/touchchat/img/file/gif.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/file/html.png.mjs +4 -0
- package/es/packages/components/touchchat/img/file/html.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/file/jpg.png.mjs +4 -0
- package/es/packages/components/touchchat/img/file/jpg.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/file/mp3.png.mjs +4 -0
- package/es/packages/components/touchchat/img/file/mp3.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/file/mp4.png.mjs +4 -0
- package/es/packages/components/touchchat/img/file/mp4.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/file/music.png.mjs +4 -0
- package/es/packages/components/touchchat/img/file/music.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/file/pdf.png.mjs +4 -0
- package/es/packages/components/touchchat/img/file/pdf.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/file/png.png.mjs +4 -0
- package/es/packages/components/touchchat/img/file/png.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/file/ppt.png.mjs +4 -0
- package/es/packages/components/touchchat/img/file/ppt.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/file/pptx.png.mjs +4 -0
- package/es/packages/components/touchchat/img/file/pptx.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/file/txt.png.mjs +4 -0
- package/es/packages/components/touchchat/img/file/txt.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/file/xls.png.mjs +4 -0
- package/es/packages/components/touchchat/img/file/xls.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/file/xlsx.png.mjs +4 -0
- package/es/packages/components/touchchat/img/file/xlsx.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/svg/reset.svg.mjs +4 -0
- package/es/packages/components/touchchat/img/svg/reset.svg.mjs.map +1 -0
- package/es/packages/components/touchchat/index.mjs +5 -5
- package/es/packages/components/touchchat/index.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/AgentsView.vue.mjs +7 -0
- package/es/packages/components/touchchat/src/AiChat/AgentsView.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs +59 -0
- package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +322 -139
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/TouchChat.mjs +18 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/TouchChat.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.mjs +145 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs +19 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs +693 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useCopy.mjs +55 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useCopy.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs +155 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs +345 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useScroll.mjs +74 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useScroll.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +472 -44
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs +180 -98
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs +29 -12
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/MessageActions.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/MessageActions.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs +175 -62
- package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs +14 -8
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue.mjs +7 -0
- package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs +1034 -0
- package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +276 -1004
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs +346 -122
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +143 -64
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/index.vue.mjs +3 -2
- package/es/packages/components/touchchat/src/index.vue.mjs.map +1 -1
- package/es/packages/components/touchchat/src/index.vue2.mjs +252 -143
- package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/types/a2a.mjs +11 -0
- package/es/packages/components/touchchat/src/types/a2a.mjs.map +1 -0
- package/es/packages/components/touchchat/utils/a2aService.mjs +316 -0
- package/es/packages/components/touchchat/utils/a2aService.mjs.map +1 -0
- package/es/packages/components/touchchat/utils/fetchStream.mjs +8 -2
- package/es/packages/components/touchchat/utils/fetchStream.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/markdown.mjs +31 -13
- package/es/packages/components/touchchat/utils/markdown.mjs.map +1 -1
- package/es/packages/utils/config.mjs.map +1 -1
- package/es/packages/utils/types.mjs.map +1 -1
- package/global.d.ts +2 -2
- package/lib/_virtual/_plugin-vue_export-helper.js +14 -0
- package/lib/_virtual/_plugin-vue_export-helper.js.map +1 -0
- package/lib/index.js.map +1 -1
- package/lib/node_modules/.pnpm/@touchvue_a2ui@1.0.0-beta.46/node_modules/@touchvue/a2ui/dist/index.js +4819 -0
- package/lib/node_modules/.pnpm/@touchvue_a2ui@1.0.0-beta.46/node_modules/@touchvue/a2ui/dist/index.js.map +1 -0
- package/lib/node_modules/.pnpm/dompurify@3.3.0/node_modules/dompurify/dist/purify.es.js +1384 -0
- package/lib/node_modules/.pnpm/dompurify@3.3.0/node_modules/dompurify/dist/purify.es.js.map +1 -0
- package/lib/node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/html2canvas.esm.js +7828 -0
- package/lib/node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/html2canvas.esm.js.map +1 -0
- package/lib/package.json.css +1 -1
- package/lib/package.json.js +2 -2
- package/lib/packages/components/index.js +2 -2
- package/lib/packages/components/resolver.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue.js +3 -2
- package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue2.js +219 -159
- package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/face.vue.js +3 -2
- package/lib/packages/components/touchchat/component/AiRobot/face.vue.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/face.vue2.js +26 -12
- package/lib/packages/components/touchchat/component/AiRobot/face.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue.js +3 -2
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js +181 -40
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/meterialPrepare.vue.js +3 -2
- package/lib/packages/components/touchchat/component/AiRobot/meterialPrepare.vue.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.js +15 -10
- package/lib/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/start.vue.js +3 -2
- package/lib/packages/components/touchchat/component/AiRobot/start.vue.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/start.vue2.js +17 -10
- package/lib/packages/components/touchchat/component/AiRobot/start.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/CardView.vue.js +3 -2
- package/lib/packages/components/touchchat/component/CardView.vue.js.map +1 -1
- package/lib/packages/components/touchchat/component/CardView.vue2.js +66 -42
- package/lib/packages/components/touchchat/component/CardView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/FileContent.vue.js +11 -0
- package/lib/packages/components/touchchat/component/FileContent.vue.js.map +1 -0
- package/lib/packages/components/touchchat/component/FileContent.vue2.js +210 -0
- package/lib/packages/components/touchchat/component/FileContent.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/FileView.vue.js +3 -2
- package/lib/packages/components/touchchat/component/FileView.vue.js.map +1 -1
- package/lib/packages/components/touchchat/component/FileView.vue2.js +16 -3
- package/lib/packages/components/touchchat/component/FileView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/HelloChat.vue.js +3 -2
- package/lib/packages/components/touchchat/component/HelloChat.vue.js.map +1 -1
- package/lib/packages/components/touchchat/component/HelloChat.vue2.js +26 -14
- package/lib/packages/components/touchchat/component/HelloChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/ImageFile.vue.js +11 -0
- package/lib/packages/components/touchchat/component/ImageFile.vue.js.map +1 -0
- package/lib/packages/components/touchchat/component/ImageFile.vue2.js +166 -0
- package/lib/packages/components/touchchat/component/ImageFile.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/ImageView.vue.js +3 -2
- package/lib/packages/components/touchchat/component/ImageView.vue.js.map +1 -1
- package/lib/packages/components/touchchat/component/ImageView.vue2.js +1 -1
- package/lib/packages/components/touchchat/component/ImageView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/LinkView.vue.js +3 -2
- package/lib/packages/components/touchchat/component/LinkView.vue.js.map +1 -1
- package/lib/packages/components/touchchat/component/LinkView.vue2.js +18 -4
- package/lib/packages/components/touchchat/component/LinkView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/MarkLayer.vue.js +11 -0
- package/lib/packages/components/touchchat/component/MarkLayer.vue.js.map +1 -0
- package/lib/packages/components/touchchat/component/MarkLayer.vue2.js +60 -0
- package/lib/packages/components/touchchat/component/MarkLayer.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/ModuleSelect.vue.js +11 -0
- package/lib/packages/components/touchchat/component/ModuleSelect.vue.js.map +1 -0
- package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js +125 -0
- package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/PDFFile.vue.js +11 -0
- package/lib/packages/components/touchchat/component/PDFFile.vue.js.map +1 -0
- package/lib/packages/components/touchchat/component/PDFFile.vue2.js +215 -0
- package/lib/packages/components/touchchat/component/PDFFile.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/QuoteContent.vue.js +11 -0
- package/lib/packages/components/touchchat/component/QuoteContent.vue.js.map +1 -0
- package/lib/packages/components/touchchat/component/QuoteContent.vue2.js +44 -0
- package/lib/packages/components/touchchat/component/QuoteContent.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/RealtimeVoice.vue.js +11 -0
- package/lib/packages/components/touchchat/component/RealtimeVoice.vue.js.map +1 -0
- package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js +164 -0
- package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/Screenshot.vue.js +11 -0
- package/lib/packages/components/touchchat/component/Screenshot.vue.js.map +1 -0
- package/lib/packages/components/touchchat/component/Screenshot.vue2.js +212 -0
- package/lib/packages/components/touchchat/component/Screenshot.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/ThoughtChain.vue.js +11 -0
- package/lib/packages/components/touchchat/component/ThoughtChain.vue.js.map +1 -0
- package/lib/packages/components/touchchat/component/ThoughtChain.vue2.js +73 -0
- package/lib/packages/components/touchchat/component/ThoughtChain.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/UploadView.vue.js +11 -0
- package/lib/packages/components/touchchat/component/UploadView.vue.js.map +1 -0
- package/lib/packages/components/touchchat/component/UploadView.vue2.js +190 -0
- package/lib/packages/components/touchchat/component/UploadView.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/UploadView_api.vue.js +11 -0
- package/lib/packages/components/touchchat/component/UploadView_api.vue.js.map +1 -0
- package/lib/packages/components/touchchat/component/UploadView_api.vue2.js +170 -0
- package/lib/packages/components/touchchat/component/UploadView_api.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/VideoFile.vue.js +11 -0
- package/lib/packages/components/touchchat/component/VideoFile.vue.js.map +1 -0
- package/lib/packages/components/touchchat/component/VideoFile.vue2.js +37 -0
- package/lib/packages/components/touchchat/component/VideoFile.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/VoiceView.vue.js +11 -0
- package/lib/packages/components/touchchat/component/VoiceView.vue.js.map +1 -0
- package/lib/packages/components/touchchat/component/VoiceView.vue2.js +169 -0
- package/lib/packages/components/touchchat/component/VoiceView.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/img/file/doc.png.js +8 -0
- package/lib/packages/components/touchchat/img/file/doc.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/file/docx.png.js +8 -0
- package/lib/packages/components/touchchat/img/file/docx.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/file/gif.png.js +8 -0
- package/lib/packages/components/touchchat/img/file/gif.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/file/html.png.js +8 -0
- package/lib/packages/components/touchchat/img/file/html.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/file/jpg.png.js +8 -0
- package/lib/packages/components/touchchat/img/file/jpg.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/file/mp3.png.js +8 -0
- package/lib/packages/components/touchchat/img/file/mp3.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/file/mp4.png.js +8 -0
- package/lib/packages/components/touchchat/img/file/mp4.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/file/music.png.js +8 -0
- package/lib/packages/components/touchchat/img/file/music.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/file/pdf.png.js +8 -0
- package/lib/packages/components/touchchat/img/file/pdf.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/file/png.png.js +8 -0
- package/lib/packages/components/touchchat/img/file/png.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/file/ppt.png.js +8 -0
- package/lib/packages/components/touchchat/img/file/ppt.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/file/pptx.png.js +8 -0
- package/lib/packages/components/touchchat/img/file/pptx.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/file/txt.png.js +8 -0
- package/lib/packages/components/touchchat/img/file/txt.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/file/xls.png.js +8 -0
- package/lib/packages/components/touchchat/img/file/xls.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/file/xlsx.png.js +8 -0
- package/lib/packages/components/touchchat/img/file/xlsx.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/svg/reset.svg.js +8 -0
- package/lib/packages/components/touchchat/img/svg/reset.svg.js.map +1 -0
- package/lib/packages/components/touchchat/index.js +6 -6
- package/lib/packages/components/touchchat/index.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue.js +11 -0
- package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js +63 -0
- package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +321 -138
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/TouchChat.js +21 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/TouchChat.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.js +147 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/types.js +22 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/types.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js +695 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useCopy.js +57 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useCopy.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js +157 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js +347 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useScroll.js +76 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useScroll.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +471 -43
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js +179 -97
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js +28 -11
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js +174 -61
- package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js +14 -8
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue.js +11 -0
- package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js +1038 -0
- package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +275 -1003
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js +345 -121
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue.js +3 -2
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +142 -63
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/index.vue.js +3 -2
- package/lib/packages/components/touchchat/src/index.vue.js.map +1 -1
- package/lib/packages/components/touchchat/src/index.vue2.js +251 -142
- package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/types/a2a.js +13 -0
- package/lib/packages/components/touchchat/src/types/a2a.js.map +1 -0
- package/lib/packages/components/touchchat/utils/a2aService.js +319 -0
- package/lib/packages/components/touchchat/utils/a2aService.js.map +1 -0
- package/lib/packages/components/touchchat/utils/fetchStream.js +8 -2
- package/lib/packages/components/touchchat/utils/fetchStream.js.map +1 -1
- package/lib/packages/components/touchchat/utils/markdown.js +31 -13
- package/lib/packages/components/touchchat/utils/markdown.js.map +1 -1
- package/lib/packages/utils/config.js.map +1 -1
- package/lib/packages/utils/types.js.map +1 -1
- package/package.json +83 -83
- package/theme/components/index.css +969 -43
- package/theme/font/iconfont.woff +0 -0
- package/theme/font/iconfont.woff2 +0 -0
- package/theme/index.css +969 -43
- package/theme/skin/default.css +969 -43
- package/types/global.d.ts +2 -2
- package/es/packages/components/touchchat/src/AiChat/Scene.vue.mjs +0 -6
- package/es/packages/components/touchchat/src/AiChat/Scene.vue.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiChat/Scene.vue2.mjs +0 -42
- package/es/packages/components/touchchat/src/AiChat/Scene.vue2.mjs.map +0 -1
- package/lib/packages/components/touchchat/src/AiChat/Scene.vue.js +0 -10
- package/lib/packages/components/touchchat/src/AiChat/Scene.vue.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiChat/Scene.vue2.js +0 -46
- package/lib/packages/components/touchchat/src/AiChat/Scene.vue2.js.map +0 -1
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { defineComponent, ref, watch, openBlock, createElementBlock, Fragment, createElementVNode, createCommentVNode, normalizeStyle, withModifiers } from 'vue';
|
|
2
|
+
import html2canvas from '../../../../node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/html2canvas.esm.mjs';
|
|
3
|
+
|
|
4
|
+
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
5
|
+
__name: "Screenshot",
|
|
6
|
+
emits: ["upFileList"],
|
|
7
|
+
setup(__props, { emit: __emit }) {
|
|
8
|
+
const isScreenshotting = ref(false);
|
|
9
|
+
const selectionArea = ref(null);
|
|
10
|
+
const finallySelectArea = ref(null);
|
|
11
|
+
const startX = ref(0);
|
|
12
|
+
const startY = ref(0);
|
|
13
|
+
const isAreaFixed = ref(false);
|
|
14
|
+
const fileList = ref([]);
|
|
15
|
+
const emits = __emit;
|
|
16
|
+
watch(
|
|
17
|
+
() => isScreenshotting.value,
|
|
18
|
+
() => {
|
|
19
|
+
finallySelectArea.value = null;
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
const generateId = () => Date.now().toString(36) + Math.random().toString(36).substr(2);
|
|
23
|
+
const formatFileSize = (bytes) => {
|
|
24
|
+
if (bytes === 0)
|
|
25
|
+
return "0 Bytes";
|
|
26
|
+
const k = 1024;
|
|
27
|
+
const sizes = ["Bytes", "KB", "MB", "GB"];
|
|
28
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
29
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
|
|
30
|
+
};
|
|
31
|
+
const startScreenshot = () => {
|
|
32
|
+
isScreenshotting.value = true;
|
|
33
|
+
document.body.style.overflow = "hidden";
|
|
34
|
+
isAreaFixed.value = true;
|
|
35
|
+
const bodyWidth = document.body.clientWidth;
|
|
36
|
+
const bodyHeight = document.body.clientHeight;
|
|
37
|
+
selectionArea.value = { x: 0, y: 0, width: bodyWidth, height: bodyHeight };
|
|
38
|
+
};
|
|
39
|
+
const handleMouseDown = (e) => {
|
|
40
|
+
e.stopPropagation();
|
|
41
|
+
if (isAreaFixed.value) {
|
|
42
|
+
isAreaFixed.value = false;
|
|
43
|
+
startSelect(e);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
startSelect(e);
|
|
47
|
+
};
|
|
48
|
+
const endSelect = (e) => {
|
|
49
|
+
e.stopPropagation();
|
|
50
|
+
if (!isAreaFixed.value) {
|
|
51
|
+
isAreaFixed.value = true;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const startSelect = (e) => {
|
|
55
|
+
startX.value = e.clientX;
|
|
56
|
+
startY.value = e.clientY;
|
|
57
|
+
selectionArea.value = { x: startX.value, y: startY.value, width: 0, height: 0 };
|
|
58
|
+
};
|
|
59
|
+
const selectArea = (e) => {
|
|
60
|
+
if (isAreaFixed.value || !selectionArea.value)
|
|
61
|
+
return;
|
|
62
|
+
const endX = e.clientX;
|
|
63
|
+
const endY = e.clientY;
|
|
64
|
+
selectionArea.value.x = Math.min(startX.value, endX);
|
|
65
|
+
selectionArea.value.y = Math.min(startY.value, endY);
|
|
66
|
+
selectionArea.value.width = Math.abs(endX - startX.value);
|
|
67
|
+
selectionArea.value.height = Math.abs(endY - startY.value);
|
|
68
|
+
finallySelectArea.value = JSON.parse(JSON.stringify(selectionArea.value));
|
|
69
|
+
};
|
|
70
|
+
const confirmScreenshot = async (e) => {
|
|
71
|
+
e.stopPropagation();
|
|
72
|
+
try {
|
|
73
|
+
let canvas;
|
|
74
|
+
const commonOptions = {
|
|
75
|
+
useCORS: true,
|
|
76
|
+
logging: false,
|
|
77
|
+
scale: window.devicePixelRatio || 1,
|
|
78
|
+
// 设置缩放比例,解决模糊问题
|
|
79
|
+
backgroundColor: null,
|
|
80
|
+
// 不设置背景色,保持原有背景
|
|
81
|
+
ignoreElements: (element) => {
|
|
82
|
+
return element.classList.contains("screenshot-mask");
|
|
83
|
+
},
|
|
84
|
+
useOverflowScrolling: false,
|
|
85
|
+
// 禁用 overflow-scrolling 以避免样式问题
|
|
86
|
+
removeContainer: true,
|
|
87
|
+
// 截图完成后移除临时创建的元素
|
|
88
|
+
allowTaint: false
|
|
89
|
+
};
|
|
90
|
+
const scrollX = window.pageXOffset || document.documentElement.scrollLeft;
|
|
91
|
+
const scrollY = window.pageYOffset || document.documentElement.scrollTop;
|
|
92
|
+
if (finallySelectArea.value && finallySelectArea.value.width > 0 && finallySelectArea.value.height > 0) {
|
|
93
|
+
const { x, y, width, height } = finallySelectArea.value;
|
|
94
|
+
canvas = await html2canvas(document.body, {
|
|
95
|
+
...commonOptions,
|
|
96
|
+
width: width * commonOptions.scale,
|
|
97
|
+
height: height * commonOptions.scale,
|
|
98
|
+
// 加上滚动偏移量
|
|
99
|
+
x: x + scrollX,
|
|
100
|
+
y: y + scrollY
|
|
101
|
+
});
|
|
102
|
+
} else {
|
|
103
|
+
canvas = await html2canvas(document.body, commonOptions);
|
|
104
|
+
}
|
|
105
|
+
await new Promise((resolve) => {
|
|
106
|
+
canvas.toBlob((blob) => {
|
|
107
|
+
if (blob) {
|
|
108
|
+
const file = new File([blob], `screenshot_${generateId()}.png`, { type: "image/png" });
|
|
109
|
+
const base64 = canvas.toDataURL("image/png");
|
|
110
|
+
const fileItem = {
|
|
111
|
+
file,
|
|
112
|
+
isUploading: false,
|
|
113
|
+
uploadProgress: 0,
|
|
114
|
+
uploadSuccess: false,
|
|
115
|
+
uploadError: false,
|
|
116
|
+
fileSize: formatFileSize(file.size),
|
|
117
|
+
fileType: file.type,
|
|
118
|
+
name: file.name,
|
|
119
|
+
id: generateId(),
|
|
120
|
+
base64,
|
|
121
|
+
lastModified: Date.now()
|
|
122
|
+
};
|
|
123
|
+
fileList.value = [fileItem];
|
|
124
|
+
emits("upFileList", fileList.value);
|
|
125
|
+
}
|
|
126
|
+
resolve();
|
|
127
|
+
}, "image/png");
|
|
128
|
+
});
|
|
129
|
+
} catch (error) {
|
|
130
|
+
console.error("\u622A\u56FE\u5931\u8D25:", error);
|
|
131
|
+
}
|
|
132
|
+
cancelScreenshot();
|
|
133
|
+
};
|
|
134
|
+
const cancelScreenshot = () => {
|
|
135
|
+
isScreenshotting.value = false;
|
|
136
|
+
selectionArea.value = null;
|
|
137
|
+
isAreaFixed.value = false;
|
|
138
|
+
document.body.style.overflow = "";
|
|
139
|
+
};
|
|
140
|
+
return (_ctx, _cache) => {
|
|
141
|
+
return openBlock(), createElementBlock(
|
|
142
|
+
Fragment,
|
|
143
|
+
null,
|
|
144
|
+
[
|
|
145
|
+
createElementVNode("button", {
|
|
146
|
+
class: "touchchat-edit-screenshot touchchat-edit-button",
|
|
147
|
+
onClick: startScreenshot
|
|
148
|
+
}, [
|
|
149
|
+
createElementVNode("div", { class: "touchchat-edit-screenshot-icon" }),
|
|
150
|
+
createElementVNode("div", { class: "touchchat-edit-tooltip" }, "\u622A\u56FE")
|
|
151
|
+
]),
|
|
152
|
+
createCommentVNode(" \u622A\u56FE\u906E\u7F69\u5C42 "),
|
|
153
|
+
isScreenshotting.value ? (openBlock(), createElementBlock(
|
|
154
|
+
"div",
|
|
155
|
+
{
|
|
156
|
+
key: 0,
|
|
157
|
+
class: "screenshot-mask",
|
|
158
|
+
onMousedown: handleMouseDown,
|
|
159
|
+
onMousemove: selectArea,
|
|
160
|
+
onMouseup: endSelect
|
|
161
|
+
},
|
|
162
|
+
[
|
|
163
|
+
createCommentVNode(" \u622A\u56FE\u533A\u57DF "),
|
|
164
|
+
selectionArea.value ? (openBlock(), createElementBlock(
|
|
165
|
+
"div",
|
|
166
|
+
{
|
|
167
|
+
key: 0,
|
|
168
|
+
class: "selection-area",
|
|
169
|
+
style: normalizeStyle({
|
|
170
|
+
left: selectionArea.value.x + "px",
|
|
171
|
+
top: selectionArea.value.y + "px",
|
|
172
|
+
right: 0,
|
|
173
|
+
bottom: 0,
|
|
174
|
+
width: selectionArea.value.width + "px",
|
|
175
|
+
height: selectionArea.value.height + "px",
|
|
176
|
+
"--selection-left": selectionArea.value.x + "px",
|
|
177
|
+
"--selection-top": selectionArea.value.y + "px",
|
|
178
|
+
"--selection-width": selectionArea.value.width + "px",
|
|
179
|
+
"--selection-height": selectionArea.value.height + "px"
|
|
180
|
+
})
|
|
181
|
+
},
|
|
182
|
+
null,
|
|
183
|
+
4
|
|
184
|
+
/* STYLE */
|
|
185
|
+
)) : createCommentVNode("v-if", true),
|
|
186
|
+
createCommentVNode(" \u786E\u8BA4\u548C\u53D6\u6D88\u6309\u94AE "),
|
|
187
|
+
createElementVNode("div", { class: "screenshot-actions" }, [
|
|
188
|
+
createElementVNode("button", {
|
|
189
|
+
onClick: withModifiers(confirmScreenshot, ["stop"])
|
|
190
|
+
}, "\u786E\u8BA4"),
|
|
191
|
+
createElementVNode("button", {
|
|
192
|
+
onClick: withModifiers(cancelScreenshot, ["stop"])
|
|
193
|
+
}, "\u53D6\u6D88")
|
|
194
|
+
])
|
|
195
|
+
],
|
|
196
|
+
32
|
|
197
|
+
/* NEED_HYDRATION */
|
|
198
|
+
)) : createCommentVNode("v-if", true)
|
|
199
|
+
],
|
|
200
|
+
64
|
|
201
|
+
/* STABLE_FRAGMENT */
|
|
202
|
+
);
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
export { _sfc_main as default };
|
|
208
|
+
//# sourceMappingURL=Screenshot.vue2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Screenshot.vue2.mjs","sources":["../../../../../../packages/components/touchchat/component/Screenshot.vue"],"sourcesContent":["<template>\n\t<button class=\"touchchat-edit-screenshot touchchat-edit-button\" @click=\"startScreenshot\">\n\t\t<div class=\"touchchat-edit-screenshot-icon\"></div>\n\t\t<div class=\"touchchat-edit-tooltip\">截图</div>\n\t</button>\n\t<!-- 截图遮罩层 -->\n\t<div v-if=\"isScreenshotting\" class=\"screenshot-mask\" @mousedown=\"handleMouseDown\" @mousemove=\"selectArea\" @mouseup=\"endSelect\">\n\t\t<!-- 截图区域 -->\n\t\t<div\n\t\t\tv-if=\"selectionArea\"\n\t\t\tclass=\"selection-area\"\n\t\t\t:style=\"{\n\t\t\t\tleft: selectionArea.x + 'px',\n\t\t\t\ttop: selectionArea.y + 'px',\n\t\t\t\tright: 0,\n\t\t\t\tbottom: 0,\n\t\t\t\twidth: selectionArea.width + 'px',\n\t\t\t\theight: selectionArea.height + 'px',\n\t\t\t\t'--selection-left': selectionArea.x + 'px',\n\t\t\t\t'--selection-top': selectionArea.y + 'px',\n\t\t\t\t'--selection-width': selectionArea.width + 'px',\n\t\t\t\t'--selection-height': selectionArea.height + 'px'\n\t\t\t}\"\n\t\t></div>\n\t\t<!-- 确认和取消按钮 -->\n\t\t<div class=\"screenshot-actions\">\n\t\t\t<button @click.stop=\"confirmScreenshot\">确认</button>\n\t\t\t<button @click.stop=\"cancelScreenshot\">取消</button>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue'\nimport html2canvas from 'html2canvas'\nimport type { FileItem } from '../src/AiChat/Chat/types'\n\n// 是否正在截图\nconst isScreenshotting = ref(false)\n// 截图区域信息\nconst selectionArea = ref<{ x: number; y: number; width: number; height: number } | null>(null)\nconst finallySelectArea = ref<{ x: number; y: number; width: number; height: number } | null>(null)\n// 鼠标按下时的起始坐标\nconst startX = ref(0)\nconst startY = ref(0)\n// 区域是否已固定\nconst isAreaFixed = ref(false)\nconst fileList = ref<FileItem[]>([])\n\nconst emits = defineEmits<{\n\t(e: 'upFileList', list: FileItem[]): void\n}>()\n\nwatch(\n\t() => isScreenshotting.value,\n\t() => {\n\t\tfinallySelectArea.value = null\n\t}\n)\n\n// 生成唯一 ID\nconst generateId = () => Date.now().toString(36) + Math.random().toString(36).substr(2)\n\n// 格式化文件大小\nconst formatFileSize = (bytes: number): string => {\n\tif (bytes === 0) return '0 Bytes'\n\tconst k = 1024\n\tconst sizes = ['Bytes', 'KB', 'MB', 'GB']\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k))\n\treturn parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]\n}\n\n// 开始截图\nconst startScreenshot = () => {\n\tisScreenshotting.value = true\n\t// 隐藏滚动条\n\tdocument.body.style.overflow = 'hidden'\n\tisAreaFixed.value = true\n\t// 获取 body 的宽高\n\tconst bodyWidth = document.body.clientWidth\n\tconst bodyHeight = document.body.clientHeight\n\t// 默认设置 selectionArea 为整个 body 区域\n\tselectionArea.value = { x: 0, y: 0, width: bodyWidth, height: bodyHeight }\n}\n\n// 处理鼠标按下事件\nconst handleMouseDown = (e: MouseEvent) => {\n\te.stopPropagation()\n\tif (isAreaFixed.value) {\n\t\t// 若区域固定,取消固定并开始选择新区域\n\t\tisAreaFixed.value = false\n\t\tstartSelect(e)\n\t\treturn\n\t}\n\tstartSelect(e)\n}\n\n// 结束选择区域\nconst endSelect = (e: MouseEvent) => {\n\te.stopPropagation()\n\tif (!isAreaFixed.value) {\n\t\t// 可添加额外逻辑\n\t\tisAreaFixed.value = true\n\t}\n}\n\n// 开始选择区域\nconst startSelect = (e: MouseEvent) => {\n\tstartX.value = e.clientX\n\tstartY.value = e.clientY\n\tselectionArea.value = { x: startX.value, y: startY.value, width: 0, height: 0 }\n}\n\n// 选择区域\nconst selectArea = (e: MouseEvent) => {\n\tif (isAreaFixed.value || !selectionArea.value) return\n\tconst endX = e.clientX\n\tconst endY = e.clientY\n\tselectionArea.value.x = Math.min(startX.value, endX)\n\tselectionArea.value.y = Math.min(startY.value, endY)\n\tselectionArea.value.width = Math.abs(endX - startX.value)\n\tselectionArea.value.height = Math.abs(endY - startY.value)\n\tfinallySelectArea.value = JSON.parse(JSON.stringify(selectionArea.value))\n}\n\n// 确认截图\nconst confirmScreenshot = async (e: MouseEvent) => {\n\te.stopPropagation()\n\ttry {\n\t\tlet canvas\n\t\tconst commonOptions = {\n\t\t\tuseCORS: true,\n\t\t\tlogging: false,\n\t\t\tscale: window.devicePixelRatio || 1, // 设置缩放比例,解决模糊问题\n\t\t\tbackgroundColor: null, // 不设置背景色,保持原有背景\n\t\t\tignoreElements: (element: any) => {\n\t\t\t\t// 忽略截图遮罩层,避免影响截图效果\n\t\t\t\treturn element.classList.contains('screenshot-mask')\n\t\t\t},\n\t\t\tuseOverflowScrolling: false, // 禁用 overflow-scrolling 以避免样式问题\n\t\t\tremoveContainer: true, // 截图完成后移除临时创建的元素\n\t\t\tallowTaint: false\n\t\t}\n\n\t\t// 获取页面滚动偏移量\n\t\tconst scrollX = window.pageXOffset || document.documentElement.scrollLeft\n\t\tconst scrollY = window.pageYOffset || document.documentElement.scrollTop\n\t\tif (finallySelectArea.value && finallySelectArea.value.width > 0 && finallySelectArea.value.height > 0) {\n\t\t\tconst { x, y, width, height } = finallySelectArea.value\n\t\t\t// 区域截图\n\t\t\tcanvas = await html2canvas(document.body, {\n\t\t\t\t...commonOptions,\n\t\t\t\twidth: width * commonOptions.scale,\n\t\t\t\theight: height * commonOptions.scale,\n\t\t\t\t// 加上滚动偏移量\n\t\t\t\tx: x + scrollX,\n\t\t\t\ty: y + scrollY\n\t\t\t})\n\t\t} else {\n\t\t\t// 全屏截图\n\t\t\tcanvas = await html2canvas(document.body, commonOptions)\n\t\t}\n\n\t\t// 将 canvas 转换为 Blob 对象\n\t\tawait new Promise<void>(resolve => {\n\t\t\tcanvas.toBlob(blob => {\n\t\t\t\tif (blob) {\n\t\t\t\t\tconst file = new File([blob], `screenshot_${generateId()}.png`, { type: 'image/png' })\n\t\t\t\t\tconst base64 = canvas.toDataURL('image/png')\n\t\t\t\t\tconst fileItem: FileItem = {\n\t\t\t\t\t\tfile,\n\t\t\t\t\t\tisUploading: false,\n\t\t\t\t\t\tuploadProgress: 0,\n\t\t\t\t\t\tuploadSuccess: false,\n\t\t\t\t\t\tuploadError: false,\n\t\t\t\t\t\tfileSize: formatFileSize(file.size),\n\t\t\t\t\t\tfileType: file.type,\n\t\t\t\t\t\tname: file.name,\n\t\t\t\t\t\tid: generateId(),\n\t\t\t\t\t\tbase64,\n\t\t\t\t\t\tlastModified: Date.now()\n\t\t\t\t\t}\n\t\t\t\t\tfileList.value = [fileItem]\n\t\t\t\t\temits('upFileList', fileList.value)\n\t\t\t\t}\n\t\t\t\tresolve()\n\t\t\t}, 'image/png')\n\t\t})\n\t} catch (error) {\n\t\tconsole.error('截图失败:', error)\n\t}\n\tcancelScreenshot()\n}\n\n// 取消截图\nconst cancelScreenshot = () => {\n\tisScreenshotting.value = false\n\tselectionArea.value = null\n\tisAreaFixed.value = false\n\t// 恢复滚动条\n\tdocument.body.style.overflow = ''\n}\n</script>\n"],"names":["_createElementVNode","_createCommentVNode","_createElementBlock","_normalizeStyle"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import _sfc_main from './ThoughtChain.vue2.mjs';
|
|
2
|
+
import _export_sfc from '../../../../_virtual/_plugin-vue_export-helper.mjs';
|
|
3
|
+
|
|
4
|
+
var ThoughtChain = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "ThoughtChain.vue"]]);
|
|
5
|
+
|
|
6
|
+
export { ThoughtChain as default };
|
|
7
|
+
//# sourceMappingURL=ThoughtChain.vue.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThoughtChain.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { defineComponent, ref, openBlock, createElementBlock, createCommentVNode, Fragment, renderList, normalizeClass, createElementVNode, toDisplayString } from 'vue';
|
|
2
|
+
|
|
3
|
+
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
4
|
+
__name: "ThoughtChain",
|
|
5
|
+
setup(__props) {
|
|
6
|
+
const stepItems = ref([
|
|
7
|
+
{ id: 1, status: "completed", content: "\u5DF2\u5B8C\u6210\u6B65\u9AA4", thinkContent: "\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57" },
|
|
8
|
+
{ id: 2, status: "completed", content: "\u5DF2\u5B8C\u6210\u6B65\u9AA4", thinkContent: "\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57" },
|
|
9
|
+
{ id: 3, status: "ongoing", content: "\u8FDB\u884C\u4E2D\u7684\u6B65\u9AA4", thinkContent: "\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57" }
|
|
10
|
+
]);
|
|
11
|
+
return (_ctx, _cache) => {
|
|
12
|
+
return openBlock(), createElementBlock("div", { class: "step-container" }, [
|
|
13
|
+
createCommentVNode(" \u5DF2\u5B8C\u6210\u6B65\u9AA4 "),
|
|
14
|
+
(openBlock(true), createElementBlock(
|
|
15
|
+
Fragment,
|
|
16
|
+
null,
|
|
17
|
+
renderList(stepItems.value, (item, index) => {
|
|
18
|
+
return openBlock(), createElementBlock(
|
|
19
|
+
"div",
|
|
20
|
+
{
|
|
21
|
+
key: item.id,
|
|
22
|
+
class: normalizeClass(["step-item", item.status === "completed" ? "completed" : "ongoing"])
|
|
23
|
+
},
|
|
24
|
+
[
|
|
25
|
+
createElementVNode("div", { class: "step-marker" }, [
|
|
26
|
+
item.status === "completed" ? (openBlock(), createElementBlock("i", {
|
|
27
|
+
key: 0,
|
|
28
|
+
class: "check-icon"
|
|
29
|
+
}, "\u2713")) : (openBlock(), createElementBlock(
|
|
30
|
+
"span",
|
|
31
|
+
{ key: 1 },
|
|
32
|
+
toDisplayString(index + 1),
|
|
33
|
+
1
|
|
34
|
+
/* TEXT */
|
|
35
|
+
))
|
|
36
|
+
]),
|
|
37
|
+
createCommentVNode(" \u6DFB\u52A0\u8FDE\u63A5\u7EBF "),
|
|
38
|
+
createElementVNode("div", { class: "step-connector" }),
|
|
39
|
+
createElementVNode("div", { class: "step-content" }, [
|
|
40
|
+
createElementVNode(
|
|
41
|
+
"h3",
|
|
42
|
+
null,
|
|
43
|
+
toDisplayString(item.content),
|
|
44
|
+
1
|
|
45
|
+
/* TEXT */
|
|
46
|
+
),
|
|
47
|
+
createElementVNode(
|
|
48
|
+
"p",
|
|
49
|
+
null,
|
|
50
|
+
toDisplayString(item.thinkContent),
|
|
51
|
+
1
|
|
52
|
+
/* TEXT */
|
|
53
|
+
)
|
|
54
|
+
])
|
|
55
|
+
],
|
|
56
|
+
2
|
|
57
|
+
/* CLASS */
|
|
58
|
+
);
|
|
59
|
+
}),
|
|
60
|
+
128
|
|
61
|
+
/* KEYED_FRAGMENT */
|
|
62
|
+
))
|
|
63
|
+
]);
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
export { _sfc_main as default };
|
|
69
|
+
//# sourceMappingURL=ThoughtChain.vue2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThoughtChain.vue2.mjs","sources":["../../../../../../packages/components/touchchat/component/ThoughtChain.vue"],"sourcesContent":["<template>\n\t<div class=\"step-container\">\n\t\t<!-- 已完成步骤 -->\n\t\t<div v-for=\"(item, index) in stepItems\" :key=\"item.id\" class=\"step-item\" :class=\"item.status === 'completed' ? 'completed' : 'ongoing'\">\n\t\t\t<div class=\"step-marker\">\n\t\t\t\t<i v-if=\"item.status === 'completed'\" class=\"check-icon\">✓</i>\n\t\t\t\t<span v-else>{{ index + 1 }}</span>\n\t\t\t</div>\n\t\t\t<!-- 添加连接线 -->\n\t\t\t<div class=\"step-connector\"></div>\n\t\t\t<div class=\"step-content\">\n\t\t\t\t<h3>{{ item.content }}</h3>\n\t\t\t\t<p>{{ item.thinkContent }}</p>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nconst stepItems = ref([\n\t{ id: 1, status: 'completed', content: '已完成步骤', thinkContent: '思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字' },\n\t{ id: 2, status: 'completed', content: '已完成步骤', thinkContent: '思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字' },\n\t{ id: 3, status: 'ongoing', content: '进行中的步骤', thinkContent: '思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字' }\n])\n</script>\n"],"names":["_createElementBlock","_createCommentVNode","_openBlock","_Fragment","_renderList","_normalizeClass","_createElementVNode","_toDisplayString"],"mappings":";;;;;AAoBA,IAAA,MAAM,YAAY,GAAI,CAAA;AAAA,MACrB,EAAE,IAAI,CAAG,EAAA,MAAA,EAAQ,aAAa,OAAS,EAAA,gCAAA,EAAS,cAAc,4yBAA0I,EAAA;AAAA,MACxM,EAAE,IAAI,CAAG,EAAA,MAAA,EAAQ,aAAa,OAAS,EAAA,gCAAA,EAAS,cAAc,4yBAA0I,EAAA;AAAA,MACxM,EAAE,IAAI,CAAG,EAAA,MAAA,EAAQ,WAAW,OAAS,EAAA,sCAAA,EAAU,cAAc,4yBAA0I,EAAA;AAAA,KACvM,CAAA,CAAA;;wBAvBA,EAAAA,kBAAA,CAcM,OAAA,EAdD,KAAA,EAAM,kBAAgB,EAAA;AAAA,QAC1BC,mBAAc,kCAAA,CAAA;AAAA,SACdC,SAAA,CAAA,IAAA,CAAA,EAAAF,kBAAA;AAAA,UAWMG,QAAA;AAAA,UAXuB,IAAA;AAAA,UAAAC,UAAA,CAAA,SAAA,CAAA,KAAhB,EAAA,CAAA,MAAM,KAAK,KAAA;8BAAxB,EAAAJ,kBAAA;AAAA,cAWM,KAAA;AAAA,cAAA;AAAA,gBAXmC,KAAK,IAAK,CAAA,EAAA;AAAA,gBAAI,KAAA,EAAMK,eAAA,CAAA,WAAA,EAAoB,KAAK,MAAM,KAAA,WAAA,GAAA,WAAA,GAAA,SAAA,CAAA,CAAA;AAAA;;gBAC3FC,kBAGM,CAAA,KAAA,EAAA,EAHD,KAAA,EAAM,eAAa,EAAA;AAAA,kBACd,KAAK,MAAM,KAAA,WAAA,iBAApBN,mBAA8D,GAAA,EAAA;AAAA;oBAAxB,KAAM,EAAA,YAAA;AAAA,mBAAa,EAAA,QAAC,CAC1D,KAAAE,SAAA,EAAA,EAAAF,kBAAA;AAAA,oBAAmC,MAAA;AAAA;oCAAnB,QAAK,CAAA,CAAA;AAAA,oBAAA,CAAA;AAAA;AAAA,mBAAA,CAAA;AAAA;gBAEtBC,mBAAc,kCAAA,CAAA;AAAA,gBACdK,kBAAkC,CAAA,KAAA,EAAA,EAA7B,KAAA,EAAM,kBAAgB,CAAA;AAAA,gBAC3BA,kBAGM,CAAA,KAAA,EAAA,EAHD,KAAA,EAAM,gBAAc,EAAA;AAAA,kBACxBA,kBAAA;AAAA,oBAA2B,IAAA;AAAA,oBAAA,IAAA;AAAA,oBAAAC,eAAA,CAApB,KAAK,OAAO,CAAA;AAAA,oBAAA,CAAA;AAAA;AAAA,mBAAA;AAAA,kBACnBD,kBAAA;AAAA,oBAA8B,GAAA;AAAA,oBAAA,IAAA;AAAA,oBAAAC,eAAA,CAAxB,KAAK,YAAY,CAAA;AAAA,oBAAA,CAAA;AAAA;AAAA,mBAAA;AAAA;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import _sfc_main from './UploadView.vue2.mjs';
|
|
2
|
+
import _export_sfc from '../../../../_virtual/_plugin-vue_export-helper.mjs';
|
|
3
|
+
|
|
4
|
+
var UploadView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "UploadView.vue"]]);
|
|
5
|
+
|
|
6
|
+
export { UploadView as default };
|
|
7
|
+
//# sourceMappingURL=UploadView.vue.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploadView.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { defineComponent, inject, ref, openBlock, createElementBlock, createCommentVNode, createElementVNode, renderSlot } from 'vue';
|
|
2
|
+
import { showToast } from '../utils/tools.mjs';
|
|
3
|
+
|
|
4
|
+
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
5
|
+
__name: "UploadView",
|
|
6
|
+
props: {
|
|
7
|
+
fileList: {}
|
|
8
|
+
},
|
|
9
|
+
emits: ["upload-file"],
|
|
10
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
11
|
+
const uploadAction = inject("uploadAction", null);
|
|
12
|
+
const props = __props;
|
|
13
|
+
const emit = __emit;
|
|
14
|
+
const fileInput = ref(null);
|
|
15
|
+
const fileInfos = ref(props.fileList || []);
|
|
16
|
+
const allowedTypes = inject("allowedTypes", []);
|
|
17
|
+
const types = ref(allowedTypes || []);
|
|
18
|
+
const triggerFileInput = () => {
|
|
19
|
+
if (fileInput.value) {
|
|
20
|
+
fileInput.value.click();
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const handleFileChange = (event) => {
|
|
24
|
+
const input = event.target;
|
|
25
|
+
if (input.files && input.files.length > 0) {
|
|
26
|
+
for (let i = 0; i < input.files.length; i++) {
|
|
27
|
+
const file = input.files[i];
|
|
28
|
+
const exists = fileInfos.value.some((f) => f.name === file.name && f.fileSize === formatFileSize(file.size));
|
|
29
|
+
if (exists) {
|
|
30
|
+
showToast(`\u6587\u4EF6"${file.name}"\u5DF2\u5B58\u5728`, "info", 3e3);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
if (!isFileTypeAllowed(file) && types.value.length > 0) {
|
|
34
|
+
showToast(`\u6587\u4EF6\u7C7B\u578B${file.type}\u4E0D\u5141\u8BB8\u4E0A\u4F20\uFF0C\u8BF7\u4E0A\u4F20${types.value.join("\u3001")}\u7C7B\u578B\u6587\u4EF6`, "info", 3e3);
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (file.type.startsWith("image/")) {
|
|
38
|
+
const reader = new FileReader();
|
|
39
|
+
reader.onload = (e) => {
|
|
40
|
+
var _a;
|
|
41
|
+
const base64 = (_a = e.target) == null ? void 0 : _a.result;
|
|
42
|
+
fileInfos.value.push({
|
|
43
|
+
file,
|
|
44
|
+
isUploading: false,
|
|
45
|
+
uploadProgress: 0,
|
|
46
|
+
uploadSuccess: false,
|
|
47
|
+
uploadError: false,
|
|
48
|
+
fileSize: formatFileSize(file.size),
|
|
49
|
+
fileType: file.type,
|
|
50
|
+
id: file.lastModified.toString(),
|
|
51
|
+
name: file.name,
|
|
52
|
+
base64,
|
|
53
|
+
// 存储 Base64 数据
|
|
54
|
+
lastModified: file.lastModified
|
|
55
|
+
});
|
|
56
|
+
uploadFile(fileInfos.value.length - 1);
|
|
57
|
+
};
|
|
58
|
+
reader.readAsDataURL(file);
|
|
59
|
+
} else {
|
|
60
|
+
fileInfos.value.push({
|
|
61
|
+
file,
|
|
62
|
+
isUploading: false,
|
|
63
|
+
uploadProgress: 0,
|
|
64
|
+
uploadSuccess: false,
|
|
65
|
+
uploadError: false,
|
|
66
|
+
fileSize: formatFileSize(file.size),
|
|
67
|
+
fileType: file.type,
|
|
68
|
+
id: file.lastModified.toString(),
|
|
69
|
+
name: file.name,
|
|
70
|
+
lastModified: file.lastModified
|
|
71
|
+
});
|
|
72
|
+
uploadFile(fileInfos.value.length - 1);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (fileInput.value) {
|
|
76
|
+
fileInput.value.value = "";
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
const isFileTypeAllowed = (file) => {
|
|
81
|
+
var _a;
|
|
82
|
+
const fileExtension = (_a = file.name.split(".").pop()) == null ? void 0 : _a.toLowerCase();
|
|
83
|
+
return types.value.includes(fileExtension || "");
|
|
84
|
+
};
|
|
85
|
+
const uploadFile = async (index, type) => {
|
|
86
|
+
var _a, _b;
|
|
87
|
+
const fileInfo = fileInfos.value[index];
|
|
88
|
+
if (!fileInfo || !fileInfo.file)
|
|
89
|
+
return;
|
|
90
|
+
fileInfo.isUploading = true;
|
|
91
|
+
fileInfo.uploadSuccess = false;
|
|
92
|
+
fileInfo.uploadError = false;
|
|
93
|
+
fileInfo.uploadProgress = 0;
|
|
94
|
+
fileInfo.fileSize = formatFileSize(fileInfo.file.size);
|
|
95
|
+
fileInfo.fileType = fileInfo.file.type;
|
|
96
|
+
fileInfo.id = fileInfo.file.lastModified.toString();
|
|
97
|
+
fileInfo.name = fileInfo.file.name;
|
|
98
|
+
if (type)
|
|
99
|
+
return;
|
|
100
|
+
if (uploadAction) {
|
|
101
|
+
let progressCalled = false;
|
|
102
|
+
const progressTimer = setInterval(() => {
|
|
103
|
+
if (progressCalled)
|
|
104
|
+
return;
|
|
105
|
+
if (fileInfo.uploadProgress !== void 0 && fileInfo.uploadProgress < 90) {
|
|
106
|
+
fileInfo.uploadProgress += 10;
|
|
107
|
+
emit("upload-file", fileInfos.value);
|
|
108
|
+
}
|
|
109
|
+
}, 100);
|
|
110
|
+
try {
|
|
111
|
+
const res = await uploadAction(fileInfo.file, (percent) => {
|
|
112
|
+
progressCalled = true;
|
|
113
|
+
fileInfo.uploadProgress = percent;
|
|
114
|
+
emit("upload-file", fileInfos.value);
|
|
115
|
+
});
|
|
116
|
+
clearInterval(progressTimer);
|
|
117
|
+
fileInfo.uploadSuccess = true;
|
|
118
|
+
fileInfo.uploadProgress = 100;
|
|
119
|
+
fileInfo.url = (res == null ? void 0 : res.url) || ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.url);
|
|
120
|
+
fileInfo.fileId = (res == null ? void 0 : res.id) || ((_b = res == null ? void 0 : res.data) == null ? void 0 : _b.id);
|
|
121
|
+
} catch (e) {
|
|
122
|
+
clearInterval(progressTimer);
|
|
123
|
+
fileInfo.uploadError = true;
|
|
124
|
+
}
|
|
125
|
+
fileInfo.isUploading = false;
|
|
126
|
+
emit("upload-file", fileInfos.value);
|
|
127
|
+
} else {
|
|
128
|
+
const interval = setInterval(() => {
|
|
129
|
+
if (fileInfo.uploadProgress !== void 0) {
|
|
130
|
+
fileInfo.uploadProgress += 10;
|
|
131
|
+
}
|
|
132
|
+
emit("upload-file", fileInfos.value);
|
|
133
|
+
if (fileInfo.uploadProgress !== void 0 && fileInfo.uploadProgress >= 100) {
|
|
134
|
+
clearInterval(interval);
|
|
135
|
+
fileInfo.isUploading = false;
|
|
136
|
+
fileInfo.uploadSuccess = true;
|
|
137
|
+
}
|
|
138
|
+
}, 100);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
const formatFileSize = (bytes) => {
|
|
142
|
+
if (bytes === 0)
|
|
143
|
+
return "0 Bytes";
|
|
144
|
+
const k = 1024;
|
|
145
|
+
const sizes = ["Bytes", "KB", "MB", "GB"];
|
|
146
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
147
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
|
|
148
|
+
};
|
|
149
|
+
const resetFile = () => {
|
|
150
|
+
fileInfos.value = [];
|
|
151
|
+
if (fileInput.value) {
|
|
152
|
+
fileInput.value.value = "";
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
__expose({
|
|
156
|
+
resetFile,
|
|
157
|
+
uploadFile
|
|
158
|
+
});
|
|
159
|
+
return (_ctx, _cache) => {
|
|
160
|
+
return openBlock(), createElementBlock("div", { class: "upload-view" }, [
|
|
161
|
+
createCommentVNode(' <button class="upload-button" @click="triggerFileInput">\u70B9\u51FB\u9009\u62E9\u6587\u4EF6</button> '),
|
|
162
|
+
createElementVNode("div", { onClick: triggerFileInput }, [
|
|
163
|
+
renderSlot(_ctx.$slots, "default")
|
|
164
|
+
]),
|
|
165
|
+
createElementVNode(
|
|
166
|
+
"input",
|
|
167
|
+
{
|
|
168
|
+
ref_key: "fileInput",
|
|
169
|
+
ref: fileInput,
|
|
170
|
+
type: "file",
|
|
171
|
+
class: "file-input",
|
|
172
|
+
style: { "display": "none" },
|
|
173
|
+
multiple: "",
|
|
174
|
+
onChange: handleFileChange
|
|
175
|
+
},
|
|
176
|
+
null,
|
|
177
|
+
544
|
|
178
|
+
/* NEED_HYDRATION, NEED_PATCH */
|
|
179
|
+
)
|
|
180
|
+
]);
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
export { _sfc_main as default };
|
|
186
|
+
//# sourceMappingURL=UploadView.vue2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploadView.vue2.mjs","sources":["../../../../../../packages/components/touchchat/component/UploadView.vue"],"sourcesContent":["<template>\r\n\t<div class=\"upload-view\">\r\n\t\t<!-- <button class=\"upload-button\" @click=\"triggerFileInput\">点击选择文件</button> -->\r\n\t\t<div @click=\"triggerFileInput\">\r\n\t\t\t<slot></slot>\r\n\t\t</div>\r\n\t\t<input ref=\"fileInput\" type=\"file\" class=\"file-input\" style=\"display: none\" multiple @change=\"handleFileChange\" />\r\n\t</div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, inject } from 'vue'\r\nimport { showToast } from '../utils/tools'\r\nimport type { FileItem } from '../src/AiChat/Chat/types'\r\n\r\ntype UploadActionFn = (file: File, onProgress: (percent: number) => void) => Promise<any>\r\n\r\nconst uploadAction = inject<UploadActionFn | null>('uploadAction', null)\r\n\r\nconst props = defineProps<{\r\n\tfileList: FileItem[]\r\n}>()\r\n\r\nconst emit = defineEmits<{\r\n\t(e: 'upload-file', value: FileItem[]): void\r\n}>()\r\n\r\nconst fileInput = ref<HTMLInputElement | null>(null)\r\nconst fileInfos = ref<FileItem[]>(props.fileList || [])\r\nconst allowedTypes = inject<string[]>('allowedTypes', [])\r\n// ['doc', 'docx','word','png']\r\nconst types = ref<string[]>(allowedTypes || [])\r\n\r\n// 触发文件选择框\r\nconst triggerFileInput = () => {\r\n\tif (fileInput.value) {\r\n\t\tfileInput.value.click()\r\n\t}\r\n}\r\n\r\n// 处理文件选择\r\nconst handleFileChange = (event: Event) => {\r\n\tconst input = event.target as HTMLInputElement\r\n\tif (input.files && input.files.length > 0) {\r\n\t\tfor (let i = 0; i < input.files.length; i++) {\r\n\t\t\tconst file = input.files[i]\r\n\t\t\t// 检查是否已存在相同文件(同名同大小)\r\n\t\t\tconst exists = fileInfos.value.some(f => f.name === file.name && f.fileSize === formatFileSize(file.size))\r\n\t\t\tif (exists) {\r\n\t\t\t\tshowToast(`文件\"${file.name}\"已存在`, 'info', 3000)\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\t// 检查文件类型是否允许\r\n\t\t\tif (!isFileTypeAllowed(file) && types.value.length > 0) {\r\n\t\t\t\tshowToast(`文件类型${file.type}不允许上传,请上传${types.value.join('、')}类型文件`, 'info', 3000)\r\n\t\t\t\tcontinue // 跳过不允许的文件类型\r\n\t\t\t}\r\n\t\t\tif (file.type.startsWith('image/')) {\r\n\t\t\t\tconst reader = new FileReader()\r\n\t\t\t\treader.onload = e => {\r\n\t\t\t\t\tconst base64 = e.target?.result as string\r\n\t\t\t\t\tfileInfos.value.push({\r\n\t\t\t\t\t\tfile,\r\n\t\t\t\t\t\tisUploading: false,\r\n\t\t\t\t\t\tuploadProgress: 0,\r\n\t\t\t\t\t\tuploadSuccess: false,\r\n\t\t\t\t\t\tuploadError: false,\r\n\t\t\t\t\t\tfileSize: formatFileSize(file.size),\r\n\t\t\t\t\t\tfileType: file.type,\r\n\t\t\t\t\t\tid: file.lastModified.toString(),\r\n\t\t\t\t\t\tname: file.name,\r\n\t\t\t\t\t\tbase64, // 存储 Base64 数据\r\n\t\t\t\t\t\tlastModified: file.lastModified\r\n\t\t\t\t\t})\r\n\t\t\t\t\tuploadFile(fileInfos.value.length - 1)\r\n\t\t\t\t}\r\n\t\t\t\treader.readAsDataURL(file)\r\n\t\t\t} else {\r\n\t\t\t\tfileInfos.value.push({\r\n\t\t\t\t\tfile,\r\n\t\t\t\t\tisUploading: false,\r\n\t\t\t\t\tuploadProgress: 0,\r\n\t\t\t\t\tuploadSuccess: false,\r\n\t\t\t\t\tuploadError: false,\r\n\t\t\t\t\tfileSize: formatFileSize(file.size),\r\n\t\t\t\t\tfileType: file.type,\r\n\t\t\t\t\tid: file.lastModified.toString(),\r\n\t\t\t\t\tname: file.name,\r\n\t\t\t\t\tlastModified: file.lastModified\r\n\t\t\t\t})\r\n\t\t\t\tuploadFile(fileInfos.value.length - 1)\r\n\t\t\t}\r\n\t\t}\r\n\t\t// 清空 input value,允许重复选择同一文件\r\n\t\tif (fileInput.value) {\r\n\t\t\tfileInput.value.value = ''\r\n\t\t}\r\n\t}\r\n}\r\n// 检查文件类型是否允许\r\nconst isFileTypeAllowed = (file: File): boolean => {\r\n\tconst fileExtension = file.name.split('.').pop()?.toLowerCase()\r\n\treturn types.value.includes(fileExtension || '')\r\n}\r\n// 文件上传\r\nconst uploadFile = async (index: number, type?: string) => {\r\n\tconst fileInfo = fileInfos.value[index]\r\n\tif (!fileInfo || !fileInfo.file) return\r\n\r\n\tfileInfo.isUploading = true\r\n\tfileInfo.uploadSuccess = false\r\n\tfileInfo.uploadError = false\r\n\tfileInfo.uploadProgress = 0\r\n\tfileInfo.fileSize = formatFileSize(fileInfo.file.size)\r\n\tfileInfo.fileType = fileInfo.file.type\r\n\tfileInfo.id = fileInfo.file.lastModified.toString()\r\n\tfileInfo.name = fileInfo.file.name\r\n\r\n\tif (type) return\r\n\r\n\tif (uploadAction) {\r\n\t\t// 真实上传\r\n\t\tlet progressCalled = false\r\n\t\t// 保底进度:如果 onProgress 未被调用(如用 fetch),按时间递进补进度\r\n\t\tconst progressTimer = setInterval(() => {\r\n\t\t\tif (progressCalled) return\r\n\t\t\tif (fileInfo.uploadProgress !== undefined && fileInfo.uploadProgress < 90) {\r\n\t\t\t\tfileInfo.uploadProgress += 10\r\n\t\t\t\temit('upload-file', fileInfos.value)\r\n\t\t\t}\r\n\t\t}, 100)\r\n\t\ttry {\r\n\t\t\tconst res = await uploadAction(fileInfo.file, percent => {\r\n\t\t\t\tprogressCalled = true\r\n\t\t\t\tfileInfo.uploadProgress = percent\r\n\t\t\t\temit('upload-file', fileInfos.value)\r\n\t\t\t})\r\n\t\t\tclearInterval(progressTimer)\r\n\t\t\tfileInfo.uploadSuccess = true\r\n\t\t\tfileInfo.uploadProgress = 100\r\n\t\t\tfileInfo.url = res?.url || res?.data?.url\r\n\t\t\tfileInfo.fileId = res?.id || res?.data?.id\r\n\t\t} catch {\r\n\t\t\tclearInterval(progressTimer)\r\n\t\t\tfileInfo.uploadError = true\r\n\t\t}\r\n\t\tfileInfo.isUploading = false\r\n\t\temit('upload-file', fileInfos.value)\r\n\t} else {\r\n\t\t// 无 uploadAction 时保持模拟上传(向后兼容)\r\n\t\tconst interval = setInterval(() => {\r\n\t\t\tif (fileInfo.uploadProgress !== undefined) {\r\n\t\t\t\tfileInfo.uploadProgress += 10\r\n\t\t\t}\r\n\t\t\temit('upload-file', fileInfos.value)\r\n\t\t\tif (fileInfo.uploadProgress !== undefined && fileInfo.uploadProgress >= 100) {\r\n\t\t\t\tclearInterval(interval)\r\n\t\t\t\tfileInfo.isUploading = false\r\n\t\t\t\tfileInfo.uploadSuccess = true\r\n\t\t\t}\r\n\t\t}, 100)\r\n\t}\r\n}\r\n\r\n// 格式化文件大小\r\nconst formatFileSize = (bytes: number) => {\r\n\tif (bytes === 0) return '0 Bytes'\r\n\tconst k = 1024\r\n\tconst sizes = ['Bytes', 'KB', 'MB', 'GB']\r\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k))\r\n\treturn parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]\r\n}\r\n\r\nconst resetFile = () => {\r\n\tfileInfos.value = []\r\n\tif (fileInput.value) {\r\n\t\tfileInput.value.value = ''\r\n\t}\r\n}\r\ndefineExpose({\r\n\tresetFile,\r\n\tuploadFile\r\n})\r\n</script>\r\n"],"names":["_createElementBlock","_createCommentVNode","_createElementVNode","_renderSlot"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import _sfc_main from './UploadView_api.vue2.mjs';
|
|
2
|
+
import _export_sfc from '../../../../_virtual/_plugin-vue_export-helper.mjs';
|
|
3
|
+
|
|
4
|
+
var UploadView_api = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "UploadView_api.vue"]]);
|
|
5
|
+
|
|
6
|
+
export { UploadView_api as default };
|
|
7
|
+
//# sourceMappingURL=UploadView_api.vue.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploadView_api.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|