@mobilon-dev/chotto 0.3.20 → 0.3.21

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 (43) hide show
  1. package/dist/{CreateChat-BMkQLuPd.js → CreateChat-DoNHuQv0.js} +1 -1
  2. package/dist/{CreateChat2-CUxgSz4p.js → CreateChat2-DpYCA_v_.js} +1 -1
  3. package/dist/{CreateDialog-CrL6l5Yr.js → CreateDialog-BOnzLE6I.js} +1 -1
  4. package/dist/{ModalVideoRecorder-D86XmPA8.js → ModalVideoRecorder-BY3428rE.js} +1 -1
  5. package/dist/{SelectUser2-CgmFwrUT.js → SelectUser2-CanippyB.js} +1 -1
  6. package/dist/chotto.css +1 -1
  7. package/dist/{index-DdDDz7e5.js → index-D4aZYJgw.js} +16132 -16015
  8. package/dist/themes/dark.css +1 -1
  9. package/dist/themes/default.css +1 -1
  10. package/dist/themes/green.css +1 -1
  11. package/dist/themes/mobilon1.css +1 -1
  12. package/dist/types/apps/data/chats.d.ts +1 -1
  13. package/dist/types/apps/data/messages.d.ts +121 -0
  14. package/dist/types/components/1_atoms/Tooltip/stories/Tooltip.stories.d.ts +8 -2
  15. package/dist/types/components/2_chatinput_elements/ButtonEmojiPicker/stories/ButtonEmojiPicker.stories.d.ts +4 -3
  16. package/dist/types/components/2_elements/ContactInfo/stories/ContactInfo.stories.d.ts +8 -16
  17. package/dist/types/components/2_feed_elements/AudioMessage/styles/types.d.ts +4 -0
  18. package/dist/types/components/2_feed_elements/DateMessageSticky/stories/DateMessageSticky.stories.d.ts +5 -18
  19. package/dist/types/components/2_feed_elements/FeedKeyboard/stories/FeedKeyboard.stories.d.ts +5 -36
  20. package/dist/types/components/2_feed_elements/FileMessage/styles/types.d.ts +4 -0
  21. package/dist/types/components/2_feed_elements/ImageMessage/styles/types.d.ts +4 -0
  22. package/dist/types/components/2_feed_elements/ReplyAudioMessage/stories/ReplyAudioMessage.stories.d.ts +6 -17
  23. package/dist/types/components/2_feed_elements/ReplyCallMessage/stories/ReplyCallMessage.stories.d.ts +6 -17
  24. package/dist/types/components/2_feed_elements/ReplyFileMessage/stories/ReplyFileMessage.stories.d.ts +7 -17
  25. package/dist/types/components/2_feed_elements/ReplyImageMessage/stories/ReplyImageMessage.stories.d.ts +7 -17
  26. package/dist/types/components/2_feed_elements/ReplyTextMessage/stories/ReplyTextMessage.stories.d.ts +8 -17
  27. package/dist/types/components/2_feed_elements/ReplyVideoMessage/stories/ReplyVideoMessage.stories.d.ts +7 -17
  28. package/dist/types/components/2_feed_elements/TextMessage/stories/TextMessage.stories.d.ts +2 -0
  29. package/dist/types/components/2_feed_elements/TextMessage/styles/types.d.ts +4 -0
  30. package/dist/types/components/2_feed_elements/VideoMessage/styles/types.d.ts +4 -0
  31. package/dist/types/components/2_feed_elements/types/messages.d.ts +5 -0
  32. package/dist/types/functions/getMessageClass.d.ts +11 -0
  33. package/dist/types/functions/getStatusMessage.d.ts +1 -0
  34. package/dist/types/functions/index.d.ts +1 -0
  35. package/dist/types/hooks/index.d.ts +2 -1
  36. package/dist/types/hooks/messages/index.d.ts +2 -0
  37. package/dist/types/hooks/messages/useMessageActions.d.ts +56 -0
  38. package/dist/types/hooks/messages/useMessageLinks.d.ts +13 -0
  39. package/dist/types/hooks/{useMessage.d.ts → useMessageDraft.d.ts} +4 -4
  40. package/dist/types/hooks/validators/messages/types.d.ts +2 -1
  41. package/dist/vuessages.es.js +48 -44
  42. package/dist/vuessages.umd.js +28 -28
  43. package/package.json +1 -1
@@ -1,19 +1,10 @@
1
- import type { StoryObj } from '@storybook/vue3-vite';
2
- declare const meta: {
3
- title: string;
4
- component: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
5
- message: {
6
- type: () => import("../../types/messages.ts").ITextMessage;
7
- required: true;
8
- };
9
- }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
10
- message: {
11
- type: () => import("../../types/messages.ts").ITextMessage;
12
- required: true;
13
- };
14
- }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
15
- args: {};
16
- };
1
+ import type { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import ReplyTextMessage from '../ReplyTextMessage.vue';
3
+ declare const meta: Meta<typeof ReplyTextMessage>;
17
4
  export default meta;
18
- type Story = StoryObj<typeof meta>;
5
+ type Story = StoryObj<typeof ReplyTextMessage>;
19
6
  export declare const Default: Story;
7
+ export declare const WithHeader: Story;
8
+ export declare const LongText: Story;
9
+ export declare const WithLink: Story;
10
+ export declare const RightPosition: Story;
@@ -1,19 +1,9 @@
1
- import type { StoryObj } from '@storybook/vue3-vite';
2
- declare const meta: {
3
- title: string;
4
- component: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
5
- message: {
6
- type: () => import("../../types/messages.ts").IVideoMessage;
7
- required: true;
8
- };
9
- }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
10
- message: {
11
- type: () => import("../../types/messages.ts").IVideoMessage;
12
- required: true;
13
- };
14
- }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
15
- args: {};
16
- };
1
+ import type { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import ReplyVideoMessage from '../ReplyVideoMessage.vue';
3
+ declare const meta: Meta<typeof ReplyVideoMessage>;
17
4
  export default meta;
18
- type Story = StoryObj<typeof meta>;
5
+ type Story = StoryObj<typeof ReplyVideoMessage>;
19
6
  export declare const Default: Story;
7
+ export declare const WithHeaderAndText: Story;
8
+ export declare const LongText: Story;
9
+ export declare const RightPosition: Story;
@@ -19,6 +19,8 @@ export declare const RightMessageWithoutTime: Story;
19
19
  export declare const RightMessageStatusSent: Story;
20
20
  export declare const RightMessageStatusReceived: Story;
21
21
  export declare const RightMessageStatusRead: Story;
22
+ export declare const RightMessageStatusPending: Story;
23
+ export declare const RightMessageStatusError: Story;
22
24
  export declare const RightMessageWithActions: Story;
23
25
  export declare const RightMessageWithAvatar: Story;
24
26
  export declare const RightMessageWithLongTime: Story;
@@ -90,6 +90,10 @@ export interface TextMessageThemeCSSVariables {
90
90
  '--chotto-textmessage-status-read-color': string;
91
91
  /** Отрицательный отступ первой иконки статуса "прочитано" */
92
92
  '--chotto-textmessage-status-read-first-child-margin-right': string;
93
+ /** Цвет статуса "в ожидании" */
94
+ '--chotto-textmessage-status-pending-color': string;
95
+ /** Цвет статуса "ошибка" */
96
+ '--chotto-textmessage-status-error-color': string;
93
97
  /** Размер шрифта текста сообщения */
94
98
  '--chotto-textmessage-text-font-size': string;
95
99
  /** Правила перевода строк текста */
@@ -76,6 +76,10 @@ export interface VideoMessageThemeCSSVariables {
76
76
  '--chotto-videomessage-status-read-color': string;
77
77
  /** Отрицательный отступ для иконки "прочитано" */
78
78
  '--chotto-videomessage-status-read-first-child-margin-right': string;
79
+ /** Цвет иконок статуса "в ожидании" */
80
+ '--chotto-videomessage-status-pending-color': string;
81
+ /** Цвет иконок статуса "ошибка" */
82
+ '--chotto-videomessage-status-error-color': string;
79
83
  /** Ряд грида для аватара */
80
84
  '--chotto-videomessage-avatar-grid-row': string;
81
85
  /** Выравнивание аватара относительно себя */
@@ -28,6 +28,7 @@ export interface IAudioMessage {
28
28
  time: string;
29
29
  url: string;
30
30
  status: string;
31
+ statusMsg?: string;
31
32
  avatar?: string;
32
33
  header?: string;
33
34
  subText?: string;
@@ -69,6 +70,7 @@ export interface IFileMessage {
69
70
  time: string;
70
71
  url: string;
71
72
  status: string;
73
+ statusMsg?: string;
72
74
  avatar?: string;
73
75
  header?: string;
74
76
  subText?: string;
@@ -87,6 +89,7 @@ export interface IImageMessage {
87
89
  url: string;
88
90
  alt?: string;
89
91
  status: string;
92
+ statusMsg?: string;
90
93
  avatar?: string;
91
94
  header?: string;
92
95
  subText?: string;
@@ -107,6 +110,7 @@ export interface ITextMessage {
107
110
  text: string;
108
111
  position: string;
109
112
  status: string;
113
+ statusMsg?: string;
110
114
  time: string;
111
115
  avatar?: string;
112
116
  header?: string;
@@ -126,6 +130,7 @@ export interface IVideoMessage {
126
130
  messageId: string;
127
131
  position: string;
128
132
  status: string;
133
+ statusMsg?: string;
129
134
  time: string;
130
135
  url: string;
131
136
  alt?: string;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Возвращает CSS-класс для сообщения в зависимости от позиции
3
+ *
4
+ * Используется в компонентах сообщений, чтобы единообразно формировать
5
+ * классы вида `<prefix>__left` и `<prefix>__right`.
6
+ *
7
+ * @param {string} position - позиция сообщения: 'left' | 'right'
8
+ * @param {string} prefix - префикс CSS-блока (например, 'text-message')
9
+ * @returns {string} CSS-класс с учетом позиции
10
+ */
11
+ export declare function getMessageClass(position: string, prefix: string): string;
@@ -12,3 +12,4 @@ export declare const statuses: string[];
12
12
  * getStatus('unknown') // returns ''
13
13
  */
14
14
  export declare const getStatus: (status: string) => string;
15
+ export declare const getStatusTitle: (status: string, statusMsg?: string) => string;
@@ -3,3 +3,4 @@ export * from './formatTimestamp';
3
3
  export * from './playNotificationAudio';
4
4
  export * from './insertDaySeparators';
5
5
  export * from './sortByTimestamp';
6
+ export * from './getMessageClass';
@@ -1,8 +1,9 @@
1
1
  export * from './uploadFile';
2
2
  export * from './useDelayDebouncedRef';
3
3
  export * from './useImmediateDebouncedRef';
4
- export * from './useMessage';
4
+ export * from './useMessageDraft';
5
5
  export * from './useSearchModel';
6
6
  export * from './useTheme';
7
7
  export * from './modals';
8
8
  export * from './validators';
9
+ export * from './messages';
@@ -0,0 +1,2 @@
1
+ export * from './useMessageActions';
2
+ export * from './useMessageLinks';
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Полезная нагрузка для событий действия сообщения
3
+ * @typedef ActionPayload
4
+ * @property {string} messageId - Идентификатор сообщения
5
+ * @property {string} type - Тип действия (например, 'menu' | 'views')
6
+ */
7
+ type ActionPayload = {
8
+ messageId: string;
9
+ type: string;
10
+ } & Record<string, unknown>;
11
+ /**
12
+ * Тип эмиттера событий компонентов сообщений
13
+ * @typedef EmitFn
14
+ * @param {'action' | 'reply'} event - Имя события
15
+ * @param {ActionPayload | string} payload - Данные события
16
+ */
17
+ type EmitFn = (event: 'action' | 'reply', payload: ActionPayload | string) => void;
18
+ /**
19
+ * Минимально необходимая структура сообщения для работы composable
20
+ * @interface MessageWithMeta
21
+ * @property {string} messageId - Идентификатор сообщения
22
+ * @property {unknown} [actions] - Описание доступных действий (передается в `ContextMenu`)
23
+ */
24
+ export interface MessageWithMeta {
25
+ messageId: string;
26
+ actions?: unknown;
27
+ }
28
+ /**
29
+ * Composable для унификации поведения контекстного меню и связанных действий у сообщений ленты
30
+ *
31
+ * Предоставляет реактивные флаги и обработчики действий: показать/скрыть меню, клик по пункту меню,
32
+ * клик по просмотрам, эмит события ответа.
33
+ *
34
+ * @template T Расширяет {@link MessageWithMeta}
35
+ * @param {T} message - Сообщение с `messageId` (и опционально `actions`)
36
+ * @param {EmitFn} emit - Эмиттер событий из компонента сообщения
37
+ *
38
+ * @returns {object} Объект с состояниями и методами
39
+ * @returns {import('vue').Ref<boolean>} returns.isOpenMenu - Открыт ли контекстное меню
40
+ * @returns {import('vue').Ref<boolean>} returns.buttonMenuVisible - Видна ли кнопка вызова меню
41
+ * @returns {Function} returns.showMenu - Показать кнопку меню
42
+ * @returns {Function} returns.hideMenu - Скрыть кнопку и закрыть меню
43
+ * @returns {Function} returns.clickAction - Обработчик клика по пункту контекстного меню
44
+ * @returns {Function} returns.viewsAction - Обработчик клика по просмотрам
45
+ * @returns {Function} returns.handleClickReplied - Эмит события ответа по `replyMessageId`
46
+ */
47
+ export declare const useMessageActions: <T extends MessageWithMeta>(message: T, emit: EmitFn) => {
48
+ isOpenMenu: import("vue").Ref<boolean, boolean>;
49
+ buttonMenuVisible: import("vue").Ref<boolean, boolean>;
50
+ showMenu: () => void;
51
+ hideMenu: () => void;
52
+ clickAction: (action: Record<string, unknown>) => void;
53
+ viewsAction: () => void;
54
+ handleClickReplied: (replyMessageId: string) => void;
55
+ };
56
+ export {};
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Создает вычисляемое HTML-представление текста с автоссылками и обработчик
3
+ * открытия ссылок в новой вкладке
4
+ *
5
+ * @param {() => string | undefined} getText - функция, возвращающая исходный текст
6
+ * @returns {{ linkedHtml: import('vue').ComputedRef<string>, inNewWindow: (event: Event) => void }}
7
+ * - linkedHtml: вычисляемый HTML с проставленными ссылками
8
+ * - inNewWindow: обработчик клика, открывающий ссылки в новой вкладке
9
+ */
10
+ export declare const useMessageLinks: (getText: () => string | undefined) => {
11
+ linkedHtml: import("vue").ComputedRef<string>;
12
+ inNewWindow: (event: Event) => void;
13
+ };
@@ -37,10 +37,10 @@ interface UploadedFile {
37
37
  *
38
38
  * @example
39
39
  * // Базовое использование в компоненте
40
- * import { useMessage } from '@/hooks';
40
+ * import { useMessageDraft } from '@/hooks';
41
41
  *
42
42
  * const chatAppId = 'chat-123';
43
- * const { getMessage, setMessageText, setMessageFile, resetMessage } = useMessage(chatAppId);
43
+ * const { getMessage, setMessageText, setMessageFile, resetMessage } = useMessageDraft(chatAppId);
44
44
  *
45
45
  * // Установить текст
46
46
  * setMessageText('Привет!');
@@ -62,7 +62,7 @@ interface UploadedFile {
62
62
  *
63
63
  * @example
64
64
  * // Работа с ответами
65
- * const { setReply, resetReply } = useMessage(chatAppId);
65
+ * const { setReply, resetReply } = useMessageDraft(chatAppId);
66
66
  *
67
67
  * setReply({
68
68
  * id: 'msg-456',
@@ -73,7 +73,7 @@ interface UploadedFile {
73
73
  * // Удалить ответ
74
74
  * resetReply();
75
75
  */
76
- export declare const useMessage: (outId: string) => {
76
+ export declare const useMessageDraft: (outId: string) => {
77
77
  getMessage: () => {
78
78
  id: string;
79
79
  text: string;
@@ -45,7 +45,8 @@ export interface Message {
45
45
  type: string;
46
46
  timestamp: string | number;
47
47
  direction?: 'incoming' | 'outgoing';
48
- status?: 'read' | 'sent' | 'received';
48
+ status?: 'read' | 'sent' | 'received' | 'pending' | 'error';
49
+ statusMsg?: string;
49
50
  text?: string;
50
51
  header?: string;
51
52
  subText?: string;
@@ -1,4 +1,4 @@
1
- import { ai as s, H as t, w as o, A as l, al as i, ag as n, I as r, i as d, B as u, j as c, k as M, l as g, J as p, x as m, t as C, y as h, ac as y, u as S, ad as B, z as F, v as I, ak as A, a as R, b as T, f as b, c as V, D as v, C as P, K as f, N as x, E as D, ah as k, ae as L, F as W, g as w, O as E, aj as U, h as j, Q as K, m as N, n as O, am as Q, R as q, L as z, M as G, X as H, a8 as J, a9 as X, aa as Y, P as Z, Y as $, Z as _, $ as aa, a0 as ea, a1 as sa, a2 as ta, S as oa, ab as la, d as ia, af as na, a3 as ra, a4 as da, e as ua, o as ca, a5 as Ma, G as ga, T as pa, a6 as ma, U as Ca, a7 as ha, V as ya, p as Sa, q as Ba, r as Fa, s as Ia, W as Aa, aM as Ra, an as Ta, aE as ba, aH as Va, aL as va, ao as Pa, aB as fa, aO as xa, aN as Da, aP as ka, aK as La, ap as Wa, aC as wa, aq as Ea, ar as Ua, as as ja, aF as Ka, av as Na, aw as Oa, ax as Qa, ay as qa, az as za, at as Ga, aI as Ha, au as Ja, aJ as Xa, aA as Ya, aD as Za, aG as $a } from "./index-DdDDz7e5.js";
1
+ import { ai as s, H as t, w as o, A as l, al as i, ag as n, I as r, i as d, B as u, j as c, k as M, l as g, J as p, x as C, t as m, y as S, ac as h, u as y, ad as B, z as F, v as I, ak as A, a as R, b as T, f as b, c as V, D as f, C as v, K as P, N as D, E as k, ah as x, ae as L, F as W, g as w, O as E, aj as U, h as j, Q as K, m as N, n as Q, am as O, R as q, L as z, M as G, X as H, a8 as J, a9 as X, aa as Y, P as Z, Y as $, Z as _, $ as aa, a0 as ea, a1 as sa, a2 as ta, S as oa, ab as la, d as ia, af as na, a3 as ra, a4 as da, e as ua, o as ca, a5 as Ma, G as ga, T as pa, a6 as Ca, U as ma, a7 as Sa, V as ha, p as ya, q as Ba, r as Fa, s as Ia, W as Aa, aP as Ra, an as Ta, aT as ba, aE as Va, aH as fa, aN as va, aO as Pa, ao as Da, aB as ka, aR as xa, aQ as La, aS as Wa, aM as wa, ap as Ea, aC as Ua, aq as ja, ar as Ka, aK as Na, as as Qa, aL as Oa, aF as qa, av as za, aw as Ga, ax as Ha, ay as Ja, az as Xa, at as Ya, aI as Za, au as $a, aJ as _a, aA as ae, aD as ee, aG as se } from "./index-D4aZYJgw.js";
2
2
  export {
3
3
  s as AdaptiveExtendedLayout,
4
4
  t as AudioMessage,
@@ -13,11 +13,11 @@ export {
13
13
  M as ButtonTemplateSelector,
14
14
  g as ButtonWabaTemplateSelector,
15
15
  p as CallMessage,
16
- m as ChannelSelector,
17
- C as ChatFilter,
18
- h as ChatInfo,
19
- y as ChatInput,
20
- S as ChatItem,
16
+ C as ChannelSelector,
17
+ m as ChatFilter,
18
+ S as ChatInfo,
19
+ h as ChatInput,
20
+ y as ChatItem,
21
21
  B as ChatList,
22
22
  F as ChatPanel,
23
23
  I as ChatTabs,
@@ -26,12 +26,12 @@ export {
26
26
  T as CloseButtonIcon,
27
27
  b as CommunicationPanel,
28
28
  V as ContactCRMIcon,
29
- v as ContactInfo,
30
- P as ContextMenu,
31
- f as DateMessage,
32
- x as DateMessageSticky,
33
- D as EmbedPreview,
34
- k as ExtendedLayout,
29
+ f as ContactInfo,
30
+ v as ContextMenu,
31
+ P as DateMessage,
32
+ D as DateMessageSticky,
33
+ k as EmbedPreview,
34
+ x as ExtendedLayout,
35
35
  L as Feed,
36
36
  W as FeedFoundItem,
37
37
  w as FeedFoundObjects,
@@ -40,8 +40,8 @@ export {
40
40
  j as FeedSearch,
41
41
  K as FileMessage,
42
42
  N as FilePreview,
43
- O as FileUploader,
44
- Q as FloatContainer,
43
+ Q as FileUploader,
44
+ O as FloatContainer,
45
45
  q as ImageMessage,
46
46
  z as LinkPreview,
47
47
  G as MenuIcon,
@@ -67,42 +67,46 @@ export {
67
67
  Ma as TextMessage,
68
68
  ga as ThemeMode,
69
69
  pa as Tooltip,
70
- ma as TypingMessage,
71
- Ca as UserProfile,
72
- ha as VideoMessage,
73
- ya as VideoRecorder,
74
- Sa as WABAAttachmentSection,
70
+ Ca as TypingMessage,
71
+ ma as UserProfile,
72
+ Sa as VideoMessage,
73
+ ha as VideoRecorder,
74
+ ya as WABAAttachmentSection,
75
75
  Ba as WABAQuickReplyButtons,
76
76
  Fa as WABASeparatedQuickButtons,
77
77
  Ia as WABATemplateSelector,
78
78
  Aa as WhatsAppIcon,
79
79
  Ra as formatTimestamp,
80
80
  Ta as generatePreview,
81
- ba as getMessageValidationReport,
82
- Va as getSidebarValidationReport,
81
+ ba as getMessageClass,
82
+ Va as getMessageValidationReport,
83
+ fa as getSidebarValidationReport,
83
84
  va as getStatus,
84
- Pa as getTypeFileByMime,
85
- fa as getValidationReport,
85
+ Pa as getStatusTitle,
86
+ Da as getTypeFileByMime,
87
+ ka as getValidationReport,
86
88
  xa as insertDaySeparators,
87
- Da as playNotificationAudio,
88
- ka as sortByTimestamp,
89
- La as statuses,
90
- Wa as uploadFile,
91
- wa as useChatValidator,
92
- Ea as useDelayDebouncedRef,
93
- Ua as useImmediateDebouncedRef,
94
- ja as useMessage,
95
- Ka as useMessageValidator,
96
- Na as useModalCreateChat,
97
- Oa as useModalCreateChat2,
98
- Qa as useModalCreateDialog,
99
- qa as useModalSelectUser2,
100
- za as useModalVideoRecorder,
101
- Ga as useSearchModel,
102
- Ha as useSidebarValidator,
103
- Ja as useTheme,
104
- Xa as useValidation,
105
- Ya as validateChats,
106
- Za as validateMessages,
107
- $a as validateSidebarItems
89
+ La as playNotificationAudio,
90
+ Wa as sortByTimestamp,
91
+ wa as statuses,
92
+ Ea as uploadFile,
93
+ Ua as useChatValidator,
94
+ ja as useDelayDebouncedRef,
95
+ Ka as useImmediateDebouncedRef,
96
+ Na as useMessageActions,
97
+ Qa as useMessageDraft,
98
+ Oa as useMessageLinks,
99
+ qa as useMessageValidator,
100
+ za as useModalCreateChat,
101
+ Ga as useModalCreateChat2,
102
+ Ha as useModalCreateDialog,
103
+ Ja as useModalSelectUser2,
104
+ Xa as useModalVideoRecorder,
105
+ Ya as useSearchModel,
106
+ Za as useSidebarValidator,
107
+ $a as useTheme,
108
+ _a as useValidation,
109
+ ae as validateChats,
110
+ ee as validateMessages,
111
+ se as validateSidebarItems
108
112
  };