stream-chat-react 6.9.0 → 6.12.0
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/browser.full-bundle.js +2624 -2045
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +3 -3
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/Attachment/Card.js +1 -1
- package/dist/components/AutoCompleteTextarea/Header.d.ts +2 -0
- package/dist/components/AutoCompleteTextarea/Header.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/Header.js +10 -9
- package/dist/components/AutoCompleteTextarea/List.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/List.js +2 -2
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/Textarea.js +23 -13
- package/dist/components/Channel/Channel.d.ts +8 -3
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +29 -12
- package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts +2 -10
- package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -1
- package/dist/components/Channel/hooks/useCreateChannelStateContext.js +11 -5
- package/dist/components/Channel/hooks/useEditMessageHandler.js +1 -1
- package/dist/components/ChannelHeader/ChannelHeader.d.ts.map +1 -1
- package/dist/components/ChannelHeader/ChannelHeader.js +3 -3
- package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
- package/dist/components/ChannelList/ChannelList.js +5 -8
- package/dist/components/ChannelList/ChannelListMessenger.d.ts +2 -0
- package/dist/components/ChannelList/ChannelListMessenger.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelDeletedListener.js +1 -1
- package/dist/components/ChannelList/hooks/useChannelHiddenListener.js +1 -1
- package/dist/components/ChannelList/hooks/useChannelTruncatedListener.js +1 -1
- package/dist/components/ChannelList/hooks/useChannelUpdatedListener.js +1 -1
- package/dist/components/ChannelList/hooks/useChannelVisibleListener.js +1 -1
- package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.js +1 -1
- package/dist/components/ChannelList/hooks/useMessageNewListener.js +1 -1
- package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js +1 -1
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.js +1 -1
- package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.js +1 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.js +1 -0
- package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.js +1 -1
- package/dist/components/ChannelPreview/ChannelPreview.js +2 -2
- package/dist/components/ChannelPreview/hooks/useIsChannelMuted.js +1 -1
- package/dist/components/ChannelSearch/ChannelSearch.js +1 -1
- package/dist/components/ChannelSearch/SearchInput.js +1 -1
- package/dist/components/ChannelSearch/SearchResults.js +1 -1
- package/dist/components/Chat/Chat.d.ts +1 -1
- package/dist/components/Chat/Chat.d.ts.map +1 -1
- package/dist/components/Chat/Chat.js +2 -1
- package/dist/components/Chat/hooks/useChat.d.ts +2 -1
- package/dist/components/Chat/hooks/useChat.d.ts.map +1 -1
- package/dist/components/Chat/hooks/useChat.js +13 -6
- package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
- package/dist/components/Chat/hooks/useCreateChatContext.js +3 -2
- package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts +1 -0
- package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts.map +1 -1
- package/dist/components/ChatAutoComplete/ChatAutoComplete.js +4 -4
- package/dist/components/ChatDown/ChatDown.js +1 -1
- package/dist/components/DateSeparator/DateSeparator.js +1 -1
- package/dist/components/EmptyStateIndicator/EmptyStateIndicator.js +1 -1
- package/dist/components/EventComponent/EventComponent.js +1 -1
- package/dist/components/Gallery/Gallery.js +1 -1
- package/dist/components/Loading/LoadingErrorIndicator.js +1 -1
- package/dist/components/MML/MML.js +1 -1
- package/dist/components/Message/FixedHeightMessage.js +4 -4
- package/dist/components/Message/Message.d.ts.map +1 -1
- package/dist/components/Message/Message.js +3 -6
- package/dist/components/Message/MessageCommerce.js +2 -2
- package/dist/components/Message/MessageDeleted.js +1 -1
- package/dist/components/Message/MessageLivestream.d.ts.map +1 -1
- package/dist/components/Message/MessageLivestream.js +5 -6
- package/dist/components/Message/MessageOptions.js +1 -1
- package/dist/components/Message/MessageRepliesCountButton.js +1 -1
- package/dist/components/Message/MessageSimple.js +2 -2
- package/dist/components/Message/MessageStatus.d.ts.map +1 -1
- package/dist/components/Message/MessageStatus.js +4 -4
- package/dist/components/Message/MessageTeam.js +3 -3
- package/dist/components/Message/MessageText.d.ts.map +1 -1
- package/dist/components/Message/MessageText.js +3 -3
- package/dist/components/Message/MessageTimestamp.d.ts.map +1 -1
- package/dist/components/Message/MessageTimestamp.js +2 -2
- package/dist/components/Message/QuotedMessage.d.ts.map +1 -1
- package/dist/components/Message/QuotedMessage.js +5 -4
- package/dist/components/Message/hooks/useActionHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useActionHandler.js +2 -2
- package/dist/components/Message/hooks/useDeleteHandler.js +3 -3
- package/dist/components/Message/hooks/useFlagHandler.js +2 -2
- package/dist/components/Message/hooks/useMentionsHandler.js +1 -1
- package/dist/components/Message/hooks/useMuteHandler.js +3 -3
- package/dist/components/Message/hooks/useOpenThreadHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useOpenThreadHandler.js +1 -1
- package/dist/components/Message/hooks/usePinHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/usePinHandler.js +10 -17
- package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useReactionHandler.js +18 -16
- package/dist/components/Message/hooks/useRetryHandler.js +1 -1
- package/dist/components/Message/hooks/useUserRole.d.ts +2 -2
- package/dist/components/Message/hooks/useUserRole.d.ts.map +1 -1
- package/dist/components/Message/hooks/useUserRole.js +8 -6
- package/dist/components/Message/types.d.ts +1 -1
- package/dist/components/Message/types.d.ts.map +1 -1
- package/dist/components/Message/utils.d.ts.map +1 -1
- package/dist/components/Message/utils.js +9 -4
- package/dist/components/MessageActions/MessageActions.js +2 -2
- package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
- package/dist/components/MessageActions/MessageActionsBox.js +3 -3
- package/dist/components/MessageInput/DefaultTriggerProvider.d.ts.map +1 -1
- package/dist/components/MessageInput/DefaultTriggerProvider.js +1 -1
- package/dist/components/MessageInput/DropzoneProvider.d.ts +5 -0
- package/dist/components/MessageInput/DropzoneProvider.d.ts.map +1 -0
- package/dist/components/MessageInput/DropzoneProvider.js +31 -0
- package/dist/components/MessageInput/EditMessageForm.d.ts.map +1 -1
- package/dist/components/MessageInput/EditMessageForm.js +4 -4
- package/dist/components/MessageInput/EmojiPicker.js +3 -3
- package/dist/components/MessageInput/MessageInput.d.ts +2 -2
- package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInput.js +17 -7
- package/dist/components/MessageInput/MessageInputFlat.js +4 -4
- package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputSmall.js +4 -4
- package/dist/components/MessageInput/QuotedMessagePreview.d.ts.map +1 -1
- package/dist/components/MessageInput/QuotedMessagePreview.js +4 -4
- package/dist/components/MessageInput/UploadsPreview.d.ts.map +1 -1
- package/dist/components/MessageInput/UploadsPreview.js +2 -2
- package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useAttachments.js +1 -1
- package/dist/components/MessageInput/hooks/useCommandTrigger.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useCommandTrigger.js +2 -3
- package/dist/components/MessageInput/hooks/useCooldownTimer.js +2 -2
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +9 -1
- package/dist/components/MessageInput/hooks/useEmojiIndex.js +1 -1
- package/dist/components/MessageInput/hooks/useFileUploads.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useFileUploads.js +32 -16
- package/dist/components/MessageInput/hooks/useImageUploads.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useImageUploads.js +32 -16
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +14 -3
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputState.js +15 -7
- package/dist/components/MessageInput/hooks/useMessageInputText.js +1 -1
- package/dist/components/MessageInput/hooks/useSubmitHandler.js +3 -3
- package/dist/components/MessageInput/hooks/useUserTrigger.js +3 -2
- package/dist/components/MessageInput/hooks/utils.d.ts +15 -1
- package/dist/components/MessageInput/hooks/utils.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/utils.js +60 -4
- package/dist/components/MessageInput/icons.js +5 -5
- package/dist/components/MessageList/ConnectionStatus.js +2 -2
- package/dist/components/MessageList/MessageList.d.ts +4 -9
- package/dist/components/MessageList/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.js +11 -18
- package/dist/components/MessageList/MessageListNotifications.d.ts +11 -0
- package/dist/components/MessageList/MessageListNotifications.d.ts.map +1 -0
- package/dist/components/MessageList/MessageListNotifications.js +12 -0
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +13 -14
- package/dist/components/MessageList/hooks/useEnrichedMessages.d.ts +1 -0
- package/dist/components/MessageList/hooks/useEnrichedMessages.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/useEnrichedMessages.js +5 -4
- package/dist/components/MessageList/hooks/useGiphyPreview.js +1 -1
- package/dist/components/MessageList/hooks/useMessageListElements.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/useMessageListElements.js +3 -3
- package/dist/components/MessageList/hooks/useMessageListScrollManager.js +1 -1
- package/dist/components/MessageList/index.d.ts +1 -0
- package/dist/components/MessageList/index.d.ts.map +1 -1
- package/dist/components/MessageList/index.js +1 -0
- package/dist/components/Modal/Modal.js +1 -1
- package/dist/components/Reactions/ReactionSelector.d.ts.map +1 -1
- package/dist/components/Reactions/ReactionSelector.js +3 -3
- package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
- package/dist/components/Reactions/ReactionsList.js +2 -2
- package/dist/components/Reactions/SimpleReactionsList.js +2 -2
- package/dist/components/Thread/Thread.d.ts.map +1 -1
- package/dist/components/Thread/Thread.js +8 -9
- package/dist/components/TypingIndicator/TypingIndicator.d.ts +3 -3
- package/dist/components/TypingIndicator/TypingIndicator.d.ts.map +1 -1
- package/dist/components/TypingIndicator/TypingIndicator.js +7 -4
- package/dist/components/Window/Window.js +1 -1
- package/dist/context/ChannelActionContext.d.ts +2 -2
- package/dist/context/ChannelActionContext.d.ts.map +1 -1
- package/dist/context/ChannelActionContext.js +8 -3
- package/dist/context/ChannelStateContext.d.ts +5 -3
- package/dist/context/ChannelStateContext.d.ts.map +1 -1
- package/dist/context/ChannelStateContext.js +8 -3
- package/dist/context/ChatContext.d.ts +6 -4
- package/dist/context/ChatContext.d.ts.map +1 -1
- package/dist/context/ChatContext.js +9 -2
- package/dist/context/ComponentContext.d.ts +4 -4
- package/dist/context/ComponentContext.d.ts.map +1 -1
- package/dist/context/ComponentContext.js +8 -3
- package/dist/context/EmojiContext.d.ts +2 -2
- package/dist/context/EmojiContext.d.ts.map +1 -1
- package/dist/context/EmojiContext.js +8 -3
- package/dist/context/MessageContext.d.ts +3 -3
- package/dist/context/MessageContext.d.ts.map +1 -1
- package/dist/context/MessageContext.js +9 -2
- package/dist/context/MessageInputContext.d.ts +3 -6
- package/dist/context/MessageInputContext.d.ts.map +1 -1
- package/dist/context/MessageInputContext.js +4 -6
- package/dist/context/TranslationContext.d.ts +1 -1
- package/dist/context/TranslationContext.d.ts.map +1 -1
- package/dist/context/TranslationContext.js +8 -1
- package/dist/context/TypingContext.d.ts +2 -2
- package/dist/context/TypingContext.d.ts.map +1 -1
- package/dist/context/TypingContext.js +9 -2
- package/dist/css/index.css +1 -1
- package/dist/i18n/Streami18n.d.ts +1 -0
- package/dist/i18n/Streami18n.d.ts.map +1 -1
- package/dist/i18n/Streami18n.js +2 -2
- package/dist/i18n/de.json +5 -4
- package/dist/i18n/en.json +1 -0
- package/dist/i18n/es.json +1 -0
- package/dist/i18n/fr.json +1 -0
- package/dist/i18n/hi.json +1 -0
- package/dist/i18n/it.json +1 -0
- package/dist/i18n/ja.json +1 -0
- package/dist/i18n/ko.json +1 -0
- package/dist/i18n/nl.json +1 -0
- package/dist/i18n/pt.json +1 -0
- package/dist/i18n/ru.json +1 -0
- package/dist/i18n/tr.json +1 -0
- package/dist/index.cjs.js +645 -428
- package/dist/index.cjs.js.map +1 -1
- package/dist/scss/Avatar.scss +19 -2
- package/dist/scss/Message.scss +7 -6
- package/dist/scss/MessageInputFlat.scss +4 -0
- package/dist/scss/MessageList.scss +10 -2
- package/dist/scss/MessageNotification.scss +36 -0
- package/dist/scss/_base.scss +8 -3
- package/dist/scss/_variables.scss +1 -1
- package/dist/types/types.d.ts +1 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/utils.d.ts +7 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +6 -6
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +13 -9
package/dist/index.cjs.js
CHANGED
|
@@ -308,7 +308,14 @@ var TranslationProvider = function (_a) {
|
|
|
308
308
|
var children = _a.children, value = _a.value;
|
|
309
309
|
return (React__default['default'].createElement(TranslationContext.Provider, { value: value }, children));
|
|
310
310
|
};
|
|
311
|
-
var useTranslationContext = function () {
|
|
311
|
+
var useTranslationContext = function (componentName) {
|
|
312
|
+
var contextValue = React.useContext(TranslationContext);
|
|
313
|
+
if (!contextValue) {
|
|
314
|
+
console.warn("The useTranslationContext hook was called outside of the TranslationContext provider. Make sure this hook is called within a child of the Chat component. The errored call is located in the " + componentName + " component.");
|
|
315
|
+
return {};
|
|
316
|
+
}
|
|
317
|
+
return contextValue;
|
|
318
|
+
};
|
|
312
319
|
var withTranslationContext = function (Component) {
|
|
313
320
|
var WithTranslationContextComponent = function (props) {
|
|
314
321
|
var translationContext = useTranslationContext();
|
|
@@ -320,7 +327,7 @@ var withTranslationContext = function (Component) {
|
|
|
320
327
|
|
|
321
328
|
var UnMemoizedCard = function (props) {
|
|
322
329
|
var image_url = props.image_url, og_scrape_url = props.og_scrape_url, text = props.text, thumb_url = props.thumb_url, title = props.title, title_link = props.title_link, type = props.type;
|
|
323
|
-
var t = useTranslationContext().t;
|
|
330
|
+
var t = useTranslationContext('Card').t;
|
|
324
331
|
var image = thumb_url || image_url;
|
|
325
332
|
var trimUrl = function (url) {
|
|
326
333
|
if (url !== undefined && url !== null) {
|
|
@@ -381,7 +388,7 @@ var UnMemoizedGallery = function (props) {
|
|
|
381
388
|
var images = props.images;
|
|
382
389
|
var _a = React.useState(0), index = _a[0], setIndex = _a[1];
|
|
383
390
|
var _b = React.useState(false), modalOpen = _b[0], setModalOpen = _b[1];
|
|
384
|
-
var t = useTranslationContext().t;
|
|
391
|
+
var t = useTranslationContext('Gallery').t;
|
|
385
392
|
var toggleModal = function (selectedIndex) {
|
|
386
393
|
if (modalOpen) {
|
|
387
394
|
setModalOpen(false);
|
|
@@ -610,13 +617,18 @@ var Item = /*#__PURE__*/React__default['default'].forwardRef(function Item(props
|
|
|
610
617
|
})));
|
|
611
618
|
});
|
|
612
619
|
|
|
613
|
-
var ComponentContext = React__default['default'].createContext(
|
|
620
|
+
var ComponentContext = React__default['default'].createContext(undefined);
|
|
614
621
|
var ComponentProvider = function (_a) {
|
|
615
622
|
var children = _a.children, value = _a.value;
|
|
616
623
|
return (React__default['default'].createElement(ComponentContext.Provider, { value: value }, children));
|
|
617
624
|
};
|
|
618
|
-
var useComponentContext = function () {
|
|
619
|
-
|
|
625
|
+
var useComponentContext = function (componentName) {
|
|
626
|
+
var contextValue = React.useContext(ComponentContext);
|
|
627
|
+
if (!contextValue) {
|
|
628
|
+
console.warn("The useComponentContext hook was called outside of the ComponentContext provider. Make sure this hook is called within a child of the Channel component. The errored call is located in the " + componentName + " component.");
|
|
629
|
+
return {};
|
|
630
|
+
}
|
|
631
|
+
return contextValue;
|
|
620
632
|
};
|
|
621
633
|
/**
|
|
622
634
|
* Typescript currently does not support partial inference, so if ComponentContext
|
|
@@ -756,7 +768,7 @@ var renderText = function (text, mentioned_users, options) {
|
|
|
756
768
|
if (noParsingNeeded.length > 0 || linkIsInBlock)
|
|
757
769
|
return;
|
|
758
770
|
var displayLink = type === 'email' ? value : value.replace(detectHttp, '');
|
|
759
|
-
newText = newText.replace(new RegExp(escapeRegExp(value), 'g'), "[" + displayLink + "](" + encodeURI(href) + ")");
|
|
771
|
+
newText = newText.replace(new RegExp(escapeRegExp(value), 'g'), "[" + displayLink + "](" + encodeURI(decodeURI(href)) + ")");
|
|
760
772
|
});
|
|
761
773
|
var plugins = [emojiMarkdownPlugin];
|
|
762
774
|
if (mentioned_users === null || mentioned_users === void 0 ? void 0 : mentioned_users.length) {
|
|
@@ -805,26 +817,27 @@ var getWholeChar = function (str, i) {
|
|
|
805
817
|
return '';
|
|
806
818
|
};
|
|
807
819
|
|
|
808
|
-
var DefaultSuggestionListHeader = function (
|
|
809
|
-
var value =
|
|
810
|
-
var t = useTranslationContext().t;
|
|
811
|
-
|
|
820
|
+
var DefaultSuggestionListHeader = function (props) {
|
|
821
|
+
var currentTrigger = props.currentTrigger, value = props.value;
|
|
822
|
+
var t = useTranslationContext('DefaultSuggestionListHeader').t;
|
|
823
|
+
var triggerIndex = value.lastIndexOf(currentTrigger);
|
|
824
|
+
if (currentTrigger === '/') {
|
|
812
825
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
813
826
|
t('Commands matching'),
|
|
814
827
|
" ",
|
|
815
|
-
React__default['default'].createElement("strong", null, value.
|
|
828
|
+
React__default['default'].createElement("strong", null, value.slice(triggerIndex + 1))));
|
|
816
829
|
}
|
|
817
|
-
if (
|
|
830
|
+
if (currentTrigger === ':') {
|
|
818
831
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
819
832
|
t('Emoji matching'),
|
|
820
833
|
" ",
|
|
821
|
-
React__default['default'].createElement("strong", null, value.
|
|
834
|
+
React__default['default'].createElement("strong", null, value.slice(triggerIndex + 1))));
|
|
822
835
|
}
|
|
823
|
-
if (
|
|
836
|
+
if (currentTrigger === '@') {
|
|
824
837
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
825
838
|
t('People matching'),
|
|
826
839
|
" ",
|
|
827
|
-
React__default['default'].createElement("strong", null, value.
|
|
840
|
+
React__default['default'].createElement("strong", null, value.slice(triggerIndex + 1))));
|
|
828
841
|
}
|
|
829
842
|
return null;
|
|
830
843
|
};
|
|
@@ -1052,6 +1065,7 @@ var List = function List(props) {
|
|
|
1052
1065
|
}, /*#__PURE__*/React__default['default'].createElement("li", {
|
|
1053
1066
|
className: "rta__list-header"
|
|
1054
1067
|
}, /*#__PURE__*/React__default['default'].createElement(SuggestionHeader, {
|
|
1068
|
+
currentTrigger: currentTrigger,
|
|
1055
1069
|
value: propValue
|
|
1056
1070
|
})), values.map(function (item, i) {
|
|
1057
1071
|
return /*#__PURE__*/React__default['default'].createElement(SuggestionItem, {
|
|
@@ -1065,7 +1079,8 @@ var List = function List(props) {
|
|
|
1065
1079
|
itemsRef[i] = _ref;
|
|
1066
1080
|
},
|
|
1067
1081
|
selected: isSelected(item),
|
|
1068
|
-
style: itemStyle
|
|
1082
|
+
style: itemStyle,
|
|
1083
|
+
value: propValue
|
|
1069
1084
|
});
|
|
1070
1085
|
}));
|
|
1071
1086
|
};
|
|
@@ -1141,6 +1156,54 @@ var UnMemoizedCommandItem = function (props) {
|
|
|
1141
1156
|
};
|
|
1142
1157
|
var CommandItem = React__default['default'].memo(UnMemoizedCommandItem);
|
|
1143
1158
|
|
|
1159
|
+
/**
|
|
1160
|
+
* A round avatar image with fallback to username's first letter
|
|
1161
|
+
*/
|
|
1162
|
+
var Avatar = function (props) {
|
|
1163
|
+
var image = props.image, name = props.name, _a = props.onClick, onClick = _a === void 0 ? function () { return undefined; } : _a, _b = props.onMouseOver, onMouseOver = _b === void 0 ? function () { return undefined; } : _b, _c = props.shape, shape = _c === void 0 ? 'circle' : _c, _d = props.size, size = _d === void 0 ? 32 : _d;
|
|
1164
|
+
var _e = React.useState(false), error = _e[0], setError = _e[1];
|
|
1165
|
+
var _f = React.useState(false), loaded = _f[0], setLoaded = _f[1];
|
|
1166
|
+
React.useEffect(function () {
|
|
1167
|
+
setError(false);
|
|
1168
|
+
setLoaded(false);
|
|
1169
|
+
}, [image]);
|
|
1170
|
+
var nameStr = (name === null || name === void 0 ? void 0 : name.toString()) || '';
|
|
1171
|
+
var initials = getWholeChar(nameStr, 0);
|
|
1172
|
+
return (React__default['default'].createElement("div", { className: "str-chat__avatar str-chat__avatar--" + shape, "data-testid": 'avatar', onClick: onClick, onMouseOver: onMouseOver, style: {
|
|
1173
|
+
flexBasis: size + "px",
|
|
1174
|
+
fontSize: size / 2 + "px",
|
|
1175
|
+
height: size + "px",
|
|
1176
|
+
lineHeight: size + "px",
|
|
1177
|
+
width: size + "px",
|
|
1178
|
+
}, title: name }, image && !error ? (React__default['default'].createElement("img", { alt: initials, className: "str-chat__avatar-image" + (loaded ? ' str-chat__avatar-image--loaded' : ''), "data-testid": 'avatar-img', onError: function () { return setError(true); }, onLoad: function () { return setLoaded(true); }, src: image, style: {
|
|
1179
|
+
flexBasis: size + "px",
|
|
1180
|
+
height: size + "px",
|
|
1181
|
+
objectFit: 'cover',
|
|
1182
|
+
width: size + "px",
|
|
1183
|
+
} })) : (React__default['default'].createElement("div", { className: 'str-chat__avatar-fallback', "data-testid": 'avatar-fallback' }, initials))));
|
|
1184
|
+
};
|
|
1185
|
+
|
|
1186
|
+
/**
|
|
1187
|
+
* UI component for mentions rendered in suggestion list
|
|
1188
|
+
*/
|
|
1189
|
+
var UnMemoizedUserItem = function (props) {
|
|
1190
|
+
var _a = props.Avatar, Avatar$1 = _a === void 0 ? Avatar : _a, entity = props.entity;
|
|
1191
|
+
var hasEntity = Object.keys(entity).length;
|
|
1192
|
+
var itemParts = entity === null || entity === void 0 ? void 0 : entity.itemNameParts;
|
|
1193
|
+
var renderName = function () {
|
|
1194
|
+
if (!hasEntity)
|
|
1195
|
+
return null;
|
|
1196
|
+
return (hasEntity &&
|
|
1197
|
+
itemParts.parts.map(function (part, i) {
|
|
1198
|
+
return part.toLowerCase() === itemParts.match.toLowerCase() ? (React__default['default'].createElement("span", { className: 'str-chat__emoji-item--highlight', key: "part-" + i }, part)) : (React__default['default'].createElement("span", { className: 'str-chat__emoji-item--part', key: "part-" + i }, part));
|
|
1199
|
+
}));
|
|
1200
|
+
};
|
|
1201
|
+
return (React__default['default'].createElement("div", { className: 'str-chat__user-item' },
|
|
1202
|
+
React__default['default'].createElement(Avatar$1, { image: entity.image, name: entity.name || entity.id, size: 20 }),
|
|
1203
|
+
React__default['default'].createElement("span", { className: 'str-chat__user-item--name', "data-testid": 'user-item-name' }, renderName())));
|
|
1204
|
+
};
|
|
1205
|
+
var UserItem = React__default['default'].memo(UnMemoizedUserItem);
|
|
1206
|
+
|
|
1144
1207
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
1145
1208
|
|
|
1146
1209
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
@@ -1277,13 +1340,15 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1277
1340
|
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_onSelect", function (newToken) {
|
|
1278
1341
|
var _this$props = _this.props,
|
|
1279
1342
|
closeCommandsList = _this$props.closeCommandsList,
|
|
1343
|
+
closeMentionsList = _this$props.closeMentionsList,
|
|
1280
1344
|
onChange = _this$props.onChange,
|
|
1281
|
-
showCommandsList = _this$props.showCommandsList
|
|
1345
|
+
showCommandsList = _this$props.showCommandsList,
|
|
1346
|
+
showMentionsList = _this$props.showMentionsList;
|
|
1282
1347
|
var _this$state = _this.state,
|
|
1283
1348
|
stateTrigger = _this$state.currentTrigger,
|
|
1284
1349
|
selectionEnd = _this$state.selectionEnd,
|
|
1285
1350
|
textareaValue = _this$state.value;
|
|
1286
|
-
var currentTrigger = showCommandsList ? '/' : stateTrigger;
|
|
1351
|
+
var currentTrigger = showCommandsList ? '/' : showMentionsList ? '@' : stateTrigger;
|
|
1287
1352
|
if (!currentTrigger) return;
|
|
1288
1353
|
|
|
1289
1354
|
var computeCaretPosition = function computeCaretPosition(position, token, startToken) {
|
|
@@ -1304,7 +1369,7 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1304
1369
|
}
|
|
1305
1370
|
};
|
|
1306
1371
|
|
|
1307
|
-
var textToModify = showCommandsList ? '/' : textareaValue.slice(0, selectionEnd);
|
|
1372
|
+
var textToModify = showCommandsList ? '/' : showMentionsList ? '@' : textareaValue.slice(0, selectionEnd);
|
|
1308
1373
|
var startOfTokenPosition = textToModify.lastIndexOf(currentTrigger); // we add space after emoji is selected if a caret position is next
|
|
1309
1374
|
|
|
1310
1375
|
var newTokenString = newToken.caretPosition === 'next' ? "".concat(newToken.text, " ") : newToken.text;
|
|
@@ -1330,7 +1395,8 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1330
1395
|
|
|
1331
1396
|
_this._closeAutocomplete();
|
|
1332
1397
|
|
|
1333
|
-
closeCommandsList();
|
|
1398
|
+
if (showCommandsList) closeCommandsList();
|
|
1399
|
+
if (showMentionsList) closeMentionsList();
|
|
1334
1400
|
});
|
|
1335
1401
|
|
|
1336
1402
|
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_getItemOnSelect", function (paramTrigger) {
|
|
@@ -1491,7 +1557,7 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1491
1557
|
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_cleanUpProps", function () {
|
|
1492
1558
|
var props = _objectSpread({}, _this.props);
|
|
1493
1559
|
|
|
1494
|
-
var notSafe = ['additionalTextareaProps', 'className', 'closeCommandsList', 'closeOnClickOutside', 'containerClassName', 'containerStyle', 'disableMentions', 'dropdownClassName', 'dropdownStyle', 'grow', 'handleSubmit', 'innerRef', 'itemClassName', 'itemStyle', 'keycodeSubmitKeys', 'listClassName', 'listStyle', 'loaderClassName', 'loaderStyle', 'loadingComponent', 'minChar', 'movePopupAsYouType', 'onCaretPositionChange', 'onChange', 'ref', 'replaceWord', 'scrollToItem', 'showCommandsList', 'SuggestionItem', 'SuggestionList', 'trigger', 'value']; // eslint-disable-next-line
|
|
1560
|
+
var notSafe = ['additionalTextareaProps', 'className', 'closeCommandsList', 'closeMentionsList', 'closeOnClickOutside', 'containerClassName', 'containerStyle', 'disableMentions', 'dropdownClassName', 'dropdownStyle', 'grow', 'handleSubmit', 'innerRef', 'itemClassName', 'itemStyle', 'keycodeSubmitKeys', 'listClassName', 'listStyle', 'loaderClassName', 'loaderStyle', 'loadingComponent', 'minChar', 'movePopupAsYouType', 'onCaretPositionChange', 'onChange', 'ref', 'replaceWord', 'scrollToItem', 'showCommandsList', 'showMentionsList', 'SuggestionItem', 'SuggestionList', 'trigger', 'value']; // eslint-disable-next-line
|
|
1495
1561
|
|
|
1496
1562
|
for (var prop in props) {
|
|
1497
1563
|
if (notSafe.includes(prop)) delete props[prop];
|
|
@@ -1648,6 +1714,7 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1648
1714
|
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "getTriggerProps", function () {
|
|
1649
1715
|
var _this$props5 = _this.props,
|
|
1650
1716
|
showCommandsList = _this$props5.showCommandsList,
|
|
1717
|
+
showMentionsList = _this$props5.showMentionsList,
|
|
1651
1718
|
trigger = _this$props5.trigger;
|
|
1652
1719
|
var _this$state6 = _this.state,
|
|
1653
1720
|
component = _this$state6.component,
|
|
@@ -1671,18 +1738,18 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1671
1738
|
values: suggestionData
|
|
1672
1739
|
};
|
|
1673
1740
|
|
|
1674
|
-
if (showCommandsList && trigger['/']) {
|
|
1741
|
+
if (showCommandsList && trigger['/'] || showMentionsList && trigger['@']) {
|
|
1675
1742
|
var currentCommands;
|
|
1676
|
-
var getCommands = trigger['/'].dataProvider;
|
|
1677
|
-
getCommands === null || getCommands === void 0 ? void 0 : getCommands('', '/', function (data) {
|
|
1743
|
+
var getCommands = trigger[showCommandsList ? '/' : '@'].dataProvider;
|
|
1744
|
+
getCommands === null || getCommands === void 0 ? void 0 : getCommands('', showCommandsList ? '/' : '@', function (data) {
|
|
1678
1745
|
currentCommands = data;
|
|
1679
1746
|
});
|
|
1680
|
-
triggerProps.component = CommandItem;
|
|
1681
|
-
triggerProps.currentTrigger = '/';
|
|
1682
|
-
triggerProps.getTextToReplace = _this._getTextToReplace('/');
|
|
1683
|
-
triggerProps.getSelectedItem = _this._getItemOnSelect('/');
|
|
1747
|
+
triggerProps.component = showCommandsList ? CommandItem : UserItem;
|
|
1748
|
+
triggerProps.currentTrigger = showCommandsList ? '/' : '@';
|
|
1749
|
+
triggerProps.getTextToReplace = _this._getTextToReplace(showCommandsList ? '/' : '@');
|
|
1750
|
+
triggerProps.getSelectedItem = _this._getItemOnSelect(showCommandsList ? '/' : '@');
|
|
1684
1751
|
triggerProps.selectionEnd = 1;
|
|
1685
|
-
triggerProps.value = '/';
|
|
1752
|
+
triggerProps.value = showCommandsList ? '/' : '@';
|
|
1686
1753
|
triggerProps.values = currentCommands;
|
|
1687
1754
|
}
|
|
1688
1755
|
|
|
@@ -1897,33 +1964,6 @@ ReactTextareaAutocomplete.propTypes = {
|
|
|
1897
1964
|
value: PropTypes__default['default'].string
|
|
1898
1965
|
};
|
|
1899
1966
|
|
|
1900
|
-
/**
|
|
1901
|
-
* A round avatar image with fallback to username's first letter
|
|
1902
|
-
*/
|
|
1903
|
-
var Avatar = function (props) {
|
|
1904
|
-
var image = props.image, name = props.name, _a = props.onClick, onClick = _a === void 0 ? function () { return undefined; } : _a, _b = props.onMouseOver, onMouseOver = _b === void 0 ? function () { return undefined; } : _b, _c = props.shape, shape = _c === void 0 ? 'circle' : _c, _d = props.size, size = _d === void 0 ? 32 : _d;
|
|
1905
|
-
var _e = React.useState(false), error = _e[0], setError = _e[1];
|
|
1906
|
-
var _f = React.useState(false), loaded = _f[0], setLoaded = _f[1];
|
|
1907
|
-
React.useEffect(function () {
|
|
1908
|
-
setError(false);
|
|
1909
|
-
setLoaded(false);
|
|
1910
|
-
}, [image]);
|
|
1911
|
-
var nameStr = (name === null || name === void 0 ? void 0 : name.toString()) || '';
|
|
1912
|
-
var initials = getWholeChar(nameStr, 0);
|
|
1913
|
-
return (React__default['default'].createElement("div", { className: "str-chat__avatar str-chat__avatar--" + shape, "data-testid": 'avatar', onClick: onClick, onMouseOver: onMouseOver, style: {
|
|
1914
|
-
flexBasis: size + "px",
|
|
1915
|
-
fontSize: size / 2 + "px",
|
|
1916
|
-
height: size + "px",
|
|
1917
|
-
lineHeight: size + "px",
|
|
1918
|
-
width: size + "px",
|
|
1919
|
-
}, title: name }, image && !error ? (React__default['default'].createElement("img", { alt: initials, className: "str-chat__avatar-image" + (loaded ? ' str-chat__avatar-image--loaded' : ''), "data-testid": 'avatar-img', onError: function () { return setError(true); }, onLoad: function () { return setLoaded(true); }, src: image, style: {
|
|
1920
|
-
flexBasis: size + "px",
|
|
1921
|
-
height: size + "px",
|
|
1922
|
-
objectFit: 'cover',
|
|
1923
|
-
width: size + "px",
|
|
1924
|
-
} })) : (React__default['default'].createElement("div", { className: 'str-chat__avatar-fallback', "data-testid": 'avatar-fallback' }, initials))));
|
|
1925
|
-
};
|
|
1926
|
-
|
|
1927
1967
|
var channelReducer = function (state, action) {
|
|
1928
1968
|
var _a;
|
|
1929
1969
|
switch (action.type) {
|
|
@@ -2028,7 +2068,7 @@ var getStrippedEmojiData = function (data) { return (__assign(__assign({}, data)
|
|
|
2028
2068
|
|
|
2029
2069
|
var useCreateChannelStateContext = function (value) {
|
|
2030
2070
|
var _a;
|
|
2031
|
-
var acceptedFiles = value.acceptedFiles, channel = value.channel, channelConfig = value.channelConfig, error = value.error, hasMore = value.hasMore, loading = value.loading, loadingMore = value.loadingMore, maxNumberOfFiles = value.maxNumberOfFiles, members = value.members,
|
|
2071
|
+
var acceptedFiles = value.acceptedFiles, channel = value.channel, _b = value.channelCapabilitiesArray, channelCapabilitiesArray = _b === void 0 ? [] : _b, channelConfig = value.channelConfig, dragAndDropWindow = value.dragAndDropWindow, error = value.error, hasMore = value.hasMore, loading = value.loading, loadingMore = value.loadingMore, maxNumberOfFiles = value.maxNumberOfFiles, members = value.members, _c = value.messages, messages = _c === void 0 ? [] : _c, multipleUploads = value.multipleUploads, mutes = value.mutes, notifications = value.notifications, pinnedMessages = value.pinnedMessages, quotedMessage = value.quotedMessage, _d = value.read, read = _d === void 0 ? {} : _d, skipMessageDataMemoization = value.skipMessageDataMemoization, thread = value.thread, threadHasMore = value.threadHasMore, threadLoadingMore = value.threadLoadingMore, _e = value.threadMessages, threadMessages = _e === void 0 ? [] : _e, watcherCount = value.watcherCount, watcher_count = value.watcher_count, watchers = value.watchers;
|
|
2032
2072
|
var channelId = channel.cid;
|
|
2033
2073
|
var lastRead = channel.initialized && ((_a = channel.lastRead()) === null || _a === void 0 ? void 0 : _a.getTime());
|
|
2034
2074
|
var membersLength = Object.keys(members || []).length;
|
|
@@ -2040,34 +2080,40 @@ var useCreateChannelStateContext = function (value) {
|
|
|
2040
2080
|
return last_read.toISOString();
|
|
2041
2081
|
}).join();
|
|
2042
2082
|
var threadMessagesLength = threadMessages === null || threadMessages === void 0 ? void 0 : threadMessages.length;
|
|
2083
|
+
var channelCapabilities = {};
|
|
2084
|
+
channelCapabilitiesArray.forEach(function (capability) {
|
|
2085
|
+
channelCapabilities[capability] = true;
|
|
2086
|
+
});
|
|
2043
2087
|
var memoizedMessageData = skipMessageDataMemoization
|
|
2044
2088
|
? messages
|
|
2045
2089
|
: messages
|
|
2046
2090
|
.map(function (_a) {
|
|
2047
|
-
var deleted_at = _a.deleted_at, latest_reactions = _a.latest_reactions, pinned = _a.pinned, reply_count = _a.reply_count, status = _a.status, updated_at = _a.updated_at;
|
|
2091
|
+
var deleted_at = _a.deleted_at, latest_reactions = _a.latest_reactions, pinned = _a.pinned, reply_count = _a.reply_count, status = _a.status, updated_at = _a.updated_at, user = _a.user;
|
|
2048
2092
|
return "" + deleted_at + (latest_reactions ? latest_reactions.map(function (_a) {
|
|
2049
2093
|
var type = _a.type;
|
|
2050
2094
|
return type;
|
|
2051
2095
|
}).join() : '') + pinned + reply_count + status + (updated_at && (isDayOrMoment(updated_at) || isDate(updated_at))
|
|
2052
2096
|
? updated_at.toISOString()
|
|
2053
|
-
: updated_at || '');
|
|
2097
|
+
: updated_at || '') + (user === null || user === void 0 ? void 0 : user.image) + (user === null || user === void 0 ? void 0 : user.name);
|
|
2054
2098
|
})
|
|
2055
2099
|
.join();
|
|
2056
2100
|
var memoizedThreadMessageData = threadMessages
|
|
2057
2101
|
.map(function (_a) {
|
|
2058
|
-
var deleted_at = _a.deleted_at, latest_reactions = _a.latest_reactions, pinned = _a.pinned, status = _a.status, updated_at = _a.updated_at;
|
|
2102
|
+
var deleted_at = _a.deleted_at, latest_reactions = _a.latest_reactions, pinned = _a.pinned, status = _a.status, updated_at = _a.updated_at, user = _a.user;
|
|
2059
2103
|
return "" + deleted_at + (latest_reactions ? latest_reactions.map(function (_a) {
|
|
2060
2104
|
var type = _a.type;
|
|
2061
2105
|
return type;
|
|
2062
2106
|
}).join() : '') + pinned + status + (updated_at && (isDayOrMoment(updated_at) || isDate(updated_at))
|
|
2063
2107
|
? updated_at.toISOString()
|
|
2064
|
-
: updated_at || '');
|
|
2108
|
+
: updated_at || '') + (user === null || user === void 0 ? void 0 : user.image) + (user === null || user === void 0 ? void 0 : user.name);
|
|
2065
2109
|
})
|
|
2066
2110
|
.join();
|
|
2067
2111
|
var channelStateContext = React.useMemo(function () { return ({
|
|
2068
2112
|
acceptedFiles: acceptedFiles,
|
|
2069
2113
|
channel: channel,
|
|
2114
|
+
channelCapabilities: channelCapabilities,
|
|
2070
2115
|
channelConfig: channelConfig,
|
|
2116
|
+
dragAndDropWindow: dragAndDropWindow,
|
|
2071
2117
|
error: error,
|
|
2072
2118
|
hasMore: hasMore,
|
|
2073
2119
|
loading: loading,
|
|
@@ -2121,12 +2167,19 @@ var useCreateTypingContext = function (value) {
|
|
|
2121
2167
|
return typingContext;
|
|
2122
2168
|
};
|
|
2123
2169
|
|
|
2124
|
-
var ChatContext = React__default['default'].createContext(
|
|
2170
|
+
var ChatContext = React__default['default'].createContext(undefined);
|
|
2125
2171
|
var ChatProvider = function (_a) {
|
|
2126
2172
|
var children = _a.children, value = _a.value;
|
|
2127
2173
|
return (React__default['default'].createElement(ChatContext.Provider, { value: value }, children));
|
|
2128
2174
|
};
|
|
2129
|
-
var useChatContext = function () {
|
|
2175
|
+
var useChatContext = function (componentName) {
|
|
2176
|
+
var contextValue = React.useContext(ChatContext);
|
|
2177
|
+
if (!contextValue) {
|
|
2178
|
+
console.warn("The useChatContext hook was called outside of the ChatContext provider. Make sure this hook is called within a child of the Chat component. The errored call is located in the " + componentName + " component.");
|
|
2179
|
+
return {};
|
|
2180
|
+
}
|
|
2181
|
+
return contextValue;
|
|
2182
|
+
};
|
|
2130
2183
|
/**
|
|
2131
2184
|
* Typescript currently does not support partial inference so if ChatContext
|
|
2132
2185
|
* typing is desired while using the HOC withChatContext the Props for the
|
|
@@ -2142,7 +2195,7 @@ var withChatContext = function (Component) {
|
|
|
2142
2195
|
};
|
|
2143
2196
|
|
|
2144
2197
|
var useEditMessageHandler = function (doUpdateMessageRequest) {
|
|
2145
|
-
var _a = useChatContext(), channel = _a.channel, client = _a.client;
|
|
2198
|
+
var _a = useChatContext('useEditMessageHandler'), channel = _a.channel, client = _a.client;
|
|
2146
2199
|
return function (updatedMessage) {
|
|
2147
2200
|
if (doUpdateMessageRequest && channel) {
|
|
2148
2201
|
return Promise.resolve(doUpdateMessageRequest(channel.cid, updatedMessage));
|
|
@@ -2203,7 +2256,7 @@ var LoadingChannels = React__default['default'].memo(UnMemoizedLoadingChannels);
|
|
|
2203
2256
|
*/
|
|
2204
2257
|
var UnMemoizedLoadingErrorIndicator = function (_a) {
|
|
2205
2258
|
var error = _a.error;
|
|
2206
|
-
var t = useTranslationContext().t;
|
|
2259
|
+
var t = useTranslationContext('LoadingErrorIndicator').t;
|
|
2207
2260
|
if (!error)
|
|
2208
2261
|
return null;
|
|
2209
2262
|
return React__default['default'].createElement("div", null, t('Error: {{ errorMessage }}', { errorMessage: error.message }));
|
|
@@ -2227,13 +2280,18 @@ var LoadingIndicator = React__default['default'].memo(UnMemoizedLoadingIndicator
|
|
|
2227
2280
|
return prevProps.color === nextProps.color && prevProps.size === nextProps.size;
|
|
2228
2281
|
});
|
|
2229
2282
|
|
|
2230
|
-
var ChannelStateContext = React__default['default'].createContext(
|
|
2283
|
+
var ChannelStateContext = React__default['default'].createContext(undefined);
|
|
2231
2284
|
var ChannelStateProvider = function (_a) {
|
|
2232
2285
|
var children = _a.children, value = _a.value;
|
|
2233
2286
|
return (React__default['default'].createElement(ChannelStateContext.Provider, { value: value }, children));
|
|
2234
2287
|
};
|
|
2235
|
-
var useChannelStateContext = function () {
|
|
2236
|
-
|
|
2288
|
+
var useChannelStateContext = function (componentName) {
|
|
2289
|
+
var contextValue = React.useContext(ChannelStateContext);
|
|
2290
|
+
if (!contextValue) {
|
|
2291
|
+
console.warn("The useChannelStateContext hook was called outside of the ChannelStateContext provider. Make sure this hook is called within a child of the Channel component. The errored call is located in the " + componentName + " component.");
|
|
2292
|
+
return {};
|
|
2293
|
+
}
|
|
2294
|
+
return contextValue;
|
|
2237
2295
|
};
|
|
2238
2296
|
/**
|
|
2239
2297
|
* Typescript currently does not support partial inference, so if ChannelStateContext
|
|
@@ -2253,21 +2311,23 @@ var withChannelStateContext = function (Component) {
|
|
|
2253
2311
|
|
|
2254
2312
|
var useUserRole = function (message, onlySenderCanEdit, disableQuotedMessages) {
|
|
2255
2313
|
var _a, _b, _c;
|
|
2256
|
-
var _d = useChannelStateContext(), channel = _d.channel, channelConfig = _d.channelConfig;
|
|
2257
|
-
var client = useChatContext().client;
|
|
2314
|
+
var _d = useChannelStateContext('useUserRole'), channel = _d.channel, _e = _d.channelCapabilities, channelCapabilities = _e === void 0 ? {} : _e, channelConfig = _d.channelConfig;
|
|
2315
|
+
var client = useChatContext('useUserRole').client;
|
|
2258
2316
|
var isAdmin = ((_a = client.user) === null || _a === void 0 ? void 0 : _a.role) === 'admin' || channel.state.membership.role === 'admin';
|
|
2259
2317
|
var isMyMessage = client.userID === ((_b = message.user) === null || _b === void 0 ? void 0 : _b.id);
|
|
2260
2318
|
var isOwner = channel.state.membership.role === 'owner';
|
|
2261
2319
|
var isModerator = ((_c = client.user) === null || _c === void 0 ? void 0 : _c.role) === 'channel_moderator' ||
|
|
2262
2320
|
channel.state.membership.role === 'channel_moderator' ||
|
|
2263
2321
|
channel.state.membership.role === 'moderator';
|
|
2264
|
-
var canEdit =
|
|
2265
|
-
|
|
2322
|
+
var canEdit = (!onlySenderCanEdit && channelCapabilities['update-any-message']) ||
|
|
2323
|
+
(isMyMessage && channelCapabilities['update-own-message']);
|
|
2324
|
+
var canDelete = channelCapabilities['delete-any-message'] ||
|
|
2325
|
+
(isMyMessage && channelCapabilities['delete-own-message']);
|
|
2266
2326
|
var canFlag = !isMyMessage;
|
|
2267
2327
|
var canMute = !isMyMessage && (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.mutes);
|
|
2268
2328
|
var canQuote = !disableQuotedMessages;
|
|
2269
|
-
var canReact = channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.reactions;
|
|
2270
|
-
var canReply = channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.replies;
|
|
2329
|
+
var canReact = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.reactions) !== false && channelCapabilities['send-reaction'];
|
|
2330
|
+
var canReply = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.replies) !== false && channelCapabilities['send-reply'];
|
|
2271
2331
|
return {
|
|
2272
2332
|
canDelete: canDelete,
|
|
2273
2333
|
canEdit: canEdit,
|
|
@@ -2285,7 +2345,7 @@ var useUserRole = function (message, onlySenderCanEdit, disableQuotedMessages) {
|
|
|
2285
2345
|
|
|
2286
2346
|
var MessageDeleted = function (props) {
|
|
2287
2347
|
var message = props.message;
|
|
2288
|
-
var t = useTranslationContext().t;
|
|
2348
|
+
var t = useTranslationContext('MessageDeleted').t;
|
|
2289
2349
|
var isMyMessage = useUserRole(message).isMyMessage;
|
|
2290
2350
|
var messageClasses = isMyMessage
|
|
2291
2351
|
? 'str-chat__message str-chat__message--me str-chat__message-simple str-chat__message-simple--me'
|
|
@@ -2364,6 +2424,7 @@ var MESSAGE_ACTIONS = {
|
|
|
2364
2424
|
react: 'react',
|
|
2365
2425
|
reply: 'reply',
|
|
2366
2426
|
};
|
|
2427
|
+
// @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
2367
2428
|
var defaultPinPermissions = {
|
|
2368
2429
|
commerce: {
|
|
2369
2430
|
admin: true,
|
|
@@ -2474,7 +2535,7 @@ var showMessageActionsBox = function (actions) {
|
|
|
2474
2535
|
return true;
|
|
2475
2536
|
};
|
|
2476
2537
|
var areMessagePropsEqual = function (prevProps, nextProps) {
|
|
2477
|
-
var _a, _b, _c, _d;
|
|
2538
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
2478
2539
|
var prevMessage = prevProps.message, prevMessageUI = prevProps.Message;
|
|
2479
2540
|
var nextMessage = nextProps.message, nextMessageUI = nextProps.Message;
|
|
2480
2541
|
if (prevMessageUI !== nextMessageUI)
|
|
@@ -2492,7 +2553,9 @@ var areMessagePropsEqual = function (prevProps, nextProps) {
|
|
|
2492
2553
|
prevMessage.status === nextMessage.status &&
|
|
2493
2554
|
prevMessage.text === nextMessage.text &&
|
|
2494
2555
|
prevMessage.type === nextMessage.type &&
|
|
2495
|
-
prevMessage.updated_at === nextMessage.updated_at
|
|
2556
|
+
prevMessage.updated_at === nextMessage.updated_at &&
|
|
2557
|
+
((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.image) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.image) &&
|
|
2558
|
+
((_g = prevMessage.user) === null || _g === void 0 ? void 0 : _g.name) === ((_h = nextMessage.user) === null || _h === void 0 ? void 0 : _h.name);
|
|
2496
2559
|
if (!messagesAreEqual)
|
|
2497
2560
|
return false;
|
|
2498
2561
|
var deepEqualProps = deepequal__default['default'](nextProps.readBy, prevProps.readBy) &&
|
|
@@ -2505,7 +2568,7 @@ var areMessagePropsEqual = function (prevProps, nextProps) {
|
|
|
2505
2568
|
);
|
|
2506
2569
|
};
|
|
2507
2570
|
var areMessageUIPropsEqual = function (prevProps, nextProps) {
|
|
2508
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
2571
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
2509
2572
|
var prevLastReceivedId = prevProps.lastReceivedId, prevMessage = prevProps.message;
|
|
2510
2573
|
var nextLastReceivedId = nextProps.lastReceivedId, nextMessage = nextProps.message;
|
|
2511
2574
|
if (prevProps.editing !== nextProps.editing)
|
|
@@ -2531,7 +2594,9 @@ var areMessageUIPropsEqual = function (prevProps, nextProps) {
|
|
|
2531
2594
|
prevMessage.status === nextMessage.status &&
|
|
2532
2595
|
prevMessage.text === nextMessage.text &&
|
|
2533
2596
|
prevMessage.type === nextMessage.type &&
|
|
2534
|
-
prevMessage.updated_at === nextMessage.updated_at
|
|
2597
|
+
prevMessage.updated_at === nextMessage.updated_at &&
|
|
2598
|
+
((_j = prevMessage.user) === null || _j === void 0 ? void 0 : _j.image) === ((_k = nextMessage.user) === null || _k === void 0 ? void 0 : _k.image) &&
|
|
2599
|
+
((_l = prevMessage.user) === null || _l === void 0 ? void 0 : _l.name) === ((_m = nextMessage.user) === null || _m === void 0 ? void 0 : _m.name);
|
|
2535
2600
|
if (!messagesAreEqual)
|
|
2536
2601
|
return false;
|
|
2537
2602
|
return true;
|
|
@@ -2593,13 +2658,18 @@ var getReadByTooltipText = function (users, t, client) {
|
|
|
2593
2658
|
return outStr;
|
|
2594
2659
|
};
|
|
2595
2660
|
|
|
2596
|
-
var ChannelActionContext = React__default['default'].createContext(
|
|
2661
|
+
var ChannelActionContext = React__default['default'].createContext(undefined);
|
|
2597
2662
|
var ChannelActionProvider = function (_a) {
|
|
2598
2663
|
var children = _a.children, value = _a.value;
|
|
2599
2664
|
return (React__default['default'].createElement(ChannelActionContext.Provider, { value: value }, children));
|
|
2600
2665
|
};
|
|
2601
|
-
var useChannelActionContext = function () {
|
|
2602
|
-
|
|
2666
|
+
var useChannelActionContext = function (componentName) {
|
|
2667
|
+
var contextValue = React.useContext(ChannelActionContext);
|
|
2668
|
+
if (!contextValue) {
|
|
2669
|
+
console.warn("The useChannelActionContext hook was called outside of the ChannelActionContext provider. Make sure this hook is called within a child of the Channel component. The errored call is located in the " + componentName + " component.");
|
|
2670
|
+
return {};
|
|
2671
|
+
}
|
|
2672
|
+
return contextValue;
|
|
2603
2673
|
};
|
|
2604
2674
|
/**
|
|
2605
2675
|
* Typescript currently does not support partial inference, so if ChannelActionContext
|
|
@@ -2617,12 +2687,19 @@ var withChannelActionContext = function (Component) {
|
|
|
2617
2687
|
return WithChannelActionContextComponent;
|
|
2618
2688
|
};
|
|
2619
2689
|
|
|
2620
|
-
var MessageContext = React__default['default'].createContext(
|
|
2690
|
+
var MessageContext = React__default['default'].createContext(undefined);
|
|
2621
2691
|
var MessageProvider = function (_a) {
|
|
2622
2692
|
var children = _a.children, value = _a.value;
|
|
2623
2693
|
return (React__default['default'].createElement(MessageContext.Provider, { value: value }, children));
|
|
2624
2694
|
};
|
|
2625
|
-
var useMessageContext = function () {
|
|
2695
|
+
var useMessageContext = function (componentName) {
|
|
2696
|
+
var contextValue = React.useContext(MessageContext);
|
|
2697
|
+
if (!contextValue) {
|
|
2698
|
+
console.warn("The useMessageContext hook was called outside of the MessageContext provider. Make sure this hook is called within the Message's UI component. The errored call is located in the " + componentName + " component.");
|
|
2699
|
+
return {};
|
|
2700
|
+
}
|
|
2701
|
+
return contextValue;
|
|
2702
|
+
};
|
|
2626
2703
|
/**
|
|
2627
2704
|
* Typescript currently does not support partial inference, so if MessageContext
|
|
2628
2705
|
* typing is desired while using the HOC withMessageContext, the Props for the
|
|
@@ -2650,9 +2727,9 @@ var CustomMessageActionsList = function (props) {
|
|
|
2650
2727
|
};
|
|
2651
2728
|
var UnMemoizedMessageActionsBox = function (props) {
|
|
2652
2729
|
var getMessageActions = props.getMessageActions, handleDelete = props.handleDelete, handleEdit = props.handleEdit, handleFlag = props.handleFlag, handleMute = props.handleMute, handlePin = props.handlePin, isUserMuted = props.isUserMuted, mine = props.mine, _a = props.open, open = _a === void 0 ? false : _a;
|
|
2653
|
-
var setQuotedMessage = useChannelActionContext().setQuotedMessage;
|
|
2654
|
-
var _b = useMessageContext(), customMessageActions = _b.customMessageActions, message = _b.message, messageListRect = _b.messageListRect;
|
|
2655
|
-
var t = useTranslationContext().t;
|
|
2730
|
+
var setQuotedMessage = useChannelActionContext('MessageActionsBox').setQuotedMessage;
|
|
2731
|
+
var _b = useMessageContext('MessageActionsBox'), customMessageActions = _b.customMessageActions, message = _b.message, messageListRect = _b.messageListRect;
|
|
2732
|
+
var t = useTranslationContext('MessageActionsBox').t;
|
|
2656
2733
|
var _c = React.useState(false), reverse = _c[0], setReverse = _c[1];
|
|
2657
2734
|
var messageActions = getMessageActions();
|
|
2658
2735
|
var checkIfReverse = React.useCallback(function (containerElement) {
|
|
@@ -2703,8 +2780,8 @@ var MessageActionsBox = React__default['default'].memo(UnMemoizedMessageActionsB
|
|
|
2703
2780
|
|
|
2704
2781
|
var MessageActions = function (props) {
|
|
2705
2782
|
var _a = props.ActionsIcon, ActionsIcon$1 = _a === void 0 ? ActionsIcon : _a, _b = props.customWrapperClass, customWrapperClass = _b === void 0 ? '' : _b, propGetMessageActions = props.getMessageActions, propHandleDelete = props.handleDelete, propHandleFlag = props.handleFlag, propHandleMute = props.handleMute, propHandlePin = props.handlePin, inline = props.inline, propMessage = props.message, messageWrapperRef = props.messageWrapperRef, mine = props.mine;
|
|
2706
|
-
var mutes = useChatContext().mutes;
|
|
2707
|
-
var _c = useMessageContext(), customMessageActions = _c.customMessageActions, contextGetMessageActions = _c.getMessageActions, contextHandleDelete = _c.handleDelete, contextHandleFlag = _c.handleFlag, contextHandleMute = _c.handleMute, contextHandlePin = _c.handlePin, isMyMessage = _c.isMyMessage, contextMessage = _c.message, setEditingState = _c.setEditingState;
|
|
2783
|
+
var mutes = useChatContext('MessageActions').mutes;
|
|
2784
|
+
var _c = useMessageContext('MessageActions'), customMessageActions = _c.customMessageActions, contextGetMessageActions = _c.getMessageActions, contextHandleDelete = _c.handleDelete, contextHandleFlag = _c.handleFlag, contextHandleMute = _c.handleMute, contextHandlePin = _c.handlePin, isMyMessage = _c.isMyMessage, contextMessage = _c.message, setEditingState = _c.setEditingState;
|
|
2708
2785
|
var getMessageActions = propGetMessageActions || contextGetMessageActions;
|
|
2709
2786
|
var handleDelete = propHandleDelete || contextHandleDelete;
|
|
2710
2787
|
var handleFlag = propHandleFlag || contextHandleFlag;
|
|
@@ -2761,7 +2838,7 @@ var MessageActionsWrapper = function (props) {
|
|
|
2761
2838
|
|
|
2762
2839
|
var UnMemoizedMessageOptions = function (props) {
|
|
2763
2840
|
var _a = props.ActionsIcon, ActionsIcon$1 = _a === void 0 ? ActionsIcon : _a, _b = props.displayLeft, displayLeft = _b === void 0 ? true : _b, _c = props.displayReplies, displayReplies = _c === void 0 ? true : _c, propHandleOpenThread = props.handleOpenThread, messageWrapperRef = props.messageWrapperRef, _d = props.ReactionIcon, ReactionIcon$1 = _d === void 0 ? ReactionIcon : _d, _e = props.theme, theme = _e === void 0 ? 'simple' : _e, _f = props.ThreadIcon, ThreadIcon$1 = _f === void 0 ? ThreadIcon : _f;
|
|
2764
|
-
var _g = useMessageContext(), customMessageActions = _g.customMessageActions, getMessageActions = _g.getMessageActions, contextHandleOpenThread = _g.handleOpenThread, initialMessage = _g.initialMessage, isMyMessage = _g.isMyMessage, message = _g.message, onReactionListClick = _g.onReactionListClick, threadList = _g.threadList;
|
|
2841
|
+
var _g = useMessageContext('MessageOptions'), customMessageActions = _g.customMessageActions, getMessageActions = _g.getMessageActions, contextHandleOpenThread = _g.handleOpenThread, initialMessage = _g.initialMessage, isMyMessage = _g.isMyMessage, message = _g.message, onReactionListClick = _g.onReactionListClick, threadList = _g.threadList;
|
|
2765
2842
|
var handleOpenThread = propHandleOpenThread || contextHandleOpenThread;
|
|
2766
2843
|
var messageActions = getMessageActions();
|
|
2767
2844
|
var showActionsBox = showMessageActionsBox(messageActions) || !!customMessageActions;
|
|
@@ -2795,7 +2872,7 @@ var MessageOptions = React__default['default'].memo(UnMemoizedMessageOptions);
|
|
|
2795
2872
|
|
|
2796
2873
|
var UnMemoizedMessageRepliesCountButton = function (props) {
|
|
2797
2874
|
var labelPlural = props.labelPlural, labelSingle = props.labelSingle, onClick = props.onClick, _a = props.reply_count, reply_count = _a === void 0 ? 0 : _a;
|
|
2798
|
-
var t = useTranslationContext().t;
|
|
2875
|
+
var t = useTranslationContext('MessageRepliesCountButton').t;
|
|
2799
2876
|
var singleReplyText;
|
|
2800
2877
|
var pluralReplyText;
|
|
2801
2878
|
if (reply_count === 1) {
|
|
@@ -2833,10 +2910,10 @@ var Tooltip = function (props) {
|
|
|
2833
2910
|
var UnMemoizedMessageStatus = function (props) {
|
|
2834
2911
|
var _a;
|
|
2835
2912
|
var propAvatar = props.Avatar, _b = props.messageType, messageType = _b === void 0 ? 'simple' : _b;
|
|
2836
|
-
var client = useChatContext().client;
|
|
2837
|
-
var contextAvatar = useComponentContext().Avatar;
|
|
2838
|
-
var _c = useMessageContext(), isMyMessage = _c.isMyMessage, lastReceivedId = _c.lastReceivedId, message = _c.message, readBy = _c.readBy, threadList = _c.threadList;
|
|
2839
|
-
var t = useTranslationContext().t;
|
|
2913
|
+
var client = useChatContext('MessageStatus').client;
|
|
2914
|
+
var contextAvatar = useComponentContext('MessageStatus').Avatar;
|
|
2915
|
+
var _c = useMessageContext('MessageStatus'), isMyMessage = _c.isMyMessage, lastReceivedId = _c.lastReceivedId, message = _c.message, readBy = _c.readBy, threadList = _c.threadList;
|
|
2916
|
+
var t = useTranslationContext('MessageStatus').t;
|
|
2840
2917
|
var Avatar$1 = propAvatar || contextAvatar || Avatar;
|
|
2841
2918
|
if (!isMyMessage() || message.type === 'error') {
|
|
2842
2919
|
return null;
|
|
@@ -2866,8 +2943,8 @@ var MessageStatus = React__default['default'].memo(UnMemoizedMessageStatus);
|
|
|
2866
2943
|
var handleActionWarning = "Action handler was called, but it is missing one of its required arguments. \nMake sure the ChannelAction and ChannelState contexts are properly set and the hook is initialized with a valid message.";
|
|
2867
2944
|
function useActionHandler(message) {
|
|
2868
2945
|
var _this = this;
|
|
2869
|
-
var _a = useChannelActionContext(), removeMessage = _a.removeMessage, updateMessage = _a.updateMessage;
|
|
2870
|
-
var channel = useChannelStateContext().channel;
|
|
2946
|
+
var _a = useChannelActionContext('useActionHandler'), removeMessage = _a.removeMessage, updateMessage = _a.updateMessage;
|
|
2947
|
+
var channel = useChannelStateContext('useActionHandler').channel;
|
|
2871
2948
|
return function (dataOrName, value, event) { return __awaiter(_this, void 0, void 0, function () {
|
|
2872
2949
|
var messageID, formData, data;
|
|
2873
2950
|
return __generator(this, function (_a) {
|
|
@@ -2925,9 +3002,9 @@ var useBreakpoint = function () {
|
|
|
2925
3002
|
var useDeleteHandler = function (message, notifications) {
|
|
2926
3003
|
if (notifications === void 0) { notifications = {}; }
|
|
2927
3004
|
var getErrorNotification = notifications.getErrorNotification, notify = notifications.notify;
|
|
2928
|
-
var updateMessage = useChannelActionContext().updateMessage;
|
|
2929
|
-
var client = useChatContext().client;
|
|
2930
|
-
var t = useTranslationContext().t;
|
|
3005
|
+
var updateMessage = useChannelActionContext('useDeleteHandler').updateMessage;
|
|
3006
|
+
var client = useChatContext('useDeleteHandler').client;
|
|
3007
|
+
var t = useTranslationContext('useDeleteHandler').t;
|
|
2931
3008
|
return function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
2932
3009
|
var data, errorMessage;
|
|
2933
3010
|
return __generator(this, function (_a) {
|
|
@@ -2980,8 +3057,8 @@ var useEditHandler = function (customInitialState, customSetEditing, customClear
|
|
|
2980
3057
|
var missingUseFlagHandlerParameterWarning = 'useFlagHandler was called but it is missing one or more necessary parameters.';
|
|
2981
3058
|
var useFlagHandler = function (message, notifications) {
|
|
2982
3059
|
if (notifications === void 0) { notifications = {}; }
|
|
2983
|
-
var client = useChatContext().client;
|
|
2984
|
-
var t = useTranslationContext().t;
|
|
3060
|
+
var client = useChatContext('useFlagHandler').client;
|
|
3061
|
+
var t = useTranslationContext('useFlagHandler').t;
|
|
2985
3062
|
return function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
2986
3063
|
var getErrorNotification, getSuccessNotification, notify, successMessage, errorMessage;
|
|
2987
3064
|
var _a;
|
|
@@ -3027,7 +3104,7 @@ function createEventHandler(fn, message) {
|
|
|
3027
3104
|
};
|
|
3028
3105
|
}
|
|
3029
3106
|
var useMentionsHandler = function (message, customMentionHandler) {
|
|
3030
|
-
var _a = useChannelActionContext(), contextOnMentionsClick = _a.onMentionsClick, contextOnMentionsHover = _a.onMentionsHover;
|
|
3107
|
+
var _a = useChannelActionContext('useMentionsHandler'), contextOnMentionsClick = _a.onMentionsClick, contextOnMentionsHover = _a.onMentionsHover;
|
|
3031
3108
|
var onMentionsClick = (customMentionHandler === null || customMentionHandler === void 0 ? void 0 : customMentionHandler.onMentionsClick) || contextOnMentionsClick || (function () { return null; });
|
|
3032
3109
|
var onMentionsHover = (customMentionHandler === null || customMentionHandler === void 0 ? void 0 : customMentionHandler.onMentionsHover) || contextOnMentionsHover || (function () { return null; });
|
|
3033
3110
|
return {
|
|
@@ -3071,9 +3148,9 @@ var useMobilePress = function () {
|
|
|
3071
3148
|
var missingUseMuteHandlerParamsWarning = 'useMuteHandler was called but it is missing one or more necessary parameter.';
|
|
3072
3149
|
var useMuteHandler = function (message, notifications) {
|
|
3073
3150
|
if (notifications === void 0) { notifications = {}; }
|
|
3074
|
-
var mutes = useChannelStateContext().mutes;
|
|
3075
|
-
var client = useChatContext().client;
|
|
3076
|
-
var t = useTranslationContext().t;
|
|
3151
|
+
var mutes = useChannelStateContext('useMuteHandler').mutes;
|
|
3152
|
+
var client = useChatContext('useMuteHandler').client;
|
|
3153
|
+
var t = useTranslationContext('useMuteHandler').t;
|
|
3077
3154
|
return function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3078
3155
|
var getErrorNotification, getSuccessNotification, notify, successMessage, errorMessage, fallbackMessage, successMessage, errorMessage;
|
|
3079
3156
|
return __generator(this, function (_a) {
|
|
@@ -3134,7 +3211,7 @@ var useMuteHandler = function (message, notifications) {
|
|
|
3134
3211
|
};
|
|
3135
3212
|
|
|
3136
3213
|
var useOpenThreadHandler = function (message, customOpenThread) {
|
|
3137
|
-
var channelOpenThread = useChannelActionContext().openThread;
|
|
3214
|
+
var channelOpenThread = useChannelActionContext('useOpenThreadHandler').openThread;
|
|
3138
3215
|
var openThread = customOpenThread || channelOpenThread;
|
|
3139
3216
|
return function (event) {
|
|
3140
3217
|
if (!openThread || !message) {
|
|
@@ -3145,25 +3222,17 @@ var useOpenThreadHandler = function (message, customOpenThread) {
|
|
|
3145
3222
|
};
|
|
3146
3223
|
};
|
|
3147
3224
|
|
|
3148
|
-
var usePinHandler = function (message,
|
|
3149
|
-
|
|
3225
|
+
var usePinHandler = function (message,
|
|
3226
|
+
// @ts-expect-error @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
3227
|
+
permissions, // eslint-disable-line
|
|
3228
|
+
notifications) {
|
|
3150
3229
|
if (notifications === void 0) { notifications = {}; }
|
|
3151
3230
|
var getErrorNotification = notifications.getErrorNotification, notify = notifications.notify;
|
|
3152
|
-
var updateMessage = useChannelActionContext().updateMessage;
|
|
3153
|
-
var
|
|
3154
|
-
var client = useChatContext().client;
|
|
3155
|
-
var t = useTranslationContext().t;
|
|
3156
|
-
var canPin =
|
|
3157
|
-
if (!channel || !permissions || !permissions[channel.type]) {
|
|
3158
|
-
return false;
|
|
3159
|
-
}
|
|
3160
|
-
var currentChannelPermissions = permissions[channel.type];
|
|
3161
|
-
var currentRole = channel.state.membership.role;
|
|
3162
|
-
if (currentChannelPermissions && currentRole && currentChannelPermissions[currentRole]) {
|
|
3163
|
-
return true;
|
|
3164
|
-
}
|
|
3165
|
-
return false;
|
|
3166
|
-
};
|
|
3231
|
+
var updateMessage = useChannelActionContext('usePinHandler').updateMessage;
|
|
3232
|
+
var _a = useChannelStateContext('usePinHandler').channelCapabilities, channelCapabilities = _a === void 0 ? {} : _a;
|
|
3233
|
+
var client = useChatContext('usePinHandler').client;
|
|
3234
|
+
var t = useTranslationContext('usePinHandler').t;
|
|
3235
|
+
var canPin = !!channelCapabilities['pin-message'];
|
|
3167
3236
|
var handlePin = function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3168
3237
|
var optimisticMessage, messageResponse, errorMessage, optimisticMessage, messageResponse, errorMessage;
|
|
3169
3238
|
return __generator(this, function (_a) {
|
|
@@ -3211,14 +3280,14 @@ var usePinHandler = function (message, permissions, notifications) {
|
|
|
3211
3280
|
}
|
|
3212
3281
|
});
|
|
3213
3282
|
}); };
|
|
3214
|
-
return { canPin: canPin
|
|
3283
|
+
return { canPin: canPin, handlePin: handlePin };
|
|
3215
3284
|
};
|
|
3216
3285
|
|
|
3217
3286
|
var reactionHandlerWarning = "Reaction handler was called, but it is missing one of its required arguments.\nMake sure the ChannelAction and ChannelState contexts are properly set and the hook is initialized with a valid message.";
|
|
3218
3287
|
var useReactionHandler = function (message) {
|
|
3219
|
-
var updateMessage = useChannelActionContext().updateMessage;
|
|
3220
|
-
var channel = useChannelStateContext().channel;
|
|
3221
|
-
var client = useChatContext().client;
|
|
3288
|
+
var updateMessage = useChannelActionContext('useReactionHandler').updateMessage;
|
|
3289
|
+
var channel = useChannelStateContext('useReactionHandler').channel;
|
|
3290
|
+
var client = useChatContext('useReactionHandler').client;
|
|
3222
3291
|
var createMessagePreview = React.useCallback(function (add, reaction, message) {
|
|
3223
3292
|
var _a, _b;
|
|
3224
3293
|
var newReactionCounts = (message === null || message === void 0 ? void 0 : message.reaction_counts) || {};
|
|
@@ -3253,32 +3322,33 @@ var useReactionHandler = function (message) {
|
|
|
3253
3322
|
};
|
|
3254
3323
|
var toggleReaction = throttle__default['default'](function (id, type, add) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3255
3324
|
var newReaction, tempMessage, messageResponse, _a;
|
|
3256
|
-
|
|
3257
|
-
|
|
3325
|
+
var _b;
|
|
3326
|
+
return __generator(this, function (_c) {
|
|
3327
|
+
switch (_c.label) {
|
|
3258
3328
|
case 0:
|
|
3259
|
-
if (!message)
|
|
3329
|
+
if (!message || ((_b = channel.data) === null || _b === void 0 ? void 0 : _b.frozen))
|
|
3260
3330
|
return [2 /*return*/];
|
|
3261
3331
|
newReaction = creatReactionPreview(type);
|
|
3262
3332
|
tempMessage = createMessagePreview(add, newReaction, message);
|
|
3263
|
-
|
|
3333
|
+
_c.label = 1;
|
|
3264
3334
|
case 1:
|
|
3265
|
-
|
|
3335
|
+
_c.trys.push([1, 6, , 7]);
|
|
3266
3336
|
updateMessage(tempMessage);
|
|
3267
3337
|
if (!add) return [3 /*break*/, 3];
|
|
3268
3338
|
return [4 /*yield*/, channel.sendReaction(id, { type: type })];
|
|
3269
3339
|
case 2:
|
|
3270
|
-
_a =
|
|
3340
|
+
_a = _c.sent();
|
|
3271
3341
|
return [3 /*break*/, 5];
|
|
3272
3342
|
case 3: return [4 /*yield*/, channel.deleteReaction(id, type)];
|
|
3273
3343
|
case 4:
|
|
3274
|
-
_a =
|
|
3275
|
-
|
|
3344
|
+
_a = _c.sent();
|
|
3345
|
+
_c.label = 5;
|
|
3276
3346
|
case 5:
|
|
3277
3347
|
messageResponse = _a;
|
|
3278
3348
|
updateMessage(messageResponse.message);
|
|
3279
3349
|
return [3 /*break*/, 7];
|
|
3280
3350
|
case 6:
|
|
3281
|
-
|
|
3351
|
+
_c.sent();
|
|
3282
3352
|
// revert to the original message if the API call fails
|
|
3283
3353
|
updateMessage(message);
|
|
3284
3354
|
return [3 /*break*/, 7];
|
|
@@ -3333,11 +3403,12 @@ var useReactionHandler = function (message) {
|
|
|
3333
3403
|
}); };
|
|
3334
3404
|
};
|
|
3335
3405
|
var useReactionClick = function (message, reactionSelectorRef, messageWrapperRef, closeReactionSelectorOnClick) {
|
|
3336
|
-
var _a
|
|
3337
|
-
var
|
|
3338
|
-
var
|
|
3406
|
+
var _a;
|
|
3407
|
+
var _b = useChannelStateContext('useReactionClick'), channel = _b.channel, _c = _b.channelCapabilities, channelCapabilities = _c === void 0 ? {} : _c, channelConfig = _b.channelConfig;
|
|
3408
|
+
var _d = React.useState(false), showDetailedReactions = _d[0], setShowDetailedReactions = _d[1];
|
|
3339
3409
|
var hasListener = React.useRef(false);
|
|
3340
|
-
var
|
|
3410
|
+
var isFrozen = !!((_a = channel.data) === null || _a === void 0 ? void 0 : _a.frozen);
|
|
3411
|
+
var isReactionEnabled = ((channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.reactions) !== false && channelCapabilities['send-reaction']) || isFrozen;
|
|
3341
3412
|
var messageDeleted = !!(message === null || message === void 0 ? void 0 : message.deleted_at);
|
|
3342
3413
|
var closeDetailedReactions = React.useCallback(function (event) {
|
|
3343
3414
|
var _a;
|
|
@@ -3398,7 +3469,7 @@ var useReactionClick = function (message, reactionSelectorRef, messageWrapperRef
|
|
|
3398
3469
|
};
|
|
3399
3470
|
|
|
3400
3471
|
var useRetryHandler = function (customRetrySendMessage) {
|
|
3401
|
-
var contextRetrySendMessage = useChannelActionContext().retrySendMessage;
|
|
3472
|
+
var contextRetrySendMessage = useChannelActionContext('useRetryHandler').retrySendMessage;
|
|
3402
3473
|
var retrySendMessage = customRetrySendMessage || contextRetrySendMessage;
|
|
3403
3474
|
return function (message) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3404
3475
|
return __generator(this, function (_a) {
|
|
@@ -3432,9 +3503,10 @@ var useUserHandler = function (message, eventHandlers) { return ({
|
|
|
3432
3503
|
|
|
3433
3504
|
var QuotedMessage = function () {
|
|
3434
3505
|
var _a, _b;
|
|
3435
|
-
var
|
|
3436
|
-
var
|
|
3437
|
-
var userLanguage = useTranslationContext().userLanguage;
|
|
3506
|
+
var _c = useComponentContext('QuotedMessage'), Attachment = _c.Attachment, ContextAvatar = _c.Avatar;
|
|
3507
|
+
var _d = useMessageContext('QuotedMessage'), isMyMessage = _d.isMyMessage, message = _d.message;
|
|
3508
|
+
var userLanguage = useTranslationContext('QuotedMessage').userLanguage;
|
|
3509
|
+
var Avatar$1 = ContextAvatar || Avatar;
|
|
3438
3510
|
var quoted_message = message.quoted_message;
|
|
3439
3511
|
if (!quoted_message)
|
|
3440
3512
|
return null;
|
|
@@ -3449,7 +3521,7 @@ var QuotedMessage = function () {
|
|
|
3449
3521
|
return null;
|
|
3450
3522
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
3451
3523
|
React__default['default'].createElement("div", { className: "" + (isMyMessage() ? 'quoted-message mine' : 'quoted-message') },
|
|
3452
|
-
quoted_message.user && (React__default['default'].createElement(Avatar, { image: quoted_message.user.image, name: quoted_message.user.name || quoted_message.user.id, size: 20, user: quoted_message.user })),
|
|
3524
|
+
quoted_message.user && (React__default['default'].createElement(Avatar$1, { image: quoted_message.user.image, name: quoted_message.user.name || quoted_message.user.id, size: 20, user: quoted_message.user })),
|
|
3453
3525
|
React__default['default'].createElement("div", { className: 'quoted-message-inner' },
|
|
3454
3526
|
quotedMessageAttachment && React__default['default'].createElement(Attachment, { attachments: [quotedMessageAttachment] }),
|
|
3455
3527
|
React__default['default'].createElement("div", null, quotedMessageText))),
|
|
@@ -3459,9 +3531,9 @@ var QuotedMessage = function () {
|
|
|
3459
3531
|
var UnMemoizedMessageTextComponent = function (props) {
|
|
3460
3532
|
var _a;
|
|
3461
3533
|
var customInnerClass = props.customInnerClass, _b = props.customWrapperClass, customWrapperClass = _b === void 0 ? '' : _b, propMessage = props.message, _c = props.theme, theme = _c === void 0 ? 'simple' : _c;
|
|
3462
|
-
var _d = useComponentContext().QuotedMessage, QuotedMessage$1 = _d === void 0 ? QuotedMessage : _d;
|
|
3463
|
-
var _e = useMessageContext(), contextMessage = _e.message, onMentionsClickMessage = _e.onMentionsClickMessage, onMentionsHoverMessage = _e.onMentionsHoverMessage, _f = _e.renderText, renderText$1 = _f === void 0 ? renderText : _f, unsafeHTML = _e.unsafeHTML;
|
|
3464
|
-
var _g = useTranslationContext(), t = _g.t, userLanguage = _g.userLanguage;
|
|
3534
|
+
var _d = useComponentContext('MessageText').QuotedMessage, QuotedMessage$1 = _d === void 0 ? QuotedMessage : _d;
|
|
3535
|
+
var _e = useMessageContext('MessageText'), contextMessage = _e.message, onMentionsClickMessage = _e.onMentionsClickMessage, onMentionsHoverMessage = _e.onMentionsHoverMessage, _f = _e.renderText, renderText$1 = _f === void 0 ? renderText : _f, unsafeHTML = _e.unsafeHTML;
|
|
3536
|
+
var _g = useTranslationContext('MessageText'), t = _g.t, userLanguage = _g.userLanguage;
|
|
3465
3537
|
var handleMobilePress = useMobilePress().handleMobilePress;
|
|
3466
3538
|
var message = propMessage || contextMessage;
|
|
3467
3539
|
var hasAttachment = messageHasAttachments(message);
|
|
@@ -3520,8 +3592,8 @@ function getDateString(messageCreatedAt, formatDate, calendar, tDateTimeParser,
|
|
|
3520
3592
|
}
|
|
3521
3593
|
var UnMemoizedMessageTimestamp = function (props) {
|
|
3522
3594
|
var _a = props.calendar, calendar = _a === void 0 ? false : _a, _b = props.customClass, customClass = _b === void 0 ? '' : _b, _c = props.format, format = _c === void 0 ? defaultTimestampFormat : _c, propMessage = props.message;
|
|
3523
|
-
var _d = useMessageContext(), formatDate = _d.formatDate, contextMessage = _d.message;
|
|
3524
|
-
var tDateTimeParser = useTranslationContext().tDateTimeParser;
|
|
3595
|
+
var _d = useMessageContext('MessageTimestamp'), formatDate = _d.formatDate, contextMessage = _d.message;
|
|
3596
|
+
var tDateTimeParser = useTranslationContext('MessageTimestamp').tDateTimeParser;
|
|
3525
3597
|
var message = propMessage || contextMessage;
|
|
3526
3598
|
var createdAt = message.created_at;
|
|
3527
3599
|
var when = React.useMemo(function () { return getDateString(createdAt, formatDate, calendar, tDateTimeParser, format); }, [formatDate, calendar, tDateTimeParser, format, createdAt]);
|
|
@@ -3532,9 +3604,8 @@ var UnMemoizedMessageTimestamp = function (props) {
|
|
|
3532
3604
|
var MessageTimestamp = React__default['default'].memo(UnMemoizedMessageTimestamp);
|
|
3533
3605
|
|
|
3534
3606
|
var useCommandTrigger = function () {
|
|
3535
|
-
var
|
|
3536
|
-
var
|
|
3537
|
-
var commands = (_b = (_a = channel === null || channel === void 0 ? void 0 : channel.getConfig) === null || _a === void 0 ? void 0 : _a.call(channel)) === null || _b === void 0 ? void 0 : _b.commands;
|
|
3607
|
+
var channelConfig = useChannelStateContext('useCommandTrigger').channelConfig;
|
|
3608
|
+
var commands = channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.commands;
|
|
3538
3609
|
return {
|
|
3539
3610
|
component: CommandItem,
|
|
3540
3611
|
dataProvider: function (query, text, onReady) {
|
|
@@ -3621,7 +3692,7 @@ var accentsMap = {
|
|
|
3621
3692
|
e: 'é|è|ê|É|È|Ê',
|
|
3622
3693
|
i: 'í|ì|î|Í|Ì|Î',
|
|
3623
3694
|
n: 'ñ|Ñ',
|
|
3624
|
-
o: '
|
|
3695
|
+
o: 'ó|ò|ô|ő|õ|Ó|Ò|Ô|Õ',
|
|
3625
3696
|
u: 'ú|ù|û|ü|Ú|Ù|Û|Ü',
|
|
3626
3697
|
};
|
|
3627
3698
|
var removeDiacritics = function (text) {
|
|
@@ -3658,7 +3729,7 @@ var calculateLevenshtein = function (query, name) {
|
|
|
3658
3729
|
return matrix[name.length][query.length];
|
|
3659
3730
|
};
|
|
3660
3731
|
var searchLocalUsers = function (params) {
|
|
3661
|
-
var ownUserId = params.ownUserId, query = params.query, useMentionsTransliteration = params.useMentionsTransliteration, users = params.users;
|
|
3732
|
+
var ownUserId = params.ownUserId, query = params.query, text = params.text, useMentionsTransliteration = params.useMentionsTransliteration, users = params.users;
|
|
3662
3733
|
var matchingUsers = users.filter(function (user) {
|
|
3663
3734
|
if (user.id === ownUserId)
|
|
3664
3735
|
return false;
|
|
@@ -3683,43 +3754,78 @@ var searchLocalUsers = function (params) {
|
|
|
3683
3754
|
});
|
|
3684
3755
|
}); })();
|
|
3685
3756
|
}
|
|
3757
|
+
var maxDistance = 3;
|
|
3758
|
+
var lastDigits = text.slice(-(maxDistance + 1)).includes('@');
|
|
3686
3759
|
if (updatedName) {
|
|
3687
3760
|
var levenshtein_1 = calculateLevenshtein(updatedQuery, updatedName);
|
|
3688
|
-
if (updatedName.includes(updatedQuery) || levenshtein_1 <=
|
|
3761
|
+
if (updatedName.includes(updatedQuery) || (levenshtein_1 <= maxDistance && lastDigits)) {
|
|
3689
3762
|
return true;
|
|
3763
|
+
}
|
|
3690
3764
|
}
|
|
3691
3765
|
var levenshtein = calculateLevenshtein(updatedQuery, updatedId);
|
|
3692
|
-
return updatedId.includes(updatedQuery) || levenshtein <=
|
|
3766
|
+
return updatedId.includes(updatedQuery) || (levenshtein <= maxDistance && lastDigits);
|
|
3693
3767
|
});
|
|
3694
3768
|
return matchingUsers;
|
|
3695
3769
|
};
|
|
3696
|
-
|
|
3697
|
-
|
|
3698
|
-
|
|
3699
|
-
|
|
3700
|
-
|
|
3701
|
-
|
|
3702
|
-
|
|
3703
|
-
|
|
3704
|
-
|
|
3705
|
-
|
|
3706
|
-
|
|
3707
|
-
|
|
3708
|
-
|
|
3709
|
-
|
|
3710
|
-
|
|
3711
|
-
|
|
3712
|
-
|
|
3713
|
-
|
|
3714
|
-
|
|
3715
|
-
|
|
3716
|
-
|
|
3770
|
+
var checkUploadPermissions = function (params) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3771
|
+
var addNotification, file, getAppSettings, t, uploadType, appSettings, _a, allowed_file_extensions, allowed_mime_types, blocked_file_extensions, blocked_mime_types, sendErrorNotification, allowed, blocked, allowed, blocked;
|
|
3772
|
+
var _b, _c;
|
|
3773
|
+
return __generator(this, function (_d) {
|
|
3774
|
+
switch (_d.label) {
|
|
3775
|
+
case 0:
|
|
3776
|
+
addNotification = params.addNotification, file = params.file, getAppSettings = params.getAppSettings, t = params.t, uploadType = params.uploadType;
|
|
3777
|
+
appSettings = null;
|
|
3778
|
+
return [4 /*yield*/, getAppSettings()];
|
|
3779
|
+
case 1:
|
|
3780
|
+
appSettings = _d.sent();
|
|
3781
|
+
_a = (uploadType === 'image'
|
|
3782
|
+
? (_b = appSettings === null || appSettings === void 0 ? void 0 : appSettings.app) === null || _b === void 0 ? void 0 : _b.image_upload_config
|
|
3783
|
+
: (_c = appSettings === null || appSettings === void 0 ? void 0 : appSettings.app) === null || _c === void 0 ? void 0 : _c.file_upload_config) || {}, allowed_file_extensions = _a.allowed_file_extensions, allowed_mime_types = _a.allowed_mime_types, blocked_file_extensions = _a.blocked_file_extensions, blocked_mime_types = _a.blocked_mime_types;
|
|
3784
|
+
sendErrorNotification = function () {
|
|
3785
|
+
return addNotification(t("Upload type: \"{{ type }}\" is not allowed", { type: file.type || 'unknown type' }), 'error');
|
|
3786
|
+
};
|
|
3787
|
+
if (allowed_file_extensions === null || allowed_file_extensions === void 0 ? void 0 : allowed_file_extensions.length) {
|
|
3788
|
+
allowed = allowed_file_extensions.some(function (ext) {
|
|
3789
|
+
return file.name.toLowerCase().endsWith(ext.toLowerCase());
|
|
3790
|
+
});
|
|
3791
|
+
if (!allowed) {
|
|
3792
|
+
sendErrorNotification();
|
|
3793
|
+
return [2 /*return*/, false];
|
|
3794
|
+
}
|
|
3795
|
+
}
|
|
3796
|
+
if (blocked_file_extensions === null || blocked_file_extensions === void 0 ? void 0 : blocked_file_extensions.length) {
|
|
3797
|
+
blocked = blocked_file_extensions.some(function (ext) {
|
|
3798
|
+
return file.name.toLowerCase().endsWith(ext.toLowerCase());
|
|
3799
|
+
});
|
|
3800
|
+
if (blocked) {
|
|
3801
|
+
sendErrorNotification();
|
|
3802
|
+
return [2 /*return*/, false];
|
|
3803
|
+
}
|
|
3804
|
+
}
|
|
3805
|
+
if (allowed_mime_types === null || allowed_mime_types === void 0 ? void 0 : allowed_mime_types.length) {
|
|
3806
|
+
allowed = allowed_mime_types.some(function (type) { var _a; return type.toLowerCase() === ((_a = file.type) === null || _a === void 0 ? void 0 : _a.toLowerCase()); });
|
|
3807
|
+
if (!allowed) {
|
|
3808
|
+
sendErrorNotification();
|
|
3809
|
+
return [2 /*return*/, false];
|
|
3810
|
+
}
|
|
3811
|
+
}
|
|
3812
|
+
if (blocked_mime_types === null || blocked_mime_types === void 0 ? void 0 : blocked_mime_types.length) {
|
|
3813
|
+
blocked = blocked_mime_types.some(function (type) { var _a; return type.toLowerCase() === ((_a = file.type) === null || _a === void 0 ? void 0 : _a.toLowerCase()); });
|
|
3814
|
+
if (blocked) {
|
|
3815
|
+
sendErrorNotification();
|
|
3816
|
+
return [2 /*return*/, false];
|
|
3817
|
+
}
|
|
3818
|
+
}
|
|
3819
|
+
return [2 /*return*/, true];
|
|
3820
|
+
}
|
|
3821
|
+
});
|
|
3822
|
+
}); };
|
|
3717
3823
|
|
|
3718
3824
|
var useUserTrigger = function (params) {
|
|
3719
3825
|
var disableMentions = params.disableMentions, mentionAllAppUsers = params.mentionAllAppUsers, _a = params.mentionQueryParams, mentionQueryParams = _a === void 0 ? {} : _a, onSelectUser = params.onSelectUser, useMentionsTransliteration = params.useMentionsTransliteration;
|
|
3720
3826
|
var _b = React.useState(false), searching = _b[0], setSearching = _b[1];
|
|
3721
|
-
var _c = useChatContext(), client = _c.client, mutes = _c.mutes;
|
|
3722
|
-
var channel = useChannelStateContext().channel;
|
|
3827
|
+
var _c = useChatContext('useUserTrigger'), client = _c.client, mutes = _c.mutes;
|
|
3828
|
+
var channel = useChannelStateContext('useUserTrigger').channel;
|
|
3723
3829
|
var members = channel.state.members;
|
|
3724
3830
|
var watchers = channel.state.watchers;
|
|
3725
3831
|
var getMembersAndWatchers = React.useCallback(function () {
|
|
@@ -3834,6 +3940,7 @@ var useUserTrigger = function (params) {
|
|
|
3834
3940
|
var params_1 = {
|
|
3835
3941
|
ownUserId: client.userID,
|
|
3836
3942
|
query: query,
|
|
3943
|
+
text: text,
|
|
3837
3944
|
useMentionsTransliteration: useMentionsTransliteration,
|
|
3838
3945
|
users: users,
|
|
3839
3946
|
};
|
|
@@ -3862,20 +3969,18 @@ var MessageInputContextProvider = function (_a) {
|
|
|
3862
3969
|
var children = _a.children, value = _a.value;
|
|
3863
3970
|
return (React__default['default'].createElement(MessageInputContext.Provider, { value: value }, children));
|
|
3864
3971
|
};
|
|
3865
|
-
|
|
3866
|
-
* hook for MessageInput context
|
|
3867
|
-
*/
|
|
3868
|
-
var useMessageInputContext = function () {
|
|
3972
|
+
var useMessageInputContext = function (componentName) {
|
|
3869
3973
|
var contextValue = React.useContext(MessageInputContext);
|
|
3870
|
-
if (contextValue
|
|
3871
|
-
console.warn(
|
|
3974
|
+
if (!contextValue) {
|
|
3975
|
+
console.warn("The useMessageInputContext hook was called outside of the MessageInputContext provider. Make sure this hook is called within the MessageInput's UI component. The errored call is located in the " + componentName + " component.");
|
|
3976
|
+
return {};
|
|
3872
3977
|
}
|
|
3873
3978
|
return contextValue;
|
|
3874
3979
|
};
|
|
3875
3980
|
|
|
3876
3981
|
var DefaultTriggerProvider = function (_a) {
|
|
3877
3982
|
var children = _a.children;
|
|
3878
|
-
var currentValue = useMessageInputContext();
|
|
3983
|
+
var currentValue = useMessageInputContext('DefaultTriggerProvider');
|
|
3879
3984
|
var defaultAutocompleteTriggers = {
|
|
3880
3985
|
'/': useCommandTrigger(),
|
|
3881
3986
|
':': useEmojiTrigger(currentValue.emojiIndex),
|
|
@@ -3913,7 +4018,7 @@ var DefaultEmojiPicker = React__default['default'].lazy(function () { return __a
|
|
|
3913
4018
|
}
|
|
3914
4019
|
});
|
|
3915
4020
|
}); });
|
|
3916
|
-
var EmojiContext = React__default['default'].createContext(
|
|
4021
|
+
var EmojiContext = React__default['default'].createContext(undefined);
|
|
3917
4022
|
var EmojiProvider = function (_a) {
|
|
3918
4023
|
var children = _a.children, value = _a.value;
|
|
3919
4024
|
var _b = value.Emoji, Emoji = _b === void 0 ? DefaultEmoji : _b, emojiConfig = value.emojiConfig, _c = value.EmojiIndex, EmojiIndex = _c === void 0 ? DefaultEmojiIndex__default['default'] : _c, _d = value.EmojiPicker, EmojiPicker = _d === void 0 ? DefaultEmojiPicker : _d;
|
|
@@ -3925,8 +4030,13 @@ var EmojiProvider = function (_a) {
|
|
|
3925
4030
|
};
|
|
3926
4031
|
return React__default['default'].createElement(EmojiContext.Provider, { value: emojiContextValue }, children);
|
|
3927
4032
|
};
|
|
3928
|
-
var useEmojiContext = function () {
|
|
3929
|
-
|
|
4033
|
+
var useEmojiContext = function (componentName) {
|
|
4034
|
+
var contextValue = React.useContext(EmojiContext);
|
|
4035
|
+
if (!contextValue) {
|
|
4036
|
+
console.warn("The useEmojiContext hook was called outside of the EmojiContext provider. Make sure this hook is called within a child of the Channel component. The errored call is located in the " + componentName + " component.");
|
|
4037
|
+
return {};
|
|
4038
|
+
}
|
|
4039
|
+
return contextValue;
|
|
3930
4040
|
};
|
|
3931
4041
|
/**
|
|
3932
4042
|
* Typescript currently does not support partial inference, so if EmojiContext
|
|
@@ -3952,9 +4062,9 @@ var filterEmoji = function (emoji) {
|
|
|
3952
4062
|
};
|
|
3953
4063
|
var EmojiPicker = function (props) {
|
|
3954
4064
|
var small = props.small;
|
|
3955
|
-
var _a = useEmojiContext(), emojiConfig = _a.emojiConfig, EmojiPickerComponent = _a.EmojiPicker;
|
|
3956
|
-
var t = useTranslationContext().t;
|
|
3957
|
-
var messageInput = useMessageInputContext();
|
|
4065
|
+
var _a = useEmojiContext('EmojiPicker'), emojiConfig = _a.emojiConfig, EmojiPickerComponent = _a.EmojiPicker;
|
|
4066
|
+
var t = useTranslationContext('EmojiPicker').t;
|
|
4067
|
+
var messageInput = useMessageInputContext('EmojiPicker');
|
|
3958
4068
|
var emojiData = (emojiConfig || {}).emojiData;
|
|
3959
4069
|
if (messageInput.emojiPickerIsOpen && emojiData) {
|
|
3960
4070
|
var className = small
|
|
@@ -3968,34 +4078,34 @@ var EmojiPicker = function (props) {
|
|
|
3968
4078
|
};
|
|
3969
4079
|
|
|
3970
4080
|
var EmojiIconLarge = function () {
|
|
3971
|
-
var t = useTranslationContext().t;
|
|
4081
|
+
var t = useTranslationContext('EmojiIconLarge').t;
|
|
3972
4082
|
return (React__default['default'].createElement("svg", { height: '28', width: '28', xmlns: 'http://www.w3.org/2000/svg' },
|
|
3973
4083
|
React__default['default'].createElement("title", null, t('Open emoji picker')),
|
|
3974
4084
|
React__default['default'].createElement("g", { clipRule: 'evenodd', fillRule: 'evenodd' },
|
|
3975
4085
|
React__default['default'].createElement("path", { d: 'M14 4.4C8.6 4.4 4.4 8.6 4.4 14c0 5.4 4.2 9.6 9.6 9.6c5.4 0 9.6-4.2 9.6-9.6c0-5.4-4.2-9.6-9.6-9.6zM2 14c0-6.6 5.4-12 12-12s12 5.4 12 12s-5.4 12-12 12s-12-5.4-12-12zM12.8 11c0 1-.8 1.8-1.8 1.8s-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8s1.8.8 1.8 1.8zM18.8 11c0 1-.8 1.8-1.8 1.8s-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8s1.8.8 1.8 1.8zM8.6 15.4c.6-.4 1.2-.2 1.6.2c.6.8 1.6 1.8 3 2c1.2.4 2.8.2 4.8-2c.4-.4 1.2-.6 1.6 0c.4.4.6 1.2 0 1.6c-2.2 2.6-4.8 3.4-7 3c-2-.4-3.6-1.8-4.4-3c-.4-.6-.2-1.2.4-1.8z' }))));
|
|
3976
4086
|
};
|
|
3977
4087
|
var EmojiIconSmall = function () {
|
|
3978
|
-
var t = useTranslationContext().t;
|
|
4088
|
+
var t = useTranslationContext('EmojiIconSmall').t;
|
|
3979
4089
|
return (React__default['default'].createElement("svg", { height: '14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
|
|
3980
4090
|
React__default['default'].createElement("title", null, t('Open emoji picker')),
|
|
3981
4091
|
React__default['default'].createElement("g", { clipRule: 'evenodd', fillRule: 'evenodd' },
|
|
3982
4092
|
React__default['default'].createElement("path", { d: 'M6.7 1.42C3.73 1.42 1.42 3.73 1.42 6.7c0 2.97 2.31 5.28 5.28 5.28c2.97 0 5.28-2.31 5.28-5.28c0-2.97-2.31-5.28-5.28-5.28zM.1 6.7c0-3.63 2.97-6.6 6.6-6.6s6.6 2.97 6.6 6.6s-2.97 6.6-6.6 6.6s-6.6-2.97-6.6-6.6zM6.04 5.05c0 .55-.44.99-.99.99s-.99-.44-.99-.99s.44-.99.99-.99s.99.44.99.99zM9.34 5.05c0 .55-.44.99-.99.99s-.99-.44-.99-.99s.44-.99.99-.99s.99.44.99.99zM3.73 7.47c.33-.22.66-.11.88.11c.33.44.88.99 1.65 1.1c.66.22 1.54.11 2.64-1.1c.22-.22.66-.33.88 0c.22.22.33.66 0 .88c-1.21 1.43-2.64 1.87-3.85 1.65c-1.1-.22-1.98-.99-2.42-1.65c-.22-.33-.11-.66.22-.99z' }))));
|
|
3983
4093
|
};
|
|
3984
4094
|
var FileUploadIcon = function () {
|
|
3985
|
-
var t = useTranslationContext().t;
|
|
4095
|
+
var t = useTranslationContext('FileUploadIcon').t;
|
|
3986
4096
|
return (React__default['default'].createElement("svg", { height: '14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
|
|
3987
4097
|
React__default['default'].createElement("title", null, t('Attach files')),
|
|
3988
4098
|
React__default['default'].createElement("path", { d: 'M7 .5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5S.5 10.59.5 7 3.41.5 7 .5zm0 12c3.031 0 5.5-2.469 5.5-5.5S10.031 1.5 7 1.5A5.506 5.506 0 0 0 1.5 7c0 3.034 2.469 5.5 5.5 5.5zM7.506 3v3.494H11v1.05H7.506V11h-1.05V7.544H3v-1.05h3.456V3h1.05z', fillRule: 'nonzero' })));
|
|
3989
4099
|
};
|
|
3990
4100
|
var FileUploadIconFlat = function () {
|
|
3991
|
-
var t = useTranslationContext().t;
|
|
4101
|
+
var t = useTranslationContext('FileUploadIconFlat').t;
|
|
3992
4102
|
return (React__default['default'].createElement("svg", { height: '14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
|
|
3993
4103
|
React__default['default'].createElement("title", null, t('Attach files')),
|
|
3994
4104
|
React__default['default'].createElement("path", { d: 'M1.667.333h10.666c.737 0 1.334.597 1.334 1.334v10.666c0 .737-.597 1.334-1.334 1.334H1.667a1.333 1.333 0 0 1-1.334-1.334V1.667C.333.93.93.333 1.667.333zm2 1.334a1.667 1.667 0 1 0 0 3.333 1.667 1.667 0 0 0 0-3.333zm-2 9.333v1.333h10.666v-4l-2-2-4 4-2-2L1.667 11z', fillRule: 'nonzero' })));
|
|
3995
4105
|
};
|
|
3996
4106
|
var SendButton = function (_a) {
|
|
3997
4107
|
var sendMessage = _a.sendMessage;
|
|
3998
|
-
var t = useTranslationContext().t;
|
|
4108
|
+
var t = useTranslationContext('SendButton').t;
|
|
3999
4109
|
return (React__default['default'].createElement("button", { className: 'str-chat__send-button', onClick: sendMessage },
|
|
4000
4110
|
React__default['default'].createElement("svg", { height: '17', viewBox: '0 0 18 17', width: '18', xmlns: 'http://www.w3.org/2000/svg' },
|
|
4001
4111
|
React__default['default'].createElement("title", null, t('Send')),
|
|
@@ -4003,8 +4113,8 @@ var SendButton = function (_a) {
|
|
|
4003
4113
|
};
|
|
4004
4114
|
|
|
4005
4115
|
var UploadsPreview = function () {
|
|
4006
|
-
var _a = useChannelStateContext(), maxNumberOfFiles = _a.maxNumberOfFiles, multipleUploads = _a.multipleUploads;
|
|
4007
|
-
var messageInput = useMessageInputContext();
|
|
4116
|
+
var _a = useChannelStateContext('UploadsPreview'), maxNumberOfFiles = _a.maxNumberOfFiles, multipleUploads = _a.multipleUploads;
|
|
4117
|
+
var messageInput = useMessageInputContext('UploadsPreview');
|
|
4008
4118
|
var fileOrder = messageInput.fileOrder, fileUploads = messageInput.fileUploads, imageOrder = messageInput.imageOrder, imageUploads = messageInput.imageUploads, numberOfUploads = messageInput.numberOfUploads, removeFile = messageInput.removeFile, removeImage = messageInput.removeImage, text = messageInput.text, uploadFile = messageInput.uploadFile, uploadImage = messageInput.uploadImage, uploadNewFiles = messageInput.uploadNewFiles;
|
|
4009
4119
|
var imagesToPreview = imageOrder.map(function (id) { return imageUploads[id]; });
|
|
4010
4120
|
var filesToPreview = fileOrder.map(function (id) { return fileUploads[id]; });
|
|
@@ -4027,9 +4137,9 @@ var UploadsPreview = function () {
|
|
|
4027
4137
|
};
|
|
4028
4138
|
|
|
4029
4139
|
var UnMemoizedChatAutoComplete = function (props) {
|
|
4030
|
-
var _a = useComponentContext(), SuggestionItem = _a.AutocompleteSuggestionItem, SuggestionList = _a.AutocompleteSuggestionList;
|
|
4031
|
-
var t = useTranslationContext().t;
|
|
4032
|
-
var messageInput = useMessageInputContext();
|
|
4140
|
+
var _a = useComponentContext('ChatAutoComplete'), SuggestionItem = _a.AutocompleteSuggestionItem, SuggestionList = _a.AutocompleteSuggestionList;
|
|
4141
|
+
var t = useTranslationContext('ChatAutoComplete').t;
|
|
4142
|
+
var messageInput = useMessageInputContext('ChatAutoComplete');
|
|
4033
4143
|
var cooldownRemaining = messageInput.cooldownRemaining, disabled = messageInput.disabled, emojiIndex = messageInput.emojiIndex, innerRef = messageInput.textareaRef;
|
|
4034
4144
|
var placeholder = props.placeholder || t('Type your message');
|
|
4035
4145
|
var emojiReplace = function (word) {
|
|
@@ -4050,15 +4160,15 @@ var UnMemoizedChatAutoComplete = function (props) {
|
|
|
4050
4160
|
innerRef.current = ref;
|
|
4051
4161
|
}
|
|
4052
4162
|
}, [innerRef]);
|
|
4053
|
-
return (React__default['default'].createElement(ReactTextareaAutocomplete, { additionalTextareaProps: messageInput.additionalTextareaProps, className: 'str-chat__textarea__textarea', closeCommandsList: messageInput.closeCommandsList, containerClassName: 'str-chat__textarea', disabled: disabled || !!cooldownRemaining, disableMentions: messageInput.disableMentions, dropdownClassName: 'str-chat__emojisearch', grow: messageInput.grow, handleSubmit: props.handleSubmit || messageInput.handleSubmit, innerRef: updateInnerRef, itemClassName: 'str-chat__emojisearch__item', keycodeSubmitKeys: messageInput.keycodeSubmitKeys, listClassName: 'str-chat__emojisearch__list', loadingComponent: LoadingIndicator, maxRows: messageInput.maxRows, minChar: 0, onChange: props.onChange || messageInput.handleChange, onFocus: props.onFocus, onPaste: props.onPaste || messageInput.onPaste, placeholder: cooldownRemaining ? t('Slow Mode ON') : placeholder, replaceWord: emojiReplace, rows: props.rows || 1, showCommandsList: messageInput.showCommandsList, SuggestionItem: SuggestionItem, SuggestionList: SuggestionList, trigger: messageInput.autocompleteTriggers || {}, value: props.value || messageInput.text }));
|
|
4163
|
+
return (React__default['default'].createElement(ReactTextareaAutocomplete, { additionalTextareaProps: messageInput.additionalTextareaProps, className: 'str-chat__textarea__textarea', closeCommandsList: messageInput.closeCommandsList, closeMentionsList: messageInput.closeMentionsList, containerClassName: 'str-chat__textarea', disabled: disabled || !!cooldownRemaining, disableMentions: messageInput.disableMentions, dropdownClassName: 'str-chat__emojisearch', grow: messageInput.grow, handleSubmit: props.handleSubmit || messageInput.handleSubmit, innerRef: updateInnerRef, itemClassName: 'str-chat__emojisearch__item', keycodeSubmitKeys: messageInput.keycodeSubmitKeys, listClassName: 'str-chat__emojisearch__list', loadingComponent: LoadingIndicator, maxRows: messageInput.maxRows, minChar: 0, onChange: props.onChange || messageInput.handleChange, onFocus: props.onFocus, onPaste: props.onPaste || messageInput.onPaste, placeholder: cooldownRemaining ? t('Slow Mode ON') : placeholder, replaceWord: emojiReplace, rows: props.rows || 1, showCommandsList: messageInput.showCommandsList, showMentionsList: messageInput.showMentionsList, SuggestionItem: SuggestionItem, SuggestionList: SuggestionList, trigger: messageInput.autocompleteTriggers || {}, value: props.value || messageInput.text }));
|
|
4054
4164
|
};
|
|
4055
4165
|
var ChatAutoComplete = React__default['default'].memo(UnMemoizedChatAutoComplete);
|
|
4056
4166
|
|
|
4057
4167
|
var EditMessageForm = function () {
|
|
4058
|
-
var _a = useChannelStateContext(), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads;
|
|
4059
|
-
var t = useTranslationContext().t;
|
|
4060
|
-
var _b = useMessageInputContext(), clearEditingState = _b.clearEditingState, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, uploadNewFiles = _b.uploadNewFiles;
|
|
4061
|
-
var _c = useComponentContext(), _d = _c.EmojiIcon, EmojiIcon = _d === void 0 ? EmojiIconSmall : _d, _e = _c.FileUploadIcon, FileUploadIcon$1 = _e === void 0 ? FileUploadIcon : _e;
|
|
4168
|
+
var _a = useChannelStateContext('EditMessageForm'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads;
|
|
4169
|
+
var t = useTranslationContext('EditMessageForm').t;
|
|
4170
|
+
var _b = useMessageInputContext('EditMessageForm'), clearEditingState = _b.clearEditingState, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, uploadNewFiles = _b.uploadNewFiles;
|
|
4171
|
+
var _c = useComponentContext('EditMessageForm'), _d = _c.EmojiIcon, EmojiIcon = _d === void 0 ? EmojiIconSmall : _d, _e = _c.FileUploadIcon, FileUploadIcon$1 = _e === void 0 ? FileUploadIcon : _e;
|
|
4062
4172
|
React.useEffect(function () {
|
|
4063
4173
|
var onKeyDown = function (event) {
|
|
4064
4174
|
if (event.keyCode === KEY_CODES.ESC && clearEditingState)
|
|
@@ -4121,8 +4231,8 @@ var checkUserRoles = function (globalRole, channelRole) {
|
|
|
4121
4231
|
};
|
|
4122
4232
|
var useCooldownTimer = function () {
|
|
4123
4233
|
var _a, _b;
|
|
4124
|
-
var client = useChatContext().client;
|
|
4125
|
-
var channel = useChannelStateContext().channel;
|
|
4234
|
+
var client = useChatContext('useCooldownTimer').client;
|
|
4235
|
+
var channel = useChannelStateContext('useCooldownTimer').channel;
|
|
4126
4236
|
var cooldownInterval = (channel.data || {}).cooldown;
|
|
4127
4237
|
var _c = React.useState(), cooldownRemaining = _c[0], setCooldownRemaining = _c[1];
|
|
4128
4238
|
var globalRole = ((_a = client.user) === null || _a === void 0 ? void 0 : _a.role) || '';
|
|
@@ -4143,7 +4253,7 @@ var useCooldownTimer = function () {
|
|
|
4143
4253
|
};
|
|
4144
4254
|
|
|
4145
4255
|
var useEmojiIndex = function () {
|
|
4146
|
-
var _a = useEmojiContext(), emojiConfig = _a.emojiConfig, EmojiIndex = _a.EmojiIndex;
|
|
4256
|
+
var _a = useEmojiContext('useEmojiIndex'), emojiConfig = _a.emojiConfig, EmojiIndex = _a.EmojiIndex;
|
|
4147
4257
|
var emojiData = (emojiConfig || {}).emojiData;
|
|
4148
4258
|
var emojiIndex = React.useMemo(function () {
|
|
4149
4259
|
if (EmojiIndex) {
|
|
@@ -4157,15 +4267,16 @@ var useEmojiIndex = function () {
|
|
|
4157
4267
|
var useImageUploads = function (props, state, dispatch) {
|
|
4158
4268
|
var doImageUploadRequest = props.doImageUploadRequest, errorHandler = props.errorHandler;
|
|
4159
4269
|
var imageUploads = state.imageUploads;
|
|
4160
|
-
var channel = useChannelStateContext().channel;
|
|
4161
|
-
var
|
|
4162
|
-
var
|
|
4270
|
+
var channel = useChannelStateContext('useImageUploads').channel;
|
|
4271
|
+
var getAppSettings = useChatContext('useImageUploads').getAppSettings;
|
|
4272
|
+
var addNotification = useChannelActionContext('useImageUploads').addNotification;
|
|
4273
|
+
var t = useTranslationContext('useImageUploads').t;
|
|
4163
4274
|
var removeImage = React.useCallback(function (id) {
|
|
4164
4275
|
dispatch({ id: id, type: 'removeImageUpload' });
|
|
4165
4276
|
// TODO: cancel upload if still uploading
|
|
4166
4277
|
}, []);
|
|
4167
4278
|
var uploadImage = React.useCallback(function (id) { return __awaiter(void 0, void 0, void 0, function () {
|
|
4168
|
-
var img, file, response, error_1, errorMessage, alreadyRemoved;
|
|
4279
|
+
var img, file, canUpload, response, error_1, errorMessage, alreadyRemoved;
|
|
4169
4280
|
return __generator(this, function (_a) {
|
|
4170
4281
|
switch (_a.label) {
|
|
4171
4282
|
case 0:
|
|
@@ -4176,22 +4287,35 @@ var useImageUploads = function (props, state, dispatch) {
|
|
|
4176
4287
|
if (img.state !== 'uploading') {
|
|
4177
4288
|
dispatch({ id: id, state: 'uploading', type: 'setImageUpload' });
|
|
4178
4289
|
}
|
|
4179
|
-
|
|
4290
|
+
return [4 /*yield*/, checkUploadPermissions({
|
|
4291
|
+
addNotification: addNotification,
|
|
4292
|
+
file: file,
|
|
4293
|
+
getAppSettings: getAppSettings,
|
|
4294
|
+
t: t,
|
|
4295
|
+
uploadType: 'image',
|
|
4296
|
+
})];
|
|
4180
4297
|
case 1:
|
|
4181
|
-
_a.
|
|
4182
|
-
if (!
|
|
4183
|
-
|
|
4298
|
+
canUpload = _a.sent();
|
|
4299
|
+
if (!canUpload)
|
|
4300
|
+
return [2 /*return*/, removeImage(id)];
|
|
4301
|
+
_a.label = 2;
|
|
4184
4302
|
case 2:
|
|
4303
|
+
_a.trys.push([2, 7, , 8]);
|
|
4304
|
+
if (!doImageUploadRequest) return [3 /*break*/, 4];
|
|
4305
|
+
return [4 /*yield*/, doImageUploadRequest(file, channel)];
|
|
4306
|
+
case 3:
|
|
4185
4307
|
response = _a.sent();
|
|
4186
|
-
return [3 /*break*/,
|
|
4187
|
-
case
|
|
4188
|
-
case
|
|
4308
|
+
return [3 /*break*/, 6];
|
|
4309
|
+
case 4: return [4 /*yield*/, channel.sendImage(file)];
|
|
4310
|
+
case 5:
|
|
4189
4311
|
response = _a.sent();
|
|
4190
|
-
_a.label =
|
|
4191
|
-
case
|
|
4192
|
-
case
|
|
4312
|
+
_a.label = 6;
|
|
4313
|
+
case 6: return [3 /*break*/, 8];
|
|
4314
|
+
case 7:
|
|
4193
4315
|
error_1 = _a.sent();
|
|
4194
|
-
errorMessage = typeof error_1.message === 'string'
|
|
4316
|
+
errorMessage = typeof error_1.message === 'string'
|
|
4317
|
+
? error_1.message
|
|
4318
|
+
: t('Error uploading image');
|
|
4195
4319
|
addNotification(errorMessage, 'error');
|
|
4196
4320
|
alreadyRemoved = false;
|
|
4197
4321
|
if (!imageUploads[id]) {
|
|
@@ -4205,7 +4329,7 @@ var useImageUploads = function (props, state, dispatch) {
|
|
|
4205
4329
|
errorHandler(error_1, 'upload-image', __assign(__assign({}, file), { id: id }));
|
|
4206
4330
|
}
|
|
4207
4331
|
return [2 /*return*/];
|
|
4208
|
-
case
|
|
4332
|
+
case 8:
|
|
4209
4333
|
// If doImageUploadRequest returns any falsy value, then don't create the upload preview.
|
|
4210
4334
|
// This is for the case if someone wants to handle failure on app level.
|
|
4211
4335
|
if (!response) {
|
|
@@ -4260,9 +4384,10 @@ var useImageUploads = function (props, state, dispatch) {
|
|
|
4260
4384
|
var useFileUploads = function (props, state, dispatch) {
|
|
4261
4385
|
var doFileUploadRequest = props.doFileUploadRequest, errorHandler = props.errorHandler;
|
|
4262
4386
|
var fileUploads = state.fileUploads;
|
|
4263
|
-
var channel = useChannelStateContext().channel;
|
|
4264
|
-
var addNotification = useChannelActionContext().addNotification;
|
|
4265
|
-
var
|
|
4387
|
+
var channel = useChannelStateContext('useFileUploads').channel;
|
|
4388
|
+
var addNotification = useChannelActionContext('useFileUploads').addNotification;
|
|
4389
|
+
var getAppSettings = useChatContext('useFileUploads').getAppSettings;
|
|
4390
|
+
var t = useTranslationContext('useFileUploads').t;
|
|
4266
4391
|
var uploadFile = React.useCallback(function (id) {
|
|
4267
4392
|
dispatch({ id: id, state: 'uploading', type: 'setFileUpload' });
|
|
4268
4393
|
}, []);
|
|
@@ -4272,7 +4397,7 @@ var useFileUploads = function (props, state, dispatch) {
|
|
|
4272
4397
|
}, []);
|
|
4273
4398
|
React.useEffect(function () {
|
|
4274
4399
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
4275
|
-
var upload, file, id, response, error_1, errorMessage, alreadyRemoved;
|
|
4400
|
+
var upload, file, id, canUpload, response, error_1, errorMessage, alreadyRemoved;
|
|
4276
4401
|
return __generator(this, function (_a) {
|
|
4277
4402
|
switch (_a.label) {
|
|
4278
4403
|
case 0:
|
|
@@ -4280,22 +4405,35 @@ var useFileUploads = function (props, state, dispatch) {
|
|
|
4280
4405
|
if (!upload)
|
|
4281
4406
|
return [2 /*return*/];
|
|
4282
4407
|
file = upload.file, id = upload.id;
|
|
4283
|
-
|
|
4408
|
+
return [4 /*yield*/, checkUploadPermissions({
|
|
4409
|
+
addNotification: addNotification,
|
|
4410
|
+
file: file,
|
|
4411
|
+
getAppSettings: getAppSettings,
|
|
4412
|
+
t: t,
|
|
4413
|
+
uploadType: 'file',
|
|
4414
|
+
})];
|
|
4284
4415
|
case 1:
|
|
4285
|
-
_a.
|
|
4286
|
-
if (!
|
|
4287
|
-
|
|
4416
|
+
canUpload = _a.sent();
|
|
4417
|
+
if (!canUpload)
|
|
4418
|
+
return [2 /*return*/, removeFile(id)];
|
|
4419
|
+
_a.label = 2;
|
|
4288
4420
|
case 2:
|
|
4421
|
+
_a.trys.push([2, 7, , 8]);
|
|
4422
|
+
if (!doFileUploadRequest) return [3 /*break*/, 4];
|
|
4423
|
+
return [4 /*yield*/, doFileUploadRequest(file, channel)];
|
|
4424
|
+
case 3:
|
|
4289
4425
|
response = _a.sent();
|
|
4290
|
-
return [3 /*break*/,
|
|
4291
|
-
case
|
|
4292
|
-
case
|
|
4426
|
+
return [3 /*break*/, 6];
|
|
4427
|
+
case 4: return [4 /*yield*/, channel.sendFile(file)];
|
|
4428
|
+
case 5:
|
|
4293
4429
|
response = _a.sent();
|
|
4294
|
-
_a.label =
|
|
4295
|
-
case
|
|
4296
|
-
case
|
|
4430
|
+
_a.label = 6;
|
|
4431
|
+
case 6: return [3 /*break*/, 8];
|
|
4432
|
+
case 7:
|
|
4297
4433
|
error_1 = _a.sent();
|
|
4298
|
-
errorMessage = typeof error_1.message === 'string'
|
|
4434
|
+
errorMessage = typeof error_1.message === 'string'
|
|
4435
|
+
? error_1.message
|
|
4436
|
+
: t('Error uploading file');
|
|
4299
4437
|
addNotification(errorMessage, 'error');
|
|
4300
4438
|
alreadyRemoved = false;
|
|
4301
4439
|
if (!fileUploads[id]) {
|
|
@@ -4309,7 +4447,7 @@ var useFileUploads = function (props, state, dispatch) {
|
|
|
4309
4447
|
errorHandler(error_1, 'upload-file', file);
|
|
4310
4448
|
}
|
|
4311
4449
|
return [2 /*return*/];
|
|
4312
|
-
case
|
|
4450
|
+
case 8:
|
|
4313
4451
|
// If doImageUploadRequest returns any falsy value, then don't create the upload preview.
|
|
4314
4452
|
// This is for the case if someone wants to handle failure on app level.
|
|
4315
4453
|
if (!response) {
|
|
@@ -4337,7 +4475,7 @@ var apiMaxNumberOfFiles = 10;
|
|
|
4337
4475
|
var useAttachments = function (props, state, dispatch) {
|
|
4338
4476
|
var noFiles = props.noFiles;
|
|
4339
4477
|
var fileUploads = state.fileUploads, imageUploads = state.imageUploads;
|
|
4340
|
-
var _a = useChannelStateContext(), maxNumberOfFiles = _a.maxNumberOfFiles, multipleUploads = _a.multipleUploads;
|
|
4478
|
+
var _a = useChannelStateContext('useAttachments'), maxNumberOfFiles = _a.maxNumberOfFiles, multipleUploads = _a.multipleUploads;
|
|
4341
4479
|
var _b = useFileUploads(props, state, dispatch), removeFile = _b.removeFile, uploadFile = _b.uploadFile;
|
|
4342
4480
|
var _c = useImageUploads(props, state, dispatch), removeImage = _c.removeImage, uploadImage = _c.uploadImage;
|
|
4343
4481
|
// Number of files that the user can still add. Should never be more than the amount allowed by the API.
|
|
@@ -4381,7 +4519,7 @@ var useAttachments = function (props, state, dispatch) {
|
|
|
4381
4519
|
};
|
|
4382
4520
|
|
|
4383
4521
|
var useMessageInputText = function (props, state, dispatch) {
|
|
4384
|
-
var channel = useChannelStateContext().channel;
|
|
4522
|
+
var channel = useChannelStateContext('useMessageInputText').channel;
|
|
4385
4523
|
var additionalTextareaProps = props.additionalTextareaProps, focus = props.focus, parent = props.parent, _a = props.publishTypingEvent, publishTypingEvent = _a === void 0 ? true : _a;
|
|
4386
4524
|
var text = state.text;
|
|
4387
4525
|
var textareaRef = React.useRef();
|
|
@@ -4518,9 +4656,9 @@ var getAttachmentTypeFromMime = function (mime) {
|
|
|
4518
4656
|
var useSubmitHandler = function (props, state, dispatch, numberOfUploads) {
|
|
4519
4657
|
var clearEditingState = props.clearEditingState, message = props.message, overrideSubmitHandler = props.overrideSubmitHandler, parent = props.parent, publishTypingEvent = props.publishTypingEvent;
|
|
4520
4658
|
var attachments = state.attachments, fileOrder = state.fileOrder, fileUploads = state.fileUploads, imageOrder = state.imageOrder, imageUploads = state.imageUploads, mentioned_users = state.mentioned_users, text = state.text;
|
|
4521
|
-
var channel = useChannelStateContext().channel;
|
|
4522
|
-
var _a = useChannelActionContext(), addNotification = _a.addNotification, editMessage = _a.editMessage, sendMessage = _a.sendMessage;
|
|
4523
|
-
var t = useTranslationContext().t;
|
|
4659
|
+
var channel = useChannelStateContext('useSubmitHandler').channel;
|
|
4660
|
+
var _a = useChannelActionContext('useSubmitHandler'), addNotification = _a.addNotification, editMessage = _a.editMessage, sendMessage = _a.sendMessage;
|
|
4661
|
+
var t = useTranslationContext('useSubmitHandler').t;
|
|
4524
4662
|
var getAttachmentsFromUploads = function () {
|
|
4525
4663
|
var imageAttachments = imageOrder
|
|
4526
4664
|
.map(function (id) { return imageUploads[id]; })
|
|
@@ -4713,7 +4851,7 @@ var initState = function (message) {
|
|
|
4713
4851
|
var id = generateRandomId();
|
|
4714
4852
|
acc[id] = {
|
|
4715
4853
|
file: {
|
|
4716
|
-
name: attachment.fallback,
|
|
4854
|
+
name: attachment.fallback || '',
|
|
4717
4855
|
},
|
|
4718
4856
|
id: id,
|
|
4719
4857
|
state: 'finished',
|
|
@@ -4820,12 +4958,12 @@ var messageInputReducer = function (state, action) {
|
|
|
4820
4958
|
* hook for MessageInput state
|
|
4821
4959
|
*/
|
|
4822
4960
|
var useMessageInputState = function (props) {
|
|
4823
|
-
var _a, _b;
|
|
4824
4961
|
var message = props.message;
|
|
4825
|
-
var
|
|
4962
|
+
var _a = useChannelStateContext('useMessageInputState'), _b = _a.channelCapabilities, channelCapabilities = _b === void 0 ? {} : _b, channelConfig = _a.channelConfig;
|
|
4826
4963
|
var _c = React.useReducer(messageInputReducer, message, initState), state = _c[0], dispatch = _c[1];
|
|
4827
4964
|
var _d = useMessageInputText(props, state, dispatch), handleChange = _d.handleChange, insertText = _d.insertText, textareaRef = _d.textareaRef;
|
|
4828
4965
|
var _e = React.useState(false), showCommandsList = _e[0], setShowCommandsList = _e[1];
|
|
4966
|
+
var _f = React.useState(false), showMentionsList = _f[0], setShowMentionsList = _f[1];
|
|
4829
4967
|
var openCommandsList = function () {
|
|
4830
4968
|
dispatch({
|
|
4831
4969
|
getNewText: function () { return '/'; },
|
|
@@ -4834,11 +4972,19 @@ var useMessageInputState = function (props) {
|
|
|
4834
4972
|
setShowCommandsList(true);
|
|
4835
4973
|
};
|
|
4836
4974
|
var closeCommandsList = function () { return setShowCommandsList(false); };
|
|
4837
|
-
var
|
|
4838
|
-
|
|
4975
|
+
var openMentionsList = function () {
|
|
4976
|
+
dispatch({
|
|
4977
|
+
getNewText: function () { return '@'; },
|
|
4978
|
+
type: 'setText',
|
|
4979
|
+
});
|
|
4980
|
+
setShowMentionsList(true);
|
|
4981
|
+
};
|
|
4982
|
+
var closeMentionsList = function () { return setShowMentionsList(false); };
|
|
4983
|
+
var _g = useEmojiPicker(state, dispatch, insertText), closeEmojiPicker = _g.closeEmojiPicker, emojiPickerRef = _g.emojiPickerRef, handleEmojiKeyDown = _g.handleEmojiKeyDown, onSelectEmoji = _g.onSelectEmoji, openEmojiPicker = _g.openEmojiPicker;
|
|
4984
|
+
var _h = useAttachments(props, state, dispatch), maxFilesLeft = _h.maxFilesLeft, numberOfUploads = _h.numberOfUploads, removeFile = _h.removeFile, removeImage = _h.removeImage, uploadFile = _h.uploadFile, uploadImage = _h.uploadImage, uploadNewFiles = _h.uploadNewFiles;
|
|
4839
4985
|
var handleSubmit = useSubmitHandler(props, state, dispatch, numberOfUploads).handleSubmit;
|
|
4840
4986
|
var onPaste = usePasteHandler(uploadNewFiles, insertText).onPaste;
|
|
4841
|
-
var isUploadEnabled = (
|
|
4987
|
+
var isUploadEnabled = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.uploads) !== false && channelCapabilities['upload-file'] !== false;
|
|
4842
4988
|
var onSelectUser = React.useCallback(function (item) {
|
|
4843
4989
|
dispatch({ type: 'addMentionedUser', user: item });
|
|
4844
4990
|
}, []);
|
|
@@ -4850,12 +4996,12 @@ var useMessageInputState = function (props) {
|
|
|
4850
4996
|
* TODO: fix the below at some point because this type casting is wrong
|
|
4851
4997
|
* and just forced to not have warnings currently with the unknown casting
|
|
4852
4998
|
*/
|
|
4853
|
-
closeEmojiPicker: closeEmojiPicker, emojiIndex: useEmojiIndex(), emojiPickerRef: emojiPickerRef, handleChange: handleChange, handleEmojiKeyDown: handleEmojiKeyDown, handleSubmit: handleSubmit, insertText: insertText, isUploadEnabled: isUploadEnabled, maxFilesLeft: maxFilesLeft, numberOfUploads: numberOfUploads, onPaste: onPaste, onSelectEmoji: onSelectEmoji, onSelectUser: onSelectUser, openCommandsList: openCommandsList, openEmojiPicker: openEmojiPicker, removeFile: removeFile, removeImage: removeImage, setText: setText, showCommandsList: showCommandsList, textareaRef: textareaRef, uploadFile: uploadFile, uploadImage: uploadImage, uploadNewFiles: uploadNewFiles });
|
|
4999
|
+
closeEmojiPicker: closeEmojiPicker, closeMentionsList: closeMentionsList, emojiIndex: useEmojiIndex(), emojiPickerRef: emojiPickerRef, handleChange: handleChange, handleEmojiKeyDown: handleEmojiKeyDown, handleSubmit: handleSubmit, insertText: insertText, isUploadEnabled: isUploadEnabled, maxFilesLeft: maxFilesLeft, numberOfUploads: numberOfUploads, onPaste: onPaste, onSelectEmoji: onSelectEmoji, onSelectUser: onSelectUser, openCommandsList: openCommandsList, openEmojiPicker: openEmojiPicker, openMentionsList: openMentionsList, removeFile: removeFile, removeImage: removeImage, setText: setText, showCommandsList: showCommandsList, showMentionsList: showMentionsList, textareaRef: textareaRef, uploadFile: uploadFile, uploadImage: uploadImage, uploadNewFiles: uploadNewFiles });
|
|
4854
5000
|
};
|
|
4855
5001
|
|
|
4856
5002
|
var QuotedMessagePreviewHeader = function () {
|
|
4857
|
-
var setQuotedMessage = useChannelActionContext().setQuotedMessage;
|
|
4858
|
-
var t = useTranslationContext().t;
|
|
5003
|
+
var setQuotedMessage = useChannelActionContext('QuotedMessagePreview').setQuotedMessage;
|
|
5004
|
+
var t = useTranslationContext('QuotedMessagePreview').t;
|
|
4859
5005
|
return (React__default['default'].createElement("div", { className: 'quoted-message-preview-header' },
|
|
4860
5006
|
React__default['default'].createElement("div", null, t('Reply to Message')),
|
|
4861
5007
|
React__default['default'].createElement("button", { className: 'str-chat__square-button', onClick: function () { return setQuotedMessage(undefined); } },
|
|
@@ -4865,8 +5011,8 @@ var QuotedMessagePreviewHeader = function () {
|
|
|
4865
5011
|
var QuotedMessagePreview = function (props) {
|
|
4866
5012
|
var _a;
|
|
4867
5013
|
var quotedMessage = props.quotedMessage;
|
|
4868
|
-
var Attachment = useComponentContext().Attachment;
|
|
4869
|
-
var userLanguage = useTranslationContext().userLanguage;
|
|
5014
|
+
var Attachment = useComponentContext('QuotedMessagePreview').Attachment;
|
|
5015
|
+
var userLanguage = useTranslationContext('QuotedMessagePreview').userLanguage;
|
|
4870
5016
|
var quotedMessageText = ((_a = quotedMessage.i18n) === null || _a === void 0 ? void 0 : _a[userLanguage + "_text"]) ||
|
|
4871
5017
|
quotedMessage.text;
|
|
4872
5018
|
// @ts-expect-error
|
|
@@ -4886,10 +5032,10 @@ var QuotedMessagePreview = function (props) {
|
|
|
4886
5032
|
};
|
|
4887
5033
|
|
|
4888
5034
|
var MessageInputFlat = function () {
|
|
4889
|
-
var _a = useChannelStateContext(), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads, quotedMessage = _a.quotedMessage;
|
|
4890
|
-
var t = useTranslationContext().t;
|
|
4891
|
-
var _b = useMessageInputContext(), closeEmojiPicker = _b.closeEmojiPicker, cooldownInterval = _b.cooldownInterval, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleEmojiKeyDown = _b.handleEmojiKeyDown, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
|
|
4892
|
-
var _c = useComponentContext(), _d = _c.CooldownTimer, CooldownTimer$1 = _d === void 0 ? CooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? EmojiIconLarge : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? FileUploadIconFlat : _f, _g = _c.QuotedMessagePreview, QuotedMessagePreview$1 = _g === void 0 ? QuotedMessagePreview : _g, _h = _c.SendButton, SendButton$1 = _h === void 0 ? SendButton : _h;
|
|
5035
|
+
var _a = useChannelStateContext('MessageInputFlat'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads, quotedMessage = _a.quotedMessage;
|
|
5036
|
+
var t = useTranslationContext('MessageInputFlat').t;
|
|
5037
|
+
var _b = useMessageInputContext('MessageInputFlat'), closeEmojiPicker = _b.closeEmojiPicker, cooldownInterval = _b.cooldownInterval, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleEmojiKeyDown = _b.handleEmojiKeyDown, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
|
|
5038
|
+
var _c = useComponentContext('MessageInputFlat'), _d = _c.CooldownTimer, CooldownTimer$1 = _d === void 0 ? CooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? EmojiIconLarge : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? FileUploadIconFlat : _f, _g = _c.QuotedMessagePreview, QuotedMessagePreview$1 = _g === void 0 ? QuotedMessagePreview : _g, _h = _c.SendButton, SendButton$1 = _h === void 0 ? SendButton : _h;
|
|
4893
5039
|
return (React__default['default'].createElement("div", { className: "str-chat__input-flat " + (SendButton$1 ? 'str-chat__input-flat--send-button-active' : null) + " " + (quotedMessage ? 'str-chat__input-flat-quoted' : null) },
|
|
4894
5040
|
React__default['default'].createElement(reactFileUtils.ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads },
|
|
4895
5041
|
quotedMessage && React__default['default'].createElement(QuotedMessagePreview$1, { quotedMessage: quotedMessage }),
|
|
@@ -4913,7 +5059,7 @@ var MessageInputFlat = function () {
|
|
|
4913
5059
|
};
|
|
4914
5060
|
|
|
4915
5061
|
var useCreateMessageInputContext = function (value) {
|
|
4916
|
-
var additionalTextareaProps = value.additionalTextareaProps, attachments = value.attachments, autocompleteTriggers = value.autocompleteTriggers, clearEditingState = value.clearEditingState, closeCommandsList = value.closeCommandsList, closeEmojiPicker = value.closeEmojiPicker, cooldownInterval = value.cooldownInterval, disabled = value.disabled, disableMentions = value.disableMentions, doFileUploadRequest = value.doFileUploadRequest, doImageUploadRequest = value.doImageUploadRequest, emojiIndex = value.emojiIndex, emojiPickerIsOpen = value.emojiPickerIsOpen, emojiPickerRef = value.emojiPickerRef, errorHandler = value.errorHandler, fileOrder = value.fileOrder, fileUploads = value.fileUploads, focus = value.focus, grow = value.grow, handleChange = value.handleChange, handleEmojiKeyDown = value.handleEmojiKeyDown, handleSubmit = value.handleSubmit, imageOrder = value.imageOrder, imageUploads = value.imageUploads, insertText = value.insertText, isUploadEnabled = value.isUploadEnabled, keycodeSubmitKeys = value.keycodeSubmitKeys, maxFilesLeft = value.maxFilesLeft, maxRows = value.maxRows, mentionAllAppUsers = value.mentionAllAppUsers, mentioned_users = value.mentioned_users, mentionQueryParams = value.mentionQueryParams, message = value.message, noFiles = value.noFiles, numberOfUploads = value.numberOfUploads, onPaste = value.onPaste, onSelectEmoji = value.onSelectEmoji, onSelectUser = value.onSelectUser, openCommandsList = value.openCommandsList, openEmojiPicker = value.openEmojiPicker, overrideSubmitHandler = value.overrideSubmitHandler, parent = value.parent, publishTypingEvent = value.publishTypingEvent, removeFile = value.removeFile, removeImage = value.removeImage, setCooldownRemaining = value.setCooldownRemaining, setText = value.setText, showCommandsList = value.showCommandsList, text = value.text, textareaRef = value.textareaRef, uploadFile = value.uploadFile, uploadImage = value.uploadImage, uploadNewFiles = value.uploadNewFiles, useMentionsTransliteration = value.useMentionsTransliteration;
|
|
5062
|
+
var additionalTextareaProps = value.additionalTextareaProps, attachments = value.attachments, autocompleteTriggers = value.autocompleteTriggers, clearEditingState = value.clearEditingState, closeCommandsList = value.closeCommandsList, closeEmojiPicker = value.closeEmojiPicker, closeMentionsList = value.closeMentionsList, cooldownInterval = value.cooldownInterval, cooldownRemaining = value.cooldownRemaining, disabled = value.disabled, disableMentions = value.disableMentions, doFileUploadRequest = value.doFileUploadRequest, doImageUploadRequest = value.doImageUploadRequest, emojiIndex = value.emojiIndex, emojiPickerIsOpen = value.emojiPickerIsOpen, emojiPickerRef = value.emojiPickerRef, errorHandler = value.errorHandler, fileOrder = value.fileOrder, fileUploads = value.fileUploads, focus = value.focus, grow = value.grow, handleChange = value.handleChange, handleEmojiKeyDown = value.handleEmojiKeyDown, handleSubmit = value.handleSubmit, imageOrder = value.imageOrder, imageUploads = value.imageUploads, insertText = value.insertText, isUploadEnabled = value.isUploadEnabled, keycodeSubmitKeys = value.keycodeSubmitKeys, maxFilesLeft = value.maxFilesLeft, maxRows = value.maxRows, mentionAllAppUsers = value.mentionAllAppUsers, mentioned_users = value.mentioned_users, mentionQueryParams = value.mentionQueryParams, message = value.message, noFiles = value.noFiles, numberOfUploads = value.numberOfUploads, onPaste = value.onPaste, onSelectEmoji = value.onSelectEmoji, onSelectUser = value.onSelectUser, openCommandsList = value.openCommandsList, openEmojiPicker = value.openEmojiPicker, openMentionsList = value.openMentionsList, overrideSubmitHandler = value.overrideSubmitHandler, parent = value.parent, publishTypingEvent = value.publishTypingEvent, removeFile = value.removeFile, removeImage = value.removeImage, setCooldownRemaining = value.setCooldownRemaining, setText = value.setText, showCommandsList = value.showCommandsList, showMentionsList = value.showMentionsList, text = value.text, textareaRef = value.textareaRef, uploadFile = value.uploadFile, uploadImage = value.uploadImage, uploadNewFiles = value.uploadNewFiles, useMentionsTransliteration = value.useMentionsTransliteration;
|
|
4917
5063
|
var editing = message === null || message === void 0 ? void 0 : message.editing;
|
|
4918
5064
|
var fileUploadsValue = Object.entries(fileUploads)
|
|
4919
5065
|
// eslint-disable-next-line
|
|
@@ -4938,7 +5084,9 @@ var useCreateMessageInputContext = function (value) {
|
|
|
4938
5084
|
clearEditingState: clearEditingState,
|
|
4939
5085
|
closeCommandsList: closeCommandsList,
|
|
4940
5086
|
closeEmojiPicker: closeEmojiPicker,
|
|
5087
|
+
closeMentionsList: closeMentionsList,
|
|
4941
5088
|
cooldownInterval: cooldownInterval,
|
|
5089
|
+
cooldownRemaining: cooldownRemaining,
|
|
4942
5090
|
disabled: disabled,
|
|
4943
5091
|
disableMentions: disableMentions,
|
|
4944
5092
|
doFileUploadRequest: doFileUploadRequest,
|
|
@@ -4972,6 +5120,7 @@ var useCreateMessageInputContext = function (value) {
|
|
|
4972
5120
|
onSelectUser: onSelectUser,
|
|
4973
5121
|
openCommandsList: openCommandsList,
|
|
4974
5122
|
openEmojiPicker: openEmojiPicker,
|
|
5123
|
+
openMentionsList: openMentionsList,
|
|
4975
5124
|
overrideSubmitHandler: overrideSubmitHandler,
|
|
4976
5125
|
parent: parent,
|
|
4977
5126
|
publishTypingEvent: publishTypingEvent,
|
|
@@ -4980,6 +5129,7 @@ var useCreateMessageInputContext = function (value) {
|
|
|
4980
5129
|
setCooldownRemaining: setCooldownRemaining,
|
|
4981
5130
|
setText: setText,
|
|
4982
5131
|
showCommandsList: showCommandsList,
|
|
5132
|
+
showMentionsList: showMentionsList,
|
|
4983
5133
|
text: text,
|
|
4984
5134
|
textareaRef: textareaRef,
|
|
4985
5135
|
uploadFile: uploadFile,
|
|
@@ -4987,6 +5137,8 @@ var useCreateMessageInputContext = function (value) {
|
|
|
4987
5137
|
uploadNewFiles: uploadNewFiles,
|
|
4988
5138
|
useMentionsTransliteration: useMentionsTransliteration,
|
|
4989
5139
|
}); }, [
|
|
5140
|
+
cooldownInterval,
|
|
5141
|
+
cooldownRemaining,
|
|
4990
5142
|
editing,
|
|
4991
5143
|
emojiPickerIsOpen,
|
|
4992
5144
|
fileUploadsValue,
|
|
@@ -4995,19 +5147,30 @@ var useCreateMessageInputContext = function (value) {
|
|
|
4995
5147
|
mentionedUsersLength,
|
|
4996
5148
|
parentId,
|
|
4997
5149
|
publishTypingEvent,
|
|
5150
|
+
showCommandsList,
|
|
5151
|
+
showMentionsList,
|
|
4998
5152
|
text,
|
|
4999
5153
|
]);
|
|
5000
5154
|
return messageInputContext;
|
|
5001
5155
|
};
|
|
5002
5156
|
|
|
5157
|
+
var MessageInputProvider = function (props) {
|
|
5158
|
+
var cooldownTimerState = useCooldownTimer();
|
|
5159
|
+
var messageInputState = useMessageInputState(props);
|
|
5160
|
+
var messageInputContextValue = useCreateMessageInputContext(__assign(__assign(__assign({}, cooldownTimerState), messageInputState), props));
|
|
5161
|
+
return (React__default['default'].createElement(MessageInputContextProvider, { value: messageInputContextValue }, props.children));
|
|
5162
|
+
};
|
|
5003
5163
|
var UnMemoizedMessageInput = function (props) {
|
|
5004
5164
|
var PropInput = props.Input;
|
|
5005
|
-
var
|
|
5165
|
+
var dragAndDropWindow = useChannelStateContext().dragAndDropWindow;
|
|
5166
|
+
var _a = useComponentContext('MessageInput'), ContextInput = _a.Input, _b = _a.TriggerProvider, TriggerProvider = _b === void 0 ? DefaultTriggerProvider : _b;
|
|
5006
5167
|
var Input = PropInput || ContextInput || MessageInputFlat;
|
|
5007
|
-
var
|
|
5008
|
-
|
|
5009
|
-
|
|
5010
|
-
|
|
5168
|
+
var NullProvider = function (_a) {
|
|
5169
|
+
var children = _a.children;
|
|
5170
|
+
return React__default['default'].createElement(React__default['default'].Fragment, null, children);
|
|
5171
|
+
};
|
|
5172
|
+
var OptionalMessageInputProvider = React.useMemo(function () { return (dragAndDropWindow ? NullProvider : MessageInputProvider); }, [dragAndDropWindow]);
|
|
5173
|
+
return (React__default['default'].createElement(OptionalMessageInputProvider, __assign({}, props),
|
|
5011
5174
|
React__default['default'].createElement(TriggerProvider, null,
|
|
5012
5175
|
React__default['default'].createElement(Input, null))));
|
|
5013
5176
|
};
|
|
@@ -5017,10 +5180,10 @@ var UnMemoizedMessageInput = function (props) {
|
|
|
5017
5180
|
var MessageInput = React__default['default'].memo(UnMemoizedMessageInput);
|
|
5018
5181
|
|
|
5019
5182
|
var MessageInputSmall = function () {
|
|
5020
|
-
var _a = useChannelStateContext(), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads;
|
|
5021
|
-
var t = useTranslationContext().t;
|
|
5022
|
-
var _b = useMessageInputContext(), closeEmojiPicker = _b.closeEmojiPicker, cooldownInterval = _b.cooldownInterval, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleEmojiKeyDown = _b.handleEmojiKeyDown, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
|
|
5023
|
-
var _c = useComponentContext(), _d = _c.CooldownTimer, CooldownTimer$1 = _d === void 0 ? CooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? EmojiIconSmall : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? FileUploadIconFlat : _f, _g = _c.SendButton, SendButton$1 = _g === void 0 ? SendButton : _g;
|
|
5183
|
+
var _a = useChannelStateContext('MessageInputSmall'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads;
|
|
5184
|
+
var t = useTranslationContext('MessageInputSmall').t;
|
|
5185
|
+
var _b = useMessageInputContext('MessageInputSmall'), closeEmojiPicker = _b.closeEmojiPicker, cooldownInterval = _b.cooldownInterval, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleEmojiKeyDown = _b.handleEmojiKeyDown, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
|
|
5186
|
+
var _c = useComponentContext('MessageInputSmall'), _d = _c.CooldownTimer, CooldownTimer$1 = _d === void 0 ? CooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? EmojiIconSmall : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? FileUploadIconFlat : _f, _g = _c.SendButton, SendButton$1 = _g === void 0 ? SendButton : _g;
|
|
5024
5187
|
return (React__default['default'].createElement("div", { className: 'str-chat__small-message-input__wrapper' },
|
|
5025
5188
|
React__default['default'].createElement(reactFileUtils.ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads },
|
|
5026
5189
|
React__default['default'].createElement("div", { className: "str-chat__small-message-input " + (SendButton$1 ? 'str-chat__small-message-input--send-button-active' : null) },
|
|
@@ -5060,14 +5223,14 @@ var MMLReact = React__default['default'].lazy(function () { return __awaiter(voi
|
|
|
5060
5223
|
*/
|
|
5061
5224
|
var MML = function (props) {
|
|
5062
5225
|
var actionHandler = props.actionHandler, _a = props.align, align = _a === void 0 ? 'right' : _a, source = props.source;
|
|
5063
|
-
var theme = useChatContext().theme;
|
|
5226
|
+
var theme = useChatContext('MML').theme;
|
|
5064
5227
|
return (React__default['default'].createElement(React.Suspense, { fallback: null },
|
|
5065
5228
|
React__default['default'].createElement(MMLReact, { className: "mml-align-" + align, Loading: null, onSubmit: actionHandler, source: source, Success: null, theme: (theme || '').replace(' ', '-') })));
|
|
5066
5229
|
};
|
|
5067
5230
|
|
|
5068
5231
|
var Modal = function (props) {
|
|
5069
5232
|
var children = props.children, onClose = props.onClose, open = props.open;
|
|
5070
|
-
var t = useTranslationContext().t;
|
|
5233
|
+
var t = useTranslationContext('Modal').t;
|
|
5071
5234
|
var innerRef = React.useRef(null);
|
|
5072
5235
|
var handleClick = function (event) {
|
|
5073
5236
|
var _a;
|
|
@@ -5107,9 +5270,9 @@ var isMutableRef = function (ref) {
|
|
|
5107
5270
|
var UnMemoizedReactionSelector = React__default['default'].forwardRef(function (props, ref) {
|
|
5108
5271
|
var _a;
|
|
5109
5272
|
var _b = props.additionalEmojiProps, additionalEmojiProps = _b === void 0 ? {} : _b, propAvatar = props.Avatar, _c = props.detailedView, detailedView = _c === void 0 ? true : _c, propHandleReaction = props.handleReaction, propLatestReactions = props.latest_reactions, propReactionCounts = props.reaction_counts, propReactionOptions = props.reactionOptions, _d = props.reverse, reverse = _d === void 0 ? false : _d;
|
|
5110
|
-
var contextAvatar = useComponentContext().Avatar;
|
|
5111
|
-
var _e = useEmojiContext(), Emoji = _e.Emoji, emojiConfig = _e.emojiConfig;
|
|
5112
|
-
var _f = useMessageContext(), contextHandleReaction = _f.handleReaction, message = _f.message;
|
|
5273
|
+
var contextAvatar = useComponentContext('ReactionSelector').Avatar;
|
|
5274
|
+
var _e = useEmojiContext('ReactionSelector'), Emoji = _e.Emoji, emojiConfig = _e.emojiConfig;
|
|
5275
|
+
var _f = useMessageContext('ReactionSelector'), contextHandleReaction = _f.handleReaction, message = _f.message;
|
|
5113
5276
|
var _g = emojiConfig || {}, defaultMinimalEmojis = _g.defaultMinimalEmojis, fullEmojiData = _g.emojiData, emojiSetDef = _g.emojiSetDef;
|
|
5114
5277
|
var Avatar$1 = propAvatar || contextAvatar || Avatar;
|
|
5115
5278
|
var handleReaction = propHandleReaction || contextHandleReaction;
|
|
@@ -5189,8 +5352,8 @@ var ReactionSelector = React__default['default'].memo(UnMemoizedReactionSelector
|
|
|
5189
5352
|
|
|
5190
5353
|
var UnMemoizedReactionsList = function (props) {
|
|
5191
5354
|
var additionalEmojiProps = props.additionalEmojiProps, onClick = props.onClick, propReactionCounts = props.reaction_counts, propReactionOptions = props.reactionOptions, propReactions = props.reactions, _a = props.reverse, reverse = _a === void 0 ? false : _a;
|
|
5192
|
-
var _b = useEmojiContext(), Emoji = _b.Emoji, emojiConfig = _b.emojiConfig;
|
|
5193
|
-
var _c = useMessageContext(), message = _c.message, onReactionListClick = _c.onReactionListClick;
|
|
5355
|
+
var _b = useEmojiContext('ReactionsList'), Emoji = _b.Emoji, emojiConfig = _b.emojiConfig;
|
|
5356
|
+
var _c = useMessageContext('ReactionsList'), message = _c.message, onReactionListClick = _c.onReactionListClick;
|
|
5194
5357
|
var _d = emojiConfig || {}, defaultMinimalEmojis = _d.defaultMinimalEmojis, fullEmojiData = _d.emojiData, emojiSetDef = _d.emojiSetDef;
|
|
5195
5358
|
var reactions = propReactions || message.latest_reactions || [];
|
|
5196
5359
|
var reactionCounts = propReactionCounts || message.reaction_counts || {};
|
|
@@ -5248,8 +5411,8 @@ var ReactionsList = React__default['default'].memo(UnMemoizedReactionsList);
|
|
|
5248
5411
|
|
|
5249
5412
|
var UnMemoizedSimpleReactionsList = function (props) {
|
|
5250
5413
|
var _a = props.additionalEmojiProps, additionalEmojiProps = _a === void 0 ? {} : _a, propHandleReaction = props.handleReaction, propReactionCounts = props.reaction_counts, propReactionOptions = props.reactionOptions, propReactions = props.reactions;
|
|
5251
|
-
var _b = useEmojiContext(), Emoji = _b.Emoji, emojiConfig = _b.emojiConfig;
|
|
5252
|
-
var _c = useMessageContext(), contextHandleReaction = _c.handleReaction, message = _c.message;
|
|
5414
|
+
var _b = useEmojiContext('SimpleReactionsList'), Emoji = _b.Emoji, emojiConfig = _b.emojiConfig;
|
|
5415
|
+
var _c = useMessageContext('SimpleReactionsList'), contextHandleReaction = _c.handleReaction, message = _c.message;
|
|
5253
5416
|
var _d = emojiConfig || {}, defaultMinimalEmojis = _d.defaultMinimalEmojis, fullEmojiData = _d.emojiData, emojiSetDef = _d.emojiSetDef;
|
|
5254
5417
|
var _e = React.useState(undefined), tooltipReactionType = _e[0], setTooltipReactionType = _e[1];
|
|
5255
5418
|
var handleReaction = propHandleReaction || contextHandleReaction;
|
|
@@ -5321,7 +5484,7 @@ var SimpleReactionsList = React__default['default'].memo(UnMemoizedSimpleReactio
|
|
|
5321
5484
|
var MessageSimpleWithContext = function (props) {
|
|
5322
5485
|
var _a;
|
|
5323
5486
|
var additionalMessageInputProps = props.additionalMessageInputProps, clearEditingState = props.clearEditingState, editing = props.editing, endOfGroup = props.endOfGroup, firstOfGroup = props.firstOfGroup, groupedByUser = props.groupedByUser, handleAction = props.handleAction, handleOpenThread = props.handleOpenThread, handleRetry = props.handleRetry, isMyMessage = props.isMyMessage, isReactionEnabled = props.isReactionEnabled, message = props.message, onUserClick = props.onUserClick, onUserHover = props.onUserHover, reactionSelectorRef = props.reactionSelectorRef, showDetailedReactions = props.showDetailedReactions, threadList = props.threadList;
|
|
5324
|
-
var _b = useComponentContext(), Attachment = _b.Attachment, _c = _b.Avatar, Avatar$1 = _c === void 0 ? Avatar : _c, _d = _b.EditMessageInput, EditMessageInput = _d === void 0 ? EditMessageForm : _d, _e = _b.MessageDeleted, MessageDeleted$1 = _e === void 0 ? MessageDeleted : _e, _f = _b.MessageOptions, MessageOptions$1 = _f === void 0 ? MessageOptions : _f, _g = _b.MessageRepliesCountButton, MessageRepliesCountButton$1 = _g === void 0 ? MessageRepliesCountButton : _g, _h = _b.MessageStatus, MessageStatus$1 = _h === void 0 ? MessageStatus : _h, _j = _b.MessageTimestamp, MessageTimestamp$1 = _j === void 0 ? MessageTimestamp : _j, _k = _b.ReactionSelector, ReactionSelector$1 = _k === void 0 ? ReactionSelector : _k, _l = _b.ReactionsList, ReactionsList$1 = _l === void 0 ? ReactionsList : _l;
|
|
5487
|
+
var _b = useComponentContext('MessageSimple'), Attachment = _b.Attachment, _c = _b.Avatar, Avatar$1 = _c === void 0 ? Avatar : _c, _d = _b.EditMessageInput, EditMessageInput = _d === void 0 ? EditMessageForm : _d, _e = _b.MessageDeleted, MessageDeleted$1 = _e === void 0 ? MessageDeleted : _e, _f = _b.MessageOptions, MessageOptions$1 = _f === void 0 ? MessageOptions : _f, _g = _b.MessageRepliesCountButton, MessageRepliesCountButton$1 = _g === void 0 ? MessageRepliesCountButton : _g, _h = _b.MessageStatus, MessageStatus$1 = _h === void 0 ? MessageStatus : _h, _j = _b.MessageTimestamp, MessageTimestamp$1 = _j === void 0 ? MessageTimestamp : _j, _k = _b.ReactionSelector, ReactionSelector$1 = _k === void 0 ? ReactionSelector : _k, _l = _b.ReactionsList, ReactionsList$1 = _l === void 0 ? ReactionsList : _l;
|
|
5325
5488
|
var messageWrapperRef = React.useRef(null);
|
|
5326
5489
|
var hasAttachment = messageHasAttachments(message);
|
|
5327
5490
|
var hasReactions = messageHasReactions(message);
|
|
@@ -5361,16 +5524,37 @@ var MemoizedMessageSimple = React__default['default'].memo(MessageSimpleWithCont
|
|
|
5361
5524
|
* The default UI component that renders a message and receives functionality and logic from the MessageContext.
|
|
5362
5525
|
*/
|
|
5363
5526
|
var MessageSimple = function (props) {
|
|
5364
|
-
var messageContext = useMessageContext();
|
|
5527
|
+
var messageContext = useMessageContext('MessageSimple');
|
|
5365
5528
|
return React__default['default'].createElement(MemoizedMessageSimple, __assign({}, messageContext, props));
|
|
5366
5529
|
};
|
|
5367
5530
|
|
|
5368
|
-
var
|
|
5531
|
+
var DropzoneInner = function (_a) {
|
|
5532
|
+
var children = _a.children;
|
|
5533
|
+
var _b = useChannelStateContext('DropzoneProvider'), acceptedFiles = _b.acceptedFiles, multipleUploads = _b.multipleUploads;
|
|
5534
|
+
var _c = useMessageInputContext('DropzoneProvider'), cooldownRemaining = _c.cooldownRemaining, isUploadEnabled = _c.isUploadEnabled, maxFilesLeft = _c.maxFilesLeft, uploadNewFiles = _c.uploadNewFiles;
|
|
5535
|
+
return (React__default['default'].createElement(reactFileUtils.ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads }, children));
|
|
5536
|
+
};
|
|
5537
|
+
var DropzoneProvider = function (props) {
|
|
5538
|
+
var cooldownTimerState = useCooldownTimer();
|
|
5539
|
+
var messageInputState = useMessageInputState(props);
|
|
5540
|
+
var messageInputContextValue = useCreateMessageInputContext(__assign(__assign(__assign({}, cooldownTimerState), messageInputState), props));
|
|
5541
|
+
return (React__default['default'].createElement(MessageInputContextProvider, { value: messageInputContextValue },
|
|
5542
|
+
React__default['default'].createElement(DropzoneInner, null, props.children)));
|
|
5543
|
+
};
|
|
5544
|
+
|
|
5545
|
+
var TypingContext = React__default['default'].createContext(undefined);
|
|
5369
5546
|
var TypingProvider = function (_a) {
|
|
5370
5547
|
var children = _a.children, value = _a.value;
|
|
5371
5548
|
return (React__default['default'].createElement(TypingContext.Provider, { value: value }, children));
|
|
5372
5549
|
};
|
|
5373
|
-
var useTypingContext = function () {
|
|
5550
|
+
var useTypingContext = function (componentName) {
|
|
5551
|
+
var contextValue = React.useContext(TypingContext);
|
|
5552
|
+
if (!contextValue) {
|
|
5553
|
+
console.warn("The useTypingContext hook was called outside of the TypingContext provider. Make sure this hook is called within a child of the Channel component. The errored call is located in the " + componentName + " component.");
|
|
5554
|
+
return {};
|
|
5555
|
+
}
|
|
5556
|
+
return contextValue;
|
|
5557
|
+
};
|
|
5374
5558
|
/**
|
|
5375
5559
|
* Typescript currently does not support partial inference, so if TypingContext
|
|
5376
5560
|
* typing is desired while using the HOC withTypingContext, the Props for the
|
|
@@ -5391,25 +5575,27 @@ var compressed=true;var categories=[{id:"people",name:"Smileys & People",emojis:
|
|
|
5391
5575
|
|
|
5392
5576
|
var UnMemoizedChannel = function (props) {
|
|
5393
5577
|
var propsChannel = props.channel, _a = props.EmptyPlaceholder, EmptyPlaceholder = _a === void 0 ? null : _a;
|
|
5394
|
-
var contextChannel = useChatContext().channel;
|
|
5578
|
+
var contextChannel = useChatContext('Channel').channel;
|
|
5395
5579
|
var channel = propsChannel || contextChannel;
|
|
5396
5580
|
if (!(channel === null || channel === void 0 ? void 0 : channel.cid))
|
|
5397
5581
|
return EmptyPlaceholder;
|
|
5398
5582
|
return React__default['default'].createElement(ChannelInner, __assign({}, props, { channel: channel, key: channel.cid }));
|
|
5399
5583
|
};
|
|
5400
5584
|
var ChannelInner = function (props) {
|
|
5401
|
-
var
|
|
5402
|
-
var
|
|
5403
|
-
var
|
|
5404
|
-
var
|
|
5405
|
-
var
|
|
5585
|
+
var _a;
|
|
5586
|
+
var acceptedFiles = props.acceptedFiles, activeUnreadHandler = props.activeUnreadHandler, channel = props.channel, children = props.children, doMarkReadRequest = props.doMarkReadRequest, doSendMessageRequest = props.doSendMessageRequest, doUpdateMessageRequest = props.doUpdateMessageRequest, _b = props.dragAndDropWindow, dragAndDropWindow = _b === void 0 ? false : _b, _c = props.emojiData, emojiData = _c === void 0 ? defaultEmojiData : _c, _d = props.LoadingErrorIndicator, LoadingErrorIndicator$1 = _d === void 0 ? LoadingErrorIndicator : _d, _e = props.LoadingIndicator, LoadingIndicator$1 = _e === void 0 ? LoadingIndicator : _e, maxNumberOfFiles = props.maxNumberOfFiles, _f = props.multipleUploads, multipleUploads = _f === void 0 ? true : _f, onMentionsClick = props.onMentionsClick, onMentionsHover = props.onMentionsHover, _g = props.optionalMessageInputProps, optionalMessageInputProps = _g === void 0 ? {} : _g, skipMessageDataMemoization = props.skipMessageDataMemoization;
|
|
5587
|
+
var _h = useChatContext('Channel'), client = _h.client, customClasses = _h.customClasses, mutes = _h.mutes, theme = _h.theme, useImageFlagEmojisOnWindows = _h.useImageFlagEmojisOnWindows;
|
|
5588
|
+
var t = useTranslationContext('Channel').t;
|
|
5589
|
+
var _j = React.useState(channel.getConfig()), channelConfig = _j[0], setChannelConfig = _j[1];
|
|
5590
|
+
var _k = React.useState([]), notifications = _k[0], setNotifications = _k[1];
|
|
5591
|
+
var _l = React.useState(), quotedMessage = _l[0], setQuotedMessage = _l[1];
|
|
5406
5592
|
var notificationTimeouts = [];
|
|
5407
|
-
var
|
|
5593
|
+
var _m = React.useReducer(channelReducer, initialState), state = _m[0], dispatch = _m[1];
|
|
5408
5594
|
var isMounted = useIsMounted();
|
|
5409
5595
|
var originalTitle = React.useRef('');
|
|
5410
5596
|
var lastRead = React.useRef(new Date());
|
|
5411
5597
|
var online = React.useRef(true);
|
|
5412
|
-
var
|
|
5598
|
+
var channelCapabilitiesArray = (_a = channel.data) === null || _a === void 0 ? void 0 : _a.own_capabilities;
|
|
5413
5599
|
var emojiConfig = {
|
|
5414
5600
|
commonEmoji: commonEmoji,
|
|
5415
5601
|
defaultMinimalEmojis: defaultMinimalEmojis,
|
|
@@ -5431,7 +5617,10 @@ var ChannelInner = function (props) {
|
|
|
5431
5617
|
else {
|
|
5432
5618
|
streamChat.logChatPromiseExecution(channel.markRead(), 'mark read');
|
|
5433
5619
|
}
|
|
5434
|
-
if (
|
|
5620
|
+
if (activeUnreadHandler) {
|
|
5621
|
+
activeUnreadHandler(0, originalTitle.current);
|
|
5622
|
+
}
|
|
5623
|
+
else if (originalTitle.current) {
|
|
5435
5624
|
document.title = originalTitle.current;
|
|
5436
5625
|
}
|
|
5437
5626
|
};
|
|
@@ -5445,6 +5634,8 @@ var ChannelInner = function (props) {
|
|
|
5445
5634
|
type: 'updateThreadOnEvent',
|
|
5446
5635
|
});
|
|
5447
5636
|
}
|
|
5637
|
+
if (event.type === 'user.watching.start' || event.type === 'user.watching.stop')
|
|
5638
|
+
return;
|
|
5448
5639
|
if (event.type === 'typing.start' || event.type === 'typing.stop') {
|
|
5449
5640
|
return dispatch({ channel: channel, type: 'setTyping' });
|
|
5450
5641
|
}
|
|
@@ -5482,7 +5673,7 @@ var ChannelInner = function (props) {
|
|
|
5482
5673
|
markRead();
|
|
5483
5674
|
};
|
|
5484
5675
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
5485
|
-
var e_1;
|
|
5676
|
+
var config, e_1;
|
|
5486
5677
|
return __generator(this, function (_a) {
|
|
5487
5678
|
switch (_a.label) {
|
|
5488
5679
|
case 0:
|
|
@@ -5493,6 +5684,8 @@ var ChannelInner = function (props) {
|
|
|
5493
5684
|
return [4 /*yield*/, channel.watch()];
|
|
5494
5685
|
case 2:
|
|
5495
5686
|
_a.sent();
|
|
5687
|
+
config = channel.getConfig();
|
|
5688
|
+
setChannelConfig(config);
|
|
5496
5689
|
return [3 /*break*/, 4];
|
|
5497
5690
|
case 3:
|
|
5498
5691
|
e_1 = _a.sent();
|
|
@@ -5761,7 +5954,7 @@ var ChannelInner = function (props) {
|
|
|
5761
5954
|
var onMentionsHoverOrClick = useMentionsHandlers(onMentionsHover, onMentionsClick);
|
|
5762
5955
|
var editMessage = useEditMessageHandler(doUpdateMessageRequest);
|
|
5763
5956
|
var typing = state.typing, restState = __rest(state, ["typing"]);
|
|
5764
|
-
var channelStateContextValue = useCreateChannelStateContext(__assign(__assign({}, restState), { acceptedFiles: acceptedFiles, channel: channel, channelConfig: channelConfig, maxNumberOfFiles: maxNumberOfFiles, multipleUploads: multipleUploads, mutes: mutes, notifications: notifications, quotedMessage: quotedMessage, watcher_count: state.watcherCount }));
|
|
5957
|
+
var channelStateContextValue = useCreateChannelStateContext(__assign(__assign({}, restState), { acceptedFiles: acceptedFiles, channel: channel, channelCapabilitiesArray: channelCapabilitiesArray, channelConfig: channelConfig, dragAndDropWindow: dragAndDropWindow, maxNumberOfFiles: maxNumberOfFiles, multipleUploads: multipleUploads, mutes: mutes, notifications: notifications, quotedMessage: quotedMessage, watcher_count: state.watcherCount }));
|
|
5765
5958
|
var channelActionContextValue = React.useMemo(function () { return ({
|
|
5766
5959
|
addNotification: addNotification,
|
|
5767
5960
|
closeThread: closeThread,
|
|
@@ -5826,10 +6019,16 @@ var ChannelInner = function (props) {
|
|
|
5826
6019
|
typing: typing,
|
|
5827
6020
|
});
|
|
5828
6021
|
var chatClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.chat) || 'str-chat';
|
|
6022
|
+
var chatContainerClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.chatContainer) || 'str-chat__container';
|
|
5829
6023
|
var channelClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.channel) || 'str-chat-channel';
|
|
5830
6024
|
var windowsEmojiClass = useImageFlagEmojisOnWindows && navigator.userAgent.match(/Win/)
|
|
5831
6025
|
? 'str-chat--windows-flags'
|
|
5832
6026
|
: '';
|
|
6027
|
+
var NullProvider = function (_a) {
|
|
6028
|
+
var children = _a.children;
|
|
6029
|
+
return React__default['default'].createElement(React__default['default'].Fragment, null, children);
|
|
6030
|
+
};
|
|
6031
|
+
var OptionalMessageInputProvider = React.useMemo(function () { return (dragAndDropWindow ? DropzoneProvider : NullProvider); }, [dragAndDropWindow]);
|
|
5833
6032
|
if (state.error) {
|
|
5834
6033
|
return (React__default['default'].createElement("div", { className: chatClass + " " + channelClass + " " + theme },
|
|
5835
6034
|
React__default['default'].createElement(LoadingErrorIndicator$1, { error: state.error })));
|
|
@@ -5848,7 +6047,8 @@ var ChannelInner = function (props) {
|
|
|
5848
6047
|
React__default['default'].createElement(ComponentProvider, { value: componentContextValue },
|
|
5849
6048
|
React__default['default'].createElement(EmojiProvider, { value: emojiContextValue },
|
|
5850
6049
|
React__default['default'].createElement(TypingProvider, { value: typingContextValue },
|
|
5851
|
-
React__default['default'].createElement("div", { className:
|
|
6050
|
+
React__default['default'].createElement("div", { className: "" + chatContainerClass },
|
|
6051
|
+
React__default['default'].createElement(OptionalMessageInputProvider, __assign({}, optionalMessageInputProps), children)))))))));
|
|
5852
6052
|
};
|
|
5853
6053
|
/**
|
|
5854
6054
|
* A wrapper component that provides channel data and renders children.
|
|
@@ -5863,9 +6063,9 @@ var Channel = React__default['default'].memo(UnMemoizedChannel);
|
|
|
5863
6063
|
|
|
5864
6064
|
var UnMemoizedChannelHeader = function (props) {
|
|
5865
6065
|
var _a = props.Avatar, Avatar$1 = _a === void 0 ? Avatar : _a, propImage = props.image, live = props.live, title = props.title;
|
|
5866
|
-
var _b = useChannelStateContext(), channel = _b.channel, watcher_count = _b.watcher_count;
|
|
5867
|
-
var openMobileNav = useChatContext().openMobileNav;
|
|
5868
|
-
var t = useTranslationContext().t;
|
|
6066
|
+
var _b = useChannelStateContext('ChannelHeader'), channel = _b.channel, watcher_count = _b.watcher_count;
|
|
6067
|
+
var openMobileNav = useChatContext('ChannelHeader').openMobileNav;
|
|
6068
|
+
var t = useTranslationContext('ChannelHeader').t;
|
|
5869
6069
|
var _c = (channel === null || channel === void 0 ? void 0 : channel.data) || {}, channelImage = _c.image, member_count = _c.member_count, name = _c.name, subtitle = _c.subtitle;
|
|
5870
6070
|
var image = propImage || channelImage;
|
|
5871
6071
|
return (React__default['default'].createElement("div", { className: 'str-chat__header-livestream' },
|
|
@@ -5898,7 +6098,7 @@ var img = "data:image/svg+xml,%3c%3fxml version='1.0' encoding='UTF-8'%3f%3e%3cs
|
|
|
5898
6098
|
|
|
5899
6099
|
var UnMemoizedChatDown = function (props) {
|
|
5900
6100
|
var image = props.image, text = props.text, _a = props.type, type = _a === void 0 ? 'Error' : _a;
|
|
5901
|
-
var t = useTranslationContext().t;
|
|
6101
|
+
var t = useTranslationContext('ChatDown').t;
|
|
5902
6102
|
return (React__default['default'].createElement("div", { className: 'str-chat__down' },
|
|
5903
6103
|
React__default['default'].createElement(LoadingChannels, null),
|
|
5904
6104
|
React__default['default'].createElement("div", { className: 'str-chat__down-main' },
|
|
@@ -5927,7 +6127,7 @@ var ChannelListMessenger = function (props) {
|
|
|
5927
6127
|
};
|
|
5928
6128
|
|
|
5929
6129
|
var useChannelDeletedListener = function (setChannels, customHandler) {
|
|
5930
|
-
var client = useChatContext().client;
|
|
6130
|
+
var client = useChatContext('useChannelDeletedListener').client;
|
|
5931
6131
|
React.useEffect(function () {
|
|
5932
6132
|
var handleEvent = function (event) {
|
|
5933
6133
|
if (customHandler && typeof customHandler === 'function') {
|
|
@@ -5952,7 +6152,7 @@ var useChannelDeletedListener = function (setChannels, customHandler) {
|
|
|
5952
6152
|
};
|
|
5953
6153
|
|
|
5954
6154
|
var useChannelHiddenListener = function (setChannels, customHandler) {
|
|
5955
|
-
var client = useChatContext().client;
|
|
6155
|
+
var client = useChatContext('useChannelHiddenListener').client;
|
|
5956
6156
|
React.useEffect(function () {
|
|
5957
6157
|
var handleEvent = function (event) {
|
|
5958
6158
|
if (customHandler && typeof customHandler === 'function') {
|
|
@@ -5977,7 +6177,7 @@ var useChannelHiddenListener = function (setChannels, customHandler) {
|
|
|
5977
6177
|
};
|
|
5978
6178
|
|
|
5979
6179
|
var useChannelTruncatedListener = function (setChannels, customHandler, forceUpdate) {
|
|
5980
|
-
var client = useChatContext().client;
|
|
6180
|
+
var client = useChatContext('useChannelTruncatedListener').client;
|
|
5981
6181
|
React.useEffect(function () {
|
|
5982
6182
|
var handleEvent = function (event) {
|
|
5983
6183
|
setChannels(function (channels) { return __spreadArray([], channels); });
|
|
@@ -5996,7 +6196,7 @@ var useChannelTruncatedListener = function (setChannels, customHandler, forceUpd
|
|
|
5996
6196
|
};
|
|
5997
6197
|
|
|
5998
6198
|
var useChannelUpdatedListener = function (setChannels, customHandler, forceUpdate) {
|
|
5999
|
-
var client = useChatContext().client;
|
|
6199
|
+
var client = useChatContext('useChannelUpdatedListener').client;
|
|
6000
6200
|
React.useEffect(function () {
|
|
6001
6201
|
var handleEvent = function (event) {
|
|
6002
6202
|
setChannels(function (channels) {
|
|
@@ -6048,7 +6248,7 @@ var moveChannelUp = function (_a) {
|
|
|
6048
6248
|
};
|
|
6049
6249
|
|
|
6050
6250
|
var useChannelVisibleListener = function (setChannels, customHandler) {
|
|
6051
|
-
var client = useChatContext().client;
|
|
6251
|
+
var client = useChatContext('useChannelVisibleListener').client;
|
|
6052
6252
|
React.useEffect(function () {
|
|
6053
6253
|
var handleEvent = function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
6054
6254
|
var channel_1;
|
|
@@ -6077,7 +6277,7 @@ var useChannelVisibleListener = function (setChannels, customHandler) {
|
|
|
6077
6277
|
};
|
|
6078
6278
|
|
|
6079
6279
|
var useConnectionRecoveredListener = function (forceUpdate) {
|
|
6080
|
-
var client = useChatContext().client;
|
|
6280
|
+
var client = useChatContext('useConnectionRecoveredListener').client;
|
|
6081
6281
|
React.useEffect(function () {
|
|
6082
6282
|
var handleEvent = function () {
|
|
6083
6283
|
if (forceUpdate) {
|
|
@@ -6094,7 +6294,7 @@ var useConnectionRecoveredListener = function (forceUpdate) {
|
|
|
6094
6294
|
var useMessageNewListener = function (setChannels, lockChannelOrder, allowNewMessagesFromUnfilteredChannels) {
|
|
6095
6295
|
if (lockChannelOrder === void 0) { lockChannelOrder = false; }
|
|
6096
6296
|
if (allowNewMessagesFromUnfilteredChannels === void 0) { allowNewMessagesFromUnfilteredChannels = true; }
|
|
6097
|
-
var client = useChatContext().client;
|
|
6297
|
+
var client = useChatContext('useMessageNewListener').client;
|
|
6098
6298
|
React.useEffect(function () {
|
|
6099
6299
|
var handleEvent = function (event) {
|
|
6100
6300
|
setChannels(function (channels) {
|
|
@@ -6134,7 +6334,7 @@ var useMobileNavigation = function (channelListRef, navOpen, closeMobileNav) {
|
|
|
6134
6334
|
|
|
6135
6335
|
var useNotificationAddedToChannelListener = function (setChannels, customHandler, allowNewMessagesFromUnfilteredChannels) {
|
|
6136
6336
|
if (allowNewMessagesFromUnfilteredChannels === void 0) { allowNewMessagesFromUnfilteredChannels = true; }
|
|
6137
|
-
var client = useChatContext().client;
|
|
6337
|
+
var client = useChatContext('useNotificationAddedToChannelListener').client;
|
|
6138
6338
|
React.useEffect(function () {
|
|
6139
6339
|
var handleEvent = function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
6140
6340
|
var channel_1;
|
|
@@ -6165,7 +6365,7 @@ var useNotificationAddedToChannelListener = function (setChannels, customHandler
|
|
|
6165
6365
|
|
|
6166
6366
|
var useNotificationMessageNewListener = function (setChannels, customHandler, allowNewMessagesFromUnfilteredChannels) {
|
|
6167
6367
|
if (allowNewMessagesFromUnfilteredChannels === void 0) { allowNewMessagesFromUnfilteredChannels = true; }
|
|
6168
|
-
var client = useChatContext().client;
|
|
6368
|
+
var client = useChatContext('useNotificationMessageNewListener').client;
|
|
6169
6369
|
React.useEffect(function () {
|
|
6170
6370
|
var handleEvent = function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
6171
6371
|
var channel_1;
|
|
@@ -6195,7 +6395,7 @@ var useNotificationMessageNewListener = function (setChannels, customHandler, al
|
|
|
6195
6395
|
};
|
|
6196
6396
|
|
|
6197
6397
|
var useNotificationRemovedFromChannelListener = function (setChannels, customHandler) {
|
|
6198
|
-
var client = useChatContext().client;
|
|
6398
|
+
var client = useChatContext('useNotificationRemovedFromChannelListener').client;
|
|
6199
6399
|
React.useEffect(function () {
|
|
6200
6400
|
var handleEvent = function (event) {
|
|
6201
6401
|
if (customHandler && typeof customHandler === 'function') {
|
|
@@ -6226,6 +6426,7 @@ var usePaginatedChannels = function (client, filters, sort, options, activeChann
|
|
|
6226
6426
|
return __generator(this, function (_b) {
|
|
6227
6427
|
switch (_b.label) {
|
|
6228
6428
|
case 0:
|
|
6429
|
+
setError(false);
|
|
6229
6430
|
if (queryType === 'reload') {
|
|
6230
6431
|
setChannels([]);
|
|
6231
6432
|
setLoadingChannels(true);
|
|
@@ -6279,7 +6480,7 @@ var usePaginatedChannels = function (client, filters, sort, options, activeChann
|
|
|
6279
6480
|
};
|
|
6280
6481
|
|
|
6281
6482
|
var useUserPresenceChangedListener = function (setChannels) {
|
|
6282
|
-
var client = useChatContext().client;
|
|
6483
|
+
var client = useChatContext('useUserPresenceChangedListener').client;
|
|
6283
6484
|
React.useEffect(function () {
|
|
6284
6485
|
var handleEvent = function (event) {
|
|
6285
6486
|
setChannels(function (channels) {
|
|
@@ -6332,7 +6533,7 @@ var UnMemoizedChannelPreviewMessenger = function (props) {
|
|
|
6332
6533
|
var ChannelPreviewMessenger = React__default['default'].memo(UnMemoizedChannelPreviewMessenger);
|
|
6333
6534
|
|
|
6334
6535
|
var useIsChannelMuted = function (channel) {
|
|
6335
|
-
var client = useChatContext().client;
|
|
6536
|
+
var client = useChatContext('useIsChannelMuted').client;
|
|
6336
6537
|
var _a = React.useState(channel.muteStatus()), muted = _a[0], setMuted = _a[1];
|
|
6337
6538
|
React.useEffect(function () {
|
|
6338
6539
|
var handleEvent = function () { return setMuted(channel.muteStatus()); };
|
|
@@ -6394,8 +6595,8 @@ var getDisplayImage = function (channel, currentUser) {
|
|
|
6394
6595
|
|
|
6395
6596
|
var ChannelPreview = function (props) {
|
|
6396
6597
|
var channel = props.channel, _a = props.Preview, Preview = _a === void 0 ? ChannelPreviewMessenger : _a;
|
|
6397
|
-
var _b = useChatContext(), activeChannel = _b.channel, client = _b.client, setActiveChannel = _b.setActiveChannel;
|
|
6398
|
-
var _c = useTranslationContext(), t = _c.t, userLanguage = _c.userLanguage;
|
|
6598
|
+
var _b = useChatContext('ChannelPreview'), activeChannel = _b.channel, client = _b.client, setActiveChannel = _b.setActiveChannel;
|
|
6599
|
+
var _c = useTranslationContext('ChannelPreview'), t = _c.t, userLanguage = _c.userLanguage;
|
|
6399
6600
|
var _d = React.useState(channel.state.messages[channel.state.messages.length - 1]), lastMessage = _d[0], setLastMessage = _d[1];
|
|
6400
6601
|
var _e = React.useState(0), unread = _e[0], setUnread = _e[1];
|
|
6401
6602
|
var isActive = (activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.cid) === channel.cid;
|
|
@@ -6448,7 +6649,7 @@ var ChannelPreview = function (props) {
|
|
|
6448
6649
|
|
|
6449
6650
|
var SearchInput = function (props) {
|
|
6450
6651
|
var channelSearchParams = props.channelSearchParams, inputRef = props.inputRef, onSearch = props.onSearch, query = props.query, searchFunction = props.searchFunction;
|
|
6451
|
-
var t = useTranslationContext().t;
|
|
6652
|
+
var t = useTranslationContext('SearchInput').t;
|
|
6452
6653
|
return (React__default['default'].createElement("input", { className: 'str-chat__channel-search-input', onChange: function (event) {
|
|
6453
6654
|
return searchFunction ? searchFunction(channelSearchParams, event) : onSearch(event);
|
|
6454
6655
|
}, placeholder: t('Search'), ref: inputRef, type: 'text', value: query }));
|
|
@@ -6480,7 +6681,7 @@ var DefaultSearchResultItem = function (props) {
|
|
|
6480
6681
|
};
|
|
6481
6682
|
var SearchResults = function (props) {
|
|
6482
6683
|
var _a = props.DropdownContainer, DropdownContainer = _a === void 0 ? DefaultDropdownContainer : _a, popupResults = props.popupResults, results = props.results, searching = props.searching, SearchEmpty = props.SearchEmpty, SearchResultsHeader = props.SearchResultsHeader, SearchLoading = props.SearchLoading, _b = props.SearchResultItem, SearchResultItem = _b === void 0 ? DefaultSearchResultItem : _b, selectResult = props.selectResult;
|
|
6483
|
-
var t = useTranslationContext().t;
|
|
6684
|
+
var t = useTranslationContext('SearchResults').t;
|
|
6484
6685
|
var _c = React.useState(), focusedUser = _c[0], setFocusedUser = _c[1];
|
|
6485
6686
|
var device = useBreakpoint().device;
|
|
6486
6687
|
var containerStyle = popupResults && device === 'full' ? 'popup' : 'inline';
|
|
@@ -6528,7 +6729,7 @@ var SearchResults = function (props) {
|
|
|
6528
6729
|
|
|
6529
6730
|
var UnMemoizedChannelSearch = function (props) {
|
|
6530
6731
|
var _a = props.channelType, channelType = _a === void 0 ? 'messaging' : _a, DropdownContainer = props.DropdownContainer, onSelectResult = props.onSelectResult, _b = props.popupResults, popupResults = _b === void 0 ? false : _b, SearchEmpty = props.SearchEmpty, _c = props.searchForChannels, searchForChannels = _c === void 0 ? false : _c, searchFunction = props.searchFunction, _d = props.SearchInput, SearchInput$1 = _d === void 0 ? SearchInput : _d, SearchLoading = props.SearchLoading, searchQueryParams = props.searchQueryParams, SearchResultItem = props.SearchResultItem, SearchResultsHeader = props.SearchResultsHeader;
|
|
6531
|
-
var _e = useChatContext(), client = _e.client, setActiveChannel = _e.setActiveChannel;
|
|
6732
|
+
var _e = useChatContext('ChannelSearch'), client = _e.client, setActiveChannel = _e.setActiveChannel;
|
|
6532
6733
|
var _f = React.useState(''), query = _f[0], setQuery = _f[1];
|
|
6533
6734
|
var _g = React.useState([]), results = _g[0], setResults = _g[1];
|
|
6534
6735
|
var _h = React.useState(false), resultsOpen = _h[0], setResultsOpen = _h[1];
|
|
@@ -6642,7 +6843,7 @@ var ChannelSearch = React__default['default'].memo(UnMemoizedChannelSearch);
|
|
|
6642
6843
|
|
|
6643
6844
|
var UnMemoizedEmptyStateIndicator = function (props) {
|
|
6644
6845
|
var listType = props.listType;
|
|
6645
|
-
var t = useTranslationContext().t;
|
|
6846
|
+
var t = useTranslationContext('EmptyStateIndicator').t;
|
|
6646
6847
|
if (listType === 'channel')
|
|
6647
6848
|
return React__default['default'].createElement("p", null, t('You have no channels currently'));
|
|
6648
6849
|
if (listType === 'message')
|
|
@@ -6672,7 +6873,7 @@ var DEFAULT_OPTIONS = {};
|
|
|
6672
6873
|
var DEFAULT_SORT = {};
|
|
6673
6874
|
var UnMemoizedChannelList = function (props) {
|
|
6674
6875
|
var additionalChannelSearchProps = props.additionalChannelSearchProps, _a = props.Avatar, Avatar$1 = _a === void 0 ? Avatar : _a, allowNewMessagesFromUnfilteredChannels = props.allowNewMessagesFromUnfilteredChannels, channelRenderFilterFn = props.channelRenderFilterFn, _b = props.ChannelSearch, ChannelSearch$1 = _b === void 0 ? ChannelSearch : _b, customActiveChannel = props.customActiveChannel, _c = props.EmptyStateIndicator, EmptyStateIndicator$1 = _c === void 0 ? EmptyStateIndicator : _c, filters = props.filters, _d = props.LoadingErrorIndicator, LoadingErrorIndicator = _d === void 0 ? ChatDown : _d, _e = props.LoadingIndicator, LoadingIndicator = _e === void 0 ? LoadingChannels : _e, _f = props.List, List = _f === void 0 ? ChannelListMessenger : _f, lockChannelOrder = props.lockChannelOrder, onAddedToChannel = props.onAddedToChannel, onChannelDeleted = props.onChannelDeleted, onChannelHidden = props.onChannelHidden, onChannelTruncated = props.onChannelTruncated, onChannelUpdated = props.onChannelUpdated, onChannelVisible = props.onChannelVisible, onMessageNew = props.onMessageNew, onRemovedFromChannel = props.onRemovedFromChannel, options = props.options, _g = props.Paginator, Paginator = _g === void 0 ? LoadMorePaginator : _g, Preview = props.Preview, _h = props.sendChannelsToList, sendChannelsToList = _h === void 0 ? false : _h, _j = props.setActiveChannelOnMount, setActiveChannelOnMount = _j === void 0 ? true : _j, _k = props.showChannelSearch, showChannelSearch = _k === void 0 ? false : _k, _l = props.sort, sort = _l === void 0 ? DEFAULT_SORT : _l, _m = props.watchers, watchers = _m === void 0 ? {} : _m;
|
|
6675
|
-
var _o = useChatContext(), channel = _o.channel, client = _o.client, closeMobileNav = _o.closeMobileNav, customClasses = _o.customClasses, _p = _o.navOpen, navOpen = _p === void 0 ? false : _p, setActiveChannel = _o.setActiveChannel, theme = _o.theme, useImageFlagEmojisOnWindows = _o.useImageFlagEmojisOnWindows;
|
|
6876
|
+
var _o = useChatContext('ChannelList'), channel = _o.channel, client = _o.client, closeMobileNav = _o.closeMobileNav, customClasses = _o.customClasses, _p = _o.navOpen, navOpen = _p === void 0 ? false : _p, setActiveChannel = _o.setActiveChannel, theme = _o.theme, useImageFlagEmojisOnWindows = _o.useImageFlagEmojisOnWindows;
|
|
6676
6877
|
var channelListRef = React.useRef(null);
|
|
6677
6878
|
var _q = React.useState(0), channelUpdateCount = _q[0], setChannelUpdateCount = _q[1];
|
|
6678
6879
|
/**
|
|
@@ -6684,7 +6885,7 @@ var UnMemoizedChannelList = function (props) {
|
|
|
6684
6885
|
return __generator(this, function (_a) {
|
|
6685
6886
|
switch (_a.label) {
|
|
6686
6887
|
case 0:
|
|
6687
|
-
if (channels.length
|
|
6888
|
+
if (!channels.length || channels.length > ((options === null || options === void 0 ? void 0 : options.limit) || MAX_QUERY_CHANNELS_LIMIT)) {
|
|
6688
6889
|
return [2 /*return*/];
|
|
6689
6890
|
}
|
|
6690
6891
|
if (!customActiveChannel) return [3 /*break*/, 3];
|
|
@@ -6735,7 +6936,7 @@ var UnMemoizedChannelList = function (props) {
|
|
|
6735
6936
|
useUserPresenceChangedListener(setChannels);
|
|
6736
6937
|
React.useEffect(function () {
|
|
6737
6938
|
var handleEvent = function (event) {
|
|
6738
|
-
if (
|
|
6939
|
+
if (event.cid === (channel === null || channel === void 0 ? void 0 : channel.cid)) {
|
|
6739
6940
|
setActiveChannel();
|
|
6740
6941
|
}
|
|
6741
6942
|
};
|
|
@@ -6745,10 +6946,8 @@ var UnMemoizedChannelList = function (props) {
|
|
|
6745
6946
|
client.off('channel.deleted', handleEvent);
|
|
6746
6947
|
client.off('channel.hidden', handleEvent);
|
|
6747
6948
|
};
|
|
6748
|
-
}, [channel]);
|
|
6949
|
+
}, [channel === null || channel === void 0 ? void 0 : channel.cid]);
|
|
6749
6950
|
var renderChannel = function (item) {
|
|
6750
|
-
if (!item)
|
|
6751
|
-
return null;
|
|
6752
6951
|
var previewProps = {
|
|
6753
6952
|
activeChannel: channel,
|
|
6754
6953
|
Avatar: Avatar$1,
|
|
@@ -6761,7 +6960,6 @@ var UnMemoizedChannelList = function (props) {
|
|
|
6761
6960
|
};
|
|
6762
6961
|
return React__default['default'].createElement(ChannelPreview, __assign({}, previewProps));
|
|
6763
6962
|
};
|
|
6764
|
-
var renderList = function () { return (React__default['default'].createElement(List, { error: status.error, loadedChannels: sendChannelsToList ? loadedChannels : undefined, loading: status.loadingChannels, LoadingErrorIndicator: LoadingErrorIndicator, LoadingIndicator: LoadingIndicator }, !loadedChannels || loadedChannels.length === 0 ? (React__default['default'].createElement(EmptyStateIndicator$1, { listType: 'channel' })) : (React__default['default'].createElement(Paginator, { hasNextPage: hasNextPage, loadNextPage: loadNextPage, refreshing: status.refreshing }, loadedChannels.map(renderChannel))))); };
|
|
6765
6963
|
var chatClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.chat) || 'str-chat';
|
|
6766
6964
|
var channelListClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.channelList) || 'str-chat-channel-list';
|
|
6767
6965
|
var navigationClass = navOpen ? 'str-chat-channel-list--open' : '';
|
|
@@ -6771,36 +6969,36 @@ var UnMemoizedChannelList = function (props) {
|
|
|
6771
6969
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
6772
6970
|
React__default['default'].createElement("div", { className: chatClass + " " + channelListClass + " " + theme + " " + navigationClass + " " + windowsEmojiClass, ref: channelListRef },
|
|
6773
6971
|
showChannelSearch && React__default['default'].createElement(ChannelSearch$1, __assign({}, additionalChannelSearchProps)),
|
|
6774
|
-
|
|
6972
|
+
React__default['default'].createElement(List, { error: status.error, loadedChannels: sendChannelsToList ? loadedChannels : undefined, loading: status.loadingChannels, LoadingErrorIndicator: LoadingErrorIndicator, LoadingIndicator: LoadingIndicator, setChannels: setChannels }, !(loadedChannels === null || loadedChannels === void 0 ? void 0 : loadedChannels.length) ? (React__default['default'].createElement(EmptyStateIndicator$1, { listType: 'channel' })) : (React__default['default'].createElement(Paginator, { hasNextPage: hasNextPage, loadNextPage: loadNextPage, refreshing: status.refreshing }, loadedChannels.map(renderChannel)))))));
|
|
6775
6973
|
};
|
|
6776
6974
|
/**
|
|
6777
6975
|
* Renders a preview list of Channels, allowing you to select the Channel you want to open
|
|
6778
6976
|
*/
|
|
6779
6977
|
var ChannelList = React__default['default'].memo(UnMemoizedChannelList);
|
|
6780
6978
|
|
|
6781
|
-
var Cancel$b="Stornieren";var Close$b="Schließen";var Delete$b="Löschen";var Delivered$b="Geliefert";var Flag$b="Flagge";var Mute$b="Stumm";var New$b="Neu";var Pin$b="Stift";var Reply$b="Antworten";var Search$b="Suche";var Send$b="Senden";var Thread$c="
|
|
6979
|
+
var Cancel$b="Stornieren";var Close$b="Schließen";var Delete$b="Löschen";var Delivered$b="Geliefert";var Flag$b="Flagge";var Mute$b="Stumm";var New$b="Neu";var Pin$b="Stift";var Reply$b="Antworten";var Search$b="Suche";var Send$b="Senden";var Thread$c="Thread";var Unmute$b="Stummschaltung aufheben";var Unpin$b="Lösen Sie den Stift";var live$b="live";var deTranslations = {"1 reply":"1 Antwort","Attach files":"Dateien anhängen",Cancel:Cancel$b,"Channel Missing":"Kanal fehlt",Close:Close$b,"Close emoji picker":"Emoji-Picker schließen","Commands matching":"Übereinstimmende Befehle","Connection failure, reconnecting now...":"Verbindungsfehler, jetzt wieder verbinden...",Delete:Delete$b,Delivered:Delivered$b,"Edit Message":"Nachricht bearbeiten","Edit message request failed":"Anfrage zum Bearbeiten der Nachricht fehlgeschlagen","Emoji matching":"Emoji passend","Empty message...":"Leere Nachricht...","Error adding flag":"Fehler beim Hinzufügen des Flags","Error connecting to chat, refresh the page to try again.":"Fehler beim Herstellen einer Verbindung zum Chat. Aktualisieren Sie die Seite, um es erneut zu versuchen.","Error deleting message":"Fehler beim Löschen der Nachricht","Error muting a user ...":"Fehler beim Stummschalten eines Benutzers...","Error pinning message":"Fehler beim Fixieren der Nachricht","Error removing message pin":"Fehler beim Entfernen des Nachrichten-Pins","Error unmuting a user ...":"Fehler beim Stummschalten eines Benutzers...","Error uploading file":"Fehler beim Hochladen der Datei","Error uploading image":"Fehler beim hochladen des Bildes","Error · Unsent":"Fehler nicht gesendet","Error: {{ errorMessage }}":"Fehler: {{ errorMessage }}",Flag:Flag$b,"Message Failed · Click to try again":"Nachricht fehlgeschlagen · Klicken Sie hier, um es erneut zu versuchen","Message Failed · Unauthorized":"Nachricht fehlgeschlagen · Nicht autorisiert","Message deleted":"Nachricht gelöscht","Message has been successfully flagged":"Nachricht wurde erfolgreich markiert","Message pinned":"Nachricht angeheftet",Mute:Mute$b,New:New$b,"New Messages!":"Neue Nachrichten!","No results found":"keine Ergebnisse gefunden","Nothing yet...":"Noch nichts...","Only visible to you":"Nur für Sie sichtbar","Open emoji picker":"Öffnen Sie den Emoji-Picker","People matching":"Passende Personen","Pick your emoji":"Wähle dein Emoji",Pin:Pin$b,"Pinned by":"Gepinnt von",Reply:Reply$b,"Reply to Message":"Auf Nachricht antworten",Search:Search$b,"Searching...":"Suchen...",Send:Send$b,"Send message request failed":"Nachrichtenanfrage senden fehlgeschlagen","Sending...":"Senden...","Slow Mode ON":"Langsamer Modus EIN","Start of a new thread":"Start eines neuen Threads","This message was deleted...":"Diese Nachricht wurde gelöscht...",Thread:Thread$c,"Type your message":"Geben Sie Ihre Nachricht ein",Unmute:Unmute$b,Unpin:Unpin$b,"Upload type: \"{{ type }}\" is not allowed":"Upload-Typ: \"{{ type }}\" ist nicht erlaubt","Wait until all attachments have uploaded":"Warten Sie, bis alle Anhänge hochgeladen wurden","You have no channels currently":"Sie haben derzeit keine Kanäle","You've reached the maximum number of files":"Sie haben die maximale Anzahl von Dateien erreicht",live:live$b,"this content could not be displayed":"Dieser Inhalt konnte nicht angezeigt werden","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} und {{moreCount}} Mehr","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} und {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} und {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} Mehr","{{ memberCount }} members":"{{ memberCount }} Mitglieder","{{ replyCount }} replies":"{{ replyCount }} antworten","{{ user }} has been muted":"{{ user }} wurde stummgeschaltet","{{ user }} has been unmuted":"{{ user }} wurde nicht stummgeschaltet","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Anhang..."};
|
|
6782
6980
|
|
|
6783
|
-
var Cancel$a="Cancel";var Close$a="Close";var Delete$a="Delete";var Delivered$a="Delivered";var Flag$a="Flag";var Mute$a="Mute";var New$a="New";var Pin$a="Pin";var Reply$a="Reply";var Search$a="Search";var Send$a="Send";var Thread$b="Thread";var Unmute$a="Unmute";var Unpin$a="Unpin";var live$a="live";var enTranslations = {"1 reply":"1 reply","Attach files":"Attach files",Cancel:Cancel$a,"Channel Missing":"Channel Missing",Close:Close$a,"Close emoji picker":"Close emoji picker","Commands matching":"Commands matching","Connection failure, reconnecting now...":"Connection failure, reconnecting now...",Delete:Delete$a,Delivered:Delivered$a,"Edit Message":"Edit Message","Edit message request failed":"Edit message request failed","Emoji matching":"Emoji matching","Empty message...":"Empty message...","Error adding flag":"Error adding flag","Error connecting to chat, refresh the page to try again.":"Error connecting to chat, refresh the page to try again.","Error deleting message":"Error deleting message","Error muting a user ...":"Error muting a user ...","Error pinning message":"Error pinning message","Error removing message pin":"Error removing message pin","Error unmuting a user ...":"Error unmuting a user ...","Error uploading file":"Error uploading file","Error uploading image":"Error uploading image","Error · Unsent":"Error · Unsent","Error: {{ errorMessage }}":"Error: {{ errorMessage }}",Flag:Flag$a,"Message Failed · Click to try again":"Message Failed · Click to try again","Message Failed · Unauthorized":"Message Failed · Unauthorized","Message deleted":"Message deleted","Message has been successfully flagged":"Message has been successfully flagged","Message pinned":"Message pinned",Mute:Mute$a,New:New$a,"New Messages!":"New Messages!","No results found":"No results found","Nothing yet...":"Nothing yet...","Only visible to you":"Only visible to you","Open emoji picker":"Open emoji picker","People matching":"People matching","Pick your emoji":"Pick your emoji",Pin:Pin$a,"Pinned by":"Pinned by",Reply:Reply$a,"Reply to Message":"Reply to Message",Search:Search$a,"Searching...":"Searching...",Send:Send$a,"Send message request failed":"Send message request failed","Sending...":"Sending...","Slow Mode ON":"Slow Mode ON","Start of a new thread":"Start of a new thread","This message was deleted...":"This message was deleted...",Thread:Thread$b,"Type your message":"Type your message",Unmute:Unmute$a,Unpin:Unpin$a,"Wait until all attachments have uploaded":"Wait until all attachments have uploaded","You have no channels currently":"You have no channels currently","You've reached the maximum number of files":"You've reached the maximum number of files",live:live$a,"this content could not be displayed":"this content could not be displayed","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} and {{ moreCount }} more","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }}, and {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} and {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} more","{{ memberCount }} members":"{{ memberCount }} members","{{ replyCount }} replies":"{{ replyCount }} replies","{{ user }} has been muted":"{{ user }} has been muted","{{ user }} has been unmuted":"{{ user }} has been unmuted","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Attachment..."};
|
|
6981
|
+
var Cancel$a="Cancel";var Close$a="Close";var Delete$a="Delete";var Delivered$a="Delivered";var Flag$a="Flag";var Mute$a="Mute";var New$a="New";var Pin$a="Pin";var Reply$a="Reply";var Search$a="Search";var Send$a="Send";var Thread$b="Thread";var Unmute$a="Unmute";var Unpin$a="Unpin";var live$a="live";var enTranslations = {"1 reply":"1 reply","Attach files":"Attach files",Cancel:Cancel$a,"Channel Missing":"Channel Missing",Close:Close$a,"Close emoji picker":"Close emoji picker","Commands matching":"Commands matching","Connection failure, reconnecting now...":"Connection failure, reconnecting now...",Delete:Delete$a,Delivered:Delivered$a,"Edit Message":"Edit Message","Edit message request failed":"Edit message request failed","Emoji matching":"Emoji matching","Empty message...":"Empty message...","Error adding flag":"Error adding flag","Error connecting to chat, refresh the page to try again.":"Error connecting to chat, refresh the page to try again.","Error deleting message":"Error deleting message","Error muting a user ...":"Error muting a user ...","Error pinning message":"Error pinning message","Error removing message pin":"Error removing message pin","Error unmuting a user ...":"Error unmuting a user ...","Error uploading file":"Error uploading file","Error uploading image":"Error uploading image","Error · Unsent":"Error · Unsent","Error: {{ errorMessage }}":"Error: {{ errorMessage }}",Flag:Flag$a,"Message Failed · Click to try again":"Message Failed · Click to try again","Message Failed · Unauthorized":"Message Failed · Unauthorized","Message deleted":"Message deleted","Message has been successfully flagged":"Message has been successfully flagged","Message pinned":"Message pinned",Mute:Mute$a,New:New$a,"New Messages!":"New Messages!","No results found":"No results found","Nothing yet...":"Nothing yet...","Only visible to you":"Only visible to you","Open emoji picker":"Open emoji picker","People matching":"People matching","Pick your emoji":"Pick your emoji",Pin:Pin$a,"Pinned by":"Pinned by",Reply:Reply$a,"Reply to Message":"Reply to Message",Search:Search$a,"Searching...":"Searching...",Send:Send$a,"Send message request failed":"Send message request failed","Sending...":"Sending...","Slow Mode ON":"Slow Mode ON","Start of a new thread":"Start of a new thread","This message was deleted...":"This message was deleted...",Thread:Thread$b,"Type your message":"Type your message",Unmute:Unmute$a,Unpin:Unpin$a,"Upload type: \"{{ type }}\" is not allowed":"Upload type: \"{{ type }}\" is not allowed","Wait until all attachments have uploaded":"Wait until all attachments have uploaded","You have no channels currently":"You have no channels currently","You've reached the maximum number of files":"You've reached the maximum number of files",live:live$a,"this content could not be displayed":"this content could not be displayed","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} and {{ moreCount }} more","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }}, and {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} and {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} more","{{ memberCount }} members":"{{ memberCount }} members","{{ replyCount }} replies":"{{ replyCount }} replies","{{ user }} has been muted":"{{ user }} has been muted","{{ user }} has been unmuted":"{{ user }} has been unmuted","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Attachment..."};
|
|
6784
6982
|
|
|
6785
|
-
var Cancel$9="Cancelar";var Close$9="Cerca";var Delete$9="Borrar";var Delivered$9="Entregado";var Flag$9="Bandera";var Mute$9="Mudo";var New$9="Nuevo";var Pin$9="Alfiler";var Reply$9="Respuesta";var Search$9="Buscar";var Send$9="Enviar";var Thread$a="Hilo";var Unmute$9="Activar sonido";var Unpin$9="Desprender";var live$9="En Vivo";var esTranslations = {"1 reply":"1 respuesta","Attach files":"Adjuntar archivos",Cancel:Cancel$9,"Channel Missing":"Falta canal",Close:Close$9,"Close emoji picker":"Cerrar el selector de emojis","Commands matching":"Coincidencia de comandos","Connection failure, reconnecting now...":"Fallo de conexión, reconectando ahora ...",Delete:Delete$9,Delivered:Delivered$9,"Edit Message":"Editar mensaje","Edit message request failed":"Error al editar la solicitud de mensaje","Emoji matching":"Coincidencia de emoji","Empty message...":"Mensaje vacío ...","Error adding flag":"Error al agregar la bandera","Error connecting to chat, refresh the page to try again.":"Error al conectarse al chat, actualice la página para volver a intentarlo.","Error deleting message":"Error al eliminar el mensaje","Error muting a user ...":"Error al silenciar a un usuario ...","Error pinning message":"Mensaje de error al fijar","Error removing message pin":"Error al quitar el pin del mensaje","Error unmuting a user ...":"Error al activar el silencio de un usuario ...","Error uploading file":"Error al cargar el archivo","Error uploading image":"Error subiendo imagen","Error · Unsent":"Error · No enviado","Error: {{ errorMessage }}":"Error: {{ errorMessage }}",Flag:Flag$9,"Message Failed · Click to try again":"Mensaje fallido · Haga clic para volver a intentarlo","Message Failed · Unauthorized":"Mensaje fallido · No autorizado","Message deleted":"Mensaje borrado","Message has been successfully flagged":"El mensaje se marcó correctamente","Message pinned":"Mensaje fijado",Mute:Mute$9,New:New$9,"New Messages!":"¡Nuevos mensajes!","No results found":"No se han encontrado resultados","Nothing yet...":"Nada aún...","Only visible to you":"Solo visible para ti","Open emoji picker":"Selector de emoji abierto","People matching":"Personas que coinciden","Pick your emoji":"Elige tu emoji",Pin:Pin$9,"Pinned by":"Fijado por",Reply:Reply$9,"Reply to Message":"Responder al mensaje",Search:Search$9,"Searching...":"Buscando...",Send:Send$9,"Send message request failed":"Error al enviar la solicitud de mensaje","Sending...":"Enviando...","Slow Mode ON":"Modo lento activado","Start of a new thread":"Inicio de un nuevo hilo","This message was deleted...":"Este mensaje fue eliminado ...",Thread:Thread$a,"Type your message":"Escribe tu mensaje",Unmute:Unmute$9,Unpin:Unpin$9,"Wait until all attachments have uploaded":"Espere hasta que se hayan cargado todos los archivos adjuntos","You have no channels currently":"Actualmente no tienes canales","You've reached the maximum number of files":"Has alcanzado el número máximo de archivos",live:live$9,"this content could not be displayed":"este contenido no se pudo mostrar","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} y {{ moreCount }} más","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} y {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} y {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} más","{{ memberCount }} members":"{{ memberCount }} miembros","{{ replyCount }} replies":"{{ replyCount }} respuestas","{{ user }} has been muted":"{{ user }} ha sido silenciado","{{ user }} has been unmuted":"{{ user }} se ha desactivado","{{ watcherCount }} online":"{{ watcherCount }} en línea","🏙 Attachment...":"🏙 Adjunto..."};
|
|
6983
|
+
var Cancel$9="Cancelar";var Close$9="Cerca";var Delete$9="Borrar";var Delivered$9="Entregado";var Flag$9="Bandera";var Mute$9="Mudo";var New$9="Nuevo";var Pin$9="Alfiler";var Reply$9="Respuesta";var Search$9="Buscar";var Send$9="Enviar";var Thread$a="Hilo";var Unmute$9="Activar sonido";var Unpin$9="Desprender";var live$9="En Vivo";var esTranslations = {"1 reply":"1 respuesta","Attach files":"Adjuntar archivos",Cancel:Cancel$9,"Channel Missing":"Falta canal",Close:Close$9,"Close emoji picker":"Cerrar el selector de emojis","Commands matching":"Coincidencia de comandos","Connection failure, reconnecting now...":"Fallo de conexión, reconectando ahora ...",Delete:Delete$9,Delivered:Delivered$9,"Edit Message":"Editar mensaje","Edit message request failed":"Error al editar la solicitud de mensaje","Emoji matching":"Coincidencia de emoji","Empty message...":"Mensaje vacío ...","Error adding flag":"Error al agregar la bandera","Error connecting to chat, refresh the page to try again.":"Error al conectarse al chat, actualice la página para volver a intentarlo.","Error deleting message":"Error al eliminar el mensaje","Error muting a user ...":"Error al silenciar a un usuario ...","Error pinning message":"Mensaje de error al fijar","Error removing message pin":"Error al quitar el pin del mensaje","Error unmuting a user ...":"Error al activar el silencio de un usuario ...","Error uploading file":"Error al cargar el archivo","Error uploading image":"Error subiendo imagen","Error · Unsent":"Error · No enviado","Error: {{ errorMessage }}":"Error: {{ errorMessage }}",Flag:Flag$9,"Message Failed · Click to try again":"Mensaje fallido · Haga clic para volver a intentarlo","Message Failed · Unauthorized":"Mensaje fallido · No autorizado","Message deleted":"Mensaje borrado","Message has been successfully flagged":"El mensaje se marcó correctamente","Message pinned":"Mensaje fijado",Mute:Mute$9,New:New$9,"New Messages!":"¡Nuevos mensajes!","No results found":"No se han encontrado resultados","Nothing yet...":"Nada aún...","Only visible to you":"Solo visible para ti","Open emoji picker":"Selector de emoji abierto","People matching":"Personas que coinciden","Pick your emoji":"Elige tu emoji",Pin:Pin$9,"Pinned by":"Fijado por",Reply:Reply$9,"Reply to Message":"Responder al mensaje",Search:Search$9,"Searching...":"Buscando...",Send:Send$9,"Send message request failed":"Error al enviar la solicitud de mensaje","Sending...":"Enviando...","Slow Mode ON":"Modo lento activado","Start of a new thread":"Inicio de un nuevo hilo","This message was deleted...":"Este mensaje fue eliminado ...",Thread:Thread$a,"Type your message":"Escribe tu mensaje",Unmute:Unmute$9,Unpin:Unpin$9,"Upload type: \"{{ type }}\" is not allowed":"Tipo de carga: \"{{ type }}\" no está permitido","Wait until all attachments have uploaded":"Espere hasta que se hayan cargado todos los archivos adjuntos","You have no channels currently":"Actualmente no tienes canales","You've reached the maximum number of files":"Has alcanzado el número máximo de archivos",live:live$9,"this content could not be displayed":"este contenido no se pudo mostrar","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} y {{ moreCount }} más","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} y {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} y {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} más","{{ memberCount }} members":"{{ memberCount }} miembros","{{ replyCount }} replies":"{{ replyCount }} respuestas","{{ user }} has been muted":"{{ user }} ha sido silenciado","{{ user }} has been unmuted":"{{ user }} se ha desactivado","{{ watcherCount }} online":"{{ watcherCount }} en línea","🏙 Attachment...":"🏙 Adjunto..."};
|
|
6786
6984
|
|
|
6787
|
-
var Cancel$8="Annuler";var Close$8="Fermer";var Delete$8="Supprimer";var Delivered$8="Publié";var Flag$8="Signaler";var Mute$8="Muet";var New$8="Nouveaux";var Pin$8="Épingle";var Reply$8="Réponse";var Search$8="Rechercher";var Send$8="Envoyer";var Thread$9="Fil de discussion";var Unmute$8="Désactiver muet";var Unpin$8="Détacher";var live$8="en direct";var frTranslations = {"1 reply":"1 réponse","Attach files":"Pièces jointes",Cancel:Cancel$8,"Channel Missing":"Canal Manquant",Close:Close$8,"Close emoji picker":"Fermer le sélecteur d'emojis","Commands matching":"Correspondance des commandes","Connection failure, reconnecting now...":"Échec de la connexion, reconnexion en cours...",Delete:Delete$8,Delivered:Delivered$8,"Edit Message":"Éditer un message","Edit message request failed":"Échec de la demande de modification du message","Emoji matching":"Correspondance emoji","Empty message...":"Message vide...","Error adding flag":"Erreur lors de l'ajout du drapeau","Error connecting to chat, refresh the page to try again.":"Erreur de connexion au chat, rafraîchissez la page pour réessayer.","Error deleting message":"Erreur lors de la suppression du message","Error muting a user ...":"Erreur de mise en sourdine d'un utilisateur ...","Error pinning message":"Erreur d'épinglage du message","Error removing message pin":"Erreur lors de la suppression du code PIN du message","Error unmuting a user ...":"Erreur de désactivation de la fonction sourdine pour un utilisateur ...","Error uploading file":"Erreur lors du téléchargement du fichier","Error uploading image":"Erreur lors de l'envoi de l'image","Error · Unsent":"Erreur - Non envoyé","Error: {{ errorMessage }}":"Erreur : {{ errorMessage }}",Flag:Flag$8,"Message Failed · Click to try again":"Échec de l'envoi du message - Cliquez pour réessayer","Message Failed · Unauthorized":"Échec de l'envoi du message - Non autorisé","Message deleted":"Message supprimé","Message has been successfully flagged":"Le message a été signalé avec succès","Message pinned":"Message épinglé",Mute:Mute$8,New:New$8,"New Messages!":"Nouveaux Messages!","No results found":"Aucun résultat trouvé","Nothing yet...":"Aucun message...","Only visible to you":"Visible uniquement pour vous","Open emoji picker":"Ouvrez le sélecteur d'emoji","People matching":"Correspondance de personnes","Pick your emoji":"Choisissez votre emoji",Pin:Pin$8,"Pinned by":"Épinglé par",Reply:Reply$8,"Reply to Message":"Répondre au message",Search:Search$8,"Searching...":"Recherche...",Send:Send$8,"Send message request failed":"Échec de la demande d'envoi de message","Sending...":"Envoi en cours...","Slow Mode ON":"Mode lent activé","Start of a new thread":"Début d'un nouveau fil de discussion","This message was deleted...":"Ce message a été supprimé...",Thread:Thread$9,"Type your message":"Saisissez votre message",Unmute:Unmute$8,Unpin:Unpin$8,"Wait until all attachments have uploaded":"Attendez que toutes les pièces jointes soient téléchargées","You have no channels currently":"Vous n'avez actuellement aucun canal","You've reached the maximum number of files":"Vous avez atteint le nombre maximum de fichiers",live:live$8,"this content could not be displayed":"ce contenu n'a pu être affiché","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} et {{ moreCount }} autres","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} et {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} et {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} supplémentaires","{{ memberCount }} members":"{{ memberCount }} membres","{{ replyCount }} replies":"{{ replyCount }} réponses","{{ user }} has been muted":"{{ user }} a été mis en sourdine","{{ user }} has been unmuted":"{{ user }} n'est plus en sourdine","{{ watcherCount }} online":"{{ watcherCount }} en ligne","🏙 Attachment...":"🏙 Pièce jointe..."};
|
|
6985
|
+
var Cancel$8="Annuler";var Close$8="Fermer";var Delete$8="Supprimer";var Delivered$8="Publié";var Flag$8="Signaler";var Mute$8="Muet";var New$8="Nouveaux";var Pin$8="Épingle";var Reply$8="Réponse";var Search$8="Rechercher";var Send$8="Envoyer";var Thread$9="Fil de discussion";var Unmute$8="Désactiver muet";var Unpin$8="Détacher";var live$8="en direct";var frTranslations = {"1 reply":"1 réponse","Attach files":"Pièces jointes",Cancel:Cancel$8,"Channel Missing":"Canal Manquant",Close:Close$8,"Close emoji picker":"Fermer le sélecteur d'emojis","Commands matching":"Correspondance des commandes","Connection failure, reconnecting now...":"Échec de la connexion, reconnexion en cours...",Delete:Delete$8,Delivered:Delivered$8,"Edit Message":"Éditer un message","Edit message request failed":"Échec de la demande de modification du message","Emoji matching":"Correspondance emoji","Empty message...":"Message vide...","Error adding flag":"Erreur lors de l'ajout du drapeau","Error connecting to chat, refresh the page to try again.":"Erreur de connexion au chat, rafraîchissez la page pour réessayer.","Error deleting message":"Erreur lors de la suppression du message","Error muting a user ...":"Erreur de mise en sourdine d'un utilisateur ...","Error pinning message":"Erreur d'épinglage du message","Error removing message pin":"Erreur lors de la suppression du code PIN du message","Error unmuting a user ...":"Erreur de désactivation de la fonction sourdine pour un utilisateur ...","Error uploading file":"Erreur lors du téléchargement du fichier","Error uploading image":"Erreur lors de l'envoi de l'image","Error · Unsent":"Erreur - Non envoyé","Error: {{ errorMessage }}":"Erreur : {{ errorMessage }}",Flag:Flag$8,"Message Failed · Click to try again":"Échec de l'envoi du message - Cliquez pour réessayer","Message Failed · Unauthorized":"Échec de l'envoi du message - Non autorisé","Message deleted":"Message supprimé","Message has been successfully flagged":"Le message a été signalé avec succès","Message pinned":"Message épinglé",Mute:Mute$8,New:New$8,"New Messages!":"Nouveaux Messages!","No results found":"Aucun résultat trouvé","Nothing yet...":"Aucun message...","Only visible to you":"Visible uniquement pour vous","Open emoji picker":"Ouvrez le sélecteur d'emoji","People matching":"Correspondance de personnes","Pick your emoji":"Choisissez votre emoji",Pin:Pin$8,"Pinned by":"Épinglé par",Reply:Reply$8,"Reply to Message":"Répondre au message",Search:Search$8,"Searching...":"Recherche...",Send:Send$8,"Send message request failed":"Échec de la demande d'envoi de message","Sending...":"Envoi en cours...","Slow Mode ON":"Mode lent activé","Start of a new thread":"Début d'un nouveau fil de discussion","This message was deleted...":"Ce message a été supprimé...",Thread:Thread$9,"Type your message":"Saisissez votre message",Unmute:Unmute$8,Unpin:Unpin$8,"Upload type: \"{{ type }}\" is not allowed":"Le type de téléchargement: \"{{ type }}\" n'est pas autorisé","Wait until all attachments have uploaded":"Attendez que toutes les pièces jointes soient téléchargées","You have no channels currently":"Vous n'avez actuellement aucun canal","You've reached the maximum number of files":"Vous avez atteint le nombre maximum de fichiers",live:live$8,"this content could not be displayed":"ce contenu n'a pu être affiché","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} et {{ moreCount }} autres","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} et {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} et {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} supplémentaires","{{ memberCount }} members":"{{ memberCount }} membres","{{ replyCount }} replies":"{{ replyCount }} réponses","{{ user }} has been muted":"{{ user }} a été mis en sourdine","{{ user }} has been unmuted":"{{ user }} n'est plus en sourdine","{{ watcherCount }} online":"{{ watcherCount }} en ligne","🏙 Attachment...":"🏙 Pièce jointe..."};
|
|
6788
6986
|
|
|
6789
|
-
var Cancel$7="रद्द करें";var Close$7="बंद करे";var Delete$7="डिलीट";var Delivered$7="पहुंच गया";var Flag$7="फ्लैग करे";var Mute$7="म्यूट करे";var New$7="नए";var Pin$7="पिन";var Reply$7="जवाब दे दो";var Search$7="खोज";var Send$7="भेजे";var Thread$8="रिप्लाई थ्रेड";var Unmute$7="अनम्यूट";var Unpin$7="अनपिन";var live$7="लाइव";var hiTranslations = {"1 reply":"1 रिप्लाई","Attach files":"फाइल्स अटैच करे",Cancel:Cancel$7,"Channel Missing":"चैनल उपलब्ध नहीं है",Close:Close$7,"Close emoji picker":"इमोजी पिकर बंद करें","Commands matching":"मेल खाती है","Connection failure, reconnecting now...":"कनेक्शन विफल रहा, अब पुनः कनेक्ट हो रहा है ...",Delete:Delete$7,Delivered:Delivered$7,"Edit Message":"मैसेज में बदलाव करे","Edit message request failed":"संदेश संपादित करने का अनुरोध विफल रहा","Emoji matching":"इमोजी मिलान","Empty message...":"खाली संदेश ...","Error adding flag":"ध्वज जोड़ने में त्रुटि","Error connecting to chat, refresh the page to try again.":"चैट से कनेक्ट करने में त्रुटि, पेज को रिफ्रेश करें","Error deleting message":"संदेश हटाने में त्रुटि","Error muting a user ...":"यूजर को म्यूट करने का प्रयास फेल हुआ","Error pinning message":"संदेश को पिन करने में त्रुटि","Error removing message pin":"संदेश पिन निकालने में त्रुटि","Error unmuting a user ...":"यूजर को अनम्यूट करने का प्रयास फेल हुआ","Error uploading file":"फ़ाइल अपलोड करने में त्रुटि","Error uploading image":"छवि अपलोड करने में त्रुटि","Error · Unsent":"फेल","Error: {{ errorMessage }}":"फेल: {{ errorMessage }}",Flag:Flag$7,"Message Failed · Click to try again":"मैसेज फ़ैल - पुनः कोशिश करें","Message Failed · Unauthorized":"मैसेज फ़ैल - अनधिकृत","Message deleted":"मैसेज हटा दिया गया","Message has been successfully flagged":"मैसेज को फ्लैग कर दिया गया है","Message pinned":"संदेश पिन किया गया",Mute:Mute$7,New:New$7,"New Messages!":"नए मैसेज!","No results found":"कोई परिणाम नहीं मिला","Nothing yet...":"कोई मैसेज नहीं है","Only visible to you":"सिर्फ आपको दिखाई दे रहा है","Open emoji picker":"इमोजी पिकर खोलिये","People matching":"मेल खाते लोग","Pick your emoji":"इमोजी चूस करे",Pin:Pin$7,"Pinned by":"द्वारा पिन किया गया",Reply:Reply$7,"Reply to Message":"संदेश का जवाब दें",Search:Search$7,"Searching...":"खोज कर...",Send:Send$7,"Send message request failed":"संदेश भेजने का अनुरोध विफल रहा","Sending...":"भेजा जा रहा है","Slow Mode ON":"स्लो मोड ऑन","Start of a new thread":"एक नए थ्रेड की शुरुआत","This message was deleted...":"मैसेज हटा दिया गया",Thread:Thread$8,"Type your message":"अपना मैसेज लिखे",Unmute:Unmute$7,Unpin:Unpin$7,"Wait until all attachments have uploaded":"सभी अटैचमेंट अपलोड होने तक प्रतीक्षा करें","You have no channels currently":"आपके पास कोई चैनल नहीं है","You've reached the maximum number of files":"आप अधिकतम फ़ाइलों तक पहुँच गए हैं",live:live$7,"this content could not be displayed":"यह कॉन्टेंट लोड नहीं हो पाया","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} और {{ moreCount }} और","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} और {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} और {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} और","{{ memberCount }} members":"{{ memberCount }} मेंबर्स","{{ replyCount }} replies":"{{ replyCount }} रिप्लाई","{{ user }} has been muted":"{{ user }} को म्यूट कर दिया गया है","{{ user }} has been unmuted":"{{ user }} को अनम्यूट कर दिया गया है","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 अटैचमेंट"};
|
|
6987
|
+
var Cancel$7="रद्द करें";var Close$7="बंद करे";var Delete$7="डिलीट";var Delivered$7="पहुंच गया";var Flag$7="फ्लैग करे";var Mute$7="म्यूट करे";var New$7="नए";var Pin$7="पिन";var Reply$7="जवाब दे दो";var Search$7="खोज";var Send$7="भेजे";var Thread$8="रिप्लाई थ्रेड";var Unmute$7="अनम्यूट";var Unpin$7="अनपिन";var live$7="लाइव";var hiTranslations = {"1 reply":"1 रिप्लाई","Attach files":"फाइल्स अटैच करे",Cancel:Cancel$7,"Channel Missing":"चैनल उपलब्ध नहीं है",Close:Close$7,"Close emoji picker":"इमोजी पिकर बंद करें","Commands matching":"मेल खाती है","Connection failure, reconnecting now...":"कनेक्शन विफल रहा, अब पुनः कनेक्ट हो रहा है ...",Delete:Delete$7,Delivered:Delivered$7,"Edit Message":"मैसेज में बदलाव करे","Edit message request failed":"संदेश संपादित करने का अनुरोध विफल रहा","Emoji matching":"इमोजी मिलान","Empty message...":"खाली संदेश ...","Error adding flag":"ध्वज जोड़ने में त्रुटि","Error connecting to chat, refresh the page to try again.":"चैट से कनेक्ट करने में त्रुटि, पेज को रिफ्रेश करें","Error deleting message":"संदेश हटाने में त्रुटि","Error muting a user ...":"यूजर को म्यूट करने का प्रयास फेल हुआ","Error pinning message":"संदेश को पिन करने में त्रुटि","Error removing message pin":"संदेश पिन निकालने में त्रुटि","Error unmuting a user ...":"यूजर को अनम्यूट करने का प्रयास फेल हुआ","Error uploading file":"फ़ाइल अपलोड करने में त्रुटि","Error uploading image":"छवि अपलोड करने में त्रुटि","Error · Unsent":"फेल","Error: {{ errorMessage }}":"फेल: {{ errorMessage }}",Flag:Flag$7,"Message Failed · Click to try again":"मैसेज फ़ैल - पुनः कोशिश करें","Message Failed · Unauthorized":"मैसेज फ़ैल - अनधिकृत","Message deleted":"मैसेज हटा दिया गया","Message has been successfully flagged":"मैसेज को फ्लैग कर दिया गया है","Message pinned":"संदेश पिन किया गया",Mute:Mute$7,New:New$7,"New Messages!":"नए मैसेज!","No results found":"कोई परिणाम नहीं मिला","Nothing yet...":"कोई मैसेज नहीं है","Only visible to you":"सिर्फ आपको दिखाई दे रहा है","Open emoji picker":"इमोजी पिकर खोलिये","People matching":"मेल खाते लोग","Pick your emoji":"इमोजी चूस करे",Pin:Pin$7,"Pinned by":"द्वारा पिन किया गया",Reply:Reply$7,"Reply to Message":"संदेश का जवाब दें",Search:Search$7,"Searching...":"खोज कर...",Send:Send$7,"Send message request failed":"संदेश भेजने का अनुरोध विफल रहा","Sending...":"भेजा जा रहा है","Slow Mode ON":"स्लो मोड ऑन","Start of a new thread":"एक नए थ्रेड की शुरुआत","This message was deleted...":"मैसेज हटा दिया गया",Thread:Thread$8,"Type your message":"अपना मैसेज लिखे",Unmute:Unmute$7,Unpin:Unpin$7,"Upload type: \"{{ type }}\" is not allowed":"अपलोड प्रकार: \"{{ type }}\" की अनुमति नहीं है","Wait until all attachments have uploaded":"सभी अटैचमेंट अपलोड होने तक प्रतीक्षा करें","You have no channels currently":"आपके पास कोई चैनल नहीं है","You've reached the maximum number of files":"आप अधिकतम फ़ाइलों तक पहुँच गए हैं",live:live$7,"this content could not be displayed":"यह कॉन्टेंट लोड नहीं हो पाया","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} और {{ moreCount }} और","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} और {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} और {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} और","{{ memberCount }} members":"{{ memberCount }} मेंबर्स","{{ replyCount }} replies":"{{ replyCount }} रिप्लाई","{{ user }} has been muted":"{{ user }} को म्यूट कर दिया गया है","{{ user }} has been unmuted":"{{ user }} को अनम्यूट कर दिया गया है","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 अटैचमेंट"};
|
|
6790
6988
|
|
|
6791
|
-
var Cancel$6="Annulla";var Close$6="Chiudi";var Delete$6="Cancella";var Delivered$6="Consegnato";var Flag$6="Segnala";var Mute$6="Silenzia";var New$6="Nuovo";var Pin$6="Pin";var Reply$6="Rispondere";var Search$6="Ricerca";var Send$6="Invia";var Thread$7="Thread";var Unmute$6="Riattiva le notifiche";var Unpin$6="Sblocca";var live$6="live";var itTranslations = {"1 reply":"Una risposta","Attach files":"Allega file",Cancel:Cancel$6,"Channel Missing":"Il canale non esiste",Close:Close$6,"Close emoji picker":"Chiudi il selettore di emoji","Commands matching":"Comandi corrispondenti","Connection failure, reconnecting now...":"Connessione fallitta, riconnessione in corso...",Delete:Delete$6,Delivered:Delivered$6,"Edit Message":"Modifica messaggio","Edit message request failed":"Richiesta di modifica del messaggio non riuscita","Emoji matching":"Abbinamento emoji","Empty message...":"Message vuoto...","Error adding flag":"Errore durante l'aggiunta del flag","Error connecting to chat, refresh the page to try again.":"Errore di connessione alla chat, aggiorna la pagina per riprovare","Error deleting message":"Errore durante l'eliminazione del messaggio","Error muting a user ...":"Errore silenziando un utente ...","Error pinning message":"Errore durante il blocco del messaggio","Error removing message pin":"Errore durante la rimozione del PIN del messaggio","Error unmuting a user ...":"Errore riattivando le notifiche per l'utente ...","Error uploading file":"Errore durante il caricamento del file","Error uploading image":"Errore durante il caricamento dell'immagine","Error · Unsent":"Errore · Non inviato","Error: {{ errorMessage }}":"Errore: {{ errorMessage }}",Flag:Flag$6,"Message Failed · Click to try again":"Invio messaggio fallito · Clicca per riprovare","Message Failed · Unauthorized":"Invio messaggio fallito · Non autorizzato","Message deleted":"Messaggio cancellato","Message has been successfully flagged":"Il messaggio é stato segnalato con successo","Message pinned":"Messaggio bloccato",Mute:Mute$6,New:New$6,"New Messages!":"Nuovo messaggio!","No results found":"Nessun risultato trovato","Nothing yet...":"Ancora niente...","Only visible to you":"Visibile soltanto da te","Open emoji picker":"Apri il selettore dellle emoji","People matching":"Persone che corrispondono","Pick your emoji":"Scegli la tua emoji",Pin:Pin$6,"Pinned by":"Appuntato da",Reply:Reply$6,"Reply to Message":"Rispondi al messaggio",Search:Search$6,"Searching...":"Ricerca in corso ...",Send:Send$6,"Send message request failed":"Invia messaggio di richiesta non riuscito","Sending...":"Invio in corso...","Slow Mode ON":"Modalità lenta attivata","Start of a new thread":"Inizia un nuovo thread","This message was deleted...":"Questo messaggio é stato cancellato",Thread:Thread$7,"Type your message":"Scrivi il tuo messaggio",Unmute:Unmute$6,Unpin:Unpin$6,"Wait until all attachments have uploaded":"Attendi il caricamento di tutti gli allegati","You have no channels currently":"Al momento non sono presenti canali","You've reached the maximum number of files":"Hai raggiunto il numero massimo di file",live:live$6,"this content could not be displayed":"questo contenuto non puó essere mostrato","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} e altri {{ moreCount }}","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} e {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} e {{ secondUser }}","{{ imageCount }} more":"+ {{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} membri","{{ replyCount }} replies":"{{ replyCount }} risposte","{{ user }} has been muted":"{{ user }} é stato silenziato","{{ user }} has been unmuted":"Notifiche riattivate per {{ user }}","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Allegato..."};
|
|
6989
|
+
var Cancel$6="Annulla";var Close$6="Chiudi";var Delete$6="Cancella";var Delivered$6="Consegnato";var Flag$6="Segnala";var Mute$6="Silenzia";var New$6="Nuovo";var Pin$6="Pin";var Reply$6="Rispondere";var Search$6="Ricerca";var Send$6="Invia";var Thread$7="Thread";var Unmute$6="Riattiva le notifiche";var Unpin$6="Sblocca";var live$6="live";var itTranslations = {"1 reply":"Una risposta","Attach files":"Allega file",Cancel:Cancel$6,"Channel Missing":"Il canale non esiste",Close:Close$6,"Close emoji picker":"Chiudi il selettore di emoji","Commands matching":"Comandi corrispondenti","Connection failure, reconnecting now...":"Connessione fallitta, riconnessione in corso...",Delete:Delete$6,Delivered:Delivered$6,"Edit Message":"Modifica messaggio","Edit message request failed":"Richiesta di modifica del messaggio non riuscita","Emoji matching":"Abbinamento emoji","Empty message...":"Message vuoto...","Error adding flag":"Errore durante l'aggiunta del flag","Error connecting to chat, refresh the page to try again.":"Errore di connessione alla chat, aggiorna la pagina per riprovare","Error deleting message":"Errore durante l'eliminazione del messaggio","Error muting a user ...":"Errore silenziando un utente ...","Error pinning message":"Errore durante il blocco del messaggio","Error removing message pin":"Errore durante la rimozione del PIN del messaggio","Error unmuting a user ...":"Errore riattivando le notifiche per l'utente ...","Error uploading file":"Errore durante il caricamento del file","Error uploading image":"Errore durante il caricamento dell'immagine","Error · Unsent":"Errore · Non inviato","Error: {{ errorMessage }}":"Errore: {{ errorMessage }}",Flag:Flag$6,"Message Failed · Click to try again":"Invio messaggio fallito · Clicca per riprovare","Message Failed · Unauthorized":"Invio messaggio fallito · Non autorizzato","Message deleted":"Messaggio cancellato","Message has been successfully flagged":"Il messaggio é stato segnalato con successo","Message pinned":"Messaggio bloccato",Mute:Mute$6,New:New$6,"New Messages!":"Nuovo messaggio!","No results found":"Nessun risultato trovato","Nothing yet...":"Ancora niente...","Only visible to you":"Visibile soltanto da te","Open emoji picker":"Apri il selettore dellle emoji","People matching":"Persone che corrispondono","Pick your emoji":"Scegli la tua emoji",Pin:Pin$6,"Pinned by":"Appuntato da",Reply:Reply$6,"Reply to Message":"Rispondi al messaggio",Search:Search$6,"Searching...":"Ricerca in corso ...",Send:Send$6,"Send message request failed":"Invia messaggio di richiesta non riuscito","Sending...":"Invio in corso...","Slow Mode ON":"Modalità lenta attivata","Start of a new thread":"Inizia un nuovo thread","This message was deleted...":"Questo messaggio é stato cancellato",Thread:Thread$7,"Type your message":"Scrivi il tuo messaggio",Unmute:Unmute$6,Unpin:Unpin$6,"Upload type: \"{{ type }}\" is not allowed":"Tipo di caricamento: \"{{ type }}\" non è consentito","Wait until all attachments have uploaded":"Attendi il caricamento di tutti gli allegati","You have no channels currently":"Al momento non sono presenti canali","You've reached the maximum number of files":"Hai raggiunto il numero massimo di file",live:live$6,"this content could not be displayed":"questo contenuto non puó essere mostrato","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} e altri {{ moreCount }}","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} e {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} e {{ secondUser }}","{{ imageCount }} more":"+ {{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} membri","{{ replyCount }} replies":"{{ replyCount }} risposte","{{ user }} has been muted":"{{ user }} é stato silenziato","{{ user }} has been unmuted":"Notifiche riattivate per {{ user }}","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Allegato..."};
|
|
6792
6990
|
|
|
6793
|
-
var Cancel$5="キャンセル";var Close$5="閉める";var Delete$5="消去";var Delivered$5="配信しました";var Flag$5="フラグ";var Mute$5="無音";var New$5="新しい";var Pin$5="ピン";var Reply$5="返事";var Search$5="探す";var Send$5="送信";var Thread$6="スレッド";var Unmute$5="無音を解除する";var Unpin$5="ピンを解除する";var live$5="ライブ";var jaTranslations = {"1 reply":"1件の返信","Attach files":"ファイルを添付する",Cancel:Cancel$5,"Channel Missing":"チャネルがありません",Close:Close$5,"Close emoji picker":"絵文字ピッカーを閉める","Commands matching":"一致するコマンド","Connection failure, reconnecting now...":"接続が失敗しました。再接続中...",Delete:Delete$5,Delivered:Delivered$5,"Edit Message":"メッセージを編集","Edit message request failed":"メッセージの編集要求が失敗しました","Emoji matching":"絵文字マッチング","Empty message...":"空のメッセージ...","Error adding flag":"フラグを追加のエラーが発生しました","Error connecting to chat, refresh the page to try again.":"チャットへの接続ができませんでした。ページを更新してください。","Error deleting message":"メッセージを削除するエラーが発生しました","Error muting a user ...":"ユーザーを無音するエラーが発生しました...","Error pinning message":"メッセージをピンのエラーが発生しました","Error removing message pin":"メッセージのピンを削除のエラーが発生しました","Error unmuting a user ...":"ユーザーの無音解除のエラーが発生しました...","Error uploading file":"ファイルをアップロードのエラーが発生しました","Error uploading image":"画像をアップロードのエラーが発生しました","Error · Unsent":"エラー・未送信","Error: {{ errorMessage }}":"エラー: {{ errorMessage }}",Flag:Flag$5,"Message Failed · Click to try again":"メッセージが失敗しました · クリックして再試行してください","Message Failed · Unauthorized":"メッセージが失敗しました · 許可されていません","Message deleted":"メッセージが削除されました","Message has been successfully flagged":"メッセージに正常にフラグが付けられました","Message pinned":"メッセージにピンが付けられました",Mute:Mute$5,New:New$5,"New Messages!":"新しいメッセージ!","No results found":"結果が見つかりません","Nothing yet...":"まだ何もありません...","Only visible to you":"あなただけに見える","Open emoji picker":"絵文字ピッカーを開く","People matching":"一致する人","Pick your emoji":"絵文字を選んでください",Pin:Pin$5,"Pinned by":"ピンした方",Reply:Reply$5,"Reply to Message":"メッセージに返信",Search:Search$5,"Searching...":"検索中...",Send:Send$5,"Send message request failed":"メッセージ送信リクエストが失敗しました","Sending...":"送信中...","Slow Mode ON":"スローモードオン","Start of a new thread":"新しいスレッドの開始","This message was deleted...":"このメッセージは削除されました...",Thread:Thread$6,"Type your message":"メッセージを入力してください",Unmute:Unmute$5,Unpin:Unpin$5,"Wait until all attachments have uploaded":"すべての添付ファイルがアップロードされるまでお待ちください","You have no channels currently":"現在チャンネルはありません","You've reached the maximum number of files":"ファイルの最大数に達しました",live:live$5,"this content could not be displayed":"このコンテンツは表示できませんでした","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} と {{ moreCount }} 他人","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} と {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} と {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} イメージ","{{ memberCount }} members":"{{ memberCount }} メンバー","{{ replyCount }} replies":"{{ replyCount }} 返信","{{ user }} has been muted":"{{ user }} 無音されています","{{ user }} has been unmuted":"{{ user }} 無音されていません","{{ watcherCount }} online":"{{ watcherCount }} オンライン","🏙 Attachment...":"🏙 アタッチメント..."};
|
|
6991
|
+
var Cancel$5="キャンセル";var Close$5="閉める";var Delete$5="消去";var Delivered$5="配信しました";var Flag$5="フラグ";var Mute$5="無音";var New$5="新しい";var Pin$5="ピン";var Reply$5="返事";var Search$5="探す";var Send$5="送信";var Thread$6="スレッド";var Unmute$5="無音を解除する";var Unpin$5="ピンを解除する";var live$5="ライブ";var jaTranslations = {"1 reply":"1件の返信","Attach files":"ファイルを添付する",Cancel:Cancel$5,"Channel Missing":"チャネルがありません",Close:Close$5,"Close emoji picker":"絵文字ピッカーを閉める","Commands matching":"一致するコマンド","Connection failure, reconnecting now...":"接続が失敗しました。再接続中...",Delete:Delete$5,Delivered:Delivered$5,"Edit Message":"メッセージを編集","Edit message request failed":"メッセージの編集要求が失敗しました","Emoji matching":"絵文字マッチング","Empty message...":"空のメッセージ...","Error adding flag":"フラグを追加のエラーが発生しました","Error connecting to chat, refresh the page to try again.":"チャットへの接続ができませんでした。ページを更新してください。","Error deleting message":"メッセージを削除するエラーが発生しました","Error muting a user ...":"ユーザーを無音するエラーが発生しました...","Error pinning message":"メッセージをピンのエラーが発生しました","Error removing message pin":"メッセージのピンを削除のエラーが発生しました","Error unmuting a user ...":"ユーザーの無音解除のエラーが発生しました...","Error uploading file":"ファイルをアップロードのエラーが発生しました","Error uploading image":"画像をアップロードのエラーが発生しました","Error · Unsent":"エラー・未送信","Error: {{ errorMessage }}":"エラー: {{ errorMessage }}",Flag:Flag$5,"Message Failed · Click to try again":"メッセージが失敗しました · クリックして再試行してください","Message Failed · Unauthorized":"メッセージが失敗しました · 許可されていません","Message deleted":"メッセージが削除されました","Message has been successfully flagged":"メッセージに正常にフラグが付けられました","Message pinned":"メッセージにピンが付けられました",Mute:Mute$5,New:New$5,"New Messages!":"新しいメッセージ!","No results found":"結果が見つかりません","Nothing yet...":"まだ何もありません...","Only visible to you":"あなただけに見える","Open emoji picker":"絵文字ピッカーを開く","People matching":"一致する人","Pick your emoji":"絵文字を選んでください",Pin:Pin$5,"Pinned by":"ピンした方",Reply:Reply$5,"Reply to Message":"メッセージに返信",Search:Search$5,"Searching...":"検索中...",Send:Send$5,"Send message request failed":"メッセージ送信リクエストが失敗しました","Sending...":"送信中...","Slow Mode ON":"スローモードオン","Start of a new thread":"新しいスレッドの開始","This message was deleted...":"このメッセージは削除されました...",Thread:Thread$6,"Type your message":"メッセージを入力してください",Unmute:Unmute$5,Unpin:Unpin$5,"Upload type: \"{{ type }}\" is not allowed":"アップロードタイプ:\"{{ type }}\"は許可されていません","Wait until all attachments have uploaded":"すべての添付ファイルがアップロードされるまでお待ちください","You have no channels currently":"現在チャンネルはありません","You've reached the maximum number of files":"ファイルの最大数に達しました",live:live$5,"this content could not be displayed":"このコンテンツは表示できませんでした","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} と {{ moreCount }} 他人","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} と {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} と {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} イメージ","{{ memberCount }} members":"{{ memberCount }} メンバー","{{ replyCount }} replies":"{{ replyCount }} 返信","{{ user }} has been muted":"{{ user }} 無音されています","{{ user }} has been unmuted":"{{ user }} 無音されていません","{{ watcherCount }} online":"{{ watcherCount }} オンライン","🏙 Attachment...":"🏙 アタッチメント..."};
|
|
6794
6992
|
|
|
6795
|
-
var Cancel$4="취소";var Close$4="닫기";var Delete$4="삭제";var Delivered$4="배달됨";var Flag$4="플래그";var Mute$4="무음";var New$4="새로운";var Pin$4="핀";var Reply$4="답장";var Search$4="찾다";var Send$4="보내다";var Thread$5="스레드";var Unmute$4="음소거 해제";var Unpin$4="핀 해제";var live$4="라이브";var koTranslations = {"1 reply":"답장 1개","Attach files":"파일 첨부",Cancel:Cancel$4,"Channel Missing":"채널 누락",Close:Close$4,"Close emoji picker":"이모티콘 선택기 닫기","Commands matching":"일치하는 명령","Connection failure, reconnecting now...":"연결 실패, 지금 다시 연결 중...",Delete:Delete$4,Delivered:Delivered$4,"Edit Message":"메시지 수정","Edit message request failed":"메시지 수정 요청 실패","Emoji matching":"이모티콘 매칭","Empty message...":"빈 메시지...","Error adding flag":"플래그를 추가하는 동안 오류가 발생했습니다.","Error connecting to chat, refresh the page to try again.":"채팅에 연결하는 동안 오류가 발생했습니다. 페이지를 새로고침하여 다시 시도하세요.","Error deleting message":"메시지를 삭제하는 중에 오류가 발생했습니다.","Error muting a user ...":"사용자를 음소거하는 중에 오류가 발생했습니다...","Error pinning message":"메시지를 핀하는 중에 오류가 발생했습니다.","Error removing message pin":"메시지 핀을 제거하는 중에 오류가 발생했습니다.","Error unmuting a user ...":"사용자 음소거 해제 중 오류 발생...","Error uploading file":"파일 업로드 오류","Error uploading image":"이미지를 업로드하는 동안 오류가 발생했습니다.","Error · Unsent":"오류 · 전송되지 않음","Error: {{ errorMessage }}":"오류: {{ errorMessage }}",Flag:Flag$4,"Message Failed · Click to try again":"메시지 실패 · 다시 시도하려면 클릭하세요.","Message Failed · Unauthorized":"메시지 실패 · 승인되지 않음","Message deleted":"메시지가 삭제되었습니다.","Message has been successfully flagged":"메시지에 플래그가 지정되었습니다.","Message pinned":"메시지 핀했습니다",Mute:Mute$4,New:New$4,"New Messages!":"새 메시지!","No results found":"검색 결과가 없습니다","Nothing yet...":"아직 아무것도...","Only visible to you":"당신만 볼 수 있습니다","Open emoji picker":"이모티콘 선택기 열기","People matching":"일치하는 사람","Pick your emoji":"이모티콘 선택",Pin:Pin$4,"Pinned by":"핀했던 분:",Reply:Reply$4,"Reply to Message":"메시지에 답장",Search:Search$4,"Searching...":"수색...",Send:Send$4,"Send message request failed":"메시지 보내기 요청 실패","Sending...":"배상중...","Slow Mode ON":"슬로우 모드 켜짐","Start of a new thread":"새 스레드의 시작","This message was deleted...":"이 메시지는 삭제되었습니다...",Thread:Thread$5,"Type your message":"메시지 입력",Unmute:Unmute$4,Unpin:Unpin$4,"Wait until all attachments have uploaded":"모든 첨부 파일이 업로드될 때까지 기다립니다.","You have no channels currently":"현재 채널이 없습니다.","You've reached the maximum number of files":"최대 파일 수에 도달했습니다.",live:live$4,"this content could not be displayed":"이 콘텐츠를 표시할 수 없습니다","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} 그리고 {{ moreCount }}명 더","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} 그리고 {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} 그리고 {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }}개 더","{{ memberCount }} members":"{{ memberCount }}명","{{ replyCount }} replies":"{{ replyCount }} 답장","{{ user }} has been muted":"{{ user }} 음소거되었습니다","{{ user }} has been unmuted":"{{ user }} 음소거가 해제되었습니다","{{ watcherCount }} online":"{{ watcherCount }} 온라인","🏙 Attachment...":"🏙 부착..."};
|
|
6993
|
+
var Cancel$4="취소";var Close$4="닫기";var Delete$4="삭제";var Delivered$4="배달됨";var Flag$4="플래그";var Mute$4="무음";var New$4="새로운";var Pin$4="핀";var Reply$4="답장";var Search$4="찾다";var Send$4="보내다";var Thread$5="스레드";var Unmute$4="음소거 해제";var Unpin$4="핀 해제";var live$4="라이브";var koTranslations = {"1 reply":"답장 1개","Attach files":"파일 첨부",Cancel:Cancel$4,"Channel Missing":"채널 누락",Close:Close$4,"Close emoji picker":"이모티콘 선택기 닫기","Commands matching":"일치하는 명령","Connection failure, reconnecting now...":"연결 실패, 지금 다시 연결 중...",Delete:Delete$4,Delivered:Delivered$4,"Edit Message":"메시지 수정","Edit message request failed":"메시지 수정 요청 실패","Emoji matching":"이모티콘 매칭","Empty message...":"빈 메시지...","Error adding flag":"플래그를 추가하는 동안 오류가 발생했습니다.","Error connecting to chat, refresh the page to try again.":"채팅에 연결하는 동안 오류가 발생했습니다. 페이지를 새로고침하여 다시 시도하세요.","Error deleting message":"메시지를 삭제하는 중에 오류가 발생했습니다.","Error muting a user ...":"사용자를 음소거하는 중에 오류가 발생했습니다...","Error pinning message":"메시지를 핀하는 중에 오류가 발생했습니다.","Error removing message pin":"메시지 핀을 제거하는 중에 오류가 발생했습니다.","Error unmuting a user ...":"사용자 음소거 해제 중 오류 발생...","Error uploading file":"파일 업로드 오류","Error uploading image":"이미지를 업로드하는 동안 오류가 발생했습니다.","Error · Unsent":"오류 · 전송되지 않음","Error: {{ errorMessage }}":"오류: {{ errorMessage }}",Flag:Flag$4,"Message Failed · Click to try again":"메시지 실패 · 다시 시도하려면 클릭하세요.","Message Failed · Unauthorized":"메시지 실패 · 승인되지 않음","Message deleted":"메시지가 삭제되었습니다.","Message has been successfully flagged":"메시지에 플래그가 지정되었습니다.","Message pinned":"메시지 핀했습니다",Mute:Mute$4,New:New$4,"New Messages!":"새 메시지!","No results found":"검색 결과가 없습니다","Nothing yet...":"아직 아무것도...","Only visible to you":"당신만 볼 수 있습니다","Open emoji picker":"이모티콘 선택기 열기","People matching":"일치하는 사람","Pick your emoji":"이모티콘 선택",Pin:Pin$4,"Pinned by":"핀했던 분:",Reply:Reply$4,"Reply to Message":"메시지에 답장",Search:Search$4,"Searching...":"수색...",Send:Send$4,"Send message request failed":"메시지 보내기 요청 실패","Sending...":"배상중...","Slow Mode ON":"슬로우 모드 켜짐","Start of a new thread":"새 스레드의 시작","This message was deleted...":"이 메시지는 삭제되었습니다...",Thread:Thread$5,"Type your message":"메시지 입력",Unmute:Unmute$4,Unpin:Unpin$4,"Upload type: \"{{ type }}\" is not allowed":"업로드 유형: \"{{ type }}\"은(는) 허용되지 않습니다.","Wait until all attachments have uploaded":"모든 첨부 파일이 업로드될 때까지 기다립니다.","You have no channels currently":"현재 채널이 없습니다.","You've reached the maximum number of files":"최대 파일 수에 도달했습니다.",live:live$4,"this content could not be displayed":"이 콘텐츠를 표시할 수 없습니다","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} 그리고 {{ moreCount }}명 더","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} 그리고 {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} 그리고 {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }}개 더","{{ memberCount }} members":"{{ memberCount }}명","{{ replyCount }} replies":"{{ replyCount }} 답장","{{ user }} has been muted":"{{ user }} 음소거되었습니다","{{ user }} has been unmuted":"{{ user }} 음소거가 해제되었습니다","{{ watcherCount }} online":"{{ watcherCount }} 온라인","🏙 Attachment...":"🏙 부착..."};
|
|
6796
6994
|
|
|
6797
|
-
var Cancel$3="Annuleer";var Close$3="Sluit";var Delete$3="Verwijder";var Delivered$3="Afgeleverd";var Flag$3="Markeer";var Mute$3="Mute";var New$3="Nieuwe";var Pin$3="Pin";var Reply$3="Antwoord";var Search$3="Zoeken";var Send$3="Verstuur";var Thread$4="Draadje";var Unmute$3="Unmute";var Unpin$3="Losmaken";var live$3="live";var nlTranslations = {"1 reply":"1 antwoord","Attach files":"Bijlage toevoegen",Cancel:Cancel$3,"Channel Missing":"Kanaal niet gevonden",Close:Close$3,"Close emoji picker":"Sluit de emoji-kiezer","Commands matching":"Bijpassende opdrachten","Connection failure, reconnecting now...":"Probleem met de verbinding, opnieuw verbinding maken...",Delete:Delete$3,Delivered:Delivered$3,"Edit Message":"Pas bericht aan","Edit message request failed":"Verzoek om bericht bewerken mislukt","Emoji matching":"Emoji-overeenkomsten","Empty message...":"Leeg bericht...","Error adding flag":"Fout bij toevoegen van vlag","Error connecting to chat, refresh the page to try again.":"Fout bij het verbinden, ververs de pagina om nogmaals te proberen","Error deleting message":"Fout bij verwijderen van bericht","Error muting a user ...":"Fout bij het muten van de gebruiker","Error pinning message":"Fout bij vastzetten van bericht","Error removing message pin":"Fout bij verwijderen van berichtpin","Error unmuting a user ...":"Fout bij het unmuten van de gebruiker","Error uploading file":"Fout bij uploaden bestand","Error uploading image":"Fout bij uploaden afbeelding","Error · Unsent":"Error: · niet verzonden","Error: {{ errorMessage }}":"Error: {{ errorMessage }}",Flag:Flag$3,"Message Failed · Click to try again":"Bericht mislukt, klik om het nogmaals te proberen","Message Failed · Unauthorized":"Bericht mislukt, ongeautoriseerd","Message deleted":"Bericht verwijderd","Message has been successfully flagged":"Bericht is succesvol gemarkeerd","Message pinned":"Bericht vastgezet",Mute:Mute$3,New:New$3,"New Messages!":"Nieuwe Berichten!","No results found":"Geen resultaten gevonden","Nothing yet...":"Nog niets ...","Only visible to you":"Alleen zichtbaar voor jou","Open emoji picker":"Open emojipicker","People matching":"Mensen die matchen","Pick your emoji":"Kies je emoji",Pin:Pin$3,"Pinned by":"Vastgemaakt door",Reply:Reply$3,"Reply to Message":"Antwoord op bericht",Search:Search$3,"Searching...":"Zoeken...",Send:Send$3,"Send message request failed":"Verzoek om bericht te verzenden mislukt","Sending...":"Aan het verzenden...","Slow Mode ON":"Langzame modus aan","Start of a new thread":"Begin van een nieuwe draadje","This message was deleted...":"Dit bericht was verwijderd",Thread:Thread$4,"Type your message":"Type je bericht",Unmute:Unmute$3,Unpin:Unpin$3,"Wait until all attachments have uploaded":"Wacht tot alle bijlagen zijn geüpload","You have no channels currently":"Er zijn geen chats beschikbaar","You've reached the maximum number of files":"Je hebt het maximale aantal bestanden bereikt",live:live$3,"this content could not be displayed":"Deze inhoud kan niet weergegeven worden","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} en {{ moreCount }} meer","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} en {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} en {{ secondUser }}","{{ imageCount }} more":"+{{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} deelnemers","{{ replyCount }} replies":"{{ replyCount }} antwoorden","{{ user }} has been muted":"{{ user }} is muted","{{ user }} has been unmuted":"{{ user }} is unmuted","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Bijlage..."};
|
|
6995
|
+
var Cancel$3="Annuleer";var Close$3="Sluit";var Delete$3="Verwijder";var Delivered$3="Afgeleverd";var Flag$3="Markeer";var Mute$3="Mute";var New$3="Nieuwe";var Pin$3="Pin";var Reply$3="Antwoord";var Search$3="Zoeken";var Send$3="Verstuur";var Thread$4="Draadje";var Unmute$3="Unmute";var Unpin$3="Losmaken";var live$3="live";var nlTranslations = {"1 reply":"1 antwoord","Attach files":"Bijlage toevoegen",Cancel:Cancel$3,"Channel Missing":"Kanaal niet gevonden",Close:Close$3,"Close emoji picker":"Sluit de emoji-kiezer","Commands matching":"Bijpassende opdrachten","Connection failure, reconnecting now...":"Probleem met de verbinding, opnieuw verbinding maken...",Delete:Delete$3,Delivered:Delivered$3,"Edit Message":"Pas bericht aan","Edit message request failed":"Verzoek om bericht bewerken mislukt","Emoji matching":"Emoji-overeenkomsten","Empty message...":"Leeg bericht...","Error adding flag":"Fout bij toevoegen van vlag","Error connecting to chat, refresh the page to try again.":"Fout bij het verbinden, ververs de pagina om nogmaals te proberen","Error deleting message":"Fout bij verwijderen van bericht","Error muting a user ...":"Fout bij het muten van de gebruiker","Error pinning message":"Fout bij vastzetten van bericht","Error removing message pin":"Fout bij verwijderen van berichtpin","Error unmuting a user ...":"Fout bij het unmuten van de gebruiker","Error uploading file":"Fout bij uploaden bestand","Error uploading image":"Fout bij uploaden afbeelding","Error · Unsent":"Error: · niet verzonden","Error: {{ errorMessage }}":"Error: {{ errorMessage }}",Flag:Flag$3,"Message Failed · Click to try again":"Bericht mislukt, klik om het nogmaals te proberen","Message Failed · Unauthorized":"Bericht mislukt, ongeautoriseerd","Message deleted":"Bericht verwijderd","Message has been successfully flagged":"Bericht is succesvol gemarkeerd","Message pinned":"Bericht vastgezet",Mute:Mute$3,New:New$3,"New Messages!":"Nieuwe Berichten!","No results found":"Geen resultaten gevonden","Nothing yet...":"Nog niets ...","Only visible to you":"Alleen zichtbaar voor jou","Open emoji picker":"Open emojipicker","People matching":"Mensen die matchen","Pick your emoji":"Kies je emoji",Pin:Pin$3,"Pinned by":"Vastgemaakt door",Reply:Reply$3,"Reply to Message":"Antwoord op bericht",Search:Search$3,"Searching...":"Zoeken...",Send:Send$3,"Send message request failed":"Verzoek om bericht te verzenden mislukt","Sending...":"Aan het verzenden...","Slow Mode ON":"Langzame modus aan","Start of a new thread":"Begin van een nieuwe draadje","This message was deleted...":"Dit bericht was verwijderd",Thread:Thread$4,"Type your message":"Type je bericht",Unmute:Unmute$3,Unpin:Unpin$3,"Upload type: \"{{ type }}\" is not allowed":"Uploadtype: \"{{ type }}\" is niet toegestaan","Wait until all attachments have uploaded":"Wacht tot alle bijlagen zijn geüpload","You have no channels currently":"Er zijn geen chats beschikbaar","You've reached the maximum number of files":"Je hebt het maximale aantal bestanden bereikt",live:live$3,"this content could not be displayed":"Deze inhoud kan niet weergegeven worden","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} en {{ moreCount }} meer","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} en {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} en {{ secondUser }}","{{ imageCount }} more":"+{{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} deelnemers","{{ replyCount }} replies":"{{ replyCount }} antwoorden","{{ user }} has been muted":"{{ user }} is muted","{{ user }} has been unmuted":"{{ user }} is unmuted","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Bijlage..."};
|
|
6798
6996
|
|
|
6799
|
-
var Cancel$2="Cancelar";var Close$2="Perto";var Delete$2="Excluir";var Delivered$2="Entregue";var Flag$2="Bandeira";var Mute$2="Mudo";var New$2="Novo";var Pin$2="Alfinete";var Reply$2="Responder";var Search$2="Procurar";var Send$2="Mandar";var Thread$3="Fio";var Unmute$2="Com som";var Unpin$2="Liberar";var live$2="viver";var ptTranslations = {"1 reply":"1 resposta","Attach files":"Anexar arquivos",Cancel:Cancel$2,"Channel Missing":"Canal ausente",Close:Close$2,"Close emoji picker":"Fechar seletor de emoji","Commands matching":"Correspondência de comandos","Connection failure, reconnecting now...":"Falha de conexão, reconectando agora ...",Delete:Delete$2,Delivered:Delivered$2,"Edit Message":"Editar Mensagem","Edit message request failed":"O pedido de edição da mensagem falhou","Emoji matching":"Emoji correspondente","Empty message...":"Mensagem vazia ...","Error adding flag":"Erro ao adicionar bandeira","Error connecting to chat, refresh the page to try again.":"Erro ao conectar ao bate-papo, atualize a página para tentar novamente.","Error deleting message":"Erro ao deletar mensagem","Error muting a user ...":"Erro ao silenciar um usuário ...","Error pinning message":"Erro ao fixar mensagem","Error removing message pin":"Erro ao remover o PIN da mensagem","Error unmuting a user ...":"Erro ao ativar o som de um usuário ...","Error uploading file":"Erro ao enviar arquivo","Error uploading image":"Erro ao carregar a imagem","Error · Unsent":"Erro · Não enviado","Error: {{ errorMessage }}":"Erro: {{ errorMessage }}",Flag:Flag$2,"Message Failed · Click to try again":"A mensagem falhou · Clique para tentar novamente","Message Failed · Unauthorized":"A mensagem falhou · não autorizado","Message deleted":"Mensagem apagada","Message has been successfully flagged":"A mensagem foi sinalizada com sucesso","Message pinned":"Mensagem fixada",Mute:Mute$2,New:New$2,"New Messages!":"Novas mensagens!","No results found":"Nenhum resultado encontrado","Nothing yet...":"Nada ainda...","Only visible to you":"Visível apenas para você","Open emoji picker":"Abrir seletor de emoji","People matching":"Pessoas combinando","Pick your emoji":"Escolha o seu emoji",Pin:Pin$2,"Pinned by":"Fixado por",Reply:Reply$2,"Reply to Message":"Responder a mensagem",Search:Search$2,"Searching...":"Procurando...",Send:Send$2,"Send message request failed":"O pedido de envio de mensagem falhou","Sending...":"Enviando ...","Slow Mode ON":"Modo lento LIGADO","Start of a new thread":"Início de um novo tópico","This message was deleted...":"Esta mensagem foi excluída ...",Thread:Thread$3,"Type your message":"Digite sua mensagem",Unmute:Unmute$2,Unpin:Unpin$2,"Wait until all attachments have uploaded":"Espere até que todos os anexos tenham sido carregados","You have no channels currently":"Você não tem canais atualmente","You've reached the maximum number of files":"Você atingiu o número máximo de arquivos",live:live$2,"this content could not be displayed":"este conteúdo não pôde ser exibido","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} e mais {{ moreCount }}","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} e {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} e {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} mais","{{ memberCount }} members":"{{ memberCount }} membros","{{ replyCount }} replies":"{{ replyCount }} respostas","{{ user }} has been muted":"{{ user }} foi silenciado","{{ user }} has been unmuted":"{{ user }} foi reativado","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Anexo ..."};
|
|
6997
|
+
var Cancel$2="Cancelar";var Close$2="Perto";var Delete$2="Excluir";var Delivered$2="Entregue";var Flag$2="Bandeira";var Mute$2="Mudo";var New$2="Novo";var Pin$2="Alfinete";var Reply$2="Responder";var Search$2="Procurar";var Send$2="Mandar";var Thread$3="Fio";var Unmute$2="Com som";var Unpin$2="Liberar";var live$2="viver";var ptTranslations = {"1 reply":"1 resposta","Attach files":"Anexar arquivos",Cancel:Cancel$2,"Channel Missing":"Canal ausente",Close:Close$2,"Close emoji picker":"Fechar seletor de emoji","Commands matching":"Correspondência de comandos","Connection failure, reconnecting now...":"Falha de conexão, reconectando agora ...",Delete:Delete$2,Delivered:Delivered$2,"Edit Message":"Editar Mensagem","Edit message request failed":"O pedido de edição da mensagem falhou","Emoji matching":"Emoji correspondente","Empty message...":"Mensagem vazia ...","Error adding flag":"Erro ao adicionar bandeira","Error connecting to chat, refresh the page to try again.":"Erro ao conectar ao bate-papo, atualize a página para tentar novamente.","Error deleting message":"Erro ao deletar mensagem","Error muting a user ...":"Erro ao silenciar um usuário ...","Error pinning message":"Erro ao fixar mensagem","Error removing message pin":"Erro ao remover o PIN da mensagem","Error unmuting a user ...":"Erro ao ativar o som de um usuário ...","Error uploading file":"Erro ao enviar arquivo","Error uploading image":"Erro ao carregar a imagem","Error · Unsent":"Erro · Não enviado","Error: {{ errorMessage }}":"Erro: {{ errorMessage }}",Flag:Flag$2,"Message Failed · Click to try again":"A mensagem falhou · Clique para tentar novamente","Message Failed · Unauthorized":"A mensagem falhou · não autorizado","Message deleted":"Mensagem apagada","Message has been successfully flagged":"A mensagem foi sinalizada com sucesso","Message pinned":"Mensagem fixada",Mute:Mute$2,New:New$2,"New Messages!":"Novas mensagens!","No results found":"Nenhum resultado encontrado","Nothing yet...":"Nada ainda...","Only visible to you":"Visível apenas para você","Open emoji picker":"Abrir seletor de emoji","People matching":"Pessoas combinando","Pick your emoji":"Escolha o seu emoji",Pin:Pin$2,"Pinned by":"Fixado por",Reply:Reply$2,"Reply to Message":"Responder a mensagem",Search:Search$2,"Searching...":"Procurando...",Send:Send$2,"Send message request failed":"O pedido de envio de mensagem falhou","Sending...":"Enviando ...","Slow Mode ON":"Modo lento LIGADO","Start of a new thread":"Início de um novo tópico","This message was deleted...":"Esta mensagem foi excluída ...",Thread:Thread$3,"Type your message":"Digite sua mensagem",Unmute:Unmute$2,Unpin:Unpin$2,"Upload type: \"{{ type }}\" is not allowed":"Tipo de upload: \"{{ type }}\" não é permitido","Wait until all attachments have uploaded":"Espere até que todos os anexos tenham sido carregados","You have no channels currently":"Você não tem canais atualmente","You've reached the maximum number of files":"Você atingiu o número máximo de arquivos",live:live$2,"this content could not be displayed":"este conteúdo não pôde ser exibido","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} e mais {{ moreCount }}","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} e {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} e {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} mais","{{ memberCount }} members":"{{ memberCount }} membros","{{ replyCount }} replies":"{{ replyCount }} respostas","{{ user }} has been muted":"{{ user }} foi silenciado","{{ user }} has been unmuted":"{{ user }} foi reativado","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Anexo ..."};
|
|
6800
6998
|
|
|
6801
|
-
var Cancel$1="Отмена";var Close$1="Закрыть";var Delete$1="Удалить";var Delivered$1="Отправлено";var Flag$1="Пожаловаться";var Mute$1="Отключить уведомления";var New$1="Новые";var Pin$1="Штырь";var Reply$1="Отвечать";var Search$1="Поиск";var Send$1="Отправить";var Thread$2="Ветка";var Unmute$1="Включить уведомления";var Unpin$1="Открепить";var live$1="В прямом эфире";var ruTranslations = {"1 reply":"1 ответ","Attach files":"Прикрепить файлы",Cancel:Cancel$1,"Channel Missing":"Канал не найден",Close:Close$1,"Close emoji picker":"Закрыть окно выбора смайлов","Commands matching":"Соответствие команд","Connection failure, reconnecting now...":"Ошибка соединения, переподключение...",Delete:Delete$1,Delivered:Delivered$1,"Edit Message":"Редактировать сообщение","Edit message request failed":"Не удалось изменить запрос сообщения","Emoji matching":"Соответствие эмодзи","Empty message...":"Пустое сообщение...","Error adding flag":"Ошибка добавления флага","Error connecting to chat, refresh the page to try again.":"Ошибка подключения к чату, обновите страницу чтобы попробовать снова.","Error deleting message":"Ошибка при удалении сообщения","Error muting a user ...":"Ошибка отключения уведомлений от пользователя...","Error pinning message":"Сообщение об ошибке при закреплении","Error removing message pin":"Ошибка при удалении булавки сообщения","Error unmuting a user ...":"Ошибка включения уведомлений...","Error uploading file":"Ошибка при загрузке файла","Error uploading image":"Ошибка загрузки изображения","Error · Unsent":"Ошибка · Не отправлено","Error: {{ errorMessage }}":"Ошибка: {{ errorMessage }}",Flag:Flag$1,"Message Failed · Click to try again":"Ошибка отправки сообщения · Нажмите чтобы повторить","Message Failed · Unauthorized":"Ошибка отправки сообщения · Неавторизованный","Message deleted":"Сообщение удалено","Message has been successfully flagged":"Жалоба на сообщение была принята","Message pinned":"Сообщение закреплено",Mute:Mute$1,New:New$1,"New Messages!":"Новые сообщения!","No results found":"результаты не найдены","Nothing yet...":"Пока ничего нет...","Only visible to you":"Только видно для вас","Open emoji picker":"Выбрать emoji","People matching":"Соответствующие люди","Pick your emoji":"Выберите свой emoji",Pin:Pin$1,"Pinned by":"Закреплено",Reply:Reply$1,"Reply to Message":"Ответить на сообщение",Search:Search$1,"Searching...":"Ищем...",Send:Send$1,"Send message request failed":"Не удалось отправить запрос на отправку сообщения","Sending...":"Отправка...","Slow Mode ON":"Медленный режим включен","Start of a new thread":"Начало новой ветки","This message was deleted...":"Сообщение было удалено...",Thread:Thread$2,"Type your message":"Ваше сообщение",Unmute:Unmute$1,Unpin:Unpin$1,"Wait until all attachments have uploaded":"Подождите, пока все вложения загрузятся","You have no channels currently":"У вас нет каналов в данный момент","You've reached the maximum number of files":"Вы достигли максимального количества файлов",live:live$1,"this content could not be displayed":"Этот контент не может быть отображен в данный момент","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} и {{ moreCount }} еще","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} и {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} и {{ secondUser }}","{{ imageCount }} more":"Ещё {{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} члены","{{ replyCount }} replies":"{{ replyCount }} ответов","{{ user }} has been muted":"Вы отписались от уведомлений от {{ user }}","{{ user }} has been unmuted":"Уведомления от {{ user }} были включены","{{ watcherCount }} online":"{{ watcherCount }} в сети","🏙 Attachment...":"🏙 Вложение..."};
|
|
6999
|
+
var Cancel$1="Отмена";var Close$1="Закрыть";var Delete$1="Удалить";var Delivered$1="Отправлено";var Flag$1="Пожаловаться";var Mute$1="Отключить уведомления";var New$1="Новые";var Pin$1="Штырь";var Reply$1="Отвечать";var Search$1="Поиск";var Send$1="Отправить";var Thread$2="Ветка";var Unmute$1="Включить уведомления";var Unpin$1="Открепить";var live$1="В прямом эфире";var ruTranslations = {"1 reply":"1 ответ","Attach files":"Прикрепить файлы",Cancel:Cancel$1,"Channel Missing":"Канал не найден",Close:Close$1,"Close emoji picker":"Закрыть окно выбора смайлов","Commands matching":"Соответствие команд","Connection failure, reconnecting now...":"Ошибка соединения, переподключение...",Delete:Delete$1,Delivered:Delivered$1,"Edit Message":"Редактировать сообщение","Edit message request failed":"Не удалось изменить запрос сообщения","Emoji matching":"Соответствие эмодзи","Empty message...":"Пустое сообщение...","Error adding flag":"Ошибка добавления флага","Error connecting to chat, refresh the page to try again.":"Ошибка подключения к чату, обновите страницу чтобы попробовать снова.","Error deleting message":"Ошибка при удалении сообщения","Error muting a user ...":"Ошибка отключения уведомлений от пользователя...","Error pinning message":"Сообщение об ошибке при закреплении","Error removing message pin":"Ошибка при удалении булавки сообщения","Error unmuting a user ...":"Ошибка включения уведомлений...","Error uploading file":"Ошибка при загрузке файла","Error uploading image":"Ошибка загрузки изображения","Error · Unsent":"Ошибка · Не отправлено","Error: {{ errorMessage }}":"Ошибка: {{ errorMessage }}",Flag:Flag$1,"Message Failed · Click to try again":"Ошибка отправки сообщения · Нажмите чтобы повторить","Message Failed · Unauthorized":"Ошибка отправки сообщения · Неавторизованный","Message deleted":"Сообщение удалено","Message has been successfully flagged":"Жалоба на сообщение была принята","Message pinned":"Сообщение закреплено",Mute:Mute$1,New:New$1,"New Messages!":"Новые сообщения!","No results found":"результаты не найдены","Nothing yet...":"Пока ничего нет...","Only visible to you":"Только видно для вас","Open emoji picker":"Выбрать emoji","People matching":"Соответствующие люди","Pick your emoji":"Выберите свой emoji",Pin:Pin$1,"Pinned by":"Закреплено",Reply:Reply$1,"Reply to Message":"Ответить на сообщение",Search:Search$1,"Searching...":"Ищем...",Send:Send$1,"Send message request failed":"Не удалось отправить запрос на отправку сообщения","Sending...":"Отправка...","Slow Mode ON":"Медленный режим включен","Start of a new thread":"Начало новой ветки","This message was deleted...":"Сообщение было удалено...",Thread:Thread$2,"Type your message":"Ваше сообщение",Unmute:Unmute$1,Unpin:Unpin$1,"Upload type: \"{{ type }}\" is not allowed":"Тип загрузки: \"{{ type }}\" не разрешен","Wait until all attachments have uploaded":"Подождите, пока все вложения загрузятся","You have no channels currently":"У вас нет каналов в данный момент","You've reached the maximum number of files":"Вы достигли максимального количества файлов",live:live$1,"this content could not be displayed":"Этот контент не может быть отображен в данный момент","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} и {{ moreCount }} еще","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} и {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} и {{ secondUser }}","{{ imageCount }} more":"Ещё {{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} члены","{{ replyCount }} replies":"{{ replyCount }} ответов","{{ user }} has been muted":"Вы отписались от уведомлений от {{ user }}","{{ user }} has been unmuted":"Уведомления от {{ user }} были включены","{{ watcherCount }} online":"{{ watcherCount }} в сети","🏙 Attachment...":"🏙 Вложение..."};
|
|
6802
7000
|
|
|
6803
|
-
var Cancel="İptal";var Close="Kapat";var Delete="Sil";var Delivered="İletildi";var Flag="Bayrak";var Mute="Sessiz";var New="Yeni";var Pin="Toplu iğne";var Reply="Cevapla";var Search="Arama";var Send="Gönder";var Thread$1="Konu";var Unmute="Sesini aç";var Unpin="Sabitlemeyi kaldır";var live="canlı";var trTranslations = {"1 reply":"1 cevap","Attach files":"Dosya ekle",Cancel:Cancel,"Channel Missing":"Kanal bulunamıyor",Close:Close,"Close emoji picker":"Emoji seçiciyi kapat","Commands matching":"Eşleşen komutlar","Connection failure, reconnecting now...":"Bağlantı hatası, tekrar bağlanılıyor...",Delete:Delete,Delivered:Delivered,"Edit Message":"Mesajı Düzenle","Edit message request failed":"Mesaj düzenleme isteği başarısız oldu","Emoji matching":"Emoji eşleştirme","Empty message...":"Boş mesaj...","Error adding flag":"Bayrak eklenirken hata oluştu","Error connecting to chat, refresh the page to try again.":"Bağlantı hatası, sayfayı yenileyip tekrar deneyin.","Error deleting message":"Mesaj silinirken hata oluştu","Error muting a user ...":"Kullanıcıyı sessize alırken hata oluştu ...","Error pinning message":"Mesaj sabitlenirken hata oluştu","Error removing message pin":"Mesaj PIN'i kaldırılırken hata oluştu","Error unmuting a user ...":"Kullanıcının sesini açarken hata oluştu ...","Error uploading file":"Dosya yüklenirken hata oluştu","Error uploading image":"Resmi yüklerken hata","Error · Unsent":"Hata · Gönderilemedi","Error: {{ errorMessage }}":"Hata: {{ errorMessage }}",Flag:Flag,"Message Failed · Click to try again":"Mesaj Başarısız · Tekrar denemek için tıklayın","Message Failed · Unauthorized":"Mesaj Başarısız · Yetkisiz","Message deleted":"Mesaj silindi","Message has been successfully flagged":"Mesaj başarıyla bayraklandı","Message pinned":"Mesaj sabitlendi",Mute:Mute,New:New,"New Messages!":"Yeni Mesajlar!","No results found":"Sonuç bulunamadı","Nothing yet...":"Şimdilik hiçbir şey...","Only visible to you":"Sadece size görünür","Open emoji picker":"Emoji klavyesini aç","People matching":"Eşleşen kişiler","Pick your emoji":"Emoji seçin",Pin:Pin,"Pinned by":"Sabitleyen",Reply:Reply,"Reply to Message":"Mesajı Cevapla",Search:Search,"Searching...":"Aranıyor...",Send:Send,"Send message request failed":"Mesaj gönderme isteği başarısız oldu","Sending...":"Gönderiliyor...","Slow Mode ON":"Yavaş Mod Açık","Start of a new thread":"Yeni konunun başı","This message was deleted...":"Bu mesaj silindi",Thread:Thread$1,"Type your message":"Mesajınızı yazın",Unmute:Unmute,Unpin:Unpin,"Wait until all attachments have uploaded":"Tüm ekler yüklenene kadar bekleyin","You have no channels currently":"Henüz kanalınız yok","You've reached the maximum number of files":"Maksimum dosya sayısına ulaştınız",live:live,"this content could not be displayed":"bu içerik gösterilemiyor","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} ve {{ moreCount }} daha","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }}, ve {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} ve {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} adet daha","{{ memberCount }} members":"{{ memberCount }} üyeler","{{ replyCount }} replies":"{{ replyCount }} cevaplar","{{ user }} has been muted":"{{ user }} sessize alındı","{{ user }} has been unmuted":"{{ user }} sesi açıldı","{{ watcherCount }} online":"{{ watcherCount }} çevrimiçi","🏙 Attachment...":"🏙 Ek..."};
|
|
7001
|
+
var Cancel="İptal";var Close="Kapat";var Delete="Sil";var Delivered="İletildi";var Flag="Bayrak";var Mute="Sessiz";var New="Yeni";var Pin="Toplu iğne";var Reply="Cevapla";var Search="Arama";var Send="Gönder";var Thread$1="Konu";var Unmute="Sesini aç";var Unpin="Sabitlemeyi kaldır";var live="canlı";var trTranslations = {"1 reply":"1 cevap","Attach files":"Dosya ekle",Cancel:Cancel,"Channel Missing":"Kanal bulunamıyor",Close:Close,"Close emoji picker":"Emoji seçiciyi kapat","Commands matching":"Eşleşen komutlar","Connection failure, reconnecting now...":"Bağlantı hatası, tekrar bağlanılıyor...",Delete:Delete,Delivered:Delivered,"Edit Message":"Mesajı Düzenle","Edit message request failed":"Mesaj düzenleme isteği başarısız oldu","Emoji matching":"Emoji eşleştirme","Empty message...":"Boş mesaj...","Error adding flag":"Bayrak eklenirken hata oluştu","Error connecting to chat, refresh the page to try again.":"Bağlantı hatası, sayfayı yenileyip tekrar deneyin.","Error deleting message":"Mesaj silinirken hata oluştu","Error muting a user ...":"Kullanıcıyı sessize alırken hata oluştu ...","Error pinning message":"Mesaj sabitlenirken hata oluştu","Error removing message pin":"Mesaj PIN'i kaldırılırken hata oluştu","Error unmuting a user ...":"Kullanıcının sesini açarken hata oluştu ...","Error uploading file":"Dosya yüklenirken hata oluştu","Error uploading image":"Resmi yüklerken hata","Error · Unsent":"Hata · Gönderilemedi","Error: {{ errorMessage }}":"Hata: {{ errorMessage }}",Flag:Flag,"Message Failed · Click to try again":"Mesaj Başarısız · Tekrar denemek için tıklayın","Message Failed · Unauthorized":"Mesaj Başarısız · Yetkisiz","Message deleted":"Mesaj silindi","Message has been successfully flagged":"Mesaj başarıyla bayraklandı","Message pinned":"Mesaj sabitlendi",Mute:Mute,New:New,"New Messages!":"Yeni Mesajlar!","No results found":"Sonuç bulunamadı","Nothing yet...":"Şimdilik hiçbir şey...","Only visible to you":"Sadece size görünür","Open emoji picker":"Emoji klavyesini aç","People matching":"Eşleşen kişiler","Pick your emoji":"Emoji seçin",Pin:Pin,"Pinned by":"Sabitleyen",Reply:Reply,"Reply to Message":"Mesajı Cevapla",Search:Search,"Searching...":"Aranıyor...",Send:Send,"Send message request failed":"Mesaj gönderme isteği başarısız oldu","Sending...":"Gönderiliyor...","Slow Mode ON":"Yavaş Mod Açık","Start of a new thread":"Yeni konunun başı","This message was deleted...":"Bu mesaj silindi",Thread:Thread$1,"Type your message":"Mesajınızı yazın",Unmute:Unmute,Unpin:Unpin,"Upload type: \"{{ type }}\" is not allowed":"Yükleme türü: \"{{ type }}\" izin verilmez","Wait until all attachments have uploaded":"Tüm ekler yüklenene kadar bekleyin","You have no channels currently":"Henüz kanalınız yok","You've reached the maximum number of files":"Maksimum dosya sayısına ulaştınız",live:live,"this content could not be displayed":"bu içerik gösterilemiyor","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} ve {{ moreCount }} daha","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }}, ve {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} ve {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} adet daha","{{ memberCount }} members":"{{ memberCount }} üyeler","{{ replyCount }} replies":"{{ replyCount }} cevaplar","{{ user }} has been muted":"{{ user }} sessize alındı","{{ user }} has been unmuted":"{{ user }} sesi açıldı","{{ watcherCount }} online":"{{ watcherCount }} çevrimiçi","🏙 Attachment...":"🏙 Ek..."};
|
|
6804
7002
|
|
|
6805
7003
|
var defaultNS = 'translation';
|
|
6806
7004
|
var defaultLng = 'en';
|
|
@@ -6808,9 +7006,9 @@ Dayjs__default['default'].extend(updateLocale__default['default']);
|
|
|
6808
7006
|
Dayjs__default['default'].updateLocale('de', {
|
|
6809
7007
|
calendar: {
|
|
6810
7008
|
lastDay: '[gestern um] LT',
|
|
6811
|
-
lastWeek: '[
|
|
7009
|
+
lastWeek: '[letzten] dddd [bei] LT',
|
|
6812
7010
|
nextDay: '[morgen zu] LT',
|
|
6813
|
-
nextWeek: 'dddd [
|
|
7011
|
+
nextWeek: 'dddd [bei] LT',
|
|
6814
7012
|
sameDay: '[heute um] LT',
|
|
6815
7013
|
sameElse: 'L',
|
|
6816
7014
|
},
|
|
@@ -7401,7 +7599,7 @@ var Streami18n = /** @class */ (function () {
|
|
|
7401
7599
|
return Streami18n;
|
|
7402
7600
|
}());
|
|
7403
7601
|
|
|
7404
|
-
var version = '6.
|
|
7602
|
+
var version = '6.12.0';
|
|
7405
7603
|
|
|
7406
7604
|
var useChat = function (_a) {
|
|
7407
7605
|
var _b;
|
|
@@ -7417,13 +7615,19 @@ var useChat = function (_a) {
|
|
|
7417
7615
|
var clientMutes = (_b = client.user) === null || _b === void 0 ? void 0 : _b.mutes;
|
|
7418
7616
|
var closeMobileNav = function () { return setNavOpen(false); };
|
|
7419
7617
|
var openMobileNav = function () { return setTimeout(function () { return setNavOpen(true); }, 100); };
|
|
7618
|
+
var appSettings = React.useRef(null);
|
|
7619
|
+
var getAppSettings = function () {
|
|
7620
|
+
if (appSettings.current) {
|
|
7621
|
+
return appSettings.current;
|
|
7622
|
+
}
|
|
7623
|
+
appSettings.current = client.getAppSettings();
|
|
7624
|
+
return appSettings.current;
|
|
7625
|
+
};
|
|
7420
7626
|
React.useEffect(function () {
|
|
7421
7627
|
if (client) {
|
|
7422
7628
|
var userAgent = client.getUserAgent();
|
|
7423
7629
|
if (!userAgent.includes('stream-chat-react')) {
|
|
7424
|
-
|
|
7425
|
-
* results in something like: 'stream-chat-react-2.3.2-stream-chat-javascript-client-browser-2.2.2'
|
|
7426
|
-
*/
|
|
7630
|
+
// result looks like: 'stream-chat-react-2.3.2-stream-chat-javascript-client-browser-2.2.2'
|
|
7427
7631
|
client.setUserAgent("stream-chat-react-" + version + "-" + userAgent);
|
|
7428
7632
|
}
|
|
7429
7633
|
}
|
|
@@ -7436,7 +7640,7 @@ var useChat = function (_a) {
|
|
|
7436
7640
|
};
|
|
7437
7641
|
client.on('notification.mutes_updated', handleEvent);
|
|
7438
7642
|
return function () { return client.off('notification.mutes_updated', handleEvent); };
|
|
7439
|
-
}, [
|
|
7643
|
+
}, [clientMutes === null || clientMutes === void 0 ? void 0 : clientMutes.length]);
|
|
7440
7644
|
React.useEffect(function () {
|
|
7441
7645
|
var _a;
|
|
7442
7646
|
var userLanguage = (_a = client.user) === null || _a === void 0 ? void 0 : _a.language;
|
|
@@ -7451,7 +7655,7 @@ var useChat = function (_a) {
|
|
|
7451
7655
|
streami18n.getTranslators().then(function (translator) {
|
|
7452
7656
|
setTranslators(__assign(__assign({}, translator), { userLanguage: userLanguage || defaultLanguage }));
|
|
7453
7657
|
});
|
|
7454
|
-
}, [
|
|
7658
|
+
}, [i18nInstance]);
|
|
7455
7659
|
var setActiveChannel = React.useCallback(function (activeChannel, watchers, event) {
|
|
7456
7660
|
if (watchers === void 0) { watchers = {}; }
|
|
7457
7661
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -7476,6 +7680,7 @@ var useChat = function (_a) {
|
|
|
7476
7680
|
return {
|
|
7477
7681
|
channel: channel,
|
|
7478
7682
|
closeMobileNav: closeMobileNav,
|
|
7683
|
+
getAppSettings: getAppSettings,
|
|
7479
7684
|
mutes: mutes,
|
|
7480
7685
|
navOpen: navOpen,
|
|
7481
7686
|
openMobileNav: openMobileNav,
|
|
@@ -7486,7 +7691,7 @@ var useChat = function (_a) {
|
|
|
7486
7691
|
|
|
7487
7692
|
var useCreateChatContext = function (value) {
|
|
7488
7693
|
var _a;
|
|
7489
|
-
var channel = value.channel, client = value.client, closeMobileNav = value.closeMobileNav, customClasses = value.customClasses, mutes = value.mutes, navOpen = value.navOpen, openMobileNav = value.openMobileNav, setActiveChannel = value.setActiveChannel, theme = value.theme, useImageFlagEmojisOnWindows = value.useImageFlagEmojisOnWindows;
|
|
7694
|
+
var channel = value.channel, client = value.client, closeMobileNav = value.closeMobileNav, customClasses = value.customClasses, getAppSettings = value.getAppSettings, mutes = value.mutes, navOpen = value.navOpen, openMobileNav = value.openMobileNav, setActiveChannel = value.setActiveChannel, theme = value.theme, useImageFlagEmojisOnWindows = value.useImageFlagEmojisOnWindows;
|
|
7490
7695
|
var channelCid = channel === null || channel === void 0 ? void 0 : channel.cid;
|
|
7491
7696
|
var clientValues = "" + client.clientID + Object.keys(client.activeChannels).length + Object.keys(client.listeners).length + client.mutedChannels.length + "\n " + ((_a = client.user) === null || _a === void 0 ? void 0 : _a.id);
|
|
7492
7697
|
var mutedUsersLength = mutes.length;
|
|
@@ -7495,13 +7700,14 @@ var useCreateChatContext = function (value) {
|
|
|
7495
7700
|
client: client,
|
|
7496
7701
|
closeMobileNav: closeMobileNav,
|
|
7497
7702
|
customClasses: customClasses,
|
|
7703
|
+
getAppSettings: getAppSettings,
|
|
7498
7704
|
mutes: mutes,
|
|
7499
7705
|
navOpen: navOpen,
|
|
7500
7706
|
openMobileNav: openMobileNav,
|
|
7501
7707
|
setActiveChannel: setActiveChannel,
|
|
7502
7708
|
theme: theme,
|
|
7503
7709
|
useImageFlagEmojisOnWindows: useImageFlagEmojisOnWindows,
|
|
7504
|
-
}); }, [channelCid, clientValues, mutedUsersLength, navOpen]);
|
|
7710
|
+
}); }, [channelCid, clientValues, getAppSettings, mutedUsersLength, navOpen]);
|
|
7505
7711
|
return chatContext;
|
|
7506
7712
|
};
|
|
7507
7713
|
|
|
@@ -7541,13 +7747,14 @@ var useCustomStyles = function (customStyles) {
|
|
|
7541
7747
|
*/
|
|
7542
7748
|
var Chat = function (props) {
|
|
7543
7749
|
var children = props.children, client = props.client, customClasses = props.customClasses, customStyles = props.customStyles, _a = props.darkMode, darkMode = _a === void 0 ? false : _a, defaultLanguage = props.defaultLanguage, i18nInstance = props.i18nInstance, _b = props.initialNavOpen, initialNavOpen = _b === void 0 ? true : _b, _c = props.theme, theme = _c === void 0 ? 'messaging light' : _c, _d = props.useImageFlagEmojisOnWindows, useImageFlagEmojisOnWindows = _d === void 0 ? false : _d;
|
|
7544
|
-
var _e = useChat({ client: client, defaultLanguage: defaultLanguage, i18nInstance: i18nInstance, initialNavOpen: initialNavOpen }), channel = _e.channel, closeMobileNav = _e.closeMobileNav, mutes = _e.mutes, navOpen = _e.navOpen, openMobileNav = _e.openMobileNav, setActiveChannel = _e.setActiveChannel, translators = _e.translators;
|
|
7750
|
+
var _e = useChat({ client: client, defaultLanguage: defaultLanguage, i18nInstance: i18nInstance, initialNavOpen: initialNavOpen }), channel = _e.channel, closeMobileNav = _e.closeMobileNav, getAppSettings = _e.getAppSettings, mutes = _e.mutes, navOpen = _e.navOpen, openMobileNav = _e.openMobileNav, setActiveChannel = _e.setActiveChannel, translators = _e.translators;
|
|
7545
7751
|
useCustomStyles(darkMode ? darkModeTheme : customStyles);
|
|
7546
7752
|
var chatContextValue = useCreateChatContext({
|
|
7547
7753
|
channel: channel,
|
|
7548
7754
|
client: client,
|
|
7549
7755
|
closeMobileNav: closeMobileNav,
|
|
7550
7756
|
customClasses: customClasses,
|
|
7757
|
+
getAppSettings: getAppSettings,
|
|
7551
7758
|
mutes: mutes,
|
|
7552
7759
|
navOpen: navOpen,
|
|
7553
7760
|
openMobileNav: openMobileNav,
|
|
@@ -7563,7 +7770,7 @@ var Chat = function (props) {
|
|
|
7563
7770
|
|
|
7564
7771
|
var UnMemoizedDateSeparator = function (props) {
|
|
7565
7772
|
var date = props.date, formatDate = props.formatDate, _a = props.position, position = _a === void 0 ? 'right' : _a, unread = props.unread;
|
|
7566
|
-
var _b = useTranslationContext(), t = _b.t, tDateTimeParser = _b.tDateTimeParser;
|
|
7773
|
+
var _b = useTranslationContext('DateSeparator'), t = _b.t, tDateTimeParser = _b.tDateTimeParser;
|
|
7567
7774
|
if (typeof date === 'string')
|
|
7568
7775
|
return null;
|
|
7569
7776
|
var parsedDate = tDateTimeParser(date.toISOString());
|
|
@@ -7588,7 +7795,7 @@ var DateSeparator = React__default['default'].memo(UnMemoizedDateSeparator);
|
|
|
7588
7795
|
var UnMemoizedEventComponent = function (props) {
|
|
7589
7796
|
var _a, _b, _c;
|
|
7590
7797
|
var _d = props.Avatar, Avatar$1 = _d === void 0 ? Avatar : _d, message = props.message;
|
|
7591
|
-
var tDateTimeParser = useTranslationContext().tDateTimeParser;
|
|
7798
|
+
var tDateTimeParser = useTranslationContext('EventComponent').tDateTimeParser;
|
|
7592
7799
|
var _e = message.created_at, created_at = _e === void 0 ? '' : _e, event = message.event, text = message.text, type = message.type;
|
|
7593
7800
|
var dateFormatter = function (date, format) {
|
|
7594
7801
|
var parsedDate = tDateTimeParser(date);
|
|
@@ -7743,10 +7950,10 @@ var getUserColor = function (theme, userId) {
|
|
|
7743
7950
|
var UnMemoizedFixedHeightMessage = function (props) {
|
|
7744
7951
|
var _a, _b, _c, _d;
|
|
7745
7952
|
var propGroupedByUser = props.groupedByUser, propMessage = props.message;
|
|
7746
|
-
var theme = useChatContext().theme;
|
|
7747
|
-
var _e = useMessageContext(), contextGroupedByUser = _e.groupedByUser, contextMessage = _e.message;
|
|
7748
|
-
var _f = useComponentContext().MessageDeleted, MessageDeleted$1 = _f === void 0 ? MessageDeleted : _f;
|
|
7749
|
-
var userLanguage = useTranslationContext().userLanguage;
|
|
7953
|
+
var theme = useChatContext('FixedHeightMessage').theme;
|
|
7954
|
+
var _e = useMessageContext('FixedHeightMessage'), contextGroupedByUser = _e.groupedByUser, contextMessage = _e.message;
|
|
7955
|
+
var _f = useComponentContext('FixedHeightMessage').MessageDeleted, MessageDeleted$1 = _f === void 0 ? MessageDeleted : _f;
|
|
7956
|
+
var userLanguage = useTranslationContext('FixedHeightMessage').userLanguage;
|
|
7750
7957
|
var groupedByUser = propGroupedByUser !== undefined ? propGroupedByUser : contextGroupedByUser;
|
|
7751
7958
|
var message = propMessage || contextMessage;
|
|
7752
7959
|
var handleAction = useActionHandler(message);
|
|
@@ -7790,7 +7997,7 @@ var FixedHeightMessage = React__default['default'].memo(UnMemoizedFixedHeightMes
|
|
|
7790
7997
|
|
|
7791
7998
|
var MessageWithContext = function (props) {
|
|
7792
7999
|
var canPin = props.canPin, groupedByUser = props.groupedByUser, propMessage = props.Message, message = props.message, _a = props.messageActions, messageActions = _a === void 0 ? Object.keys(MESSAGE_ACTIONS) : _a, propOnUserClick = props.onUserClick, propOnUserHover = props.onUserHover, userRoles = props.userRoles;
|
|
7793
|
-
var contextMessage = useComponentContext().Message;
|
|
8000
|
+
var contextMessage = useComponentContext('Message').Message;
|
|
7794
8001
|
var actionsEnabled = message.type === 'regular' && message.status === 'received';
|
|
7795
8002
|
var MessageUIComponent = propMessage || contextMessage;
|
|
7796
8003
|
var _b = useEditHandler(), clearEdit = _b.clearEdit, editing = _b.editing, setEdit = _b.setEdit;
|
|
@@ -7800,9 +8007,6 @@ var MessageWithContext = function (props) {
|
|
|
7800
8007
|
}), onUserClick = _c.onUserClick, onUserHover = _c.onUserHover;
|
|
7801
8008
|
var canDelete = userRoles.canDelete, canEdit = userRoles.canEdit, canFlag = userRoles.canFlag, canMute = userRoles.canMute, canQuote = userRoles.canQuote, canReact = userRoles.canReact, canReply = userRoles.canReply, isMyMessage = userRoles.isMyMessage;
|
|
7802
8009
|
var messageActionsHandler = React.useCallback(function () {
|
|
7803
|
-
if (!message || !messageActions) {
|
|
7804
|
-
return [];
|
|
7805
|
-
}
|
|
7806
8010
|
return getMessageActions(messageActions, {
|
|
7807
8011
|
canDelete: canDelete,
|
|
7808
8012
|
canEdit: canEdit,
|
|
@@ -7832,8 +8036,8 @@ var MemoizedMessage = React__default['default'].memo(MessageWithContext, areMess
|
|
|
7832
8036
|
*/
|
|
7833
8037
|
var Message = function (props) {
|
|
7834
8038
|
var closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, disableQuotedMessages = props.disableQuotedMessages, getDeleteMessageErrorNotification = props.getDeleteMessageErrorNotification, getFlagMessageErrorNotification = props.getFlagMessageErrorNotification, getFlagMessageSuccessNotification = props.getFlagMessageSuccessNotification, getMuteUserErrorNotification = props.getMuteUserErrorNotification, getMuteUserSuccessNotification = props.getMuteUserSuccessNotification, getPinMessageErrorNotification = props.getPinMessageErrorNotification, message = props.message, _a = props.onlySenderCanEdit, onlySenderCanEdit = _a === void 0 ? false : _a, propOnMentionsClick = props.onMentionsClick, propOnMentionsHover = props.onMentionsHover, propOpenThread = props.openThread, pinPermissions = props.pinPermissions, propRetrySendMessage = props.retrySendMessage;
|
|
7835
|
-
var addNotification = useChannelActionContext().addNotification;
|
|
7836
|
-
var mutes = useChannelStateContext().mutes;
|
|
8039
|
+
var addNotification = useChannelActionContext('Message').addNotification;
|
|
8040
|
+
var mutes = useChannelStateContext('Message').mutes;
|
|
7837
8041
|
var reactionSelectorRef = React.useRef(null);
|
|
7838
8042
|
var handleAction = useActionHandler(message);
|
|
7839
8043
|
var handleOpenThread = useOpenThreadHandler(message, propOpenThread);
|
|
@@ -7869,7 +8073,7 @@ var Message = function (props) {
|
|
|
7869
8073
|
var MessageCommerceWithContext = function (props) {
|
|
7870
8074
|
var _a, _b, _c, _d, _e, _f;
|
|
7871
8075
|
var groupStyles = props.groupStyles, handleAction = props.handleAction, handleOpenThread = props.handleOpenThread, isMyMessage = props.isMyMessage, isReactionEnabled = props.isReactionEnabled, message = props.message, onUserClick = props.onUserClick, onUserHover = props.onUserHover, reactionSelectorRef = props.reactionSelectorRef, showDetailedReactions = props.showDetailedReactions, threadList = props.threadList;
|
|
7872
|
-
var _g = useComponentContext(), Attachment = _g.Attachment, _h = _g.Avatar, Avatar$1 = _h === void 0 ? Avatar : _h, _j = _g.MessageDeleted, MessageDeleted$1 = _j === void 0 ? MessageDeleted : _j, _k = _g.MessageRepliesCountButton, MessageRepliesCountButton$1 = _k === void 0 ? MessageRepliesCountButton : _k, _l = _g.MessageOptions, MessageOptions$1 = _l === void 0 ? MessageOptions : _l, _m = _g.MessageTimestamp, MessageTimestamp$1 = _m === void 0 ? MessageTimestamp : _m, _o = _g.ReactionSelector, ReactionSelector$1 = _o === void 0 ? ReactionSelector : _o, _p = _g.ReactionsList, ReactionsList$1 = _p === void 0 ? ReactionsList : _p;
|
|
8076
|
+
var _g = useComponentContext('MessageCommerce'), Attachment = _g.Attachment, _h = _g.Avatar, Avatar$1 = _h === void 0 ? Avatar : _h, _j = _g.MessageDeleted, MessageDeleted$1 = _j === void 0 ? MessageDeleted : _j, _k = _g.MessageRepliesCountButton, MessageRepliesCountButton$1 = _k === void 0 ? MessageRepliesCountButton : _k, _l = _g.MessageOptions, MessageOptions$1 = _l === void 0 ? MessageOptions : _l, _m = _g.MessageTimestamp, MessageTimestamp$1 = _m === void 0 ? MessageTimestamp : _m, _o = _g.ReactionSelector, ReactionSelector$1 = _o === void 0 ? ReactionSelector : _o, _p = _g.ReactionsList, ReactionsList$1 = _p === void 0 ? ReactionsList : _p;
|
|
7873
8077
|
var hasAttachment = messageHasAttachments(message);
|
|
7874
8078
|
var hasReactions = messageHasReactions(message);
|
|
7875
8079
|
var firstGroupStyle = groupStyles ? groupStyles[0] : 'single';
|
|
@@ -7903,16 +8107,15 @@ var MemoizedMessageCommerce = React__default['default'].memo(MessageCommerceWith
|
|
|
7903
8107
|
* UI component that renders a message and receives functionality from the Message/MessageList components
|
|
7904
8108
|
*/
|
|
7905
8109
|
var MessageCommerce = function (props) {
|
|
7906
|
-
var messageContext = useMessageContext();
|
|
8110
|
+
var messageContext = useMessageContext('MessageCommerce');
|
|
7907
8111
|
return React__default['default'].createElement(MemoizedMessageCommerce, __assign({}, messageContext, props));
|
|
7908
8112
|
};
|
|
7909
8113
|
|
|
7910
8114
|
var MessageLivestreamWithContext = function (props) {
|
|
7911
8115
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
7912
8116
|
var clearEditingState = props.clearEditingState, editing = props.editing, groupStyles = props.groupStyles, handleAction = props.handleAction, handleOpenThread = props.handleOpenThread, handleRetry = props.handleRetry, initialMessage = props.initialMessage, isReactionEnabled = props.isReactionEnabled, message = props.message, messageWrapperRef = props.messageWrapperRef, onMentionsClickMessage = props.onMentionsClickMessage, onMentionsHoverMessage = props.onMentionsHoverMessage, onReactionListClick = props.onReactionListClick, onUserClick = props.onUserClick, onUserHover = props.onUserHover, reactionSelectorRef = props.reactionSelectorRef, _l = props.renderText, renderText$1 = _l === void 0 ? renderText : _l, showDetailedReactions = props.showDetailedReactions, unsafeHTML = props.unsafeHTML;
|
|
7913
|
-
var _m = useComponentContext().QuotedMessage, QuotedMessage$1 =
|
|
7914
|
-
var
|
|
7915
|
-
var _w = useTranslationContext(), t = _w.t, userLanguage = _w.userLanguage;
|
|
8117
|
+
var _m = useComponentContext('MessageLivestream'), Attachment = _m.Attachment, _o = _m.Avatar, Avatar$1 = _o === void 0 ? Avatar : _o, _p = _m.EditMessageInput, EditMessageInput = _p === void 0 ? EditMessageForm : _p, _q = _m.MessageDeleted, MessageDeleted$1 = _q === void 0 ? MessageDeleted : _q, _r = _m.MessageRepliesCountButton, MessageRepliesCountButton$1 = _r === void 0 ? MessageRepliesCountButton : _r, _s = _m.PinIndicator, PinIndicator$1 = _s === void 0 ? PinIndicator : _s, _t = _m.QuotedMessage, QuotedMessage$1 = _t === void 0 ? QuotedMessage : _t, _u = _m.ReactionsList, ReactionsList = _u === void 0 ? SimpleReactionsList : _u, _v = _m.ReactionSelector, ReactionSelector$1 = _v === void 0 ? ReactionSelector : _v;
|
|
8118
|
+
var _w = useTranslationContext('MessageLivestream'), t = _w.t, userLanguage = _w.userLanguage;
|
|
7916
8119
|
var messageTextToRender = ((_a = message.i18n) === null || _a === void 0 ? void 0 : _a[userLanguage + "_text"]) || message.text;
|
|
7917
8120
|
var messageText = React.useMemo(function () { return renderText$1(messageTextToRender, message.mentioned_users); }, [
|
|
7918
8121
|
message.mentioned_users,
|
|
@@ -7975,8 +8178,8 @@ var MessageLivestreamWithContext = function (props) {
|
|
|
7975
8178
|
};
|
|
7976
8179
|
var MessageLivestreamActions = function (props) {
|
|
7977
8180
|
var messageWrapperRef = props.messageWrapperRef, onReactionListClick = props.onReactionListClick;
|
|
7978
|
-
var _a = useComponentContext().MessageTimestamp, MessageTimestamp$1 = _a === void 0 ? MessageTimestamp : _a;
|
|
7979
|
-
var _b = useMessageContext(), getMessageActions = _b.getMessageActions, handleOpenThread = _b.handleOpenThread, initialMessage = _b.initialMessage, message = _b.message, threadList = _b.threadList;
|
|
8181
|
+
var _a = useComponentContext('MessageLivestream').MessageTimestamp, MessageTimestamp$1 = _a === void 0 ? MessageTimestamp : _a;
|
|
8182
|
+
var _b = useMessageContext('MessageLivestream'), getMessageActions = _b.getMessageActions, handleOpenThread = _b.handleOpenThread, initialMessage = _b.initialMessage, message = _b.message, threadList = _b.threadList;
|
|
7980
8183
|
var _c = React.useState(false), actionsBoxOpen = _c[0], setActionsBoxOpen = _c[1];
|
|
7981
8184
|
var hideOptions = React.useCallback(function () { return setActionsBoxOpen(false); }, []);
|
|
7982
8185
|
var messageDeletedAt = !!message.deleted_at;
|
|
@@ -8037,7 +8240,7 @@ var MemoizedMessageLivestream = React__default['default'].memo(MessageLivestream
|
|
|
8037
8240
|
* Implements the look and feel for a livestream use case.
|
|
8038
8241
|
*/
|
|
8039
8242
|
var MessageLivestream = function (props) {
|
|
8040
|
-
var messageContext = useMessageContext();
|
|
8243
|
+
var messageContext = useMessageContext('MessageLivestream');
|
|
8041
8244
|
var messageWrapperRef = React.useRef(null);
|
|
8042
8245
|
var reactionSelectorRef = React.useRef(null);
|
|
8043
8246
|
var message = props.message || messageContext.message;
|
|
@@ -8048,8 +8251,8 @@ var MessageLivestream = function (props) {
|
|
|
8048
8251
|
var MessageTeamWithContext = function (props) {
|
|
8049
8252
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
8050
8253
|
var clearEditingState = props.clearEditingState, editing = props.editing, getMessageActions = props.getMessageActions, groupStyles = props.groupStyles, handleAction = props.handleAction, handleOpenThread = props.handleOpenThread, handleRetry = props.handleRetry, initialMessage = props.initialMessage, isReactionEnabled = props.isReactionEnabled, message = props.message, messageWrapperRef = props.messageWrapperRef, onMentionsClickMessage = props.onMentionsClickMessage, onMentionsHoverMessage = props.onMentionsHoverMessage, onReactionListClick = props.onReactionListClick, onUserClick = props.onUserClick, onUserHover = props.onUserHover, reactionSelectorRef = props.reactionSelectorRef, _o = props.renderText, renderText$1 = _o === void 0 ? renderText : _o, showDetailedReactions = props.showDetailedReactions, threadList = props.threadList, unsafeHTML = props.unsafeHTML;
|
|
8051
|
-
var _p = useComponentContext(), Attachment = _p.Attachment, _q = _p.Avatar, Avatar$1 = _q === void 0 ? Avatar : _q, _r = _p.EditMessageInput, EditMessageInput = _r === void 0 ? EditMessageForm : _r, _s = _p.MessageDeleted, MessageDeleted$1 = _s === void 0 ? MessageDeleted : _s, _t = _p.MessageRepliesCountButton, MessageRepliesCountButton$1 = _t === void 0 ? MessageRepliesCountButton : _t, _u = _p.MessageTimestamp, MessageTimestamp$1 = _u === void 0 ? MessageTimestamp : _u, _v = _p.PinIndicator, PinIndicator$1 = _v === void 0 ? PinIndicator : _v, _w = _p.QuotedMessage, QuotedMessage$1 = _w === void 0 ? QuotedMessage : _w, _x = _p.ReactionsList, ReactionsList = _x === void 0 ? SimpleReactionsList : _x, _y = _p.ReactionSelector, ReactionSelector$1 = _y === void 0 ? ReactionSelector : _y;
|
|
8052
|
-
var _z = useTranslationContext(), t = _z.t, userLanguage = _z.userLanguage;
|
|
8254
|
+
var _p = useComponentContext('MessageTeam'), Attachment = _p.Attachment, _q = _p.Avatar, Avatar$1 = _q === void 0 ? Avatar : _q, _r = _p.EditMessageInput, EditMessageInput = _r === void 0 ? EditMessageForm : _r, _s = _p.MessageDeleted, MessageDeleted$1 = _s === void 0 ? MessageDeleted : _s, _t = _p.MessageRepliesCountButton, MessageRepliesCountButton$1 = _t === void 0 ? MessageRepliesCountButton : _t, _u = _p.MessageTimestamp, MessageTimestamp$1 = _u === void 0 ? MessageTimestamp : _u, _v = _p.PinIndicator, PinIndicator$1 = _v === void 0 ? PinIndicator : _v, _w = _p.QuotedMessage, QuotedMessage$1 = _w === void 0 ? QuotedMessage : _w, _x = _p.ReactionsList, ReactionsList = _x === void 0 ? SimpleReactionsList : _x, _y = _p.ReactionSelector, ReactionSelector$1 = _y === void 0 ? ReactionSelector : _y;
|
|
8255
|
+
var _z = useTranslationContext('MessageTeam'), t = _z.t, userLanguage = _z.userLanguage;
|
|
8053
8256
|
var messageActions = getMessageActions();
|
|
8054
8257
|
var showActionsBox = showMessageActionsBox(messageActions);
|
|
8055
8258
|
var shouldShowReplies = messageActions.indexOf(MESSAGE_ACTIONS.reply) > -1 && !threadList;
|
|
@@ -8119,7 +8322,7 @@ var MemoizedMessageTeam = React__default['default'].memo(MessageTeamWithContext,
|
|
|
8119
8322
|
* Implements the look and feel for a team style collaboration environment.
|
|
8120
8323
|
*/
|
|
8121
8324
|
var MessageTeam = function (props) {
|
|
8122
|
-
var messageContext = useMessageContext();
|
|
8325
|
+
var messageContext = useMessageContext('MessageTeam');
|
|
8123
8326
|
var reactionSelectorRef = React.useRef(null);
|
|
8124
8327
|
var messageWrapperRef = React.useRef(null);
|
|
8125
8328
|
var message = props.message || messageContext.message;
|
|
@@ -8136,8 +8339,8 @@ var UnMemoizedCustomNotification = function (props) {
|
|
|
8136
8339
|
var CustomNotification = React__default['default'].memo(UnMemoizedCustomNotification);
|
|
8137
8340
|
|
|
8138
8341
|
var UnMemoizedConnectionStatus = function () {
|
|
8139
|
-
var client = useChatContext().client;
|
|
8140
|
-
var t = useTranslationContext().t;
|
|
8342
|
+
var client = useChatContext('ConnectionStatus').client;
|
|
8343
|
+
var t = useTranslationContext('ConnectionStatus').t;
|
|
8141
8344
|
var _a = React.useState(true), online = _a[0], setOnline = _a[1];
|
|
8142
8345
|
React.useEffect(function () {
|
|
8143
8346
|
var connectionChanged = function (_a) {
|
|
@@ -8357,9 +8560,9 @@ var getGroupStyles = function (message, previousMessage, nextMessage, noGroupByU
|
|
|
8357
8560
|
};
|
|
8358
8561
|
|
|
8359
8562
|
var useEnrichedMessages = function (args) {
|
|
8360
|
-
var channel = args.channel, disableDateSeparator = args.disableDateSeparator, headerPosition = args.headerPosition, hideDeletedMessages = args.hideDeletedMessages, hideNewMessageSeparator = args.hideNewMessageSeparator, messages = args.messages, noGroupByUser = args.noGroupByUser, threadList = args.threadList;
|
|
8361
|
-
var client = useChatContext().client;
|
|
8362
|
-
var HeaderComponent = useComponentContext().HeaderComponent;
|
|
8563
|
+
var channel = args.channel, disableDateSeparator = args.disableDateSeparator, groupStyles = args.groupStyles, headerPosition = args.headerPosition, hideDeletedMessages = args.hideDeletedMessages, hideNewMessageSeparator = args.hideNewMessageSeparator, messages = args.messages, noGroupByUser = args.noGroupByUser, threadList = args.threadList;
|
|
8564
|
+
var client = useChatContext('useEnrichedMessages').client;
|
|
8565
|
+
var HeaderComponent = useComponentContext('useEnrichedMessages').HeaderComponent;
|
|
8363
8566
|
var lastRead = React.useMemo(function () { var _a; return (_a = channel.lastRead) === null || _a === void 0 ? void 0 : _a.call(channel); }, [channel]);
|
|
8364
8567
|
var messagesWithDates = disableDateSeparator && !hideDeletedMessages && hideNewMessageSeparator
|
|
8365
8568
|
? messages
|
|
@@ -8375,9 +8578,10 @@ var useEnrichedMessages = function (args) {
|
|
|
8375
8578
|
if (HeaderComponent) {
|
|
8376
8579
|
messagesWithDates = insertIntro(messagesWithDates, headerPosition);
|
|
8377
8580
|
}
|
|
8581
|
+
var groupStylesFn = groupStyles || getGroupStyles;
|
|
8378
8582
|
var messageGroupStyles = React.useMemo(function () {
|
|
8379
8583
|
return messagesWithDates.reduce(function (acc, message, i) {
|
|
8380
|
-
var style =
|
|
8584
|
+
var style = groupStylesFn(message, messagesWithDates[i - 1], messagesWithDates[i + 1], noGroupByUser);
|
|
8381
8585
|
if (style)
|
|
8382
8586
|
acc[message.id] = style;
|
|
8383
8587
|
return acc;
|
|
@@ -8398,8 +8602,8 @@ var useLastReadData = function (props) {
|
|
|
8398
8602
|
|
|
8399
8603
|
var useMessageListElements = function (props) {
|
|
8400
8604
|
var enrichedMessages = props.enrichedMessages, internalMessageProps = props.internalMessageProps, messageGroupStyles = props.messageGroupStyles, onMessageLoadCaptured = props.onMessageLoadCaptured, read = props.read, returnAllReadData = props.returnAllReadData, threadList = props.threadList;
|
|
8401
|
-
var _a = useChatContext(), client = _a.client, customClasses = _a.customClasses;
|
|
8402
|
-
var _b = useComponentContext(), _c = _b.DateSeparator, DateSeparator$1 = _c === void 0 ? DateSeparator : _c, HeaderComponent = _b.HeaderComponent, _d = _b.MessageSystem, MessageSystem = _d === void 0 ? EventComponent : _d;
|
|
8605
|
+
var _a = useChatContext('useMessageListElements'), client = _a.client, customClasses = _a.customClasses;
|
|
8606
|
+
var _b = useComponentContext('useMessageListElements'), _c = _b.DateSeparator, DateSeparator$1 = _c === void 0 ? DateSeparator : _c, HeaderComponent = _b.HeaderComponent, _d = _b.MessageSystem, MessageSystem = _d === void 0 ? EventComponent : _d;
|
|
8403
8607
|
// get the readData, but only for messages submitted by the user themselves
|
|
8404
8608
|
var readData = useLastReadData({
|
|
8405
8609
|
messages: enrichedMessages,
|
|
@@ -8427,7 +8631,7 @@ var useMessageListElements = function (props) {
|
|
|
8427
8631
|
}
|
|
8428
8632
|
var groupStyles = messageGroupStyles[message.id] || '';
|
|
8429
8633
|
var messageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.message) || "str-chat__li str-chat__li--" + groupStyles;
|
|
8430
|
-
return (React__default['default'].createElement("li", { className: messageClass, key: message.id || message.created_at, onLoadCapture: onMessageLoadCaptured },
|
|
8634
|
+
return (React__default['default'].createElement("li", { className: messageClass, "data-testid": messageClass, key: message.id || message.created_at, onLoadCapture: onMessageLoadCaptured },
|
|
8431
8635
|
React__default['default'].createElement(Message, __assign({ groupStyles: [groupStyles], lastReceivedId: lastReceivedId, message: message, readBy: readData[message.id] || [], threadList: threadList }, internalMessageProps))));
|
|
8432
8636
|
});
|
|
8433
8637
|
}, [
|
|
@@ -8443,7 +8647,7 @@ var useMessageListElements = function (props) {
|
|
|
8443
8647
|
|
|
8444
8648
|
function useMessageListScrollManager(params) {
|
|
8445
8649
|
var onScrollBy = params.onScrollBy, scrollContainerMeasures = params.scrollContainerMeasures, scrolledUpThreshold = params.scrolledUpThreshold, scrollToBottom = params.scrollToBottom, showNewMessages = params.showNewMessages;
|
|
8446
|
-
var client = useChatContext().client;
|
|
8650
|
+
var client = useChatContext('useMessageListScrollManager').client;
|
|
8447
8651
|
var measures = React.useRef({
|
|
8448
8652
|
offsetHeight: 0,
|
|
8449
8653
|
scrollHeight: 0,
|
|
@@ -8586,14 +8790,25 @@ var UnMemoizedMessageNotification = function (props) {
|
|
|
8586
8790
|
};
|
|
8587
8791
|
var MessageNotification = React__default['default'].memo(UnMemoizedMessageNotification);
|
|
8588
8792
|
|
|
8793
|
+
var MessageListNotifications = function (props) {
|
|
8794
|
+
var hasNewMessages = props.hasNewMessages, MessageNotification = props.MessageNotification, notifications = props.notifications, scrollToBottom = props.scrollToBottom;
|
|
8795
|
+
var t = useTranslationContext('MessageListNotifications').t;
|
|
8796
|
+
return (React__default['default'].createElement("div", { className: 'str-chat__list-notifications' },
|
|
8797
|
+
notifications.map(function (notification) { return (React__default['default'].createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)); }),
|
|
8798
|
+
React__default['default'].createElement(ConnectionStatus, null),
|
|
8799
|
+
React__default['default'].createElement(MessageNotification, { onClick: scrollToBottom, showNotification: hasNewMessages }, t('New Messages!'))));
|
|
8800
|
+
};
|
|
8801
|
+
|
|
8589
8802
|
/**
|
|
8590
8803
|
* TypingIndicator lists users currently typing, it needs to be a child of Channel component
|
|
8591
8804
|
*/
|
|
8592
8805
|
var UnMemoizedTypingIndicator = function (props) {
|
|
8593
|
-
var
|
|
8594
|
-
var
|
|
8595
|
-
var client = useChatContext().client;
|
|
8596
|
-
var
|
|
8806
|
+
var PropAvatar = props.Avatar, _a = props.avatarSize, avatarSize = _a === void 0 ? 32 : _a, threadList = props.threadList;
|
|
8807
|
+
var _b = useChannelStateContext('TypingIndicator'), channelConfig = _b.channelConfig, thread = _b.thread;
|
|
8808
|
+
var client = useChatContext('TypingIndicator').client;
|
|
8809
|
+
var ContextAvatar = useComponentContext('TypingIndicator').Avatar;
|
|
8810
|
+
var _c = useTypingContext('TypingIndicator').typing, typing = _c === void 0 ? {} : _c;
|
|
8811
|
+
var Avatar$1 = PropAvatar || ContextAvatar || Avatar;
|
|
8597
8812
|
if ((channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.typing_events) === false) {
|
|
8598
8813
|
return null;
|
|
8599
8814
|
}
|
|
@@ -8625,23 +8840,17 @@ var UnMemoizedTypingIndicator = function (props) {
|
|
|
8625
8840
|
};
|
|
8626
8841
|
var TypingIndicator = React__default['default'].memo(UnMemoizedTypingIndicator);
|
|
8627
8842
|
|
|
8628
|
-
var DefaultMessageListNotifications = function (props) {
|
|
8629
|
-
var hasNewMessages = props.hasNewMessages, MessageNotification = props.MessageNotification, notifications = props.notifications, scrollToBottom = props.scrollToBottom;
|
|
8630
|
-
var t = useTranslationContext().t;
|
|
8631
|
-
return (React__default['default'].createElement("div", { className: 'str-chat__list-notifications' },
|
|
8632
|
-
notifications.map(function (notification) { return (React__default['default'].createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)); }),
|
|
8633
|
-
React__default['default'].createElement(ConnectionStatus, null),
|
|
8634
|
-
React__default['default'].createElement(MessageNotification, { onClick: scrollToBottom, showNotification: hasNewMessages }, t('New Messages!'))));
|
|
8635
|
-
};
|
|
8636
8843
|
var useInternalInfiniteScrollProps = function (props) {
|
|
8637
|
-
var _a = useComponentContext().LoadingIndicator, LoadingIndicator$1 = _a === void 0 ? LoadingIndicator : _a;
|
|
8844
|
+
var _a = useComponentContext('useInternalInfiniteScrollProps').LoadingIndicator, LoadingIndicator$1 = _a === void 0 ? LoadingIndicator : _a;
|
|
8638
8845
|
return __assign({ hasMore: props.hasMore, isLoading: props.loadingMore, loader: (React__default['default'].createElement(Center, { key: 'loadingindicator' },
|
|
8639
8846
|
React__default['default'].createElement(LoadingIndicator$1, { size: 20 }))), loadMore: useCallLoadMore(props.loadMore, props.messageLimit || 100) }, props.internalInfiniteScrollProps);
|
|
8640
8847
|
};
|
|
8641
8848
|
var MessageListWithContext = function (props) {
|
|
8642
|
-
var channel = props.channel, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? false : _a, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, _d = props.messageActions, messageActions = _d === void 0 ? Object.keys(MESSAGE_ACTIONS) : _d, _e = props.messages, messages = _e === void 0 ? [] : _e, notifications = props.notifications, _f = props.noGroupByUser, noGroupByUser = _f === void 0 ? false : _f, _g = props.pinPermissions, pinPermissions = _g === void 0 ? defaultPinPermissions : _g,
|
|
8643
|
-
|
|
8644
|
-
|
|
8849
|
+
var channel = props.channel, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? false : _a, groupStyles = props.groupStyles, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, _d = props.messageActions, messageActions = _d === void 0 ? Object.keys(MESSAGE_ACTIONS) : _d, _e = props.messages, messages = _e === void 0 ? [] : _e, notifications = props.notifications, _f = props.noGroupByUser, noGroupByUser = _f === void 0 ? false : _f, _g = props.pinPermissions, pinPermissions = _g === void 0 ? defaultPinPermissions : _g, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
8850
|
+
_h = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
8851
|
+
returnAllReadData = _h === void 0 ? false : _h, _j = props.threadList, threadList = _j === void 0 ? false : _j, _k = props.unsafeHTML, unsafeHTML = _k === void 0 ? false : _k, headerPosition = props.headerPosition, read = props.read;
|
|
8852
|
+
var customClasses = useChatContext('MessageList').customClasses;
|
|
8853
|
+
var _l = useComponentContext('MessageList'), _m = _l.EmptyStateIndicator, EmptyStateIndicator$1 = _m === void 0 ? EmptyStateIndicator : _m, _o = _l.MessageListNotifications, MessageListNotifications$1 = _o === void 0 ? MessageListNotifications : _o, _p = _l.MessageNotification, MessageNotification$1 = _p === void 0 ? MessageNotification : _p, _q = _l.TypingIndicator, TypingIndicator$1 = _q === void 0 ? TypingIndicator : _q;
|
|
8645
8854
|
var _r = useScrollLocationLogic({
|
|
8646
8855
|
messages: messages,
|
|
8647
8856
|
scrolledUpThreshold: props.scrolledUpThreshold,
|
|
@@ -8649,6 +8858,7 @@ var MessageListWithContext = function (props) {
|
|
|
8649
8858
|
var _s = useEnrichedMessages({
|
|
8650
8859
|
channel: channel,
|
|
8651
8860
|
disableDateSeparator: disableDateSeparator,
|
|
8861
|
+
groupStyles: groupStyles,
|
|
8652
8862
|
headerPosition: headerPosition,
|
|
8653
8863
|
hideDeletedMessages: hideDeletedMessages,
|
|
8654
8864
|
hideNewMessageSeparator: hideNewMessageSeparator,
|
|
@@ -8698,7 +8908,7 @@ var MessageListWithContext = function (props) {
|
|
|
8698
8908
|
React__default['default'].createElement("ul", { className: 'str-chat__ul' }, elements),
|
|
8699
8909
|
React__default['default'].createElement(TypingIndicator$1, { threadList: threadList }),
|
|
8700
8910
|
React__default['default'].createElement("div", { key: 'bottom' })))),
|
|
8701
|
-
React__default['default'].createElement(MessageListNotifications, { hasNewMessages: hasNewMessages, MessageNotification: MessageNotification$1, notifications: notifications, scrollToBottom: scrollToBottom })));
|
|
8911
|
+
React__default['default'].createElement(MessageListNotifications$1, { hasNewMessages: hasNewMessages, MessageNotification: MessageNotification$1, notifications: notifications, scrollToBottom: scrollToBottom })));
|
|
8702
8912
|
};
|
|
8703
8913
|
/**
|
|
8704
8914
|
* The MessageList component renders a list of Messages.
|
|
@@ -8709,8 +8919,8 @@ var MessageListWithContext = function (props) {
|
|
|
8709
8919
|
* - [TypingContext](https://getstream.io/chat/docs/sdk/react/contexts/typing_context/)
|
|
8710
8920
|
*/
|
|
8711
8921
|
var MessageList = function (props) {
|
|
8712
|
-
var loadMore = useChannelActionContext().loadMore;
|
|
8713
|
-
var _a = useChannelStateContext(); _a.members; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
8922
|
+
var loadMore = useChannelActionContext('MessageList').loadMore;
|
|
8923
|
+
var _a = useChannelStateContext('MessageList'); _a.members; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
8714
8924
|
_a.mutes; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
8715
8925
|
_a.watchers; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
8716
8926
|
var restChannelStateContext = __rest(_a, ["members", "mutes", "watchers"]);
|
|
@@ -8719,7 +8929,7 @@ var MessageList = function (props) {
|
|
|
8719
8929
|
|
|
8720
8930
|
var useGiphyPreview = function (separateGiphyPreview) {
|
|
8721
8931
|
var _a = React.useState(), giphyPreviewMessage = _a[0], setGiphyPreviewMessage = _a[1];
|
|
8722
|
-
var client = useChatContext().client;
|
|
8932
|
+
var client = useChatContext('useGiphyPreview').client;
|
|
8723
8933
|
React.useEffect(function () {
|
|
8724
8934
|
var handleEvent = function (event) {
|
|
8725
8935
|
var message = event.message, user = event.user;
|
|
@@ -8825,15 +9035,14 @@ function useShouldForceScrollToBottom(messages, currentUserId) {
|
|
|
8825
9035
|
|
|
8826
9036
|
var PREPEND_OFFSET = Math.pow(10, 7);
|
|
8827
9037
|
var VirtualizedMessageListWithContext = function (props) {
|
|
8828
|
-
var additionalVirtuosoProps = props.additionalVirtuosoProps, channel = props.channel, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? true : _a, hasMore = props.hasMore, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, loadingMore = props.loadingMore, loadMore = props.loadMore, propMessage = props.Message, _d = props.messageLimit, messageLimit = _d === void 0 ? 100 : _d, messages = props.messages, _e = props.overscan, overscan = _e === void 0 ? 0 : _e,
|
|
9038
|
+
var additionalVirtuosoProps = props.additionalVirtuosoProps, channel = props.channel, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? true : _a, hasMore = props.hasMore, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, loadingMore = props.loadingMore, loadMore = props.loadMore, propMessage = props.Message, _d = props.messageLimit, messageLimit = _d === void 0 ? 100 : _d, messages = props.messages, notifications = props.notifications, _e = props.overscan, overscan = _e === void 0 ? 0 : _e,
|
|
8829
9039
|
// TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
|
|
8830
9040
|
scrollSeekPlaceHolder = props.scrollSeekPlaceHolder, _f = props.scrollToLatestMessageOnFocus, scrollToLatestMessageOnFocus = _f === void 0 ? false : _f, _g = props.separateGiphyPreview, separateGiphyPreview = _g === void 0 ? false : _g, _h = props.shouldGroupByUser, shouldGroupByUser = _h === void 0 ? false : _h, _j = props.stickToBottomScrollBehavior, stickToBottomScrollBehavior = _j === void 0 ? 'smooth' : _j;
|
|
8831
|
-
var _k = useComponentContext(), _l = _k.DateSeparator, DateSeparator$1 = _l === void 0 ? DateSeparator : _l, _m = _k.EmptyStateIndicator, EmptyStateIndicator$1 = _m === void 0 ? EmptyStateIndicator : _m, _o = _k.GiphyPreviewMessage, GiphyPreviewMessage$1 = _o === void 0 ? GiphyPreviewMessage : _o, _p = _k.LoadingIndicator, LoadingIndicator$1 = _p === void 0 ? LoadingIndicator : _p, _q = _k.
|
|
8832
|
-
var
|
|
8833
|
-
var t = useTranslationContext().t;
|
|
9041
|
+
var _k = useComponentContext('VirtualizedMessageList'), _l = _k.DateSeparator, DateSeparator$1 = _l === void 0 ? DateSeparator : _l, _m = _k.EmptyStateIndicator, EmptyStateIndicator$1 = _m === void 0 ? EmptyStateIndicator : _m, _o = _k.GiphyPreviewMessage, GiphyPreviewMessage$1 = _o === void 0 ? GiphyPreviewMessage : _o, _p = _k.LoadingIndicator, LoadingIndicator$1 = _p === void 0 ? LoadingIndicator : _p, _q = _k.MessageListNotifications, MessageListNotifications$1 = _q === void 0 ? MessageListNotifications : _q, _r = _k.MessageNotification, MessageNotification$1 = _r === void 0 ? MessageNotification : _r, _s = _k.MessageSystem, MessageSystem = _s === void 0 ? EventComponent : _s, _t = _k.TypingIndicator, TypingIndicator = _t === void 0 ? null : _t, _u = _k.VirtualMessage, contextMessage = _u === void 0 ? MessageSimple : _u;
|
|
9042
|
+
var _v = useChatContext('VirtualizedMessageList'), client = _v.client, customClasses = _v.customClasses;
|
|
8834
9043
|
var lastRead = React.useMemo(function () { var _a; return (_a = channel.lastRead) === null || _a === void 0 ? void 0 : _a.call(channel); }, [channel]);
|
|
8835
9044
|
var MessageUIComponent = propMessage || contextMessage;
|
|
8836
|
-
var
|
|
9045
|
+
var _w = useGiphyPreview(separateGiphyPreview), giphyPreviewMessage = _w.giphyPreviewMessage, setGiphyPreviewMessage = _w.setGiphyPreviewMessage;
|
|
8837
9046
|
var processedMessages = React.useMemo(function () {
|
|
8838
9047
|
if (typeof messages === 'undefined') {
|
|
8839
9048
|
return [];
|
|
@@ -8864,7 +9073,7 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
8864
9073
|
client.userID,
|
|
8865
9074
|
]);
|
|
8866
9075
|
var virtuoso = React.useRef(null);
|
|
8867
|
-
var
|
|
9076
|
+
var _x = useNewMessageNotification(processedMessages, client.userID), atBottom = _x.atBottom, newMessagesNotification = _x.newMessagesNotification, setNewMessagesNotification = _x.setNewMessagesNotification;
|
|
8868
9077
|
var scrollToBottom = React.useCallback(function () {
|
|
8869
9078
|
if (virtuoso.current) {
|
|
8870
9079
|
virtuoso.current.scrollToIndex(processedMessages.length - 1);
|
|
@@ -8953,9 +9162,8 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
8953
9162
|
var virtualizedMessageListClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualizedMessageList) || 'str-chat__virtual-list';
|
|
8954
9163
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
8955
9164
|
React__default['default'].createElement("div", { className: virtualizedMessageListClass },
|
|
8956
|
-
React__default['default'].createElement(reactVirtuoso.Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, components: virtuosoComponents, firstItemIndex: PREPEND_OFFSET - numItemsPrepended, followOutput: followOutput, initialTopMostItemIndex: processedMessages.length ? processedMessages.length - 1 : 0, itemContent: function (i) { return messageRenderer(processedMessages, i); }, overscan: overscan, ref: virtuoso, startReached: startReached, style: { overflowX: 'hidden' }, totalCount: processedMessages.length }, additionalVirtuosoProps, (scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {}), (defaultItemHeight ? { defaultItemHeight: defaultItemHeight } : {}))),
|
|
8957
|
-
|
|
8958
|
-
React__default['default'].createElement(MessageNotification$1, { onClick: scrollToBottom, showNotification: newMessagesNotification }, t('New Messages!')))),
|
|
9165
|
+
React__default['default'].createElement(reactVirtuoso.Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, components: virtuosoComponents, firstItemIndex: PREPEND_OFFSET - numItemsPrepended, followOutput: followOutput, initialTopMostItemIndex: processedMessages.length ? processedMessages.length - 1 : 0, itemContent: function (i) { return messageRenderer(processedMessages, i); }, overscan: overscan, ref: virtuoso, startReached: startReached, style: { overflowX: 'hidden' }, totalCount: processedMessages.length }, additionalVirtuosoProps, (scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {}), (defaultItemHeight ? { defaultItemHeight: defaultItemHeight } : {})))),
|
|
9166
|
+
React__default['default'].createElement(MessageListNotifications$1, { hasNewMessages: newMessagesNotification, MessageNotification: MessageNotification$1, notifications: notifications, scrollToBottom: scrollToBottom }),
|
|
8959
9167
|
giphyPreviewMessage && React__default['default'].createElement(GiphyPreviewMessage$1, { message: giphyPreviewMessage })));
|
|
8960
9168
|
};
|
|
8961
9169
|
/**
|
|
@@ -8965,26 +9173,25 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
8965
9173
|
* **Note**: It works well when there are thousands of messages in a channel, it has a shortcoming though - the message UI should have a fixed height.
|
|
8966
9174
|
*/
|
|
8967
9175
|
function VirtualizedMessageList(props) {
|
|
8968
|
-
var loadMore = useChannelActionContext().loadMore;
|
|
8969
|
-
var _a = useChannelStateContext(), channel = _a.channel, hasMore = _a.hasMore, loadingMore = _a.loadingMore, contextMessages = _a.messages;
|
|
9176
|
+
var loadMore = useChannelActionContext('VirtualizedMessageList').loadMore;
|
|
9177
|
+
var _a = useChannelStateContext('VirtualizedMessageList'), channel = _a.channel, hasMore = _a.hasMore, loadingMore = _a.loadingMore, contextMessages = _a.messages, notifications = _a.notifications;
|
|
8970
9178
|
var messages = props.messages || contextMessages;
|
|
8971
|
-
return (React__default['default'].createElement(VirtualizedMessageListWithContext, __assign({ channel: channel, hasMore: !!hasMore, loadingMore: !!loadingMore, loadMore: loadMore, messages: messages }, props)));
|
|
9179
|
+
return (React__default['default'].createElement(VirtualizedMessageListWithContext, __assign({ channel: channel, hasMore: !!hasMore, loadingMore: !!loadingMore, loadMore: loadMore, messages: messages, notifications: notifications }, props)));
|
|
8972
9180
|
}
|
|
8973
9181
|
|
|
8974
9182
|
/**
|
|
8975
9183
|
* The Thread component renders a parent Message with a list of replies
|
|
8976
9184
|
*/
|
|
8977
9185
|
var Thread = function (props) {
|
|
8978
|
-
var _a,
|
|
8979
|
-
|
|
8980
|
-
if (!thread || ((_b = (_a = channel === null || channel === void 0 ? void 0 : channel.getConfig) === null || _a === void 0 ? void 0 : _a.call(channel)) === null || _b === void 0 ? void 0 : _b.replies) === false)
|
|
9186
|
+
var _a = useChannelStateContext('Thread'), channel = _a.channel, channelConfig = _a.channelConfig, thread = _a.thread;
|
|
9187
|
+
if (!thread || (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.replies) === false)
|
|
8981
9188
|
return null;
|
|
8982
9189
|
// The wrapper ensures a key variable is set and the component recreates on thread switch
|
|
8983
9190
|
return React__default['default'].createElement(ThreadInner, __assign({}, props, { key: "thread-" + thread.id + "-" + (channel === null || channel === void 0 ? void 0 : channel.cid) }));
|
|
8984
9191
|
};
|
|
8985
9192
|
var DefaultThreadHeader = function (props) {
|
|
8986
9193
|
var closeThread = props.closeThread, thread = props.thread;
|
|
8987
|
-
var t = useTranslationContext().t;
|
|
9194
|
+
var t = useTranslationContext('Thread').t;
|
|
8988
9195
|
var getReplyCount = function () {
|
|
8989
9196
|
if (!thread.reply_count)
|
|
8990
9197
|
return '';
|
|
@@ -9003,15 +9210,15 @@ var DefaultThreadHeader = function (props) {
|
|
|
9003
9210
|
React__default['default'].createElement("path", { d: 'M9.916 1.027L8.973.084 5 4.058 1.027.084l-.943.943L4.058 5 .084 8.973l.943.943L5 5.942l3.973 3.974.943-.943L5.942 5z', fillRule: 'evenodd' })))));
|
|
9004
9211
|
};
|
|
9005
9212
|
var DefaultThreadStart = function () {
|
|
9006
|
-
var t = useTranslationContext().t;
|
|
9213
|
+
var t = useTranslationContext('Thread').t;
|
|
9007
9214
|
return React__default['default'].createElement("div", { className: 'str-chat__thread-start' }, t('Start of a new thread'));
|
|
9008
9215
|
};
|
|
9009
9216
|
var ThreadInner = function (props) {
|
|
9010
9217
|
var additionalMessageInputProps = props.additionalMessageInputProps, additionalMessageListProps = props.additionalMessageListProps, additionalParentMessageProps = props.additionalParentMessageProps, additionalVirtualizedMessageListProps = props.additionalVirtualizedMessageListProps, _a = props.autoFocus, autoFocus = _a === void 0 ? true : _a, _b = props.fullWidth, fullWidth = _b === void 0 ? false : _b, PropInput = props.Input, PropMessage = props.Message, virtualized = props.virtualized;
|
|
9011
|
-
var _c = useChannelStateContext(), thread = _c.thread, threadHasMore = _c.threadHasMore, threadLoadingMore = _c.threadLoadingMore, threadMessages = _c.threadMessages;
|
|
9012
|
-
var _d = useChannelActionContext(), closeThread = _d.closeThread, loadMoreThread = _d.loadMoreThread;
|
|
9013
|
-
var customClasses = useChatContext().customClasses;
|
|
9014
|
-
var _e = useComponentContext(), ContextInput = _e.ThreadInput, ContextMessage = _e.Message, _f = _e.ThreadHeader, ThreadHeader = _f === void 0 ? DefaultThreadHeader : _f, _g = _e.ThreadStart, ThreadStart = _g === void 0 ? DefaultThreadStart : _g, _h = _e.VirtualMessage, VirtualMessage = _h === void 0 ? FixedHeightMessage : _h;
|
|
9218
|
+
var _c = useChannelStateContext('Thread'), thread = _c.thread, threadHasMore = _c.threadHasMore, threadLoadingMore = _c.threadLoadingMore, threadMessages = _c.threadMessages;
|
|
9219
|
+
var _d = useChannelActionContext('Thread'), closeThread = _d.closeThread, loadMoreThread = _d.loadMoreThread;
|
|
9220
|
+
var customClasses = useChatContext('Thread').customClasses;
|
|
9221
|
+
var _e = useComponentContext('Thread'), ContextInput = _e.ThreadInput, ContextMessage = _e.Message, _f = _e.ThreadHeader, ThreadHeader = _f === void 0 ? DefaultThreadHeader : _f, _g = _e.ThreadStart, ThreadStart = _g === void 0 ? DefaultThreadStart : _g, _h = _e.VirtualMessage, VirtualMessage = _h === void 0 ? FixedHeightMessage : _h;
|
|
9015
9222
|
var messageList = React.useRef(null);
|
|
9016
9223
|
var ThreadInput = PropInput || (additionalMessageInputProps === null || additionalMessageInputProps === void 0 ? void 0 : additionalMessageInputProps.Input) || ContextInput || MessageInputSmall;
|
|
9017
9224
|
var ThreadMessage = PropMessage || (additionalMessageListProps === null || additionalMessageListProps === void 0 ? void 0 : additionalMessageListProps.Message);
|
|
@@ -9045,7 +9252,7 @@ var ThreadInner = function (props) {
|
|
|
9045
9252
|
|
|
9046
9253
|
var UnMemoizedWindow = function (props) {
|
|
9047
9254
|
var children = props.children, _a = props.hideOnThread, hideOnThread = _a === void 0 ? false : _a;
|
|
9048
|
-
var thread = useChannelStateContext().thread;
|
|
9255
|
+
var thread = useChannelStateContext('Window').thread;
|
|
9049
9256
|
// If thread is active and window should hide on thread. Return null
|
|
9050
9257
|
if (thread && hideOnThread)
|
|
9051
9258
|
return null;
|
|
@@ -9177,6 +9384,7 @@ exports.deTranslations = deTranslations;
|
|
|
9177
9384
|
exports.defaultPinPermissions = defaultPinPermissions;
|
|
9178
9385
|
exports.defaultScrollToItem = defaultScrollToItem;
|
|
9179
9386
|
exports.defaultTimestampFormat = defaultTimestampFormat;
|
|
9387
|
+
exports.emojiMarkdownPlugin = emojiMarkdownPlugin;
|
|
9180
9388
|
exports.enTranslations = enTranslations;
|
|
9181
9389
|
exports.esTranslations = esTranslations;
|
|
9182
9390
|
exports.escapeRegExp = escapeRegExp;
|
|
@@ -9185,14 +9393,18 @@ exports.generateRandomId = generateRandomId;
|
|
|
9185
9393
|
exports.getChannel = getChannel;
|
|
9186
9394
|
exports.getDisplayImage = getDisplayImage;
|
|
9187
9395
|
exports.getDisplayTitle = getDisplayTitle;
|
|
9396
|
+
exports.getGroupStyles = getGroupStyles;
|
|
9188
9397
|
exports.getImages = getImages;
|
|
9398
|
+
exports.getLastReceived = getLastReceived;
|
|
9189
9399
|
exports.getLatestMessagePreview = getLatestMessagePreview;
|
|
9190
9400
|
exports.getMessageActions = getMessageActions;
|
|
9191
9401
|
exports.getNonImageAttachments = getNonImageAttachments;
|
|
9192
9402
|
exports.getReadByTooltipText = getReadByTooltipText;
|
|
9403
|
+
exports.getReadStates = getReadStates;
|
|
9193
9404
|
exports.getWholeChar = getWholeChar;
|
|
9194
9405
|
exports.handleActionWarning = handleActionWarning;
|
|
9195
9406
|
exports.hiTranslations = hiTranslations;
|
|
9407
|
+
exports.insertIntro = insertIntro;
|
|
9196
9408
|
exports.isAudioAttachment = isAudioAttachment;
|
|
9197
9409
|
exports.isChannel = isChannel;
|
|
9198
9410
|
exports.isDate = isDate;
|
|
@@ -9209,6 +9421,10 @@ exports.itTranslations = itTranslations;
|
|
|
9209
9421
|
exports.jaTranslations = jaTranslations;
|
|
9210
9422
|
exports.koTranslations = koTranslations;
|
|
9211
9423
|
exports.listener = Listeners;
|
|
9424
|
+
exports.markDownRenderers = markDownRenderers;
|
|
9425
|
+
exports.matchMarkdownLinks = matchMarkdownLinks;
|
|
9426
|
+
exports.mentionsMarkdownPlugin = mentionsMarkdownPlugin;
|
|
9427
|
+
exports.messageCodeBlocks = messageCodeBlocks;
|
|
9212
9428
|
exports.messageHasAttachments = messageHasAttachments;
|
|
9213
9429
|
exports.messageHasReactions = messageHasReactions;
|
|
9214
9430
|
exports.missingUseFlagHandlerParameterWarning = missingUseFlagHandlerParameterWarning;
|
|
@@ -9217,6 +9433,7 @@ exports.moveChannelUp = moveChannelUp;
|
|
|
9217
9433
|
exports.nlTranslations = nlTranslations;
|
|
9218
9434
|
exports.noParsingFunctionWarning = noParsingFunctionWarning;
|
|
9219
9435
|
exports.notValidDateWarning = notValidDateWarning;
|
|
9436
|
+
exports.processMessages = processMessages;
|
|
9220
9437
|
exports.ptTranslations = ptTranslations;
|
|
9221
9438
|
exports.reactionHandlerWarning = reactionHandlerWarning;
|
|
9222
9439
|
exports.renderAttachmentActions = renderAttachmentActions;
|