tuikit-atomicx-vue3 4.5.0 → 4.5.1

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 (109) hide show
  1. package/dist/{PopoverTrigger-L8abAry7.js → PopoverPortal-DghpKKm8.js} +91 -136
  2. package/dist/PopoverTrigger-BajjNkGO.js +54 -0
  3. package/dist/{PopperContent-XdhqL8Y2.js → PopperContent-SLoFuK7k.js} +6 -6
  4. package/dist/{Teleport-CSEuZbpM.js → Teleport-DFrneqLM.js} +4 -4
  5. package/dist/baseComp/Modal/Modal.js +3 -3
  6. package/dist/components/BarrageInput/EmojiPicker/EmojiPicker.js +10 -9
  7. package/dist/components/BarrageInput/TextEditor/CharacterCountExtension.js +1 -1
  8. package/dist/components/BarrageInput/TextEditor/EditorCore.js +16 -15
  9. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewAbstract.js +62 -40
  10. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewTimestamp.js +29 -27
  11. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewTitle.js +27 -23
  12. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewTitle.vue.d.ts +1 -1
  13. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewUI.js +67 -65
  14. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewUnread.js +32 -30
  15. package/dist/components/ConversationList/ConversationPreview/utils.d.ts +2 -2
  16. package/dist/components/ConversationList/ConversationPreview/utils.js +81 -35
  17. package/dist/components/ConversationList/i18n/en-US.d.ts +10 -1
  18. package/dist/components/ConversationList/i18n/en-US.js +11 -2
  19. package/dist/components/ConversationList/i18n/zh-CN.d.ts +10 -1
  20. package/dist/components/ConversationList/i18n/zh-CN.js +11 -2
  21. package/dist/components/LiveScenePanel/index.js +10 -9
  22. package/dist/components/MessageInput/AttachmentPicker/index.js +10 -9
  23. package/dist/components/MessageInput/EmojiPicker/EmojiPicker.js +17 -16
  24. package/dist/components/MessageInput/QuotedMessagePreview/index.js +35 -35
  25. package/dist/components/MessageInput/TextEditor/EditorCore.d.ts +13 -12
  26. package/dist/components/MessageInput/TextEditor/EditorCore.js +54 -89
  27. package/dist/components/MessageInput/TextEditor/extensions/MentionSuggestion.js +229 -0
  28. package/dist/components/MessageInput/TextEditor/extensions/MentionSuggestion.vue.d.ts +15 -0
  29. package/dist/components/MessageInput/TextEditor/extensions/characterCountExtension.js +1 -1
  30. package/dist/components/MessageInput/TextEditor/extensions/emojiExtension.d.ts +1 -0
  31. package/dist/components/MessageInput/TextEditor/extensions/emojiExtension.js +22 -0
  32. package/dist/components/MessageInput/TextEditor/extensions/enterKeyExtension.d.ts +3 -0
  33. package/dist/components/MessageInput/TextEditor/extensions/enterKeyExtension.js +15 -0
  34. package/dist/components/MessageInput/TextEditor/extensions/imageExtension.js +2 -2
  35. package/dist/components/MessageInput/TextEditor/extensions/index.d.ts +8 -0
  36. package/dist/components/MessageInput/TextEditor/extensions/index.js +12 -0
  37. package/dist/components/MessageInput/TextEditor/extensions/mentionExtension.d.ts +5 -0
  38. package/dist/components/MessageInput/TextEditor/extensions/mentionExtension.js +330 -0
  39. package/dist/components/MessageInput/TextEditor/index.js +62 -62
  40. package/dist/components/MessageInput/i18n/en-US.d.ts +3 -0
  41. package/dist/components/MessageInput/i18n/en-US.js +4 -1
  42. package/dist/components/MessageInput/i18n/index.d.ts +6 -0
  43. package/dist/components/MessageInput/i18n/zh-CN.d.ts +3 -0
  44. package/dist/components/MessageInput/i18n/zh-CN.js +4 -1
  45. package/dist/components/MessageList/Message/ImageMessage/ImageMessage.js +119 -89
  46. package/dist/components/MessageList/Message/ImageMessage/ImagePreview.js +142 -0
  47. package/dist/components/MessageList/Message/ImageMessage/ImagePreview.vue.d.ts +20 -0
  48. package/dist/components/MessageList/Message/Message.vue.d.ts +8 -0
  49. package/dist/components/MessageList/Message/MessageLayout/MessageActionDropdown/MessageActionDropdown.js +3 -3
  50. package/dist/components/MessageList/Message/MessageLayout/MessageLayout.js +69 -58
  51. package/dist/components/MessageList/Message/MessageLayout/MessageLayout.vue.d.ts +8 -0
  52. package/dist/components/MessageList/Message/index.js +8 -4
  53. package/dist/components/MessageList/MessageList.js +98 -90
  54. package/dist/components/MessageList/MessageList.vue.d.ts +1 -1
  55. package/dist/components/MessageList/index.d.ts +21 -3
  56. package/dist/components/Search/SearchResults/SearchResultsItem/Message/Message.js +6 -6
  57. package/dist/components/Search/SearchResults/SearchResultsItem/Message/Message.vue.d.ts +1 -1
  58. package/dist/index-BvFYOUyz.js +2936 -0
  59. package/dist/{index-Do-2CngU.js → index-C8Jw_xE4.js} +1621 -1731
  60. package/dist/{index-7vNB_Vx8.js → index-CiYL_XsE.js} +1 -1
  61. package/dist/index-CzCDLp99.js +2174 -0
  62. package/dist/index.d.ts +1 -1
  63. package/dist/index.js +103 -103
  64. package/dist/states/MessageActionState/MessageActionState.js +83 -223
  65. package/dist/states/MessageInputState/MessageInputState.js +115 -83
  66. package/dist/states/MessageInputState/type.d.ts +36 -10
  67. package/dist/states/MessageInputState/utils.d.ts +1 -5
  68. package/dist/states/MessageListState/MessageListState.d.ts +1 -1
  69. package/dist/styles/index.css +1 -1
  70. package/dist/{chat/index.d.ts → subEntry/chat/chat.d.ts} +2112 -2087
  71. package/dist/subEntry/chat/chat.js +89 -0
  72. package/dist/subEntry/chat/index.d.ts +11 -0
  73. package/dist/subEntry/chat/index.js +81 -0
  74. package/dist/{chat → subEntry/chat}/server.js +4 -4
  75. package/dist/{useId-CtirfF0W.js → useId-D5WE76CM.js} +1 -1
  76. package/dist/{utils-DaB7eSu5.js → utils-CttDpxqz.js} +1 -1
  77. package/package.json +8 -6
  78. package/src/components/ConversationList/ConversationPreview/ConversationPreview.scss +8 -0
  79. package/src/components/ConversationList/ConversationPreview/ConversationPreviewAbstract.vue +32 -1
  80. package/src/components/ConversationList/ConversationPreview/ConversationPreviewTitle.vue +3 -2
  81. package/src/components/ConversationList/ConversationPreview/utils.ts +98 -28
  82. package/src/components/ConversationList/i18n/en-US.ts +10 -1
  83. package/src/components/ConversationList/i18n/zh-CN.ts +10 -1
  84. package/src/components/LiveScenePanel/index.vue +1 -0
  85. package/src/components/MessageInput/QuotedMessagePreview/QuotedMessagePreview.vue +19 -22
  86. package/src/components/MessageInput/TextEditor/Editor.scss +25 -0
  87. package/src/components/MessageInput/TextEditor/EditorCore.ts +79 -99
  88. package/src/components/MessageInput/TextEditor/TextEditor.vue +64 -68
  89. package/src/components/MessageInput/TextEditor/extensions/MentionSuggestion.vue +449 -0
  90. package/src/components/MessageInput/TextEditor/extensions/emojiExtension.ts +22 -0
  91. package/src/components/MessageInput/TextEditor/extensions/enterKeyExtension.ts +22 -0
  92. package/src/components/MessageInput/TextEditor/extensions/index.ts +8 -0
  93. package/src/components/MessageInput/TextEditor/extensions/mentionExtension.ts +87 -0
  94. package/src/components/MessageInput/i18n/en-US.ts +3 -0
  95. package/src/components/MessageInput/i18n/zh-CN.ts +3 -0
  96. package/src/components/MessageList/Message/ImageMessage/ImageMessage.vue +49 -0
  97. package/src/components/MessageList/Message/ImageMessage/ImagePreview.vue +344 -0
  98. package/src/components/MessageList/Message/Message.vue +6 -0
  99. package/src/components/MessageList/Message/MessageLayout/MessageLayout.vue +8 -1
  100. package/src/components/MessageList/MessageList.vue +36 -14
  101. package/src/components/Search/SearchResults/SearchResultsItem/Message/Message.vue +30 -31
  102. package/src/index.ts +1 -1
  103. package/src/{chat/index.ts → subEntry/chat/chat.ts} +25 -18
  104. package/src/subEntry/chat/index.ts +13 -0
  105. package/src/{chat → subEntry/chat}/server.ts +3 -3
  106. package/dist/chat/index.js +0 -59
  107. package/dist/index-ZILx4LYk.js +0 -4826
  108. package/dist/states/SearchState.d.ts +0 -314
  109. /package/dist/{chat → subEntry/chat}/server.d.ts +0 -0
@@ -1,112 +1,144 @@
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 T, TUIChatService as r } from "@tencentcloud/chat-uikit-engine";
3
+ import { MessageContentType as i } from "./type.js";
4
+ import { convertInputContentToEditorNode as f, trimInputContent as I } from "./utils.js";
5
+ import { useMessageListState as M } from "../MessageListState/MessageListState.js";
6
+ import { transformTextWithEmojiNameToKey as p } from "../../utils/emoji.js";
7
+ const s = d(null), u = d(""), g = d(!1), C = (e) => {
8
8
  if (typeof e != "string" && !Array.isArray(e)) {
9
9
  console.warn("Invalid input type for updateRawValue");
10
10
  return;
11
11
  }
12
- typeof e == "string" ? m.value = e.trim() : m.value = (e == null ? void 0 : e.length) > 0 ? e : "", r.enterTypingState(), setTimeout(() => {
12
+ typeof e == "string" ? u.value = e.trim() : u.value = (e == null ? void 0 : e.length) > 0 ? e : "", r.enterTypingState(), setTimeout(() => {
13
13
  r.leaveTypingState();
14
14
  }, 3e3);
15
- }, C = (e) => {
16
- n.value && n.value.destroy(), n.value = e;
17
- }, S = (e) => {
18
- if (n.value) {
15
+ }, v = (e) => {
16
+ s.value && s.value.destroy(), s.value = e;
17
+ }, x = (e) => {
18
+ if (s.value) {
19
19
  if (typeof e == "string")
20
- n.value.commands.setContent(e, !0);
20
+ s.value.commands.setContent(e, !0);
21
21
  else {
22
- const i = e.map(p);
23
- n.value.commands.setContent(i, !0);
22
+ const n = e.map(f);
23
+ s.value.commands.setContent(n, !0);
24
24
  }
25
- n.value.commands.focus();
25
+ s.value.commands.focus();
26
26
  }
27
- }, x = (e, i = !0) => {
28
- if (n.value) {
27
+ }, E = (e, n = !0) => {
28
+ if (s.value) {
29
29
  if (typeof e == "string")
30
- n.value.commands.insertContent(e);
30
+ s.value.commands.insertContent(e);
31
31
  else {
32
- const o = e.map(p);
33
- n.value.commands.insertContent(o);
32
+ const a = e.map(f);
33
+ s.value.commands.insertContent(a);
34
34
  }
35
- i && n.value.commands.focus();
35
+ n && s.value.commands.focus();
36
36
  }
37
- }, h = () => {
37
+ }, S = () => {
38
38
  var e;
39
- (e = n.value) == null || e.commands.focus();
40
- }, R = () => {
39
+ (e = s.value) == null || e.commands.focus();
40
+ }, k = () => {
41
41
  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
54
- });
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
79
- };
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);
42
+ (e = s.value) == null || e.commands.blur();
43
+ }, b = async (e) => {
44
+ const { enableReadReceipt: n } = M(), a = {
45
+ needReadReceipt: n.value || !1
46
+ }, o = R(e ?? u.value);
47
+ if (o) {
48
+ if (typeof o == "string") {
49
+ await r.sendTextMessage({
50
+ payload: { text: p(o) },
51
+ ...a
52
+ });
53
+ return;
54
+ }
55
+ await A(o, a);
85
56
  }
86
- await u();
87
57
  };
88
- function J() {
58
+ function R(e) {
59
+ if (typeof e == "string")
60
+ return e.trim() || null;
61
+ const n = I(e);
62
+ return n.length > 0 ? n : null;
63
+ }
64
+ async function A(e, n) {
65
+ const a = [], o = [], c = async () => {
66
+ if (a.length === 0)
67
+ return;
68
+ const t = a.join("");
69
+ a.length = 0, o.length > 0 ? (await r.sendTextAtMessage({
70
+ payload: { text: t, atUserList: o },
71
+ ...n
72
+ }), o.length = 0) : await r.sendTextMessage({
73
+ payload: { text: p(t) },
74
+ ...n
75
+ });
76
+ }, m = async (t) => {
77
+ try {
78
+ switch (t.type) {
79
+ case i.TEXT:
80
+ a.push(t.content);
81
+ break;
82
+ case i.EMOJI:
83
+ a.push(t.content.key);
84
+ break;
85
+ case i.MENTION:
86
+ o.push(t.content.id), a.push(t.content.mentionSuggestionChar + t.content.label);
87
+ break;
88
+ case i.IMAGE:
89
+ await c(), await r.sendImageMessage({
90
+ payload: { file: t.content },
91
+ ...n
92
+ });
93
+ break;
94
+ case i.VIDEO:
95
+ await c(), await r.sendVideoMessage({
96
+ payload: { file: t.content },
97
+ ...n
98
+ });
99
+ break;
100
+ case i.FILE:
101
+ await c(), 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
+ }
110
+ } catch (w) {
111
+ console.error("[MessageInput] Failed to send message item:", t, w);
112
+ }
113
+ };
114
+ let l = 0;
115
+ const y = e.length;
116
+ for (; l < y; )
117
+ await m(e[l]), l++;
118
+ await c();
119
+ }
120
+ function D() {
89
121
  return {
90
- inputRawValue: m,
91
- isPeerTyping: y,
92
- updateRawValue: E,
93
- setEditorInstance: C,
94
- setContent: S,
95
- insertContent: x,
96
- focusEditor: h,
97
- blurEditor: R,
98
- sendMessage: A
122
+ inputRawValue: u,
123
+ isPeerTyping: g,
124
+ updateRawValue: C,
125
+ setEditorInstance: v,
126
+ setContent: x,
127
+ insertContent: E,
128
+ focusEditor: S,
129
+ blurEditor: k,
130
+ sendMessage: b
99
131
  };
100
132
  }
101
133
  function N() {
102
- w.watch(I.CHAT, {
134
+ h.watch(T.CHAT, {
103
135
  typingStatus: (e) => {
104
- y.value = e;
136
+ g.value = e;
105
137
  }
106
138
  });
107
139
  }
108
140
  N();
109
141
  export {
110
- a as MessageContentType,
111
- J as useMessageInputState
142
+ i as MessageContentType,
143
+ D as useMessageInputState
112
144
  };
@@ -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>;