@touchvue/chat 1.0.0-beta.2 → 1.0.0-beta.4

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 (191) hide show
  1. package/es/package.json.mjs +1 -1
  2. package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue2.mjs +3 -3
  3. package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue2.mjs.map +1 -0
  4. package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue2.mjs +3 -1
  5. package/es/packages/components/touchchat/component/AiRobot/face.vue2.mjs.map +1 -0
  6. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -0
  7. package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue2.mjs +9 -6
  8. package/es/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.mjs.map +1 -0
  9. package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue2.mjs +1 -1
  10. package/es/packages/components/touchchat/component/AiRobot/start.vue2.mjs.map +1 -0
  11. package/es/packages/components/touchchat/component/CardView.vue2.mjs.map +1 -1
  12. package/es/packages/components/touchchat/component/HelloChat.vue2.mjs +2 -2
  13. package/es/packages/components/touchchat/component/HelloChat.vue2.mjs.map +1 -1
  14. package/es/packages/components/touchchat/img/aiAvatar.png.mjs +4 -0
  15. package/es/packages/components/touchchat/img/aiAvatar.png.mjs.map +1 -0
  16. package/es/packages/components/touchchat/img/icon.png.mjs.map +1 -0
  17. package/es/packages/components/touchchat/img/userAvatar.png.mjs +4 -0
  18. package/es/packages/components/touchchat/img/userAvatar.png.mjs.map +1 -0
  19. package/es/packages/components/touchchat/index.mjs +1 -1
  20. package/es/packages/components/touchchat/index.mjs.map +1 -1
  21. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +115 -199
  22. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
  23. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +43 -137
  24. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
  25. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs +90 -127
  26. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
  27. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs +17 -39
  28. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
  29. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs +41 -181
  30. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs.map +1 -1
  31. package/es/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue2.mjs +1 -1
  32. package/es/packages/components/touchchat/src/AiChat/Scene.vue2.mjs.map +1 -0
  33. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue.mjs +6 -0
  34. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue.mjs.map +1 -0
  35. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs +25 -0
  36. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs.map +1 -0
  37. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +618 -390
  38. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
  39. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs +200 -89
  40. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
  41. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +42 -37
  42. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
  43. package/es/packages/components/touchchat/src/index.vue2.mjs +54 -29
  44. package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
  45. package/lib/package.json.js +1 -1
  46. package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue2.js +3 -3
  47. package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue2.js.map +1 -0
  48. package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue2.js +3 -1
  49. package/lib/packages/components/touchchat/component/AiRobot/face.vue2.js.map +1 -0
  50. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -0
  51. package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue2.js +8 -5
  52. package/lib/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.js.map +1 -0
  53. package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue2.js +1 -1
  54. package/lib/packages/components/touchchat/component/AiRobot/start.vue2.js.map +1 -0
  55. package/lib/packages/components/touchchat/component/CardView.vue2.js.map +1 -1
  56. package/lib/packages/components/touchchat/component/HelloChat.vue2.js +2 -2
  57. package/lib/packages/components/touchchat/component/HelloChat.vue2.js.map +1 -1
  58. package/lib/packages/components/touchchat/img/aiAvatar.png.js +8 -0
  59. package/lib/packages/components/touchchat/img/aiAvatar.png.js.map +1 -0
  60. package/lib/packages/components/touchchat/img/icon.png.js.map +1 -0
  61. package/lib/packages/components/touchchat/img/userAvatar.png.js +8 -0
  62. package/lib/packages/components/touchchat/img/userAvatar.png.js.map +1 -0
  63. package/lib/packages/components/touchchat/index.js +1 -1
  64. package/lib/packages/components/touchchat/index.js.map +1 -1
  65. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +107 -191
  66. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
  67. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +43 -137
  68. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
  69. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js +89 -126
  70. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
  71. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js +16 -38
  72. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
  73. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js +41 -181
  74. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js.map +1 -1
  75. package/lib/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue2.js +1 -1
  76. package/lib/packages/components/touchchat/src/AiChat/Scene.vue2.js.map +1 -0
  77. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue.js +10 -0
  78. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue.js.map +1 -0
  79. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js +29 -0
  80. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js.map +1 -0
  81. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +615 -387
  82. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
  83. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js +199 -88
  84. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
  85. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +41 -36
  86. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
  87. package/lib/packages/components/touchchat/src/index.vue2.js +53 -28
  88. package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
  89. package/package.json +81 -81
  90. package/theme/components/index.css +1447 -2004
  91. package/theme/img/aiArrow.png +0 -0
  92. package/theme/img/loading.png +0 -0
  93. package/theme/img/logo.png +0 -0
  94. package/theme/img/userArrow.png +0 -0
  95. package/theme/index.css +1448 -2005
  96. package/theme/skin/default.css +1448 -2005
  97. package/es/packages/components/touchchat/img/AI.png.mjs +0 -4
  98. package/es/packages/components/touchchat/img/AI.png.mjs.map +0 -1
  99. package/es/packages/components/touchchat/img/asir.png.mjs +0 -4
  100. package/es/packages/components/touchchat/img/asir.png.mjs.map +0 -1
  101. package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue.mjs +0 -6
  102. package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue.mjs.map +0 -1
  103. package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.mjs +0 -620
  104. package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.mjs.map +0 -1
  105. package/es/packages/components/touchchat/src/AiRobot/Content.vue.mjs +0 -6
  106. package/es/packages/components/touchchat/src/AiRobot/Content.vue.mjs.map +0 -1
  107. package/es/packages/components/touchchat/src/AiRobot/Content.vue2.mjs +0 -224
  108. package/es/packages/components/touchchat/src/AiRobot/Content.vue2.mjs.map +0 -1
  109. package/es/packages/components/touchchat/src/AiRobot/Header.vue.mjs +0 -6
  110. package/es/packages/components/touchchat/src/AiRobot/Header.vue.mjs.map +0 -1
  111. package/es/packages/components/touchchat/src/AiRobot/Header.vue2.mjs +0 -188
  112. package/es/packages/components/touchchat/src/AiRobot/Header.vue2.mjs.map +0 -1
  113. package/es/packages/components/touchchat/src/AiRobot/Input.vue.mjs +0 -6
  114. package/es/packages/components/touchchat/src/AiRobot/Input.vue.mjs.map +0 -1
  115. package/es/packages/components/touchchat/src/AiRobot/Input.vue2.mjs +0 -69
  116. package/es/packages/components/touchchat/src/AiRobot/Input.vue2.mjs.map +0 -1
  117. package/es/packages/components/touchchat/src/AiRobot/Scene.vue2.mjs.map +0 -1
  118. package/es/packages/components/touchchat/src/AiRobot/component/HelloChat.vue2.mjs.map +0 -1
  119. package/es/packages/components/touchchat/src/AiRobot/component/face.vue2.mjs.map +0 -1
  120. package/es/packages/components/touchchat/src/AiRobot/component/letter.vue2.mjs.map +0 -1
  121. package/es/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue2.mjs.map +0 -1
  122. package/es/packages/components/touchchat/src/AiRobot/component/start.vue2.mjs.map +0 -1
  123. package/es/packages/components/touchchat/src/AiRobot/img/Avatar-AI.png.mjs +0 -4
  124. package/es/packages/components/touchchat/src/AiRobot/img/Avatar-AI.png.mjs.map +0 -1
  125. package/es/packages/components/touchchat/src/AiRobot/img/icon.png.mjs.map +0 -1
  126. package/es/packages/components/touchchat/src/AiRobot/index.vue.mjs +0 -6
  127. package/es/packages/components/touchchat/src/AiRobot/index.vue.mjs.map +0 -1
  128. package/es/packages/components/touchchat/src/AiRobot/index.vue2.mjs +0 -67
  129. package/es/packages/components/touchchat/src/AiRobot/index.vue2.mjs.map +0 -1
  130. package/lib/packages/components/touchchat/img/AI.png.js +0 -8
  131. package/lib/packages/components/touchchat/img/AI.png.js.map +0 -1
  132. package/lib/packages/components/touchchat/img/asir.png.js +0 -8
  133. package/lib/packages/components/touchchat/img/asir.png.js.map +0 -1
  134. package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue.js +0 -10
  135. package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue.js.map +0 -1
  136. package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.js +0 -624
  137. package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.js.map +0 -1
  138. package/lib/packages/components/touchchat/src/AiRobot/Content.vue.js +0 -10
  139. package/lib/packages/components/touchchat/src/AiRobot/Content.vue.js.map +0 -1
  140. package/lib/packages/components/touchchat/src/AiRobot/Content.vue2.js +0 -228
  141. package/lib/packages/components/touchchat/src/AiRobot/Content.vue2.js.map +0 -1
  142. package/lib/packages/components/touchchat/src/AiRobot/Header.vue.js +0 -10
  143. package/lib/packages/components/touchchat/src/AiRobot/Header.vue.js.map +0 -1
  144. package/lib/packages/components/touchchat/src/AiRobot/Header.vue2.js +0 -192
  145. package/lib/packages/components/touchchat/src/AiRobot/Header.vue2.js.map +0 -1
  146. package/lib/packages/components/touchchat/src/AiRobot/Input.vue.js +0 -10
  147. package/lib/packages/components/touchchat/src/AiRobot/Input.vue.js.map +0 -1
  148. package/lib/packages/components/touchchat/src/AiRobot/Input.vue2.js +0 -73
  149. package/lib/packages/components/touchchat/src/AiRobot/Input.vue2.js.map +0 -1
  150. package/lib/packages/components/touchchat/src/AiRobot/Scene.vue2.js.map +0 -1
  151. package/lib/packages/components/touchchat/src/AiRobot/component/HelloChat.vue2.js.map +0 -1
  152. package/lib/packages/components/touchchat/src/AiRobot/component/face.vue2.js.map +0 -1
  153. package/lib/packages/components/touchchat/src/AiRobot/component/letter.vue2.js.map +0 -1
  154. package/lib/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue2.js.map +0 -1
  155. package/lib/packages/components/touchchat/src/AiRobot/component/start.vue2.js.map +0 -1
  156. package/lib/packages/components/touchchat/src/AiRobot/img/Avatar-AI.png.js +0 -8
  157. package/lib/packages/components/touchchat/src/AiRobot/img/Avatar-AI.png.js.map +0 -1
  158. package/lib/packages/components/touchchat/src/AiRobot/img/icon.png.js.map +0 -1
  159. package/lib/packages/components/touchchat/src/AiRobot/index.vue.js +0 -10
  160. package/lib/packages/components/touchchat/src/AiRobot/index.vue.js.map +0 -1
  161. package/lib/packages/components/touchchat/src/AiRobot/index.vue2.js +0 -71
  162. package/lib/packages/components/touchchat/src/AiRobot/index.vue2.js.map +0 -1
  163. package/theme/img/default.png +0 -0
  164. /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue.mjs +0 -0
  165. /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue.mjs.map +0 -0
  166. /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue.mjs +0 -0
  167. /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue.mjs.map +0 -0
  168. /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue.mjs +0 -0
  169. /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue.mjs.map +0 -0
  170. /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue2.mjs +0 -0
  171. /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue.mjs +0 -0
  172. /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue.mjs.map +0 -0
  173. /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue.mjs +0 -0
  174. /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue.mjs.map +0 -0
  175. /package/es/packages/components/touchchat/{src/AiRobot/img → img}/icon.png.mjs +0 -0
  176. /package/es/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue.mjs +0 -0
  177. /package/es/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue.mjs.map +0 -0
  178. /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue.js +0 -0
  179. /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue.js.map +0 -0
  180. /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue.js +0 -0
  181. /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue.js.map +0 -0
  182. /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue.js +0 -0
  183. /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue.js.map +0 -0
  184. /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue2.js +0 -0
  185. /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue.js +0 -0
  186. /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue.js.map +0 -0
  187. /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue.js +0 -0
  188. /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue.js.map +0 -0
  189. /package/lib/packages/components/touchchat/{src/AiRobot/img → img}/icon.png.js +0 -0
  190. /package/lib/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue.js +0 -0
  191. /package/lib/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue.js.map +0 -0
@@ -1,11 +1,14 @@
1
- import { defineComponent, ref, inject, computed, nextTick, watch, openBlock, createElementBlock, createElementVNode, renderSlot, createCommentVNode, normalizeClass, toDisplayString, withDirectives, vShow, createVNode, Transition, withCtx, createBlock, resolveDynamicComponent } from 'vue';
2
- import _imports_0 from '../../img/AI.png.mjs';
1
+ import { defineComponent, ref, inject, computed, nextTick, watch, openBlock, createElementBlock, createElementVNode, renderSlot, createCommentVNode, normalizeClass, createTextVNode, toDisplayString, Fragment, createVNode, Transition, withCtx, withDirectives, vShow, unref, createBlock, resolveDynamicComponent } from 'vue';
2
+ import _imports_0 from '../../img/aiAvatar.png.mjs';
3
3
  import markdown from '../../utils/markdown.mjs';
4
- import _sfc_main$2 from '../../component/FileView.vue2.mjs';
5
- import _sfc_main$3 from '../../component/ImageView.vue2.mjs';
6
- import _sfc_main$4 from '../../component/LinkView.vue2.mjs';
7
- import _sfc_main$5 from '../../component/CardView.vue2.mjs';
8
- import _sfc_main$1 from './MessageActions.vue2.mjs';
4
+ import _sfc_main$3 from '../../component/FileView.vue2.mjs';
5
+ import _sfc_main$4 from '../../component/ImageView.vue2.mjs';
6
+ import _sfc_main$5 from '../../component/LinkView.vue2.mjs';
7
+ import _sfc_main$6 from '../../component/CardView.vue2.mjs';
8
+ import _sfc_main$2 from './MessageActions.vue2.mjs';
9
+ import _sfc_main$7 from '../../component/AiRobot/face.vue2.mjs';
10
+ import _sfc_main$8 from '../../component/AiRobot/meterialPrepare.vue2.mjs';
11
+ import _sfc_main$1 from '../../component/AiRobot/letter.vue2.mjs';
9
12
 
10
13
  var _sfc_main = /* @__PURE__ */ defineComponent({
11
14
  __name: "AiMessage",
@@ -13,13 +16,15 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
13
16
  item: {},
14
17
  index: {}
15
18
  },
16
- emits: ["copy", "retry", "like", "dislike", "contentRendered"],
19
+ emits: ["copy", "retry", "like", "dislike", "contentRendered", "completeRendered", "toggle-sidebar"],
17
20
  setup(__props, { emit: __emit }) {
18
21
  const componentMap = {
19
- FileView: _sfc_main$2,
20
- ImageView: _sfc_main$3,
21
- LinkView: _sfc_main$4,
22
- CardView: _sfc_main$5
22
+ FileView: _sfc_main$3,
23
+ ImageView: _sfc_main$4,
24
+ LinkView: _sfc_main$5,
25
+ CardView: _sfc_main$6,
26
+ Face: _sfc_main$7,
27
+ MeterialPrepare: _sfc_main$8
23
28
  };
24
29
  const props = __props;
25
30
  const emits = __emit;
@@ -31,6 +36,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
31
36
  const aiAvatarPath = ref(_imports_0);
32
37
  const rootMap = inject("rootMap", {});
33
38
  const isAvatar = inject("isAvatar", true);
39
+ const scripts = inject("scripts", []);
34
40
  const init = () => {
35
41
  isShowAvatar.value = isAvatar;
36
42
  };
@@ -51,6 +57,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
51
57
  const contentShow = computed(() => {
52
58
  return props.item.content;
53
59
  });
60
+ const toggleSidebarClick = (item, index) => {
61
+ emits("toggle-sidebar", item, index);
62
+ };
54
63
  nextTick(() => {
55
64
  renderContent();
56
65
  });
@@ -77,200 +86,107 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
77
86
  }
78
87
  init();
79
88
  };
89
+ const complete = () => {
90
+ emits("completeRendered");
91
+ };
80
92
  const onCopy = () => emits("copy", props.index);
81
93
  const onRetry = () => emits("retry", props.index);
82
94
  const onLike = () => emits("like", props.index);
83
95
  const onDislike = () => emits("dislike", props.index);
84
96
  return (_ctx, _cache) => {
85
- return openBlock(), createElementBlock("div", { class: "to-chat-item ai-message" }, [
86
- createElementVNode("div", { class: "message-content" }, [
87
- createElementVNode("div", { class: "avatar-container" }, [
88
- renderSlot(_ctx.$slots, "aiAvatar", {}, () => [
89
- isShowAvatar.value ? (openBlock(), createElementBlock("img", {
90
- key: 0,
91
- src: aiAvatarPath.value,
92
- class: "avatar"
93
- }, null, 8, ["src"])) : createCommentVNode("", true)
94
- ])
95
- ]),
96
- createElementVNode("div", { style: { "width": "100%" } }, [
97
- createElementVNode("div", {
98
- class: normalizeClass(["text-content", { full: !_ctx.item.isChating && _ctx.item.componentName }])
97
+ return openBlock(), createElementBlock("div", { class: "touchchat-ai" }, [
98
+ createElementVNode("div", { class: "touchchat-ai-avatar" }, [
99
+ renderSlot(_ctx.$slots, "aiAvatar", {}, () => [
100
+ isShowAvatar.value ? (openBlock(), createElementBlock("img", {
101
+ key: 0,
102
+ src: aiAvatarPath.value,
103
+ class: "touchchat-ai-avatar-pic"
104
+ }, null, 8, ["src"])) : createCommentVNode("", true)
105
+ ])
106
+ ]),
107
+ createElementVNode("div", {
108
+ class: normalizeClass(["touchchat-ai-content", { "is-full": !_ctx.item.isChating && _ctx.item.componentName }])
109
+ }, [
110
+ createElementVNode("div", { class: "touchchat-ai-bubble" }, [
111
+ thinkContentShow.value ? (openBlock(), createElementBlock("div", {
112
+ key: 0,
113
+ ref: (el) => thinkingContentRef.value = el,
114
+ class: "touchchat-ai-think"
115
+ }, null, 512)) : createCommentVNode("", true),
116
+ reasoningContentShow.value ? (openBlock(), createElementBlock("div", {
117
+ key: 1,
118
+ class: "touchchat-ai-think"
119
+ }, [
120
+ createElementVNode("div", { class: "touchchat-ai-think-header" }, [
121
+ createElementVNode("div", { class: "touchchat-ai-think-state" }, [
122
+ createTextVNode(toDisplayString(_ctx.item.thinkStatus === "thinking" ? "\u6DF1\u5EA6\u601D\u8003\u4E2D..." : _ctx.item.thinkStatus === "completed" ? "\u5DF2\u6DF1\u5EA6\u601D\u8003" : "\u601D\u8003\u5DF2\u505C\u6B62") + " ", 1),
123
+ _ctx.item.thinkStatus === "completed" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
124
+ createTextVNode("\uFF08\u7528\u65F6" + toDisplayString((_ctx.item.thinkTime || 0) / 1e3) + "\u79D2\uFF09", 1)
125
+ ], 64)) : createCommentVNode("", true)
126
+ ]),
127
+ createElementVNode("div", {
128
+ class: normalizeClass(["touchchat-ai-think-toggle", collapse.value ? "" : "is-expand"]),
129
+ onClick: ($event) => collapse.value = !collapse.value
130
+ }, [
131
+ createElementVNode("span", { class: "touchchat-ai-think-toggle-icon" })
132
+ ], 10, ["onClick"])
133
+ ]),
134
+ createVNode(Transition, { name: "touchchat-ai-think-collpase" }, {
135
+ default: withCtx(() => [
136
+ withDirectives(createElementVNode("div", {
137
+ ref: (el) => reasoningContentRef.value = el,
138
+ class: "touchchat-ai-think-content"
139
+ }, null, 512), [
140
+ [vShow, collapse.value]
141
+ ])
142
+ ]),
143
+ _: 1
144
+ })
145
+ ])) : createCommentVNode("", true),
146
+ contentShow.value && unref(scripts) && unref(scripts).length === 0 ? (openBlock(), createElementBlock("div", {
147
+ key: 2,
148
+ ref: (el) => htmlContentRef.value = el,
149
+ class: "touchchat-ai-bubble-text touchchat-markdown"
150
+ }, null, 512)) : createCommentVNode("", true),
151
+ unref(scripts) && unref(scripts).length > 0 && !_ctx.item.componentName ? (openBlock(), createBlock(_sfc_main$1, {
152
+ key: 3,
153
+ data: _ctx.item.content,
154
+ onComplete: complete
155
+ }, null, 8, ["data"])) : createCommentVNode("", true),
156
+ !_ctx.item.isChating ? renderSlot(_ctx.$slots, "aiMessageContent", {
157
+ key: 4,
158
+ item: _ctx.item,
159
+ index: _ctx.index
160
+ }, () => [
161
+ (openBlock(), createBlock(resolveDynamicComponent(componentName.value), {
162
+ index: _ctx.index,
163
+ item: _ctx.item,
164
+ onComplete: complete,
165
+ onToggleSidebar: toggleSidebarClick
166
+ }, null, 40, ["index", "item"]))
167
+ ]) : createCommentVNode("", true),
168
+ _ctx.item.isChating ? (openBlock(), createElementBlock("div", {
169
+ key: 5,
170
+ class: "touchchat-ai-loading"
99
171
  }, [
100
- createElementVNode("div", { class: "ai-message-wrapper" }, [
101
- createElementVNode("div", { class: "msg-content-container" }, [
102
- thinkContentShow.value ? (openBlock(), createElementBlock("div", {
103
- key: 0,
104
- ref: (el) => thinkingContentRef.value = el,
105
- class: "think-content"
106
- }, null, 512)) : createCommentVNode("", true),
107
- reasoningContentShow.value ? (openBlock(), createElementBlock("div", {
108
- key: 1,
109
- class: "reasoning-content"
110
- }, [
111
- createElementVNode("div", { class: "reasoning-header" }, [
112
- createElementVNode("div", { class: "reasoning-status" }, [
113
- (openBlock(), createElementBlock("svg", {
114
- xmlns: "http://www.w3.org/2000/svg",
115
- width: "14",
116
- height: "14",
117
- viewBox: "0 0 14 14",
118
- fill: "none"
119
- }, [
120
- createElementVNode("path", {
121
- d: "M5.74953 8.22414L2.87513 5.34974C2.19171 4.66632 2.19172 3.55828 2.87513 2.87487C3.55855 2.19145 4.66659 2.19145 5.35001 2.87487L5.76366 3.28852",
122
- stroke: "#0077FA",
123
- "stroke-width": "1.16667",
124
- "stroke-linecap": "round",
125
- "stroke-linejoin": "round"
126
- }),
127
- createElementVNode("path", {
128
- d: "M8.23818 5.76292L11.1248 8.64955C11.8082 9.33297 11.8082 10.441 11.1248 11.1244C10.4414 11.8078 9.33335 11.8078 8.64994 11.1244L8.23127 10.7058",
129
- stroke: "#0077FA",
130
- "stroke-width": "1.16667",
131
- "stroke-linecap": "round",
132
- "stroke-linejoin": "round"
133
- }),
134
- createElementVNode("path", {
135
- d: "M8.23736 8.23754L5.34674 11.1282C4.66512 11.8098 3.55855 11.8083 2.87513 11.1249C2.19172 10.4415 2.19025 9.3349 2.87186 8.65328L3.28526 8.23989",
136
- stroke: "#0077FA",
137
- "stroke-width": "1.16667",
138
- "stroke-linecap": "round",
139
- "stroke-linejoin": "round"
140
- }),
141
- createElementVNode("path", {
142
- d: "M5.7627 5.76233L8.64774 2.87729C9.33243 2.19259 10.4415 2.19156 11.1249 2.87498C11.8083 3.55839 11.8073 4.66747 11.1226 5.35216L10.7261 5.74866",
143
- stroke: "#0077FA",
144
- "stroke-width": "1.16667",
145
- "stroke-linecap": "round",
146
- "stroke-linejoin": "round"
147
- })
148
- ])),
149
- createElementVNode("span", { class: "status-text" }, toDisplayString(_ctx.item.thinkStatus === "thinking" ? "\u6DF1\u5EA6\u601D\u8003\u4E2D..." : _ctx.item.thinkStatus === "completed" ? "\u5DF2\u6DF1\u5EA6\u601D\u8003" : "\u601D\u8003\u5DF2\u505C\u6B62"), 1),
150
- _ctx.item.thinkStatus === "completed" ? (openBlock(), createElementBlock("span", {
151
- key: 0,
152
- class: "think-time"
153
- }, " (\u7528\u65F6" + toDisplayString((_ctx.item.thinkTime || 0) / 1e3) + "\u79D2) ", 1)) : createCommentVNode("", true)
154
- ]),
155
- (openBlock(), createElementBlock("svg", {
156
- class: "folding",
157
- xmlns: "http://www.w3.org/2000/svg",
158
- width: "9",
159
- height: "5",
160
- viewBox: "0 0 9 5",
161
- fill: "none",
162
- onClick: ($event) => collapse.value = !collapse.value
163
- }, [
164
- withDirectives(createElementVNode("path", {
165
- d: "M8.5 4.5L4.5 0.499999L0.5 4.5",
166
- stroke: "#1D2129",
167
- "stroke-linecap": "round",
168
- "stroke-linejoin": "round"
169
- }, null, 512), [
170
- [vShow, collapse.value]
171
- ]),
172
- withDirectives(createElementVNode("path", {
173
- d: "M9 0.5L5 4.5L1 0.500001",
174
- stroke: "#1D2129",
175
- "stroke-linecap": "round",
176
- "stroke-linejoin": "round"
177
- }, null, 512), [
178
- [vShow, !collapse.value]
179
- ])
180
- ], 8, ["onClick"]))
181
- ]),
182
- createVNode(Transition, { name: "reasoning-collapse" }, {
183
- default: withCtx(() => [
184
- withDirectives(createElementVNode("div", {
185
- ref: (el) => reasoningContentRef.value = el
186
- }, null, 512), [
187
- [vShow, collapse.value]
188
- ])
189
- ]),
190
- _: 1
191
- })
192
- ])) : createCommentVNode("", true),
193
- contentShow.value ? (openBlock(), createElementBlock("div", {
194
- key: 2,
195
- ref: (el) => htmlContentRef.value = el,
196
- class: "msg-rich-text markdown"
197
- }, null, 512)) : createCommentVNode("", true),
198
- !_ctx.item.isChating ? renderSlot(_ctx.$slots, "aiMessageContent", {
199
- key: 3,
200
- item: _ctx.item,
201
- index: _ctx.index
202
- }, () => [
203
- (openBlock(), createBlock(resolveDynamicComponent(componentName.value), {
204
- index: _ctx.index,
205
- item: _ctx.item
206
- }, null, 8, ["index", "item"]))
207
- ]) : createCommentVNode("", true),
208
- _ctx.item.isChating ? (openBlock(), createElementBlock("div", {
209
- key: 4,
210
- class: "loading-indicator"
211
- }, [
212
- (openBlock(), createElementBlock("svg", {
213
- class: "loading-spin",
214
- xmlns: "http://www.w3.org/2000/svg",
215
- width: "23",
216
- height: "23",
217
- viewBox: "0 0 23 23",
218
- fill: "none"
219
- }, [
220
- createElementVNode("g", {
221
- "clip-path": "url(#paint0_angular_2228_1409_clip_path)",
222
- "data-figma-skip-parse": "true"
223
- }, [
224
- createElementVNode("g", { transform: "matrix(0.00917971 0.00166904 -0.00166904 0.00917971 11.4999 11.842)" }, [
225
- (openBlock(), createElementBlock("foreignObject", {
226
- x: "-1356.57",
227
- y: "-1356.57",
228
- width: "2713.14",
229
- height: "2713.14"
230
- }, [
231
- createElementVNode("div", {
232
- xmlns: "http://www.w3.org/1999/xhtml",
233
- style: { "background": "conic-gradient(\n from 90deg,\n rgba(0, 119, 250, 1) 0deg,\n rgba(255, 255, 255, 0) 84.375deg,\n rgba(0, 119, 250, 1) 360deg\n )", "height": "100%", "width": "100%", "opacity": "1" }
234
- })
235
- ]))
236
- ])
237
- ]),
238
- createElementVNode("path", {
239
- "fill-rule": "evenodd",
240
- "clip-rule": "evenodd",
241
- d: "M11.4999 5.15277C7.80558 5.15277 4.81073 8.14762 4.81073 11.842C4.81073 15.5363 7.80558 18.5311 11.4999 18.5311C12.1841 18.5311 12.7387 19.0858 12.7387 19.7699C12.7387 20.454 12.1841 21.0086 11.4999 21.0086C6.43731 21.0086 2.33325 16.9046 2.33325 11.842C2.33325 6.77935 6.43731 2.67529 11.4999 2.67529C16.5625 2.67529 20.6666 6.77935 20.6666 11.842C20.6666 12.5261 20.112 13.0807 19.4278 13.0807C18.7437 13.0807 18.1891 12.5261 18.1891 11.842C18.1891 8.14762 15.1943 5.15277 11.4999 5.15277Z",
242
- "data-figma-gradient-fill": '{"type":"GRADIENT_ANGULAR","stops":[{"color":{"r":1.0,"g":1.0,"b":1.0,"a":0.0},"position":0.2343750},{"color":{"r":0.0,"g":0.46666666865348816,"b":0.98039215803146362,"a":1.0},"position":1.0}],"stopsVar":[],"transform":{"m00":18.359409332275391,"m01":-3.3380792140960693,"m02":3.9892544746398926,"m10":3.3380761146545410,"m11":18.359424591064453,"m12":0.99320876598358154},"opacity":1.0,"blendMode":"NORMAL","visible":true}'
243
- }),
244
- createElementVNode("defs", null, [
245
- createElementVNode("clipPath", { id: "paint0_angular_2228_1409_clip_path" }, [
246
- createElementVNode("path", {
247
- "fill-rule": "evenodd",
248
- "clip-rule": "evenodd",
249
- d: "M11.4999 5.15277C7.80558 5.15277 4.81073 8.14762 4.81073 11.842C4.81073 15.5363 7.80558 18.5311 11.4999 18.5311C12.1841 18.5311 12.7387 19.0858 12.7387 19.7699C12.7387 20.454 12.1841 21.0086 11.4999 21.0086C6.43731 21.0086 2.33325 16.9046 2.33325 11.842C2.33325 6.77935 6.43731 2.67529 11.4999 2.67529C16.5625 2.67529 20.6666 6.77935 20.6666 11.842C20.6666 12.5261 20.112 13.0807 19.4278 13.0807C18.7437 13.0807 18.1891 12.5261 18.1891 11.842C18.1891 8.14762 15.1943 5.15277 11.4999 5.15277Z"
250
- })
251
- ])
252
- ])
253
- ])),
254
- createElementVNode("span", { class: "loading-text" }, "\u52A0\u8F7D\u4E2D...")
255
- ])) : createCommentVNode("", true)
256
- ])
257
- ])
258
- ], 2),
259
- withDirectives(createVNode(_sfc_main$1, {
260
- "message-type": "ai",
261
- index: _ctx.index,
262
- "is-show-like": _ctx.item.isShowLike,
263
- "is-liked": _ctx.item.isLiked,
264
- "is-disliked": _ctx.item.isDisliked,
265
- onCopy,
266
- onRetry,
267
- onLike,
268
- onDislike
269
- }, null, 8, ["index", "is-show-like", "is-liked", "is-disliked"]), [
270
- [vShow, !_ctx.item.isChating]
271
- ])
172
+ createElementVNode("div", { class: "touchchat-ai-loading-icon" }),
173
+ createElementVNode("span", { class: "touchchat-ai-loading-text" }, "\u52A0\u8F7D\u4E2D...")
174
+ ])) : createCommentVNode("", true)
175
+ ]),
176
+ withDirectives(createVNode(_sfc_main$2, {
177
+ "message-type": "ai",
178
+ index: _ctx.index,
179
+ "is-show-like": _ctx.item.isShowLike,
180
+ "is-liked": _ctx.item.isLiked,
181
+ "is-disliked": _ctx.item.isDisliked,
182
+ onCopy,
183
+ onRetry,
184
+ onLike,
185
+ onDislike
186
+ }, null, 8, ["index", "is-show-like", "is-liked", "is-disliked"]), [
187
+ [vShow, !_ctx.item.isChating && !unref(scripts).length]
272
188
  ])
273
- ])
189
+ ], 2)
274
190
  ]);
275
191
  };
276
192
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AiMessage.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiChat/AiMessage.vue"],"sourcesContent":["<template>\n <div class=\"to-chat-item ai-message\">\n <div class=\"message-content\">\n <div class=\"avatar-container\">\n <slot name=\"aiAvatar\">\n <!-- 默认头像 -->\n <img v-if=\"isShowAvatar\" :src=\"aiAvatarPath\" class=\"avatar\" />\n </slot>\n </div>\n <div style=\"width: 100%\">\n <div class=\"text-content\" :class=\"{ full: !item.isChating && item.componentName }\">\n <div class=\"ai-message-wrapper\">\n <!-- 内容区域 -->\n <div class=\"msg-content-container\">\n <!-- <span>{{item.componentName}}</span> -->\n <!-- 思考内容 -->\n <div\n v-if=\"thinkContentShow\"\n :ref=\"el => (thinkingContentRef = el as HTMLElement)\"\n class=\"think-content\"\n ></div>\n <!-- 推理内容 -->\n <div v-if=\"reasoningContentShow\" class=\"reasoning-content\">\n <div class=\"reasoning-header\">\n <div class=\"reasoning-status\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M5.74953 8.22414L2.87513 5.34974C2.19171 4.66632 2.19172 3.55828 2.87513 2.87487C3.55855 2.19145 4.66659 2.19145 5.35001 2.87487L5.76366 3.28852\"\n stroke=\"#0077FA\"\n stroke-width=\"1.16667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M8.23818 5.76292L11.1248 8.64955C11.8082 9.33297 11.8082 10.441 11.1248 11.1244C10.4414 11.8078 9.33335 11.8078 8.64994 11.1244L8.23127 10.7058\"\n stroke=\"#0077FA\"\n stroke-width=\"1.16667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M8.23736 8.23754L5.34674 11.1282C4.66512 11.8098 3.55855 11.8083 2.87513 11.1249C2.19172 10.4415 2.19025 9.3349 2.87186 8.65328L3.28526 8.23989\"\n stroke=\"#0077FA\"\n stroke-width=\"1.16667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M5.7627 5.76233L8.64774 2.87729C9.33243 2.19259 10.4415 2.19156 11.1249 2.87498C11.8083 3.55839 11.8073 4.66747 11.1226 5.35216L10.7261 5.74866\"\n stroke=\"#0077FA\"\n stroke-width=\"1.16667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <span class=\"status-text\">\n {{\n item.thinkStatus === 'thinking'\n ? '深度思考中...'\n : item.thinkStatus === 'completed'\n ? '已深度思考'\n : '思考已停止'\n }}\n </span>\n <span v-if=\"item.thinkStatus === 'completed'\" class=\"think-time\">\n (用时{{ (item.thinkTime || 0) / 1000 }}秒)\n </span>\n </div>\n <!-- fold-active -->\n <svg\n class=\"folding\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"9\"\n height=\"5\"\n viewBox=\"0 0 9 5\"\n fill=\"none\"\n @click=\"collapse = !collapse\"\n >\n <path\n v-show=\"collapse\"\n d=\"M8.5 4.5L4.5 0.499999L0.5 4.5\"\n stroke=\"#1D2129\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n v-show=\"!collapse\"\n d=\"M9 0.5L5 4.5L1 0.500001\"\n stroke=\"#1D2129\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <!-- <svg v-else class=\"folding\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"5\" viewBox=\"0 0 10 5\" fill=\"none\">\n\t\t\t\t\t\t\t\t<path d=\"M9 0.5L5 4.5L1 0.500001\" stroke=\"#1D2129\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t\t\t</svg> -->\n </div>\n <transition name=\"reasoning-collapse\">\n <div\n v-show=\"collapse\"\n :ref=\"el => (reasoningContentRef = el as HTMLElement)\"\n ></div>\n </transition>\n </div>\n <!-- 主内容 -->\n <div\n v-if=\"contentShow\"\n :ref=\"el => (htmlContentRef = el as HTMLElement)\"\n class=\"msg-rich-text markdown\"\n ></div>\n <!-- v-if=\"!hasAiMessageSlot && !item.isChating && item.componentName\" -->\n <slot v-if=\"!item.isChating\" name=\"aiMessageContent\" :item=\"item\" :index=\"index\">\n <component :is=\"componentName\" :index=\"index\" :item=\"item\"> </component>\n </slot>\n\n <!-- 新增加载状态区域 -->\n <div v-if=\"item.isChating\" class=\"loading-indicator\">\n <svg\n class=\"loading-spin\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"23\"\n height=\"23\"\n viewBox=\"0 0 23 23\"\n fill=\"none\"\n >\n <g\n clip-path=\"url(#paint0_angular_2228_1409_clip_path)\"\n data-figma-skip-parse=\"true\"\n >\n <g\n transform=\"matrix(0.00917971 0.00166904 -0.00166904 0.00917971 11.4999 11.842)\"\n >\n <foreignObject x=\"-1356.57\" y=\"-1356.57\" width=\"2713.14\" height=\"2713.14\">\n <div\n xmlns=\"http://www.w3.org/1999/xhtml\"\n style=\"\n background: conic-gradient(\n from 90deg,\n rgba(0, 119, 250, 1) 0deg,\n rgba(255, 255, 255, 0) 84.375deg,\n rgba(0, 119, 250, 1) 360deg\n );\n height: 100%;\n width: 100%;\n opacity: 1;\n \"\n ></div>\n </foreignObject>\n </g>\n </g>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.4999 5.15277C7.80558 5.15277 4.81073 8.14762 4.81073 11.842C4.81073 15.5363 7.80558 18.5311 11.4999 18.5311C12.1841 18.5311 12.7387 19.0858 12.7387 19.7699C12.7387 20.454 12.1841 21.0086 11.4999 21.0086C6.43731 21.0086 2.33325 16.9046 2.33325 11.842C2.33325 6.77935 6.43731 2.67529 11.4999 2.67529C16.5625 2.67529 20.6666 6.77935 20.6666 11.842C20.6666 12.5261 20.112 13.0807 19.4278 13.0807C18.7437 13.0807 18.1891 12.5261 18.1891 11.842C18.1891 8.14762 15.1943 5.15277 11.4999 5.15277Z\"\n data-figma-gradient-fill='{\"type\":\"GRADIENT_ANGULAR\",\"stops\":[{\"color\":{\"r\":1.0,\"g\":1.0,\"b\":1.0,\"a\":0.0},\"position\":0.2343750},{\"color\":{\"r\":0.0,\"g\":0.46666666865348816,\"b\":0.98039215803146362,\"a\":1.0},\"position\":1.0}],\"stopsVar\":[],\"transform\":{\"m00\":18.359409332275391,\"m01\":-3.3380792140960693,\"m02\":3.9892544746398926,\"m10\":3.3380761146545410,\"m11\":18.359424591064453,\"m12\":0.99320876598358154},\"opacity\":1.0,\"blendMode\":\"NORMAL\",\"visible\":true}'\n />\n <defs>\n <clipPath id=\"paint0_angular_2228_1409_clip_path\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.4999 5.15277C7.80558 5.15277 4.81073 8.14762 4.81073 11.842C4.81073 15.5363 7.80558 18.5311 11.4999 18.5311C12.1841 18.5311 12.7387 19.0858 12.7387 19.7699C12.7387 20.454 12.1841 21.0086 11.4999 21.0086C6.43731 21.0086 2.33325 16.9046 2.33325 11.842C2.33325 6.77935 6.43731 2.67529 11.4999 2.67529C16.5625 2.67529 20.6666 6.77935 20.6666 11.842C20.6666 12.5261 20.112 13.0807 19.4278 13.0807C18.7437 13.0807 18.1891 12.5261 18.1891 11.842C18.1891 8.14762 15.1943 5.15277 11.4999 5.15277Z\"\n />\n </clipPath>\n </defs>\n </svg>\n <span class=\"loading-text\">加载中...</span>\n </div>\n </div>\n </div>\n </div>\n <MessageActions\n v-show=\"!item.isChating\"\n message-type=\"ai\"\n :index=\"index\"\n :is-show-like=\"item.isShowLike\"\n :is-liked=\"item.isLiked\"\n :is-disliked=\"item.isDisliked\"\n @copy=\"onCopy\"\n @retry=\"onRetry\"\n @like=\"onLike\"\n @dislike=\"onDislike\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n// useSlots, Comment,\nimport { ref, nextTick, watch, computed, inject } from 'vue';\nimport type { ChatMessage } from './TouchChat.vue';\nimport aiAvatarBase from '../../img/AI.png';\nimport markdown from '../../utils/markdown.ts';\nimport FileView from '../../component/FileView.vue';\nimport ImageView from '../../component/ImageView.vue';\nimport LinkView from '../../component/LinkView.vue';\nimport CardView from '../../component/CardView.vue';\nimport MessageActions from './MessageActions.vue';\n\n// 为组件映射表定义接口\ninterface ComponentMap {\n [key: string]: any; // 允许任何字符串键\n FileView: typeof FileView;\n ImageView: typeof ImageView;\n LinkView: typeof LinkView;\n CardView: typeof CardView;\n}\n\n// 创建组件映射表\nconst componentMap: ComponentMap = {\n FileView,\n ImageView,\n LinkView,\n CardView,\n};\n\nconst props = withDefaults(\n defineProps<{\n item: ChatMessage;\n index: number;\n }>(),\n {}\n);\n\nconst emits = defineEmits<{\n (e: 'copy', index: number): void;\n (e: 'retry', index: number): void;\n (e: 'like', index: number): void;\n (e: 'dislike', index: number): void;\n (e: 'contentRendered', element: HTMLElement): void;\n}>();\n\nconst htmlContentRef = ref<HTMLElement | null>(null);\nconst thinkingContentRef = ref<HTMLElement | null>(null);\nconst reasoningContentRef = ref<HTMLElement | null>(null);\nconst collapse = ref(true);\nconst isShowAvatar = ref(true);\nconst aiAvatarPath = ref(aiAvatarBase);\nconst rootMap = inject<Record<string, any>>('rootMap', {}); // 指定类型并提供默认值 {}\nconst isAvatar = inject<boolean>('isAvatar', true);\n\nconst init = () => {\n isShowAvatar.value = isAvatar;\n};\n\nconst componentName = computed(() => {\n const slotMap = rootMap;\n // 明确newMap的类型,允许字符串索引\n const newMap: Record<string, any> = {\n ...slotMap,\n ...componentMap,\n };\n return newMap[props.item.componentName as string] || null;\n});\n\nconst thinkContentShow = computed(() => {\n return props.item.thinkContent;\n // && !props.item.componentName;\n});\n\nconst reasoningContentShow = computed(() => {\n return props.item.reasoningContent;\n});\n\nconst contentShow = computed(() => {\n return props.item.content;\n // && !props.item.componentName;\n});\n\n// 初始化渲染\nnextTick(() => {\n renderContent();\n});\n\n// 添加数据变化监听\nwatch(\n () => [props.item.content, props.item.thinkContent, props.item.reasoningContent],\n () => {\n nextTick(() => renderContent());\n },\n { deep: true }\n);\n\nconst renderContent = () => {\n if (htmlContentRef.value) {\n htmlContentRef.value.innerHTML = props.item.content\n ? (markdown && markdown?.render(props.item.content, { isReasoning: false })) || ''\n : '';\n emits('contentRendered', htmlContentRef.value);\n }\n if (thinkingContentRef.value) {\n thinkingContentRef.value.innerHTML = props.item.thinkContent\n ? (markdown && markdown?.render(props.item.thinkContent, { isReasoning: true })) || ''\n : '';\n emits('contentRendered', thinkingContentRef.value);\n }\n if (reasoningContentRef.value) {\n reasoningContentRef.value.innerHTML = props.item.reasoningContent\n ? (markdown && markdown?.render(props.item.reasoningContent, { isReasoning: true })) || ''\n : '';\n emits('contentRendered', reasoningContentRef.value);\n }\n init();\n};\n\nconst onCopy = () => emits('copy', props.index);\nconst onRetry = () => emits('retry', props.index);\nconst onLike = () => emits('like', props.index);\nconst onDislike = () => emits('dislike', props.index);\n</script>\n<!-- <style lang=\"less\" scoped>\n@import '../../style/ChatView.less';\n@import '../../style/AiMessage.less';\n</style> -->\n"],"names":["FileView","ImageView","LinkView","CardView","aiAvatarBase","_createElementBlock","_createElementVNode","_renderSlot","_normalizeClass","item","_createVNode","_Transition","index","_openBlock","_createBlock","_resolveDynamicComponent","MessageActions"],"mappings":"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"}
1
+ {"version":3,"file":"AiMessage.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiChat/AiMessage.vue"],"sourcesContent":["<template>\n\t<div class=\"touchchat-ai\">\n\t\t<!-- 头像区域 -->\n\t\t<div class=\"touchchat-ai-avatar\">\n\t\t\t<slot name=\"aiAvatar\">\n\t\t\t\t<img v-if=\"isShowAvatar\" :src=\"aiAvatarPath\" class=\"touchchat-ai-avatar-pic\" />\n\t\t\t</slot>\n\t\t</div>\n\n\t\t<!-- 内容区域 -->\n\t\t<div class=\"touchchat-ai-content\" :class=\"{ 'is-full': !item.isChating && item.componentName }\">\n\t\t\t<!-- 气泡 -->\n\t\t\t<div class=\"touchchat-ai-bubble\">\n\t\t\t\t<!-- 思考内容 -->\n\t\t\t\t<div v-if=\"thinkContentShow\" :ref=\"el => (thinkingContentRef = el as HTMLElement)\" class=\"touchchat-ai-think\"></div>\n\n\t\t\t\t<!-- 推理内容 -->\n\t\t\t\t<div v-if=\"reasoningContentShow\" class=\"touchchat-ai-think\">\n\t\t\t\t\t<div class=\"touchchat-ai-think-header\">\n\t\t\t\t\t\t<div class=\"touchchat-ai-think-state\">\n\t\t\t\t\t\t\t{{ item.thinkStatus === 'thinking' ? '深度思考中...' : item.thinkStatus === 'completed' ? '已深度思考' : '思考已停止' }}\n\t\t\t\t\t\t\t<template v-if=\"item.thinkStatus === 'completed'\">(用时{{ (item.thinkTime || 0) / 1000 }}秒)</template>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"touchchat-ai-think-toggle\" :class=\"collapse ? '' : 'is-expand'\" @click=\"collapse = !collapse\">\n\t\t\t\t\t\t\t<span class=\"touchchat-ai-think-toggle-icon\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<transition name=\"touchchat-ai-think-collpase\">\n\t\t\t\t\t\t<div v-show=\"collapse\" :ref=\"el => (reasoningContentRef = el as HTMLElement)\" class=\"touchchat-ai-think-content\"></div>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- 主内容 -->\n\t\t\t\t<div v-if=\"contentShow && scripts && scripts.length === 0\" :ref=\"el => (htmlContentRef = el as HTMLElement)\" class=\"touchchat-ai-bubble-text touchchat-markdown\"></div>\n\n\t\t\t\t<letter v-if=\"scripts && scripts.length > 0 && !item.componentName\" :data=\"item.content\" @complete=\"complete\"></letter>\n\n\t\t\t\t<slot v-if=\"!item.isChating\" name=\"aiMessageContent\" :item=\"item\" :index=\"index\">\n\t\t\t\t\t<component :is=\"componentName\" :index=\"index\" :item=\"item\" @complete=\"complete\" @toggle-sidebar=\"toggleSidebarClick\"></component>\n\t\t\t\t</slot>\n\n\t\t\t\t<!-- 新增加载状态区域 -->\n\t\t\t\t<div v-if=\"item.isChating\" class=\"touchchat-ai-loading\">\n\t\t\t\t\t<div class=\"touchchat-ai-loading-icon\"></div>\n\t\t\t\t\t<span class=\"touchchat-ai-loading-text\">加载中...</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<MessageActions v-show=\"!item.isChating && !scripts.length\" message-type=\"ai\" :index=\"index\" :is-show-like=\"item.isShowLike\" :is-liked=\"item.isLiked\" :is-disliked=\"item.isDisliked\" @copy=\"onCopy\" @retry=\"onRetry\" @like=\"onLike\" @dislike=\"onDislike\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\n// useSlots, Comment,\nimport { ref, nextTick, watch, computed, inject } from 'vue'\nimport type { ChatMessage } from './TouchChat.vue'\nimport aiAvatarBase from '../../img/aiAvatar.png'\nimport markdown from '../../utils/markdown.ts'\nimport FileView from '../../component/FileView.vue'\nimport ImageView from '../../component/ImageView.vue'\nimport LinkView from '../../component/LinkView.vue'\nimport CardView from '../../component/CardView.vue'\nimport MessageActions from './MessageActions.vue'\nimport Face from '../../component/AiRobot/face.vue'\nimport MeterialPrepare from '../../component/AiRobot/meterialPrepare.vue'\nimport Letter from '../../component/AiRobot/letter.vue'\n\n// 为组件映射表定义接口\ninterface ComponentMap {\n\t[key: string]: any // 允许任何字符串键\n\tFileView: typeof FileView\n\tImageView: typeof ImageView\n\tLinkView: typeof LinkView\n\tCardView: typeof CardView\n}\n\n// 创建组件映射表\nconst componentMap: ComponentMap = {\n\tFileView,\n\tImageView,\n\tLinkView,\n\tCardView,\n\tFace,\n\tMeterialPrepare\n}\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\titem: ChatMessage\n\t\tindex: number\n\t}>(),\n\t{}\n)\n\nconst emits = defineEmits<{\n\t(e: 'copy', index: number): void\n\t(e: 'retry', index: number): void\n\t(e: 'like', index: number): void\n\t(e: 'dislike', index: number): void\n\t(e: 'contentRendered', element: HTMLElement): void\n\t(e: 'completeRendered'): void\n\t(e: 'toggle-sidebar', item: any, index: number): void\n}>()\n\nconst htmlContentRef = ref<HTMLElement | null>(null)\nconst thinkingContentRef = ref<HTMLElement | null>(null)\nconst reasoningContentRef = ref<HTMLElement | null>(null)\nconst collapse = ref(true)\nconst isShowAvatar = ref(true)\nconst aiAvatarPath = ref(aiAvatarBase)\nconst rootMap = inject<Record<string, any>>('rootMap', {}) // 指定类型并提供默认值 {}\nconst isAvatar = inject<boolean>('isAvatar', true)\nconst scripts = inject<any[]>('scripts', [])\n\nconst init = () => {\n\tisShowAvatar.value = isAvatar\n}\n\nconst componentName = computed(() => {\n\tconst slotMap = rootMap\n\n\t// 明确newMap的类型,允许字符串索引\n\tconst newMap: Record<string, any> = {\n\t\t...slotMap,\n\t\t...componentMap\n\t}\n\n\treturn newMap[props.item.componentName as string] || null\n})\n\nconst thinkContentShow = computed(() => {\n\treturn props.item.thinkContent\n\t// && !props.item.componentName;\n})\n\nconst reasoningContentShow = computed(() => {\n\treturn props.item.reasoningContent\n})\n\nconst contentShow = computed(() => {\n\treturn props.item.content\n})\n\nconst toggleSidebarClick = (item: ChatMessage, index: number) => {\n\temits('toggle-sidebar', item, index)\n}\n\n// 初始化渲染\nnextTick(() => {\n\trenderContent()\n})\n\n// 添加数据变化监听\nwatch(\n\t() => [props.item.content, props.item.thinkContent, props.item.reasoningContent],\n\t() => {\n\t\tnextTick(() => renderContent())\n\t},\n\t{ deep: true }\n)\n\nconst renderContent = () => {\n\tif (htmlContentRef.value) {\n\t\thtmlContentRef.value.innerHTML = props.item.content ? (markdown && markdown?.render(props.item.content, { isReasoning: false })) || '' : ''\n\t\temits('contentRendered', htmlContentRef.value)\n\t}\n\tif (thinkingContentRef.value) {\n\t\tthinkingContentRef.value.innerHTML = props.item.thinkContent ? (markdown && markdown?.render(props.item.thinkContent, { isReasoning: true })) || '' : ''\n\t\temits('contentRendered', thinkingContentRef.value)\n\t}\n\tif (reasoningContentRef.value) {\n\t\treasoningContentRef.value.innerHTML = props.item.reasoningContent ? (markdown && markdown?.render(props.item.reasoningContent, { isReasoning: true })) || '' : ''\n\t\temits('contentRendered', reasoningContentRef.value)\n\t}\n\tinit()\n}\n\nconst complete = () => {\n\temits('completeRendered')\n}\n\nconst onCopy = () => emits('copy', props.index)\nconst onRetry = () => emits('retry', props.index)\nconst onLike = () => emits('like', props.index)\nconst onDislike = () => emits('dislike', props.index)\n</script>\n<!-- <style lang=\"less\" scoped>\n@import '../../style/ChatView.less';\n@import '../../style/AiMessage.less';\n</style> -->\n"],"names":["FileView","ImageView","LinkView","CardView","Face","MeterialPrepare","aiAvatarBase","_createElementBlock","_createElementVNode","_renderSlot","_normalizeClass","item","_Fragment","_createTextVNode","_createVNode","_Transition","_unref","_createBlock","Letter","index","_openBlock","_resolveDynamicComponent","MessageActions"],"mappings":"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"}