@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.
Files changed (443) hide show
  1. package/README.md +25 -25
  2. package/es/_virtual/_plugin-vue_export-helper.mjs +10 -0
  3. package/es/_virtual/_plugin-vue_export-helper.mjs.map +1 -0
  4. package/es/index.mjs.map +1 -1
  5. package/es/node_modules/.pnpm/@touchvue_a2ui@1.0.0-beta.46/node_modules/@touchvue/a2ui/dist/index.mjs +4816 -0
  6. package/es/node_modules/.pnpm/@touchvue_a2ui@1.0.0-beta.46/node_modules/@touchvue/a2ui/dist/index.mjs.map +1 -0
  7. package/es/node_modules/.pnpm/dompurify@3.3.0/node_modules/dompurify/dist/purify.es.mjs +1380 -0
  8. package/es/node_modules/.pnpm/dompurify@3.3.0/node_modules/dompurify/dist/purify.es.mjs.map +1 -0
  9. package/es/node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/html2canvas.esm.mjs +7824 -0
  10. package/es/node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/html2canvas.esm.mjs.map +1 -0
  11. package/es/package.json.css +1 -1
  12. package/es/package.json.mjs +2 -2
  13. package/es/packages/components/index.mjs +1 -1
  14. package/es/packages/components/resolver.mjs.map +1 -1
  15. package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue.mjs +3 -2
  16. package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue.mjs.map +1 -1
  17. package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue2.mjs +219 -159
  18. package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue2.mjs.map +1 -1
  19. package/es/packages/components/touchchat/component/AiRobot/face.vue.mjs +3 -2
  20. package/es/packages/components/touchchat/component/AiRobot/face.vue.mjs.map +1 -1
  21. package/es/packages/components/touchchat/component/AiRobot/face.vue2.mjs +27 -13
  22. package/es/packages/components/touchchat/component/AiRobot/face.vue2.mjs.map +1 -1
  23. package/es/packages/components/touchchat/component/AiRobot/letter.vue.mjs +3 -2
  24. package/es/packages/components/touchchat/component/AiRobot/letter.vue.mjs.map +1 -1
  25. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs +182 -41
  26. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -1
  27. package/es/packages/components/touchchat/component/AiRobot/meterialPrepare.vue.mjs +3 -2
  28. package/es/packages/components/touchchat/component/AiRobot/meterialPrepare.vue.mjs.map +1 -1
  29. package/es/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.mjs +15 -10
  30. package/es/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.mjs.map +1 -1
  31. package/es/packages/components/touchchat/component/AiRobot/start.vue.mjs +3 -2
  32. package/es/packages/components/touchchat/component/AiRobot/start.vue.mjs.map +1 -1
  33. package/es/packages/components/touchchat/component/AiRobot/start.vue2.mjs +18 -11
  34. package/es/packages/components/touchchat/component/AiRobot/start.vue2.mjs.map +1 -1
  35. package/es/packages/components/touchchat/component/CardView.vue.mjs +3 -2
  36. package/es/packages/components/touchchat/component/CardView.vue.mjs.map +1 -1
  37. package/es/packages/components/touchchat/component/CardView.vue2.mjs +66 -42
  38. package/es/packages/components/touchchat/component/CardView.vue2.mjs.map +1 -1
  39. package/es/packages/components/touchchat/component/FileContent.vue.mjs +7 -0
  40. package/es/packages/components/touchchat/component/FileContent.vue.mjs.map +1 -0
  41. package/es/packages/components/touchchat/component/FileContent.vue2.mjs +206 -0
  42. package/es/packages/components/touchchat/component/FileContent.vue2.mjs.map +1 -0
  43. package/es/packages/components/touchchat/component/FileView.vue.mjs +3 -2
  44. package/es/packages/components/touchchat/component/FileView.vue.mjs.map +1 -1
  45. package/es/packages/components/touchchat/component/FileView.vue2.mjs +17 -4
  46. package/es/packages/components/touchchat/component/FileView.vue2.mjs.map +1 -1
  47. package/es/packages/components/touchchat/component/HelloChat.vue.mjs +3 -2
  48. package/es/packages/components/touchchat/component/HelloChat.vue.mjs.map +1 -1
  49. package/es/packages/components/touchchat/component/HelloChat.vue2.mjs +26 -14
  50. package/es/packages/components/touchchat/component/HelloChat.vue2.mjs.map +1 -1
  51. package/es/packages/components/touchchat/component/ImageFile.vue.mjs +7 -0
  52. package/es/packages/components/touchchat/component/ImageFile.vue.mjs.map +1 -0
  53. package/es/packages/components/touchchat/component/ImageFile.vue2.mjs +162 -0
  54. package/es/packages/components/touchchat/component/ImageFile.vue2.mjs.map +1 -0
  55. package/es/packages/components/touchchat/component/ImageView.vue.mjs +3 -2
  56. package/es/packages/components/touchchat/component/ImageView.vue.mjs.map +1 -1
  57. package/es/packages/components/touchchat/component/ImageView.vue2.mjs +1 -1
  58. package/es/packages/components/touchchat/component/ImageView.vue2.mjs.map +1 -1
  59. package/es/packages/components/touchchat/component/LinkView.vue.mjs +3 -2
  60. package/es/packages/components/touchchat/component/LinkView.vue.mjs.map +1 -1
  61. package/es/packages/components/touchchat/component/LinkView.vue2.mjs +19 -5
  62. package/es/packages/components/touchchat/component/LinkView.vue2.mjs.map +1 -1
  63. package/es/packages/components/touchchat/component/MarkLayer.vue.mjs +7 -0
  64. package/es/packages/components/touchchat/component/MarkLayer.vue.mjs.map +1 -0
  65. package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs +56 -0
  66. package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs.map +1 -0
  67. package/es/packages/components/touchchat/component/ModuleSelect.vue.mjs +7 -0
  68. package/es/packages/components/touchchat/component/ModuleSelect.vue.mjs.map +1 -0
  69. package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs +121 -0
  70. package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs.map +1 -0
  71. package/es/packages/components/touchchat/component/PDFFile.vue.mjs +7 -0
  72. package/es/packages/components/touchchat/component/PDFFile.vue.mjs.map +1 -0
  73. package/es/packages/components/touchchat/component/PDFFile.vue2.mjs +211 -0
  74. package/es/packages/components/touchchat/component/PDFFile.vue2.mjs.map +1 -0
  75. package/es/packages/components/touchchat/component/QuoteContent.vue.mjs +7 -0
  76. package/es/packages/components/touchchat/component/QuoteContent.vue.mjs.map +1 -0
  77. package/es/packages/components/touchchat/component/QuoteContent.vue2.mjs +40 -0
  78. package/es/packages/components/touchchat/component/QuoteContent.vue2.mjs.map +1 -0
  79. package/es/packages/components/touchchat/component/RealtimeVoice.vue.mjs +7 -0
  80. package/es/packages/components/touchchat/component/RealtimeVoice.vue.mjs.map +1 -0
  81. package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs +160 -0
  82. package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs.map +1 -0
  83. package/es/packages/components/touchchat/component/Screenshot.vue.mjs +7 -0
  84. package/es/packages/components/touchchat/component/Screenshot.vue.mjs.map +1 -0
  85. package/es/packages/components/touchchat/component/Screenshot.vue2.mjs +208 -0
  86. package/es/packages/components/touchchat/component/Screenshot.vue2.mjs.map +1 -0
  87. package/es/packages/components/touchchat/component/ThoughtChain.vue.mjs +7 -0
  88. package/es/packages/components/touchchat/component/ThoughtChain.vue.mjs.map +1 -0
  89. package/es/packages/components/touchchat/component/ThoughtChain.vue2.mjs +69 -0
  90. package/es/packages/components/touchchat/component/ThoughtChain.vue2.mjs.map +1 -0
  91. package/es/packages/components/touchchat/component/UploadView.vue.mjs +7 -0
  92. package/es/packages/components/touchchat/component/UploadView.vue.mjs.map +1 -0
  93. package/es/packages/components/touchchat/component/UploadView.vue2.mjs +186 -0
  94. package/es/packages/components/touchchat/component/UploadView.vue2.mjs.map +1 -0
  95. package/es/packages/components/touchchat/component/UploadView_api.vue.mjs +7 -0
  96. package/es/packages/components/touchchat/component/UploadView_api.vue.mjs.map +1 -0
  97. package/es/packages/components/touchchat/component/UploadView_api.vue2.mjs +166 -0
  98. package/es/packages/components/touchchat/component/UploadView_api.vue2.mjs.map +1 -0
  99. package/es/packages/components/touchchat/component/VideoFile.vue.mjs +7 -0
  100. package/es/packages/components/touchchat/component/VideoFile.vue.mjs.map +1 -0
  101. package/es/packages/components/touchchat/component/VideoFile.vue2.mjs +33 -0
  102. package/es/packages/components/touchchat/component/VideoFile.vue2.mjs.map +1 -0
  103. package/es/packages/components/touchchat/component/VoiceView.vue.mjs +7 -0
  104. package/es/packages/components/touchchat/component/VoiceView.vue.mjs.map +1 -0
  105. package/es/packages/components/touchchat/component/VoiceView.vue2.mjs +165 -0
  106. package/es/packages/components/touchchat/component/VoiceView.vue2.mjs.map +1 -0
  107. package/es/packages/components/touchchat/img/file/doc.png.mjs +4 -0
  108. package/es/packages/components/touchchat/img/file/doc.png.mjs.map +1 -0
  109. package/es/packages/components/touchchat/img/file/docx.png.mjs +4 -0
  110. package/es/packages/components/touchchat/img/file/docx.png.mjs.map +1 -0
  111. package/es/packages/components/touchchat/img/file/gif.png.mjs +4 -0
  112. package/es/packages/components/touchchat/img/file/gif.png.mjs.map +1 -0
  113. package/es/packages/components/touchchat/img/file/html.png.mjs +4 -0
  114. package/es/packages/components/touchchat/img/file/html.png.mjs.map +1 -0
  115. package/es/packages/components/touchchat/img/file/jpg.png.mjs +4 -0
  116. package/es/packages/components/touchchat/img/file/jpg.png.mjs.map +1 -0
  117. package/es/packages/components/touchchat/img/file/mp3.png.mjs +4 -0
  118. package/es/packages/components/touchchat/img/file/mp3.png.mjs.map +1 -0
  119. package/es/packages/components/touchchat/img/file/mp4.png.mjs +4 -0
  120. package/es/packages/components/touchchat/img/file/mp4.png.mjs.map +1 -0
  121. package/es/packages/components/touchchat/img/file/music.png.mjs +4 -0
  122. package/es/packages/components/touchchat/img/file/music.png.mjs.map +1 -0
  123. package/es/packages/components/touchchat/img/file/pdf.png.mjs +4 -0
  124. package/es/packages/components/touchchat/img/file/pdf.png.mjs.map +1 -0
  125. package/es/packages/components/touchchat/img/file/png.png.mjs +4 -0
  126. package/es/packages/components/touchchat/img/file/png.png.mjs.map +1 -0
  127. package/es/packages/components/touchchat/img/file/ppt.png.mjs +4 -0
  128. package/es/packages/components/touchchat/img/file/ppt.png.mjs.map +1 -0
  129. package/es/packages/components/touchchat/img/file/pptx.png.mjs +4 -0
  130. package/es/packages/components/touchchat/img/file/pptx.png.mjs.map +1 -0
  131. package/es/packages/components/touchchat/img/file/txt.png.mjs +4 -0
  132. package/es/packages/components/touchchat/img/file/txt.png.mjs.map +1 -0
  133. package/es/packages/components/touchchat/img/file/xls.png.mjs +4 -0
  134. package/es/packages/components/touchchat/img/file/xls.png.mjs.map +1 -0
  135. package/es/packages/components/touchchat/img/file/xlsx.png.mjs +4 -0
  136. package/es/packages/components/touchchat/img/file/xlsx.png.mjs.map +1 -0
  137. package/es/packages/components/touchchat/img/svg/reset.svg.mjs +4 -0
  138. package/es/packages/components/touchchat/img/svg/reset.svg.mjs.map +1 -0
  139. package/es/packages/components/touchchat/index.mjs +5 -5
  140. package/es/packages/components/touchchat/index.mjs.map +1 -1
  141. package/es/packages/components/touchchat/src/AiChat/AgentsView.vue.mjs +7 -0
  142. package/es/packages/components/touchchat/src/AiChat/AgentsView.vue.mjs.map +1 -0
  143. package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs +59 -0
  144. package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs.map +1 -0
  145. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue.mjs +3 -2
  146. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue.mjs.map +1 -1
  147. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +322 -139
  148. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
  149. package/es/packages/components/touchchat/src/AiChat/Chat/TouchChat.mjs +18 -0
  150. package/es/packages/components/touchchat/src/AiChat/Chat/TouchChat.mjs.map +1 -0
  151. package/es/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.mjs +145 -0
  152. package/es/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.mjs.map +1 -0
  153. package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs +19 -0
  154. package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs.map +1 -0
  155. package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs +693 -0
  156. package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs.map +1 -0
  157. package/es/packages/components/touchchat/src/AiChat/Chat/useCopy.mjs +55 -0
  158. package/es/packages/components/touchchat/src/AiChat/Chat/useCopy.mjs.map +1 -0
  159. package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs +155 -0
  160. package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs.map +1 -0
  161. package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs +345 -0
  162. package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs.map +1 -0
  163. package/es/packages/components/touchchat/src/AiChat/Chat/useScroll.mjs +74 -0
  164. package/es/packages/components/touchchat/src/AiChat/Chat/useScroll.mjs.map +1 -0
  165. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue.mjs +3 -2
  166. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue.mjs.map +1 -1
  167. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +472 -44
  168. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
  169. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue.mjs +3 -2
  170. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue.mjs.map +1 -1
  171. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs +180 -98
  172. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
  173. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue.mjs +3 -2
  174. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue.mjs.map +1 -1
  175. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs +29 -12
  176. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
  177. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue.mjs +3 -2
  178. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue.mjs.map +1 -1
  179. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs +175 -62
  180. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs.map +1 -1
  181. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue.mjs +3 -2
  182. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue.mjs.map +1 -1
  183. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs +14 -8
  184. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs.map +1 -1
  185. package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue.mjs +7 -0
  186. package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue.mjs.map +1 -0
  187. package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs +1034 -0
  188. package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs.map +1 -0
  189. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue.mjs +3 -2
  190. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue.mjs.map +1 -1
  191. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +276 -1004
  192. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
  193. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue.mjs +3 -2
  194. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue.mjs.map +1 -1
  195. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs +346 -122
  196. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
  197. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue.mjs +3 -2
  198. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue.mjs.map +1 -1
  199. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +143 -64
  200. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
  201. package/es/packages/components/touchchat/src/index.vue.mjs +3 -2
  202. package/es/packages/components/touchchat/src/index.vue.mjs.map +1 -1
  203. package/es/packages/components/touchchat/src/index.vue2.mjs +252 -143
  204. package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
  205. package/es/packages/components/touchchat/src/types/a2a.mjs +11 -0
  206. package/es/packages/components/touchchat/src/types/a2a.mjs.map +1 -0
  207. package/es/packages/components/touchchat/utils/a2aService.mjs +316 -0
  208. package/es/packages/components/touchchat/utils/a2aService.mjs.map +1 -0
  209. package/es/packages/components/touchchat/utils/fetchStream.mjs +8 -2
  210. package/es/packages/components/touchchat/utils/fetchStream.mjs.map +1 -1
  211. package/es/packages/components/touchchat/utils/markdown.mjs +31 -13
  212. package/es/packages/components/touchchat/utils/markdown.mjs.map +1 -1
  213. package/es/packages/utils/config.mjs.map +1 -1
  214. package/es/packages/utils/types.mjs.map +1 -1
  215. package/global.d.ts +2 -2
  216. package/lib/_virtual/_plugin-vue_export-helper.js +14 -0
  217. package/lib/_virtual/_plugin-vue_export-helper.js.map +1 -0
  218. package/lib/index.js.map +1 -1
  219. package/lib/node_modules/.pnpm/@touchvue_a2ui@1.0.0-beta.46/node_modules/@touchvue/a2ui/dist/index.js +4819 -0
  220. package/lib/node_modules/.pnpm/@touchvue_a2ui@1.0.0-beta.46/node_modules/@touchvue/a2ui/dist/index.js.map +1 -0
  221. package/lib/node_modules/.pnpm/dompurify@3.3.0/node_modules/dompurify/dist/purify.es.js +1384 -0
  222. package/lib/node_modules/.pnpm/dompurify@3.3.0/node_modules/dompurify/dist/purify.es.js.map +1 -0
  223. package/lib/node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/html2canvas.esm.js +7828 -0
  224. package/lib/node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/html2canvas.esm.js.map +1 -0
  225. package/lib/package.json.css +1 -1
  226. package/lib/package.json.js +2 -2
  227. package/lib/packages/components/index.js +2 -2
  228. package/lib/packages/components/resolver.js.map +1 -1
  229. package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue.js +3 -2
  230. package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue.js.map +1 -1
  231. package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue2.js +219 -159
  232. package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue2.js.map +1 -1
  233. package/lib/packages/components/touchchat/component/AiRobot/face.vue.js +3 -2
  234. package/lib/packages/components/touchchat/component/AiRobot/face.vue.js.map +1 -1
  235. package/lib/packages/components/touchchat/component/AiRobot/face.vue2.js +26 -12
  236. package/lib/packages/components/touchchat/component/AiRobot/face.vue2.js.map +1 -1
  237. package/lib/packages/components/touchchat/component/AiRobot/letter.vue.js +3 -2
  238. package/lib/packages/components/touchchat/component/AiRobot/letter.vue.js.map +1 -1
  239. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js +181 -40
  240. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -1
  241. package/lib/packages/components/touchchat/component/AiRobot/meterialPrepare.vue.js +3 -2
  242. package/lib/packages/components/touchchat/component/AiRobot/meterialPrepare.vue.js.map +1 -1
  243. package/lib/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.js +15 -10
  244. package/lib/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.js.map +1 -1
  245. package/lib/packages/components/touchchat/component/AiRobot/start.vue.js +3 -2
  246. package/lib/packages/components/touchchat/component/AiRobot/start.vue.js.map +1 -1
  247. package/lib/packages/components/touchchat/component/AiRobot/start.vue2.js +17 -10
  248. package/lib/packages/components/touchchat/component/AiRobot/start.vue2.js.map +1 -1
  249. package/lib/packages/components/touchchat/component/CardView.vue.js +3 -2
  250. package/lib/packages/components/touchchat/component/CardView.vue.js.map +1 -1
  251. package/lib/packages/components/touchchat/component/CardView.vue2.js +66 -42
  252. package/lib/packages/components/touchchat/component/CardView.vue2.js.map +1 -1
  253. package/lib/packages/components/touchchat/component/FileContent.vue.js +11 -0
  254. package/lib/packages/components/touchchat/component/FileContent.vue.js.map +1 -0
  255. package/lib/packages/components/touchchat/component/FileContent.vue2.js +210 -0
  256. package/lib/packages/components/touchchat/component/FileContent.vue2.js.map +1 -0
  257. package/lib/packages/components/touchchat/component/FileView.vue.js +3 -2
  258. package/lib/packages/components/touchchat/component/FileView.vue.js.map +1 -1
  259. package/lib/packages/components/touchchat/component/FileView.vue2.js +16 -3
  260. package/lib/packages/components/touchchat/component/FileView.vue2.js.map +1 -1
  261. package/lib/packages/components/touchchat/component/HelloChat.vue.js +3 -2
  262. package/lib/packages/components/touchchat/component/HelloChat.vue.js.map +1 -1
  263. package/lib/packages/components/touchchat/component/HelloChat.vue2.js +26 -14
  264. package/lib/packages/components/touchchat/component/HelloChat.vue2.js.map +1 -1
  265. package/lib/packages/components/touchchat/component/ImageFile.vue.js +11 -0
  266. package/lib/packages/components/touchchat/component/ImageFile.vue.js.map +1 -0
  267. package/lib/packages/components/touchchat/component/ImageFile.vue2.js +166 -0
  268. package/lib/packages/components/touchchat/component/ImageFile.vue2.js.map +1 -0
  269. package/lib/packages/components/touchchat/component/ImageView.vue.js +3 -2
  270. package/lib/packages/components/touchchat/component/ImageView.vue.js.map +1 -1
  271. package/lib/packages/components/touchchat/component/ImageView.vue2.js +1 -1
  272. package/lib/packages/components/touchchat/component/ImageView.vue2.js.map +1 -1
  273. package/lib/packages/components/touchchat/component/LinkView.vue.js +3 -2
  274. package/lib/packages/components/touchchat/component/LinkView.vue.js.map +1 -1
  275. package/lib/packages/components/touchchat/component/LinkView.vue2.js +18 -4
  276. package/lib/packages/components/touchchat/component/LinkView.vue2.js.map +1 -1
  277. package/lib/packages/components/touchchat/component/MarkLayer.vue.js +11 -0
  278. package/lib/packages/components/touchchat/component/MarkLayer.vue.js.map +1 -0
  279. package/lib/packages/components/touchchat/component/MarkLayer.vue2.js +60 -0
  280. package/lib/packages/components/touchchat/component/MarkLayer.vue2.js.map +1 -0
  281. package/lib/packages/components/touchchat/component/ModuleSelect.vue.js +11 -0
  282. package/lib/packages/components/touchchat/component/ModuleSelect.vue.js.map +1 -0
  283. package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js +125 -0
  284. package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js.map +1 -0
  285. package/lib/packages/components/touchchat/component/PDFFile.vue.js +11 -0
  286. package/lib/packages/components/touchchat/component/PDFFile.vue.js.map +1 -0
  287. package/lib/packages/components/touchchat/component/PDFFile.vue2.js +215 -0
  288. package/lib/packages/components/touchchat/component/PDFFile.vue2.js.map +1 -0
  289. package/lib/packages/components/touchchat/component/QuoteContent.vue.js +11 -0
  290. package/lib/packages/components/touchchat/component/QuoteContent.vue.js.map +1 -0
  291. package/lib/packages/components/touchchat/component/QuoteContent.vue2.js +44 -0
  292. package/lib/packages/components/touchchat/component/QuoteContent.vue2.js.map +1 -0
  293. package/lib/packages/components/touchchat/component/RealtimeVoice.vue.js +11 -0
  294. package/lib/packages/components/touchchat/component/RealtimeVoice.vue.js.map +1 -0
  295. package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js +164 -0
  296. package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js.map +1 -0
  297. package/lib/packages/components/touchchat/component/Screenshot.vue.js +11 -0
  298. package/lib/packages/components/touchchat/component/Screenshot.vue.js.map +1 -0
  299. package/lib/packages/components/touchchat/component/Screenshot.vue2.js +212 -0
  300. package/lib/packages/components/touchchat/component/Screenshot.vue2.js.map +1 -0
  301. package/lib/packages/components/touchchat/component/ThoughtChain.vue.js +11 -0
  302. package/lib/packages/components/touchchat/component/ThoughtChain.vue.js.map +1 -0
  303. package/lib/packages/components/touchchat/component/ThoughtChain.vue2.js +73 -0
  304. package/lib/packages/components/touchchat/component/ThoughtChain.vue2.js.map +1 -0
  305. package/lib/packages/components/touchchat/component/UploadView.vue.js +11 -0
  306. package/lib/packages/components/touchchat/component/UploadView.vue.js.map +1 -0
  307. package/lib/packages/components/touchchat/component/UploadView.vue2.js +190 -0
  308. package/lib/packages/components/touchchat/component/UploadView.vue2.js.map +1 -0
  309. package/lib/packages/components/touchchat/component/UploadView_api.vue.js +11 -0
  310. package/lib/packages/components/touchchat/component/UploadView_api.vue.js.map +1 -0
  311. package/lib/packages/components/touchchat/component/UploadView_api.vue2.js +170 -0
  312. package/lib/packages/components/touchchat/component/UploadView_api.vue2.js.map +1 -0
  313. package/lib/packages/components/touchchat/component/VideoFile.vue.js +11 -0
  314. package/lib/packages/components/touchchat/component/VideoFile.vue.js.map +1 -0
  315. package/lib/packages/components/touchchat/component/VideoFile.vue2.js +37 -0
  316. package/lib/packages/components/touchchat/component/VideoFile.vue2.js.map +1 -0
  317. package/lib/packages/components/touchchat/component/VoiceView.vue.js +11 -0
  318. package/lib/packages/components/touchchat/component/VoiceView.vue.js.map +1 -0
  319. package/lib/packages/components/touchchat/component/VoiceView.vue2.js +169 -0
  320. package/lib/packages/components/touchchat/component/VoiceView.vue2.js.map +1 -0
  321. package/lib/packages/components/touchchat/img/file/doc.png.js +8 -0
  322. package/lib/packages/components/touchchat/img/file/doc.png.js.map +1 -0
  323. package/lib/packages/components/touchchat/img/file/docx.png.js +8 -0
  324. package/lib/packages/components/touchchat/img/file/docx.png.js.map +1 -0
  325. package/lib/packages/components/touchchat/img/file/gif.png.js +8 -0
  326. package/lib/packages/components/touchchat/img/file/gif.png.js.map +1 -0
  327. package/lib/packages/components/touchchat/img/file/html.png.js +8 -0
  328. package/lib/packages/components/touchchat/img/file/html.png.js.map +1 -0
  329. package/lib/packages/components/touchchat/img/file/jpg.png.js +8 -0
  330. package/lib/packages/components/touchchat/img/file/jpg.png.js.map +1 -0
  331. package/lib/packages/components/touchchat/img/file/mp3.png.js +8 -0
  332. package/lib/packages/components/touchchat/img/file/mp3.png.js.map +1 -0
  333. package/lib/packages/components/touchchat/img/file/mp4.png.js +8 -0
  334. package/lib/packages/components/touchchat/img/file/mp4.png.js.map +1 -0
  335. package/lib/packages/components/touchchat/img/file/music.png.js +8 -0
  336. package/lib/packages/components/touchchat/img/file/music.png.js.map +1 -0
  337. package/lib/packages/components/touchchat/img/file/pdf.png.js +8 -0
  338. package/lib/packages/components/touchchat/img/file/pdf.png.js.map +1 -0
  339. package/lib/packages/components/touchchat/img/file/png.png.js +8 -0
  340. package/lib/packages/components/touchchat/img/file/png.png.js.map +1 -0
  341. package/lib/packages/components/touchchat/img/file/ppt.png.js +8 -0
  342. package/lib/packages/components/touchchat/img/file/ppt.png.js.map +1 -0
  343. package/lib/packages/components/touchchat/img/file/pptx.png.js +8 -0
  344. package/lib/packages/components/touchchat/img/file/pptx.png.js.map +1 -0
  345. package/lib/packages/components/touchchat/img/file/txt.png.js +8 -0
  346. package/lib/packages/components/touchchat/img/file/txt.png.js.map +1 -0
  347. package/lib/packages/components/touchchat/img/file/xls.png.js +8 -0
  348. package/lib/packages/components/touchchat/img/file/xls.png.js.map +1 -0
  349. package/lib/packages/components/touchchat/img/file/xlsx.png.js +8 -0
  350. package/lib/packages/components/touchchat/img/file/xlsx.png.js.map +1 -0
  351. package/lib/packages/components/touchchat/img/svg/reset.svg.js +8 -0
  352. package/lib/packages/components/touchchat/img/svg/reset.svg.js.map +1 -0
  353. package/lib/packages/components/touchchat/index.js +6 -6
  354. package/lib/packages/components/touchchat/index.js.map +1 -1
  355. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue.js +11 -0
  356. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue.js.map +1 -0
  357. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js +63 -0
  358. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js.map +1 -0
  359. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue.js +3 -2
  360. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue.js.map +1 -1
  361. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +321 -138
  362. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
  363. package/lib/packages/components/touchchat/src/AiChat/Chat/TouchChat.js +21 -0
  364. package/lib/packages/components/touchchat/src/AiChat/Chat/TouchChat.js.map +1 -0
  365. package/lib/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.js +147 -0
  366. package/lib/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.js.map +1 -0
  367. package/lib/packages/components/touchchat/src/AiChat/Chat/types.js +22 -0
  368. package/lib/packages/components/touchchat/src/AiChat/Chat/types.js.map +1 -0
  369. package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js +695 -0
  370. package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js.map +1 -0
  371. package/lib/packages/components/touchchat/src/AiChat/Chat/useCopy.js +57 -0
  372. package/lib/packages/components/touchchat/src/AiChat/Chat/useCopy.js.map +1 -0
  373. package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js +157 -0
  374. package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js.map +1 -0
  375. package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js +347 -0
  376. package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js.map +1 -0
  377. package/lib/packages/components/touchchat/src/AiChat/Chat/useScroll.js +76 -0
  378. package/lib/packages/components/touchchat/src/AiChat/Chat/useScroll.js.map +1 -0
  379. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue.js +3 -2
  380. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue.js.map +1 -1
  381. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +471 -43
  382. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
  383. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue.js +3 -2
  384. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue.js.map +1 -1
  385. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js +179 -97
  386. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
  387. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue.js +3 -2
  388. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue.js.map +1 -1
  389. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js +28 -11
  390. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
  391. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue.js +3 -2
  392. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue.js.map +1 -1
  393. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js +174 -61
  394. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js.map +1 -1
  395. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue.js +3 -2
  396. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue.js.map +1 -1
  397. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js +14 -8
  398. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js.map +1 -1
  399. package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue.js +11 -0
  400. package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue.js.map +1 -0
  401. package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js +1038 -0
  402. package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js.map +1 -0
  403. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue.js +3 -2
  404. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue.js.map +1 -1
  405. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +275 -1003
  406. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
  407. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue.js +3 -2
  408. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue.js.map +1 -1
  409. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js +345 -121
  410. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
  411. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue.js +3 -2
  412. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue.js.map +1 -1
  413. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +142 -63
  414. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
  415. package/lib/packages/components/touchchat/src/index.vue.js +3 -2
  416. package/lib/packages/components/touchchat/src/index.vue.js.map +1 -1
  417. package/lib/packages/components/touchchat/src/index.vue2.js +251 -142
  418. package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
  419. package/lib/packages/components/touchchat/src/types/a2a.js +13 -0
  420. package/lib/packages/components/touchchat/src/types/a2a.js.map +1 -0
  421. package/lib/packages/components/touchchat/utils/a2aService.js +319 -0
  422. package/lib/packages/components/touchchat/utils/a2aService.js.map +1 -0
  423. package/lib/packages/components/touchchat/utils/fetchStream.js +8 -2
  424. package/lib/packages/components/touchchat/utils/fetchStream.js.map +1 -1
  425. package/lib/packages/components/touchchat/utils/markdown.js +31 -13
  426. package/lib/packages/components/touchchat/utils/markdown.js.map +1 -1
  427. package/lib/packages/utils/config.js.map +1 -1
  428. package/lib/packages/utils/types.js.map +1 -1
  429. package/package.json +83 -83
  430. package/theme/components/index.css +969 -43
  431. package/theme/font/iconfont.woff +0 -0
  432. package/theme/font/iconfont.woff2 +0 -0
  433. package/theme/index.css +969 -43
  434. package/theme/skin/default.css +969 -43
  435. package/types/global.d.ts +2 -2
  436. package/es/packages/components/touchchat/src/AiChat/Scene.vue.mjs +0 -6
  437. package/es/packages/components/touchchat/src/AiChat/Scene.vue.mjs.map +0 -1
  438. package/es/packages/components/touchchat/src/AiChat/Scene.vue2.mjs +0 -42
  439. package/es/packages/components/touchchat/src/AiChat/Scene.vue2.mjs.map +0 -1
  440. package/lib/packages/components/touchchat/src/AiChat/Scene.vue.js +0 -10
  441. package/lib/packages/components/touchchat/src/AiChat/Scene.vue.js.map +0 -1
  442. package/lib/packages/components/touchchat/src/AiChat/Scene.vue2.js +0 -46
  443. 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":";;;;;;;"}