@touchvue/chat 1.0.0-beta.54 → 1.0.0-beta.56

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 (171) hide show
  1. package/README.md +70 -70
  2. package/es/node_modules/.pnpm/{dompurify@3.3.0 → dompurify@3.4.3}/node_modules/dompurify/dist/purify.es.mjs +299 -143
  3. package/es/node_modules/.pnpm/dompurify@3.4.3/node_modules/dompurify/dist/purify.es.mjs.map +1 -0
  4. package/es/package.json.css +1 -1
  5. package/es/package.json.mjs +1 -1
  6. package/es/packages/components/resolver.mjs.map +1 -1
  7. package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue2.mjs.map +1 -1
  8. package/es/packages/components/touchchat/component/AiRobot/letter.vue.mjs +1 -1
  9. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs +9 -9
  10. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -1
  11. package/es/packages/components/touchchat/component/AudioFile.vue.mjs +7 -0
  12. package/es/packages/components/touchchat/component/AudioFile.vue.mjs.map +1 -0
  13. package/es/packages/components/touchchat/component/AudioFile.vue2.mjs +111 -0
  14. package/es/packages/components/touchchat/component/AudioFile.vue2.mjs.map +1 -0
  15. package/es/packages/components/touchchat/component/FileContent.vue2.mjs +3 -3
  16. package/es/packages/components/touchchat/component/FileContent.vue2.mjs.map +1 -1
  17. package/es/packages/components/touchchat/component/FileView.vue2.mjs +2 -2
  18. package/es/packages/components/touchchat/component/FileView.vue2.mjs.map +1 -1
  19. package/es/packages/components/touchchat/component/HelloChat.vue2.mjs.map +1 -1
  20. package/es/packages/components/touchchat/component/ImageFile.vue2.mjs +6 -6
  21. package/es/packages/components/touchchat/component/ImageFile.vue2.mjs.map +1 -1
  22. package/es/packages/components/touchchat/component/ImageView.vue2.mjs +1 -1
  23. package/es/packages/components/touchchat/component/ImageView.vue2.mjs.map +1 -1
  24. package/es/packages/components/touchchat/component/LinkView.vue2.mjs +4 -4
  25. package/es/packages/components/touchchat/component/LinkView.vue2.mjs.map +1 -1
  26. package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs +1 -1
  27. package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs.map +1 -1
  28. package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs +56 -5
  29. package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs.map +1 -1
  30. package/es/packages/components/touchchat/component/PDFFile.vue2.mjs +10 -10
  31. package/es/packages/components/touchchat/component/PDFFile.vue2.mjs.map +1 -1
  32. package/es/packages/components/touchchat/component/QuoteContent.vue2.mjs +52 -10
  33. package/es/packages/components/touchchat/component/QuoteContent.vue2.mjs.map +1 -1
  34. package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs +1 -1
  35. package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs.map +1 -1
  36. package/es/packages/components/touchchat/component/UploadView.vue2.mjs +2 -2
  37. package/es/packages/components/touchchat/component/UploadView.vue2.mjs.map +1 -1
  38. package/es/packages/components/touchchat/component/VideoFile.vue.mjs +1 -1
  39. package/es/packages/components/touchchat/component/VideoFile.vue2.mjs.map +1 -1
  40. package/es/packages/components/touchchat/component/VoiceView.vue2.mjs +13 -4
  41. package/es/packages/components/touchchat/component/VoiceView.vue2.mjs.map +1 -1
  42. package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs +1 -1
  43. package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs.map +1 -1
  44. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +30 -30
  45. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
  46. package/es/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.mjs.map +1 -1
  47. package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs.map +1 -1
  48. package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs +10 -44
  49. package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs.map +1 -1
  50. package/es/packages/components/touchchat/src/AiChat/Chat/useCopy.mjs.map +1 -1
  51. package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs +1 -1
  52. package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs.map +1 -1
  53. package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs +16 -9
  54. package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs.map +1 -1
  55. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +26 -13
  56. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
  57. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs +1 -1
  58. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
  59. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs +3 -3
  60. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
  61. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs +11 -11
  62. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs.map +1 -1
  63. package/es/packages/components/touchchat/src/AiChat/MessageViewed.vue.mjs +33 -0
  64. package/es/packages/components/touchchat/src/AiChat/MessageViewed.vue.mjs.map +1 -0
  65. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs +3 -3
  66. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs.map +1 -1
  67. package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs +55 -13
  68. package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs.map +1 -1
  69. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +36 -0
  70. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
  71. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
  72. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +127 -75
  73. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
  74. package/es/packages/components/touchchat/src/index.vue2.mjs +6 -1
  75. package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
  76. package/es/packages/components/touchchat/utils/a2aService.mjs +58 -15
  77. package/es/packages/components/touchchat/utils/a2aService.mjs.map +1 -1
  78. package/es/packages/components/touchchat/utils/fetchStream.mjs.map +1 -1
  79. package/es/packages/components/touchchat/utils/markdown.mjs +22 -5
  80. package/es/packages/components/touchchat/utils/markdown.mjs.map +1 -1
  81. package/es/packages/components/touchchat/utils/tools.mjs +4 -4
  82. package/es/packages/components/touchchat/utils/tools.mjs.map +1 -1
  83. package/lib/node_modules/.pnpm/{dompurify@3.3.0 → dompurify@3.4.3}/node_modules/dompurify/dist/purify.es.js +299 -143
  84. package/lib/node_modules/.pnpm/dompurify@3.4.3/node_modules/dompurify/dist/purify.es.js.map +1 -0
  85. package/lib/package.json.css +1 -1
  86. package/lib/package.json.js +1 -1
  87. package/lib/packages/components/resolver.js.map +1 -1
  88. package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue2.js.map +1 -1
  89. package/lib/packages/components/touchchat/component/AiRobot/letter.vue.js +1 -1
  90. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js +9 -9
  91. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -1
  92. package/lib/packages/components/touchchat/component/AudioFile.vue.js +11 -0
  93. package/lib/packages/components/touchchat/component/AudioFile.vue.js.map +1 -0
  94. package/lib/packages/components/touchchat/component/AudioFile.vue2.js +115 -0
  95. package/lib/packages/components/touchchat/component/AudioFile.vue2.js.map +1 -0
  96. package/lib/packages/components/touchchat/component/FileContent.vue2.js +3 -3
  97. package/lib/packages/components/touchchat/component/FileContent.vue2.js.map +1 -1
  98. package/lib/packages/components/touchchat/component/FileView.vue2.js +2 -2
  99. package/lib/packages/components/touchchat/component/FileView.vue2.js.map +1 -1
  100. package/lib/packages/components/touchchat/component/HelloChat.vue2.js.map +1 -1
  101. package/lib/packages/components/touchchat/component/ImageFile.vue2.js +6 -6
  102. package/lib/packages/components/touchchat/component/ImageFile.vue2.js.map +1 -1
  103. package/lib/packages/components/touchchat/component/ImageView.vue2.js +1 -1
  104. package/lib/packages/components/touchchat/component/ImageView.vue2.js.map +1 -1
  105. package/lib/packages/components/touchchat/component/LinkView.vue2.js +4 -4
  106. package/lib/packages/components/touchchat/component/LinkView.vue2.js.map +1 -1
  107. package/lib/packages/components/touchchat/component/MarkLayer.vue2.js +1 -1
  108. package/lib/packages/components/touchchat/component/MarkLayer.vue2.js.map +1 -1
  109. package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js +55 -4
  110. package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js.map +1 -1
  111. package/lib/packages/components/touchchat/component/PDFFile.vue2.js +10 -10
  112. package/lib/packages/components/touchchat/component/PDFFile.vue2.js.map +1 -1
  113. package/lib/packages/components/touchchat/component/QuoteContent.vue2.js +51 -9
  114. package/lib/packages/components/touchchat/component/QuoteContent.vue2.js.map +1 -1
  115. package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js +1 -1
  116. package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js.map +1 -1
  117. package/lib/packages/components/touchchat/component/UploadView.vue2.js +2 -2
  118. package/lib/packages/components/touchchat/component/UploadView.vue2.js.map +1 -1
  119. package/lib/packages/components/touchchat/component/VideoFile.vue.js +1 -1
  120. package/lib/packages/components/touchchat/component/VideoFile.vue2.js.map +1 -1
  121. package/lib/packages/components/touchchat/component/VoiceView.vue2.js +13 -4
  122. package/lib/packages/components/touchchat/component/VoiceView.vue2.js.map +1 -1
  123. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js +1 -1
  124. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js.map +1 -1
  125. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +30 -30
  126. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
  127. package/lib/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.js.map +1 -1
  128. package/lib/packages/components/touchchat/src/AiChat/Chat/types.js.map +1 -1
  129. package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js +10 -44
  130. package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js.map +1 -1
  131. package/lib/packages/components/touchchat/src/AiChat/Chat/useCopy.js.map +1 -1
  132. package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js +1 -1
  133. package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js.map +1 -1
  134. package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js +16 -9
  135. package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js.map +1 -1
  136. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +25 -12
  137. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
  138. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js +1 -1
  139. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
  140. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js +3 -3
  141. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
  142. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js +11 -11
  143. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js.map +1 -1
  144. package/lib/packages/components/touchchat/src/AiChat/MessageViewed.vue.js +37 -0
  145. package/lib/packages/components/touchchat/src/AiChat/MessageViewed.vue.js.map +1 -0
  146. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js +3 -3
  147. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js.map +1 -1
  148. package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js +55 -13
  149. package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js.map +1 -1
  150. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +36 -0
  151. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
  152. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
  153. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +126 -74
  154. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
  155. package/lib/packages/components/touchchat/src/index.vue2.js +6 -1
  156. package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
  157. package/lib/packages/components/touchchat/utils/a2aService.js +58 -15
  158. package/lib/packages/components/touchchat/utils/a2aService.js.map +1 -1
  159. package/lib/packages/components/touchchat/utils/fetchStream.js.map +1 -1
  160. package/lib/packages/components/touchchat/utils/markdown.js +22 -5
  161. package/lib/packages/components/touchchat/utils/markdown.js.map +1 -1
  162. package/lib/packages/components/touchchat/utils/tools.js +4 -4
  163. package/lib/packages/components/touchchat/utils/tools.js.map +1 -1
  164. package/package.json +1 -1
  165. package/theme/components/index.css +152 -3
  166. package/theme/font/iconfont.woff +0 -0
  167. package/theme/font/iconfont.woff2 +0 -0
  168. package/theme/index.css +152 -3
  169. package/theme/skin/default.css +152 -3
  170. package/es/node_modules/.pnpm/dompurify@3.3.0/node_modules/dompurify/dist/purify.es.mjs.map +0 -1
  171. package/lib/node_modules/.pnpm/dompurify@3.3.0/node_modules/dompurify/dist/purify.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TouchHistory.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/TouchHistory.vue"],"sourcesContent":["<template>\n\t<div class=\"touchchat\">\n\t\t<div v-if=\"state.isSidebarCollapsed && !isNotHeader\" class=\"touchchat-header\">\n\t\t\t<div class=\"touchchat-showmenu\" @click.stop=\"toggleSidebar\">\n\t\t\t\t<div class=\"touchchat-showmenu-icon\"></div>\n\t\t\t</div>\n\t\t\t<div class=\"touchchat-add-lite\" @click.stop=\"startNewChat\">\n\t\t\t\t<div class=\"touchchat-add-lite-icon\"></div>\n\t\t\t\t<span>新对话</span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"touchchat-content\">\n\t\t\t<HistorySidebar v-if=\"!isNotHeader && !state.isSidebarCollapsed\" :is-sidebar-collapsed=\"state.isSidebarCollapsed\" :active-chat=\"state.activeChat\" :chat-history=\"state.chatHistory\" @toggle-sidebar=\"toggleSidebar\" @start-new-chat=\"startNewChat\" @select-chat=\"selectChat\" @rename-chat=\"handleRenameChat\" @delete-chat=\"deleteChat\"> </HistorySidebar>\n\t\t\t<TouchChat v-if=\"!iIsAgent\" ref=\"chatComponent\" :key=\"state.activeChat + '-chat'\" :value=\"currentChatMessages\" @send-message=\"sendMessage\" @toggle-sidebar=\"toggleSidebarOut\" @before-send-message=\"beforeSendMessage\" @open-side-bar=\"openSideBar\">\n\t\t\t\t<template #aimsg=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #msg=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #aiAvatar>\n\t\t\t\t\t<slot name=\"aiAvatar\" />\n\t\t\t\t</template>\n\t\t\t\t<template #userAvatar>\n\t\t\t\t\t<slot name=\"userAvatar\" />\n\t\t\t\t</template>\n\t\t\t\t<template #welcome>\n\t\t\t\t\t<slot name=\"welcome\" />\n\t\t\t\t</template>\n\t\t\t\t<template #edit>\n\t\t\t\t\t<slot name=\"edit\" />\n\t\t\t\t</template>\n\t\t\t\t<template #shortcut>\n\t\t\t\t\t<slot name=\"shortcut\" />\n\t\t\t\t</template>\n\t\t\t\t<template #top>\n\t\t\t\t\t<slot name=\"top\" />\n\t\t\t\t</template>\n\t\t\t\t<template #fn=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #extendsFn=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #editTop>\n\t\t\t\t\t<slot name=\"editTop\" />\n\t\t\t\t</template>\n\t\t\t\t<template #editFn>\n\t\t\t\t\t<slot name=\"editFn\"></slot>\n\t\t\t\t</template>\n\t\t\t\t<template #editSubmitRight>\n\t\t\t\t\t<slot name=\"editSubmitRight\"></slot>\n\t\t\t\t</template>\n\t\t\t\t<template #editSubmitLeft>\n\t\t\t\t\t<slot name=\"editSubmitLeft\"></slot>\n\t\t\t\t</template>\n\t\t\t\t<template #mayLike=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"mayLike\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t</TouchChat>\n\t\t\t<!-- :key=\"state.activeChat\" -->\n\t\t\t<TouchAgent v-else ref=\"chatComponent\" :key=\"state.activeChat + '-agent'\" :value=\"currentChatMessages\" @send-message=\"sendMessage\" @toggle-sidebar=\"toggleSidebarOut\" @before-send-message=\"beforeSendMessage\">\n\t\t\t\t<template #aimsg=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #msg=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #aiAvatar>\n\t\t\t\t\t<slot name=\"aiAvatar\" />\n\t\t\t\t</template>\n\t\t\t\t<template #userAvatar>\n\t\t\t\t\t<slot name=\"userAvatar\" />\n\t\t\t\t</template>\n\t\t\t\t<template #welcome>\n\t\t\t\t\t<slot name=\"welcome\" />\n\t\t\t\t</template>\n\t\t\t\t<template #edit>\n\t\t\t\t\t<slot name=\"edit\" />\n\t\t\t\t</template>\n\t\t\t\t<template #shortcut>\n\t\t\t\t\t<slot name=\"shortcut\" />\n\t\t\t\t</template>\n\t\t\t\t<template #top>\n\t\t\t\t\t<slot name=\"top\" />\n\t\t\t\t</template>\n\t\t\t\t<template #fn=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #extendsFn=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t</TouchAgent>\n\t\t\t<SiderBarView v-show=\"state.toggleSidebarFlag\" :flag=\"state.isSidebarCollapsed\" :item=\"messageItem\" :index=\"messageIndex\">\n\t\t\t\t<template #extend=\"{ item: slotMessageItem, index: slotMessageIndex }\">\n\t\t\t\t\t<slot name=\"extend\" :item=\"slotMessageItem\" :index=\"slotMessageIndex\" />\n\t\t\t\t</template>\n\t\t\t</SiderBarView>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, computed, watch, reactive, inject, ref, provide, Ref } from 'vue'\nimport TouchChat from './TouchChat.vue'\nimport TouchAgent from './TouchAgent.vue'\nimport HistorySidebar from './HistorySidebar.vue'\nimport SiderBarView from './SiderBarView.vue'\nimport type { ChatMessage, ChatMsgList } from './Chat/types'\nimport type { AgentConfig, SubAgent } from '../types/a2a'\n\ninterface HistoryItem {\n\tid: string\n\ttitle: string\n\ttime: Date\n\ttype: string // 用于区分不同类型的对话\n\tmessages?: ChatMessage[]\n}\n\ninterface Agent {\n\tid: string\n\tname: string\n\tintro: string\n}\n\ntype ResultArray = AgentConfig[] | SubAgent[]\n\ninterface MultiAgentInfo {\n\tlist: ResultArray\n\turl?: string\n\theaders?: object\n}\n\n// 状态管理\nconst state = reactive({\n\tactiveChat: '',\n\tchatHistory: [] as HistoryItem[],\n\tisSidebarCollapsed: false,\n\tactionMenuVisible: {} as Record<string, boolean>,\n\tmockMessages: [] as ChatMessage[],\n\ttoggleSidebarFlag: false,\n\tagentsType: '',\n\tclickCreateNum: 0\n})\n\nconst watchHistoryData = ref<HistoryItem[]>([])\nconst watchHistoryDetail = ref<ChatMessage[]>([])\nconst chatComponent = ref<InstanceType<typeof TouchChat>>()\n\nconst layout = inject<string>('layout', 'side, think, upload, chain')\nconst isNotHeader = !layout.includes('side')\nconst scripts = inject<Ref<any[]>>('scripts', ref([]))\nconst agents = inject<Agent[]>('agents', [])\nconst agentsInfo = ref<Agent>()\nconst agentInfo = inject<Ref<MultiAgentInfo>>('agentInfo', ref({ list: [], url: '', headers: {} }))\nconst iIsAgent = ref(false)\nwatch(\n\tagentInfo,\n\tnewVal => {\n\t\tiIsAgent.value = newVal.list.length > 0\n\t},\n\t{ immediate: true, deep: true }\n)\n// 提供更新函数给后代组件\nconst updateSharedData = (item: Agent) => {\n\tagentsInfo.value = item\n\tif (chatComponent.value) {\n\t\tchatComponent.value?.handleAgentSelect?.(item)\n\t}\n}\nprovide('updateSharedData', updateSharedData)\n// 本地存储相关\nconst STORAGE_KEYS = {\n\tCHAT_HISTORY: scripts.value.length === 0 ? 'chatHistory' : 'robotHistory',\n\tSIDEBAR_STATE: 'sidebarCollapsed'\n}\nconst saveToLocalStorage = () => {\n\tlocalStorage.setItem(STORAGE_KEYS.CHAT_HISTORY, JSON.stringify(state.chatHistory))\n\tlocalStorage.setItem(STORAGE_KEYS.SIDEBAR_STATE, JSON.stringify(state.isSidebarCollapsed))\n}\n// 聊天管理\nconst createNewChat = (title: string = '新对话', messageList: ChatMessage[] = [], type?: string) => {\n\tlet agentsId = ''\n\tif (agents.length > 0) {\n\t\tagentsId = agents.find(item => item.name === title)?.id || ''\n\t}\n\tconst newChat: HistoryItem = {\n\t\t// id: Date.now().toString(),\n\t\tid: agentsId ? agentsId : (Math.floor(Math.random() * 89999999) + 10000000).toString(),\n\t\ttitle,\n\t\ttime: new Date(),\n\t\tmessages: messageList,\n\t\ttype: type ? type : ''\n\t}\n\n\tstate.chatHistory.unshift(newChat)\n\tsaveToLocalStorage()\n\treturn newChat\n}\n\nconst loadFromLocalStorage = () => {\n\t// 加载折叠状态\n\tconst savedCollapseState = localStorage.getItem(STORAGE_KEYS.SIDEBAR_STATE)\n\tif (savedCollapseState) {\n\t\tstate.isSidebarCollapsed = JSON.parse(savedCollapseState)\n\t}\n\n\tif (scripts.value.length > 0) {\n\t\tlocalStorage.setItem(STORAGE_KEYS.CHAT_HISTORY, '[]')\n\t\tlocalStorage.setItem('activeAgentsName', '')\n\t}\n\n\t// 加载聊天历史\n\tconst savedHistory = localStorage.getItem(STORAGE_KEYS.CHAT_HISTORY)\n\tconst historyData = JSON.parse(savedHistory || '[]')\n\tif (agents.length > 0 && !historyData.length) {\n\t\tagents.forEach(item => {\n\t\t\tconst agentsList = [\n\t\t\t\t{\n\t\t\t\t\tchatId: item.id,\n\t\t\t\t\tuser: 'ai',\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tisShowLike: true,\n\t\t\t\t\tcontent: item?.intro || '我是AI助手,我可以回答你的问题,你可以和我聊天,也可以问我问题。',\n\t\t\t\t\tmsgList: []\n\t\t\t\t}\n\t\t\t]\n\t\t\tcreateNewChat(item.name, agentsList, item.name)\n\t\t})\n\t}\n\tif (watchHistoryData.value.length > 0) {\n\t\tstate.chatHistory = watchHistoryData.value\n\t\t// if (state.chatHistory.length > 0) {\n\t\t// \tstate.activeChat = state.chatHistory[0].id\n\t\t// }\n\t} else if (historyData.length > 0) {\n\t\tstate.chatHistory = historyData\n\t\t// if (state.chatHistory.length > 0) {\n\t\t// \tstate.activeChat = state.chatHistory[0].id\n\t\t// }\n\t}\n\t// else {\n\t// \t// 初始化默认对话\n\t// \tconst newChat = createNewChat('AI基础问答')\n\t// \tstate.activeChat = newChat.id\n\t// }\n\t// 首次进入时若已有会话但未选中,需选中一个会话,避免首条消息发送时 activeChat 从空变为有值\n\t// 触发 TouchChat 的 :key 变化导致整组件重建,剧本里连续多条 AI 回复(如 222→333)被中断。\n\t// createNewChat 使用 unshift,数组顺序与 agents 遍历顺序相反,故有多智能体时默认选 agents[0] 对应会话,而不是 chatHistory[0]。\n\tif (!state.activeChat && state.chatHistory.length > 0) {\n\t\tif (agents.length > 0) {\n\t\t\tconst firstId = agents[0].id\n\t\t\tstate.activeChat = state.chatHistory.find(h => h.id === firstId)?.id ?? state.chatHistory[state.chatHistory.length - 1].id\n\t\t} else {\n\t\t\tstate.activeChat = state.chatHistory[0].id\n\t\t}\n\t}\n\t// 仅有剧本、未传 agents、且没有任何会话:先建一条空会话并选中。\n\t// 否则首条消息会在 sendMessage 里首次给 activeChat 赋值,TouchChat 的 :key 变化导致整组件重建,连续多条 AI 剧本会丢后半段。\n\tif (scripts.value.length > 0 && agents.length === 0 && state.chatHistory.length === 0) {\n\t\tconst seeded = createNewChat('对话')\n\t\tstate.activeChat = seeded.id\n\t}\n}\n\nconst historyList = inject<any>('historyList', [])\nconst setHistoryData = ref(Array.isArray(historyList) ? historyList : typeof historyList === 'object' && historyList ? historyList : [])\nconst computedHistoryData = computed(() => {\n\tif (setHistoryData.value.length) {\n\t\treturn setHistoryData.value\n\t}\n\treturn []\n})\nwatch(\n\tcomputedHistoryData,\n\tnewVal => {\n\t\twatchHistoryData.value = newVal\n\t\tstate.chatHistory = newVal\n\t\tloadFromLocalStorage()\n\t},\n\t{ immediate: true }\n)\nconst historyDetail = inject<ChatMessage[]>('historyDetail', [])\nconst setMessageDetail = ref(Array.isArray(historyDetail) ? historyDetail : typeof historyDetail === 'object' && historyDetail ? historyDetail : [])\nconst computedHistoryDetail = computed(() => {\n\tif (setMessageDetail.value.length) {\n\t\treturn setMessageDetail.value\n\t}\n\treturn []\n})\nwatch(\n\tcomputedHistoryDetail,\n\tnewVal => {\n\t\twatchHistoryDetail.value = newVal\n\t},\n\t{ immediate: true }\n)\nconst messageItem = ref<ChatMessage>({ user: 'u', type: '', content: '', msgList: [] })\nconst messageIndex = ref<number>(0)\n\n// 修改currentChatMessages计算属性\nconst currentChatMessages = computed(() => {\n\tif (watchHistoryDetail.value.length) {\n\t\treturn watchHistoryDetail.value\n\t}\n\tif (!state.activeChat) return []\n\tif ((!watchHistoryDetail.value.length && !watchHistoryData.value.length) || watchHistoryData.value.length) {\n\t\tconst currentChat = state.chatHistory.find(item => item.id === state.activeChat)\n\t\treturn currentChat?.messages || []\n\t} else {\n\t\treturn watchHistoryDetail.value\n\t}\n})\n\nwatch(\n\t() => {\n\t\tif (typeof historyList === 'object' && historyList !== undefined) {\n\t\t\treturn historyList\n\t\t}\n\t\treturn historyList\n\t},\n\tnewVal => {\n\t\tif (newVal && Array.isArray(newVal) && newVal.length) {\n\t\t\twatchHistoryData.value = newVal\n\t\t\t// loadFromLocalStorage()\n\t\t\tif (!scripts.value.length) {\n\t\t\t\tstate.chatHistory = newVal\n\t\t\t\tif (state.chatHistory.length > 0 && !state.activeChat) {\n\t\t\t\t\tstate.activeChat = state.chatHistory[0].id\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t{ deep: true }\n)\n\nwatch(\n\t() => {\n\t\tif (typeof historyDetail === 'object' && historyDetail !== undefined) {\n\t\t\treturn historyDetail\n\t\t}\n\t\treturn historyDetail\n\t},\n\tnewVal => {\n\t\tif (newVal && Array.isArray(newVal)) {\n\t\t\twatchHistoryDetail.value = JSON.parse(JSON.stringify(newVal))\n\t\t\tif (chatComponent.value) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tchatComponent.value?.$forceUpdate?.()\n\t\t\t\t}, 0)\n\t\t\t}\n\t\t}\n\t},\n\t{ deep: true, immediate: true }\n)\n\n// 生命周期\nonMounted(() => {\n\tloadFromLocalStorage()\n\t// 初始化事件监听\n\t// initEventListeners()\n})\n\n// 事件监听\n// function initEventListeners() {\n// \tdocument.addEventListener('click', () => {\n// \t\t// 点击空白处关闭所有菜单\n// \t\tObject.keys(state.actionMenuVisible).forEach(key => {\n// \t\t\tstate.actionMenuVisible[key] = false\n// \t\t})\n// \t})\n// }\n\nconst toggleSidebarOut = (item: ChatMessage, index: number) => {\n\tmessageItem.value = item\n\tmessageIndex.value = index\n\tif (state.toggleSidebarFlag) {\n\t\treturn\n\t}\n\tstate.toggleSidebarFlag = true\n\tstate.isSidebarCollapsed = false\n\ttoggleSidebar()\n}\n\n// 侧边栏控制\nconst toggleSidebar = () => {\n\tstate.isSidebarCollapsed = !state.isSidebarCollapsed\n\tsaveToLocalStorage()\n}\n\nconst startNewChat = () => {\n\tlocalStorage.setItem('activeAgentsName', '')\n\tconst robotHistory = localStorage.getItem(STORAGE_KEYS.CHAT_HISTORY) || '[]'\n\tconst robotHistoryData = JSON.parse(robotHistory)\n\tlet messageList: ChatMessage[] = []\n\tlet messageItem: HistoryItem = {} as HistoryItem\n\tlet firstMessageList: ChatMessage[] = []\n\tif (robotHistoryData.length) {\n\t\tmessageItem = robotHistoryData.find((item: HistoryItem) => item.id === state.activeChat) || ({} as HistoryItem)\n\t\tmessageList = messageItem?.messages || []\n\t\tfirstMessageList = robotHistoryData?.[0]?.messages || ([] as ChatMessage[])\n\t}\n\tstate.toggleSidebarFlag = false\n\tif ((watchHistoryData.value.length > 0 && firstMessageList.length > 0 && (watchHistoryDetail.value.length > 0 || currentChatMessages.value.length > 0 || messageList.length > 0)) || (!messageItem?.messages && firstMessageList.length > 0) || !state.clickCreateNum) {\n\t\tconst newChat = createNewChat('新对话' + (state.chatHistory.length + 1))\n\t\tstate.activeChat = newChat.id\n\t\tchange('')\n\t\tstate.clickCreateNum++\n\t\treturn\n\t}\n\tif (state.chatHistory.length > 0 && !state.chatHistory?.[0]?.messages?.length) {\n\t\tstate.activeChat = state.chatHistory[0].id\n\t\tchange('')\n\t\treturn\n\t}\n\tif (!currentChatMessages.value.length && state.chatHistory.length > 0) {\n\t\tstate.activeChat = state.chatHistory?.[0]?.id ?? ''\n\t\tchange('')\n\t\treturn\n\t}\n\tconst newChat = createNewChat('新对话' + (state.chatHistory.length + 1))\n\tstate.activeChat = newChat.id\n\tchange('')\n}\n\nconst change = inject<(id: string) => void>('change', () => {\n\tconsole.warn('未提供change函数')\n})\n\nconst changeChatHistory = (index: number) => {\n\tstate.activeChat = state.chatHistory[index].id\n\tchange(state.chatHistory[index].id)\n}\n\nconst clearChatHistory = () => {\n\tstate.chatHistory = []\n\tstate.activeChat = ''\n\tlocalStorage.setItem(STORAGE_KEYS.CHAT_HISTORY, JSON.stringify([]))\n}\n\nconst selectChat = (id: string, type?: string) => {\n\tstate.activeChat = id\n\tstate.toggleSidebarFlag = false\n\tstate.agentsType = type as string\n\tif (!type) {\n\t\tlocalStorage.setItem('activeAgentsName', '')\n\t}\n\tchange(id)\n\tresetAllMenus()\n}\n\nconst historyRemove = inject<(id: string) => void>('historyRemove', () => {\n\tconsole.warn('未提供remove函数')\n})\nconst openSideBar = inject<(item: ChatMessage & ChatMsgList, index: number) => void>('openSideBar', () => {})\n\nconst deleteChat = (id: string) => {\n\tconst index = state.chatHistory.findIndex(item => item.id === id)\n\tif (index === -1) return\n\n\tstate.chatHistory.splice(index, 1)\n\n\tif (state.chatHistory.length > 0) {\n\t\tselectChat(state.chatHistory[0].id)\n\t} else {\n\t\tstate.activeChat = ''\n\t\tstate.mockMessages = []\n\t}\n\thistoryRemove(id)\n\tsaveToLocalStorage()\n}\n\nconst beforeSendMessage = () => {\n\tstate.toggleSidebarFlag = false\n}\n\nconst sendMessage = (messageList: ChatMessage[], type?: string) => {\n\tstate.mockMessages = messageList\n\n\tif (type) {\n\t\treturn\n\t}\n\n\tif (!state.activeChat) {\n\t\tconst newChat = createNewChat('AI基础问答', messageList)\n\t\tnewChat.messages = messageList\n\t\tstate.activeChat = newChat.id\n\t} else {\n\t\tconst currentChat = state.chatHistory.find(item => item.id === state.activeChat)\n\t\tif (currentChat) {\n\t\t\tcurrentChat.messages = messageList\n\t\t\tcurrentChat.time = new Date()\n\t\t}\n\t\tsaveToLocalStorage()\n\t}\n}\n\n// 菜单控制\nconst resetAllMenus = () => {\n\tObject.keys(state.actionMenuVisible).forEach(key => {\n\t\tstate.actionMenuVisible[key] = false\n\t})\n}\n\nconst handleRenameChat = (id: string, newTitle: string) => {\n\tconst item = state.chatHistory.find(item => item.id === id)\n\tif (item) {\n\t\titem.title = newTitle\n\t\titem.time = new Date()\n\t\tsaveToLocalStorage()\n\t}\n}\n\n// 监听聊天历史变化,自动保存\nwatch(\n\t() => state.chatHistory,\n\t() => {\n\t\tsaveToLocalStorage()\n\t},\n\t{ deep: true }\n)\ndefineExpose({\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\n\t\tchatComponent.value?.send(value, fileList, auto, type)\n\t},\n\tcloseExtend: () => {\n\t\tstate.toggleSidebarFlag = false\n\t},\n\tcreate: () => {\n\t\t// startNewChat()\n\t\tconst newChat = createNewChat('新对话' + (state.chatHistory.length + 1))\n\t\tstate.activeChat = newChat.id\n\t\tchange('')\n\t},\n\tretry: (index: number) => {\n\t\tchatComponent.value?.retry(index)\n\t},\n\tupdate: (index: number, message: object) => {\n\t\tchatComponent.value?.update(index, message)\n\t},\n\tchangeChat: (index: number) => {\n\t\tchangeChatHistory(index)\n\t},\n\tclearChat: () => {\n\t\tclearChatHistory()\n\t}\n})\n</script>\n"],"names":["reactive","ref","inject","watch","provide","computed","onMounted","messageItem","newChat","item","_createElementBlock","_createElementVNode","_createBlock","HistorySidebar","TouchChat","_unref","_withCtx","_renderSlot","_Fragment","_createCommentVNode","TouchAgent","_createVNode","SiderBarView","_vShow"],"mappings":"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"}
1
+ {"version":3,"file":"TouchHistory.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/TouchHistory.vue"],"sourcesContent":["<template>\r\n\t<div class=\"touchchat\">\r\n\t\t<div v-if=\"state.isSidebarCollapsed && !isNotHeader\" class=\"touchchat-header\">\r\n\t\t\t<div class=\"touchchat-showmenu\" @click.stop=\"toggleSidebar\">\r\n\t\t\t\t<div class=\"touchchat-showmenu-icon\"></div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"touchchat-add-lite\" @click.stop=\"startNewChat\">\r\n\t\t\t\t<div class=\"touchchat-add-lite-icon\"></div>\r\n\t\t\t\t<span>新对话</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"touchchat-content\">\r\n\t\t\t<HistorySidebar v-if=\"!isNotHeader && !state.isSidebarCollapsed\" :is-sidebar-collapsed=\"state.isSidebarCollapsed\" :active-chat=\"state.activeChat\" :chat-history=\"state.chatHistory\" @toggle-sidebar=\"toggleSidebar\" @start-new-chat=\"startNewChat\" @select-chat=\"selectChat\" @rename-chat=\"handleRenameChat\" @delete-chat=\"deleteChat\"> </HistorySidebar>\r\n\t\t\t<TouchChat v-if=\"!iIsAgent\" ref=\"chatComponent\" :key=\"state.activeChat + '-chat'\" :value=\"currentChatMessages\" @send-message=\"sendMessage\" @toggle-sidebar=\"toggleSidebarOut\" @before-send-message=\"beforeSendMessage\" @open-side-bar=\"openSideBar\">\r\n\t\t\t\t<template #aimsg=\"{ item, index }\">\r\n\t\t\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #msg=\"{ item, index }\">\r\n\t\t\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #aiAvatar>\r\n\t\t\t\t\t<slot name=\"aiAvatar\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #userAvatar>\r\n\t\t\t\t\t<slot name=\"userAvatar\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #welcome>\r\n\t\t\t\t\t<slot name=\"welcome\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #edit>\r\n\t\t\t\t\t<slot name=\"edit\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #shortcut>\r\n\t\t\t\t\t<slot name=\"shortcut\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #top>\r\n\t\t\t\t\t<slot name=\"top\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #fn=\"{ item, index }\">\r\n\t\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #extendsFn=\"{ item, index }\">\r\n\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #editTop>\r\n\t\t\t\t\t<slot name=\"editTop\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #editFn>\r\n\t\t\t\t\t<slot name=\"editFn\"></slot>\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #editSubmitRight>\r\n\t\t\t\t\t<slot name=\"editSubmitRight\"></slot>\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #editSubmitLeft>\r\n\t\t\t\t\t<slot name=\"editSubmitLeft\"></slot>\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #mayLike=\"{ item, index }\">\r\n\t\t\t\t\t<slot name=\"mayLike\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t</template>\r\n\t\t\t</TouchChat>\r\n\t\t\t<!-- :key=\"state.activeChat\" -->\r\n\t\t\t<TouchAgent v-else ref=\"chatComponent\" :key=\"state.activeChat + '-agent'\" :value=\"currentChatMessages\" @send-message=\"sendMessage\" @toggle-sidebar=\"toggleSidebarOut\" @before-send-message=\"beforeSendMessage\">\r\n\t\t\t\t<template #aimsg=\"{ item, index }\">\r\n\t\t\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #msg=\"{ item, index }\">\r\n\t\t\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #aiAvatar>\r\n\t\t\t\t\t<slot name=\"aiAvatar\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #userAvatar>\r\n\t\t\t\t\t<slot name=\"userAvatar\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #welcome>\r\n\t\t\t\t\t<slot name=\"welcome\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #edit>\r\n\t\t\t\t\t<slot name=\"edit\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #shortcut>\r\n\t\t\t\t\t<slot name=\"shortcut\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #top>\r\n\t\t\t\t\t<slot name=\"top\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #fn=\"{ item, index }\">\r\n\t\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #extendsFn=\"{ item, index }\">\r\n\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t</template>\r\n\t\t\t</TouchAgent>\r\n\t\t\t<SiderBarView v-show=\"state.toggleSidebarFlag\" :flag=\"state.isSidebarCollapsed\" :item=\"messageItem\" :index=\"messageIndex\">\r\n\t\t\t\t<template #extend=\"{ item: slotMessageItem, index: slotMessageIndex }\">\r\n\t\t\t\t\t<slot name=\"extend\" :item=\"slotMessageItem\" :index=\"slotMessageIndex\" />\r\n\t\t\t\t</template>\r\n\t\t\t</SiderBarView>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { onMounted, computed, watch, reactive, inject, ref, provide, Ref } from 'vue'\r\nimport TouchChat from './TouchChat.vue'\r\nimport TouchAgent from './TouchAgent.vue'\r\nimport HistorySidebar from './HistorySidebar.vue'\r\nimport SiderBarView from './SiderBarView.vue'\r\nimport type { ChatMessage, ChatMsgList } from './Chat/types'\r\nimport type { AgentConfig, SubAgent } from '../types/a2a'\r\n\r\ninterface HistoryItem {\r\n\tid: string\r\n\ttitle: string\r\n\ttime: Date\r\n\ttype: string // 用于区分不同类型的对话\r\n\tmessages?: ChatMessage[]\r\n}\r\n\r\ninterface Agent {\r\n\tid: string\r\n\tname: string\r\n\tintro: string\r\n}\r\n\r\ntype ResultArray = AgentConfig[] | SubAgent[]\r\n\r\ninterface MultiAgentInfo {\r\n\tlist: ResultArray\r\n\turl?: string\r\n\theaders?: object\r\n}\r\n\r\n// 状态管理\r\nconst state = reactive({\r\n\tactiveChat: '',\r\n\tchatHistory: [] as HistoryItem[],\r\n\tisSidebarCollapsed: false,\r\n\tactionMenuVisible: {} as Record<string, boolean>,\r\n\tmockMessages: [] as ChatMessage[],\r\n\ttoggleSidebarFlag: false,\r\n\tagentsType: '',\r\n\tclickCreateNum: 0\r\n})\r\n\r\nconst watchHistoryData = ref<HistoryItem[]>([])\r\nconst watchHistoryDetail = ref<ChatMessage[]>([])\r\nconst chatComponent = ref<InstanceType<typeof TouchChat>>()\r\n\r\nconst layout = inject<string>('layout', 'side, think, upload, chain')\r\nconst isNotHeader = !layout.includes('side')\r\nconst scripts = inject<Ref<any[]>>('scripts', ref([]))\r\nconst agents = inject<Agent[]>('agents', [])\r\nconst agentsInfo = ref<Agent>()\r\nconst agentInfo = inject<Ref<MultiAgentInfo>>('agentInfo', ref({ list: [], url: '', headers: {} }))\r\nconst iIsAgent = ref(false)\r\nwatch(\r\n\tagentInfo,\r\n\tnewVal => {\r\n\t\tiIsAgent.value = newVal.list.length > 0\r\n\t},\r\n\t{ immediate: true, deep: true }\r\n)\r\n// 提供更新函数给后代组件\r\nconst updateSharedData = (item: Agent) => {\r\n\tagentsInfo.value = item\r\n\tif (chatComponent.value) {\r\n\t\tchatComponent.value?.handleAgentSelect?.(item)\r\n\t}\r\n}\r\nprovide('updateSharedData', updateSharedData)\r\n// 本地存储相关\r\nconst STORAGE_KEYS = {\r\n\tCHAT_HISTORY: scripts.value.length === 0 ? 'chatHistory' : 'robotHistory',\r\n\tSIDEBAR_STATE: 'sidebarCollapsed'\r\n}\r\nconst saveToLocalStorage = () => {\r\n\tlocalStorage.setItem(STORAGE_KEYS.CHAT_HISTORY, JSON.stringify(state.chatHistory))\r\n\tlocalStorage.setItem(STORAGE_KEYS.SIDEBAR_STATE, JSON.stringify(state.isSidebarCollapsed))\r\n}\r\n// 聊天管理\r\nconst createNewChat = (title: string = '新对话', messageList: ChatMessage[] = [], type?: string) => {\r\n\tlet agentsId = ''\r\n\tif (agents.length > 0) {\r\n\t\tagentsId = agents.find(item => item.name === title)?.id || ''\r\n\t}\r\n\tconst newChat: HistoryItem = {\r\n\t\t// id: Date.now().toString(),\r\n\t\tid: agentsId ? agentsId : (Math.floor(Math.random() * 89999999) + 10000000).toString(),\r\n\t\ttitle,\r\n\t\ttime: new Date(),\r\n\t\tmessages: messageList,\r\n\t\ttype: type ? type : ''\r\n\t}\r\n\r\n\tstate.chatHistory.unshift(newChat)\r\n\tsaveToLocalStorage()\r\n\treturn newChat\r\n}\r\n\r\nconst loadFromLocalStorage = () => {\r\n\t// 加载折叠状态\r\n\tconst savedCollapseState = localStorage.getItem(STORAGE_KEYS.SIDEBAR_STATE)\r\n\tif (savedCollapseState) {\r\n\t\tstate.isSidebarCollapsed = JSON.parse(savedCollapseState)\r\n\t}\r\n\r\n\tif (scripts.value.length > 0) {\r\n\t\tlocalStorage.setItem(STORAGE_KEYS.CHAT_HISTORY, '[]')\r\n\t\tlocalStorage.setItem('activeAgentsName', '')\r\n\t}\r\n\r\n\t// 加载聊天历史\r\n\tconst savedHistory = localStorage.getItem(STORAGE_KEYS.CHAT_HISTORY)\r\n\tconst historyData = JSON.parse(savedHistory || '[]')\r\n\tif (agents.length > 0 && !historyData.length) {\r\n\t\tagents.forEach(item => {\r\n\t\t\tconst agentsList = [\r\n\t\t\t\t{\r\n\t\t\t\t\tchatId: item.id,\r\n\t\t\t\t\tuser: 'ai',\r\n\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\tisShowLike: true,\r\n\t\t\t\t\tcontent: item?.intro || '我是AI助手,我可以回答你的问题,你可以和我聊天,也可以问我问题。',\r\n\t\t\t\t\tmsgList: []\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t\tcreateNewChat(item.name, agentsList, item.name)\r\n\t\t})\r\n\t}\r\n\tif (watchHistoryData.value.length > 0) {\r\n\t\tstate.chatHistory = watchHistoryData.value\r\n\t\t// if (state.chatHistory.length > 0) {\r\n\t\t// \tstate.activeChat = state.chatHistory[0].id\r\n\t\t// }\r\n\t} else if (historyData.length > 0) {\r\n\t\tstate.chatHistory = historyData\r\n\t\t// if (state.chatHistory.length > 0) {\r\n\t\t// \tstate.activeChat = state.chatHistory[0].id\r\n\t\t// }\r\n\t}\r\n\t// else {\r\n\t// \t// 初始化默认对话\r\n\t// \tconst newChat = createNewChat('AI基础问答')\r\n\t// \tstate.activeChat = newChat.id\r\n\t// }\r\n\t// 首次进入时若已有会话但未选中,需选中一个会话,避免首条消息发送时 activeChat 从空变为有值\r\n\t// 触发 TouchChat 的 :key 变化导致整组件重建,剧本里连续多条 AI 回复(如 222→333)被中断。\r\n\t// createNewChat 使用 unshift,数组顺序与 agents 遍历顺序相反,故有多智能体时默认选 agents[0] 对应会话,而不是 chatHistory[0]。\r\n\tif (!state.activeChat && state.chatHistory.length > 0) {\r\n\t\tif (agents.length > 0) {\r\n\t\t\tconst firstId = agents[0].id\r\n\t\t\tstate.activeChat = state.chatHistory.find(h => h.id === firstId)?.id ?? state.chatHistory[state.chatHistory.length - 1].id\r\n\t\t} else {\r\n\t\t\tstate.activeChat = state.chatHistory[0].id\r\n\t\t}\r\n\t}\r\n\t// 仅有剧本、未传 agents、且没有任何会话:先建一条空会话并选中。\r\n\t// 否则首条消息会在 sendMessage 里首次给 activeChat 赋值,TouchChat 的 :key 变化导致整组件重建,连续多条 AI 剧本会丢后半段。\r\n\tif (scripts.value.length > 0 && agents.length === 0 && state.chatHistory.length === 0) {\r\n\t\tconst seeded = createNewChat('对话')\r\n\t\tstate.activeChat = seeded.id\r\n\t}\r\n}\r\n\r\nconst historyList = inject<any>('historyList', [])\r\nconst setHistoryData = ref(Array.isArray(historyList) ? historyList : typeof historyList === 'object' && historyList ? historyList : [])\r\nconst computedHistoryData = computed(() => {\r\n\tif (setHistoryData.value.length) {\r\n\t\treturn setHistoryData.value\r\n\t}\r\n\treturn []\r\n})\r\nwatch(\r\n\tcomputedHistoryData,\r\n\tnewVal => {\r\n\t\twatchHistoryData.value = newVal\r\n\t\tstate.chatHistory = newVal\r\n\t\tloadFromLocalStorage()\r\n\t},\r\n\t{ immediate: true }\r\n)\r\nconst historyDetail = inject<ChatMessage[]>('historyDetail', [])\r\nconst setMessageDetail = ref(Array.isArray(historyDetail) ? historyDetail : typeof historyDetail === 'object' && historyDetail ? historyDetail : [])\r\nconst computedHistoryDetail = computed(() => {\r\n\tif (setMessageDetail.value.length) {\r\n\t\treturn setMessageDetail.value\r\n\t}\r\n\treturn []\r\n})\r\nwatch(\r\n\tcomputedHistoryDetail,\r\n\tnewVal => {\r\n\t\twatchHistoryDetail.value = newVal\r\n\t},\r\n\t{ immediate: true }\r\n)\r\nconst messageItem = ref<ChatMessage>({ user: 'u', type: '', content: '', msgList: [] })\r\nconst messageIndex = ref<number>(0)\r\n\r\n// 修改currentChatMessages计算属性\r\nconst currentChatMessages = computed(() => {\r\n\tif (watchHistoryDetail.value.length) {\r\n\t\treturn watchHistoryDetail.value\r\n\t}\r\n\tif (!state.activeChat) return []\r\n\tif ((!watchHistoryDetail.value.length && !watchHistoryData.value.length) || watchHistoryData.value.length) {\r\n\t\tconst currentChat = state.chatHistory.find(item => item.id === state.activeChat)\r\n\t\treturn currentChat?.messages || []\r\n\t} else {\r\n\t\treturn watchHistoryDetail.value\r\n\t}\r\n})\r\n\r\nwatch(\r\n\t() => {\r\n\t\tif (typeof historyList === 'object' && historyList !== undefined) {\r\n\t\t\treturn historyList\r\n\t\t}\r\n\t\treturn historyList\r\n\t},\r\n\tnewVal => {\r\n\t\tif (newVal && Array.isArray(newVal) && newVal.length) {\r\n\t\t\twatchHistoryData.value = newVal\r\n\t\t\t// loadFromLocalStorage()\r\n\t\t\tif (!scripts.value.length) {\r\n\t\t\t\tstate.chatHistory = newVal\r\n\t\t\t\tif (state.chatHistory.length > 0 && !state.activeChat) {\r\n\t\t\t\t\tstate.activeChat = state.chatHistory[0].id\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t{ deep: true }\r\n)\r\n\r\nwatch(\r\n\t() => {\r\n\t\tif (typeof historyDetail === 'object' && historyDetail !== undefined) {\r\n\t\t\treturn historyDetail\r\n\t\t}\r\n\t\treturn historyDetail\r\n\t},\r\n\tnewVal => {\r\n\t\tif (newVal && Array.isArray(newVal)) {\r\n\t\t\twatchHistoryDetail.value = JSON.parse(JSON.stringify(newVal))\r\n\t\t\tif (chatComponent.value) {\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tchatComponent.value?.$forceUpdate?.()\r\n\t\t\t\t}, 0)\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t{ deep: true, immediate: true }\r\n)\r\n\r\n// 生命周期\r\nonMounted(() => {\r\n\tloadFromLocalStorage()\r\n\t// 初始化事件监听\r\n\t// initEventListeners()\r\n})\r\n\r\n// 事件监听\r\n// function initEventListeners() {\r\n// \tdocument.addEventListener('click', () => {\r\n// \t\t// 点击空白处关闭所有菜单\r\n// \t\tObject.keys(state.actionMenuVisible).forEach(key => {\r\n// \t\t\tstate.actionMenuVisible[key] = false\r\n// \t\t})\r\n// \t})\r\n// }\r\n\r\nconst toggleSidebarOut = (item: ChatMessage, index: number) => {\r\n\tmessageItem.value = item\r\n\tmessageIndex.value = index\r\n\tif (state.toggleSidebarFlag) {\r\n\t\treturn\r\n\t}\r\n\tstate.toggleSidebarFlag = true\r\n\tstate.isSidebarCollapsed = false\r\n\ttoggleSidebar()\r\n}\r\n\r\n// 侧边栏控制\r\nconst toggleSidebar = () => {\r\n\tstate.isSidebarCollapsed = !state.isSidebarCollapsed\r\n\tsaveToLocalStorage()\r\n}\r\n\r\nconst startNewChat = () => {\r\n\tlocalStorage.setItem('activeAgentsName', '')\r\n\tconst robotHistory = localStorage.getItem(STORAGE_KEYS.CHAT_HISTORY) || '[]'\r\n\tconst robotHistoryData = JSON.parse(robotHistory)\r\n\tlet messageList: ChatMessage[] = []\r\n\tlet messageItem: HistoryItem = {} as HistoryItem\r\n\tlet firstMessageList: ChatMessage[] = []\r\n\tif (robotHistoryData.length) {\r\n\t\tmessageItem = robotHistoryData.find((item: HistoryItem) => item.id === state.activeChat) || ({} as HistoryItem)\r\n\t\tmessageList = messageItem?.messages || []\r\n\t\tfirstMessageList = robotHistoryData?.[0]?.messages || ([] as ChatMessage[])\r\n\t}\r\n\tstate.toggleSidebarFlag = false\r\n\tif ((watchHistoryData.value.length > 0 && firstMessageList.length > 0 && (watchHistoryDetail.value.length > 0 || currentChatMessages.value.length > 0 || messageList.length > 0)) || (!messageItem?.messages && firstMessageList.length > 0) || !state.clickCreateNum) {\r\n\t\tconst newChat = createNewChat('新对话' + (state.chatHistory.length + 1))\r\n\t\tstate.activeChat = newChat.id\r\n\t\tchange('')\r\n\t\tstate.clickCreateNum++\r\n\t\treturn\r\n\t}\r\n\tif (state.chatHistory.length > 0 && !state.chatHistory?.[0]?.messages?.length) {\r\n\t\tstate.activeChat = state.chatHistory[0].id\r\n\t\tchange('')\r\n\t\treturn\r\n\t}\r\n\tif (!currentChatMessages.value.length && state.chatHistory.length > 0) {\r\n\t\tstate.activeChat = state.chatHistory?.[0]?.id ?? ''\r\n\t\tchange('')\r\n\t\treturn\r\n\t}\r\n\tconst newChat = createNewChat('新对话' + (state.chatHistory.length + 1))\r\n\tstate.activeChat = newChat.id\r\n\tchange('')\r\n}\r\n\r\nconst change = inject<(id: string) => void>('change', () => {\r\n\tconsole.warn('未提供change函数')\r\n})\r\n\r\nconst changeChatHistory = (index: number) => {\r\n\tstate.activeChat = state.chatHistory[index].id\r\n\tchange(state.chatHistory[index].id)\r\n}\r\n\r\nconst clearChatHistory = () => {\r\n\tstate.chatHistory = []\r\n\tstate.activeChat = ''\r\n\tlocalStorage.setItem(STORAGE_KEYS.CHAT_HISTORY, JSON.stringify([]))\r\n}\r\n\r\nconst selectChat = (id: string, type?: string) => {\r\n\tstate.activeChat = id\r\n\tstate.toggleSidebarFlag = false\r\n\tstate.agentsType = type as string\r\n\tif (!type) {\r\n\t\tlocalStorage.setItem('activeAgentsName', '')\r\n\t}\r\n\tchange(id)\r\n\tresetAllMenus()\r\n}\r\n\r\nconst historyRemove = inject<(id: string) => void>('historyRemove', () => {\r\n\tconsole.warn('未提供remove函数')\r\n})\r\nconst openSideBar = inject<(item: ChatMessage & ChatMsgList, index: number) => void>('openSideBar', () => {})\r\n\r\nconst deleteChat = (id: string) => {\r\n\tconst index = state.chatHistory.findIndex(item => item.id === id)\r\n\tif (index === -1) return\r\n\r\n\tstate.chatHistory.splice(index, 1)\r\n\r\n\tif (state.chatHistory.length > 0) {\r\n\t\tselectChat(state.chatHistory[0].id)\r\n\t} else {\r\n\t\tstate.activeChat = ''\r\n\t\tstate.mockMessages = []\r\n\t}\r\n\thistoryRemove(id)\r\n\tsaveToLocalStorage()\r\n}\r\n\r\nconst beforeSendMessage = () => {\r\n\tstate.toggleSidebarFlag = false\r\n}\r\n\r\nconst sendMessage = (messageList: ChatMessage[], type?: string) => {\r\n\tstate.mockMessages = messageList\r\n\r\n\tif (type) {\r\n\t\treturn\r\n\t}\r\n\r\n\tif (!state.activeChat) {\r\n\t\tconst newChat = createNewChat('AI基础问答', messageList)\r\n\t\tnewChat.messages = messageList\r\n\t\tstate.activeChat = newChat.id\r\n\t} else {\r\n\t\tconst currentChat = state.chatHistory.find(item => item.id === state.activeChat)\r\n\t\tif (currentChat) {\r\n\t\t\tcurrentChat.messages = messageList\r\n\t\t\tcurrentChat.time = new Date()\r\n\t\t}\r\n\t\tsaveToLocalStorage()\r\n\t}\r\n}\r\n\r\n// 菜单控制\r\nconst resetAllMenus = () => {\r\n\tObject.keys(state.actionMenuVisible).forEach(key => {\r\n\t\tstate.actionMenuVisible[key] = false\r\n\t})\r\n}\r\n\r\nconst handleRenameChat = (id: string, newTitle: string) => {\r\n\tconst item = state.chatHistory.find(item => item.id === id)\r\n\tif (item) {\r\n\t\titem.title = newTitle\r\n\t\titem.time = new Date()\r\n\t\tsaveToLocalStorage()\r\n\t}\r\n}\r\n\r\n// 监听聊天历史变化,自动保存\r\nwatch(\r\n\t() => state.chatHistory,\r\n\t() => {\r\n\t\tsaveToLocalStorage()\r\n\t},\r\n\t{ deep: true }\r\n)\r\ndefineExpose({\r\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\r\n\t\tchatComponent.value?.send(value, fileList, auto, type)\r\n\t},\r\n\tcloseExtend: () => {\r\n\t\tstate.toggleSidebarFlag = false\r\n\t},\r\n\tcreate: () => {\r\n\t\t// startNewChat()\r\n\t\tconst newChat = createNewChat('新对话' + (state.chatHistory.length + 1))\r\n\t\tstate.activeChat = newChat.id\r\n\t\tchange('')\r\n\t},\r\n\tretry: (index: number) => {\r\n\t\tchatComponent.value?.retry(index)\r\n\t},\r\n\tupdate: (index: number, message: object) => {\r\n\t\tchatComponent.value?.update(index, message)\r\n\t},\r\n\tchangeChat: (index: number) => {\r\n\t\tchangeChatHistory(index)\r\n\t},\r\n\tclearChat: () => {\r\n\t\tclearChatHistory()\r\n\t}\r\n})\r\n</script>\r\n"],"names":["reactive","ref","inject","watch","provide","computed","onMounted","messageItem","newChat","item","_createElementBlock","_createElementVNode","_createBlock","HistorySidebar","TouchChat","_unref","_withCtx","_renderSlot","_Fragment","_createCommentVNode","TouchAgent","_createVNode","SiderBarView","_vShow"],"mappings":"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"}
@@ -4,9 +4,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var vue = require('vue');
6
6
  var MessageActions = require('./MessageActions.vue.js');
7
+ var AudioFile = require('../../component/AudioFile.vue.js');
7
8
  var markdown = require('../../utils/markdown.js');
8
9
  var userAvatar = require('../../img/userAvatar.png.js');
9
10
  var FileContent = require('../../component/FileContent.vue.js');
11
+ var QuoteContent = require('../../component/QuoteContent.vue.js');
10
12
 
11
13
  var _sfc_main = /* @__PURE__ */ vue.defineComponent({
12
14
  __name: "UserMessage",
@@ -73,22 +75,22 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
73
75
  emits("user-message-file-list", item, index);
74
76
  };
75
77
  return (_ctx, _cache) => {
76
- var _a, _b, _c, _d, _e, _f, _g;
78
+ var _a, _b, _c, _d, _e, _f, _g, _h;
77
79
  return vue.openBlock(), vue.createElementBlock(
78
80
  vue.Fragment,
79
81
  null,
80
82
  [
81
83
  vue.createCommentVNode(' v-if="item.content" '),
82
- !_ctx.item.auto ? (vue.openBlock(), vue.createElementBlock("div", {
84
+ !__props.item.auto ? (vue.openBlock(), vue.createElementBlock("div", {
83
85
  key: 0,
84
86
  class: "touchchat-user touchchat-item",
85
- "data-chat-id": _ctx.item.chatId
87
+ "data-chat-id": __props.item.chatId
86
88
  }, [
87
89
  vue.createCommentVNode(" \u5934\u50CF\u533A\u57DF "),
88
90
  vue.createElementVNode(
89
91
  "div",
90
92
  {
91
- class: vue.normalizeClass(["touchchat-user-avatar", ((_b = (_a = _ctx.item) == null ? void 0 : _a.files) == null ? void 0 : _b.length) && _ctx.item.content ? "file-user-avatar" : ""])
93
+ class: vue.normalizeClass(["touchchat-user-avatar", ((_b = (_a = __props.item) == null ? void 0 : _a.files) == null ? void 0 : _b.length) && __props.item.content ? "file-user-avatar" : ""])
92
94
  },
93
95
  [
94
96
  vue.renderSlot(_ctx.$slots, "userAvatar", {}, () => [
@@ -103,50 +105,26 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
103
105
  /* CLASS */
104
106
  ),
105
107
  vue.createCommentVNode(" \u5185\u5BB9\u533A\u57DF "),
108
+ vue.createCommentVNode(' <MessageViewed :value="70"></MessageViewed> '),
106
109
  vue.createElementVNode("div", { class: "touchchat-user-content" }, [
107
- vue.createCommentVNode(" <div>{{item}}</div> hasColse "),
108
- ((_d = (_c = _ctx.item) == null ? void 0 : _c.files) == null ? void 0 : _d.length) ? (vue.openBlock(), vue.createBlock(FileContent.default, {
109
- key: 0,
110
- "file-list": _ctx.item.files,
111
- "has-colse": false,
112
- type: "UserMessage",
113
- onUserMessageFileList: userMessageFileList
114
- }, null, 8, ["file-list"])) : vue.createCommentVNode("v-if", true),
115
- vue.createCommentVNode(" \u6C14\u6CE1 "),
116
- !_ctx.item.isWithDraw && !_ctx.item.isEditing && (_ctx.item.content || ((_f = (_e = _ctx.item) == null ? void 0 : _e.files) == null ? void 0 : _f.length)) ? (vue.openBlock(), vue.createElementBlock(
110
+ vue.createCommentVNode(" \u8BED\u97F3\u6D88\u606F\u7C7B\u578B - \u76F4\u63A5\u663E\u793A\uFF0C\u4E0D\u663E\u793A\u6587\u4EF6\u548C\u6587\u672C\u6C14\u6CE1 "),
111
+ __props.item.type === "voice" && ((_c = __props.item.files) == null ? void 0 : _c.length) ? (vue.openBlock(), vue.createElementBlock(
117
112
  vue.Fragment,
118
- { key: 1 },
113
+ { key: 0 },
119
114
  [
120
- _ctx.item.content ? (vue.openBlock(), vue.createElementBlock("div", {
121
- key: 0,
122
- class: "touch-user-wrapper"
123
- }, [
124
- vue.unref(hasRead) ? (vue.openBlock(), vue.createElementBlock(
125
- "div",
126
- {
127
- key: 0,
128
- class: vue.normalizeClass(["touchchat-action-item value-read no-hover", { "is-read": (_g = _ctx.item) == null ? void 0 : _g.isRead }])
129
- },
130
- null,
131
- 2
132
- /* CLASS */
133
- )) : vue.createCommentVNode("v-if", true),
134
- vue.createElementVNode("div", { class: "touchchat-user-bubble" }, [
135
- vue.createElementVNode("div", {
136
- ref: setHtmlContentRef,
137
- class: "touchchat-user-bubble-text"
138
- })
139
- ])
140
- ])) : vue.createCommentVNode("v-if", true),
141
- vue.createCommentVNode(' v-if="!scripts.length" '),
115
+ vue.createVNode(AudioFile.default, {
116
+ item: __props.item.files[0],
117
+ index: 0
118
+ }, null, 8, ["item"]),
119
+ vue.createCommentVNode(" \u8BED\u97F3\u6D88\u606F\u7684\u64CD\u4F5C\u6309\u94AE "),
142
120
  vue.renderSlot(_ctx.$slots, "fn", {
143
- item: _ctx.item,
144
- index: _ctx.index
121
+ item: __props.item,
122
+ index: __props.index
145
123
  }, () => [
146
124
  vue.createVNode(MessageActions.default, {
147
- item: _ctx.item,
125
+ item: __props.item,
148
126
  "message-type": "user",
149
- index: _ctx.index,
127
+ index: __props.index,
150
128
  "show-copy": true,
151
129
  onCopy,
152
130
  onEdit,
@@ -155,52 +133,126 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
155
133
  }, {
156
134
  extendsFn: vue.withCtx(() => [
157
135
  vue.renderSlot(_ctx.$slots, "extendsFn", {
158
- item: _ctx.item,
159
- index: _ctx.index
136
+ item: __props.item,
137
+ index: __props.index
160
138
  })
161
139
  ]),
162
140
  _: 3
163
141
  /* FORWARDED */
164
142
  }, 8, ["item", "index"])
165
- ]),
166
- vue.createCommentVNode(' <slot name="fn" :item="item" :index="index">\n <MessageActions v-show="!item.isChating" :item="item" message-type="ai" :index="index" :has-retry="hasRetry" :show-copy="true" @copy="onCopy" @retry="onRetry" @like="onLike" @dislike="onDislike">\n <template #extendsFn>\n <slot name="extendsFn" :item="item" :index="index" />\n </template>\n </MessageActions>\n </slot> ')
143
+ ])
167
144
  ],
168
145
  64
169
146
  /* STABLE_FRAGMENT */
170
- )) : _ctx.item.isEditing && _ctx.item.content ? (vue.openBlock(), vue.createElementBlock(
147
+ )) : (vue.openBlock(), vue.createElementBlock(
171
148
  vue.Fragment,
172
- { key: 2 },
149
+ { key: 1 },
173
150
  [
174
- vue.createCommentVNode(" \u7F16\u8F91\u533A\u57DF "),
175
- vue.createElementVNode("div", { class: "touchchat-user-edit" }, [
176
- vue.createElementVNode("div", { class: "touchchat-user-edit-input" }, [
177
- vue.withDirectives(vue.createElementVNode("textarea", {
178
- "onUpdate:modelValue": ($event) => localEditContent.value = $event,
179
- placeholder: "\u8BF7\u8F93\u5165\u6D88\u606F\u5185\u5BB9..."
180
- }, null, 8, ["onUpdate:modelValue"]), [
181
- [vue.vModelText, localEditContent.value]
182
- ])
183
- ]),
184
- vue.createElementVNode("div", { class: "touchchat-user-edit-submit" }, [
185
- vue.createElementVNode("button", {
186
- class: "touchchat-user-cancel",
187
- onClick: onCancelEdit
151
+ vue.createCommentVNode(" \u6587\u4EF6\u9644\u4EF6 "),
152
+ ((_e = (_d = __props.item) == null ? void 0 : _d.files) == null ? void 0 : _e.length) ? (vue.openBlock(), vue.createBlock(FileContent.default, {
153
+ key: 0,
154
+ "file-list": __props.item.files,
155
+ "has-colse": false,
156
+ type: "UserMessage",
157
+ onUserMessageFileList: userMessageFileList
158
+ }, null, 8, ["file-list"])) : vue.createCommentVNode("v-if", true),
159
+ vue.createCommentVNode(" \u6587\u672C\u6C14\u6CE1 "),
160
+ !__props.item.isWithDraw && !__props.item.isEditing && (__props.item.content || ((_g = (_f = __props.item) == null ? void 0 : _f.files) == null ? void 0 : _g.length)) ? (vue.openBlock(), vue.createElementBlock(
161
+ vue.Fragment,
162
+ { key: 1 },
163
+ [
164
+ __props.item.content ? (vue.openBlock(), vue.createElementBlock("div", {
165
+ key: 0,
166
+ class: "touchchat-user-wrapper"
188
167
  }, [
189
- vue.createElementVNode("span", { class: "touchchat-user-cancel-text" }, "\u53D6\u6D88")
168
+ vue.unref(hasRead) ? (vue.openBlock(), vue.createElementBlock(
169
+ "div",
170
+ {
171
+ key: 0,
172
+ class: vue.normalizeClass(["touchchat-action-item value-read no-hover", { "is-read": (_h = __props.item) == null ? void 0 : _h.isRead }])
173
+ },
174
+ null,
175
+ 2
176
+ /* CLASS */
177
+ )) : vue.createCommentVNode("v-if", true),
178
+ vue.createElementVNode("div", { class: "touchchat-user-bubble" }, [
179
+ vue.createElementVNode("div", {
180
+ ref: setHtmlContentRef,
181
+ class: "touchchat-user-bubble-text"
182
+ })
183
+ ])
184
+ ])) : vue.createCommentVNode("v-if", true),
185
+ vue.createCommentVNode(' v-if="!scripts.length" '),
186
+ vue.renderSlot(_ctx.$slots, "fn", {
187
+ item: __props.item,
188
+ index: __props.index
189
+ }, () => [
190
+ vue.createVNode(MessageActions.default, {
191
+ item: __props.item,
192
+ "message-type": "user",
193
+ index: __props.index,
194
+ "show-copy": true,
195
+ onCopy,
196
+ onEdit,
197
+ onDelete,
198
+ onWithDraw: onWithdraw
199
+ }, {
200
+ extendsFn: vue.withCtx(() => [
201
+ vue.renderSlot(_ctx.$slots, "extendsFn", {
202
+ item: __props.item,
203
+ index: __props.index
204
+ })
205
+ ]),
206
+ _: 3
207
+ /* FORWARDED */
208
+ }, 8, ["item", "index"])
190
209
  ]),
191
- vue.createElementVNode("button", {
192
- class: "touchchat-user-send",
193
- disabled: !localEditContent.value.trim(),
194
- onClick: onSaveEdit
195
- }, [
196
- vue.createElementVNode("span", { class: "touchchat-user-send-text" }, "\u53D1\u9001")
197
- ], 8, ["disabled"])
198
- ])
199
- ])
210
+ vue.createCommentVNode(' <slot name="fn" :item="item" :index="index">\r\n <MessageActions v-show="!item.isChating" :item="item" message-type="ai" :index="index" :has-retry="hasRetry" :show-copy="true" @copy="onCopy" @retry="onRetry" @like="onLike" @dislike="onDislike">\r\n <template #extendsFn>\r\n <slot name="extendsFn" :item="item" :index="index" />\r\n </template>\r\n </MessageActions>\r\n </slot> ')
211
+ ],
212
+ 64
213
+ /* STABLE_FRAGMENT */
214
+ )) : __props.item.isEditing && __props.item.content ? (vue.openBlock(), vue.createElementBlock(
215
+ vue.Fragment,
216
+ { key: 2 },
217
+ [
218
+ vue.createCommentVNode(" \u7F16\u8F91\u533A\u57DF "),
219
+ vue.createElementVNode("div", { class: "touchchat-user-edit" }, [
220
+ vue.createElementVNode("div", { class: "touchchat-user-edit-input" }, [
221
+ vue.withDirectives(vue.createElementVNode("textarea", {
222
+ "onUpdate:modelValue": ($event) => localEditContent.value = $event,
223
+ placeholder: "\u8BF7\u8F93\u5165\u6D88\u606F\u5185\u5BB9..."
224
+ }, null, 8, ["onUpdate:modelValue"]), [
225
+ [vue.vModelText, localEditContent.value]
226
+ ])
227
+ ]),
228
+ vue.createElementVNode("div", { class: "touchchat-user-edit-submit" }, [
229
+ vue.createElementVNode("button", {
230
+ class: "touchchat-user-cancel",
231
+ onClick: onCancelEdit
232
+ }, [
233
+ vue.createElementVNode("span", { class: "touchchat-user-cancel-text" }, "\u53D6\u6D88")
234
+ ]),
235
+ vue.createElementVNode("button", {
236
+ class: "touchchat-user-send",
237
+ disabled: !localEditContent.value.trim(),
238
+ onClick: onSaveEdit
239
+ }, [
240
+ vue.createElementVNode("span", { class: "touchchat-user-send-text" }, "\u53D1\u9001")
241
+ ], 8, ["disabled"])
242
+ ])
243
+ ])
244
+ ],
245
+ 2112
246
+ /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
247
+ )) : vue.createCommentVNode("v-if", true),
248
+ __props.item.quoteData && __props.item.quoteData.quoteObj ? (vue.openBlock(), vue.createBlock(QuoteContent.default, {
249
+ key: 3,
250
+ "quote-obj": __props.item.quoteData.quoteObj
251
+ }, null, 8, ["quote-obj"])) : vue.createCommentVNode("v-if", true)
200
252
  ],
201
- 2112
202
- /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
203
- )) : vue.createCommentVNode("v-if", true)
253
+ 64
254
+ /* STABLE_FRAGMENT */
255
+ ))
204
256
  ])
205
257
  ], 8, ["data-chat-id"])) : vue.createCommentVNode("v-if", true)
206
258
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"UserMessage.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/UserMessage.vue"],"sourcesContent":["<template>\n\t<!-- v-if=\"item.content\" -->\n\t<div v-if=\"!item.auto\" class=\"touchchat-user touchchat-item\" :data-chat-id=\"item.chatId\">\n\t\t<!-- 头像区域 -->\n\t\t<div class=\"touchchat-user-avatar\" :class=\"item?.files?.length && item.content ? 'file-user-avatar' : ''\">\n\t\t\t<slot name=\"userAvatar\">\n\t\t\t\t<img v-if=\"isShowAvatar\" :src=\"userAvatarPath\" class=\"touchchat-user-avatar-pic\" />\n\t\t\t</slot>\n\t\t</div>\n\n\t\t<!-- 内容区域 -->\n\t\t<div class=\"touchchat-user-content\">\n\t\t\t<!-- <div>{{item}}</div> hasColse -->\n\t\t\t<file-content v-if=\"item?.files?.length\" :file-list=\"item.files\" :has-colse=\"false\" type=\"UserMessage\" @user-message-file-list=\"userMessageFileList\"></file-content>\n\t\t\t<!-- 气泡 -->\n\t\t\t<template v-if=\"!item.isWithDraw && !item.isEditing && (item.content || item?.files?.length)\">\n\t\t\t\t<div v-if=\"item.content\" class=\"touch-user-wrapper\">\n\t\t\t\t\t<div v-if=\"hasRead\" class=\"touchchat-action-item value-read no-hover\" :class=\"{ 'is-read': item?.isRead }\"></div>\n\t\t\t\t\t<div class=\"touchchat-user-bubble\">\n\t\t\t\t\t\t<div :ref=\"setHtmlContentRef\" class=\"touchchat-user-bubble-text\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<!-- v-if=\"!scripts.length\" -->\n\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\">\n\t\t\t\t\t<MessageActions :item=\"item\" message-type=\"user\" :index=\"index\" :show-copy=\"true\" @copy=\"onCopy\" @edit=\"onEdit\" @delete=\"onDelete\" @with-draw=\"onWithdraw\">\n\t\t\t\t\t\t<template #extendsFn>\n\t\t\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</MessageActions>\n\t\t\t\t</slot>\n\t\t\t\t<!-- <slot name=\"fn\" :item=\"item\" :index=\"index\">\n\t\t\t\t\t<MessageActions v-show=\"!item.isChating\" :item=\"item\" message-type=\"ai\" :index=\"index\" :has-retry=\"hasRetry\" :show-copy=\"true\" @copy=\"onCopy\" @retry=\"onRetry\" @like=\"onLike\" @dislike=\"onDislike\">\n\t\t\t\t\t\t<template #extendsFn>\n\t\t\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</MessageActions>\n\t\t\t\t</slot> -->\n\t\t\t</template>\n\n\t\t\t<!-- 编辑区域 -->\n\t\t\t<div v-else-if=\"item.isEditing && item.content\" class=\"touchchat-user-edit\">\n\t\t\t\t<div class=\"touchchat-user-edit-input\">\n\t\t\t\t\t<textarea v-model=\"localEditContent\" placeholder=\"请输入消息内容...\"></textarea>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"touchchat-user-edit-submit\">\n\t\t\t\t\t<button class=\"touchchat-user-cancel\" @click=\"onCancelEdit\">\n\t\t\t\t\t\t<span class=\"touchchat-user-cancel-text\">取消</span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<button class=\"touchchat-user-send\" :disabled=\"!localEditContent.trim()\" @click=\"onSaveEdit\">\n\t\t\t\t\t\t<span class=\"touchchat-user-send-text\">发送</span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\n// 导入新组件\nimport MessageActions from './MessageActions.vue'\nimport { ref, nextTick, watch, inject, type ComponentPublicInstance } from 'vue'\nimport type { ChatMessage, ChatMsgList, FileItem } from './Chat/types'\nimport markdown from '../../utils/markdown.ts'\nimport userAvatarBase from '../../img/userAvatar.png'\nimport fileContent from '../../component/FileContent.vue'\n\nconst props = defineProps<{\n\titem: ChatMessage & ChatMsgList\n\tindex: number\n}>()\n\nconst emits = defineEmits<{\n\t(e: 'copy', index: number): void\n\t(e: 'edit', index: number): void\n\t(e: 'delete', index: number): void\n\t(e: 'saveEdit', index: number, newContent: string): void\n\t(e: 'cancelEdit', index: number): void\n\t(e: 'withDraw', item: any, index: number): void\n\t(e: 'user-message-file-list', item: FileItem, index: number): void\n}>()\n\nconst htmlContentRef = ref<HTMLElement | null>(null)\nconst localEditContent = ref('')\nconst isShowAvatar = ref(true)\nconst userAvatarPath = ref(userAvatarBase)\nconst avatar = inject<boolean>('avatar', true)\nconst hasRead = inject<boolean>('hasRead', false)\n\n// 初始化渲染\nnextTick(() => {\n\trenderContent()\n})\n\nconst init = () => {\n\tisShowAvatar.value = avatar\n}\n\n// 修改ref赋值方式确保正确绑定\nconst setHtmlContentRef = (ref: Element | ComponentPublicInstance | null = null) => {\n\t// 只处理Element类型的引用\n\tif (ref instanceof Element) {\n\t\thtmlContentRef.value = ref as HTMLElement\n\t\trenderContent()\n\t} else {\n\t\thtmlContentRef.value = null\n\t}\n}\n\n// 监听props变化同步到本地状态\nwatch(\n\t() => props.item.editContent,\n\t(newVal: any) => {\n\t\tlocalEditContent.value = newVal || ''\n\t},\n\t{ immediate: true } // 初始化时同步\n)\n\n// 增强watch监听,添加immediate和nextTick确保时序正确\nwatch(\n\t() => props.item.content,\n\t(newContent: any) => {\n\t\tif (newContent) {\n\t\t\tnextTick(() => renderContent())\n\t\t}\n\t},\n\t{ immediate: true } // 初始化和变化时都执行\n)\n\nconst renderContent = () => {\n\tinit()\n\t// 添加防御性检查\n\tif (!htmlContentRef.value || !props.item.content) return\n\thtmlContentRef.value.innerHTML = markdown?.render(props.item.content, { isReasoning: false }) || ''\n}\n\nconst onCopy = () => emits('copy', props.index)\nconst onEdit = () => emits('edit', props.index)\nconst onDelete = () => emits('delete', props.index)\nconst onSaveEdit = () => emits('saveEdit', props.index, localEditContent.value)\nconst onCancelEdit = () => emits('cancelEdit', props.index)\nconst onWithdraw = () => emits('withDraw', props.item, props.index)\n\nconst userMessageFileList = (item: FileItem, index: number) => {\n\temits('user-message-file-list', item, index)\n}\n</script>\n"],"names":["ref","userAvatarBase","inject","nextTick","watch","markdown","_createCommentVNode","item","_createElementBlock","_createElementVNode","_normalizeClass","_renderSlot","_createBlock","fileContent","_Fragment","_unref","index","_createVNode","MessageActions"],"mappings":"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"}
1
+ {"version":3,"file":"UserMessage.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/UserMessage.vue"],"sourcesContent":["<template>\r\n\t<!-- v-if=\"item.content\" -->\r\n\t<div v-if=\"!item.auto\" class=\"touchchat-user touchchat-item\" :data-chat-id=\"item.chatId\">\r\n\t\t<!-- 头像区域 -->\r\n\t\t<div class=\"touchchat-user-avatar\" :class=\"item?.files?.length && item.content ? 'file-user-avatar' : ''\">\r\n\t\t\t<slot name=\"userAvatar\">\r\n\t\t\t\t<img v-if=\"isShowAvatar\" :src=\"userAvatarPath\" class=\"touchchat-user-avatar-pic\" />\r\n\t\t\t</slot>\r\n\t\t</div>\r\n\r\n\t\t<!-- 内容区域 -->\r\n\t\t<!-- <MessageViewed :value=\"70\"></MessageViewed> -->\r\n\t\t<div class=\"touchchat-user-content\">\r\n\t\t\t<!-- 语音消息类型 - 直接显示,不显示文件和文本气泡 -->\r\n\t\t\t<template v-if=\"item.type === 'voice' && item.files?.length\">\r\n\t\t\t\t<AudioFile :item=\"item.files[0]\" :index=\"0\" />\r\n\t\t\t\t<!-- 语音消息的操作按钮 -->\r\n\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\">\r\n\t\t\t\t\t<MessageActions :item=\"item\" message-type=\"user\" :index=\"index\" :show-copy=\"true\" @copy=\"onCopy\" @edit=\"onEdit\" @delete=\"onDelete\" @with-draw=\"onWithdraw\">\r\n\t\t\t\t\t\t<template #extendsFn>\r\n\t\t\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</MessageActions>\r\n\t\t\t\t</slot>\r\n\t\t\t</template>\r\n\t\t\t<template v-else>\r\n\t\t\t\t<!-- 文件附件 -->\r\n\t\t\t\t<file-content v-if=\"item?.files?.length\" :file-list=\"item.files\" :has-colse=\"false\" type=\"UserMessage\" @user-message-file-list=\"userMessageFileList\"></file-content>\r\n\t\t\t\t<!-- 文本气泡 -->\r\n\t\t\t\t<template v-if=\"!item.isWithDraw && !item.isEditing && (item.content || item?.files?.length)\">\r\n\t\t\t\t\t<div v-if=\"item.content\" class=\"touchchat-user-wrapper\">\r\n\t\t\t\t\t\t<div v-if=\"hasRead\" class=\"touchchat-action-item value-read no-hover\" :class=\"{ 'is-read': item?.isRead }\"></div>\r\n\t\t\t\t\t\t<div class=\"touchchat-user-bubble\">\r\n\t\t\t\t\t\t\t<div :ref=\"setHtmlContentRef\" class=\"touchchat-user-bubble-text\"></div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- v-if=\"!scripts.length\" -->\r\n\t\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\">\r\n\t\t\t\t\t\t<MessageActions :item=\"item\" message-type=\"user\" :index=\"index\" :show-copy=\"true\" @copy=\"onCopy\" @edit=\"onEdit\" @delete=\"onDelete\" @with-draw=\"onWithdraw\">\r\n\t\t\t\t\t\t\t<template #extendsFn>\r\n\t\t\t\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t</MessageActions>\r\n\t\t\t\t\t</slot>\r\n\t\t\t\t\t<!-- <slot name=\"fn\" :item=\"item\" :index=\"index\">\r\n\t\t\t\t\t\t<MessageActions v-show=\"!item.isChating\" :item=\"item\" message-type=\"ai\" :index=\"index\" :has-retry=\"hasRetry\" :show-copy=\"true\" @copy=\"onCopy\" @retry=\"onRetry\" @like=\"onLike\" @dislike=\"onDislike\">\r\n\t\t\t\t\t\t\t<template #extendsFn>\r\n\t\t\t\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t</MessageActions>\r\n\t\t\t\t\t</slot> -->\r\n\t\t\t\t</template>\r\n\r\n\t\t\t\t<!-- 编辑区域 -->\r\n\t\t\t\t<div v-else-if=\"item.isEditing && item.content\" class=\"touchchat-user-edit\">\r\n\t\t\t\t\t<div class=\"touchchat-user-edit-input\">\r\n\t\t\t\t\t\t<textarea v-model=\"localEditContent\" placeholder=\"请输入消息内容...\"></textarea>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"touchchat-user-edit-submit\">\r\n\t\t\t\t\t\t<button class=\"touchchat-user-cancel\" @click=\"onCancelEdit\">\r\n\t\t\t\t\t\t\t<span class=\"touchchat-user-cancel-text\">取消</span>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t<button class=\"touchchat-user-send\" :disabled=\"!localEditContent.trim()\" @click=\"onSaveEdit\">\r\n\t\t\t\t\t\t\t<span class=\"touchchat-user-send-text\">发送</span>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<QuoteContent v-if=\"item.quoteData && item.quoteData.quoteObj\" :quote-obj=\"item.quoteData.quoteObj\" />\r\n\t\t\t</template>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\n// 导入新组件\r\nimport MessageActions from './MessageActions.vue'\r\nimport AudioFile from '../../component/AudioFile.vue'\r\nimport { ref, nextTick, watch, inject, type ComponentPublicInstance } from 'vue'\r\nimport type { ChatMessage, ChatMsgList, FileItem } from './Chat/types'\r\nimport markdown from '../../utils/markdown.ts'\r\nimport userAvatarBase from '../../img/userAvatar.png'\r\nimport fileContent from '../../component/FileContent.vue'\r\nimport QuoteContent from '../../component/QuoteContent.vue'\r\n// import MessageViewed from './MessageViewed.vue'\r\n\r\nconst props = defineProps<{\r\n\titem: ChatMessage & ChatMsgList\r\n\tindex: number\r\n}>()\r\n\r\nconst emits = defineEmits<{\r\n\t(e: 'copy', index: number): void\r\n\t(e: 'edit', index: number): void\r\n\t(e: 'delete', index: number): void\r\n\t(e: 'saveEdit', index: number, newContent: string): void\r\n\t(e: 'cancelEdit', index: number): void\r\n\t(e: 'withDraw', item: any, index: number): void\r\n\t(e: 'user-message-file-list', item: FileItem, index: number): void\r\n}>()\r\n\r\nconst htmlContentRef = ref<HTMLElement | null>(null)\r\nconst localEditContent = ref('')\r\nconst isShowAvatar = ref(true)\r\nconst userAvatarPath = ref(userAvatarBase)\r\nconst avatar = inject<boolean>('avatar', true)\r\nconst hasRead = inject<boolean>('hasRead', false)\r\n\r\n// 初始化渲染\r\nnextTick(() => {\r\n\trenderContent()\r\n})\r\n\r\nconst init = () => {\r\n\tisShowAvatar.value = avatar\r\n}\r\n\r\n// 修改ref赋值方式确保正确绑定\r\nconst setHtmlContentRef = (ref: Element | ComponentPublicInstance | null = null) => {\r\n\t// 只处理Element类型的引用\r\n\tif (ref instanceof Element) {\r\n\t\thtmlContentRef.value = ref as HTMLElement\r\n\t\trenderContent()\r\n\t} else {\r\n\t\thtmlContentRef.value = null\r\n\t}\r\n}\r\n\r\n// 监听props变化同步到本地状态\r\nwatch(\r\n\t() => props.item.editContent,\r\n\t(newVal: any) => {\r\n\t\tlocalEditContent.value = newVal || ''\r\n\t},\r\n\t{ immediate: true } // 初始化时同步\r\n)\r\n\r\n// 增强watch监听,添加immediate和nextTick确保时序正确\r\nwatch(\r\n\t() => props.item.content,\r\n\t(newContent: any) => {\r\n\t\tif (newContent) {\r\n\t\t\tnextTick(() => renderContent())\r\n\t\t}\r\n\t},\r\n\t{ immediate: true } // 初始化和变化时都执行\r\n)\r\n\r\nconst renderContent = () => {\r\n\tinit()\r\n\t// 添加防御性检查\r\n\tif (!htmlContentRef.value || !props.item.content) return\r\n\thtmlContentRef.value.innerHTML = markdown?.render(props.item.content, { isReasoning: false }) || ''\r\n}\r\n\r\nconst onCopy = () => emits('copy', props.index)\r\nconst onEdit = () => emits('edit', props.index)\r\nconst onDelete = () => emits('delete', props.index)\r\nconst onSaveEdit = () => emits('saveEdit', props.index, localEditContent.value)\r\nconst onCancelEdit = () => emits('cancelEdit', props.index)\r\nconst onWithdraw = () => emits('withDraw', props.item, props.index)\r\n\r\nconst userMessageFileList = (item: FileItem, index: number) => {\r\n\temits('user-message-file-list', item, index)\r\n}\r\n</script>\r\n"],"names":["ref","userAvatarBase","inject","nextTick","watch","markdown","_createCommentVNode","_createElementBlock","_createElementVNode","_normalizeClass","_renderSlot","_Fragment","_createVNode","AudioFile","MessageActions","_createBlock","fileContent","_unref","QuoteContent"],"mappings":"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"}
@@ -43,7 +43,8 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
43
43
  } },
44
44
  hasRead: { type: Boolean, default: false },
45
45
  isSelectMode: { type: Boolean, default: false },
46
- uploadAction: { type: Function, default: void 0 }
46
+ uploadAction: { type: Function, default: void 0 },
47
+ hasChating: { type: Boolean, default: false }
47
48
  },
48
49
  emits: ["send", "afterSend", "like", "dislike", "side-bottom", "change", "historyRemove", "remove", "bottom", "stop", "modelChange", "openSideBar", "share", "withDraw", "file-action", "download-action"],
49
50
  setup(__props, { expose: __expose, emit: __emit }) {
@@ -66,6 +67,10 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
66
67
  vue.provide("hasRead", props.hasRead);
67
68
  vue.provide("isSelectMode", selectMode);
68
69
  vue.provide("uploadAction", props.uploadAction);
70
+ vue.provide(
71
+ "hasChating",
72
+ vue.computed(() => props.hasChating)
73
+ );
69
74
  const historyListComputed = vue.computed(() => props.historyList);
70
75
  const providedHistoryList = vue.ref(props.historyList);
71
76
  vue.watch(