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

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 (204) hide show
  1. package/es/_virtual/_plugin-vue_export-helper.mjs +10 -0
  2. package/es/_virtual/_plugin-vue_export-helper.mjs.map +1 -0
  3. package/es/package.json.mjs +1 -1
  4. package/es/packages/components/touchchat/component/CardView.vue.mjs +3 -2
  5. package/es/packages/components/touchchat/component/CardView.vue.mjs.map +1 -1
  6. package/es/packages/components/touchchat/component/CardView.vue2.mjs +66 -42
  7. package/es/packages/components/touchchat/component/CardView.vue2.mjs.map +1 -1
  8. package/es/packages/components/touchchat/component/FileView.vue.mjs +3 -2
  9. package/es/packages/components/touchchat/component/FileView.vue.mjs.map +1 -1
  10. package/es/packages/components/touchchat/component/FileView.vue2.mjs +17 -4
  11. package/es/packages/components/touchchat/component/FileView.vue2.mjs.map +1 -1
  12. package/es/packages/components/touchchat/component/HelloChat.vue.mjs +3 -2
  13. package/es/packages/components/touchchat/component/HelloChat.vue.mjs.map +1 -1
  14. package/es/packages/components/touchchat/component/HelloChat.vue2.mjs +26 -14
  15. package/es/packages/components/touchchat/component/HelloChat.vue2.mjs.map +1 -1
  16. package/es/packages/components/touchchat/component/ImageView.vue.mjs +3 -2
  17. package/es/packages/components/touchchat/component/ImageView.vue.mjs.map +1 -1
  18. package/es/packages/components/touchchat/component/LinkView.vue.mjs +3 -2
  19. package/es/packages/components/touchchat/component/LinkView.vue.mjs.map +1 -1
  20. package/es/packages/components/touchchat/component/LinkView.vue2.mjs +17 -3
  21. package/es/packages/components/touchchat/component/LinkView.vue2.mjs.map +1 -1
  22. package/es/packages/components/touchchat/index.mjs +4 -4
  23. package/es/packages/components/touchchat/index.mjs.map +1 -1
  24. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue.mjs +3 -2
  25. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue.mjs.map +1 -1
  26. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +223 -162
  27. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
  28. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue.mjs +3 -2
  29. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue.mjs.map +1 -1
  30. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +137 -116
  31. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
  32. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue.mjs +3 -2
  33. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue.mjs.map +1 -1
  34. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs +216 -142
  35. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
  36. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue.mjs +3 -2
  37. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue.mjs.map +1 -1
  38. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs +60 -52
  39. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
  40. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue.mjs +3 -2
  41. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue.mjs.map +1 -1
  42. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs +199 -166
  43. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs.map +1 -1
  44. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue.mjs +3 -2
  45. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue.mjs.map +1 -1
  46. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +196 -157
  47. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
  48. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue.mjs +3 -2
  49. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue.mjs.map +1 -1
  50. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs +90 -17
  51. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
  52. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue.mjs +3 -2
  53. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue.mjs.map +1 -1
  54. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +36 -27
  55. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
  56. package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue.mjs +3 -2
  57. package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue.mjs.map +1 -1
  58. package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.mjs +80 -68
  59. package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.mjs.map +1 -1
  60. package/es/packages/components/touchchat/src/AiRobot/Content.vue.mjs +3 -2
  61. package/es/packages/components/touchchat/src/AiRobot/Content.vue.mjs.map +1 -1
  62. package/es/packages/components/touchchat/src/AiRobot/Content.vue2.mjs +144 -105
  63. package/es/packages/components/touchchat/src/AiRobot/Content.vue2.mjs.map +1 -1
  64. package/es/packages/components/touchchat/src/AiRobot/Header.vue.mjs +3 -2
  65. package/es/packages/components/touchchat/src/AiRobot/Header.vue.mjs.map +1 -1
  66. package/es/packages/components/touchchat/src/AiRobot/Header.vue2.mjs +36 -27
  67. package/es/packages/components/touchchat/src/AiRobot/Header.vue2.mjs.map +1 -1
  68. package/es/packages/components/touchchat/src/AiRobot/Input.vue.mjs +3 -2
  69. package/es/packages/components/touchchat/src/AiRobot/Input.vue.mjs.map +1 -1
  70. package/es/packages/components/touchchat/src/AiRobot/Scene.vue.mjs +3 -2
  71. package/es/packages/components/touchchat/src/AiRobot/Scene.vue.mjs.map +1 -1
  72. package/es/packages/components/touchchat/src/AiRobot/Scene.vue2.mjs +14 -8
  73. package/es/packages/components/touchchat/src/AiRobot/Scene.vue2.mjs.map +1 -1
  74. package/es/packages/components/touchchat/src/AiRobot/component/HelloChat.vue.mjs +3 -2
  75. package/es/packages/components/touchchat/src/AiRobot/component/HelloChat.vue.mjs.map +1 -1
  76. package/es/packages/components/touchchat/src/AiRobot/component/HelloChat.vue2.mjs +219 -159
  77. package/es/packages/components/touchchat/src/AiRobot/component/HelloChat.vue2.mjs.map +1 -1
  78. package/es/packages/components/touchchat/src/AiRobot/component/face.vue.mjs +3 -2
  79. package/es/packages/components/touchchat/src/AiRobot/component/face.vue.mjs.map +1 -1
  80. package/es/packages/components/touchchat/src/AiRobot/component/face.vue2.mjs +22 -9
  81. package/es/packages/components/touchchat/src/AiRobot/component/face.vue2.mjs.map +1 -1
  82. package/es/packages/components/touchchat/src/AiRobot/component/letter.vue.mjs +3 -2
  83. package/es/packages/components/touchchat/src/AiRobot/component/letter.vue.mjs.map +1 -1
  84. package/es/packages/components/touchchat/src/AiRobot/component/letter.vue2.mjs +6 -2
  85. package/es/packages/components/touchchat/src/AiRobot/component/letter.vue2.mjs.map +1 -1
  86. package/es/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue.mjs +3 -2
  87. package/es/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue.mjs.map +1 -1
  88. package/es/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue2.mjs +2 -2
  89. package/es/packages/components/touchchat/src/AiRobot/component/start.vue.mjs +3 -2
  90. package/es/packages/components/touchchat/src/AiRobot/component/start.vue.mjs.map +1 -1
  91. package/es/packages/components/touchchat/src/AiRobot/component/start.vue2.mjs +2 -2
  92. package/es/packages/components/touchchat/src/AiRobot/index.vue.mjs +3 -2
  93. package/es/packages/components/touchchat/src/AiRobot/index.vue.mjs.map +1 -1
  94. package/es/packages/components/touchchat/src/AiRobot/index.vue2.mjs +107 -39
  95. package/es/packages/components/touchchat/src/AiRobot/index.vue2.mjs.map +1 -1
  96. package/es/packages/components/touchchat/src/index.vue.mjs +3 -2
  97. package/es/packages/components/touchchat/src/index.vue.mjs.map +1 -1
  98. package/es/packages/components/touchchat/src/index.vue2.mjs +84 -52
  99. package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
  100. package/lib/_virtual/_plugin-vue_export-helper.js +14 -0
  101. package/lib/_virtual/_plugin-vue_export-helper.js.map +1 -0
  102. package/lib/package.json.js +1 -1
  103. package/lib/packages/components/touchchat/component/CardView.vue.js +3 -2
  104. package/lib/packages/components/touchchat/component/CardView.vue.js.map +1 -1
  105. package/lib/packages/components/touchchat/component/CardView.vue2.js +66 -42
  106. package/lib/packages/components/touchchat/component/CardView.vue2.js.map +1 -1
  107. package/lib/packages/components/touchchat/component/FileView.vue.js +3 -2
  108. package/lib/packages/components/touchchat/component/FileView.vue.js.map +1 -1
  109. package/lib/packages/components/touchchat/component/FileView.vue2.js +16 -3
  110. package/lib/packages/components/touchchat/component/FileView.vue2.js.map +1 -1
  111. package/lib/packages/components/touchchat/component/HelloChat.vue.js +3 -2
  112. package/lib/packages/components/touchchat/component/HelloChat.vue.js.map +1 -1
  113. package/lib/packages/components/touchchat/component/HelloChat.vue2.js +26 -14
  114. package/lib/packages/components/touchchat/component/HelloChat.vue2.js.map +1 -1
  115. package/lib/packages/components/touchchat/component/ImageView.vue.js +3 -2
  116. package/lib/packages/components/touchchat/component/ImageView.vue.js.map +1 -1
  117. package/lib/packages/components/touchchat/component/LinkView.vue.js +3 -2
  118. package/lib/packages/components/touchchat/component/LinkView.vue.js.map +1 -1
  119. package/lib/packages/components/touchchat/component/LinkView.vue2.js +16 -2
  120. package/lib/packages/components/touchchat/component/LinkView.vue2.js.map +1 -1
  121. package/lib/packages/components/touchchat/index.js +4 -4
  122. package/lib/packages/components/touchchat/index.js.map +1 -1
  123. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue.js +3 -2
  124. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue.js.map +1 -1
  125. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +223 -162
  126. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
  127. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue.js +3 -2
  128. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue.js.map +1 -1
  129. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +136 -115
  130. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
  131. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue.js +3 -2
  132. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue.js.map +1 -1
  133. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js +215 -141
  134. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
  135. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue.js +3 -2
  136. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue.js.map +1 -1
  137. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js +59 -51
  138. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
  139. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue.js +3 -2
  140. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue.js.map +1 -1
  141. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js +199 -166
  142. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js.map +1 -1
  143. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue.js +3 -2
  144. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue.js.map +1 -1
  145. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +195 -156
  146. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
  147. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue.js +3 -2
  148. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue.js.map +1 -1
  149. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js +89 -16
  150. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
  151. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue.js +3 -2
  152. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue.js.map +1 -1
  153. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +35 -26
  154. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
  155. package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue.js +3 -2
  156. package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue.js.map +1 -1
  157. package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.js +79 -67
  158. package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.js.map +1 -1
  159. package/lib/packages/components/touchchat/src/AiRobot/Content.vue.js +3 -2
  160. package/lib/packages/components/touchchat/src/AiRobot/Content.vue.js.map +1 -1
  161. package/lib/packages/components/touchchat/src/AiRobot/Content.vue2.js +143 -104
  162. package/lib/packages/components/touchchat/src/AiRobot/Content.vue2.js.map +1 -1
  163. package/lib/packages/components/touchchat/src/AiRobot/Header.vue.js +3 -2
  164. package/lib/packages/components/touchchat/src/AiRobot/Header.vue.js.map +1 -1
  165. package/lib/packages/components/touchchat/src/AiRobot/Header.vue2.js +35 -26
  166. package/lib/packages/components/touchchat/src/AiRobot/Header.vue2.js.map +1 -1
  167. package/lib/packages/components/touchchat/src/AiRobot/Input.vue.js +3 -2
  168. package/lib/packages/components/touchchat/src/AiRobot/Input.vue.js.map +1 -1
  169. package/lib/packages/components/touchchat/src/AiRobot/Scene.vue.js +3 -2
  170. package/lib/packages/components/touchchat/src/AiRobot/Scene.vue.js.map +1 -1
  171. package/lib/packages/components/touchchat/src/AiRobot/Scene.vue2.js +14 -8
  172. package/lib/packages/components/touchchat/src/AiRobot/Scene.vue2.js.map +1 -1
  173. package/lib/packages/components/touchchat/src/AiRobot/component/HelloChat.vue.js +3 -2
  174. package/lib/packages/components/touchchat/src/AiRobot/component/HelloChat.vue.js.map +1 -1
  175. package/lib/packages/components/touchchat/src/AiRobot/component/HelloChat.vue2.js +219 -159
  176. package/lib/packages/components/touchchat/src/AiRobot/component/HelloChat.vue2.js.map +1 -1
  177. package/lib/packages/components/touchchat/src/AiRobot/component/face.vue.js +3 -2
  178. package/lib/packages/components/touchchat/src/AiRobot/component/face.vue.js.map +1 -1
  179. package/lib/packages/components/touchchat/src/AiRobot/component/face.vue2.js +21 -8
  180. package/lib/packages/components/touchchat/src/AiRobot/component/face.vue2.js.map +1 -1
  181. package/lib/packages/components/touchchat/src/AiRobot/component/letter.vue.js +3 -2
  182. package/lib/packages/components/touchchat/src/AiRobot/component/letter.vue.js.map +1 -1
  183. package/lib/packages/components/touchchat/src/AiRobot/component/letter.vue2.js +6 -2
  184. package/lib/packages/components/touchchat/src/AiRobot/component/letter.vue2.js.map +1 -1
  185. package/lib/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue.js +3 -2
  186. package/lib/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue.js.map +1 -1
  187. package/lib/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue2.js +2 -2
  188. package/lib/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue2.js.map +1 -1
  189. package/lib/packages/components/touchchat/src/AiRobot/component/start.vue.js +3 -2
  190. package/lib/packages/components/touchchat/src/AiRobot/component/start.vue.js.map +1 -1
  191. package/lib/packages/components/touchchat/src/AiRobot/component/start.vue2.js +2 -2
  192. package/lib/packages/components/touchchat/src/AiRobot/component/start.vue2.js.map +1 -1
  193. package/lib/packages/components/touchchat/src/AiRobot/index.vue.js +3 -2
  194. package/lib/packages/components/touchchat/src/AiRobot/index.vue.js.map +1 -1
  195. package/lib/packages/components/touchchat/src/AiRobot/index.vue2.js +106 -38
  196. package/lib/packages/components/touchchat/src/AiRobot/index.vue2.js.map +1 -1
  197. package/lib/packages/components/touchchat/src/index.vue.js +3 -2
  198. package/lib/packages/components/touchchat/src/index.vue.js.map +1 -1
  199. package/lib/packages/components/touchchat/src/index.vue2.js +83 -51
  200. package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
  201. package/package.json +1 -1
  202. package/theme/components/index.css +12 -0
  203. package/theme/index.css +12 -0
  204. package/theme/skin/default.css +12 -0
@@ -14,7 +14,6 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
14
14
  setup(__props, { emit: __emit }) {
15
15
  const props = __props;
16
16
  const isRobot = vue.inject("scripts", []).length > 0;
17
- console.log("isRobot === historyList", isRobot, vue.inject("scripts", []));
18
17
  const emit = __emit;
19
18
  const actionMenus = vue.ref({});
20
19
  const tooltipContainerRefs = vue.ref({});
@@ -30,6 +29,23 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
30
29
  const state = vue.reactive({
31
30
  actionMenuVisible: {}
32
31
  });
32
+ const handlePageChange = vue.inject("handlePageChange", () => {
33
+ console.warn("\u672A\u63D0\u4F9BhandlePageChange\u51FD\u6570");
34
+ });
35
+ let scrollTimeout = null;
36
+ const handleScroll = (event) => {
37
+ if (scrollTimeout) {
38
+ clearTimeout(scrollTimeout);
39
+ }
40
+ scrollTimeout = setTimeout(() => {
41
+ const container = event.target;
42
+ const { scrollTop, scrollHeight, clientHeight } = container;
43
+ const isBottom = scrollHeight - scrollTop <= clientHeight + 10;
44
+ if (isBottom) {
45
+ handlePageChange();
46
+ }
47
+ }, 200);
48
+ };
33
49
  const handleStartRename = (id) => {
34
50
  const item = props.chatHistory.find((item2) => item2.id === id);
35
51
  if (item) {
@@ -38,7 +54,6 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
38
54
  state.actionMenuVisible[id] = false;
39
55
  vue.nextTick(() => {
40
56
  var _a;
41
- console.log("editInputRefs.value", editInputRefs.value[id]);
42
57
  (_a = editInputRefs.value[id]) == null ? void 0 : _a.focus();
43
58
  });
44
59
  }
@@ -249,147 +264,206 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
249
264
  }, 200);
250
265
  };
251
266
  return (_ctx, _cache) => {
252
- return vue.openBlock(), vue.createElementBlock("ul", {
253
- ref_key: "historyListRef",
254
- ref: historyListRef,
255
- class: vue.normalizeClass(["history-list", { "is-robot": isRobot }])
256
- }, [
257
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(groupedChatHistory.value, (group) => {
258
- return vue.openBlock(), vue.createElementBlock(vue.Fragment, {
259
- key: group.groupKey
260
- }, [
261
- vue.createElementVNode("li", { class: "history-group-header" }, [
262
- (vue.openBlock(), vue.createElementBlock("svg", {
263
- xmlns: "http://www.w3.org/2000/svg",
264
- width: "16",
265
- height: "17",
266
- viewBox: "0 0 16 17",
267
- fill: "none"
268
- }, [
269
- vue.createElementVNode("path", {
270
- "fill-rule": "evenodd",
271
- "clip-rule": "evenodd",
272
- d: "M1.28906 3.54885C1.28906 3.21748 1.55769 2.94885 1.88906 2.94885H14.1113C14.4427 2.94885 14.7113 3.21748 14.7113 3.54885V12.7155C14.7113 13.0469 14.4427 13.3155 14.1113 13.3155H9.77648L8.42444 14.6676C8.31192 14.7801 8.1593 14.8433 8.00017 14.8433C7.84104 14.8433 7.68843 14.7801 7.57591 14.6676L6.22387 13.3155H1.88906C1.55769 13.3155 1.28906 13.0469 1.28906 12.7155V3.54885ZM2.48906 4.14885V12.1155H6.4724C6.63153 12.1155 6.78414 12.1787 6.89666 12.2913L8.00017 13.3948L9.10369 12.2913C9.21621 12.1787 9.36882 12.1155 9.52795 12.1155H13.5113V4.14885H2.48906Z",
273
- fill: "#1D2129"
274
- }),
275
- vue.createElementVNode("path", {
276
- "fill-rule": "evenodd",
277
- "clip-rule": "evenodd",
278
- d: "M7.09462 7.53219H8.90649V8.73219H7.09462V7.53219Z",
279
- fill: "#1D2129"
280
- }),
281
- vue.createElementVNode("path", {
282
- "fill-rule": "evenodd",
283
- "clip-rule": "evenodd",
284
- d: "M10.1505 7.53219H11.9613V8.73219H10.1505V7.53219Z",
285
- fill: "#1D2129"
286
- }),
287
- vue.createElementVNode("path", {
288
- "fill-rule": "evenodd",
289
- "clip-rule": "evenodd",
290
- d: "M4.03937 7.53219H5.85014V8.73219H4.03937V7.53219Z",
291
- fill: "#1D2129"
292
- })
293
- ])),
294
- vue.createElementVNode("div", { class: "history-item" }, [
295
- vue.createElementVNode("span", { class: "history-title" }, vue.toDisplayString(group.groupName), 1)
296
- ])
297
- ]),
298
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(group.items, (item) => {
299
- return vue.openBlock(), vue.createElementBlock("li", {
300
- key: item.id,
301
- ref_for: true,
302
- ref: (el) => setHistoryItemRef(item.id, el),
303
- class: vue.normalizeClass([item.id === _ctx.activeChat ? "active" : "", "history-item-container"]),
304
- onClick: ($event) => handleSelectChat(item.id)
305
- }, [
306
- vue.createElementVNode("div", { class: "history-item" }, [
307
- vue.createElementVNode("div", {
308
- ref_for: true,
309
- ref: (el) => setTooltipContainerRef(item.id, el),
310
- class: "tooltip-container",
311
- style: { "flex": "1" }
312
- }, [
313
- editingId.value === item.id ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
314
- key: 0,
315
- ref_for: true,
316
- ref: (el) => setEditInputRef(item.id, el),
317
- "onUpdate:modelValue": ($event) => editTitle.value = $event,
318
- class: "edit-title-input",
319
- onBlur: ($event) => handleRenameComplete(item.id),
320
- onKeyup: vue.withKeys(($event) => handleRenameComplete(item.id), ["enter"]),
321
- onClick: vue.withModifiers(() => {
322
- }, ["stop"])
323
- }, null, 40, ["onUpdate:modelValue", "onBlur", "onKeyup", "onClick"])), [
324
- [vue.vModelText, editTitle.value]
325
- ]) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
326
- vue.createElementVNode("span", { class: "history-title" }, vue.toDisplayString(item.title || "\u65B0\u5BF9\u8BDD"), 1),
327
- shouldShowTooltip(item.id, item.title) ? (vue.openBlock(), vue.createElementBlock("div", {
328
- key: 0,
329
- ref_for: true,
330
- ref: "tooltipRef",
331
- class: "custom-tooltip"
332
- }, vue.toDisplayString(item.title), 513)) : vue.createCommentVNode("", true)
333
- ], 64))
334
- ], 512)
335
- ]),
336
- editingId.value !== item.id ? (vue.openBlock(), vue.createElementBlock("div", {
337
- key: 0,
338
- class: "item-actions"
339
- }, [
340
- vue.createElementVNode("button", {
341
- class: "more-btn",
342
- onClick: vue.withModifiers(($event) => handleToggleActionMenu(item.id), ["stop"])
343
- }, "...", 8, ["onClick"]),
344
- state.actionMenuVisible[item.id] ? (vue.openBlock(), vue.createElementBlock("div", {
345
- key: 0,
346
- ref_for: true,
347
- ref: (el) => actionMenus.value[item.id] = el,
348
- class: "action-menu",
349
- onMouseenter: preventMenuClose,
350
- onMouseleave: ($event) => delayedCloseMenu(item.id)
351
- }, [
352
- vue.createElementVNode("div", {
353
- class: "menu-item",
354
- onClick: vue.withModifiers(($event) => handleStartRename(item.id), ["stop"])
355
- }, [
356
- (vue.openBlock(), vue.createElementBlock("svg", {
357
- width: "16",
358
- height: "16",
359
- viewBox: "0 0 24 24",
360
- fill: "none",
361
- stroke: "currentColor",
362
- "stroke-width": "2"
363
- }, [
364
- vue.createElementVNode("path", { d: "M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" }),
365
- vue.createElementVNode("path", { d: "M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" })
366
- ])),
367
- vue.createElementVNode("span", null, "\u91CD\u547D\u540D")
368
- ], 8, ["onClick"]),
369
- vue.createElementVNode("div", {
370
- class: "menu-item delete-btn",
371
- onClick: vue.withModifiers(($event) => handleMenuAction("delete", item.id), ["stop"])
267
+ return vue.openBlock(), vue.createElementBlock(
268
+ "ul",
269
+ {
270
+ ref_key: "historyListRef",
271
+ ref: historyListRef,
272
+ class: vue.normalizeClass(["history-list", { "is-robot": isRobot }]),
273
+ onScroll: handleScroll
274
+ },
275
+ [
276
+ vue.createCommentVNode(" \u52A8\u6001\u65F6\u95F4\u5206\u7EC4 "),
277
+ (vue.openBlock(true), vue.createElementBlock(
278
+ vue.Fragment,
279
+ null,
280
+ vue.renderList(groupedChatHistory.value, (group) => {
281
+ return vue.openBlock(), vue.createElementBlock(
282
+ vue.Fragment,
283
+ {
284
+ key: group.groupKey
285
+ },
286
+ [
287
+ vue.createCommentVNode(" \u5206\u7EC4\u6807\u9898 "),
288
+ vue.createElementVNode("li", { class: "history-group-header" }, [
289
+ (vue.openBlock(), vue.createElementBlock("svg", {
290
+ xmlns: "http://www.w3.org/2000/svg",
291
+ width: "16",
292
+ height: "17",
293
+ viewBox: "0 0 16 17",
294
+ fill: "none"
372
295
  }, [
373
- (vue.openBlock(), vue.createElementBlock("svg", {
374
- width: "16",
375
- height: "16",
376
- viewBox: "0 0 24 24",
377
- fill: "none",
378
- stroke: "currentColor",
379
- "stroke-width": "2"
296
+ vue.createElementVNode("path", {
297
+ "fill-rule": "evenodd",
298
+ "clip-rule": "evenodd",
299
+ d: "M1.28906 3.54885C1.28906 3.21748 1.55769 2.94885 1.88906 2.94885H14.1113C14.4427 2.94885 14.7113 3.21748 14.7113 3.54885V12.7155C14.7113 13.0469 14.4427 13.3155 14.1113 13.3155H9.77648L8.42444 14.6676C8.31192 14.7801 8.1593 14.8433 8.00017 14.8433C7.84104 14.8433 7.68843 14.7801 7.57591 14.6676L6.22387 13.3155H1.88906C1.55769 13.3155 1.28906 13.0469 1.28906 12.7155V3.54885ZM2.48906 4.14885V12.1155H6.4724C6.63153 12.1155 6.78414 12.1787 6.89666 12.2913L8.00017 13.3948L9.10369 12.2913C9.21621 12.1787 9.36882 12.1155 9.52795 12.1155H13.5113V4.14885H2.48906Z",
300
+ fill: "#1D2129"
301
+ }),
302
+ vue.createElementVNode("path", {
303
+ "fill-rule": "evenodd",
304
+ "clip-rule": "evenodd",
305
+ d: "M7.09462 7.53219H8.90649V8.73219H7.09462V7.53219Z",
306
+ fill: "#1D2129"
307
+ }),
308
+ vue.createElementVNode("path", {
309
+ "fill-rule": "evenodd",
310
+ "clip-rule": "evenodd",
311
+ d: "M10.1505 7.53219H11.9613V8.73219H10.1505V7.53219Z",
312
+ fill: "#1D2129"
313
+ }),
314
+ vue.createElementVNode("path", {
315
+ "fill-rule": "evenodd",
316
+ "clip-rule": "evenodd",
317
+ d: "M4.03937 7.53219H5.85014V8.73219H4.03937V7.53219Z",
318
+ fill: "#1D2129"
319
+ })
320
+ ])),
321
+ vue.createElementVNode("div", { class: "history-item" }, [
322
+ vue.createElementVNode(
323
+ "span",
324
+ { class: "history-title" },
325
+ vue.toDisplayString(group.groupName),
326
+ 1
327
+ /* TEXT */
328
+ )
329
+ ])
330
+ ]),
331
+ vue.createCommentVNode(" \u5206\u7EC4\u5185\u5BF9\u8BDD\u9879 "),
332
+ (vue.openBlock(true), vue.createElementBlock(
333
+ vue.Fragment,
334
+ null,
335
+ vue.renderList(group.items, (item) => {
336
+ return vue.openBlock(), vue.createElementBlock("li", {
337
+ key: item.id,
338
+ ref_for: true,
339
+ ref: (el) => setHistoryItemRef(item.id, el),
340
+ class: vue.normalizeClass([item.id === _ctx.activeChat ? "active" : "", "history-item-container"]),
341
+ onClick: ($event) => handleSelectChat(item.id)
380
342
  }, [
381
- vue.createElementVNode("polyline", { points: "3 6 5 6 21 6" }),
382
- vue.createElementVNode("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" })
383
- ])),
384
- vue.createElementVNode("span", null, "\u5220\u9664")
385
- ], 8, ["onClick"])
386
- ], 40, ["onMouseleave"])) : vue.createCommentVNode("", true)
387
- ])) : vue.createCommentVNode("", true)
388
- ], 10, ["onClick"]);
389
- }), 128))
390
- ], 64);
391
- }), 128))
392
- ], 2);
343
+ vue.createElementVNode("div", { class: "history-item" }, [
344
+ vue.createElementVNode(
345
+ "div",
346
+ {
347
+ ref_for: true,
348
+ ref: (el) => setTooltipContainerRef(item.id, el),
349
+ class: "tooltip-container",
350
+ style: { "flex": "1" }
351
+ },
352
+ [
353
+ editingId.value === item.id ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
354
+ key: 0,
355
+ ref_for: true,
356
+ ref: (el) => setEditInputRef(item.id, el),
357
+ "onUpdate:modelValue": ($event) => editTitle.value = $event,
358
+ class: "edit-title-input",
359
+ onBlur: ($event) => handleRenameComplete(item.id),
360
+ onKeyup: vue.withKeys(($event) => handleRenameComplete(item.id), ["enter"]),
361
+ onClick: vue.withModifiers(() => {
362
+ }, ["stop"])
363
+ }, null, 40, ["onUpdate:modelValue", "onBlur", "onKeyup", "onClick"])), [
364
+ [vue.vModelText, editTitle.value]
365
+ ]) : (vue.openBlock(), vue.createElementBlock(
366
+ vue.Fragment,
367
+ { key: 1 },
368
+ [
369
+ vue.createElementVNode(
370
+ "span",
371
+ { class: "history-title" },
372
+ vue.toDisplayString(item.title || "\u65B0\u5BF9\u8BDD"),
373
+ 1
374
+ /* TEXT */
375
+ ),
376
+ shouldShowTooltip(item.id, item.title) ? (vue.openBlock(), vue.createElementBlock(
377
+ "div",
378
+ {
379
+ key: 0,
380
+ ref_for: true,
381
+ ref: "tooltipRef",
382
+ class: "custom-tooltip"
383
+ },
384
+ vue.toDisplayString(item.title),
385
+ 513
386
+ /* TEXT, NEED_PATCH */
387
+ )) : vue.createCommentVNode("v-if", true)
388
+ ],
389
+ 64
390
+ /* STABLE_FRAGMENT */
391
+ ))
392
+ ],
393
+ 512
394
+ /* NEED_PATCH */
395
+ )
396
+ ]),
397
+ vue.createCommentVNode(" \u83DC\u5355\u663E\u793A\u72B6\u6001 - \u6DFB\u52A0\u6761\u4EF6\u5224\u65AD\u9690\u85CF\u64CD\u4F5C\u6309\u94AE "),
398
+ editingId.value !== item.id ? (vue.openBlock(), vue.createElementBlock("div", {
399
+ key: 0,
400
+ class: "item-actions"
401
+ }, [
402
+ vue.createElementVNode("button", {
403
+ class: "more-btn",
404
+ onClick: vue.withModifiers(($event) => handleToggleActionMenu(item.id), ["stop"])
405
+ }, "...", 8, ["onClick"]),
406
+ state.actionMenuVisible[item.id] ? (vue.openBlock(), vue.createElementBlock("div", {
407
+ key: 0,
408
+ ref_for: true,
409
+ ref: (el) => actionMenus.value[item.id] = el,
410
+ class: "action-menu",
411
+ onMouseenter: preventMenuClose,
412
+ onMouseleave: ($event) => delayedCloseMenu(item.id)
413
+ }, [
414
+ vue.createElementVNode("div", {
415
+ class: "menu-item",
416
+ onClick: vue.withModifiers(($event) => handleStartRename(item.id), ["stop"])
417
+ }, [
418
+ (vue.openBlock(), vue.createElementBlock("svg", {
419
+ width: "16",
420
+ height: "16",
421
+ viewBox: "0 0 24 24",
422
+ fill: "none",
423
+ stroke: "currentColor",
424
+ "stroke-width": "2"
425
+ }, [
426
+ vue.createElementVNode("path", { d: "M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" }),
427
+ vue.createElementVNode("path", { d: "M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" })
428
+ ])),
429
+ vue.createElementVNode("span", null, "\u91CD\u547D\u540D")
430
+ ], 8, ["onClick"]),
431
+ vue.createElementVNode("div", {
432
+ class: "menu-item delete-btn",
433
+ onClick: vue.withModifiers(($event) => handleMenuAction("delete", item.id), ["stop"])
434
+ }, [
435
+ (vue.openBlock(), vue.createElementBlock("svg", {
436
+ width: "16",
437
+ height: "16",
438
+ viewBox: "0 0 24 24",
439
+ fill: "none",
440
+ stroke: "currentColor",
441
+ "stroke-width": "2"
442
+ }, [
443
+ vue.createElementVNode("polyline", { points: "3 6 5 6 21 6" }),
444
+ vue.createElementVNode("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" })
445
+ ])),
446
+ vue.createElementVNode("span", null, "\u5220\u9664")
447
+ ], 8, ["onClick"])
448
+ ], 40, ["onMouseleave"])) : vue.createCommentVNode("v-if", true)
449
+ ])) : vue.createCommentVNode("v-if", true)
450
+ ], 10, ["onClick"]);
451
+ }),
452
+ 128
453
+ /* KEYED_FRAGMENT */
454
+ ))
455
+ ],
456
+ 64
457
+ /* STABLE_FRAGMENT */
458
+ );
459
+ }),
460
+ 128
461
+ /* KEYED_FRAGMENT */
462
+ ))
463
+ ],
464
+ 34
465
+ /* CLASS, NEED_HYDRATION */
466
+ );
393
467
  };
394
468
  }
395
469
  });
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryList.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/HistoryList.vue"],"sourcesContent":["<template>\n <ul ref=\"historyListRef\" class=\"history-list\" :class=\"{ 'is-robot': isRobot }\">\n <!-- 动态时间分组 -->\n <template v-for=\"group in groupedChatHistory\" :key=\"group.groupKey\">\n <!-- 分组标题 -->\n <li class=\"history-group-header\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"17\"\n viewBox=\"0 0 16 17\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.28906 3.54885C1.28906 3.21748 1.55769 2.94885 1.88906 2.94885H14.1113C14.4427 2.94885 14.7113 3.21748 14.7113 3.54885V12.7155C14.7113 13.0469 14.4427 13.3155 14.1113 13.3155H9.77648L8.42444 14.6676C8.31192 14.7801 8.1593 14.8433 8.00017 14.8433C7.84104 14.8433 7.68843 14.7801 7.57591 14.6676L6.22387 13.3155H1.88906C1.55769 13.3155 1.28906 13.0469 1.28906 12.7155V3.54885ZM2.48906 4.14885V12.1155H6.4724C6.63153 12.1155 6.78414 12.1787 6.89666 12.2913L8.00017 13.3948L9.10369 12.2913C9.21621 12.1787 9.36882 12.1155 9.52795 12.1155H13.5113V4.14885H2.48906Z\"\n fill=\"#1D2129\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.09462 7.53219H8.90649V8.73219H7.09462V7.53219Z\"\n fill=\"#1D2129\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.1505 7.53219H11.9613V8.73219H10.1505V7.53219Z\"\n fill=\"#1D2129\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.03937 7.53219H5.85014V8.73219H4.03937V7.53219Z\"\n fill=\"#1D2129\"\n />\n </svg>\n <div class=\"history-item\">\n <span class=\"history-title\">{{ group.groupName }}</span>\n </div>\n </li>\n <!-- 分组内对话项 -->\n <li\n v-for=\"item in group.items\"\n :key=\"item.id\"\n :ref=\"el => setHistoryItemRef(item.id, el as HTMLElement)\"\n :class=\"[item.id === activeChat ? 'active' : '', 'history-item-container']\"\n @click=\"handleSelectChat(item.id)\"\n >\n <div class=\"history-item\">\n <div\n :ref=\"el => setTooltipContainerRef(item.id, el as HTMLElement)\"\n class=\"tooltip-container\"\n style=\"flex: 1\"\n >\n <template v-if=\"editingId === item.id\">\n <input\n :ref=\"el => setEditInputRef(item.id, el as HTMLInputElement)\"\n v-model=\"editTitle\"\n class=\"edit-title-input\"\n @blur=\"handleRenameComplete(item.id)\"\n @keyup.enter=\"handleRenameComplete(item.id)\"\n @click.stop\n />\n </template>\n <template v-else>\n <span class=\"history-title\">{{ item.title || '新对话' }}</span>\n <div\n v-if=\"shouldShowTooltip(item.id, item.title)\"\n ref=\"tooltipRef\"\n class=\"custom-tooltip\"\n >\n {{ item.title }}\n </div>\n </template>\n </div>\n </div>\n\n <!-- 菜单显示状态 - 添加条件判断隐藏操作按钮 -->\n <div v-if=\"editingId !== item.id\" class=\"item-actions\">\n <button class=\"more-btn\" @click.stop=\"handleToggleActionMenu(item.id)\">...</button>\n\n <div\n v-if=\"state.actionMenuVisible[item.id]\"\n :ref=\"el => (actionMenus[item.id] = el as HTMLElement)\"\n class=\"action-menu\"\n @mouseenter=\"preventMenuClose\"\n @mouseleave=\"delayedCloseMenu(item.id)\"\n >\n <div class=\"menu-item\" @click.stop=\"handleStartRename(item.id)\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\" />\n <path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\" />\n </svg>\n <span>重命名</span>\n </div>\n <div class=\"menu-item delete-btn\" @click.stop=\"handleMenuAction('delete', item.id)\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <polyline points=\"3 6 5 6 21 6\" />\n <path\n d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"\n />\n </svg>\n <span>删除</span>\n </div>\n </div>\n </div>\n </li>\n </template>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, reactive, nextTick, computed, watch, inject } from 'vue';\n\n// 类型定义\ninterface ChatMessage {\n chatId?: string;\n user: string;\n type: string;\n content: string;\n isShowAvatar?: boolean;\n avatar?: string;\n isChating?: boolean;\n thinkContent?: string;\n reasoningContent?: string;\n}\n\ninterface HistoryItem {\n id: string;\n title: string;\n time: Date;\n messages: ChatMessage[];\n}\n\ninterface GroupedChat {\n groupKey: string;\n groupName: string;\n items: HistoryItem[];\n}\n\n// Props\nconst props = defineProps<{\n activeChat: string;\n chatHistory: HistoryItem[];\n}>();\n\nconst isRobot = inject('scripts', []).length > 0;\nconsole.log('isRobot === historyList', isRobot, inject('scripts', []));\n\n// Emits\nconst emit = defineEmits<{\n (e: 'select-chat', id: string): void;\n (e: 'rename-chat', id: string, newTitle: string): void;\n (e: 'delete-chat', id: string): void;\n}>();\n\n// 内部状态\nconst actionMenus = ref<Record<string, HTMLElement | null>>({});\nconst tooltipContainerRefs = ref<Record<string, HTMLElement | null>>({});\nconst editingId = ref<string | null>(null);\nconst editTitle = ref('');\nconst editInputRefs = ref<Record<string, HTMLInputElement | null>>({}); // 修改为对象存储多个引用\n\n// 设置输入框引用\nconst setEditInputRef = (id: string, el: HTMLInputElement | null) => {\n editInputRefs.value[id] = el;\n};\n\nconst setTooltipContainerRef = (id: string, el: HTMLElement | null) => {\n tooltipContainerRefs.value[id] = el;\n};\n\nconst state = reactive<{\n actionMenuVisible: Record<string, boolean>;\n}>({\n actionMenuVisible: {},\n});\n\n// 开始重命名\nconst handleStartRename = (id: string) => {\n const item = props.chatHistory.find(item => item.id === id);\n if (item) {\n editingId.value = id;\n editTitle.value = item.title || '';\n state.actionMenuVisible[id] = false;\n nextTick(() => {\n console.log('editInputRefs.value', editInputRefs.value[id]);\n editInputRefs.value[id]?.focus();\n });\n }\n};\n\n// 完成重命名\nconst handleRenameComplete = (id: string) => {\n if (editingId.value === id) {\n const trimmedTitle = editTitle.value.trim();\n if (trimmedTitle) {\n emit('rename-chat', id, trimmedTitle);\n }\n editingId.value = null;\n }\n};\n\n// 时间分组辅助函数\nconst getGroupKey = (date: Date): string => {\n const now = new Date();\n const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n const yesterday = new Date(today);\n yesterday.setDate(yesterday.getDate() - 1);\n const sevenDaysAgo = new Date(today);\n sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7);\n const thirtyDaysAgo = new Date(today);\n thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);\n\n const targetDate = new Date(date);\n const targetDateNormalized = new Date(\n targetDate.getFullYear(),\n targetDate.getMonth(),\n targetDate.getDate()\n );\n\n if (targetDateNormalized >= today) return 'today';\n if (targetDateNormalized >= yesterday) return 'yesterday';\n if (targetDate >= sevenDaysAgo) return 'sevenDays';\n if (targetDate >= thirtyDaysAgo) return 'thirtyDays';\n return `${targetDate.getFullYear()}-${String(targetDate.getMonth() + 1).padStart(2, '0')}`;\n};\n\n// 格式化分组名称\nconst formatGroupName = (key: string): string => {\n switch (key) {\n case 'today':\n return '今天';\n case 'yesterday':\n return '昨天';\n case 'sevenDays':\n return '7天内';\n case 'thirtyDays':\n return '30天内';\n default:\n return key;\n }\n};\n\nconst handleMenuAction = (action: string, id: string) => {\n if (action === 'delete') {\n emit('delete-chat', id);\n }\n};\n\n// 按时间分组的计算属性\nconst groupedChatHistory = computed<GroupedChat[]>(() => {\n // 复制并排序对话(最新的在前)\n const sortedChats = [...props.chatHistory].sort(\n (a, b) => new Date(b.time).getTime() - new Date(a.time).getTime()\n );\n\n // 分组处理\n const groups: Record<string, HistoryItem[]> = {};\n sortedChats.forEach(chat => {\n const key = getGroupKey(new Date(chat.time));\n if (!groups[key]) groups[key] = [];\n groups[key].push(chat);\n });\n\n // 转换为有序数组\n return Object.entries(groups)\n .map(([key, items]) => ({\n groupKey: key,\n groupName: formatGroupName(key),\n items,\n }))\n .sort((a, b) => {\n // 自定义排序确保分组顺序正确\n const order: Record<string, number> = {\n today: 0,\n yesterday: 1,\n sevenDays: 2,\n thirtyDays: 3,\n };\n return (\n (order[a.groupKey] ?? 100) - (order[b.groupKey] ?? 100) ||\n b.groupKey.localeCompare(a.groupKey)\n );\n });\n});\n\n// 修改缓存类型定义\ninterface TooltipCacheItem {\n value: boolean;\n timestamp: number;\n}\n\n// 使用Map存储每个ID的测量结果,避免重复计算\nconst tooltipMeasurementCache = new Map<string, TooltipCacheItem>();\n\nconst clearTooltipCache = () => {\n tooltipMeasurementCache.clear();\n};\n\nwatch(() => props.chatHistory, clearTooltipCache);\n\n// 改进shouldShowTooltip函数\nconst shouldShowTooltip = (id: string, title: string) => {\n if (!title || editingId.value === id) return false;\n\n // 获取容器元素\n const containerEl = tooltipContainerRefs.value[id];\n if (!containerEl) {\n return false;\n }\n\n // 强制重新计算布局\n containerEl.getBoundingClientRect();\n // 获取容器的实际宽度(包括padding和border)\n const containerStyle = window.getComputedStyle(containerEl);\n const containerWidth = containerEl.offsetWidth;\n const containerPaddingX =\n parseFloat(containerStyle.paddingLeft) + parseFloat(containerStyle.paddingRight);\n const containerBorderX =\n parseFloat(containerStyle.borderLeftWidth) + parseFloat(containerStyle.borderRightWidth);\n // 内容区域宽度 = 总宽度 - padding - border\n const contentWidth = containerWidth - containerPaddingX - containerBorderX;\n\n // 如果容器宽度为0,不缓存结果,返回false\n if (containerWidth === 0) {\n return false;\n }\n\n // 检查缓存,但添加时间戳以支持定期更新\n const now = Date.now();\n const cacheKey = `${id}_${containerWidth}_${contentWidth}`; // 改进缓存键\n if (tooltipMeasurementCache.has(cacheKey)) {\n const cached = tooltipMeasurementCache.get(cacheKey);\n // 如果缓存项存在且未过期(5秒)\n if (cached && now - cached.timestamp < 5000) {\n return cached.value;\n }\n }\n\n // 创建临时元素测量文本宽度\n const tempElement = document.createElement('span');\n tempElement.className = 'history-title';\n tempElement.textContent = title;\n\n // 复制实际元素的样式\n const historyTitleEl = containerEl.querySelector('.history-title');\n if (historyTitleEl) {\n const titleStyle = window.getComputedStyle(historyTitleEl);\n // 复制所有相关样式\n tempElement.style.fontSize = titleStyle.fontSize;\n tempElement.style.fontFamily = titleStyle.fontFamily;\n tempElement.style.fontWeight = titleStyle.fontWeight;\n tempElement.style.letterSpacing = titleStyle.letterSpacing;\n tempElement.style.wordSpacing = titleStyle.wordSpacing;\n tempElement.style.textTransform = titleStyle.textTransform;\n }\n\n tempElement.style.visibility = 'hidden';\n tempElement.style.position = 'absolute';\n tempElement.style.whiteSpace = 'nowrap';\n document.body.appendChild(tempElement);\n\n // 强制重绘\n tempElement.getBoundingClientRect();\n const textWidth = tempElement.offsetWidth;\n\n document.body.removeChild(tempElement);\n\n // 添加5px阈值,避免边框等因素导致的误差\n const shouldShow = textWidth > contentWidth + 5;\n\n // 缓存结果,包含时间戳\n tooltipMeasurementCache.set(cacheKey, {\n value: shouldShow,\n timestamp: now,\n });\n\n return shouldShow;\n};\n\n// 事件处理\nconst handleSelectChat = (id: string) => {\n if (editingId.value === null) {\n emit('select-chat', id);\n resetAllMenus();\n }\n};\n\nconst resetAllMenus = () => {\n Object.keys(state.actionMenuVisible).forEach(key => {\n state.actionMenuVisible[key] = false;\n });\n};\n\nconst handleToggleActionMenu = (id: string, event?: MouseEvent) => {\n if (editingId.value === null) {\n event?.stopPropagation();\n props.chatHistory.forEach(item => {\n item.id !== id && (state.actionMenuVisible[item.id] = false);\n });\n state.actionMenuVisible[id] = !state.actionMenuVisible[id];\n\n // 添加动态定位逻辑\n if (state.actionMenuVisible[id]) {\n positionActionMenu(id);\n }\n }\n};\n\n// 添加对history-list容器的引用\nconst historyListRef = ref<HTMLUListElement | null>(null);\n\n// 添加对历史记录项的引用\nconst historyItemRefs = ref<Record<string, HTMLElement | null>>({});\n\nconst setHistoryItemRef = (id: string, el: HTMLElement | null) => {\n historyItemRefs.value[id] = el;\n};\n\n// 添加菜单定位函数\nconst positionActionMenu = (id: string) => {\n nextTick(() => {\n const menuEl = actionMenus.value[id];\n const historyItemEl = historyItemRefs.value[id];\n if (!menuEl || !historyItemEl || !historyListRef.value) return;\n\n // 重置样式\n menuEl.style.top = '';\n menuEl.style.bottom = '';\n menuEl.style.transform = '';\n menuEl.style.marginTop = '';\n menuEl.style.position = 'absolute';\n\n const menuHeight = menuEl.offsetHeight;\n const historyItemRect = historyItemEl.getBoundingClientRect();\n const listRect = historyListRef.value.getBoundingClientRect();\n const buttonEl = menuEl.previousElementSibling as HTMLElement;\n\n // 计算历史记录项底部到列表容器底部的距离\n const distanceToBottom = listRect.bottom - historyItemRect.bottom;\n\n // 如果距离小于菜单高度,则显示在上方\n if (distanceToBottom < menuHeight) {\n if (buttonEl) {\n // const buttonRect = buttonEl.getBoundingClientRect();\n // 直接设置菜单顶部位置为按钮顶部减去菜单高度\n menuEl.style.top = `${-menuHeight}px`;\n menuEl.style.bottom = 'auto';\n menuEl.style.transform = 'none';\n }\n } else {\n // 否则显示在下方\n menuEl.style.top = '100%';\n menuEl.style.bottom = 'auto';\n menuEl.style.transform = 'translateY(0)';\n }\n });\n};\n\n// 添加菜单关闭延迟逻辑\nlet menuCloseTimer: number | null = null;\n\nconst preventMenuClose = () => {\n if (menuCloseTimer) {\n clearTimeout(menuCloseTimer);\n menuCloseTimer = null;\n }\n};\n\nconst delayedCloseMenu = (id: string) => {\n preventMenuClose();\n menuCloseTimer = window.setTimeout(() => {\n state.actionMenuVisible[id] = false;\n }, 200);\n};\n</script>\n\n<!-- <style scoped>\n/* @import '../../style/TouchHistory.less'; */\n@import '../../style/HistoryList.less';\n</style> -->\n"],"names":["inject","ref","reactive","item","nextTick","computed","watch","_createElementBlock","_normalizeClass","_Fragment","_renderList","_createElementVNode","_toDisplayString","_openBlock","activeChat","_withKeys","_withModifiers"],"mappings":"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"}
1
+ {"version":3,"file":"HistoryList.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/HistoryList.vue"],"sourcesContent":["<template>\n <ul\n ref=\"historyListRef\"\n class=\"history-list\"\n :class=\"{ 'is-robot': isRobot }\"\n @scroll=\"handleScroll\"\n >\n <!-- 动态时间分组 -->\n <template v-for=\"group in groupedChatHistory\" :key=\"group.groupKey\">\n <!-- 分组标题 -->\n <li class=\"history-group-header\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"17\"\n viewBox=\"0 0 16 17\"\n fill=\"none\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.28906 3.54885C1.28906 3.21748 1.55769 2.94885 1.88906 2.94885H14.1113C14.4427 2.94885 14.7113 3.21748 14.7113 3.54885V12.7155C14.7113 13.0469 14.4427 13.3155 14.1113 13.3155H9.77648L8.42444 14.6676C8.31192 14.7801 8.1593 14.8433 8.00017 14.8433C7.84104 14.8433 7.68843 14.7801 7.57591 14.6676L6.22387 13.3155H1.88906C1.55769 13.3155 1.28906 13.0469 1.28906 12.7155V3.54885ZM2.48906 4.14885V12.1155H6.4724C6.63153 12.1155 6.78414 12.1787 6.89666 12.2913L8.00017 13.3948L9.10369 12.2913C9.21621 12.1787 9.36882 12.1155 9.52795 12.1155H13.5113V4.14885H2.48906Z\"\n fill=\"#1D2129\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.09462 7.53219H8.90649V8.73219H7.09462V7.53219Z\"\n fill=\"#1D2129\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.1505 7.53219H11.9613V8.73219H10.1505V7.53219Z\"\n fill=\"#1D2129\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.03937 7.53219H5.85014V8.73219H4.03937V7.53219Z\"\n fill=\"#1D2129\"\n />\n </svg>\n <div class=\"history-item\">\n <span class=\"history-title\">{{ group.groupName }}</span>\n </div>\n </li>\n <!-- 分组内对话项 -->\n <li\n v-for=\"item in group.items\"\n :key=\"item.id\"\n :ref=\"el => setHistoryItemRef(item.id, el as HTMLElement)\"\n :class=\"[item.id === activeChat ? 'active' : '', 'history-item-container']\"\n @click=\"handleSelectChat(item.id)\"\n >\n <div class=\"history-item\">\n <div\n :ref=\"el => setTooltipContainerRef(item.id, el as HTMLElement)\"\n class=\"tooltip-container\"\n style=\"flex: 1\"\n >\n <template v-if=\"editingId === item.id\">\n <input\n :ref=\"el => setEditInputRef(item.id, el as HTMLInputElement)\"\n v-model=\"editTitle\"\n class=\"edit-title-input\"\n @blur=\"handleRenameComplete(item.id)\"\n @keyup.enter=\"handleRenameComplete(item.id)\"\n @click.stop\n />\n </template>\n <template v-else>\n <span class=\"history-title\">{{ item.title || '新对话' }}</span>\n <div\n v-if=\"shouldShowTooltip(item.id, item.title)\"\n ref=\"tooltipRef\"\n class=\"custom-tooltip\"\n >\n {{ item.title }}\n </div>\n </template>\n </div>\n </div>\n\n <!-- 菜单显示状态 - 添加条件判断隐藏操作按钮 -->\n <div v-if=\"editingId !== item.id\" class=\"item-actions\">\n <button class=\"more-btn\" @click.stop=\"handleToggleActionMenu(item.id)\">...</button>\n\n <div\n v-if=\"state.actionMenuVisible[item.id]\"\n :ref=\"el => (actionMenus[item.id] = el as HTMLElement)\"\n class=\"action-menu\"\n @mouseenter=\"preventMenuClose\"\n @mouseleave=\"delayedCloseMenu(item.id)\"\n >\n <div class=\"menu-item\" @click.stop=\"handleStartRename(item.id)\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\" />\n <path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\" />\n </svg>\n <span>重命名</span>\n </div>\n <div class=\"menu-item delete-btn\" @click.stop=\"handleMenuAction('delete', item.id)\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <polyline points=\"3 6 5 6 21 6\" />\n <path\n d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"\n />\n </svg>\n <span>删除</span>\n </div>\n </div>\n </div>\n </li>\n </template>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, reactive, nextTick, computed, watch, inject } from 'vue';\n\n// 类型定义\ninterface ChatMessage {\n chatId?: string;\n user: string;\n type: string;\n content: string;\n isShowAvatar?: boolean;\n avatar?: string;\n isChating?: boolean;\n thinkContent?: string;\n reasoningContent?: string;\n}\n\ninterface HistoryItem {\n id: string;\n title: string;\n time: Date;\n messages: ChatMessage[];\n}\n\ninterface GroupedChat {\n groupKey: string;\n groupName: string;\n items: HistoryItem[];\n}\n\n// Props\nconst props = defineProps<{\n activeChat: string;\n chatHistory: HistoryItem[];\n}>();\n\nconst isRobot = inject('scripts', []).length > 0;\n\n// Emits\nconst emit = defineEmits<{\n (e: 'select-chat', id: string): void;\n (e: 'rename-chat', id: string, newTitle: string): void;\n (e: 'delete-chat', id: string): void;\n}>();\n\n// 内部状态\nconst actionMenus = ref<Record<string, HTMLElement | null>>({});\nconst tooltipContainerRefs = ref<Record<string, HTMLElement | null>>({});\nconst editingId = ref<string | null>(null);\nconst editTitle = ref('');\nconst editInputRefs = ref<Record<string, HTMLInputElement | null>>({}); // 修改为对象存储多个引用\n\n// 设置输入框引用\nconst setEditInputRef = (id: string, el: HTMLInputElement | null) => {\n editInputRefs.value[id] = el;\n};\n\nconst setTooltipContainerRef = (id: string, el: HTMLElement | null) => {\n tooltipContainerRefs.value[id] = el;\n};\n\nconst state = reactive<{\n actionMenuVisible: Record<string, boolean>;\n}>({\n actionMenuVisible: {},\n});\n\nconst handlePageChange = inject<() => void>('handlePageChange', () => {\n console.warn('未提供handlePageChange函数');\n});\n\n// 开始重命名\nlet scrollTimeout: ReturnType<typeof setTimeout> | null = null;\nconst handleScroll = (event: Event) => {\n if (scrollTimeout) {\n clearTimeout(scrollTimeout);\n }\n scrollTimeout = setTimeout(() => {\n const container = event.target as HTMLElement;\n const { scrollTop, scrollHeight, clientHeight } = container;\n const isBottom = scrollHeight - scrollTop <= clientHeight + 10; // 10px 缓冲\n if (isBottom) {\n handlePageChange();\n }\n }, 200);\n};\n\nconst handleStartRename = (id: string) => {\n const item = props.chatHistory.find(item => item.id === id);\n if (item) {\n editingId.value = id;\n editTitle.value = item.title || '';\n state.actionMenuVisible[id] = false;\n nextTick(() => {\n editInputRefs.value[id]?.focus();\n });\n }\n};\n\n// 完成重命名\nconst handleRenameComplete = (id: string) => {\n if (editingId.value === id) {\n const trimmedTitle = editTitle.value.trim();\n if (trimmedTitle) {\n emit('rename-chat', id, trimmedTitle);\n }\n editingId.value = null;\n }\n};\n\n// 时间分组辅助函数\nconst getGroupKey = (date: Date): string => {\n const now = new Date();\n const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n const yesterday = new Date(today);\n yesterday.setDate(yesterday.getDate() - 1);\n const sevenDaysAgo = new Date(today);\n sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7);\n const thirtyDaysAgo = new Date(today);\n thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);\n\n const targetDate = new Date(date);\n const targetDateNormalized = new Date(\n targetDate.getFullYear(),\n targetDate.getMonth(),\n targetDate.getDate()\n );\n\n if (targetDateNormalized >= today) return 'today';\n if (targetDateNormalized >= yesterday) return 'yesterday';\n if (targetDate >= sevenDaysAgo) return 'sevenDays';\n if (targetDate >= thirtyDaysAgo) return 'thirtyDays';\n return `${targetDate.getFullYear()}-${String(targetDate.getMonth() + 1).padStart(2, '0')}`;\n};\n\n// 格式化分组名称\nconst formatGroupName = (key: string): string => {\n switch (key) {\n case 'today':\n return '今天';\n case 'yesterday':\n return '昨天';\n case 'sevenDays':\n return '7天内';\n case 'thirtyDays':\n return '30天内';\n default:\n return key;\n }\n};\n\nconst handleMenuAction = (action: string, id: string) => {\n if (action === 'delete') {\n emit('delete-chat', id);\n }\n};\n\n// 按时间分组的计算属性\nconst groupedChatHistory = computed<GroupedChat[]>(() => {\n // 复制并排序对话(最新的在前)\n const sortedChats = [...props.chatHistory].sort(\n (a, b) => new Date(b.time).getTime() - new Date(a.time).getTime()\n );\n\n // 分组处理\n const groups: Record<string, HistoryItem[]> = {};\n sortedChats.forEach(chat => {\n const key = getGroupKey(new Date(chat.time));\n if (!groups[key]) groups[key] = [];\n groups[key].push(chat);\n });\n\n // 转换为有序数组\n return Object.entries(groups)\n .map(([key, items]) => ({\n groupKey: key,\n groupName: formatGroupName(key),\n items,\n }))\n .sort((a, b) => {\n // 自定义排序确保分组顺序正确\n const order: Record<string, number> = {\n today: 0,\n yesterday: 1,\n sevenDays: 2,\n thirtyDays: 3,\n };\n return (\n (order[a.groupKey] ?? 100) - (order[b.groupKey] ?? 100) ||\n b.groupKey.localeCompare(a.groupKey)\n );\n });\n});\n\n// 修改缓存类型定义\ninterface TooltipCacheItem {\n value: boolean;\n timestamp: number;\n}\n\n// 使用Map存储每个ID的测量结果,避免重复计算\nconst tooltipMeasurementCache = new Map<string, TooltipCacheItem>();\n\nconst clearTooltipCache = () => {\n tooltipMeasurementCache.clear();\n};\n\nwatch(() => props.chatHistory, clearTooltipCache);\n\n// 改进shouldShowTooltip函数\nconst shouldShowTooltip = (id: string, title: string) => {\n if (!title || editingId.value === id) return false;\n\n // 获取容器元素\n const containerEl = tooltipContainerRefs.value[id];\n if (!containerEl) {\n return false;\n }\n\n // 强制重新计算布局\n containerEl.getBoundingClientRect();\n // 获取容器的实际宽度(包括padding和border)\n const containerStyle = window.getComputedStyle(containerEl);\n const containerWidth = containerEl.offsetWidth;\n const containerPaddingX =\n parseFloat(containerStyle.paddingLeft) + parseFloat(containerStyle.paddingRight);\n const containerBorderX =\n parseFloat(containerStyle.borderLeftWidth) + parseFloat(containerStyle.borderRightWidth);\n // 内容区域宽度 = 总宽度 - padding - border\n const contentWidth = containerWidth - containerPaddingX - containerBorderX;\n\n // 如果容器宽度为0,不缓存结果,返回false\n if (containerWidth === 0) {\n return false;\n }\n\n // 检查缓存,但添加时间戳以支持定期更新\n const now = Date.now();\n const cacheKey = `${id}_${containerWidth}_${contentWidth}`; // 改进缓存键\n if (tooltipMeasurementCache.has(cacheKey)) {\n const cached = tooltipMeasurementCache.get(cacheKey);\n // 如果缓存项存在且未过期(5秒)\n if (cached && now - cached.timestamp < 5000) {\n return cached.value;\n }\n }\n\n // 创建临时元素测量文本宽度\n const tempElement = document.createElement('span');\n tempElement.className = 'history-title';\n tempElement.textContent = title;\n\n // 复制实际元素的样式\n const historyTitleEl = containerEl.querySelector('.history-title');\n if (historyTitleEl) {\n const titleStyle = window.getComputedStyle(historyTitleEl);\n // 复制所有相关样式\n tempElement.style.fontSize = titleStyle.fontSize;\n tempElement.style.fontFamily = titleStyle.fontFamily;\n tempElement.style.fontWeight = titleStyle.fontWeight;\n tempElement.style.letterSpacing = titleStyle.letterSpacing;\n tempElement.style.wordSpacing = titleStyle.wordSpacing;\n tempElement.style.textTransform = titleStyle.textTransform;\n }\n\n tempElement.style.visibility = 'hidden';\n tempElement.style.position = 'absolute';\n tempElement.style.whiteSpace = 'nowrap';\n document.body.appendChild(tempElement);\n\n // 强制重绘\n tempElement.getBoundingClientRect();\n const textWidth = tempElement.offsetWidth;\n\n document.body.removeChild(tempElement);\n\n // 添加5px阈值,避免边框等因素导致的误差\n const shouldShow = textWidth > contentWidth + 5;\n\n // 缓存结果,包含时间戳\n tooltipMeasurementCache.set(cacheKey, {\n value: shouldShow,\n timestamp: now,\n });\n\n return shouldShow;\n};\n\n// 事件处理\nconst handleSelectChat = (id: string) => {\n if (editingId.value === null) {\n emit('select-chat', id);\n resetAllMenus();\n }\n};\n\nconst resetAllMenus = () => {\n Object.keys(state.actionMenuVisible).forEach(key => {\n state.actionMenuVisible[key] = false;\n });\n};\n\nconst handleToggleActionMenu = (id: string, event?: MouseEvent) => {\n if (editingId.value === null) {\n event?.stopPropagation();\n props.chatHistory.forEach(item => {\n item.id !== id && (state.actionMenuVisible[item.id] = false);\n });\n state.actionMenuVisible[id] = !state.actionMenuVisible[id];\n\n // 添加动态定位逻辑\n if (state.actionMenuVisible[id]) {\n positionActionMenu(id);\n }\n }\n};\n\n// 添加对history-list容器的引用\nconst historyListRef = ref<HTMLUListElement | null>(null);\n\n// 添加对历史记录项的引用\nconst historyItemRefs = ref<Record<string, HTMLElement | null>>({});\n\nconst setHistoryItemRef = (id: string, el: HTMLElement | null) => {\n historyItemRefs.value[id] = el;\n};\n\n// 添加菜单定位函数\nconst positionActionMenu = (id: string) => {\n nextTick(() => {\n const menuEl = actionMenus.value[id];\n const historyItemEl = historyItemRefs.value[id];\n if (!menuEl || !historyItemEl || !historyListRef.value) return;\n\n // 重置样式\n menuEl.style.top = '';\n menuEl.style.bottom = '';\n menuEl.style.transform = '';\n menuEl.style.marginTop = '';\n menuEl.style.position = 'absolute';\n\n const menuHeight = menuEl.offsetHeight;\n const historyItemRect = historyItemEl.getBoundingClientRect();\n const listRect = historyListRef.value.getBoundingClientRect();\n const buttonEl = menuEl.previousElementSibling as HTMLElement;\n\n // 计算历史记录项底部到列表容器底部的距离\n const distanceToBottom = listRect.bottom - historyItemRect.bottom;\n\n // 如果距离小于菜单高度,则显示在上方\n if (distanceToBottom < menuHeight) {\n if (buttonEl) {\n // const buttonRect = buttonEl.getBoundingClientRect();\n // 直接设置菜单顶部位置为按钮顶部减去菜单高度\n menuEl.style.top = `${-menuHeight}px`;\n menuEl.style.bottom = 'auto';\n menuEl.style.transform = 'none';\n }\n } else {\n // 否则显示在下方\n menuEl.style.top = '100%';\n menuEl.style.bottom = 'auto';\n menuEl.style.transform = 'translateY(0)';\n }\n });\n};\n\n// 添加菜单关闭延迟逻辑\nlet menuCloseTimer: number | null = null;\n\nconst preventMenuClose = () => {\n if (menuCloseTimer) {\n clearTimeout(menuCloseTimer);\n menuCloseTimer = null;\n }\n};\n\nconst delayedCloseMenu = (id: string) => {\n preventMenuClose();\n menuCloseTimer = window.setTimeout(() => {\n state.actionMenuVisible[id] = false;\n }, 200);\n};\n</script>\n\n<!-- <style scoped>\n/* @import '../../style/TouchHistory.less'; */\n@import '../../style/HistoryList.less';\n</style> -->\n"],"names":["inject","ref","reactive","item","nextTick","computed","watch","_createElementBlock","_normalizeClass","_createCommentVNode","_Fragment","_renderList","_createElementVNode","_toDisplayString","_openBlock","activeChat","_withKeys","_withModifiers"],"mappings":"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"}
@@ -3,8 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var HistorySidebar_vue_vue_type_script_setup_true_lang = require('./HistorySidebar.vue2.js');
6
+ var _pluginVue_exportHelper = require('../../../../../_virtual/_plugin-vue_export-helper.js');
6
7
 
8
+ var HistorySidebar = /* @__PURE__ */ _pluginVue_exportHelper.default(HistorySidebar_vue_vue_type_script_setup_true_lang.default, [["__file", "HistorySidebar.vue"]]);
7
9
 
8
-
9
- exports.default = HistorySidebar_vue_vue_type_script_setup_true_lang.default;
10
+ exports.default = HistorySidebar;
10
11
  //# sourceMappingURL=HistorySidebar.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HistorySidebar.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"HistorySidebar.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}