@mobilon-dev/chotto 0.3.30 → 0.3.31

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 (321) hide show
  1. package/dist/_virtual/_plugin-vue_export-helper.js +9 -0
  2. package/dist/chotto.css +1 -1
  3. package/dist/components/1_atoms/ButtonContextMenu/ButtonContextMenu.vue.js +7 -0
  4. package/dist/components/1_atoms/ButtonContextMenu/ButtonContextMenu.vue2.js +106 -0
  5. package/dist/components/1_atoms/ContextMenu/ContextMenu.vue.js +46 -0
  6. package/dist/components/1_atoms/EmbedPreview/EmbedPreview.vue.js +7 -0
  7. package/dist/components/1_atoms/EmbedPreview/EmbedPreview.vue2.js +39 -0
  8. package/dist/components/1_atoms/LinkPreview/LinkPreview.vue.js +7 -0
  9. package/dist/components/1_atoms/LinkPreview/LinkPreview.vue2.js +32 -0
  10. package/dist/components/1_atoms/Tooltip/Tooltip.vue.js +7 -0
  11. package/dist/components/1_atoms/Tooltip/Tooltip.vue2.js +77 -0
  12. package/dist/components/1_icons/AvatarIcon.vue.js +42 -0
  13. package/dist/components/1_icons/CheckIcon.vue.js +28 -0
  14. package/dist/components/1_icons/CloseButtonIcon.vue.js +21 -0
  15. package/dist/components/1_icons/ContactCRMIcon.vue.js +21 -0
  16. package/dist/components/1_icons/MenuIcon.vue.js +21 -0
  17. package/dist/components/1_icons/SearchIcon.vue.js +28 -0
  18. package/dist/components/1_icons/SettingsIcon.vue.js +18 -0
  19. package/dist/components/1_icons/TelegramIcon.vue.js +32 -0
  20. package/dist/components/1_icons/WhatsAppIcon.vue.js +32 -0
  21. package/dist/components/2_blocks/CommunicationPanel/CommunicationPanel.vue.js +307 -0
  22. package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationActions.js +83 -0
  23. package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationAttributes.js +60 -0
  24. package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationChannels.js +70 -0
  25. package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationDialogSync.js +36 -0
  26. package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationMenu.js +37 -0
  27. package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationSubMenu.js +69 -0
  28. package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelMaxIcon.vue.js +18 -0
  29. package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelPhoneIcon.vue.js +23 -0
  30. package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelSMSIcon.vue.js +21 -0
  31. package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelSubmenuMaxIcon.vue.js +34 -0
  32. package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelSubmenuPhoneIcon.vue.js +32 -0
  33. package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelSubmenuSMSIcon.vue.js +21 -0
  34. package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelSubmenuTelegramIcon.vue.js +18 -0
  35. package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelSubmenuWhatsAppIcon.vue.js +32 -0
  36. package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelTelegramIcon.vue.js +32 -0
  37. package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelWhatsAppIcon.vue.js +18 -0
  38. package/dist/components/2_blocks/FeedFoundItem/FeedFoundItem.vue.js +7 -0
  39. package/dist/components/2_blocks/FeedFoundItem/FeedFoundItem.vue2.js +61 -0
  40. package/dist/components/2_blocks/FeedFoundObjects/FeedFoundObjects.vue.js +7 -0
  41. package/dist/components/2_blocks/FeedFoundObjects/FeedFoundObjects.vue2.js +58 -0
  42. package/dist/components/2_blocks/FeedSearch/FeedSearch.vue.js +7 -0
  43. package/dist/components/2_blocks/FeedSearch/FeedSearch.vue2.js +68 -0
  44. package/dist/components/2_chatinput_elements/ButtonCommandsSelector/ButtonCommandsSelector.vue.js +7 -0
  45. package/dist/components/2_chatinput_elements/ButtonCommandsSelector/ButtonCommandsSelector.vue2.js +70 -0
  46. package/dist/components/2_chatinput_elements/ButtonEmojiPicker/ButtonEmojiPicker.vue.js +106 -0
  47. package/dist/components/2_chatinput_elements/ButtonEmojiPicker/icons/SmilesIcon.vue.js +18 -0
  48. package/dist/components/2_chatinput_elements/ButtonTemplateSelector/ButtonTemplateSelector.vue.js +105 -0
  49. package/dist/components/2_chatinput_elements/ButtonTemplateSelector/icons/ChatTemplatesIcon.vue.js +25 -0
  50. package/dist/components/2_chatinput_elements/ButtonWabaTemplateSelector/ButtonWabaTemplateSelector.vue.js +98 -0
  51. package/dist/components/2_chatinput_elements/FilePreview/FilePreview.vue.js +7 -0
  52. package/dist/components/2_chatinput_elements/FilePreview/FilePreview.vue2.js +157 -0
  53. package/dist/components/2_chatinput_elements/FileUploader/FileUploader.vue.js +7 -0
  54. package/dist/components/2_chatinput_elements/FileUploader/FileUploader.vue2.js +105 -0
  55. package/dist/components/2_chatinput_elements/FileUploader/icons/FileUploaderIcon.vue.js +21 -0
  56. package/dist/components/2_chatinput_elements/PlaceholderComponent/PlaceholderComponent.vue.js +66 -0
  57. package/dist/components/2_chatinput_elements/TemplateSelector/TemplateSelector.vue.js +206 -0
  58. package/dist/components/2_chatinput_elements/TextFormatToolbar/TextFormatToolbar.vue.js +7 -0
  59. package/dist/components/2_chatinput_elements/TextFormatToolbar/TextFormatToolbar.vue2.js +210 -0
  60. package/dist/components/2_chatinput_elements/WABAAttachmentSection/WABAAttachmentSection.vue.js +7 -0
  61. package/dist/components/2_chatinput_elements/WABAAttachmentSection/WABAAttachmentSection.vue2.js +126 -0
  62. package/dist/components/2_chatinput_elements/WABAQuickReplyButtons/WABAQuickReplyButtons.vue.js +7 -0
  63. package/dist/components/2_chatinput_elements/WABAQuickReplyButtons/WABAQuickReplyButtons.vue2.js +38 -0
  64. package/dist/components/2_chatinput_elements/WABASeparatedQuickButtons/WABASeparatedQuickButtons.vue.js +7 -0
  65. package/dist/components/2_chatinput_elements/WABASeparatedQuickButtons/WABASeparatedQuickButtons.vue2.js +41 -0
  66. package/dist/components/2_chatinput_elements/WABATemplateSelector/WABATemplateSelector.vue.js +281 -0
  67. package/dist/components/2_chatlist_elements/ChatFilter/ChatFilter.vue.js +49 -0
  68. package/dist/components/2_chatlist_elements/ChatItem/ChatItem.vue.js +7 -0
  69. package/dist/components/2_chatlist_elements/ChatItem/ChatItem.vue2.js +193 -0
  70. package/dist/components/2_chatlist_elements/ChatTabs/ChatTabs.vue.js +37 -0
  71. package/dist/components/2_elements/AudioRecorder/AudioRecorder.vue.js +7 -0
  72. package/dist/components/2_elements/AudioRecorder/AudioRecorder.vue2.js +116 -0
  73. package/dist/components/2_elements/ChannelSelector/ChannelSelector.vue.js +73 -0
  74. package/dist/components/2_elements/ChatInfo/ChatInfo.vue.js +93 -0
  75. package/dist/components/2_elements/ChatPanel/ChatPanel.vue.js +47 -0
  76. package/dist/components/2_elements/ContactInfo/ContactInfo.vue.js +158 -0
  77. package/dist/components/2_elements/ThemeMode/ThemeMode.vue.js +49 -0
  78. package/dist/components/2_elements/UserProfile/UserProfile.vue.js +39 -0
  79. package/dist/components/2_elements/VideoRecorder/VideoRecorder.vue.js +7 -0
  80. package/dist/components/2_elements/VideoRecorder/VideoRecorder.vue2.js +94 -0
  81. package/dist/components/2_feed_elements/AudioMessage/AudioMessage.vue.js +7 -0
  82. package/dist/components/2_feed_elements/AudioMessage/AudioMessage.vue2.js +380 -0
  83. package/dist/components/2_feed_elements/BaseReplyMessage/BaseReplyMessage.vue.js +7 -0
  84. package/dist/components/2_feed_elements/BaseReplyMessage/BaseReplyMessage.vue2.js +57 -0
  85. package/dist/components/2_feed_elements/CallMessage/CallMessage.vue.js +7 -0
  86. package/dist/components/2_feed_elements/CallMessage/CallMessage.vue2.js +476 -0
  87. package/dist/components/2_feed_elements/CallMessage/icons/IncomingCallIcon.vue.js +26 -0
  88. package/dist/components/2_feed_elements/CallMessage/icons/IncomingCallIcon.vue2.js +4 -0
  89. package/dist/components/2_feed_elements/CallMessage/icons/OutgoingCallIcon.vue.js +26 -0
  90. package/dist/components/2_feed_elements/CallMessage/icons/OutgoingCallIcon.vue2.js +4 -0
  91. package/dist/components/2_feed_elements/DateMessage/DateMessage.vue.js +7 -0
  92. package/dist/components/2_feed_elements/DateMessage/DateMessage.vue2.js +20 -0
  93. package/dist/components/2_feed_elements/DateMessageSticky/DateMessageSticky.vue.js +7 -0
  94. package/dist/components/2_feed_elements/DateMessageSticky/DateMessageSticky.vue2.js +18 -0
  95. package/dist/components/2_feed_elements/FeedKeyboard/FeedKeyboard.vue.js +7 -0
  96. package/dist/components/2_feed_elements/FeedKeyboard/FeedKeyboard.vue2.js +42 -0
  97. package/dist/components/2_feed_elements/FileMessage/FileMessage.vue.js +7 -0
  98. package/dist/components/2_feed_elements/FileMessage/FileMessage.vue2.js +204 -0
  99. package/dist/components/2_feed_elements/ImageMessage/ImageMessage.vue.js +7 -0
  100. package/dist/components/2_feed_elements/ImageMessage/ImageMessage.vue2.js +266 -0
  101. package/dist/components/2_feed_elements/MessageKeyboard/MessageKeyboard.vue.js +7 -0
  102. package/dist/components/2_feed_elements/MessageKeyboard/MessageKeyboard.vue2.js +46 -0
  103. package/dist/components/2_feed_elements/MessageReactions/MessageReactions.vue.js +7 -0
  104. package/dist/components/2_feed_elements/MessageReactions/MessageReactions.vue2.js +161 -0
  105. package/dist/components/2_feed_elements/MessageReactions/composables/usePositioning.js +104 -0
  106. package/dist/components/2_feed_elements/MessageReactions/composables/useReactions.js +30 -0
  107. package/dist/components/2_feed_elements/MessageReactions/composables/useReactionsPanel.js +90 -0
  108. package/dist/components/2_feed_elements/MessageReactions/composables/useReactionsState.js +32 -0
  109. package/dist/components/2_feed_elements/MessageReactions/utils/quickReactions.js +17 -0
  110. package/dist/components/2_feed_elements/MessageStatusIndicator/MessageStatusIndicator.vue.js +73 -0
  111. package/dist/components/2_feed_elements/MessageStatusIndicator/MessageStatusIndicator.vue2.js +4 -0
  112. package/dist/components/2_feed_elements/ReplyAudioMessage/ReplyAudioMessage.vue.js +7 -0
  113. package/dist/components/2_feed_elements/ReplyAudioMessage/ReplyAudioMessage.vue2.js +39 -0
  114. package/dist/components/2_feed_elements/ReplyCallMessage/ReplyCallMessage.vue.js +7 -0
  115. package/dist/components/2_feed_elements/ReplyCallMessage/ReplyCallMessage.vue2.js +35 -0
  116. package/dist/components/2_feed_elements/ReplyFileMessage/ReplyFileMessage.vue.js +7 -0
  117. package/dist/components/2_feed_elements/ReplyFileMessage/ReplyFileMessage.vue2.js +46 -0
  118. package/dist/components/2_feed_elements/ReplyImageMessage/ReplyImageMessage.vue.js +7 -0
  119. package/dist/components/2_feed_elements/ReplyImageMessage/ReplyImageMessage.vue2.js +71 -0
  120. package/dist/components/2_feed_elements/ReplyStickerMessage/ReplyStickerMessage.vue.js +7 -0
  121. package/dist/components/2_feed_elements/ReplyStickerMessage/ReplyStickerMessage.vue2.js +119 -0
  122. package/dist/components/2_feed_elements/ReplyTextMessage/ReplyTextMessage.vue.js +7 -0
  123. package/dist/components/2_feed_elements/ReplyTextMessage/ReplyTextMessage.vue2.js +27 -0
  124. package/dist/components/2_feed_elements/ReplyVideoMessage/ReplyVideoMessage.vue.js +7 -0
  125. package/dist/components/2_feed_elements/ReplyVideoMessage/ReplyVideoMessage.vue2.js +75 -0
  126. package/dist/components/2_feed_elements/SplashScreen/SplashScreen.vue.js +7 -0
  127. package/dist/components/2_feed_elements/SplashScreen/SplashScreen.vue2.js +23 -0
  128. package/dist/components/2_feed_elements/StickerMessage/StickerMessage.vue.js +7 -0
  129. package/dist/components/2_feed_elements/StickerMessage/StickerMessage.vue2.js +258 -0
  130. package/dist/components/2_feed_elements/StickerMessage/libs/tgs-player/lottie-player.esm.js +6469 -0
  131. package/dist/components/2_feed_elements/StickerMessage/libs/tgs-player/tgs-player.esm.js +7216 -0
  132. package/dist/components/2_feed_elements/StickerMessage/utils/stickerUtils.js +10 -0
  133. package/dist/components/2_feed_elements/StickerMessage/utils/suppress-lit-warning.js +21 -0
  134. package/dist/components/2_feed_elements/SystemMessage/SystemMessage.vue.js +7 -0
  135. package/dist/components/2_feed_elements/SystemMessage/SystemMessage.vue2.js +18 -0
  136. package/dist/components/2_feed_elements/TextMessage/TextMessage.vue.js +7 -0
  137. package/dist/components/2_feed_elements/TextMessage/TextMessage.vue2.js +174 -0
  138. package/dist/components/2_feed_elements/TypingMessage/TypingMessage.vue.js +7 -0
  139. package/dist/components/2_feed_elements/TypingMessage/TypingMessage.vue2.js +32 -0
  140. package/dist/components/2_feed_elements/VideoMessage/VideoMessage.vue.js +7 -0
  141. package/dist/components/2_feed_elements/VideoMessage/VideoMessage.vue2.js +286 -0
  142. package/dist/{CreateChat-C4y1ddK_.js → components/2_modals/CreateChat/CreateChat.vue.js} +8 -7
  143. package/dist/components/2_modals/CreateChat/CreateChat.vue2.js +1 -0
  144. package/dist/{CreateChat2-Oy9JaaRC.js → components/2_modals/CreateChat2/CreateChat2.vue.js} +4 -3
  145. package/dist/{CreateDialog-DacwclUe.js → components/2_modals/CreateDialog/CreateDialog.vue.js} +12 -11
  146. package/dist/components/2_modals/Modal/Modal.vue.js +69 -0
  147. package/dist/components/2_modals/ModalFullscreen/ModalFullscreen.vue.js +46 -0
  148. package/dist/components/2_modals/ModalNoFooter/ModalNoFooter.vue.js +43 -0
  149. package/dist/components/2_modals/ModalVideoRecorder/ModalVideoRecorder.vue.js +7 -0
  150. package/dist/{ModalVideoRecorder-BkPr4JP7.js → components/2_modals/ModalVideoRecorder/ModalVideoRecorder.vue2.js} +48 -49
  151. package/dist/components/2_modals/SelectUser/SelectUser.vue.js +63 -0
  152. package/dist/{SelectUser2-kaPAmxhi.js → components/2_modals/SelectUser2/SelectUser2.vue.js} +4 -3
  153. package/dist/components/3_compounds/ChatInput/ChatInput.vue.js +7 -0
  154. package/dist/components/3_compounds/ChatInput/ChatInput.vue2.js +192 -0
  155. package/dist/components/3_compounds/ChatInput/icons/SendIcon.vue.js +35 -0
  156. package/dist/components/3_compounds/ChatInput/icons/SendIcon.vue2.js +4 -0
  157. package/dist/components/3_compounds/ChatList/ChatList.vue.js +186 -0
  158. package/dist/components/3_compounds/ChatList/ChatListHeader.vue.js +27 -0
  159. package/dist/components/3_compounds/ChatList/composables/useChatListActions.js +16 -0
  160. package/dist/components/3_compounds/ChatList/composables/useChatListFilter.js +27 -0
  161. package/dist/components/3_compounds/ChatList/composables/useChatListScroll.js +47 -0
  162. package/dist/components/3_compounds/ChatList/composables/useChatListSelection.js +28 -0
  163. package/dist/components/3_compounds/Feed/Feed.vue.js +7 -0
  164. package/dist/components/3_compounds/Feed/Feed.vue2.js +295 -0
  165. package/dist/components/3_compounds/Feed/assets/chat-background.svg.js +7 -0
  166. package/dist/components/3_compounds/Feed/composables/useFeedButton.js +17 -0
  167. package/dist/components/3_compounds/Feed/composables/useFeedComponents.js +29 -0
  168. package/dist/components/3_compounds/Feed/composables/useFeedGrouping.js +15 -0
  169. package/dist/components/3_compounds/Feed/composables/useFeedKeyboard.js +15 -0
  170. package/dist/components/3_compounds/Feed/composables/useFeedLoadMore.js +62 -0
  171. package/dist/components/3_compounds/Feed/composables/useFeedMessageVisibility.js +33 -0
  172. package/dist/components/3_compounds/Feed/composables/useFeedReply.js +42 -0
  173. package/dist/components/3_compounds/Feed/composables/useFeedScroll.js +63 -0
  174. package/dist/components/3_compounds/Feed/composables/useFeedScrollTo.js +18 -0
  175. package/dist/components/3_compounds/Feed/composables/useStickyDate.js +61 -0
  176. package/dist/components/3_compounds/Feed/functions/throttle.js +11 -0
  177. package/dist/components/3_compounds/SideBar/SideBar.vue.js +190 -0
  178. package/dist/components/4_layouts/AdaptiveExtendedLayout/AdaptiveExtendedLayout.vue.js +63 -0
  179. package/dist/components/4_layouts/BaseLayout/BaseLayout.vue.js +18 -0
  180. package/dist/components/4_layouts/ChatWrapper/ChatWrapper.vue.js +7 -0
  181. package/dist/components/4_layouts/ChatWrapper/ChatWrapper.vue2.js +53 -0
  182. package/dist/components/4_layouts/ExtendedLayout/ExtendedLayout.vue.js +21 -0
  183. package/dist/components/4_layouts/FeedLayout/FeedLayout.vue.js +15 -0
  184. package/dist/components/5_containers/BaseContainer/BaseContainer.vue.js +33 -0
  185. package/dist/components/5_containers/FloatContainer/FloatContainer.vue.js +104 -0
  186. package/dist/functions/createReactionHandlers.js +19 -0
  187. package/dist/functions/formatTimestamp.js +8 -0
  188. package/dist/functions/getChannelAccentColor.js +30 -0
  189. package/dist/functions/getMessageClass.js +6 -0
  190. package/dist/functions/getStatusMessage.js +42 -0
  191. package/dist/functions/insertDaySeparators.js +24 -0
  192. package/dist/functions/parseMarkdown.js +18 -0
  193. package/dist/functions/playNotificationAudio.js +13 -0
  194. package/dist/functions/sortByTimestamp.js +4 -0
  195. package/dist/hooks/messages/useChannelAccentColor.js +29 -0
  196. package/dist/hooks/messages/useMessageActions.js +28 -0
  197. package/dist/hooks/messages/useMessageLinks.js +48 -0
  198. package/dist/hooks/messages/useSubtextTooltip.js +12 -0
  199. package/dist/hooks/modals/useCreateChat.js +19 -0
  200. package/dist/hooks/modals/useCreateChat2.js +16 -0
  201. package/dist/hooks/modals/useCreateDialog.js +20 -0
  202. package/dist/hooks/modals/useModal.js +41 -0
  203. package/dist/hooks/modals/useModalSelectUser2.js +20 -0
  204. package/dist/hooks/modals/useVideoRecorder.js +14 -0
  205. package/dist/hooks/uploadFile/generatePreview.js +20 -0
  206. package/dist/hooks/uploadFile/getTypeFileByMime.js +7 -0
  207. package/dist/hooks/uploadFile/uploadFile.js +28 -0
  208. package/dist/hooks/useDelayDebouncedRef.js +18 -0
  209. package/dist/hooks/useImmediateDebouncedRef.js +18 -0
  210. package/dist/hooks/useMessageDraft.js +87 -0
  211. package/dist/hooks/useSearchModel.js +11 -0
  212. package/dist/hooks/useTheme.js +11 -0
  213. package/dist/hooks/validators/chats/chatValidator.js +79 -0
  214. package/dist/hooks/validators/chats/useChatValidator.js +82 -0
  215. package/dist/hooks/validators/messages/messageValidator.js +84 -0
  216. package/dist/hooks/validators/messages/useMessageValidator.js +82 -0
  217. package/dist/hooks/validators/sidebar/sidebarValidator.js +47 -0
  218. package/dist/hooks/validators/sidebar/useSidebarValidator.js +82 -0
  219. package/dist/hooks/validators/useValidation.js +94 -0
  220. package/dist/index.js +239 -0
  221. package/dist/locale/en.js +22 -0
  222. package/dist/locale/ru.js +22 -0
  223. package/dist/locale/useLocale.js +34 -0
  224. package/dist/node_modules/entities/lib/esm/decode.js +278 -0
  225. package/dist/node_modules/entities/lib/esm/decode_codepoint.js +46 -0
  226. package/dist/node_modules/entities/lib/esm/generated/decode-data-html.js +7 -0
  227. package/dist/node_modules/entities/lib/esm/generated/decode-data-xml.js +7 -0
  228. package/dist/node_modules/linkify-it/index.js +187 -0
  229. package/dist/node_modules/linkify-it/lib/re.js +19 -0
  230. package/dist/node_modules/linkify-string/dist/linkify-string.js +41 -0
  231. package/dist/node_modules/linkifyjs/dist/linkify.js +679 -0
  232. package/dist/node_modules/markdown-it/lib/common/html_blocks.js +67 -0
  233. package/dist/node_modules/markdown-it/lib/common/html_re.js +5 -0
  234. package/dist/node_modules/markdown-it/lib/common/utils.js +169 -0
  235. package/dist/node_modules/markdown-it/lib/helpers/index.js +8 -0
  236. package/dist/node_modules/markdown-it/lib/helpers/parse_link_destination.js +44 -0
  237. package/dist/node_modules/markdown-it/lib/helpers/parse_link_label.js +21 -0
  238. package/dist/node_modules/markdown-it/lib/helpers/parse_link_title.js +37 -0
  239. package/dist/node_modules/markdown-it/lib/index.js +112 -0
  240. package/dist/node_modules/markdown-it/lib/parser_block.js +63 -0
  241. package/dist/node_modules/markdown-it/lib/parser_core.js +34 -0
  242. package/dist/node_modules/markdown-it/lib/parser_inline.js +96 -0
  243. package/dist/node_modules/markdown-it/lib/presets/commonmark.js +78 -0
  244. package/dist/node_modules/markdown-it/lib/presets/default.js +40 -0
  245. package/dist/node_modules/markdown-it/lib/presets/zero.js +59 -0
  246. package/dist/node_modules/markdown-it/lib/renderer.js +127 -0
  247. package/dist/node_modules/markdown-it/lib/ruler.js +95 -0
  248. package/dist/node_modules/markdown-it/lib/rules_block/blockquote.js +59 -0
  249. package/dist/node_modules/markdown-it/lib/rules_block/code.js +23 -0
  250. package/dist/node_modules/markdown-it/lib/rules_block/fence.js +30 -0
  251. package/dist/node_modules/markdown-it/lib/rules_block/heading.js +28 -0
  252. package/dist/node_modules/markdown-it/lib/rules_block/hr.js +27 -0
  253. package/dist/node_modules/markdown-it/lib/rules_block/html_block.js +37 -0
  254. package/dist/node_modules/markdown-it/lib/rules_block/lheading.js +43 -0
  255. package/dist/node_modules/markdown-it/lib/rules_block/list.js +110 -0
  256. package/dist/node_modules/markdown-it/lib/rules_block/paragraph.js +25 -0
  257. package/dist/node_modules/markdown-it/lib/rules_block/reference.js +95 -0
  258. package/dist/node_modules/markdown-it/lib/rules_block/state_block.js +84 -0
  259. package/dist/node_modules/markdown-it/lib/rules_block/table.js +99 -0
  260. package/dist/node_modules/markdown-it/lib/rules_core/block.js +7 -0
  261. package/dist/node_modules/markdown-it/lib/rules_core/inline.js +10 -0
  262. package/dist/node_modules/markdown-it/lib/rules_core/linkify.js +57 -0
  263. package/dist/node_modules/markdown-it/lib/rules_core/normalize.js +9 -0
  264. package/dist/node_modules/markdown-it/lib/rules_core/replacements.js +31 -0
  265. package/dist/node_modules/markdown-it/lib/rules_core/smartquotes.js +80 -0
  266. package/dist/node_modules/markdown-it/lib/rules_core/state_core.js +8 -0
  267. package/dist/node_modules/markdown-it/lib/rules_core/text_join.js +16 -0
  268. package/dist/node_modules/markdown-it/lib/rules_inline/autolink.js +46 -0
  269. package/dist/node_modules/markdown-it/lib/rules_inline/backticks.js +31 -0
  270. package/dist/node_modules/markdown-it/lib/rules_inline/balance_pairs.js +34 -0
  271. package/dist/node_modules/markdown-it/lib/rules_inline/emphasis.js +57 -0
  272. package/dist/node_modules/markdown-it/lib/rules_inline/entity.js +33 -0
  273. package/dist/node_modules/markdown-it/lib/rules_inline/escape.js +32 -0
  274. package/dist/node_modules/markdown-it/lib/rules_inline/fragments_join.js +10 -0
  275. package/dist/node_modules/markdown-it/lib/rules_inline/html_inline.js +32 -0
  276. package/dist/node_modules/markdown-it/lib/rules_inline/image.js +48 -0
  277. package/dist/node_modules/markdown-it/lib/rules_inline/link.js +40 -0
  278. package/dist/node_modules/markdown-it/lib/rules_inline/linkify.js +28 -0
  279. package/dist/node_modules/markdown-it/lib/rules_inline/newline.js +23 -0
  280. package/dist/node_modules/markdown-it/lib/rules_inline/state_inline.js +27 -0
  281. package/dist/node_modules/markdown-it/lib/rules_inline/strikethrough.js +54 -0
  282. package/dist/node_modules/markdown-it/lib/rules_inline/text.js +39 -0
  283. package/dist/node_modules/markdown-it/lib/token.js +31 -0
  284. package/dist/node_modules/mdurl/index.js +10 -0
  285. package/dist/node_modules/mdurl/lib/decode.js +61 -0
  286. package/dist/node_modules/mdurl/lib/encode.js +48 -0
  287. package/dist/node_modules/mdurl/lib/format.js +7 -0
  288. package/dist/node_modules/mdurl/lib/parse.js +74 -0
  289. package/dist/node_modules/punycode.js/punycode.es6.js +139 -0
  290. package/dist/node_modules/uc.micro/categories/Cc/regex.js +4 -0
  291. package/dist/node_modules/uc.micro/categories/Cf/regex.js +4 -0
  292. package/dist/node_modules/uc.micro/categories/P/regex.js +4 -0
  293. package/dist/node_modules/uc.micro/categories/S/regex.js +4 -0
  294. package/dist/node_modules/uc.micro/categories/Z/regex.js +4 -0
  295. package/dist/node_modules/uc.micro/index.js +14 -0
  296. package/dist/node_modules/uc.micro/properties/Any/regex.js +4 -0
  297. package/dist/node_modules/vue3-emoji-picker-ru/dist/emoji-picker.es.js +16471 -0
  298. package/dist/types/components/1_icons/AvatarIcon.vue.d.ts +1 -1
  299. package/dist/types/components/2_blocks/FeedSearch/FeedSearch.vue.d.ts +2 -2
  300. package/dist/types/components/2_chatinput_elements/ButtonWabaTemplateSelector/ButtonWabaTemplateSelector.vue.d.ts +2 -2
  301. package/dist/types/components/2_chatinput_elements/PlaceholderComponent/PlaceholderComponent.vue.d.ts +2 -2
  302. package/dist/types/components/2_feed_elements/AudioMessage/AudioMessage.vue.d.ts +2 -2
  303. package/dist/types/components/2_feed_elements/BaseReplyMessage/BaseReplyMessage.vue.d.ts +2 -2
  304. package/dist/types/components/2_feed_elements/CallMessage/CallMessage.vue.d.ts +2 -2
  305. package/dist/types/components/2_feed_elements/FileMessage/FileMessage.vue.d.ts +2 -2
  306. package/dist/types/components/2_feed_elements/ImageMessage/ImageMessage.vue.d.ts +2 -2
  307. package/dist/types/components/2_feed_elements/ReplyStickerMessage/ReplyStickerMessage.vue.d.ts +1 -3
  308. package/dist/types/components/2_feed_elements/StickerMessage/StickerMessage.vue.d.ts +3 -5
  309. package/dist/types/components/2_feed_elements/StickerMessage/utils/stickerUtils.d.ts +19 -0
  310. package/dist/types/components/2_feed_elements/TextMessage/TextMessage.vue.d.ts +2 -2
  311. package/dist/types/components/2_feed_elements/VideoMessage/VideoMessage.vue.d.ts +2 -2
  312. package/dist/types/components/2_modals/CreateDialog/CreateDialog.vue.d.ts +2 -2
  313. package/dist/types/components/2_modals/CreateDialog/stories/CreateDialog.stories.d.ts +2 -2
  314. package/dist/types/components/3_compounds/ChatList/ChatList.vue.d.ts +1 -1
  315. package/dist/types/components/3_compounds/Feed/Feed.vue.d.ts +2 -2
  316. package/dist/types/main.d.ts +1 -1
  317. package/package.json +5 -5
  318. package/dist/index-BzAEsq7j.js +0 -43508
  319. package/dist/vuessages.es.js +0 -123
  320. package/dist/vuessages.umd.js +0 -624
  321. /package/dist/types/{utils → components/2_feed_elements/StickerMessage/utils}/suppress-lit-warning.d.ts +0 -0
@@ -0,0 +1,33 @@
1
+ import { useId as n, provide as o, createElementBlock as r, openBlock as d, unref as i, createElementVNode as s, normalizeStyle as c, renderSlot as l } from "vue";
2
+ /* empty css */
3
+ import p from "../../../_virtual/_plugin-vue_export-helper.js";
4
+ const h = ["id"], u = {
5
+ __name: "BaseContainer",
6
+ props: {
7
+ height: {
8
+ type: String,
9
+ default: "100%"
10
+ },
11
+ width: {
12
+ type: String,
13
+ default: "100%"
14
+ }
15
+ },
16
+ setup(e) {
17
+ const t = n();
18
+ return o("chatAppId", t), (a, _) => (d(), r("div", {
19
+ id: i(t),
20
+ class: "base"
21
+ }, [
22
+ s("div", {
23
+ class: "base__container",
24
+ style: c({ height: e.height, width: e.width })
25
+ }, [
26
+ l(a.$slots, "default", {}, void 0, !0)
27
+ ], 4)
28
+ ], 8, h));
29
+ }
30
+ }, v = /* @__PURE__ */ p(u, [["__scopeId", "data-v-e4a3da14"]]);
31
+ export {
32
+ v as default
33
+ };
@@ -0,0 +1,104 @@
1
+ import { ref as n, useId as M, provide as S, onMounted as k, createElementBlock as w, openBlock as h, normalizeStyle as _, unref as H, createElementVNode as i, createCommentVNode as C, toDisplayString as E, renderSlot as g } from "vue";
2
+ /* empty css */
3
+ import I from "../../../_virtual/_plugin-vue_export-helper.js";
4
+ const X = ["id"], Y = { class: "float-window__container" }, $ = ["src", "alt"], z = { class: "float-window__title" }, D = { style: { "margin-left": "auto", display: "flex" } }, L = {
5
+ __name: "FloatContainer",
6
+ props: {
7
+ title: {
8
+ type: String,
9
+ required: !0
10
+ },
11
+ avatar: {
12
+ type: String,
13
+ required: !0
14
+ },
15
+ height: {
16
+ type: String,
17
+ default: "100%"
18
+ },
19
+ width: {
20
+ type: String,
21
+ default: "100%"
22
+ }
23
+ },
24
+ emits: ["close-window", "get-size"],
25
+ setup(u, { emit: W }) {
26
+ const l = u, t = n({ x: 0, y: 0 }), o = n(null), r = n(null), s = n(!1), d = n(0), c = n(0), f = n(0), v = M();
27
+ S("chatAppId", v);
28
+ const y = (e) => {
29
+ s.value = !0, d.value = e.clientX - o.value.offsetLeft, c.value = e.clientY - o.value.offsetTop;
30
+ }, p = () => s.value = !1, x = (e) => {
31
+ if (s.value) {
32
+ const a = e.clientX - d.value, m = e.clientY - c.value;
33
+ t.value.x = a, t.value.y = m;
34
+ }
35
+ };
36
+ return k(() => {
37
+ document.addEventListener("mousemove", x), window.addEventListener("resize", () => {
38
+ o.value && (t.value.x = Math.max(
39
+ 0,
40
+ Math.min(
41
+ t.value.x,
42
+ window.innerWidth - o.value.offsetWidth
43
+ )
44
+ ), t.value.y = Math.max(
45
+ 0,
46
+ Math.min(
47
+ t.value.y,
48
+ window.innerHeight - o.value.offsetHeight
49
+ )
50
+ ));
51
+ }), f.value = o.value.offsetHeight - r.value.offsetHeight;
52
+ }), (e, a) => (h(), w("div", {
53
+ id: H(v),
54
+ ref_key: "element",
55
+ ref: o,
56
+ class: "float-window",
57
+ style: _({
58
+ left: t.value.x + "px",
59
+ top: t.value.y + "px",
60
+ userSelect: s.value ? "none" : "auto",
61
+ height: u.height,
62
+ width: u.width,
63
+ display: "flex"
64
+ })
65
+ }, [
66
+ i("div", Y, [
67
+ i("div", {
68
+ ref_key: "container",
69
+ ref: r,
70
+ class: "float-window__controls",
71
+ onMousedown: y,
72
+ onMouseup: p,
73
+ onMouseleave: p
74
+ }, [
75
+ l.avatar ? (h(), w("img", {
76
+ key: 0,
77
+ class: "float-window__avatar",
78
+ src: l.avatar,
79
+ alt: l.title
80
+ }, null, 8, $)) : C("", !0),
81
+ i("p", z, E(l.title), 1),
82
+ i("div", D, [
83
+ g(e.$slots, "controls", {}, void 0, !0),
84
+ i("button", {
85
+ class: "float-window__close-button",
86
+ onClick: a[0] || (a[0] = (m) => e.$emit("close-window"))
87
+ }, [...a[1] || (a[1] = [
88
+ i("span", { class: "pi pi-times" }, null, -1)
89
+ ])])
90
+ ])
91
+ ], 544),
92
+ i("div", {
93
+ class: "float-window__content",
94
+ style: _({ height: f.value + "px" })
95
+ }, [
96
+ g(e.$slots, "default", {}, void 0, !0)
97
+ ], 4)
98
+ ])
99
+ ], 12, X));
100
+ }
101
+ }, B = /* @__PURE__ */ I(L, [["__scopeId", "data-v-a219697a"]]);
102
+ export {
103
+ B as default
104
+ };
@@ -0,0 +1,19 @@
1
+ function i(n) {
2
+ function t(e) {
3
+ n("action", { messageId: String(e.messageId), type: "reaction.toggle", key: e.key });
4
+ }
5
+ function o(e) {
6
+ n("action", { messageId: String(e.messageId), type: "reaction.add", key: e.key });
7
+ }
8
+ function c(e) {
9
+ n("action", { messageId: String(e.messageId), type: "reaction.remove", key: e.key });
10
+ }
11
+ return {
12
+ onToggleReaction: t,
13
+ onAddReaction: o,
14
+ onRemoveReaction: c
15
+ };
16
+ }
17
+ export {
18
+ i as createReactionHandlers
19
+ };
@@ -0,0 +1,8 @@
1
+ function u(o) {
2
+ if (!o || o === "") return;
3
+ const s = +new Date(Number(o) * 1e3), f = +/* @__PURE__ */ new Date(), e = Math.floor((f - s) / 1e3), t = Math.floor(e / 60), r = Math.floor(t / 60), n = Math.floor(r / 24);
4
+ return n > 30 ? new Date(s).toLocaleDateString("ru-RU") : n > 0 ? `${n} ${n === 1 ? "день" : "дня"} назад` : r > 0 ? `${r} ${r === 1 ? "час" : "часа"} назад` : t > 0 ? `${t} ${t === 1 ? "минута" : "минуты"} назад` : e > 0 ? `${e} ${e === 1 ? "секунда" : "секунды"} назад` : "Только что";
5
+ }
6
+ export {
7
+ u as formatTimestamp
8
+ };
@@ -0,0 +1,30 @@
1
+ const c = "#25D366", l = [
2
+ {
3
+ includes: ["whatsapp", "waba"],
4
+ color: "#D9FDD3"
5
+ },
6
+ {
7
+ includes: ["telegram"],
8
+ color: "#DAF0FF"
9
+ },
10
+ {
11
+ includes: ["sms"],
12
+ color: "#E6EBF0"
13
+ },
14
+ {
15
+ includes: ["max"],
16
+ color: "#E6D9F2"
17
+ }
18
+ ];
19
+ function n(o, s = null) {
20
+ const r = o == null ? void 0 : o.toLowerCase().trim();
21
+ if (!r)
22
+ return s;
23
+ for (const e of l)
24
+ if (e.includes.some((t) => r.includes(t)))
25
+ return e.color;
26
+ return c;
27
+ }
28
+ export {
29
+ n as getChannelAccentColor
30
+ };
@@ -0,0 +1,6 @@
1
+ function s(e, t) {
2
+ return e === "left" ? `${t}__left` : `${t}__right`;
3
+ }
4
+ export {
5
+ s as getMessageClass
6
+ };
@@ -0,0 +1,42 @@
1
+ const n = ["read", "received", "sent", "pending", "error"], s = (r) => {
2
+ switch (r) {
3
+ case "read":
4
+ return "status--read";
5
+ case "received":
6
+ return "status--received";
7
+ case "pending":
8
+ return "status--pending";
9
+ case "error":
10
+ return "status--error";
11
+ default:
12
+ return "";
13
+ }
14
+ }, c = (r, t) => {
15
+ let e = "";
16
+ switch (r) {
17
+ case "pending":
18
+ e = "Отправляется";
19
+ break;
20
+ case "sent":
21
+ e = "Отправлено";
22
+ break;
23
+ case "received":
24
+ e = "Доставлено";
25
+ break;
26
+ case "read":
27
+ e = "Прочитано";
28
+ break;
29
+ case "error":
30
+ e = "Ошибка";
31
+ break;
32
+ default:
33
+ return "";
34
+ }
35
+ const a = t == null ? void 0 : t.trim();
36
+ return a ? `${e}: ${a}` : e;
37
+ };
38
+ export {
39
+ s as getStatus,
40
+ c as getStatusTitle,
41
+ n as statuses
42
+ };
@@ -0,0 +1,24 @@
1
+ const i = (l, c = null) => {
2
+ const s = [];
3
+ let n = null;
4
+ const r = (t) => new Date(t.getFullYear(), t.getMonth(), t.getDate()).getTime(), D = /* @__PURE__ */ new Date(), y = r(D), o = new Date(D);
5
+ o.setDate(o.getDate() - 1);
6
+ const g = r(o), u = (t) => {
7
+ const a = new Date(t * 1e3), e = r(a);
8
+ return e === y ? "Сегодня" : e === g ? "Вчера" : a.toLocaleDateString();
9
+ };
10
+ c !== null && (n = u(c));
11
+ for (let t = 0; t < l.length; t++) {
12
+ const a = l[t], e = u(a.timestamp);
13
+ e !== n && (s.push({
14
+ isSeparator: !0,
15
+ day: e,
16
+ text: e,
17
+ type: "system.date"
18
+ }), n = e), s.push(a);
19
+ }
20
+ return s;
21
+ };
22
+ export {
23
+ i as insertDaySeparators
24
+ };
@@ -0,0 +1,18 @@
1
+ import i from "../node_modules/markdown-it/lib/index.js";
2
+ const e = new i("default", {
3
+ html: !0,
4
+ // Разрешаем HTML-теги (для <u>)
5
+ breaks: !0,
6
+ // Преобразуем переносы строк в <br>
7
+ linkify: !1
8
+ // Отключаем авто-ссылки, так как их обрабатывает linkifyStr
9
+ });
10
+ function o(n) {
11
+ if (!n) return "";
12
+ const r = n.includes(`
13
+ `), s = n.includes("> ");
14
+ return r || s ? e.render(n) : e.renderInline(n);
15
+ }
16
+ export {
17
+ o as parseMarkdown
18
+ };
@@ -0,0 +1,13 @@
1
+ const E = async () => {
2
+ try {
3
+ if (await navigator.mediaDevices.getUserMedia({ audio: !0 })) {
4
+ const A = new Audio();
5
+ A.src = "data:audio/mpeg;base64,SUQzAwAAAAAfdlRZRVIAAAAFAAAAMjAyMlRJVDIAAAA7AAAB//4XBDIEQwQ6BCAAPQQwBD8EPgQ8BDgEPQQwBD0EOARPBCAAPARDBDcESwQ6BDAEOwRMBD0ESwQ5BFRQRTEAAAABAAAAVEFMQgAAAAEAAABUQ09OAAAAAQAAAENPTU0AAAAFAAAAZW5nAFRSQ0sAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+5Jk+ITj8WJAMfo0EHgLB8AbZkoMVWDwBOBwQWsp3kQ3jSpVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQABo4uLzcp3zUUiIoSBCgMw+HKPMh2eNmndrzZqWIyHkf//5fmRmR8yP8jIjLkZF/+TKwMECsdD//JlYGCBB0cmVgoUFUsoIHZWWAwQMKCBpYDBAwciLBNFSy1NQMBkE1JERQkSIJoLRJGiij0FqqTjQUCPQWNEdTf14qKC38XZ///i2sVFG//8WFxVTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//uSZIaP8uNbJpDBHkIvYgTgGMY4AAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRBRz8/Pz8gPz8/Pz8/Pz8/Pz8gPz8/Pz8/Pz8/Pz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIwMjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/", A.play();
6
+ }
7
+ } catch (V) {
8
+ console.log("no audio permissions", V);
9
+ }
10
+ };
11
+ export {
12
+ E as playNotificationAudio
13
+ };
@@ -0,0 +1,4 @@
1
+ const m = (e) => e.sort((t, r) => Number(t.timestamp) < Number(r.timestamp) ? -1 : Number(t.timestamp) > Number(r.timestamp) ? 1 : 0);
2
+ export {
3
+ m as sortByTimestamp
4
+ };
@@ -0,0 +1,29 @@
1
+ import { computed as n, unref as a, inject as p } from "vue";
2
+ import { getChannelAccentColor as h } from "../../functions/getChannelAccentColor.js";
3
+ import "../../functions/parseMarkdown.js";
4
+ function j(d, f = {}) {
5
+ const { cssVariable: u, position: i = "right" } = f, o = n(() => a(d)), s = p("selectedChat", void 0), v = n(() => {
6
+ if (s)
7
+ return a(s);
8
+ }), c = n(() => {
9
+ const e = v.value, t = o.value;
10
+ if (!(t != null && t.dialogId) || !(e != null && e.dialogs))
11
+ return;
12
+ const l = e.dialogs.find((g) => g.dialogId === t.dialogId);
13
+ return l == null ? void 0 : l.channelId;
14
+ }), C = n(() => {
15
+ var e;
16
+ return i === "both" ? !0 : (e = o.value) != null && e.position ? o.value.position === i : !1;
17
+ }), r = n(() => {
18
+ const e = o.value;
19
+ return !e || !C.value ? null : e.backgroundColor ? e.backgroundColor : h(c.value, null);
20
+ }), b = n(() => !u || !r.value ? null : { [u]: r.value });
21
+ return {
22
+ bubbleColor: r,
23
+ bubbleStyle: b,
24
+ messageChannelId: c
25
+ };
26
+ }
27
+ export {
28
+ j as useChannelAccentColor
29
+ };
@@ -0,0 +1,28 @@
1
+ import { ref as i } from "vue";
2
+ const r = (t, e) => {
3
+ const o = i(!1), s = i(!1), l = () => {
4
+ s.value = !0;
5
+ }, n = () => {
6
+ s.value = !1, o.value = !1;
7
+ };
8
+ return {
9
+ // state
10
+ isOpenMenu: o,
11
+ buttonMenuVisible: s,
12
+ // actions
13
+ showMenu: l,
14
+ hideMenu: n,
15
+ clickAction: (c) => {
16
+ n(), e("action", { messageId: t.messageId, type: "menu", ...c });
17
+ },
18
+ viewsAction: () => {
19
+ n(), e("action", { messageId: t.messageId, type: "views" });
20
+ },
21
+ handleClickReplied: (c) => {
22
+ e("reply", c);
23
+ }
24
+ };
25
+ };
26
+ export {
27
+ r as useMessageActions
28
+ };
@@ -0,0 +1,48 @@
1
+ import { computed as h } from "vue";
2
+ import { tokenize as N } from "../../node_modules/linkifyjs/dist/linkify.js";
3
+ import { parseMarkdown as T } from "../../functions/parseMarkdown.js";
4
+ const x = (p) => ({ linkedHtml: h(() => {
5
+ const n = p();
6
+ if (!n) return "";
7
+ const t = T(n), o = document.createElement("div");
8
+ o.innerHTML = t;
9
+ const f = (r) => {
10
+ var m;
11
+ const e = r.textContent || "", d = N(e);
12
+ if (d.length === 1 && !d[0].isLink)
13
+ return;
14
+ const s = document.createDocumentFragment();
15
+ d.forEach((i) => {
16
+ if (i.isLink) {
17
+ const c = document.createElement("a");
18
+ c.href = i.toHref(), c.target = "_blank", c.textContent = i.toString(), s.appendChild(c);
19
+ } else
20
+ s.appendChild(document.createTextNode(i.toString()));
21
+ }), (m = r.parentNode) == null || m.replaceChild(s, r);
22
+ }, u = document.createTreeWalker(
23
+ o,
24
+ NodeFilter.SHOW_TEXT,
25
+ {
26
+ acceptNode: (r) => {
27
+ let e = r.parentNode;
28
+ for (; e && e !== o; ) {
29
+ if (e.nodeName === "A")
30
+ return NodeFilter.FILTER_REJECT;
31
+ e = e.parentNode;
32
+ }
33
+ return NodeFilter.FILTER_ACCEPT;
34
+ }
35
+ }
36
+ ), l = [];
37
+ let a;
38
+ for (; a = u.nextNode(); )
39
+ a.nodeType === Node.TEXT_NODE && l.push(a);
40
+ return l.reverse().forEach(f), o.innerHTML;
41
+ }), inNewWindow: (n) => {
42
+ n.preventDefault();
43
+ const t = n.target;
44
+ t && "href" in t && t.href && window.open(t.href, "_blank");
45
+ } });
46
+ export {
47
+ x as useMessageLinks
48
+ };
@@ -0,0 +1,12 @@
1
+ import { computed as i, toValue as r } from "vue";
2
+ function l(s, u) {
3
+ return i(() => {
4
+ const t = r(s);
5
+ if (!t) return "";
6
+ const o = r(u), e = t.messageId, n = typeof e == "number" ? e.toString() : e ?? "";
7
+ return (n ? o == null ? void 0 : o[n] : void 0) ?? t.subText ?? "";
8
+ });
9
+ }
10
+ export {
11
+ l as useSubtextTooltip
12
+ };
@@ -0,0 +1,19 @@
1
+ import { useModal as r } from "./useModal.js";
2
+ import e from "../../components/2_modals/Modal/Modal.vue.js";
3
+ const n = async (t, a) => {
4
+ const o = await r({
5
+ //в component должен быть встроен emit change(key: value)
6
+ component: import("../../components/2_modals/CreateChat/CreateChat.vue.js"),
7
+ attrs: {
8
+ title: t
9
+ },
10
+ Modal: e,
11
+ modalAttrs: {
12
+ theme: a
13
+ }
14
+ });
15
+ return console.log("data", o), o;
16
+ };
17
+ export {
18
+ n as useModalCreateChat
19
+ };
@@ -0,0 +1,16 @@
1
+ import { useModal as o } from "./useModal.js";
2
+ import r from "../../components/2_modals/Modal/Modal.vue.js";
3
+ const d = async (t, a) => await o({
4
+ //в component должен быть встроен emit change(key: value)
5
+ component: import("../../components/2_modals/CreateChat2/CreateChat2.vue.js"),
6
+ attrs: {
7
+ title: t
8
+ },
9
+ Modal: r,
10
+ modalAttrs: {
11
+ theme: a
12
+ }
13
+ });
14
+ export {
15
+ d as useModalCreateChat2
16
+ };
@@ -0,0 +1,20 @@
1
+ import { useModal as s } from "./useModal.js";
2
+ import d from "../../components/2_modals/ModalNoFooter/ModalNoFooter.vue.js";
3
+ const p = async (t, o, a, r, e, m) => await s({
4
+ //в component должен быть встроен emit change(key: value)
5
+ component: import("../../components/2_modals/CreateDialog/CreateDialog.vue.js"),
6
+ attrs: {
7
+ title: t,
8
+ name: o,
9
+ contacts: a,
10
+ channels: r,
11
+ filter: e
12
+ },
13
+ Modal: d,
14
+ modalAttrs: {
15
+ theme: m
16
+ }
17
+ });
18
+ export {
19
+ p as useModalCreateDialog
20
+ };
@@ -0,0 +1,41 @@
1
+ import { ref as f, defineAsyncComponent as v, defineComponent as h, h as d, createApp as y } from "vue";
2
+ function A({ component: l, attrs: s, Modal: u, modalAttrs: m }) {
3
+ return new Promise((i) => {
4
+ const n = document.createElement("div");
5
+ document.body.appendChild(n);
6
+ const e = f({}), o = () => {
7
+ a.unmount(), document.body.removeChild(n);
8
+ }, t = () => {
9
+ o(), i(e.value);
10
+ }, p = (r) => {
11
+ Object.keys(r).forEach((c) => {
12
+ e.value[c] = r[c];
13
+ });
14
+ }, C = v(() => l), b = h({
15
+ render() {
16
+ return d(
17
+ u,
18
+ {
19
+ ...m,
20
+ // Блокируем OK, пока форма невалидна (или валидность ещё не известна)
21
+ okDisabled: !(e.value && e.value.isValid === !0),
22
+ onClose: o,
23
+ onSubmit: t
24
+ },
25
+ {
26
+ default: () => d(C, {
27
+ ...s,
28
+ onChange: p,
29
+ onSubmit: t,
30
+ onClose: o
31
+ })
32
+ }
33
+ );
34
+ }
35
+ }), a = y(b);
36
+ a.mount(n);
37
+ });
38
+ }
39
+ export {
40
+ A as useModal
41
+ };
@@ -0,0 +1,20 @@
1
+ import { useModal as e } from "./useModal.js";
2
+ import s from "../../components/2_modals/Modal/Modal.vue.js";
3
+ const n = async (t, a, r) => {
4
+ const o = await e({
5
+ //в component должен быть встроен emit change(key: value)
6
+ component: import("../../components/2_modals/SelectUser2/SelectUser2.vue.js"),
7
+ attrs: {
8
+ title: t,
9
+ users: a
10
+ },
11
+ Modal: s,
12
+ modalAttrs: {
13
+ theme: r
14
+ }
15
+ });
16
+ return console.log("data", o), o;
17
+ };
18
+ export {
19
+ n as useModalSelectUser2
20
+ };
@@ -0,0 +1,14 @@
1
+ import { useModal as t } from "./useModal.js";
2
+ import a from "../../components/2_modals/ModalNoFooter/ModalNoFooter.vue.js";
3
+ const m = async (o) => await t({
4
+ //в component должен быть встроен emit change(key: value)
5
+ component: import("../../components/2_modals/ModalVideoRecorder/ModalVideoRecorder.vue.js"),
6
+ attrs: {},
7
+ Modal: a,
8
+ modalAttrs: {
9
+ theme: o
10
+ }
11
+ });
12
+ export {
13
+ m as useModalVideoRecorder
14
+ };
@@ -0,0 +1,20 @@
1
+ import { ref as i } from "vue";
2
+ import { getTypeFileByMime as n } from "./getTypeFileByMime.js";
3
+ const m = (l) => {
4
+ const s = n(l.type), t = i(!1), a = i(!1), u = i(!1), o = i("");
5
+ s === "image" ? t.value = !0 : s === "video" ? a.value = !0 : s === "audio" && (u.value = !0), t.value || a.value || u.value ? o.value = URL.createObjectURL(l) : o.value = "";
6
+ const v = ["б", "Кб", "Мб", "Гб"];
7
+ let e = l.size, r = 0;
8
+ for (; e > 1024; )
9
+ e = e / 1024, r++;
10
+ return {
11
+ isImage: t.value,
12
+ isVideo: a.value,
13
+ isAudio: u.value,
14
+ previewUrl: o.value,
15
+ fileSize: e.toFixed(2) + v[r]
16
+ };
17
+ };
18
+ export {
19
+ m as generatePreview
20
+ };