tuikit-atomicx-vue3 4.5.0 → 4.5.2

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 (182) hide show
  1. package/dist/{MessageInput.vue_vue_type_script_setup_true_lang-jPzZ5INK.js → MessageInput.vue_vue_type_script_setup_true_lang-3RVYOdkv.js} +38 -38
  2. package/dist/{PopoverTrigger-L8abAry7.js → PopoverPortal-DV6zFXcf.js} +91 -136
  3. package/dist/PopoverTrigger-DIjW4PKa.js +54 -0
  4. package/dist/{PopperContent-XdhqL8Y2.js → PopperContent-D__dbwpA.js} +6 -6
  5. package/dist/{Teleport-CSEuZbpM.js → Teleport-98QrIYDI.js} +280 -270
  6. package/dist/baseComp/Modal/Modal.js +3 -3
  7. package/dist/components/AudioSettingPanel/index.js +14 -14
  8. package/dist/components/BarrageInput/EmojiPicker/EmojiPicker.js +10 -9
  9. package/dist/components/BarrageInput/TextEditor/CharacterCountExtension.js +1 -1
  10. package/dist/components/BarrageInput/TextEditor/EditorCore.js +16 -15
  11. package/dist/components/ConversationList/ConversationActions/ConversationActions.js +53 -50
  12. package/dist/components/ConversationList/ConversationActions/ConversationActions.vue.d.ts +2 -0
  13. package/dist/components/ConversationList/ConversationCreate/ConversationCreate.js +25 -25
  14. package/dist/components/ConversationList/ConversationList.vue.d.ts +16 -0
  15. package/dist/components/ConversationList/ConversationPreview/ConversationPreview.vue.d.ts +16 -0
  16. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewAbstract.js +62 -40
  17. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewTimestamp.js +28 -26
  18. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewTitle.js +27 -23
  19. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewTitle.vue.d.ts +1 -1
  20. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewUI.js +81 -70
  21. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewUI.vue.d.ts +4 -0
  22. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewUnread.js +33 -31
  23. package/dist/components/ConversationList/ConversationPreview/utils.d.ts +2 -2
  24. package/dist/components/ConversationList/ConversationPreview/utils.js +81 -35
  25. package/dist/components/ConversationList/i18n/en-US.d.ts +11 -1
  26. package/dist/components/ConversationList/i18n/en-US.js +12 -2
  27. package/dist/components/ConversationList/i18n/zh-CN.d.ts +11 -1
  28. package/dist/components/ConversationList/i18n/zh-CN.js +12 -2
  29. package/dist/components/ConversationList/index.d.ts +48 -0
  30. package/dist/components/MessageInput/AttachmentPicker/index.js +10 -9
  31. package/dist/components/MessageInput/EmojiPicker/EmojiPicker.js +17 -16
  32. package/dist/components/MessageInput/MessageInput.js +1 -1
  33. package/dist/components/MessageInput/QuotedMessagePreview/index.js +35 -35
  34. package/dist/components/MessageInput/TextEditor/EditorCore.d.ts +13 -12
  35. package/dist/components/MessageInput/TextEditor/EditorCore.js +54 -89
  36. package/dist/components/MessageInput/TextEditor/extensions/MentionSuggestion.js +229 -0
  37. package/dist/components/MessageInput/TextEditor/extensions/MentionSuggestion.vue.d.ts +15 -0
  38. package/dist/components/MessageInput/TextEditor/extensions/characterCountExtension.js +1 -1
  39. package/dist/components/MessageInput/TextEditor/extensions/emojiExtension.d.ts +1 -0
  40. package/dist/components/MessageInput/TextEditor/extensions/emojiExtension.js +22 -0
  41. package/dist/components/MessageInput/TextEditor/extensions/enterKeyExtension.d.ts +3 -0
  42. package/dist/components/MessageInput/TextEditor/extensions/enterKeyExtension.js +15 -0
  43. package/dist/components/MessageInput/TextEditor/extensions/imageExtension.js +2 -2
  44. package/dist/components/MessageInput/TextEditor/extensions/index.d.ts +8 -0
  45. package/dist/components/MessageInput/TextEditor/extensions/index.js +12 -0
  46. package/dist/components/MessageInput/TextEditor/extensions/mentionExtension.d.ts +5 -0
  47. package/dist/components/MessageInput/TextEditor/extensions/mentionExtension.js +330 -0
  48. package/dist/components/MessageInput/TextEditor/index.js +62 -62
  49. package/dist/components/MessageInput/i18n/en-US.d.ts +3 -0
  50. package/dist/components/MessageInput/i18n/en-US.js +4 -1
  51. package/dist/components/MessageInput/i18n/index.d.ts +6 -0
  52. package/dist/components/MessageInput/i18n/zh-CN.d.ts +3 -0
  53. package/dist/components/MessageInput/i18n/zh-CN.js +4 -1
  54. package/dist/components/MessageInput/index.js +1 -1
  55. package/dist/components/MessageList/Message/ImageMessage/ImageMessage.js +119 -89
  56. package/dist/components/MessageList/Message/ImageMessage/ImagePreview.js +142 -0
  57. package/dist/components/MessageList/Message/ImageMessage/ImagePreview.vue.d.ts +20 -0
  58. package/dist/components/MessageList/Message/Message.vue.d.ts +8 -0
  59. package/dist/components/MessageList/Message/MessageLayout/MessageActionDropdown/MessageActionDropdown.js +3 -3
  60. package/dist/components/MessageList/Message/MessageLayout/MessageLayout.js +69 -58
  61. package/dist/components/MessageList/Message/MessageLayout/MessageLayout.vue.d.ts +8 -0
  62. package/dist/components/MessageList/Message/MessageLayout/MessageMeta/MessageMeta.js +37 -28
  63. package/dist/components/MessageList/Message/index.js +8 -4
  64. package/dist/components/MessageList/MessageList.js +109 -91
  65. package/dist/components/MessageList/MessageList.vue.d.ts +1 -1
  66. package/dist/components/MessageList/index.d.ts +21 -3
  67. package/dist/components/ScheduleRoomPanel/RoomDetail.js +22 -22
  68. package/dist/components/ScheduleRoomPanel/RoomEdit.js +1 -1
  69. package/dist/components/ScheduleRoomPanel/RoomShare.js +4 -4
  70. package/dist/components/ScheduleRoomPanel/ScheduleRoomPanel.js +1 -1
  71. package/dist/components/ScheduleRoomPanel/ScheduledRoomList.js +1 -1
  72. package/dist/components/Search/SearchResults/SearchResultsItem/Message/Message.js +6 -6
  73. package/dist/components/Search/SearchResults/SearchResultsItem/Message/Message.vue.d.ts +1 -1
  74. package/dist/components/UIKitModal/chatErrorModal/chatErrorModal.d.ts +72 -0
  75. package/dist/components/UIKitModal/chatErrorModal/chatErrorModal.js +95 -0
  76. package/dist/components/UIKitModal/chatErrorModal/i18n/en-US/index.d.ts +40 -0
  77. package/dist/components/UIKitModal/chatErrorModal/i18n/en-US/index.js +51 -0
  78. package/dist/components/UIKitModal/chatErrorModal/i18n/index.d.ts +4 -0
  79. package/dist/components/UIKitModal/chatErrorModal/i18n/index.js +6 -0
  80. package/dist/components/UIKitModal/chatErrorModal/i18n/zh-CN/index.d.ts +40 -0
  81. package/dist/components/UIKitModal/chatErrorModal/i18n/zh-CN/index.js +51 -0
  82. package/dist/components/UIKitModal/chatErrorModal/index.d.ts +3 -0
  83. package/dist/components/UIKitModal/chatErrorModal/index.js +11 -0
  84. package/dist/components/VideoSettingPanel/index.js +1 -1
  85. package/dist/hooks/useReadReceipt/useReadReceipt.js +44 -41
  86. package/dist/index-CTthrJb2.js +1461 -0
  87. package/dist/index-DXC5bPY4.js +2174 -0
  88. package/dist/{index-Do-2CngU.js → index-DuAffztD.js} +115 -142
  89. package/dist/{index-7vNB_Vx8.js → index-hHVD-MG2.js} +1 -1
  90. package/dist/index.d.ts +1 -1
  91. package/dist/index.js +150 -149
  92. package/dist/states/GroupSettingState/GroupSettingState.js +109 -102
  93. package/dist/states/LoginState.js +43 -43
  94. package/dist/states/MessageActionState/MessageActionState.js +83 -223
  95. package/dist/states/MessageInputState/MessageInputState.js +111 -82
  96. package/dist/states/MessageInputState/type.d.ts +36 -10
  97. package/dist/states/MessageInputState/utils.d.ts +1 -5
  98. package/dist/states/MessageListState/MessageListState.d.ts +1 -1
  99. package/dist/states/MessageListState/MessageListState.js +26 -23
  100. package/dist/states/RoomParticipantState/index.js +83 -24
  101. package/dist/states/RoomParticipantState/participantEventManager.d.ts +2 -2
  102. package/dist/states/RoomParticipantState/participantEventManager.js +217 -205
  103. package/dist/states/RoomParticipantState/participantManager.d.ts +4 -0
  104. package/dist/states/RoomParticipantState/participantManager.js +159 -127
  105. package/dist/states/RoomState/callManager.d.ts +3 -3
  106. package/dist/states/RoomState/callManager.js +20 -20
  107. package/dist/states/RoomState/common.d.ts +3 -2
  108. package/dist/states/RoomState/common.js +34 -24
  109. package/dist/states/RoomState/roomManager.d.ts +0 -1
  110. package/dist/states/RoomState/roomManager.js +21 -27
  111. package/dist/states/RoomState/scheduleManager.js +2 -2
  112. package/dist/styles/index.css +1 -1
  113. package/dist/{chat/index.d.ts → subEntry/chat/chat.d.ts} +2160 -2087
  114. package/dist/subEntry/chat/chat.js +89 -0
  115. package/dist/subEntry/chat/index.d.ts +11 -0
  116. package/dist/subEntry/chat/index.js +81 -0
  117. package/dist/{chat → subEntry/chat}/server.js +4 -4
  118. package/dist/subEntry/live/index.js +46 -45
  119. package/dist/subEntry/room/index.js +39 -38
  120. package/dist/types/beauty.d.ts +20 -0
  121. package/dist/types/index.js +37 -36
  122. package/dist/types/participant.d.ts +2 -0
  123. package/dist/types/room.d.ts +45 -1
  124. package/dist/types/room.js +4 -3
  125. package/dist/{useId-CtirfF0W.js → useId-B1VwPJLm.js} +1 -1
  126. package/dist/utils/call.js +77 -71
  127. package/dist/{utils-DaB7eSu5.js → utils-BU8IkP_V.js} +1 -1
  128. package/package.json +8 -7
  129. package/src/components/AudioSettingPanel/index.vue +4 -5
  130. package/src/components/ConversationList/ConversationActions/ConversationActions.vue +7 -1
  131. package/src/components/ConversationList/ConversationCreate/ConversationCreate.vue +5 -1
  132. package/src/components/ConversationList/ConversationList.vue +0 -1
  133. package/src/components/ConversationList/ConversationPreview/ConversationPreview.scss +10 -2
  134. package/src/components/ConversationList/ConversationPreview/ConversationPreviewAbstract.vue +32 -1
  135. package/src/components/ConversationList/ConversationPreview/ConversationPreviewTitle.vue +3 -2
  136. package/src/components/ConversationList/ConversationPreview/ConversationPreviewUI.vue +15 -0
  137. package/src/components/ConversationList/ConversationPreview/utils.ts +98 -28
  138. package/src/components/ConversationList/i18n/en-US.ts +11 -1
  139. package/src/components/ConversationList/i18n/zh-CN.ts +11 -1
  140. package/src/components/MessageInput/MessageInput.module.scss +1 -0
  141. package/src/components/MessageInput/QuotedMessagePreview/QuotedMessagePreview.vue +19 -22
  142. package/src/components/MessageInput/TextEditor/Editor.scss +25 -0
  143. package/src/components/MessageInput/TextEditor/EditorCore.ts +79 -99
  144. package/src/components/MessageInput/TextEditor/TextEditor.vue +64 -68
  145. package/src/components/MessageInput/TextEditor/extensions/MentionSuggestion.vue +449 -0
  146. package/src/components/MessageInput/TextEditor/extensions/emojiExtension.ts +22 -0
  147. package/src/components/MessageInput/TextEditor/extensions/enterKeyExtension.ts +22 -0
  148. package/src/components/MessageInput/TextEditor/extensions/index.ts +8 -0
  149. package/src/components/MessageInput/TextEditor/extensions/mentionExtension.ts +87 -0
  150. package/src/components/MessageInput/i18n/en-US.ts +3 -0
  151. package/src/components/MessageInput/i18n/zh-CN.ts +3 -0
  152. package/src/components/MessageList/Message/ImageMessage/ImageMessage.vue +49 -0
  153. package/src/components/MessageList/Message/ImageMessage/ImagePreview.vue +344 -0
  154. package/src/components/MessageList/Message/Message.vue +6 -0
  155. package/src/components/MessageList/Message/MessageLayout/MessageLayout.vue +8 -1
  156. package/src/components/MessageList/Message/MessageLayout/MessageMeta/MessageMeta.vue +12 -3
  157. package/src/components/MessageList/MessageList.vue +50 -14
  158. package/src/components/ScheduleRoomPanel/RoomDetail.vue +1 -0
  159. package/src/components/ScheduleRoomPanel/RoomEdit.vue +2 -1
  160. package/src/components/ScheduleRoomPanel/RoomShare.vue +1 -0
  161. package/src/components/ScheduleRoomPanel/ScheduleRoomPanel.vue +1 -0
  162. package/src/components/ScheduleRoomPanel/ScheduledRoomList.vue +1 -0
  163. package/src/components/Search/SearchResults/SearchResultsItem/Message/Message.vue +30 -31
  164. package/src/components/UIKitModal/chatErrorModal/chatErrorModal.ts +205 -0
  165. package/src/components/UIKitModal/chatErrorModal/i18n/en-US/index.ts +56 -0
  166. package/src/components/UIKitModal/chatErrorModal/i18n/index.ts +4 -0
  167. package/src/components/UIKitModal/chatErrorModal/i18n/zh-CN/index.ts +56 -0
  168. package/src/components/UIKitModal/chatErrorModal/index.ts +16 -0
  169. package/src/components/VideoSettingPanel/index.vue +1 -0
  170. package/src/hooks/useReadReceipt/useReadReceipt.ts +5 -4
  171. package/src/index.ts +1 -1
  172. package/src/{chat/index.ts → subEntry/chat/chat.ts} +25 -18
  173. package/src/subEntry/chat/index.ts +13 -0
  174. package/src/{chat → subEntry/chat}/server.ts +3 -3
  175. package/src/types/beauty.ts +20 -0
  176. package/src/types/participant.ts +3 -0
  177. package/src/types/room.ts +49 -1
  178. package/src/utils/call.ts +8 -0
  179. package/dist/chat/index.js +0 -59
  180. package/dist/index-ZILx4LYk.js +0 -4826
  181. package/dist/states/SearchState.d.ts +0 -314
  182. /package/dist/{chat → subEntry/chat}/server.d.ts +0 -0
@@ -1,18 +1,32 @@
1
- import { ref as r } from "vue";
2
- import { TUIStore as a, StoreName as u, TUIChatService as v } from "@tencentcloud/chat-uikit-engine";
3
- import { transformTextWithEmojiKeyToName as p } from "../../utils/emoji.js";
4
- import { copyTextToClipboard as w } from "../../utils/copyText.js";
5
- const t = r([]), n = r(!1), o = r([]), i = r(void 0);
6
- function I(e) {
7
- const { messageIDList: d, conversationIDList: l, isMergeForward: g } = e;
8
- if (d.length === 0 || l.length === 0 || g === void 0)
1
+ import { ref as d } from "vue";
2
+ import { TUIStore as o, StoreName as r, TUIChatService as C } from "@tencentcloud/chat-uikit-engine";
3
+ import { copyTextToClipboard as I } from "../../utils/copyText.js";
4
+ import { transformTextWithEmojiKeyToName as D } from "../../utils/emoji.js";
5
+ let g;
6
+ const n = d([]), c = d(!1), i = d([]), u = d(void 0);
7
+ function S(e) {
8
+ n.value = [
9
+ .../* @__PURE__ */ new Set([...n.value, ...e])
10
+ ];
11
+ }
12
+ function T(e) {
13
+ c.value = e;
14
+ }
15
+ function L(e) {
16
+ i.value = [
17
+ .../* @__PURE__ */ new Set([...i.value, ...e])
18
+ ];
19
+ }
20
+ function h(e) {
21
+ const { messageIDList: a, conversationIDList: t, isMergeForward: f } = e;
22
+ if (a.length === 0 || t.length === 0 || f === void 0)
9
23
  throw new Error("Invalid forward message parameters");
10
- const M = l.map((s) => a.getConversationModel(s)), c = d.map((s) => a.getMessageModel(s)).sort((s, m) => s.time - m.time), f = M.map(
11
- (s) => v.sendForwardMessage(
24
+ const M = t.map((s) => o.getConversationModel(s)), m = a.map((s) => o.getMessageModel(s)).sort((s, w) => s.time - w.time), p = M.map(
25
+ (s) => C.sendForwardMessage(
12
26
  [s],
13
- c,
27
+ m,
14
28
  {
15
- needMerge: g,
29
+ needMerge: f,
16
30
  params: {
17
31
  // Determine whether read receipt is needed based on configuration
18
32
  needReadReceipt: !1
@@ -20,222 +34,68 @@ function I(e) {
20
34
  }
21
35
  )
22
36
  );
23
- return Promise.allSettled(f);
37
+ return Promise.allSettled(p);
24
38
  }
25
- function C() {
39
+ function q(e) {
40
+ o.update(r.CHAT, "quoteMessage", {
41
+ message: e,
42
+ type: "quote"
43
+ });
44
+ }
45
+ function l() {
46
+ o.update(r.CHAT, "quoteMessage", {
47
+ message: void 0,
48
+ type: "quote"
49
+ }), u.value = void 0;
50
+ }
51
+ function y(e) {
52
+ return I(
53
+ D(e.payload.text || "")
54
+ );
55
+ }
56
+ function F(e) {
57
+ return e.deleteMessage();
58
+ }
59
+ function R(e) {
60
+ return e.revokeMessage();
61
+ }
62
+ function v() {
63
+ l(), n.value = [], c.value = !1, i.value = [];
64
+ }
65
+ function E() {
26
66
  return {
27
67
  // State
28
- forwardMessageIDList: t,
29
- isForwardMessageSelectionDone: n,
30
- forwardConversationIDList: o,
31
- quotedMessage: i,
68
+ forwardMessageIDList: n,
69
+ isForwardMessageSelectionDone: c,
70
+ forwardConversationIDList: i,
71
+ quotedMessage: u,
32
72
  // Action methods
33
- /**
34
- * 设置转发消息ID列表
35
- * @memberof module:MessageActionState
36
- * @description 设置要转发的消息ID列表,会与现有列表合并去重
37
- * @param {string[]} messageIDList - 要转发的消息ID数组
38
- * @example
39
- * ```typescript
40
- * const { setForwardMessageIDList } = useMessageActionState();
41
- *
42
- * // 设置要转发的消息ID
43
- * setForwardMessageIDList(['msg1', 'msg2', 'msg3']);
44
- * ```
45
- */
46
- setForwardMessageIDList(e) {
47
- t.value = [
48
- .../* @__PURE__ */ new Set([...t.value, ...e])
49
- ];
50
- },
51
- /**
52
- * 设置消息选择完成状态
53
- * @memberof module:MessageActionState
54
- * @description 设置转发消息选择是否完成的状态
55
- * @param {boolean} isSelectionDone - 是否完成消息选择
56
- * @example
57
- * ```typescript
58
- * const { setIsForwardMessageSelectionDone } = useMessageActionState();
59
- *
60
- * // 标记消息选择完成
61
- * setIsForwardMessageSelectionDone(true);
62
- * ```
63
- */
64
- setIsForwardMessageSelectionDone(e) {
65
- n.value = e;
66
- },
67
- /**
68
- * 设置转发目标会话ID列表
69
- * @memberof module:MessageActionState
70
- * @description 设置消息转发的目标会话ID列表,会与现有列表合并去重
71
- * @param {string[]} conversationIDList - 目标会话ID数组
72
- * @example
73
- * ```typescript
74
- * const { setForwardConversationIDList } = useMessageActionState();
75
- *
76
- * // 设置转发目标会话
77
- * setForwardConversationIDList(['conv1', 'conv2']);
78
- * ```
79
- */
80
- setForwardConversationIDList(e) {
81
- o.value = [
82
- .../* @__PURE__ */ new Set([...o.value, ...e])
83
- ];
84
- },
85
- /**
86
- * 转发消息到指定会话
87
- * @memberof module:MessageActionState
88
- * @description 将选中的消息转发到指定的会话中,支持合并转发和逐条转发
89
- * @param {IForwardMessageParams} params - 转发消息参数
90
- * @param {string[]} params.messageIDList - 要转发的消息ID列表
91
- * @param {string[]} params.conversationIDList - 目标会话ID列表
92
- * @param {boolean} params.isMergeForward - 是否合并转发
93
- * @returns {Promise<Array<PromiseSettledResult<unknown>>>} 转发操作的结果数组
94
- * @example
95
- * ```typescript
96
- * const { forwardMessage } = useMessageActionState();
97
- *
98
- * // 合并转发消息
99
- * const results = await forwardMessage({
100
- * messageIDList: ['msg1', 'msg2'],
101
- * conversationIDList: ['conv1', 'conv2'],
102
- * isMergeForward: true
103
- * });
104
- * ```
105
- */
106
- forwardMessage(e) {
107
- return I(e);
108
- },
109
- /**
110
- * 引用消息
111
- * @memberof module:MessageActionState
112
- * @description 设置要引用的消息,引用后可以在发送新消息时显示被引用的消息内容
113
- * @param {MessageModel | undefined} message - 要引用的消息对象,传入undefined表示取消引用
114
- * @example
115
- * ```typescript
116
- * const { quoteMessage } = useMessageActionState();
117
- *
118
- * // 引用一条消息
119
- * quoteMessage(messageModel);
120
- *
121
- * // 取消引用
122
- * quoteMessage(undefined);
123
- * ```
124
- */
125
- quoteMessage(e) {
126
- a.update(u.CHAT, "quoteMessage", {
127
- message: e,
128
- type: "quote"
129
- }), i.value = e;
130
- },
131
- /**
132
- * 清除引用消息
133
- * @memberof module:MessageActionState
134
- * @description 清除当前引用的消息,取消引用状态
135
- * @example
136
- * ```typescript
137
- * const { clearQuotedMessage } = useMessageActionState();
138
- *
139
- * // 清除引用消息
140
- * clearQuotedMessage();
141
- * ```
142
- */
143
- clearQuotedMessage() {
144
- a.update(u.CHAT, "quoteMessage", {
145
- message: void 0,
146
- type: "quote"
147
- }), i.value = void 0;
148
- },
149
- /**
150
- * 复制文本消息内容到剪贴板
151
- * @memberof module:MessageActionState
152
- * @description 将文本消息的内容复制到系统剪贴板,会自动处理表情符号转换
153
- * @param {MessageModel} message - 要复制的消息对象
154
- * @returns {Promise<boolean>} 复制操作的结果,成功返回true,失败返回false
155
- * @throws {Error} 当消息不是文本类型或复制失败时抛出错误
156
- * @example
157
- * ```typescript
158
- * const { copyTextMessage } = useMessageActionState();
159
- *
160
- * // 复制文本消息
161
- * try {
162
- * const success = await copyTextMessage(textMessage);
163
- * if (success) {
164
- * console.log('消息已复制到剪贴板');
165
- * }
166
- * } catch (error) {
167
- * console.error('复制失败:', error);
168
- * }
169
- * ```
170
- */
171
- copyTextMessage(e) {
172
- return w(
173
- p(e.payload.text || "")
174
- );
175
- },
176
- /**
177
- * 删除消息
178
- * @memberof module:MessageActionState
179
- * @description 删除指定的消息,删除后消息将从会话中移除
180
- * @param {MessageModel} message - 要删除的消息对象
181
- * @returns {Promise<unknown>} 删除操作的结果Promise
182
- * @throws {Error} 当删除操作失败时抛出错误
183
- * @example
184
- * ```typescript
185
- * const { deleteMessage } = useMessageActionState();
186
- *
187
- * // 删除消息
188
- * try {
189
- * await deleteMessage(messageModel);
190
- * console.log('消息删除成功');
191
- * } catch (error) {
192
- * console.error('删除消息失败:', error);
193
- * }
194
- * ```
195
- */
196
- deleteMessage(e) {
197
- return e.deleteMessage();
198
- },
199
- /**
200
- * 撤回消息
201
- * @memberof module:MessageActionState
202
- * @description 撤回已发送的消息,撤回后消息将显示为"已撤回"状态
203
- * @param {MessageModel} message - 要撤回的消息对象
204
- * @returns {Promise<unknown>} 撤回操作的结果Promise
205
- * @throws {Error} 当撤回操作失败时抛出错误(如超过撤回时限)
206
- * @example
207
- * ```typescript
208
- * const { recallMessage } = useMessageActionState();
209
- *
210
- * // 撤回消息
211
- * try {
212
- * await recallMessage(messageModel);
213
- * console.log('消息撤回成功');
214
- * } catch (error) {
215
- * console.error('撤回消息失败:', error);
216
- * }
217
- * ```
218
- */
219
- recallMessage(e) {
220
- return e.revokeMessage();
221
- },
222
- /**
223
- * 重置消息操作状态
224
- * @memberof module:MessageActionState
225
- * @description 重置所有消息操作相关的状态,包括清除引用消息、转发消息列表等
226
- * @example
227
- * ```typescript
228
- * const { resetMessageActionState } = useMessageActionState();
229
- *
230
- * // 重置所有消息操作状态
231
- * resetMessageActionState();
232
- * ```
233
- */
234
- resetMessageActionState() {
235
- this.clearQuotedMessage(), t.value = [], n.value = !1, o.value = [];
236
- }
73
+ setForwardMessageIDList: S,
74
+ setIsForwardMessageSelectionDone: T,
75
+ setForwardConversationIDList: L,
76
+ forwardMessage: h,
77
+ quoteMessage: q,
78
+ clearQuotedMessage: l,
79
+ copyTextMessage: y,
80
+ deleteMessage: F,
81
+ recallMessage: R,
82
+ resetMessageActionState: v
237
83
  };
238
84
  }
85
+ function x() {
86
+ function e(t) {
87
+ t.message === void 0 ? u.value = void 0 : u.value = t.message;
88
+ }
89
+ function a(t) {
90
+ t !== g && (v(), g = t);
91
+ }
92
+ o.watch(r.CHAT, {
93
+ quoteMessage: e
94
+ }), o.watch(r.CONV, {
95
+ currentConversationID: a
96
+ });
97
+ }
98
+ x();
239
99
  export {
240
- C as useMessageActionState
100
+ E as useMessageActionState
241
101
  };
@@ -1,112 +1,141 @@
1
- import { ref as l } from "vue";
2
- import { TUIStore as w, StoreName as I, TUIChatService as r } from "@tencentcloud/chat-uikit-engine";
3
- import { MessageContentType as a } from "./type.js";
4
- import { trimInputContent as M, convertInputContentToEditorNode as p } from "./utils.js";
5
- import { useMessageListState as v } from "../MessageListState/MessageListState.js";
6
- import { transformTextWithEmojiNameToKey as f } from "../../utils/emoji.js";
7
- const n = l(null), m = l(""), y = l(!1), E = (e) => {
1
+ import { ref as d } from "vue";
2
+ import { TUIStore as h, StoreName as w, TUIChatService as r } from "@tencentcloud/chat-uikit-engine";
3
+ import { MessageContentType as c } from "./type.js";
4
+ import { convertInputContentToEditorNode as f, trimInputContent as T } from "./utils.js";
5
+ import "../../components/UIKitModal/chatErrorModal/index.js";
6
+ import { useMessageListState as M } from "../MessageListState/MessageListState.js";
7
+ import { transformTextWithEmojiNameToKey as p } from "../../utils/emoji.js";
8
+ import { handleChatErrorWithModal as I } from "../../components/UIKitModal/chatErrorModal/chatErrorModal.js";
9
+ const a = d(null), u = d(""), m = d(!1), C = (e) => {
8
10
  if (typeof e != "string" && !Array.isArray(e)) {
9
11
  console.warn("Invalid input type for updateRawValue");
10
12
  return;
11
13
  }
12
- typeof e == "string" ? m.value = e.trim() : m.value = (e == null ? void 0 : e.length) > 0 ? e : "", r.enterTypingState(), setTimeout(() => {
14
+ typeof e == "string" ? u.value = e.trim() : u.value = (e == null ? void 0 : e.length) > 0 ? e : "", r.enterTypingState(), setTimeout(() => {
13
15
  r.leaveTypingState();
14
16
  }, 3e3);
15
- }, C = (e) => {
16
- n.value && n.value.destroy(), n.value = e;
17
- }, S = (e) => {
18
- if (n.value) {
17
+ }, v = (e) => {
18
+ a.value && a.value.destroy(), a.value = e;
19
+ }, E = (e) => {
20
+ if (a.value) {
19
21
  if (typeof e == "string")
20
- n.value.commands.setContent(e, !0);
22
+ a.value.commands.setContent(e, !0);
21
23
  else {
22
- const i = e.map(p);
23
- n.value.commands.setContent(i, !0);
24
+ const n = e.map(f);
25
+ a.value.commands.setContent(n, !0);
24
26
  }
25
- n.value.commands.focus();
27
+ a.value.commands.focus();
26
28
  }
27
- }, x = (e, i = !0) => {
28
- if (n.value) {
29
+ }, x = (e, n = !0) => {
30
+ if (a.value) {
29
31
  if (typeof e == "string")
30
- n.value.commands.insertContent(e);
32
+ a.value.commands.insertContent(e);
31
33
  else {
32
- const o = e.map(p);
33
- n.value.commands.insertContent(o);
34
+ const s = e.map(f);
35
+ a.value.commands.insertContent(s);
34
36
  }
35
- i && n.value.commands.focus();
37
+ n && a.value.commands.focus();
36
38
  }
37
- }, h = () => {
39
+ }, S = () => {
38
40
  var e;
39
- (e = n.value) == null || e.commands.focus();
40
- }, R = () => {
41
+ (e = a.value) == null || e.commands.focus();
42
+ }, k = () => {
41
43
  var e;
42
- (e = n.value) == null || e.commands.blur();
43
- }, A = async (e) => {
44
- const { enableReadReceipt: i } = v(), o = {
45
- needReadReceipt: i.value || !1
46
- };
47
- let s = e ?? m.value;
48
- if (typeof s == "string" ? s = s.trim() : s = M(s), !s)
49
- return;
50
- if (typeof s == "string") {
51
- r.sendTextMessage({
52
- payload: { text: f(s) },
53
- ...o
44
+ (e = a.value) == null || e.commands.blur();
45
+ }, b = async (e) => {
46
+ const { enableReadReceipt: n } = M(), s = {
47
+ needReadReceipt: n.value || !1
48
+ }, o = R(e ?? u.value);
49
+ if (o)
50
+ try {
51
+ typeof o == "string" ? await r.sendTextMessage({
52
+ payload: { text: p(o) },
53
+ ...s
54
+ }) : await A(o, s);
55
+ } catch (i) {
56
+ throw I(i), i;
57
+ }
58
+ };
59
+ function R(e) {
60
+ if (typeof e == "string")
61
+ return e.trim() || null;
62
+ const n = T(e);
63
+ return n.length > 0 ? n : null;
64
+ }
65
+ async function A(e, n) {
66
+ const s = [], o = [], i = async () => {
67
+ if (s.length === 0)
68
+ return;
69
+ const t = s.join("");
70
+ s.length = 0, o.length > 0 ? (await r.sendTextAtMessage({
71
+ payload: { text: t, atUserList: o },
72
+ ...n
73
+ }), o.length = 0) : await r.sendTextMessage({
74
+ payload: { text: p(t) },
75
+ ...n
54
76
  });
55
- return;
56
- }
57
- let c = "";
58
- const u = async () => {
59
- c && (await r.sendTextMessage({
60
- payload: { text: f(c) },
61
- ...o
62
- }), c = "");
63
- }, d = {
64
- [a.TEXT]: (t) => t,
65
- [a.IMAGE]: async (t) => (await u(), await r.sendImageMessage({
66
- payload: { file: t },
67
- ...o
68
- }), ""),
69
- [a.VIDEO]: async (t) => (await u(), await r.sendVideoMessage({
70
- payload: { file: t },
71
- ...o
72
- }), ""),
73
- [a.FILE]: async (t) => (await u(), await r.sendFileMessage({
74
- payload: { file: t },
75
- ...o
76
- }), ""),
77
- [a.MENTION]: async () => (await u(), console.warn("Mention feature not implemented yet"), ""),
78
- [a.EMOJI]: (t) => t.key
77
+ }, g = async (t) => {
78
+ switch (t.type) {
79
+ case c.TEXT:
80
+ s.push(t.content);
81
+ break;
82
+ case c.EMOJI:
83
+ s.push(t.content.key);
84
+ break;
85
+ case c.MENTION:
86
+ o.push(t.content.id), s.push(t.content.mentionSuggestionChar + t.content.label);
87
+ break;
88
+ case c.IMAGE:
89
+ await i(), await r.sendImageMessage({
90
+ payload: { file: t.content },
91
+ ...n
92
+ });
93
+ break;
94
+ case c.VIDEO:
95
+ await i(), await r.sendVideoMessage({
96
+ payload: { file: t.content },
97
+ ...n
98
+ });
99
+ break;
100
+ case c.FILE:
101
+ await i(), await r.sendFileMessage({
102
+ payload: { file: t.content },
103
+ ...n
104
+ });
105
+ break;
106
+ default:
107
+ console.warn(`[MessageInput] Unknown message type: ${t == null ? void 0 : t.type}, skipping`);
108
+ break;
109
+ }
79
110
  };
80
- for (const t of s) {
81
- if (!t.type || !d[t.type])
82
- throw new Error(`Invalid message type: ${t.type}`);
83
- const g = d[t.type], T = await g(t.content);
84
- [a.TEXT, a.EMOJI].includes(t.type) && (c += T);
85
- }
86
- await u();
87
- };
88
- function J() {
111
+ let l = 0;
112
+ const y = e.length;
113
+ for (; l < y; )
114
+ await g(e[l]), l++;
115
+ await i();
116
+ }
117
+ function z() {
89
118
  return {
90
- inputRawValue: m,
91
- isPeerTyping: y,
92
- updateRawValue: E,
93
- setEditorInstance: C,
94
- setContent: S,
119
+ inputRawValue: u,
120
+ isPeerTyping: m,
121
+ updateRawValue: C,
122
+ setEditorInstance: v,
123
+ setContent: E,
95
124
  insertContent: x,
96
- focusEditor: h,
97
- blurEditor: R,
98
- sendMessage: A
125
+ focusEditor: S,
126
+ blurEditor: k,
127
+ sendMessage: b
99
128
  };
100
129
  }
101
130
  function N() {
102
- w.watch(I.CHAT, {
131
+ h.watch(w.CHAT, {
103
132
  typingStatus: (e) => {
104
- y.value = e;
133
+ m.value = e;
105
134
  }
106
135
  });
107
136
  }
108
137
  N();
109
138
  export {
110
- a as MessageContentType,
111
- J as useMessageInputState
139
+ c as MessageContentType,
140
+ z as useMessageInputState
112
141
  };
@@ -6,16 +6,42 @@ declare enum MessageContentType {
6
6
  MENTION = "mention",
7
7
  EMOJI = "emoji"
8
8
  }
9
+ interface MentionContent {
10
+ id: string;
11
+ label: string;
12
+ mentionSuggestionChar: string;
13
+ }
14
+ interface EmojiContent {
15
+ url: string;
16
+ key: string;
17
+ text: string;
18
+ }
9
19
  type ContentTypeMap = {
10
- [key in MessageContentType]: key extends MessageContentType.TEXT ? string : key extends MessageContentType.IMAGE ? File : key extends MessageContentType.VIDEO ? File : key extends MessageContentType.FILE ? File : key extends MessageContentType.MENTION ? string[] : key extends MessageContentType.EMOJI ? {
11
- url: string;
12
- key: string;
13
- text: string;
14
- } : never;
20
+ [MessageContentType.TEXT]: string;
21
+ [MessageContentType.IMAGE]: File;
22
+ [MessageContentType.VIDEO]: File;
23
+ [MessageContentType.FILE]: File;
24
+ [MessageContentType.MENTION]: MentionContent;
25
+ [MessageContentType.EMOJI]: EmojiContent;
26
+ };
27
+ type InputContent = {
28
+ type: MessageContentType.TEXT;
29
+ content: string;
30
+ } | {
31
+ type: MessageContentType.IMAGE;
32
+ content: File;
33
+ } | {
34
+ type: MessageContentType.VIDEO;
35
+ content: File;
36
+ } | {
37
+ type: MessageContentType.FILE;
38
+ content: File;
39
+ } | {
40
+ type: MessageContentType.MENTION;
41
+ content: MentionContent;
42
+ } | {
43
+ type: MessageContentType.EMOJI;
44
+ content: EmojiContent;
15
45
  };
16
- interface InputContent<T extends MessageContentType = MessageContentType> {
17
- type: T;
18
- content: ContentTypeMap[T];
19
- }
20
46
  export { MessageContentType, };
21
- export type { ContentTypeMap, InputContent, };
47
+ export type { ContentTypeMap, InputContent, MentionContent, EmojiContent, };
@@ -2,11 +2,7 @@ import { MessageContentType, InputContent } from './type';
2
2
 
3
3
  declare function convertInputContentToEditorNode(item: InputContent): {
4
4
  type: string;
5
- text: string | string[] | File | {
6
- url: string;
7
- key: string;
8
- text: string;
9
- };
5
+ text: string;
10
6
  attrs?: undefined;
11
7
  } | {
12
8
  type: MessageContentType;
@@ -1,5 +1,5 @@
1
1
  import { Ref } from 'vue';
2
- import { IMessageModel as MessageModel } from '@tencentcloud/chat-uikit-engine';
2
+ import { MessageModel } from '../../types/engine';
3
3
 
4
4
  interface MessageListState {
5
5
  activeConversationID: Ref<string | undefined>;