@mobilon-dev/chotto 0.3.84 → 0.3.86

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 (135) hide show
  1. package/dist/chotto.css +1 -1
  2. package/dist/components/1_atoms/ButtonContextMenu/ButtonContextMenu.vue2.js +3 -2
  3. package/dist/components/1_atoms/ContactContextMenu/ContactContextMenu.vue2.js +3 -2
  4. package/dist/components/1_atoms/EmojiGlyph/EmojiGlyph.vue.js +38 -0
  5. package/dist/components/1_atoms/EmojiGlyph/EmojiGlyph.vue2.js +4 -0
  6. package/dist/components/1_atoms/Tooltip/Tooltip.vue.js +1 -1
  7. package/dist/components/1_atoms/Tooltip/Tooltip.vue2.js +49 -36
  8. package/dist/components/1_icons/CloseIcon.vue.js +21 -0
  9. package/dist/components/2_blocks/CommunicationPanel/CommunicationPanel.vue.js +174 -165
  10. package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationActions.js +21 -18
  11. package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationMenu.js +32 -27
  12. package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationSubMenu.js +44 -35
  13. package/dist/components/2_blocks/FeedSearch/FeedSearch.vue2.js +10 -9
  14. package/dist/components/2_chatinput_elements/ButtonCommandsSelector/ButtonCommandsSelector.vue2.js +8 -7
  15. package/dist/components/2_chatinput_elements/ButtonEmojiPicker/ButtonEmojiPicker.vue.js +2 -2
  16. package/dist/components/2_chatinput_elements/ButtonEmojiPicker/ButtonEmojiPicker.vue2.js +48 -37
  17. package/dist/components/2_chatinput_elements/ButtonTemplateSelector/ButtonTemplateSelector.vue2.js +3 -2
  18. package/dist/components/2_chatinput_elements/ButtonWabaTemplateSelector/ButtonWabaTemplateSelector.vue.js +7 -6
  19. package/dist/components/2_chatinput_elements/FilePreview/FilePreview.vue2.js +3 -2
  20. package/dist/components/2_chatinput_elements/FileUploader/FileUploader.vue2.js +3 -2
  21. package/dist/components/2_chatinput_elements/StickerPicker/StickerPicker.vue2.js +3 -2
  22. package/dist/components/2_chatinput_elements/TemplateSelector/TemplateSelector.vue.js +27 -26
  23. package/dist/components/2_chatinput_elements/TextFormatToolbar/TextFormatToolbar.vue2.js +3 -2
  24. package/dist/components/2_chatinput_elements/WABAAttachmentSection/WABAAttachmentSection.vue2.js +3 -2
  25. package/dist/components/2_chatlist_elements/ChatItem/ChatItem.vue2.js +3 -2
  26. package/dist/components/2_elements/AudioRecorder/AudioRecorder.vue2.js +3 -2
  27. package/dist/components/2_elements/ChannelSelector/ChannelSelector.vue.js +6 -5
  28. package/dist/components/2_elements/ThemeMode/ThemeMode.vue.js +10 -9
  29. package/dist/components/2_elements/VideoRecorder/VideoRecorder.vue2.js +3 -2
  30. package/dist/components/2_feed_elements/AudioMessage/AudioMessage.vue.js +1 -1
  31. package/dist/components/2_feed_elements/AudioMessage/AudioMessage.vue2.js +169 -143
  32. package/dist/components/2_feed_elements/BaseReplyMessage/BaseReplyMessage.vue.js +4 -4
  33. package/dist/components/2_feed_elements/BaseReplyMessage/BaseReplyMessage.vue2.js +33 -32
  34. package/dist/components/2_feed_elements/CallMessage/CallMessage.vue2.js +8 -2
  35. package/dist/components/2_feed_elements/FileMessage/FileMessage.vue.js +3 -3
  36. package/dist/components/2_feed_elements/FileMessage/FileMessage.vue2.js +134 -108
  37. package/dist/components/2_feed_elements/ImageMessage/ImageMessage.vue.js +1 -1
  38. package/dist/components/2_feed_elements/ImageMessage/ImageMessage.vue2.js +116 -97
  39. package/dist/components/2_feed_elements/MessageKeyboard/MessageKeyboard.vue2.js +3 -2
  40. package/dist/components/2_feed_elements/MessageReactions/MessageReactions.vue.js +2 -2
  41. package/dist/components/2_feed_elements/MessageReactions/MessageReactions.vue2.js +232 -113
  42. package/dist/components/2_feed_elements/MessageReactions/composables/usePositioning.js +77 -62
  43. package/dist/components/2_feed_elements/MessageReactions/composables/useReactions.js +62 -20
  44. package/dist/components/2_feed_elements/MessageReactions/composables/useReactionsPanel.js +91 -69
  45. package/dist/components/2_feed_elements/MessageReactions/composables/useReactionsState.js +46 -22
  46. package/dist/components/2_feed_elements/MessageReactions/icons/ExpandReactionsIcon.vue.js +21 -0
  47. package/dist/components/2_feed_elements/MessageReactions/icons/ReplyIcon.vue.js +21 -0
  48. package/dist/components/2_feed_elements/MessageReactions/utils/quickReactions.js +2 -8
  49. package/dist/components/2_feed_elements/MessageReactions/utils/reactionTooltip.js +39 -0
  50. package/dist/components/2_feed_elements/MissedCallMessage/MissedCallMessage.vue2.js +26 -20
  51. package/dist/components/2_feed_elements/ReplyAudioMessage/ReplyAudioMessage.vue.js +2 -2
  52. package/dist/components/2_feed_elements/ReplyAudioMessage/ReplyAudioMessage.vue2.js +27 -18
  53. package/dist/components/2_feed_elements/ReplyCallMessage/ReplyCallMessage.vue.js +2 -2
  54. package/dist/components/2_feed_elements/ReplyCallMessage/ReplyCallMessage.vue2.js +16 -15
  55. package/dist/components/2_feed_elements/ReplyFileMessage/ReplyFileMessage.vue.js +3 -3
  56. package/dist/components/2_feed_elements/ReplyFileMessage/ReplyFileMessage.vue2.js +27 -18
  57. package/dist/components/2_feed_elements/ReplyImageMessage/ReplyImageMessage.vue.js +1 -1
  58. package/dist/components/2_feed_elements/ReplyImageMessage/ReplyImageMessage.vue2.js +16 -12
  59. package/dist/components/2_feed_elements/ReplyStickerMessage/ReplyStickerMessage.vue.js +4 -4
  60. package/dist/components/2_feed_elements/ReplyStickerMessage/ReplyStickerMessage.vue2.js +74 -65
  61. package/dist/components/2_feed_elements/ReplyTextMessage/ReplyTextMessage.vue.js +1 -1
  62. package/dist/components/2_feed_elements/ReplyTextMessage/ReplyTextMessage.vue2.js +20 -11
  63. package/dist/components/2_feed_elements/ReplyVideoMessage/ReplyVideoMessage.vue.js +2 -2
  64. package/dist/components/2_feed_elements/ReplyVideoMessage/ReplyVideoMessage.vue2.js +13 -9
  65. package/dist/components/2_feed_elements/StickerMessage/StickerMessage.vue.js +4 -4
  66. package/dist/components/2_feed_elements/StickerMessage/StickerMessage.vue2.js +74 -55
  67. package/dist/components/2_feed_elements/TextMessage/TextMessage.vue.js +4 -4
  68. package/dist/components/2_feed_elements/TextMessage/TextMessage.vue2.js +102 -76
  69. package/dist/components/2_feed_elements/VideoMessage/VideoMessage.vue.js +2 -2
  70. package/dist/components/2_feed_elements/VideoMessage/VideoMessage.vue2.js +74 -55
  71. package/dist/components/3_compounds/ChatInput/ChatInput.vue.js +2 -2
  72. package/dist/components/3_compounds/ChatInput/ChatInput.vue2.js +99 -82
  73. package/dist/components/3_compounds/Feed/Feed.vue.js +3 -3
  74. package/dist/components/3_compounds/Feed/Feed.vue2.js +159 -139
  75. package/dist/components/3_compounds/Feed/composables/useFeedReply.js +22 -25
  76. package/dist/functions/renderAppleEmojis.js +92 -0
  77. package/dist/hooks/messages/buildReplyPayload.js +14 -0
  78. package/dist/hooks/messages/useMessageLinks.js +60 -50
  79. package/dist/hooks/messages/useStartReply.js +29 -0
  80. package/dist/hooks/useEmojiNative.js +19 -0
  81. package/dist/index.js +130 -122
  82. package/dist/themes/dark.css +1 -1
  83. package/dist/themes/default.css +1 -1
  84. package/dist/themes/glass.css +1 -1
  85. package/dist/themes/green.css +1 -1
  86. package/dist/themes/mobilon1.css +1 -1
  87. package/dist/types/apps/data/messages.d.ts +20 -18
  88. package/dist/types/components/1_atoms/EmojiGlyph/EmojiGlyph.vue.d.ts +12 -0
  89. package/dist/types/components/1_atoms/Tooltip/stories/Tooltip.stories.d.ts +3 -0
  90. package/dist/types/components/1_icons/CloseIcon.vue.d.ts +2 -0
  91. package/dist/types/components/2_blocks/CommunicationPanel/CommunicationPanel.vue.d.ts +2 -0
  92. package/dist/types/components/2_blocks/CommunicationPanel/composables/useCommunicationActions.d.ts +3 -1
  93. package/dist/types/components/2_blocks/CommunicationPanel/composables/useCommunicationMenu.d.ts +3 -0
  94. package/dist/types/components/2_blocks/CommunicationPanel/composables/useCommunicationSubMenu.d.ts +4 -2
  95. package/dist/types/components/2_blocks/CommunicationPanel/stories/CommunicationPanel.stories.d.ts +1 -0
  96. package/dist/types/components/2_chatinput_elements/ButtonEmojiPicker/ButtonEmojiPicker.vue.d.ts +9 -1
  97. package/dist/types/components/2_feed_elements/AudioMessage/AudioMessage.vue.d.ts +29 -0
  98. package/dist/types/components/2_feed_elements/AudioMessage/styles/types.d.ts +24 -16
  99. package/dist/types/components/2_feed_elements/BaseReplyMessage/styles/types.d.ts +8 -4
  100. package/dist/types/components/2_feed_elements/FileMessage/FileMessage.vue.d.ts +29 -0
  101. package/dist/types/components/2_feed_elements/FileMessage/styles/types.d.ts +20 -0
  102. package/dist/types/components/2_feed_elements/ImageMessage/ImageMessage.vue.d.ts +29 -0
  103. package/dist/types/components/2_feed_elements/ImageMessage/styles/types.d.ts +2 -0
  104. package/dist/types/components/2_feed_elements/MessageReactions/MessageReactions.vue.d.ts +64 -1
  105. package/dist/types/components/2_feed_elements/MessageReactions/composables/index.d.ts +2 -2
  106. package/dist/types/components/2_feed_elements/MessageReactions/composables/usePositioning.d.ts +11 -1
  107. package/dist/types/components/2_feed_elements/MessageReactions/composables/useReactions.d.ts +20 -12
  108. package/dist/types/components/2_feed_elements/MessageReactions/composables/useReactionsPanel.d.ts +3 -3
  109. package/dist/types/components/2_feed_elements/MessageReactions/composables/useReactionsState.d.ts +13 -22
  110. package/dist/types/components/2_feed_elements/MessageReactions/icons/ExpandReactionsIcon.vue.d.ts +2 -0
  111. package/dist/types/components/2_feed_elements/MessageReactions/icons/ReplyIcon.vue.d.ts +2 -0
  112. package/dist/types/components/2_feed_elements/MessageReactions/styles/types.d.ts +14 -74
  113. package/dist/types/components/2_feed_elements/MessageReactions/utils/quickReactions.d.ts +1 -1
  114. package/dist/types/components/2_feed_elements/MessageReactions/utils/reactionTooltip.d.ts +14 -0
  115. package/dist/types/components/2_feed_elements/ReplyAudioMessage/styles/types.d.ts +6 -0
  116. package/dist/types/components/2_feed_elements/ReplyCallMessage/styles/types.d.ts +6 -0
  117. package/dist/types/components/2_feed_elements/ReplyFileMessage/styles/types.d.ts +6 -0
  118. package/dist/types/components/2_feed_elements/ReplyImageMessage/styles/types.d.ts +6 -0
  119. package/dist/types/components/2_feed_elements/ReplyStickerMessage/styles/types.d.ts +6 -0
  120. package/dist/types/components/2_feed_elements/ReplyTextMessage/styles/types.d.ts +4 -0
  121. package/dist/types/components/2_feed_elements/ReplyVideoMessage/styles/types.d.ts +6 -0
  122. package/dist/types/components/2_feed_elements/StickerMessage/StickerMessage.vue.d.ts +29 -0
  123. package/dist/types/components/2_feed_elements/TextMessage/TextMessage.vue.d.ts +29 -0
  124. package/dist/types/components/2_feed_elements/TextMessage/styles/types.d.ts +22 -0
  125. package/dist/types/components/2_feed_elements/VideoMessage/VideoMessage.vue.d.ts +29 -0
  126. package/dist/types/components/2_feed_elements/types/messages.d.ts +11 -6
  127. package/dist/types/components/3_compounds/ChatInput/styles/types.d.ts +2 -0
  128. package/dist/types/components/3_compounds/Feed/Feed.vue.d.ts +33 -0
  129. package/dist/types/functions/renderAppleEmojis.d.ts +16 -0
  130. package/dist/types/hooks/index.d.ts +1 -0
  131. package/dist/types/hooks/messages/buildReplyPayload.d.ts +11 -0
  132. package/dist/types/hooks/messages/index.d.ts +2 -0
  133. package/dist/types/hooks/messages/useStartReply.d.ts +6 -0
  134. package/dist/types/hooks/useEmojiNative.d.ts +9 -0
  135. package/package.json +1 -1
@@ -16,6 +16,19 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
16
16
  type: BooleanConstructor;
17
17
  default: boolean;
18
18
  };
19
+ reactionsMode: {
20
+ type: () => "single" | "multi";
21
+ default: string;
22
+ validator: (value: string) => boolean;
23
+ };
24
+ currentUserId: {
25
+ type: () => string | number | undefined;
26
+ default: undefined;
27
+ };
28
+ reactionUserNames: {
29
+ type: () => Record<string, string>;
30
+ default: undefined;
31
+ };
19
32
  subtextTooltipData: {
20
33
  type: () => Record<string, string>;
21
34
  required: false;
@@ -47,6 +60,19 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
47
60
  type: BooleanConstructor;
48
61
  default: boolean;
49
62
  };
63
+ reactionsMode: {
64
+ type: () => "single" | "multi";
65
+ default: string;
66
+ validator: (value: string) => boolean;
67
+ };
68
+ currentUserId: {
69
+ type: () => string | number | undefined;
70
+ default: undefined;
71
+ };
72
+ reactionUserNames: {
73
+ type: () => Record<string, string>;
74
+ default: undefined;
75
+ };
50
76
  subtextTooltipData: {
51
77
  type: () => Record<string, string>;
52
78
  required: false;
@@ -63,9 +89,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
63
89
  "onSms-invite"?: ((...args: any[]) => any) | undefined;
64
90
  }>, {
65
91
  channel: string;
92
+ currentUserId: string | number | undefined;
93
+ reactionUserNames: Record<string, string>;
66
94
  applyStyle: Function;
67
95
  isFirstInSeries: boolean;
68
96
  reactionsEnabled: boolean;
97
+ reactionsMode: "single" | "multi";
69
98
  subtextTooltipData: Record<string, string>;
70
99
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
71
100
  export default _default;
@@ -16,22 +16,27 @@ export interface ILinkPreview {
16
16
  description: string;
17
17
  }
18
18
  export type ReactionKey = string;
19
+ /** Одна реакция от конкретного пользователя */
19
20
  export interface MessageReactionItem {
20
21
  key: ReactionKey;
21
- count: number;
22
- reactedByMe?: boolean;
23
- }
24
- export interface MessageRecentReaction {
25
22
  userId: string | number;
26
- key: ReactionKey;
27
23
  date?: number;
24
+ /** Имя автора (snapshot); если нет — берётся из reactionUserNames */
25
+ name?: string;
26
+ }
27
+ /** Агрегированный чип для отображения (считается в UI) */
28
+ export interface MessageReactionChip {
29
+ key: ReactionKey;
30
+ count: number;
31
+ reactedByMe: boolean;
32
+ /** Исходные события по этому эмодзи (для тултипа) */
33
+ events: MessageReactionItem[];
28
34
  }
29
35
  export interface MessageReactions {
30
36
  items: MessageReactionItem[];
31
37
  meta?: {
32
38
  mode?: 'single' | 'multi';
33
39
  };
34
- recent?: MessageRecentReaction[];
35
40
  vendor?: {
36
41
  telegram?: {
37
42
  total_count?: number;
@@ -26,6 +26,8 @@ export interface ChatInputThemeCSSVariables {
26
26
  '--chotto-chatinput-reply-line-grid-row': string;
27
27
  /** Отображение строки ответа */
28
28
  '--chotto-chatinput-reply-line-display': string;
29
+ /** Отступ снизу строки ответа */
30
+ '--chotto-chatinput-reply-line-margin-bottom': string;
29
31
  /** Колонка сетки строки файла */
30
32
  '--chotto-chatinput-file-line-grid-column': string;
31
33
  /** Строка сетки строки файла */
@@ -75,6 +75,21 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
75
75
  type: BooleanConstructor;
76
76
  default: boolean;
77
77
  };
78
+ reactionsMode: {
79
+ type: () => "single" | "multi";
80
+ default: string;
81
+ validator: (value: string) => boolean;
82
+ };
83
+ /** Id текущего пользователя — для расчёта «моих» реакций */
84
+ currentUserId: {
85
+ type: () => string | number | undefined;
86
+ default: undefined;
87
+ };
88
+ /** userId → имя для тултипов реакций */
89
+ reactionUserNames: {
90
+ type: () => Record<string, string>;
91
+ default: undefined;
92
+ };
78
93
  subtextTooltipData: {
79
94
  type: ObjectConstructor;
80
95
  required: false;
@@ -170,6 +185,21 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
170
185
  type: BooleanConstructor;
171
186
  default: boolean;
172
187
  };
188
+ reactionsMode: {
189
+ type: () => "single" | "multi";
190
+ default: string;
191
+ validator: (value: string) => boolean;
192
+ };
193
+ /** Id текущего пользователя — для расчёта «моих» реакций */
194
+ currentUserId: {
195
+ type: () => string | number | undefined;
196
+ default: undefined;
197
+ };
198
+ /** userId → имя для тултипов реакций */
199
+ reactionUserNames: {
200
+ type: () => Record<string, string>;
201
+ default: undefined;
202
+ };
173
203
  subtextTooltipData: {
174
204
  type: ObjectConstructor;
175
205
  required: false;
@@ -198,8 +228,11 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
198
228
  }>, {
199
229
  typing: boolean | IFeedTyping;
200
230
  chatBackground: string;
231
+ currentUserId: string | number | undefined;
232
+ reactionUserNames: Record<string, string>;
201
233
  applyStyle: Function;
202
234
  reactionsEnabled: boolean;
235
+ reactionsMode: "single" | "multi";
203
236
  subtextTooltipData: Record<string, any>;
204
237
  enableDoubleClickReply: boolean;
205
238
  buttonParams: IFeedUnreadButton;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Рендер Unicode-эмодзi картинками Apple (тот же CDN, что vue3-emoji-picker-ru при native=false).
3
+ */
4
+ export declare const APPLE_EMOJI_CDN = "https://cdn.jsdelivr.net/npm/emoji-datasource-apple@6.0.1/img/apple/64";
5
+ /** Имена файлов emoji-datasource совпадают с полем u: все codepoints через дефис, включая fe0f/fe0e */
6
+ export declare function emojiToAppleCode(emoji: string, options?: {
7
+ stripVariationSelectors?: boolean;
8
+ }): string;
9
+ export declare function getAppleEmojiUrl(emoji: string): string;
10
+ /** Альтернативный URL, если основной codepoint не совпал с именем файла в emoji-datasource */
11
+ export declare function getAppleEmojiFallbackUrl(emoji: string): string | null;
12
+ export declare function createAppleEmojiImgHtml(emoji: string): string;
13
+ /** Plain text → HTML с Apple-эмодзi (для зеркала инпута) */
14
+ export declare function textToAppleEmojiHtml(text: string): string;
15
+ /** HTML → HTML, эмодзi в текстовых узлах заменяются на img */
16
+ export declare function replaceEmojisInHtml(html: string): string;
@@ -4,6 +4,7 @@ export * from './useImmediateDebouncedRef';
4
4
  export * from './useMessageDraft';
5
5
  export * from './useSearchModel';
6
6
  export * from './useTheme';
7
+ export * from './useEmojiNative';
7
8
  export * from './modals';
8
9
  export * from './validators';
9
10
  export * from './messages';
@@ -0,0 +1,11 @@
1
+ import type { Reply } from '@/types';
2
+ export interface ReplyMessageSource {
3
+ messageId: string | number;
4
+ type?: string;
5
+ text?: string;
6
+ url?: string;
7
+ filename?: string;
8
+ header?: string;
9
+ callDuration?: string;
10
+ }
11
+ export declare function buildReplyPayload(message: ReplyMessageSource, fallbackType: string): Reply;
@@ -2,3 +2,5 @@ export * from './useMessageActions';
2
2
  export * from './useMessageLinks';
3
3
  export * from './useChannelAccentColor';
4
4
  export * from './useSubtextTooltip';
5
+ export * from './useStartReply';
6
+ export * from './buildReplyPayload';
@@ -0,0 +1,6 @@
1
+ import type { Reply } from '@/types';
2
+ export declare function showReplyPreview(chatAppId: string): void;
3
+ export declare function hideReplyPreview(chatAppId: string): void;
4
+ export declare function useStartReply(chatAppId: string): {
5
+ startReply: (reply: Reply) => void;
6
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Общий флаг native/3D-эмодзи для инстанса чата (ключ — chatAppId).
3
+ * Источник правды — prop `native` у ButtonEmojiPicker.
4
+ */
5
+ export declare const useEmojiNative: (outId: string) => {
6
+ isNative: import("vue").ComputedRef<boolean>;
7
+ getNative: () => boolean;
8
+ setNative: (native: boolean) => void;
9
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mobilon-dev/chotto",
3
- "version": "0.3.84",
3
+ "version": "0.3.86",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",