@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
@@ -1,4 +1,4 @@
1
- import { defineComponent, inject, ref, reactive, computed, watch, openBlock, createElementBlock, normalizeClass, Fragment, renderList, createElementVNode, toDisplayString, withDirectives, withKeys, withModifiers, vModelText, createCommentVNode, nextTick } from 'vue';
1
+ import { defineComponent, inject, ref, reactive, computed, watch, openBlock, createElementBlock, normalizeClass, createCommentVNode, Fragment, renderList, createElementVNode, toDisplayString, withDirectives, withKeys, withModifiers, vModelText, nextTick } from 'vue';
2
2
 
3
3
  var _sfc_main = /* @__PURE__ */ defineComponent({
4
4
  __name: "HistoryList",
@@ -10,7 +10,6 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
10
10
  setup(__props, { emit: __emit }) {
11
11
  const props = __props;
12
12
  const isRobot = inject("scripts", []).length > 0;
13
- console.log("isRobot === historyList", isRobot, inject("scripts", []));
14
13
  const emit = __emit;
15
14
  const actionMenus = ref({});
16
15
  const tooltipContainerRefs = ref({});
@@ -26,6 +25,23 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
26
25
  const state = reactive({
27
26
  actionMenuVisible: {}
28
27
  });
28
+ const handlePageChange = inject("handlePageChange", () => {
29
+ console.warn("\u672A\u63D0\u4F9BhandlePageChange\u51FD\u6570");
30
+ });
31
+ let scrollTimeout = null;
32
+ const handleScroll = (event) => {
33
+ if (scrollTimeout) {
34
+ clearTimeout(scrollTimeout);
35
+ }
36
+ scrollTimeout = setTimeout(() => {
37
+ const container = event.target;
38
+ const { scrollTop, scrollHeight, clientHeight } = container;
39
+ const isBottom = scrollHeight - scrollTop <= clientHeight + 10;
40
+ if (isBottom) {
41
+ handlePageChange();
42
+ }
43
+ }, 200);
44
+ };
29
45
  const handleStartRename = (id) => {
30
46
  const item = props.chatHistory.find((item2) => item2.id === id);
31
47
  if (item) {
@@ -34,7 +50,6 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
34
50
  state.actionMenuVisible[id] = false;
35
51
  nextTick(() => {
36
52
  var _a;
37
- console.log("editInputRefs.value", editInputRefs.value[id]);
38
53
  (_a = editInputRefs.value[id]) == null ? void 0 : _a.focus();
39
54
  });
40
55
  }
@@ -245,147 +260,206 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
245
260
  }, 200);
246
261
  };
247
262
  return (_ctx, _cache) => {
248
- return openBlock(), createElementBlock("ul", {
249
- ref_key: "historyListRef",
250
- ref: historyListRef,
251
- class: normalizeClass(["history-list", { "is-robot": isRobot }])
252
- }, [
253
- (openBlock(true), createElementBlock(Fragment, null, renderList(groupedChatHistory.value, (group) => {
254
- return openBlock(), createElementBlock(Fragment, {
255
- key: group.groupKey
256
- }, [
257
- createElementVNode("li", { class: "history-group-header" }, [
258
- (openBlock(), createElementBlock("svg", {
259
- xmlns: "http://www.w3.org/2000/svg",
260
- width: "16",
261
- height: "17",
262
- viewBox: "0 0 16 17",
263
- fill: "none"
264
- }, [
265
- createElementVNode("path", {
266
- "fill-rule": "evenodd",
267
- "clip-rule": "evenodd",
268
- 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",
269
- fill: "#1D2129"
270
- }),
271
- createElementVNode("path", {
272
- "fill-rule": "evenodd",
273
- "clip-rule": "evenodd",
274
- d: "M7.09462 7.53219H8.90649V8.73219H7.09462V7.53219Z",
275
- fill: "#1D2129"
276
- }),
277
- createElementVNode("path", {
278
- "fill-rule": "evenodd",
279
- "clip-rule": "evenodd",
280
- d: "M10.1505 7.53219H11.9613V8.73219H10.1505V7.53219Z",
281
- fill: "#1D2129"
282
- }),
283
- createElementVNode("path", {
284
- "fill-rule": "evenodd",
285
- "clip-rule": "evenodd",
286
- d: "M4.03937 7.53219H5.85014V8.73219H4.03937V7.53219Z",
287
- fill: "#1D2129"
288
- })
289
- ])),
290
- createElementVNode("div", { class: "history-item" }, [
291
- createElementVNode("span", { class: "history-title" }, toDisplayString(group.groupName), 1)
292
- ])
293
- ]),
294
- (openBlock(true), createElementBlock(Fragment, null, renderList(group.items, (item) => {
295
- return openBlock(), createElementBlock("li", {
296
- key: item.id,
297
- ref_for: true,
298
- ref: (el) => setHistoryItemRef(item.id, el),
299
- class: normalizeClass([item.id === _ctx.activeChat ? "active" : "", "history-item-container"]),
300
- onClick: ($event) => handleSelectChat(item.id)
301
- }, [
302
- createElementVNode("div", { class: "history-item" }, [
303
- createElementVNode("div", {
304
- ref_for: true,
305
- ref: (el) => setTooltipContainerRef(item.id, el),
306
- class: "tooltip-container",
307
- style: { "flex": "1" }
308
- }, [
309
- editingId.value === item.id ? withDirectives((openBlock(), createElementBlock("input", {
310
- key: 0,
311
- ref_for: true,
312
- ref: (el) => setEditInputRef(item.id, el),
313
- "onUpdate:modelValue": ($event) => editTitle.value = $event,
314
- class: "edit-title-input",
315
- onBlur: ($event) => handleRenameComplete(item.id),
316
- onKeyup: withKeys(($event) => handleRenameComplete(item.id), ["enter"]),
317
- onClick: withModifiers(() => {
318
- }, ["stop"])
319
- }, null, 40, ["onUpdate:modelValue", "onBlur", "onKeyup", "onClick"])), [
320
- [vModelText, editTitle.value]
321
- ]) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
322
- createElementVNode("span", { class: "history-title" }, toDisplayString(item.title || "\u65B0\u5BF9\u8BDD"), 1),
323
- shouldShowTooltip(item.id, item.title) ? (openBlock(), createElementBlock("div", {
324
- key: 0,
325
- ref_for: true,
326
- ref: "tooltipRef",
327
- class: "custom-tooltip"
328
- }, toDisplayString(item.title), 513)) : createCommentVNode("", true)
329
- ], 64))
330
- ], 512)
331
- ]),
332
- editingId.value !== item.id ? (openBlock(), createElementBlock("div", {
333
- key: 0,
334
- class: "item-actions"
335
- }, [
336
- createElementVNode("button", {
337
- class: "more-btn",
338
- onClick: withModifiers(($event) => handleToggleActionMenu(item.id), ["stop"])
339
- }, "...", 8, ["onClick"]),
340
- state.actionMenuVisible[item.id] ? (openBlock(), createElementBlock("div", {
341
- key: 0,
342
- ref_for: true,
343
- ref: (el) => actionMenus.value[item.id] = el,
344
- class: "action-menu",
345
- onMouseenter: preventMenuClose,
346
- onMouseleave: ($event) => delayedCloseMenu(item.id)
347
- }, [
348
- createElementVNode("div", {
349
- class: "menu-item",
350
- onClick: withModifiers(($event) => handleStartRename(item.id), ["stop"])
351
- }, [
352
- (openBlock(), createElementBlock("svg", {
353
- width: "16",
354
- height: "16",
355
- viewBox: "0 0 24 24",
356
- fill: "none",
357
- stroke: "currentColor",
358
- "stroke-width": "2"
359
- }, [
360
- createElementVNode("path", { d: "M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" }),
361
- createElementVNode("path", { d: "M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" })
362
- ])),
363
- createElementVNode("span", null, "\u91CD\u547D\u540D")
364
- ], 8, ["onClick"]),
365
- createElementVNode("div", {
366
- class: "menu-item delete-btn",
367
- onClick: withModifiers(($event) => handleMenuAction("delete", item.id), ["stop"])
263
+ return openBlock(), createElementBlock(
264
+ "ul",
265
+ {
266
+ ref_key: "historyListRef",
267
+ ref: historyListRef,
268
+ class: normalizeClass(["history-list", { "is-robot": isRobot }]),
269
+ onScroll: handleScroll
270
+ },
271
+ [
272
+ createCommentVNode(" \u52A8\u6001\u65F6\u95F4\u5206\u7EC4 "),
273
+ (openBlock(true), createElementBlock(
274
+ Fragment,
275
+ null,
276
+ renderList(groupedChatHistory.value, (group) => {
277
+ return openBlock(), createElementBlock(
278
+ Fragment,
279
+ {
280
+ key: group.groupKey
281
+ },
282
+ [
283
+ createCommentVNode(" \u5206\u7EC4\u6807\u9898 "),
284
+ createElementVNode("li", { class: "history-group-header" }, [
285
+ (openBlock(), createElementBlock("svg", {
286
+ xmlns: "http://www.w3.org/2000/svg",
287
+ width: "16",
288
+ height: "17",
289
+ viewBox: "0 0 16 17",
290
+ fill: "none"
368
291
  }, [
369
- (openBlock(), createElementBlock("svg", {
370
- width: "16",
371
- height: "16",
372
- viewBox: "0 0 24 24",
373
- fill: "none",
374
- stroke: "currentColor",
375
- "stroke-width": "2"
292
+ createElementVNode("path", {
293
+ "fill-rule": "evenodd",
294
+ "clip-rule": "evenodd",
295
+ 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",
296
+ fill: "#1D2129"
297
+ }),
298
+ createElementVNode("path", {
299
+ "fill-rule": "evenodd",
300
+ "clip-rule": "evenodd",
301
+ d: "M7.09462 7.53219H8.90649V8.73219H7.09462V7.53219Z",
302
+ fill: "#1D2129"
303
+ }),
304
+ createElementVNode("path", {
305
+ "fill-rule": "evenodd",
306
+ "clip-rule": "evenodd",
307
+ d: "M10.1505 7.53219H11.9613V8.73219H10.1505V7.53219Z",
308
+ fill: "#1D2129"
309
+ }),
310
+ createElementVNode("path", {
311
+ "fill-rule": "evenodd",
312
+ "clip-rule": "evenodd",
313
+ d: "M4.03937 7.53219H5.85014V8.73219H4.03937V7.53219Z",
314
+ fill: "#1D2129"
315
+ })
316
+ ])),
317
+ createElementVNode("div", { class: "history-item" }, [
318
+ createElementVNode(
319
+ "span",
320
+ { class: "history-title" },
321
+ toDisplayString(group.groupName),
322
+ 1
323
+ /* TEXT */
324
+ )
325
+ ])
326
+ ]),
327
+ createCommentVNode(" \u5206\u7EC4\u5185\u5BF9\u8BDD\u9879 "),
328
+ (openBlock(true), createElementBlock(
329
+ Fragment,
330
+ null,
331
+ renderList(group.items, (item) => {
332
+ return openBlock(), createElementBlock("li", {
333
+ key: item.id,
334
+ ref_for: true,
335
+ ref: (el) => setHistoryItemRef(item.id, el),
336
+ class: normalizeClass([item.id === _ctx.activeChat ? "active" : "", "history-item-container"]),
337
+ onClick: ($event) => handleSelectChat(item.id)
376
338
  }, [
377
- createElementVNode("polyline", { points: "3 6 5 6 21 6" }),
378
- 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" })
379
- ])),
380
- createElementVNode("span", null, "\u5220\u9664")
381
- ], 8, ["onClick"])
382
- ], 40, ["onMouseleave"])) : createCommentVNode("", true)
383
- ])) : createCommentVNode("", true)
384
- ], 10, ["onClick"]);
385
- }), 128))
386
- ], 64);
387
- }), 128))
388
- ], 2);
339
+ createElementVNode("div", { class: "history-item" }, [
340
+ createElementVNode(
341
+ "div",
342
+ {
343
+ ref_for: true,
344
+ ref: (el) => setTooltipContainerRef(item.id, el),
345
+ class: "tooltip-container",
346
+ style: { "flex": "1" }
347
+ },
348
+ [
349
+ editingId.value === item.id ? withDirectives((openBlock(), createElementBlock("input", {
350
+ key: 0,
351
+ ref_for: true,
352
+ ref: (el) => setEditInputRef(item.id, el),
353
+ "onUpdate:modelValue": ($event) => editTitle.value = $event,
354
+ class: "edit-title-input",
355
+ onBlur: ($event) => handleRenameComplete(item.id),
356
+ onKeyup: withKeys(($event) => handleRenameComplete(item.id), ["enter"]),
357
+ onClick: withModifiers(() => {
358
+ }, ["stop"])
359
+ }, null, 40, ["onUpdate:modelValue", "onBlur", "onKeyup", "onClick"])), [
360
+ [vModelText, editTitle.value]
361
+ ]) : (openBlock(), createElementBlock(
362
+ Fragment,
363
+ { key: 1 },
364
+ [
365
+ createElementVNode(
366
+ "span",
367
+ { class: "history-title" },
368
+ toDisplayString(item.title || "\u65B0\u5BF9\u8BDD"),
369
+ 1
370
+ /* TEXT */
371
+ ),
372
+ shouldShowTooltip(item.id, item.title) ? (openBlock(), createElementBlock(
373
+ "div",
374
+ {
375
+ key: 0,
376
+ ref_for: true,
377
+ ref: "tooltipRef",
378
+ class: "custom-tooltip"
379
+ },
380
+ toDisplayString(item.title),
381
+ 513
382
+ /* TEXT, NEED_PATCH */
383
+ )) : createCommentVNode("v-if", true)
384
+ ],
385
+ 64
386
+ /* STABLE_FRAGMENT */
387
+ ))
388
+ ],
389
+ 512
390
+ /* NEED_PATCH */
391
+ )
392
+ ]),
393
+ createCommentVNode(" \u83DC\u5355\u663E\u793A\u72B6\u6001 - \u6DFB\u52A0\u6761\u4EF6\u5224\u65AD\u9690\u85CF\u64CD\u4F5C\u6309\u94AE "),
394
+ editingId.value !== item.id ? (openBlock(), createElementBlock("div", {
395
+ key: 0,
396
+ class: "item-actions"
397
+ }, [
398
+ createElementVNode("button", {
399
+ class: "more-btn",
400
+ onClick: withModifiers(($event) => handleToggleActionMenu(item.id), ["stop"])
401
+ }, "...", 8, ["onClick"]),
402
+ state.actionMenuVisible[item.id] ? (openBlock(), createElementBlock("div", {
403
+ key: 0,
404
+ ref_for: true,
405
+ ref: (el) => actionMenus.value[item.id] = el,
406
+ class: "action-menu",
407
+ onMouseenter: preventMenuClose,
408
+ onMouseleave: ($event) => delayedCloseMenu(item.id)
409
+ }, [
410
+ createElementVNode("div", {
411
+ class: "menu-item",
412
+ onClick: withModifiers(($event) => handleStartRename(item.id), ["stop"])
413
+ }, [
414
+ (openBlock(), createElementBlock("svg", {
415
+ width: "16",
416
+ height: "16",
417
+ viewBox: "0 0 24 24",
418
+ fill: "none",
419
+ stroke: "currentColor",
420
+ "stroke-width": "2"
421
+ }, [
422
+ createElementVNode("path", { d: "M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" }),
423
+ createElementVNode("path", { d: "M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" })
424
+ ])),
425
+ createElementVNode("span", null, "\u91CD\u547D\u540D")
426
+ ], 8, ["onClick"]),
427
+ createElementVNode("div", {
428
+ class: "menu-item delete-btn",
429
+ onClick: withModifiers(($event) => handleMenuAction("delete", item.id), ["stop"])
430
+ }, [
431
+ (openBlock(), createElementBlock("svg", {
432
+ width: "16",
433
+ height: "16",
434
+ viewBox: "0 0 24 24",
435
+ fill: "none",
436
+ stroke: "currentColor",
437
+ "stroke-width": "2"
438
+ }, [
439
+ createElementVNode("polyline", { points: "3 6 5 6 21 6" }),
440
+ 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" })
441
+ ])),
442
+ createElementVNode("span", null, "\u5220\u9664")
443
+ ], 8, ["onClick"])
444
+ ], 40, ["onMouseleave"])) : createCommentVNode("v-if", true)
445
+ ])) : createCommentVNode("v-if", true)
446
+ ], 10, ["onClick"]);
447
+ }),
448
+ 128
449
+ /* KEYED_FRAGMENT */
450
+ ))
451
+ ],
452
+ 64
453
+ /* STABLE_FRAGMENT */
454
+ );
455
+ }),
456
+ 128
457
+ /* KEYED_FRAGMENT */
458
+ ))
459
+ ],
460
+ 34
461
+ /* CLASS, NEED_HYDRATION */
462
+ );
389
463
  };
390
464
  }
391
465
  });
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryList.vue2.mjs","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":["item","_createElementBlock","_normalizeClass","_Fragment","_renderList","_createElementVNode","_toDisplayString","_openBlock","activeChat","_withKeys","_withModifiers"],"mappings":"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"}
1
+ {"version":3,"file":"HistoryList.vue2.mjs","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":["item","_createElementBlock","_normalizeClass","_createCommentVNode","_Fragment","_renderList","_createElementVNode","_toDisplayString","_openBlock","activeChat","_withKeys","_withModifiers"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import _sfc_main from './HistorySidebar.vue2.mjs';
2
+ import _export_sfc from '../../../../../_virtual/_plugin-vue_export-helper.mjs';
2
3
 
4
+ var HistorySidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "HistorySidebar.vue"]]);
3
5
 
4
-
5
- export { _sfc_main as default };
6
+ export { HistorySidebar as default };
6
7
  //# sourceMappingURL=HistorySidebar.vue.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"HistorySidebar.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"HistorySidebar.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}