@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.
- package/dist/_virtual/_plugin-vue_export-helper.js +9 -0
- package/dist/chotto.css +1 -1
- package/dist/components/1_atoms/ButtonContextMenu/ButtonContextMenu.vue.js +7 -0
- package/dist/components/1_atoms/ButtonContextMenu/ButtonContextMenu.vue2.js +106 -0
- package/dist/components/1_atoms/ContextMenu/ContextMenu.vue.js +46 -0
- package/dist/components/1_atoms/EmbedPreview/EmbedPreview.vue.js +7 -0
- package/dist/components/1_atoms/EmbedPreview/EmbedPreview.vue2.js +39 -0
- package/dist/components/1_atoms/LinkPreview/LinkPreview.vue.js +7 -0
- package/dist/components/1_atoms/LinkPreview/LinkPreview.vue2.js +32 -0
- package/dist/components/1_atoms/Tooltip/Tooltip.vue.js +7 -0
- package/dist/components/1_atoms/Tooltip/Tooltip.vue2.js +77 -0
- package/dist/components/1_icons/AvatarIcon.vue.js +42 -0
- package/dist/components/1_icons/CheckIcon.vue.js +28 -0
- package/dist/components/1_icons/CloseButtonIcon.vue.js +21 -0
- package/dist/components/1_icons/ContactCRMIcon.vue.js +21 -0
- package/dist/components/1_icons/MenuIcon.vue.js +21 -0
- package/dist/components/1_icons/SearchIcon.vue.js +28 -0
- package/dist/components/1_icons/SettingsIcon.vue.js +18 -0
- package/dist/components/1_icons/TelegramIcon.vue.js +32 -0
- package/dist/components/1_icons/WhatsAppIcon.vue.js +32 -0
- package/dist/components/2_blocks/CommunicationPanel/CommunicationPanel.vue.js +307 -0
- package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationActions.js +83 -0
- package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationAttributes.js +60 -0
- package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationChannels.js +70 -0
- package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationDialogSync.js +36 -0
- package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationMenu.js +37 -0
- package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationSubMenu.js +69 -0
- package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelMaxIcon.vue.js +18 -0
- package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelPhoneIcon.vue.js +23 -0
- package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelSMSIcon.vue.js +21 -0
- package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelSubmenuMaxIcon.vue.js +34 -0
- package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelSubmenuPhoneIcon.vue.js +32 -0
- package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelSubmenuSMSIcon.vue.js +21 -0
- package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelSubmenuTelegramIcon.vue.js +18 -0
- package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelSubmenuWhatsAppIcon.vue.js +32 -0
- package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelTelegramIcon.vue.js +32 -0
- package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelWhatsAppIcon.vue.js +18 -0
- package/dist/components/2_blocks/FeedFoundItem/FeedFoundItem.vue.js +7 -0
- package/dist/components/2_blocks/FeedFoundItem/FeedFoundItem.vue2.js +61 -0
- package/dist/components/2_blocks/FeedFoundObjects/FeedFoundObjects.vue.js +7 -0
- package/dist/components/2_blocks/FeedFoundObjects/FeedFoundObjects.vue2.js +58 -0
- package/dist/components/2_blocks/FeedSearch/FeedSearch.vue.js +7 -0
- package/dist/components/2_blocks/FeedSearch/FeedSearch.vue2.js +68 -0
- package/dist/components/2_chatinput_elements/ButtonCommandsSelector/ButtonCommandsSelector.vue.js +7 -0
- package/dist/components/2_chatinput_elements/ButtonCommandsSelector/ButtonCommandsSelector.vue2.js +70 -0
- package/dist/components/2_chatinput_elements/ButtonEmojiPicker/ButtonEmojiPicker.vue.js +106 -0
- package/dist/components/2_chatinput_elements/ButtonEmojiPicker/icons/SmilesIcon.vue.js +18 -0
- package/dist/components/2_chatinput_elements/ButtonTemplateSelector/ButtonTemplateSelector.vue.js +105 -0
- package/dist/components/2_chatinput_elements/ButtonTemplateSelector/icons/ChatTemplatesIcon.vue.js +25 -0
- package/dist/components/2_chatinput_elements/ButtonWabaTemplateSelector/ButtonWabaTemplateSelector.vue.js +98 -0
- package/dist/components/2_chatinput_elements/FilePreview/FilePreview.vue.js +7 -0
- package/dist/components/2_chatinput_elements/FilePreview/FilePreview.vue2.js +157 -0
- package/dist/components/2_chatinput_elements/FileUploader/FileUploader.vue.js +7 -0
- package/dist/components/2_chatinput_elements/FileUploader/FileUploader.vue2.js +105 -0
- package/dist/components/2_chatinput_elements/FileUploader/icons/FileUploaderIcon.vue.js +21 -0
- package/dist/components/2_chatinput_elements/PlaceholderComponent/PlaceholderComponent.vue.js +66 -0
- package/dist/components/2_chatinput_elements/TemplateSelector/TemplateSelector.vue.js +206 -0
- package/dist/components/2_chatinput_elements/TextFormatToolbar/TextFormatToolbar.vue.js +7 -0
- package/dist/components/2_chatinput_elements/TextFormatToolbar/TextFormatToolbar.vue2.js +210 -0
- package/dist/components/2_chatinput_elements/WABAAttachmentSection/WABAAttachmentSection.vue.js +7 -0
- package/dist/components/2_chatinput_elements/WABAAttachmentSection/WABAAttachmentSection.vue2.js +126 -0
- package/dist/components/2_chatinput_elements/WABAQuickReplyButtons/WABAQuickReplyButtons.vue.js +7 -0
- package/dist/components/2_chatinput_elements/WABAQuickReplyButtons/WABAQuickReplyButtons.vue2.js +38 -0
- package/dist/components/2_chatinput_elements/WABASeparatedQuickButtons/WABASeparatedQuickButtons.vue.js +7 -0
- package/dist/components/2_chatinput_elements/WABASeparatedQuickButtons/WABASeparatedQuickButtons.vue2.js +41 -0
- package/dist/components/2_chatinput_elements/WABATemplateSelector/WABATemplateSelector.vue.js +281 -0
- package/dist/components/2_chatlist_elements/ChatFilter/ChatFilter.vue.js +49 -0
- package/dist/components/2_chatlist_elements/ChatItem/ChatItem.vue.js +7 -0
- package/dist/components/2_chatlist_elements/ChatItem/ChatItem.vue2.js +193 -0
- package/dist/components/2_chatlist_elements/ChatTabs/ChatTabs.vue.js +37 -0
- package/dist/components/2_elements/AudioRecorder/AudioRecorder.vue.js +7 -0
- package/dist/components/2_elements/AudioRecorder/AudioRecorder.vue2.js +116 -0
- package/dist/components/2_elements/ChannelSelector/ChannelSelector.vue.js +73 -0
- package/dist/components/2_elements/ChatInfo/ChatInfo.vue.js +93 -0
- package/dist/components/2_elements/ChatPanel/ChatPanel.vue.js +47 -0
- package/dist/components/2_elements/ContactInfo/ContactInfo.vue.js +158 -0
- package/dist/components/2_elements/ThemeMode/ThemeMode.vue.js +49 -0
- package/dist/components/2_elements/UserProfile/UserProfile.vue.js +39 -0
- package/dist/components/2_elements/VideoRecorder/VideoRecorder.vue.js +7 -0
- package/dist/components/2_elements/VideoRecorder/VideoRecorder.vue2.js +94 -0
- package/dist/components/2_feed_elements/AudioMessage/AudioMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/AudioMessage/AudioMessage.vue2.js +380 -0
- package/dist/components/2_feed_elements/BaseReplyMessage/BaseReplyMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/BaseReplyMessage/BaseReplyMessage.vue2.js +57 -0
- package/dist/components/2_feed_elements/CallMessage/CallMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/CallMessage/CallMessage.vue2.js +476 -0
- package/dist/components/2_feed_elements/CallMessage/icons/IncomingCallIcon.vue.js +26 -0
- package/dist/components/2_feed_elements/CallMessage/icons/IncomingCallIcon.vue2.js +4 -0
- package/dist/components/2_feed_elements/CallMessage/icons/OutgoingCallIcon.vue.js +26 -0
- package/dist/components/2_feed_elements/CallMessage/icons/OutgoingCallIcon.vue2.js +4 -0
- package/dist/components/2_feed_elements/DateMessage/DateMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/DateMessage/DateMessage.vue2.js +20 -0
- package/dist/components/2_feed_elements/DateMessageSticky/DateMessageSticky.vue.js +7 -0
- package/dist/components/2_feed_elements/DateMessageSticky/DateMessageSticky.vue2.js +18 -0
- package/dist/components/2_feed_elements/FeedKeyboard/FeedKeyboard.vue.js +7 -0
- package/dist/components/2_feed_elements/FeedKeyboard/FeedKeyboard.vue2.js +42 -0
- package/dist/components/2_feed_elements/FileMessage/FileMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/FileMessage/FileMessage.vue2.js +204 -0
- package/dist/components/2_feed_elements/ImageMessage/ImageMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/ImageMessage/ImageMessage.vue2.js +266 -0
- package/dist/components/2_feed_elements/MessageKeyboard/MessageKeyboard.vue.js +7 -0
- package/dist/components/2_feed_elements/MessageKeyboard/MessageKeyboard.vue2.js +46 -0
- package/dist/components/2_feed_elements/MessageReactions/MessageReactions.vue.js +7 -0
- package/dist/components/2_feed_elements/MessageReactions/MessageReactions.vue2.js +161 -0
- package/dist/components/2_feed_elements/MessageReactions/composables/usePositioning.js +104 -0
- package/dist/components/2_feed_elements/MessageReactions/composables/useReactions.js +30 -0
- package/dist/components/2_feed_elements/MessageReactions/composables/useReactionsPanel.js +90 -0
- package/dist/components/2_feed_elements/MessageReactions/composables/useReactionsState.js +32 -0
- package/dist/components/2_feed_elements/MessageReactions/utils/quickReactions.js +17 -0
- package/dist/components/2_feed_elements/MessageStatusIndicator/MessageStatusIndicator.vue.js +73 -0
- package/dist/components/2_feed_elements/MessageStatusIndicator/MessageStatusIndicator.vue2.js +4 -0
- package/dist/components/2_feed_elements/ReplyAudioMessage/ReplyAudioMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/ReplyAudioMessage/ReplyAudioMessage.vue2.js +39 -0
- package/dist/components/2_feed_elements/ReplyCallMessage/ReplyCallMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/ReplyCallMessage/ReplyCallMessage.vue2.js +35 -0
- package/dist/components/2_feed_elements/ReplyFileMessage/ReplyFileMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/ReplyFileMessage/ReplyFileMessage.vue2.js +46 -0
- package/dist/components/2_feed_elements/ReplyImageMessage/ReplyImageMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/ReplyImageMessage/ReplyImageMessage.vue2.js +71 -0
- package/dist/components/2_feed_elements/ReplyStickerMessage/ReplyStickerMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/ReplyStickerMessage/ReplyStickerMessage.vue2.js +119 -0
- package/dist/components/2_feed_elements/ReplyTextMessage/ReplyTextMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/ReplyTextMessage/ReplyTextMessage.vue2.js +27 -0
- package/dist/components/2_feed_elements/ReplyVideoMessage/ReplyVideoMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/ReplyVideoMessage/ReplyVideoMessage.vue2.js +75 -0
- package/dist/components/2_feed_elements/SplashScreen/SplashScreen.vue.js +7 -0
- package/dist/components/2_feed_elements/SplashScreen/SplashScreen.vue2.js +23 -0
- package/dist/components/2_feed_elements/StickerMessage/StickerMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/StickerMessage/StickerMessage.vue2.js +258 -0
- package/dist/components/2_feed_elements/StickerMessage/libs/tgs-player/lottie-player.esm.js +6469 -0
- package/dist/components/2_feed_elements/StickerMessage/libs/tgs-player/tgs-player.esm.js +7216 -0
- package/dist/components/2_feed_elements/StickerMessage/utils/stickerUtils.js +10 -0
- package/dist/components/2_feed_elements/StickerMessage/utils/suppress-lit-warning.js +21 -0
- package/dist/components/2_feed_elements/SystemMessage/SystemMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/SystemMessage/SystemMessage.vue2.js +18 -0
- package/dist/components/2_feed_elements/TextMessage/TextMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/TextMessage/TextMessage.vue2.js +174 -0
- package/dist/components/2_feed_elements/TypingMessage/TypingMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/TypingMessage/TypingMessage.vue2.js +32 -0
- package/dist/components/2_feed_elements/VideoMessage/VideoMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/VideoMessage/VideoMessage.vue2.js +286 -0
- package/dist/{CreateChat-C4y1ddK_.js → components/2_modals/CreateChat/CreateChat.vue.js} +8 -7
- package/dist/components/2_modals/CreateChat/CreateChat.vue2.js +1 -0
- package/dist/{CreateChat2-Oy9JaaRC.js → components/2_modals/CreateChat2/CreateChat2.vue.js} +4 -3
- package/dist/{CreateDialog-DacwclUe.js → components/2_modals/CreateDialog/CreateDialog.vue.js} +12 -11
- package/dist/components/2_modals/Modal/Modal.vue.js +69 -0
- package/dist/components/2_modals/ModalFullscreen/ModalFullscreen.vue.js +46 -0
- package/dist/components/2_modals/ModalNoFooter/ModalNoFooter.vue.js +43 -0
- package/dist/components/2_modals/ModalVideoRecorder/ModalVideoRecorder.vue.js +7 -0
- package/dist/{ModalVideoRecorder-BkPr4JP7.js → components/2_modals/ModalVideoRecorder/ModalVideoRecorder.vue2.js} +48 -49
- package/dist/components/2_modals/SelectUser/SelectUser.vue.js +63 -0
- package/dist/{SelectUser2-kaPAmxhi.js → components/2_modals/SelectUser2/SelectUser2.vue.js} +4 -3
- package/dist/components/3_compounds/ChatInput/ChatInput.vue.js +7 -0
- package/dist/components/3_compounds/ChatInput/ChatInput.vue2.js +192 -0
- package/dist/components/3_compounds/ChatInput/icons/SendIcon.vue.js +35 -0
- package/dist/components/3_compounds/ChatInput/icons/SendIcon.vue2.js +4 -0
- package/dist/components/3_compounds/ChatList/ChatList.vue.js +186 -0
- package/dist/components/3_compounds/ChatList/ChatListHeader.vue.js +27 -0
- package/dist/components/3_compounds/ChatList/composables/useChatListActions.js +16 -0
- package/dist/components/3_compounds/ChatList/composables/useChatListFilter.js +27 -0
- package/dist/components/3_compounds/ChatList/composables/useChatListScroll.js +47 -0
- package/dist/components/3_compounds/ChatList/composables/useChatListSelection.js +28 -0
- package/dist/components/3_compounds/Feed/Feed.vue.js +7 -0
- package/dist/components/3_compounds/Feed/Feed.vue2.js +295 -0
- package/dist/components/3_compounds/Feed/assets/chat-background.svg.js +7 -0
- package/dist/components/3_compounds/Feed/composables/useFeedButton.js +17 -0
- package/dist/components/3_compounds/Feed/composables/useFeedComponents.js +29 -0
- package/dist/components/3_compounds/Feed/composables/useFeedGrouping.js +15 -0
- package/dist/components/3_compounds/Feed/composables/useFeedKeyboard.js +15 -0
- package/dist/components/3_compounds/Feed/composables/useFeedLoadMore.js +62 -0
- package/dist/components/3_compounds/Feed/composables/useFeedMessageVisibility.js +33 -0
- package/dist/components/3_compounds/Feed/composables/useFeedReply.js +42 -0
- package/dist/components/3_compounds/Feed/composables/useFeedScroll.js +63 -0
- package/dist/components/3_compounds/Feed/composables/useFeedScrollTo.js +18 -0
- package/dist/components/3_compounds/Feed/composables/useStickyDate.js +61 -0
- package/dist/components/3_compounds/Feed/functions/throttle.js +11 -0
- package/dist/components/3_compounds/SideBar/SideBar.vue.js +190 -0
- package/dist/components/4_layouts/AdaptiveExtendedLayout/AdaptiveExtendedLayout.vue.js +63 -0
- package/dist/components/4_layouts/BaseLayout/BaseLayout.vue.js +18 -0
- package/dist/components/4_layouts/ChatWrapper/ChatWrapper.vue.js +7 -0
- package/dist/components/4_layouts/ChatWrapper/ChatWrapper.vue2.js +53 -0
- package/dist/components/4_layouts/ExtendedLayout/ExtendedLayout.vue.js +21 -0
- package/dist/components/4_layouts/FeedLayout/FeedLayout.vue.js +15 -0
- package/dist/components/5_containers/BaseContainer/BaseContainer.vue.js +33 -0
- package/dist/components/5_containers/FloatContainer/FloatContainer.vue.js +104 -0
- package/dist/functions/createReactionHandlers.js +19 -0
- package/dist/functions/formatTimestamp.js +8 -0
- package/dist/functions/getChannelAccentColor.js +30 -0
- package/dist/functions/getMessageClass.js +6 -0
- package/dist/functions/getStatusMessage.js +42 -0
- package/dist/functions/insertDaySeparators.js +24 -0
- package/dist/functions/parseMarkdown.js +18 -0
- package/dist/functions/playNotificationAudio.js +13 -0
- package/dist/functions/sortByTimestamp.js +4 -0
- package/dist/hooks/messages/useChannelAccentColor.js +29 -0
- package/dist/hooks/messages/useMessageActions.js +28 -0
- package/dist/hooks/messages/useMessageLinks.js +48 -0
- package/dist/hooks/messages/useSubtextTooltip.js +12 -0
- package/dist/hooks/modals/useCreateChat.js +19 -0
- package/dist/hooks/modals/useCreateChat2.js +16 -0
- package/dist/hooks/modals/useCreateDialog.js +20 -0
- package/dist/hooks/modals/useModal.js +41 -0
- package/dist/hooks/modals/useModalSelectUser2.js +20 -0
- package/dist/hooks/modals/useVideoRecorder.js +14 -0
- package/dist/hooks/uploadFile/generatePreview.js +20 -0
- package/dist/hooks/uploadFile/getTypeFileByMime.js +7 -0
- package/dist/hooks/uploadFile/uploadFile.js +28 -0
- package/dist/hooks/useDelayDebouncedRef.js +18 -0
- package/dist/hooks/useImmediateDebouncedRef.js +18 -0
- package/dist/hooks/useMessageDraft.js +87 -0
- package/dist/hooks/useSearchModel.js +11 -0
- package/dist/hooks/useTheme.js +11 -0
- package/dist/hooks/validators/chats/chatValidator.js +79 -0
- package/dist/hooks/validators/chats/useChatValidator.js +82 -0
- package/dist/hooks/validators/messages/messageValidator.js +84 -0
- package/dist/hooks/validators/messages/useMessageValidator.js +82 -0
- package/dist/hooks/validators/sidebar/sidebarValidator.js +47 -0
- package/dist/hooks/validators/sidebar/useSidebarValidator.js +82 -0
- package/dist/hooks/validators/useValidation.js +94 -0
- package/dist/index.js +239 -0
- package/dist/locale/en.js +22 -0
- package/dist/locale/ru.js +22 -0
- package/dist/locale/useLocale.js +34 -0
- package/dist/node_modules/entities/lib/esm/decode.js +278 -0
- package/dist/node_modules/entities/lib/esm/decode_codepoint.js +46 -0
- package/dist/node_modules/entities/lib/esm/generated/decode-data-html.js +7 -0
- package/dist/node_modules/entities/lib/esm/generated/decode-data-xml.js +7 -0
- package/dist/node_modules/linkify-it/index.js +187 -0
- package/dist/node_modules/linkify-it/lib/re.js +19 -0
- package/dist/node_modules/linkify-string/dist/linkify-string.js +41 -0
- package/dist/node_modules/linkifyjs/dist/linkify.js +679 -0
- package/dist/node_modules/markdown-it/lib/common/html_blocks.js +67 -0
- package/dist/node_modules/markdown-it/lib/common/html_re.js +5 -0
- package/dist/node_modules/markdown-it/lib/common/utils.js +169 -0
- package/dist/node_modules/markdown-it/lib/helpers/index.js +8 -0
- package/dist/node_modules/markdown-it/lib/helpers/parse_link_destination.js +44 -0
- package/dist/node_modules/markdown-it/lib/helpers/parse_link_label.js +21 -0
- package/dist/node_modules/markdown-it/lib/helpers/parse_link_title.js +37 -0
- package/dist/node_modules/markdown-it/lib/index.js +112 -0
- package/dist/node_modules/markdown-it/lib/parser_block.js +63 -0
- package/dist/node_modules/markdown-it/lib/parser_core.js +34 -0
- package/dist/node_modules/markdown-it/lib/parser_inline.js +96 -0
- package/dist/node_modules/markdown-it/lib/presets/commonmark.js +78 -0
- package/dist/node_modules/markdown-it/lib/presets/default.js +40 -0
- package/dist/node_modules/markdown-it/lib/presets/zero.js +59 -0
- package/dist/node_modules/markdown-it/lib/renderer.js +127 -0
- package/dist/node_modules/markdown-it/lib/ruler.js +95 -0
- package/dist/node_modules/markdown-it/lib/rules_block/blockquote.js +59 -0
- package/dist/node_modules/markdown-it/lib/rules_block/code.js +23 -0
- package/dist/node_modules/markdown-it/lib/rules_block/fence.js +30 -0
- package/dist/node_modules/markdown-it/lib/rules_block/heading.js +28 -0
- package/dist/node_modules/markdown-it/lib/rules_block/hr.js +27 -0
- package/dist/node_modules/markdown-it/lib/rules_block/html_block.js +37 -0
- package/dist/node_modules/markdown-it/lib/rules_block/lheading.js +43 -0
- package/dist/node_modules/markdown-it/lib/rules_block/list.js +110 -0
- package/dist/node_modules/markdown-it/lib/rules_block/paragraph.js +25 -0
- package/dist/node_modules/markdown-it/lib/rules_block/reference.js +95 -0
- package/dist/node_modules/markdown-it/lib/rules_block/state_block.js +84 -0
- package/dist/node_modules/markdown-it/lib/rules_block/table.js +99 -0
- package/dist/node_modules/markdown-it/lib/rules_core/block.js +7 -0
- package/dist/node_modules/markdown-it/lib/rules_core/inline.js +10 -0
- package/dist/node_modules/markdown-it/lib/rules_core/linkify.js +57 -0
- package/dist/node_modules/markdown-it/lib/rules_core/normalize.js +9 -0
- package/dist/node_modules/markdown-it/lib/rules_core/replacements.js +31 -0
- package/dist/node_modules/markdown-it/lib/rules_core/smartquotes.js +80 -0
- package/dist/node_modules/markdown-it/lib/rules_core/state_core.js +8 -0
- package/dist/node_modules/markdown-it/lib/rules_core/text_join.js +16 -0
- package/dist/node_modules/markdown-it/lib/rules_inline/autolink.js +46 -0
- package/dist/node_modules/markdown-it/lib/rules_inline/backticks.js +31 -0
- package/dist/node_modules/markdown-it/lib/rules_inline/balance_pairs.js +34 -0
- package/dist/node_modules/markdown-it/lib/rules_inline/emphasis.js +57 -0
- package/dist/node_modules/markdown-it/lib/rules_inline/entity.js +33 -0
- package/dist/node_modules/markdown-it/lib/rules_inline/escape.js +32 -0
- package/dist/node_modules/markdown-it/lib/rules_inline/fragments_join.js +10 -0
- package/dist/node_modules/markdown-it/lib/rules_inline/html_inline.js +32 -0
- package/dist/node_modules/markdown-it/lib/rules_inline/image.js +48 -0
- package/dist/node_modules/markdown-it/lib/rules_inline/link.js +40 -0
- package/dist/node_modules/markdown-it/lib/rules_inline/linkify.js +28 -0
- package/dist/node_modules/markdown-it/lib/rules_inline/newline.js +23 -0
- package/dist/node_modules/markdown-it/lib/rules_inline/state_inline.js +27 -0
- package/dist/node_modules/markdown-it/lib/rules_inline/strikethrough.js +54 -0
- package/dist/node_modules/markdown-it/lib/rules_inline/text.js +39 -0
- package/dist/node_modules/markdown-it/lib/token.js +31 -0
- package/dist/node_modules/mdurl/index.js +10 -0
- package/dist/node_modules/mdurl/lib/decode.js +61 -0
- package/dist/node_modules/mdurl/lib/encode.js +48 -0
- package/dist/node_modules/mdurl/lib/format.js +7 -0
- package/dist/node_modules/mdurl/lib/parse.js +74 -0
- package/dist/node_modules/punycode.js/punycode.es6.js +139 -0
- package/dist/node_modules/uc.micro/categories/Cc/regex.js +4 -0
- package/dist/node_modules/uc.micro/categories/Cf/regex.js +4 -0
- package/dist/node_modules/uc.micro/categories/P/regex.js +4 -0
- package/dist/node_modules/uc.micro/categories/S/regex.js +4 -0
- package/dist/node_modules/uc.micro/categories/Z/regex.js +4 -0
- package/dist/node_modules/uc.micro/index.js +14 -0
- package/dist/node_modules/uc.micro/properties/Any/regex.js +4 -0
- package/dist/node_modules/vue3-emoji-picker-ru/dist/emoji-picker.es.js +16471 -0
- package/dist/types/components/1_icons/AvatarIcon.vue.d.ts +1 -1
- package/dist/types/components/2_blocks/FeedSearch/FeedSearch.vue.d.ts +2 -2
- package/dist/types/components/2_chatinput_elements/ButtonWabaTemplateSelector/ButtonWabaTemplateSelector.vue.d.ts +2 -2
- package/dist/types/components/2_chatinput_elements/PlaceholderComponent/PlaceholderComponent.vue.d.ts +2 -2
- package/dist/types/components/2_feed_elements/AudioMessage/AudioMessage.vue.d.ts +2 -2
- package/dist/types/components/2_feed_elements/BaseReplyMessage/BaseReplyMessage.vue.d.ts +2 -2
- package/dist/types/components/2_feed_elements/CallMessage/CallMessage.vue.d.ts +2 -2
- package/dist/types/components/2_feed_elements/FileMessage/FileMessage.vue.d.ts +2 -2
- package/dist/types/components/2_feed_elements/ImageMessage/ImageMessage.vue.d.ts +2 -2
- package/dist/types/components/2_feed_elements/ReplyStickerMessage/ReplyStickerMessage.vue.d.ts +1 -3
- package/dist/types/components/2_feed_elements/StickerMessage/StickerMessage.vue.d.ts +3 -5
- package/dist/types/components/2_feed_elements/StickerMessage/utils/stickerUtils.d.ts +19 -0
- package/dist/types/components/2_feed_elements/TextMessage/TextMessage.vue.d.ts +2 -2
- package/dist/types/components/2_feed_elements/VideoMessage/VideoMessage.vue.d.ts +2 -2
- package/dist/types/components/2_modals/CreateDialog/CreateDialog.vue.d.ts +2 -2
- package/dist/types/components/2_modals/CreateDialog/stories/CreateDialog.stories.d.ts +2 -2
- package/dist/types/components/3_compounds/ChatList/ChatList.vue.d.ts +1 -1
- package/dist/types/components/3_compounds/Feed/Feed.vue.d.ts +2 -2
- package/dist/types/main.d.ts +1 -1
- package/package.json +5 -5
- package/dist/index-BzAEsq7j.js +0 -43508
- package/dist/vuessages.es.js +0 -123
- package/dist/vuessages.umd.js +0 -624
- /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,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,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
|
+
};
|