stream-chat-react 6.8.0 → 6.11.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/CHANGELOG.md +1633 -0
- package/dist/browser.full-bundle.js +11245 -10648
- 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/Avatar/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar/Avatar.js +3 -1
- package/dist/components/Channel/Channel.d.ts +2 -0
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +82 -102
- package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts +7 -0
- package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -0
- package/dist/components/Channel/hooks/useCreateChannelStateContext.js +92 -0
- package/dist/components/Channel/hooks/useCreateTypingContext.d.ts +4 -0
- package/dist/components/Channel/hooks/useCreateTypingContext.d.ts.map +1 -0
- package/dist/components/Channel/hooks/useCreateTypingContext.js +9 -0
- 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 +3 -3
- 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 +1 -1
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.js +3 -5
- 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 +0 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.js +7 -15
- 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 +14 -12
- package/dist/components/Chat/hooks/useChat.js +1 -1
- package/dist/components/Chat/hooks/useCreateChatContext.d.ts +4 -0
- package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -0
- package/dist/components/Chat/hooks/useCreateChatContext.js +21 -0
- 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 +3 -3
- 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.js +3 -3
- 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 +5 -6
- 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 +1 -0
- 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/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 +1 -1
- package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInput.js +3 -2
- 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 +4 -0
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -0
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +91 -0
- package/dist/components/MessageInput/hooks/useEmojiIndex.js +1 -1
- package/dist/components/MessageInput/hooks/useFileUploads.js +3 -3
- package/dist/components/MessageInput/hooks/useImageUploads.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useImageUploads.js +3 -3
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputState.js +2 -3
- 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 +1 -0
- package/dist/components/MessageInput/hooks/utils.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/utils.js +7 -4
- package/dist/components/MessageInput/icons.js +5 -5
- package/dist/components/MessageList/ConnectionStatus.js +2 -2
- package/dist/components/MessageList/MessageList.d.ts +1 -9
- package/dist/components/MessageList/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.js +10 -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 +4 -2
- 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.map +1 -1
- package/dist/components/MessageList/hooks/useEnrichedMessages.js +2 -2
- 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 +2 -2
- package/dist/components/MessageList/hooks/useMessageListScrollManager.js +1 -1
- 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.map +1 -1
- package/dist/components/TypingIndicator/TypingIndicator.js +3 -3
- 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 +4 -3
- package/dist/context/ChannelStateContext.d.ts.map +1 -1
- package/dist/context/ChannelStateContext.js +8 -3
- package/dist/context/ChatContext.d.ts +4 -3
- package/dist/context/ChatContext.d.ts.map +1 -1
- package/dist/context/ChatContext.js +9 -2
- package/dist/context/ComponentContext.d.ts +3 -3
- 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 +1 -4
- 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.js +2 -2
- package/dist/i18n/de.json +4 -4
- package/dist/index.cjs.js +661 -426
- package/dist/index.cjs.js.map +1 -1
- package/dist/scss/Avatar.scss +19 -2
- package/dist/scss/Message.scss +2 -1
- package/dist/scss/MessageList.scss +10 -2
- package/dist/scss/MessageNotification.scss +36 -0
- package/dist/scss/_base.scss +4 -3
- package/dist/scss/_variables.scss +1 -1
- package/dist/utils.d.ts +9 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +27 -20
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -5
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
|
|
@@ -778,46 +790,54 @@ function generateRandomId() {
|
|
|
778
790
|
// prettier-ignore
|
|
779
791
|
return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
|
|
780
792
|
}
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
return
|
|
797
|
-
}
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
var
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
793
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt#getting_whole_characters
|
|
794
|
+
var getWholeChar = function (str, i) {
|
|
795
|
+
var code = str.charCodeAt(i);
|
|
796
|
+
if (Number.isNaN(code))
|
|
797
|
+
return '';
|
|
798
|
+
if (code < 0xd800 || code > 0xdfff)
|
|
799
|
+
return str.charAt(i);
|
|
800
|
+
if (0xd800 <= code && code <= 0xdbff) {
|
|
801
|
+
if (str.length <= i + 1) {
|
|
802
|
+
throw 'High surrogate without following low surrogate';
|
|
803
|
+
}
|
|
804
|
+
var next = str.charCodeAt(i + 1);
|
|
805
|
+
if (0xdc00 > next || next > 0xdfff) {
|
|
806
|
+
throw 'High surrogate without following low surrogate';
|
|
807
|
+
}
|
|
808
|
+
return str.charAt(i) + str.charAt(i + 1);
|
|
809
|
+
}
|
|
810
|
+
if (i === 0) {
|
|
811
|
+
throw 'Low surrogate without preceding high surrogate';
|
|
812
|
+
}
|
|
813
|
+
var prev = str.charCodeAt(i - 1);
|
|
814
|
+
if (0xd800 > prev || prev > 0xdbff) {
|
|
815
|
+
throw 'Low surrogate without preceding high surrogate';
|
|
816
|
+
}
|
|
817
|
+
return '';
|
|
818
|
+
};
|
|
819
|
+
|
|
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 === '/') {
|
|
805
825
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
806
826
|
t('Commands matching'),
|
|
807
827
|
" ",
|
|
808
|
-
React__default['default'].createElement("strong", null, value.
|
|
828
|
+
React__default['default'].createElement("strong", null, value.slice(triggerIndex + 1))));
|
|
809
829
|
}
|
|
810
|
-
if (
|
|
830
|
+
if (currentTrigger === ':') {
|
|
811
831
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
812
832
|
t('Emoji matching'),
|
|
813
833
|
" ",
|
|
814
|
-
React__default['default'].createElement("strong", null, value.
|
|
834
|
+
React__default['default'].createElement("strong", null, value.slice(triggerIndex + 1))));
|
|
815
835
|
}
|
|
816
|
-
if (
|
|
836
|
+
if (currentTrigger === '@') {
|
|
817
837
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
818
838
|
t('People matching'),
|
|
819
839
|
" ",
|
|
820
|
-
React__default['default'].createElement("strong", null, value.
|
|
840
|
+
React__default['default'].createElement("strong", null, value.slice(triggerIndex + 1))));
|
|
821
841
|
}
|
|
822
842
|
return null;
|
|
823
843
|
};
|
|
@@ -1045,6 +1065,7 @@ var List = function List(props) {
|
|
|
1045
1065
|
}, /*#__PURE__*/React__default['default'].createElement("li", {
|
|
1046
1066
|
className: "rta__list-header"
|
|
1047
1067
|
}, /*#__PURE__*/React__default['default'].createElement(SuggestionHeader, {
|
|
1068
|
+
currentTrigger: currentTrigger,
|
|
1048
1069
|
value: propValue
|
|
1049
1070
|
})), values.map(function (item, i) {
|
|
1050
1071
|
return /*#__PURE__*/React__default['default'].createElement(SuggestionItem, {
|
|
@@ -1058,7 +1079,8 @@ var List = function List(props) {
|
|
|
1058
1079
|
itemsRef[i] = _ref;
|
|
1059
1080
|
},
|
|
1060
1081
|
selected: isSelected(item),
|
|
1061
|
-
style: itemStyle
|
|
1082
|
+
style: itemStyle,
|
|
1083
|
+
value: propValue
|
|
1062
1084
|
});
|
|
1063
1085
|
}));
|
|
1064
1086
|
};
|
|
@@ -1901,7 +1923,8 @@ var Avatar = function (props) {
|
|
|
1901
1923
|
setError(false);
|
|
1902
1924
|
setLoaded(false);
|
|
1903
1925
|
}, [image]);
|
|
1904
|
-
var
|
|
1926
|
+
var nameStr = (name === null || name === void 0 ? void 0 : name.toString()) || '';
|
|
1927
|
+
var initials = getWholeChar(nameStr, 0);
|
|
1905
1928
|
return (React__default['default'].createElement("div", { className: "str-chat__avatar str-chat__avatar--" + shape, "data-testid": 'avatar', onClick: onClick, onMouseOver: onMouseOver, style: {
|
|
1906
1929
|
flexBasis: size + "px",
|
|
1907
1930
|
fontSize: size / 2 + "px",
|
|
@@ -2018,12 +2041,119 @@ var defaultMinimalEmojis = [
|
|
|
2018
2041
|
// use this only for small lists like in ReactionSelector
|
|
2019
2042
|
var getStrippedEmojiData = function (data) { return (__assign(__assign({}, data), { emojis: {} })); };
|
|
2020
2043
|
|
|
2021
|
-
var
|
|
2044
|
+
var useCreateChannelStateContext = function (value) {
|
|
2045
|
+
var _a;
|
|
2046
|
+
var acceptedFiles = value.acceptedFiles, channel = value.channel, _b = value.channelCapabilitiesArray, channelCapabilitiesArray = _b === void 0 ? [] : _b, channelConfig = value.channelConfig, 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;
|
|
2047
|
+
var channelId = channel.cid;
|
|
2048
|
+
var lastRead = channel.initialized && ((_a = channel.lastRead()) === null || _a === void 0 ? void 0 : _a.getTime());
|
|
2049
|
+
var membersLength = Object.keys(members || []).length;
|
|
2050
|
+
var notificationsLength = notifications.length;
|
|
2051
|
+
var readUsers = Object.values(read);
|
|
2052
|
+
var readUsersLength = readUsers.length;
|
|
2053
|
+
var readUsersLastReads = readUsers.map(function (_a) {
|
|
2054
|
+
var last_read = _a.last_read;
|
|
2055
|
+
return last_read.toISOString();
|
|
2056
|
+
}).join();
|
|
2057
|
+
var threadMessagesLength = threadMessages === null || threadMessages === void 0 ? void 0 : threadMessages.length;
|
|
2058
|
+
var channelCapabilities = {};
|
|
2059
|
+
channelCapabilitiesArray.forEach(function (capability) {
|
|
2060
|
+
channelCapabilities[capability] = true;
|
|
2061
|
+
});
|
|
2062
|
+
var memoizedMessageData = skipMessageDataMemoization
|
|
2063
|
+
? messages
|
|
2064
|
+
: messages
|
|
2065
|
+
.map(function (_a) {
|
|
2066
|
+
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;
|
|
2067
|
+
return "" + deleted_at + (latest_reactions ? latest_reactions.map(function (_a) {
|
|
2068
|
+
var type = _a.type;
|
|
2069
|
+
return type;
|
|
2070
|
+
}).join() : '') + pinned + reply_count + status + (updated_at && (isDayOrMoment(updated_at) || isDate(updated_at))
|
|
2071
|
+
? updated_at.toISOString()
|
|
2072
|
+
: updated_at || '');
|
|
2073
|
+
})
|
|
2074
|
+
.join();
|
|
2075
|
+
var memoizedThreadMessageData = threadMessages
|
|
2076
|
+
.map(function (_a) {
|
|
2077
|
+
var deleted_at = _a.deleted_at, latest_reactions = _a.latest_reactions, pinned = _a.pinned, status = _a.status, updated_at = _a.updated_at;
|
|
2078
|
+
return "" + deleted_at + (latest_reactions ? latest_reactions.map(function (_a) {
|
|
2079
|
+
var type = _a.type;
|
|
2080
|
+
return type;
|
|
2081
|
+
}).join() : '') + pinned + status + (updated_at && (isDayOrMoment(updated_at) || isDate(updated_at))
|
|
2082
|
+
? updated_at.toISOString()
|
|
2083
|
+
: updated_at || '');
|
|
2084
|
+
})
|
|
2085
|
+
.join();
|
|
2086
|
+
var channelStateContext = React.useMemo(function () { return ({
|
|
2087
|
+
acceptedFiles: acceptedFiles,
|
|
2088
|
+
channel: channel,
|
|
2089
|
+
channelCapabilities: channelCapabilities,
|
|
2090
|
+
channelConfig: channelConfig,
|
|
2091
|
+
error: error,
|
|
2092
|
+
hasMore: hasMore,
|
|
2093
|
+
loading: loading,
|
|
2094
|
+
loadingMore: loadingMore,
|
|
2095
|
+
maxNumberOfFiles: maxNumberOfFiles,
|
|
2096
|
+
members: members,
|
|
2097
|
+
messages: messages,
|
|
2098
|
+
multipleUploads: multipleUploads,
|
|
2099
|
+
mutes: mutes,
|
|
2100
|
+
notifications: notifications,
|
|
2101
|
+
pinnedMessages: pinnedMessages,
|
|
2102
|
+
quotedMessage: quotedMessage,
|
|
2103
|
+
read: read,
|
|
2104
|
+
thread: thread,
|
|
2105
|
+
threadHasMore: threadHasMore,
|
|
2106
|
+
threadLoadingMore: threadLoadingMore,
|
|
2107
|
+
threadMessages: threadMessages,
|
|
2108
|
+
watcher_count: watcher_count,
|
|
2109
|
+
watcherCount: watcherCount,
|
|
2110
|
+
watchers: watchers,
|
|
2111
|
+
}); }, [
|
|
2112
|
+
channelId,
|
|
2113
|
+
error,
|
|
2114
|
+
hasMore,
|
|
2115
|
+
lastRead,
|
|
2116
|
+
loading,
|
|
2117
|
+
loadingMore,
|
|
2118
|
+
membersLength,
|
|
2119
|
+
memoizedMessageData,
|
|
2120
|
+
memoizedThreadMessageData,
|
|
2121
|
+
notificationsLength,
|
|
2122
|
+
quotedMessage,
|
|
2123
|
+
readUsersLength,
|
|
2124
|
+
readUsersLastReads,
|
|
2125
|
+
skipMessageDataMemoization,
|
|
2126
|
+
thread,
|
|
2127
|
+
threadHasMore,
|
|
2128
|
+
threadLoadingMore,
|
|
2129
|
+
threadMessagesLength,
|
|
2130
|
+
watcherCount,
|
|
2131
|
+
]);
|
|
2132
|
+
return channelStateContext;
|
|
2133
|
+
};
|
|
2134
|
+
|
|
2135
|
+
var useCreateTypingContext = function (value) {
|
|
2136
|
+
var typing = value.typing;
|
|
2137
|
+
var typingValue = Object.keys(typing || {}).join();
|
|
2138
|
+
var typingContext = React.useMemo(function () { return ({
|
|
2139
|
+
typing: typing,
|
|
2140
|
+
}); }, [typingValue]);
|
|
2141
|
+
return typingContext;
|
|
2142
|
+
};
|
|
2143
|
+
|
|
2144
|
+
var ChatContext = React__default['default'].createContext(undefined);
|
|
2022
2145
|
var ChatProvider = function (_a) {
|
|
2023
2146
|
var children = _a.children, value = _a.value;
|
|
2024
2147
|
return (React__default['default'].createElement(ChatContext.Provider, { value: value }, children));
|
|
2025
2148
|
};
|
|
2026
|
-
var useChatContext = function () {
|
|
2149
|
+
var useChatContext = function (componentName) {
|
|
2150
|
+
var contextValue = React.useContext(ChatContext);
|
|
2151
|
+
if (!contextValue) {
|
|
2152
|
+
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.");
|
|
2153
|
+
return {};
|
|
2154
|
+
}
|
|
2155
|
+
return contextValue;
|
|
2156
|
+
};
|
|
2027
2157
|
/**
|
|
2028
2158
|
* Typescript currently does not support partial inference so if ChatContext
|
|
2029
2159
|
* typing is desired while using the HOC withChatContext the Props for the
|
|
@@ -2039,7 +2169,7 @@ var withChatContext = function (Component) {
|
|
|
2039
2169
|
};
|
|
2040
2170
|
|
|
2041
2171
|
var useEditMessageHandler = function (doUpdateMessageRequest) {
|
|
2042
|
-
var _a = useChatContext(), channel = _a.channel, client = _a.client;
|
|
2172
|
+
var _a = useChatContext('useEditMessageHandler'), channel = _a.channel, client = _a.client;
|
|
2043
2173
|
return function (updatedMessage) {
|
|
2044
2174
|
if (doUpdateMessageRequest && channel) {
|
|
2045
2175
|
return Promise.resolve(doUpdateMessageRequest(channel.cid, updatedMessage));
|
|
@@ -2100,7 +2230,7 @@ var LoadingChannels = React__default['default'].memo(UnMemoizedLoadingChannels);
|
|
|
2100
2230
|
*/
|
|
2101
2231
|
var UnMemoizedLoadingErrorIndicator = function (_a) {
|
|
2102
2232
|
var error = _a.error;
|
|
2103
|
-
var t = useTranslationContext().t;
|
|
2233
|
+
var t = useTranslationContext('LoadingErrorIndicator').t;
|
|
2104
2234
|
if (!error)
|
|
2105
2235
|
return null;
|
|
2106
2236
|
return React__default['default'].createElement("div", null, t('Error: {{ errorMessage }}', { errorMessage: error.message }));
|
|
@@ -2124,13 +2254,18 @@ var LoadingIndicator = React__default['default'].memo(UnMemoizedLoadingIndicator
|
|
|
2124
2254
|
return prevProps.color === nextProps.color && prevProps.size === nextProps.size;
|
|
2125
2255
|
});
|
|
2126
2256
|
|
|
2127
|
-
var ChannelStateContext = React__default['default'].createContext(
|
|
2257
|
+
var ChannelStateContext = React__default['default'].createContext(undefined);
|
|
2128
2258
|
var ChannelStateProvider = function (_a) {
|
|
2129
2259
|
var children = _a.children, value = _a.value;
|
|
2130
2260
|
return (React__default['default'].createElement(ChannelStateContext.Provider, { value: value }, children));
|
|
2131
2261
|
};
|
|
2132
|
-
var useChannelStateContext = function () {
|
|
2133
|
-
|
|
2262
|
+
var useChannelStateContext = function (componentName) {
|
|
2263
|
+
var contextValue = React.useContext(ChannelStateContext);
|
|
2264
|
+
if (!contextValue) {
|
|
2265
|
+
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.");
|
|
2266
|
+
return {};
|
|
2267
|
+
}
|
|
2268
|
+
return contextValue;
|
|
2134
2269
|
};
|
|
2135
2270
|
/**
|
|
2136
2271
|
* Typescript currently does not support partial inference, so if ChannelStateContext
|
|
@@ -2150,21 +2285,23 @@ var withChannelStateContext = function (Component) {
|
|
|
2150
2285
|
|
|
2151
2286
|
var useUserRole = function (message, onlySenderCanEdit, disableQuotedMessages) {
|
|
2152
2287
|
var _a, _b, _c;
|
|
2153
|
-
var _d = useChannelStateContext(), channel = _d.channel, channelConfig = _d.channelConfig;
|
|
2154
|
-
var client = useChatContext().client;
|
|
2288
|
+
var _d = useChannelStateContext('useUserRole'), channel = _d.channel, _e = _d.channelCapabilities, channelCapabilities = _e === void 0 ? {} : _e, channelConfig = _d.channelConfig;
|
|
2289
|
+
var client = useChatContext('useUserRole').client;
|
|
2155
2290
|
var isAdmin = ((_a = client.user) === null || _a === void 0 ? void 0 : _a.role) === 'admin' || channel.state.membership.role === 'admin';
|
|
2156
2291
|
var isMyMessage = client.userID === ((_b = message.user) === null || _b === void 0 ? void 0 : _b.id);
|
|
2157
2292
|
var isOwner = channel.state.membership.role === 'owner';
|
|
2158
2293
|
var isModerator = ((_c = client.user) === null || _c === void 0 ? void 0 : _c.role) === 'channel_moderator' ||
|
|
2159
2294
|
channel.state.membership.role === 'channel_moderator' ||
|
|
2160
2295
|
channel.state.membership.role === 'moderator';
|
|
2161
|
-
var canEdit =
|
|
2162
|
-
|
|
2296
|
+
var canEdit = (!onlySenderCanEdit && channelCapabilities['update-any-message']) ||
|
|
2297
|
+
(isMyMessage && channelCapabilities['update-own-message']);
|
|
2298
|
+
var canDelete = channelCapabilities['delete-any-message'] ||
|
|
2299
|
+
(isMyMessage && channelCapabilities['delete-own-message']);
|
|
2163
2300
|
var canFlag = !isMyMessage;
|
|
2164
2301
|
var canMute = !isMyMessage && (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.mutes);
|
|
2165
2302
|
var canQuote = !disableQuotedMessages;
|
|
2166
|
-
var canReact = channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.reactions;
|
|
2167
|
-
var canReply = channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.replies;
|
|
2303
|
+
var canReact = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.reactions) !== false && channelCapabilities['send-reaction'];
|
|
2304
|
+
var canReply = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.replies) !== false && channelCapabilities['send-reply'];
|
|
2168
2305
|
return {
|
|
2169
2306
|
canDelete: canDelete,
|
|
2170
2307
|
canEdit: canEdit,
|
|
@@ -2182,7 +2319,7 @@ var useUserRole = function (message, onlySenderCanEdit, disableQuotedMessages) {
|
|
|
2182
2319
|
|
|
2183
2320
|
var MessageDeleted = function (props) {
|
|
2184
2321
|
var message = props.message;
|
|
2185
|
-
var t = useTranslationContext().t;
|
|
2322
|
+
var t = useTranslationContext('MessageDeleted').t;
|
|
2186
2323
|
var isMyMessage = useUserRole(message).isMyMessage;
|
|
2187
2324
|
var messageClasses = isMyMessage
|
|
2188
2325
|
? 'str-chat__message str-chat__message--me str-chat__message-simple str-chat__message-simple--me'
|
|
@@ -2261,6 +2398,7 @@ var MESSAGE_ACTIONS = {
|
|
|
2261
2398
|
react: 'react',
|
|
2262
2399
|
reply: 'reply',
|
|
2263
2400
|
};
|
|
2401
|
+
// @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
2264
2402
|
var defaultPinPermissions = {
|
|
2265
2403
|
commerce: {
|
|
2266
2404
|
admin: true,
|
|
@@ -2490,13 +2628,18 @@ var getReadByTooltipText = function (users, t, client) {
|
|
|
2490
2628
|
return outStr;
|
|
2491
2629
|
};
|
|
2492
2630
|
|
|
2493
|
-
var ChannelActionContext = React__default['default'].createContext(
|
|
2631
|
+
var ChannelActionContext = React__default['default'].createContext(undefined);
|
|
2494
2632
|
var ChannelActionProvider = function (_a) {
|
|
2495
2633
|
var children = _a.children, value = _a.value;
|
|
2496
2634
|
return (React__default['default'].createElement(ChannelActionContext.Provider, { value: value }, children));
|
|
2497
2635
|
};
|
|
2498
|
-
var useChannelActionContext = function () {
|
|
2499
|
-
|
|
2636
|
+
var useChannelActionContext = function (componentName) {
|
|
2637
|
+
var contextValue = React.useContext(ChannelActionContext);
|
|
2638
|
+
if (!contextValue) {
|
|
2639
|
+
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.");
|
|
2640
|
+
return {};
|
|
2641
|
+
}
|
|
2642
|
+
return contextValue;
|
|
2500
2643
|
};
|
|
2501
2644
|
/**
|
|
2502
2645
|
* Typescript currently does not support partial inference, so if ChannelActionContext
|
|
@@ -2514,12 +2657,19 @@ var withChannelActionContext = function (Component) {
|
|
|
2514
2657
|
return WithChannelActionContextComponent;
|
|
2515
2658
|
};
|
|
2516
2659
|
|
|
2517
|
-
var MessageContext = React__default['default'].createContext(
|
|
2660
|
+
var MessageContext = React__default['default'].createContext(undefined);
|
|
2518
2661
|
var MessageProvider = function (_a) {
|
|
2519
2662
|
var children = _a.children, value = _a.value;
|
|
2520
2663
|
return (React__default['default'].createElement(MessageContext.Provider, { value: value }, children));
|
|
2521
2664
|
};
|
|
2522
|
-
var useMessageContext = function () {
|
|
2665
|
+
var useMessageContext = function (componentName) {
|
|
2666
|
+
var contextValue = React.useContext(MessageContext);
|
|
2667
|
+
if (!contextValue) {
|
|
2668
|
+
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.");
|
|
2669
|
+
return {};
|
|
2670
|
+
}
|
|
2671
|
+
return contextValue;
|
|
2672
|
+
};
|
|
2523
2673
|
/**
|
|
2524
2674
|
* Typescript currently does not support partial inference, so if MessageContext
|
|
2525
2675
|
* typing is desired while using the HOC withMessageContext, the Props for the
|
|
@@ -2547,9 +2697,9 @@ var CustomMessageActionsList = function (props) {
|
|
|
2547
2697
|
};
|
|
2548
2698
|
var UnMemoizedMessageActionsBox = function (props) {
|
|
2549
2699
|
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;
|
|
2550
|
-
var setQuotedMessage = useChannelActionContext().setQuotedMessage;
|
|
2551
|
-
var _b = useMessageContext(), customMessageActions = _b.customMessageActions, message = _b.message, messageListRect = _b.messageListRect;
|
|
2552
|
-
var t = useTranslationContext().t;
|
|
2700
|
+
var setQuotedMessage = useChannelActionContext('MessageActionsBox').setQuotedMessage;
|
|
2701
|
+
var _b = useMessageContext('MessageActionsBox'), customMessageActions = _b.customMessageActions, message = _b.message, messageListRect = _b.messageListRect;
|
|
2702
|
+
var t = useTranslationContext('MessageActionsBox').t;
|
|
2553
2703
|
var _c = React.useState(false), reverse = _c[0], setReverse = _c[1];
|
|
2554
2704
|
var messageActions = getMessageActions();
|
|
2555
2705
|
var checkIfReverse = React.useCallback(function (containerElement) {
|
|
@@ -2600,8 +2750,8 @@ var MessageActionsBox = React__default['default'].memo(UnMemoizedMessageActionsB
|
|
|
2600
2750
|
|
|
2601
2751
|
var MessageActions = function (props) {
|
|
2602
2752
|
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;
|
|
2603
|
-
var mutes = useChatContext().mutes;
|
|
2604
|
-
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;
|
|
2753
|
+
var mutes = useChatContext('MessageActions').mutes;
|
|
2754
|
+
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;
|
|
2605
2755
|
var getMessageActions = propGetMessageActions || contextGetMessageActions;
|
|
2606
2756
|
var handleDelete = propHandleDelete || contextHandleDelete;
|
|
2607
2757
|
var handleFlag = propHandleFlag || contextHandleFlag;
|
|
@@ -2658,7 +2808,7 @@ var MessageActionsWrapper = function (props) {
|
|
|
2658
2808
|
|
|
2659
2809
|
var UnMemoizedMessageOptions = function (props) {
|
|
2660
2810
|
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;
|
|
2661
|
-
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;
|
|
2811
|
+
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;
|
|
2662
2812
|
var handleOpenThread = propHandleOpenThread || contextHandleOpenThread;
|
|
2663
2813
|
var messageActions = getMessageActions();
|
|
2664
2814
|
var showActionsBox = showMessageActionsBox(messageActions) || !!customMessageActions;
|
|
@@ -2692,7 +2842,7 @@ var MessageOptions = React__default['default'].memo(UnMemoizedMessageOptions);
|
|
|
2692
2842
|
|
|
2693
2843
|
var UnMemoizedMessageRepliesCountButton = function (props) {
|
|
2694
2844
|
var labelPlural = props.labelPlural, labelSingle = props.labelSingle, onClick = props.onClick, _a = props.reply_count, reply_count = _a === void 0 ? 0 : _a;
|
|
2695
|
-
var t = useTranslationContext().t;
|
|
2845
|
+
var t = useTranslationContext('MessageRepliesCountButton').t;
|
|
2696
2846
|
var singleReplyText;
|
|
2697
2847
|
var pluralReplyText;
|
|
2698
2848
|
if (reply_count === 1) {
|
|
@@ -2730,10 +2880,10 @@ var Tooltip = function (props) {
|
|
|
2730
2880
|
var UnMemoizedMessageStatus = function (props) {
|
|
2731
2881
|
var _a;
|
|
2732
2882
|
var propAvatar = props.Avatar, _b = props.messageType, messageType = _b === void 0 ? 'simple' : _b;
|
|
2733
|
-
var client = useChatContext().client;
|
|
2734
|
-
var contextAvatar = useComponentContext().Avatar;
|
|
2735
|
-
var _c = useMessageContext(), isMyMessage = _c.isMyMessage, lastReceivedId = _c.lastReceivedId, message = _c.message, readBy = _c.readBy, threadList = _c.threadList;
|
|
2736
|
-
var t = useTranslationContext().t;
|
|
2883
|
+
var client = useChatContext('MessageStatus').client;
|
|
2884
|
+
var contextAvatar = useComponentContext('MessageStatus').Avatar;
|
|
2885
|
+
var _c = useMessageContext('MessageStatus'), isMyMessage = _c.isMyMessage, lastReceivedId = _c.lastReceivedId, message = _c.message, readBy = _c.readBy, threadList = _c.threadList;
|
|
2886
|
+
var t = useTranslationContext('MessageStatus').t;
|
|
2737
2887
|
var Avatar$1 = propAvatar || contextAvatar || Avatar;
|
|
2738
2888
|
if (!isMyMessage() || message.type === 'error') {
|
|
2739
2889
|
return null;
|
|
@@ -2763,8 +2913,8 @@ var MessageStatus = React__default['default'].memo(UnMemoizedMessageStatus);
|
|
|
2763
2913
|
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.";
|
|
2764
2914
|
function useActionHandler(message) {
|
|
2765
2915
|
var _this = this;
|
|
2766
|
-
var _a = useChannelActionContext(), removeMessage = _a.removeMessage, updateMessage = _a.updateMessage;
|
|
2767
|
-
var channel = useChannelStateContext().channel;
|
|
2916
|
+
var _a = useChannelActionContext('useActionHandler'), removeMessage = _a.removeMessage, updateMessage = _a.updateMessage;
|
|
2917
|
+
var channel = useChannelStateContext('useActionHandler').channel;
|
|
2768
2918
|
return function (dataOrName, value, event) { return __awaiter(_this, void 0, void 0, function () {
|
|
2769
2919
|
var messageID, formData, data;
|
|
2770
2920
|
return __generator(this, function (_a) {
|
|
@@ -2822,9 +2972,9 @@ var useBreakpoint = function () {
|
|
|
2822
2972
|
var useDeleteHandler = function (message, notifications) {
|
|
2823
2973
|
if (notifications === void 0) { notifications = {}; }
|
|
2824
2974
|
var getErrorNotification = notifications.getErrorNotification, notify = notifications.notify;
|
|
2825
|
-
var updateMessage = useChannelActionContext().updateMessage;
|
|
2826
|
-
var client = useChatContext().client;
|
|
2827
|
-
var t = useTranslationContext().t;
|
|
2975
|
+
var updateMessage = useChannelActionContext('useDeleteHandler').updateMessage;
|
|
2976
|
+
var client = useChatContext('useDeleteHandler').client;
|
|
2977
|
+
var t = useTranslationContext('useDeleteHandler').t;
|
|
2828
2978
|
return function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
2829
2979
|
var data, errorMessage;
|
|
2830
2980
|
return __generator(this, function (_a) {
|
|
@@ -2877,8 +3027,8 @@ var useEditHandler = function (customInitialState, customSetEditing, customClear
|
|
|
2877
3027
|
var missingUseFlagHandlerParameterWarning = 'useFlagHandler was called but it is missing one or more necessary parameters.';
|
|
2878
3028
|
var useFlagHandler = function (message, notifications) {
|
|
2879
3029
|
if (notifications === void 0) { notifications = {}; }
|
|
2880
|
-
var client = useChatContext().client;
|
|
2881
|
-
var t = useTranslationContext().t;
|
|
3030
|
+
var client = useChatContext('useFlagHandler').client;
|
|
3031
|
+
var t = useTranslationContext('useFlagHandler').t;
|
|
2882
3032
|
return function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
2883
3033
|
var getErrorNotification, getSuccessNotification, notify, successMessage, errorMessage;
|
|
2884
3034
|
var _a;
|
|
@@ -2924,7 +3074,7 @@ function createEventHandler(fn, message) {
|
|
|
2924
3074
|
};
|
|
2925
3075
|
}
|
|
2926
3076
|
var useMentionsHandler = function (message, customMentionHandler) {
|
|
2927
|
-
var _a = useChannelActionContext(), contextOnMentionsClick = _a.onMentionsClick, contextOnMentionsHover = _a.onMentionsHover;
|
|
3077
|
+
var _a = useChannelActionContext('useMentionsHandler'), contextOnMentionsClick = _a.onMentionsClick, contextOnMentionsHover = _a.onMentionsHover;
|
|
2928
3078
|
var onMentionsClick = (customMentionHandler === null || customMentionHandler === void 0 ? void 0 : customMentionHandler.onMentionsClick) || contextOnMentionsClick || (function () { return null; });
|
|
2929
3079
|
var onMentionsHover = (customMentionHandler === null || customMentionHandler === void 0 ? void 0 : customMentionHandler.onMentionsHover) || contextOnMentionsHover || (function () { return null; });
|
|
2930
3080
|
return {
|
|
@@ -2968,9 +3118,9 @@ var useMobilePress = function () {
|
|
|
2968
3118
|
var missingUseMuteHandlerParamsWarning = 'useMuteHandler was called but it is missing one or more necessary parameter.';
|
|
2969
3119
|
var useMuteHandler = function (message, notifications) {
|
|
2970
3120
|
if (notifications === void 0) { notifications = {}; }
|
|
2971
|
-
var mutes = useChannelStateContext().mutes;
|
|
2972
|
-
var client = useChatContext().client;
|
|
2973
|
-
var t = useTranslationContext().t;
|
|
3121
|
+
var mutes = useChannelStateContext('useMuteHandler').mutes;
|
|
3122
|
+
var client = useChatContext('useMuteHandler').client;
|
|
3123
|
+
var t = useTranslationContext('useMuteHandler').t;
|
|
2974
3124
|
return function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
2975
3125
|
var getErrorNotification, getSuccessNotification, notify, successMessage, errorMessage, fallbackMessage, successMessage, errorMessage;
|
|
2976
3126
|
return __generator(this, function (_a) {
|
|
@@ -3031,7 +3181,7 @@ var useMuteHandler = function (message, notifications) {
|
|
|
3031
3181
|
};
|
|
3032
3182
|
|
|
3033
3183
|
var useOpenThreadHandler = function (message, customOpenThread) {
|
|
3034
|
-
var channelOpenThread = useChannelActionContext().openThread;
|
|
3184
|
+
var channelOpenThread = useChannelActionContext('useOpenThreadHandler').openThread;
|
|
3035
3185
|
var openThread = customOpenThread || channelOpenThread;
|
|
3036
3186
|
return function (event) {
|
|
3037
3187
|
if (!openThread || !message) {
|
|
@@ -3042,25 +3192,17 @@ var useOpenThreadHandler = function (message, customOpenThread) {
|
|
|
3042
3192
|
};
|
|
3043
3193
|
};
|
|
3044
3194
|
|
|
3045
|
-
var usePinHandler = function (message,
|
|
3046
|
-
|
|
3195
|
+
var usePinHandler = function (message,
|
|
3196
|
+
// @ts-expect-error @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
3197
|
+
permissions, // eslint-disable-line
|
|
3198
|
+
notifications) {
|
|
3047
3199
|
if (notifications === void 0) { notifications = {}; }
|
|
3048
3200
|
var getErrorNotification = notifications.getErrorNotification, notify = notifications.notify;
|
|
3049
|
-
var updateMessage = useChannelActionContext().updateMessage;
|
|
3050
|
-
var
|
|
3051
|
-
var client = useChatContext().client;
|
|
3052
|
-
var t = useTranslationContext().t;
|
|
3053
|
-
var canPin =
|
|
3054
|
-
if (!channel || !permissions || !permissions[channel.type]) {
|
|
3055
|
-
return false;
|
|
3056
|
-
}
|
|
3057
|
-
var currentChannelPermissions = permissions[channel.type];
|
|
3058
|
-
var currentRole = channel.state.membership.role;
|
|
3059
|
-
if (currentChannelPermissions && currentRole && currentChannelPermissions[currentRole]) {
|
|
3060
|
-
return true;
|
|
3061
|
-
}
|
|
3062
|
-
return false;
|
|
3063
|
-
};
|
|
3201
|
+
var updateMessage = useChannelActionContext('usePinHandler').updateMessage;
|
|
3202
|
+
var _a = useChannelStateContext('usePinHandler').channelCapabilities, channelCapabilities = _a === void 0 ? {} : _a;
|
|
3203
|
+
var client = useChatContext('usePinHandler').client;
|
|
3204
|
+
var t = useTranslationContext('usePinHandler').t;
|
|
3205
|
+
var canPin = !!channelCapabilities['pin-message'];
|
|
3064
3206
|
var handlePin = function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3065
3207
|
var optimisticMessage, messageResponse, errorMessage, optimisticMessage, messageResponse, errorMessage;
|
|
3066
3208
|
return __generator(this, function (_a) {
|
|
@@ -3108,14 +3250,14 @@ var usePinHandler = function (message, permissions, notifications) {
|
|
|
3108
3250
|
}
|
|
3109
3251
|
});
|
|
3110
3252
|
}); };
|
|
3111
|
-
return { canPin: canPin
|
|
3253
|
+
return { canPin: canPin, handlePin: handlePin };
|
|
3112
3254
|
};
|
|
3113
3255
|
|
|
3114
3256
|
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.";
|
|
3115
3257
|
var useReactionHandler = function (message) {
|
|
3116
|
-
var updateMessage = useChannelActionContext().updateMessage;
|
|
3117
|
-
var channel = useChannelStateContext().channel;
|
|
3118
|
-
var client = useChatContext().client;
|
|
3258
|
+
var updateMessage = useChannelActionContext('useReactionHandler').updateMessage;
|
|
3259
|
+
var channel = useChannelStateContext('useReactionHandler').channel;
|
|
3260
|
+
var client = useChatContext('useReactionHandler').client;
|
|
3119
3261
|
var createMessagePreview = React.useCallback(function (add, reaction, message) {
|
|
3120
3262
|
var _a, _b;
|
|
3121
3263
|
var newReactionCounts = (message === null || message === void 0 ? void 0 : message.reaction_counts) || {};
|
|
@@ -3230,11 +3372,10 @@ var useReactionHandler = function (message) {
|
|
|
3230
3372
|
}); };
|
|
3231
3373
|
};
|
|
3232
3374
|
var useReactionClick = function (message, reactionSelectorRef, messageWrapperRef, closeReactionSelectorOnClick) {
|
|
3233
|
-
var _a, _b;
|
|
3234
|
-
var channel = useChannelStateContext().channel;
|
|
3375
|
+
var _a = useChannelStateContext('useReactionClick'), _b = _a.channelCapabilities, channelCapabilities = _b === void 0 ? {} : _b, channelConfig = _a.channelConfig;
|
|
3235
3376
|
var _c = React.useState(false), showDetailedReactions = _c[0], setShowDetailedReactions = _c[1];
|
|
3236
3377
|
var hasListener = React.useRef(false);
|
|
3237
|
-
var isReactionEnabled = (
|
|
3378
|
+
var isReactionEnabled = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.reactions) !== false && channelCapabilities['send-reaction'];
|
|
3238
3379
|
var messageDeleted = !!(message === null || message === void 0 ? void 0 : message.deleted_at);
|
|
3239
3380
|
var closeDetailedReactions = React.useCallback(function (event) {
|
|
3240
3381
|
var _a;
|
|
@@ -3295,7 +3436,7 @@ var useReactionClick = function (message, reactionSelectorRef, messageWrapperRef
|
|
|
3295
3436
|
};
|
|
3296
3437
|
|
|
3297
3438
|
var useRetryHandler = function (customRetrySendMessage) {
|
|
3298
|
-
var contextRetrySendMessage = useChannelActionContext().retrySendMessage;
|
|
3439
|
+
var contextRetrySendMessage = useChannelActionContext('useRetryHandler').retrySendMessage;
|
|
3299
3440
|
var retrySendMessage = customRetrySendMessage || contextRetrySendMessage;
|
|
3300
3441
|
return function (message) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3301
3442
|
return __generator(this, function (_a) {
|
|
@@ -3329,9 +3470,9 @@ var useUserHandler = function (message, eventHandlers) { return ({
|
|
|
3329
3470
|
|
|
3330
3471
|
var QuotedMessage = function () {
|
|
3331
3472
|
var _a, _b;
|
|
3332
|
-
var Attachment = useComponentContext().Attachment;
|
|
3333
|
-
var _c = useMessageContext(), isMyMessage = _c.isMyMessage, message = _c.message;
|
|
3334
|
-
var userLanguage = useTranslationContext().userLanguage;
|
|
3473
|
+
var Attachment = useComponentContext('QuotedMessage').Attachment;
|
|
3474
|
+
var _c = useMessageContext('QuotedMessage'), isMyMessage = _c.isMyMessage, message = _c.message;
|
|
3475
|
+
var userLanguage = useTranslationContext('QuotedMessage').userLanguage;
|
|
3335
3476
|
var quoted_message = message.quoted_message;
|
|
3336
3477
|
if (!quoted_message)
|
|
3337
3478
|
return null;
|
|
@@ -3356,9 +3497,9 @@ var QuotedMessage = function () {
|
|
|
3356
3497
|
var UnMemoizedMessageTextComponent = function (props) {
|
|
3357
3498
|
var _a;
|
|
3358
3499
|
var customInnerClass = props.customInnerClass, _b = props.customWrapperClass, customWrapperClass = _b === void 0 ? '' : _b, propMessage = props.message, _c = props.theme, theme = _c === void 0 ? 'simple' : _c;
|
|
3359
|
-
var _d = useComponentContext().QuotedMessage, QuotedMessage$1 = _d === void 0 ? QuotedMessage : _d;
|
|
3360
|
-
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;
|
|
3361
|
-
var _g = useTranslationContext(), t = _g.t, userLanguage = _g.userLanguage;
|
|
3500
|
+
var _d = useComponentContext('MessageText').QuotedMessage, QuotedMessage$1 = _d === void 0 ? QuotedMessage : _d;
|
|
3501
|
+
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;
|
|
3502
|
+
var _g = useTranslationContext('MessageText'), t = _g.t, userLanguage = _g.userLanguage;
|
|
3362
3503
|
var handleMobilePress = useMobilePress().handleMobilePress;
|
|
3363
3504
|
var message = propMessage || contextMessage;
|
|
3364
3505
|
var hasAttachment = messageHasAttachments(message);
|
|
@@ -3417,8 +3558,8 @@ function getDateString(messageCreatedAt, formatDate, calendar, tDateTimeParser,
|
|
|
3417
3558
|
}
|
|
3418
3559
|
var UnMemoizedMessageTimestamp = function (props) {
|
|
3419
3560
|
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;
|
|
3420
|
-
var _d = useMessageContext(), formatDate = _d.formatDate, contextMessage = _d.message;
|
|
3421
|
-
var tDateTimeParser = useTranslationContext().tDateTimeParser;
|
|
3561
|
+
var _d = useMessageContext('MessageTimestamp'), formatDate = _d.formatDate, contextMessage = _d.message;
|
|
3562
|
+
var tDateTimeParser = useTranslationContext('MessageTimestamp').tDateTimeParser;
|
|
3422
3563
|
var message = propMessage || contextMessage;
|
|
3423
3564
|
var createdAt = message.created_at;
|
|
3424
3565
|
var when = React.useMemo(function () { return getDateString(createdAt, formatDate, calendar, tDateTimeParser, format); }, [formatDate, calendar, tDateTimeParser, format, createdAt]);
|
|
@@ -3429,9 +3570,8 @@ var UnMemoizedMessageTimestamp = function (props) {
|
|
|
3429
3570
|
var MessageTimestamp = React__default['default'].memo(UnMemoizedMessageTimestamp);
|
|
3430
3571
|
|
|
3431
3572
|
var useCommandTrigger = function () {
|
|
3432
|
-
var
|
|
3433
|
-
var
|
|
3434
|
-
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;
|
|
3573
|
+
var channelConfig = useChannelStateContext('useCommandTrigger').channelConfig;
|
|
3574
|
+
var commands = channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.commands;
|
|
3435
3575
|
return {
|
|
3436
3576
|
component: CommandItem,
|
|
3437
3577
|
dataProvider: function (query, text, onReady) {
|
|
@@ -3518,7 +3658,7 @@ var accentsMap = {
|
|
|
3518
3658
|
e: 'é|è|ê|É|È|Ê',
|
|
3519
3659
|
i: 'í|ì|î|Í|Ì|Î',
|
|
3520
3660
|
n: 'ñ|Ñ',
|
|
3521
|
-
o: '
|
|
3661
|
+
o: 'ó|ò|ô|ő|õ|Ó|Ò|Ô|Õ',
|
|
3522
3662
|
u: 'ú|ù|û|ü|Ú|Ù|Û|Ü',
|
|
3523
3663
|
};
|
|
3524
3664
|
var removeDiacritics = function (text) {
|
|
@@ -3555,7 +3695,7 @@ var calculateLevenshtein = function (query, name) {
|
|
|
3555
3695
|
return matrix[name.length][query.length];
|
|
3556
3696
|
};
|
|
3557
3697
|
var searchLocalUsers = function (params) {
|
|
3558
|
-
var ownUserId = params.ownUserId, query = params.query, useMentionsTransliteration = params.useMentionsTransliteration, users = params.users;
|
|
3698
|
+
var ownUserId = params.ownUserId, query = params.query, text = params.text, useMentionsTransliteration = params.useMentionsTransliteration, users = params.users;
|
|
3559
3699
|
var matchingUsers = users.filter(function (user) {
|
|
3560
3700
|
if (user.id === ownUserId)
|
|
3561
3701
|
return false;
|
|
@@ -3580,13 +3720,16 @@ var searchLocalUsers = function (params) {
|
|
|
3580
3720
|
});
|
|
3581
3721
|
}); })();
|
|
3582
3722
|
}
|
|
3723
|
+
var maxDistance = 3;
|
|
3724
|
+
var lastDigits = text.slice(-(maxDistance + 1)).includes('@');
|
|
3583
3725
|
if (updatedName) {
|
|
3584
3726
|
var levenshtein_1 = calculateLevenshtein(updatedQuery, updatedName);
|
|
3585
|
-
if (updatedName.includes(updatedQuery) || levenshtein_1 <=
|
|
3727
|
+
if (updatedName.includes(updatedQuery) || (levenshtein_1 <= maxDistance && lastDigits)) {
|
|
3586
3728
|
return true;
|
|
3729
|
+
}
|
|
3587
3730
|
}
|
|
3588
3731
|
var levenshtein = calculateLevenshtein(updatedQuery, updatedId);
|
|
3589
|
-
return updatedId.includes(updatedQuery) || levenshtein <=
|
|
3732
|
+
return updatedId.includes(updatedQuery) || (levenshtein <= maxDistance && lastDigits);
|
|
3590
3733
|
});
|
|
3591
3734
|
return matchingUsers;
|
|
3592
3735
|
};
|
|
@@ -3615,8 +3758,8 @@ var UserItem = React__default['default'].memo(UnMemoizedUserItem);
|
|
|
3615
3758
|
var useUserTrigger = function (params) {
|
|
3616
3759
|
var disableMentions = params.disableMentions, mentionAllAppUsers = params.mentionAllAppUsers, _a = params.mentionQueryParams, mentionQueryParams = _a === void 0 ? {} : _a, onSelectUser = params.onSelectUser, useMentionsTransliteration = params.useMentionsTransliteration;
|
|
3617
3760
|
var _b = React.useState(false), searching = _b[0], setSearching = _b[1];
|
|
3618
|
-
var _c = useChatContext(), client = _c.client, mutes = _c.mutes;
|
|
3619
|
-
var channel = useChannelStateContext().channel;
|
|
3761
|
+
var _c = useChatContext('useUserTrigger'), client = _c.client, mutes = _c.mutes;
|
|
3762
|
+
var channel = useChannelStateContext('useUserTrigger').channel;
|
|
3620
3763
|
var members = channel.state.members;
|
|
3621
3764
|
var watchers = channel.state.watchers;
|
|
3622
3765
|
var getMembersAndWatchers = React.useCallback(function () {
|
|
@@ -3731,6 +3874,7 @@ var useUserTrigger = function (params) {
|
|
|
3731
3874
|
var params_1 = {
|
|
3732
3875
|
ownUserId: client.userID,
|
|
3733
3876
|
query: query,
|
|
3877
|
+
text: text,
|
|
3734
3878
|
useMentionsTransliteration: useMentionsTransliteration,
|
|
3735
3879
|
users: users,
|
|
3736
3880
|
};
|
|
@@ -3759,20 +3903,18 @@ var MessageInputContextProvider = function (_a) {
|
|
|
3759
3903
|
var children = _a.children, value = _a.value;
|
|
3760
3904
|
return (React__default['default'].createElement(MessageInputContext.Provider, { value: value }, children));
|
|
3761
3905
|
};
|
|
3762
|
-
|
|
3763
|
-
* hook for MessageInput context
|
|
3764
|
-
*/
|
|
3765
|
-
var useMessageInputContext = function () {
|
|
3906
|
+
var useMessageInputContext = function (componentName) {
|
|
3766
3907
|
var contextValue = React.useContext(MessageInputContext);
|
|
3767
|
-
if (contextValue
|
|
3768
|
-
console.warn(
|
|
3908
|
+
if (!contextValue) {
|
|
3909
|
+
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.");
|
|
3910
|
+
return {};
|
|
3769
3911
|
}
|
|
3770
3912
|
return contextValue;
|
|
3771
3913
|
};
|
|
3772
3914
|
|
|
3773
3915
|
var DefaultTriggerProvider = function (_a) {
|
|
3774
3916
|
var children = _a.children;
|
|
3775
|
-
var currentValue = useMessageInputContext();
|
|
3917
|
+
var currentValue = useMessageInputContext('DefaultTriggerProvider');
|
|
3776
3918
|
var defaultAutocompleteTriggers = {
|
|
3777
3919
|
'/': useCommandTrigger(),
|
|
3778
3920
|
':': useEmojiTrigger(currentValue.emojiIndex),
|
|
@@ -3810,7 +3952,7 @@ var DefaultEmojiPicker = React__default['default'].lazy(function () { return __a
|
|
|
3810
3952
|
}
|
|
3811
3953
|
});
|
|
3812
3954
|
}); });
|
|
3813
|
-
var EmojiContext = React__default['default'].createContext(
|
|
3955
|
+
var EmojiContext = React__default['default'].createContext(undefined);
|
|
3814
3956
|
var EmojiProvider = function (_a) {
|
|
3815
3957
|
var children = _a.children, value = _a.value;
|
|
3816
3958
|
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;
|
|
@@ -3822,8 +3964,13 @@ var EmojiProvider = function (_a) {
|
|
|
3822
3964
|
};
|
|
3823
3965
|
return React__default['default'].createElement(EmojiContext.Provider, { value: emojiContextValue }, children);
|
|
3824
3966
|
};
|
|
3825
|
-
var useEmojiContext = function () {
|
|
3826
|
-
|
|
3967
|
+
var useEmojiContext = function (componentName) {
|
|
3968
|
+
var contextValue = React.useContext(EmojiContext);
|
|
3969
|
+
if (!contextValue) {
|
|
3970
|
+
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.");
|
|
3971
|
+
return {};
|
|
3972
|
+
}
|
|
3973
|
+
return contextValue;
|
|
3827
3974
|
};
|
|
3828
3975
|
/**
|
|
3829
3976
|
* Typescript currently does not support partial inference, so if EmojiContext
|
|
@@ -3849,9 +3996,9 @@ var filterEmoji = function (emoji) {
|
|
|
3849
3996
|
};
|
|
3850
3997
|
var EmojiPicker = function (props) {
|
|
3851
3998
|
var small = props.small;
|
|
3852
|
-
var _a = useEmojiContext(), emojiConfig = _a.emojiConfig, EmojiPickerComponent = _a.EmojiPicker;
|
|
3853
|
-
var t = useTranslationContext().t;
|
|
3854
|
-
var messageInput = useMessageInputContext();
|
|
3999
|
+
var _a = useEmojiContext('EmojiPicker'), emojiConfig = _a.emojiConfig, EmojiPickerComponent = _a.EmojiPicker;
|
|
4000
|
+
var t = useTranslationContext('EmojiPicker').t;
|
|
4001
|
+
var messageInput = useMessageInputContext('EmojiPicker');
|
|
3855
4002
|
var emojiData = (emojiConfig || {}).emojiData;
|
|
3856
4003
|
if (messageInput.emojiPickerIsOpen && emojiData) {
|
|
3857
4004
|
var className = small
|
|
@@ -3865,34 +4012,34 @@ var EmojiPicker = function (props) {
|
|
|
3865
4012
|
};
|
|
3866
4013
|
|
|
3867
4014
|
var EmojiIconLarge = function () {
|
|
3868
|
-
var t = useTranslationContext().t;
|
|
4015
|
+
var t = useTranslationContext('EmojiIconLarge').t;
|
|
3869
4016
|
return (React__default['default'].createElement("svg", { height: '28', width: '28', xmlns: 'http://www.w3.org/2000/svg' },
|
|
3870
4017
|
React__default['default'].createElement("title", null, t('Open emoji picker')),
|
|
3871
4018
|
React__default['default'].createElement("g", { clipRule: 'evenodd', fillRule: 'evenodd' },
|
|
3872
4019
|
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' }))));
|
|
3873
4020
|
};
|
|
3874
4021
|
var EmojiIconSmall = function () {
|
|
3875
|
-
var t = useTranslationContext().t;
|
|
4022
|
+
var t = useTranslationContext('EmojiIconSmall').t;
|
|
3876
4023
|
return (React__default['default'].createElement("svg", { height: '14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
|
|
3877
4024
|
React__default['default'].createElement("title", null, t('Open emoji picker')),
|
|
3878
4025
|
React__default['default'].createElement("g", { clipRule: 'evenodd', fillRule: 'evenodd' },
|
|
3879
4026
|
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' }))));
|
|
3880
4027
|
};
|
|
3881
4028
|
var FileUploadIcon = function () {
|
|
3882
|
-
var t = useTranslationContext().t;
|
|
4029
|
+
var t = useTranslationContext('FileUploadIcon').t;
|
|
3883
4030
|
return (React__default['default'].createElement("svg", { height: '14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
|
|
3884
4031
|
React__default['default'].createElement("title", null, t('Attach files')),
|
|
3885
4032
|
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' })));
|
|
3886
4033
|
};
|
|
3887
4034
|
var FileUploadIconFlat = function () {
|
|
3888
|
-
var t = useTranslationContext().t;
|
|
4035
|
+
var t = useTranslationContext('FileUploadIconFlat').t;
|
|
3889
4036
|
return (React__default['default'].createElement("svg", { height: '14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
|
|
3890
4037
|
React__default['default'].createElement("title", null, t('Attach files')),
|
|
3891
4038
|
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' })));
|
|
3892
4039
|
};
|
|
3893
4040
|
var SendButton = function (_a) {
|
|
3894
4041
|
var sendMessage = _a.sendMessage;
|
|
3895
|
-
var t = useTranslationContext().t;
|
|
4042
|
+
var t = useTranslationContext('SendButton').t;
|
|
3896
4043
|
return (React__default['default'].createElement("button", { className: 'str-chat__send-button', onClick: sendMessage },
|
|
3897
4044
|
React__default['default'].createElement("svg", { height: '17', viewBox: '0 0 18 17', width: '18', xmlns: 'http://www.w3.org/2000/svg' },
|
|
3898
4045
|
React__default['default'].createElement("title", null, t('Send')),
|
|
@@ -3900,8 +4047,8 @@ var SendButton = function (_a) {
|
|
|
3900
4047
|
};
|
|
3901
4048
|
|
|
3902
4049
|
var UploadsPreview = function () {
|
|
3903
|
-
var _a = useChannelStateContext(), maxNumberOfFiles = _a.maxNumberOfFiles, multipleUploads = _a.multipleUploads;
|
|
3904
|
-
var messageInput = useMessageInputContext();
|
|
4050
|
+
var _a = useChannelStateContext('UploadsPreview'), maxNumberOfFiles = _a.maxNumberOfFiles, multipleUploads = _a.multipleUploads;
|
|
4051
|
+
var messageInput = useMessageInputContext('UploadsPreview');
|
|
3905
4052
|
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;
|
|
3906
4053
|
var imagesToPreview = imageOrder.map(function (id) { return imageUploads[id]; });
|
|
3907
4054
|
var filesToPreview = fileOrder.map(function (id) { return fileUploads[id]; });
|
|
@@ -3924,9 +4071,9 @@ var UploadsPreview = function () {
|
|
|
3924
4071
|
};
|
|
3925
4072
|
|
|
3926
4073
|
var UnMemoizedChatAutoComplete = function (props) {
|
|
3927
|
-
var _a = useComponentContext(), SuggestionItem = _a.AutocompleteSuggestionItem, SuggestionList = _a.AutocompleteSuggestionList;
|
|
3928
|
-
var t = useTranslationContext().t;
|
|
3929
|
-
var messageInput = useMessageInputContext();
|
|
4074
|
+
var _a = useComponentContext('ChatAutoComplete'), SuggestionItem = _a.AutocompleteSuggestionItem, SuggestionList = _a.AutocompleteSuggestionList;
|
|
4075
|
+
var t = useTranslationContext('ChatAutoComplete').t;
|
|
4076
|
+
var messageInput = useMessageInputContext('ChatAutoComplete');
|
|
3930
4077
|
var cooldownRemaining = messageInput.cooldownRemaining, disabled = messageInput.disabled, emojiIndex = messageInput.emojiIndex, innerRef = messageInput.textareaRef;
|
|
3931
4078
|
var placeholder = props.placeholder || t('Type your message');
|
|
3932
4079
|
var emojiReplace = function (word) {
|
|
@@ -3952,10 +4099,10 @@ var UnMemoizedChatAutoComplete = function (props) {
|
|
|
3952
4099
|
var ChatAutoComplete = React__default['default'].memo(UnMemoizedChatAutoComplete);
|
|
3953
4100
|
|
|
3954
4101
|
var EditMessageForm = function () {
|
|
3955
|
-
var _a = useChannelStateContext(), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads;
|
|
3956
|
-
var t = useTranslationContext().t;
|
|
3957
|
-
var _b = useMessageInputContext(), clearEditingState = _b.clearEditingState, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, uploadNewFiles = _b.uploadNewFiles;
|
|
3958
|
-
var _c = useComponentContext(), _d = _c.EmojiIcon, EmojiIcon = _d === void 0 ? EmojiIconSmall : _d, _e = _c.FileUploadIcon, FileUploadIcon$1 = _e === void 0 ? FileUploadIcon : _e;
|
|
4102
|
+
var _a = useChannelStateContext('EditMessageForm'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads;
|
|
4103
|
+
var t = useTranslationContext('EditMessageForm').t;
|
|
4104
|
+
var _b = useMessageInputContext('EditMessageForm'), clearEditingState = _b.clearEditingState, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, uploadNewFiles = _b.uploadNewFiles;
|
|
4105
|
+
var _c = useComponentContext('EditMessageForm'), _d = _c.EmojiIcon, EmojiIcon = _d === void 0 ? EmojiIconSmall : _d, _e = _c.FileUploadIcon, FileUploadIcon$1 = _e === void 0 ? FileUploadIcon : _e;
|
|
3959
4106
|
React.useEffect(function () {
|
|
3960
4107
|
var onKeyDown = function (event) {
|
|
3961
4108
|
if (event.keyCode === KEY_CODES.ESC && clearEditingState)
|
|
@@ -4018,8 +4165,8 @@ var checkUserRoles = function (globalRole, channelRole) {
|
|
|
4018
4165
|
};
|
|
4019
4166
|
var useCooldownTimer = function () {
|
|
4020
4167
|
var _a, _b;
|
|
4021
|
-
var client = useChatContext().client;
|
|
4022
|
-
var channel = useChannelStateContext().channel;
|
|
4168
|
+
var client = useChatContext('useCooldownTimer').client;
|
|
4169
|
+
var channel = useChannelStateContext('useCooldownTimer').channel;
|
|
4023
4170
|
var cooldownInterval = (channel.data || {}).cooldown;
|
|
4024
4171
|
var _c = React.useState(), cooldownRemaining = _c[0], setCooldownRemaining = _c[1];
|
|
4025
4172
|
var globalRole = ((_a = client.user) === null || _a === void 0 ? void 0 : _a.role) || '';
|
|
@@ -4040,7 +4187,7 @@ var useCooldownTimer = function () {
|
|
|
4040
4187
|
};
|
|
4041
4188
|
|
|
4042
4189
|
var useEmojiIndex = function () {
|
|
4043
|
-
var _a = useEmojiContext(), emojiConfig = _a.emojiConfig, EmojiIndex = _a.EmojiIndex;
|
|
4190
|
+
var _a = useEmojiContext('useEmojiIndex'), emojiConfig = _a.emojiConfig, EmojiIndex = _a.EmojiIndex;
|
|
4044
4191
|
var emojiData = (emojiConfig || {}).emojiData;
|
|
4045
4192
|
var emojiIndex = React.useMemo(function () {
|
|
4046
4193
|
if (EmojiIndex) {
|
|
@@ -4054,9 +4201,9 @@ var useEmojiIndex = function () {
|
|
|
4054
4201
|
var useImageUploads = function (props, state, dispatch) {
|
|
4055
4202
|
var doImageUploadRequest = props.doImageUploadRequest, errorHandler = props.errorHandler;
|
|
4056
4203
|
var imageUploads = state.imageUploads;
|
|
4057
|
-
var channel = useChannelStateContext().channel;
|
|
4058
|
-
var addNotification = useChannelActionContext().addNotification;
|
|
4059
|
-
var t = useTranslationContext().t;
|
|
4204
|
+
var channel = useChannelStateContext('useImageUploads').channel;
|
|
4205
|
+
var addNotification = useChannelActionContext('useImageUploads').addNotification;
|
|
4206
|
+
var t = useTranslationContext('useImageUploads').t;
|
|
4060
4207
|
var removeImage = React.useCallback(function (id) {
|
|
4061
4208
|
dispatch({ id: id, type: 'removeImageUpload' });
|
|
4062
4209
|
// TODO: cancel upload if still uploading
|
|
@@ -4157,9 +4304,9 @@ var useImageUploads = function (props, state, dispatch) {
|
|
|
4157
4304
|
var useFileUploads = function (props, state, dispatch) {
|
|
4158
4305
|
var doFileUploadRequest = props.doFileUploadRequest, errorHandler = props.errorHandler;
|
|
4159
4306
|
var fileUploads = state.fileUploads;
|
|
4160
|
-
var channel = useChannelStateContext().channel;
|
|
4161
|
-
var addNotification = useChannelActionContext().addNotification;
|
|
4162
|
-
var t = useTranslationContext().t;
|
|
4307
|
+
var channel = useChannelStateContext('useFileUploads').channel;
|
|
4308
|
+
var addNotification = useChannelActionContext('useFileUploads').addNotification;
|
|
4309
|
+
var t = useTranslationContext('useFileUploads').t;
|
|
4163
4310
|
var uploadFile = React.useCallback(function (id) {
|
|
4164
4311
|
dispatch({ id: id, state: 'uploading', type: 'setFileUpload' });
|
|
4165
4312
|
}, []);
|
|
@@ -4234,7 +4381,7 @@ var apiMaxNumberOfFiles = 10;
|
|
|
4234
4381
|
var useAttachments = function (props, state, dispatch) {
|
|
4235
4382
|
var noFiles = props.noFiles;
|
|
4236
4383
|
var fileUploads = state.fileUploads, imageUploads = state.imageUploads;
|
|
4237
|
-
var _a = useChannelStateContext(), maxNumberOfFiles = _a.maxNumberOfFiles, multipleUploads = _a.multipleUploads;
|
|
4384
|
+
var _a = useChannelStateContext('useAttachments'), maxNumberOfFiles = _a.maxNumberOfFiles, multipleUploads = _a.multipleUploads;
|
|
4238
4385
|
var _b = useFileUploads(props, state, dispatch), removeFile = _b.removeFile, uploadFile = _b.uploadFile;
|
|
4239
4386
|
var _c = useImageUploads(props, state, dispatch), removeImage = _c.removeImage, uploadImage = _c.uploadImage;
|
|
4240
4387
|
// Number of files that the user can still add. Should never be more than the amount allowed by the API.
|
|
@@ -4278,7 +4425,7 @@ var useAttachments = function (props, state, dispatch) {
|
|
|
4278
4425
|
};
|
|
4279
4426
|
|
|
4280
4427
|
var useMessageInputText = function (props, state, dispatch) {
|
|
4281
|
-
var channel = useChannelStateContext().channel;
|
|
4428
|
+
var channel = useChannelStateContext('useMessageInputText').channel;
|
|
4282
4429
|
var additionalTextareaProps = props.additionalTextareaProps, focus = props.focus, parent = props.parent, _a = props.publishTypingEvent, publishTypingEvent = _a === void 0 ? true : _a;
|
|
4283
4430
|
var text = state.text;
|
|
4284
4431
|
var textareaRef = React.useRef();
|
|
@@ -4415,9 +4562,9 @@ var getAttachmentTypeFromMime = function (mime) {
|
|
|
4415
4562
|
var useSubmitHandler = function (props, state, dispatch, numberOfUploads) {
|
|
4416
4563
|
var clearEditingState = props.clearEditingState, message = props.message, overrideSubmitHandler = props.overrideSubmitHandler, parent = props.parent, publishTypingEvent = props.publishTypingEvent;
|
|
4417
4564
|
var attachments = state.attachments, fileOrder = state.fileOrder, fileUploads = state.fileUploads, imageOrder = state.imageOrder, imageUploads = state.imageUploads, mentioned_users = state.mentioned_users, text = state.text;
|
|
4418
|
-
var channel = useChannelStateContext().channel;
|
|
4419
|
-
var _a = useChannelActionContext(), addNotification = _a.addNotification, editMessage = _a.editMessage, sendMessage = _a.sendMessage;
|
|
4420
|
-
var t = useTranslationContext().t;
|
|
4565
|
+
var channel = useChannelStateContext('useSubmitHandler').channel;
|
|
4566
|
+
var _a = useChannelActionContext('useSubmitHandler'), addNotification = _a.addNotification, editMessage = _a.editMessage, sendMessage = _a.sendMessage;
|
|
4567
|
+
var t = useTranslationContext('useSubmitHandler').t;
|
|
4421
4568
|
var getAttachmentsFromUploads = function () {
|
|
4422
4569
|
var imageAttachments = imageOrder
|
|
4423
4570
|
.map(function (id) { return imageUploads[id]; })
|
|
@@ -4717,9 +4864,8 @@ var messageInputReducer = function (state, action) {
|
|
|
4717
4864
|
* hook for MessageInput state
|
|
4718
4865
|
*/
|
|
4719
4866
|
var useMessageInputState = function (props) {
|
|
4720
|
-
var _a, _b;
|
|
4721
4867
|
var message = props.message;
|
|
4722
|
-
var
|
|
4868
|
+
var _a = useChannelStateContext('useMessageInputState'), _b = _a.channelCapabilities, channelCapabilities = _b === void 0 ? {} : _b, channelConfig = _a.channelConfig;
|
|
4723
4869
|
var _c = React.useReducer(messageInputReducer, message, initState), state = _c[0], dispatch = _c[1];
|
|
4724
4870
|
var _d = useMessageInputText(props, state, dispatch), handleChange = _d.handleChange, insertText = _d.insertText, textareaRef = _d.textareaRef;
|
|
4725
4871
|
var _e = React.useState(false), showCommandsList = _e[0], setShowCommandsList = _e[1];
|
|
@@ -4735,7 +4881,7 @@ var useMessageInputState = function (props) {
|
|
|
4735
4881
|
var _g = useAttachments(props, state, dispatch), maxFilesLeft = _g.maxFilesLeft, numberOfUploads = _g.numberOfUploads, removeFile = _g.removeFile, removeImage = _g.removeImage, uploadFile = _g.uploadFile, uploadImage = _g.uploadImage, uploadNewFiles = _g.uploadNewFiles;
|
|
4736
4882
|
var handleSubmit = useSubmitHandler(props, state, dispatch, numberOfUploads).handleSubmit;
|
|
4737
4883
|
var onPaste = usePasteHandler(uploadNewFiles, insertText).onPaste;
|
|
4738
|
-
var isUploadEnabled = (
|
|
4884
|
+
var isUploadEnabled = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.uploads) !== false && channelCapabilities['upload-file'] !== false;
|
|
4739
4885
|
var onSelectUser = React.useCallback(function (item) {
|
|
4740
4886
|
dispatch({ type: 'addMentionedUser', user: item });
|
|
4741
4887
|
}, []);
|
|
@@ -4751,8 +4897,8 @@ var useMessageInputState = function (props) {
|
|
|
4751
4897
|
};
|
|
4752
4898
|
|
|
4753
4899
|
var QuotedMessagePreviewHeader = function () {
|
|
4754
|
-
var setQuotedMessage = useChannelActionContext().setQuotedMessage;
|
|
4755
|
-
var t = useTranslationContext().t;
|
|
4900
|
+
var setQuotedMessage = useChannelActionContext('QuotedMessagePreview').setQuotedMessage;
|
|
4901
|
+
var t = useTranslationContext('QuotedMessagePreview').t;
|
|
4756
4902
|
return (React__default['default'].createElement("div", { className: 'quoted-message-preview-header' },
|
|
4757
4903
|
React__default['default'].createElement("div", null, t('Reply to Message')),
|
|
4758
4904
|
React__default['default'].createElement("button", { className: 'str-chat__square-button', onClick: function () { return setQuotedMessage(undefined); } },
|
|
@@ -4762,8 +4908,8 @@ var QuotedMessagePreviewHeader = function () {
|
|
|
4762
4908
|
var QuotedMessagePreview = function (props) {
|
|
4763
4909
|
var _a;
|
|
4764
4910
|
var quotedMessage = props.quotedMessage;
|
|
4765
|
-
var Attachment = useComponentContext().Attachment;
|
|
4766
|
-
var userLanguage = useTranslationContext().userLanguage;
|
|
4911
|
+
var Attachment = useComponentContext('QuotedMessagePreview').Attachment;
|
|
4912
|
+
var userLanguage = useTranslationContext('QuotedMessagePreview').userLanguage;
|
|
4767
4913
|
var quotedMessageText = ((_a = quotedMessage.i18n) === null || _a === void 0 ? void 0 : _a[userLanguage + "_text"]) ||
|
|
4768
4914
|
quotedMessage.text;
|
|
4769
4915
|
// @ts-expect-error
|
|
@@ -4783,10 +4929,10 @@ var QuotedMessagePreview = function (props) {
|
|
|
4783
4929
|
};
|
|
4784
4930
|
|
|
4785
4931
|
var MessageInputFlat = function () {
|
|
4786
|
-
var _a = useChannelStateContext(), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads, quotedMessage = _a.quotedMessage;
|
|
4787
|
-
var t = useTranslationContext().t;
|
|
4788
|
-
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;
|
|
4789
|
-
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;
|
|
4932
|
+
var _a = useChannelStateContext('MessageInputFlat'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads, quotedMessage = _a.quotedMessage;
|
|
4933
|
+
var t = useTranslationContext('MessageInputFlat').t;
|
|
4934
|
+
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;
|
|
4935
|
+
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;
|
|
4790
4936
|
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) },
|
|
4791
4937
|
React__default['default'].createElement(reactFileUtils.ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads },
|
|
4792
4938
|
quotedMessage && React__default['default'].createElement(QuotedMessagePreview$1, { quotedMessage: quotedMessage }),
|
|
@@ -4809,13 +4955,104 @@ var MessageInputFlat = function () {
|
|
|
4809
4955
|
!cooldownRemaining && React__default['default'].createElement(SendButton$1, { sendMessage: handleSubmit })))));
|
|
4810
4956
|
};
|
|
4811
4957
|
|
|
4958
|
+
var useCreateMessageInputContext = function (value) {
|
|
4959
|
+
var additionalTextareaProps = value.additionalTextareaProps, attachments = value.attachments, autocompleteTriggers = value.autocompleteTriggers, clearEditingState = value.clearEditingState, closeCommandsList = value.closeCommandsList, closeEmojiPicker = value.closeEmojiPicker, 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, 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;
|
|
4960
|
+
var editing = message === null || message === void 0 ? void 0 : message.editing;
|
|
4961
|
+
var fileUploadsValue = Object.entries(fileUploads)
|
|
4962
|
+
// eslint-disable-next-line
|
|
4963
|
+
.map(function (_a) {
|
|
4964
|
+
_a[0]; var value = _a[1];
|
|
4965
|
+
return value.state;
|
|
4966
|
+
})
|
|
4967
|
+
.join();
|
|
4968
|
+
var imageUploadsValue = Object.entries(imageUploads)
|
|
4969
|
+
// eslint-disable-next-line
|
|
4970
|
+
.map(function (_a) {
|
|
4971
|
+
_a[0]; var value = _a[1];
|
|
4972
|
+
return value.state;
|
|
4973
|
+
})
|
|
4974
|
+
.join();
|
|
4975
|
+
var mentionedUsersLength = mentioned_users.length;
|
|
4976
|
+
var parentId = parent === null || parent === void 0 ? void 0 : parent.id;
|
|
4977
|
+
var messageInputContext = React.useMemo(function () { return ({
|
|
4978
|
+
additionalTextareaProps: additionalTextareaProps,
|
|
4979
|
+
attachments: attachments,
|
|
4980
|
+
autocompleteTriggers: autocompleteTriggers,
|
|
4981
|
+
clearEditingState: clearEditingState,
|
|
4982
|
+
closeCommandsList: closeCommandsList,
|
|
4983
|
+
closeEmojiPicker: closeEmojiPicker,
|
|
4984
|
+
cooldownInterval: cooldownInterval,
|
|
4985
|
+
cooldownRemaining: cooldownRemaining,
|
|
4986
|
+
disabled: disabled,
|
|
4987
|
+
disableMentions: disableMentions,
|
|
4988
|
+
doFileUploadRequest: doFileUploadRequest,
|
|
4989
|
+
doImageUploadRequest: doImageUploadRequest,
|
|
4990
|
+
emojiIndex: emojiIndex,
|
|
4991
|
+
emojiPickerIsOpen: emojiPickerIsOpen,
|
|
4992
|
+
emojiPickerRef: emojiPickerRef,
|
|
4993
|
+
errorHandler: errorHandler,
|
|
4994
|
+
fileOrder: fileOrder,
|
|
4995
|
+
fileUploads: fileUploads,
|
|
4996
|
+
focus: focus,
|
|
4997
|
+
grow: grow,
|
|
4998
|
+
handleChange: handleChange,
|
|
4999
|
+
handleEmojiKeyDown: handleEmojiKeyDown,
|
|
5000
|
+
handleSubmit: handleSubmit,
|
|
5001
|
+
imageOrder: imageOrder,
|
|
5002
|
+
imageUploads: imageUploads,
|
|
5003
|
+
insertText: insertText,
|
|
5004
|
+
isUploadEnabled: isUploadEnabled,
|
|
5005
|
+
keycodeSubmitKeys: keycodeSubmitKeys,
|
|
5006
|
+
maxFilesLeft: maxFilesLeft,
|
|
5007
|
+
maxRows: maxRows,
|
|
5008
|
+
mentionAllAppUsers: mentionAllAppUsers,
|
|
5009
|
+
mentioned_users: mentioned_users,
|
|
5010
|
+
mentionQueryParams: mentionQueryParams,
|
|
5011
|
+
message: message,
|
|
5012
|
+
noFiles: noFiles,
|
|
5013
|
+
numberOfUploads: numberOfUploads,
|
|
5014
|
+
onPaste: onPaste,
|
|
5015
|
+
onSelectEmoji: onSelectEmoji,
|
|
5016
|
+
onSelectUser: onSelectUser,
|
|
5017
|
+
openCommandsList: openCommandsList,
|
|
5018
|
+
openEmojiPicker: openEmojiPicker,
|
|
5019
|
+
overrideSubmitHandler: overrideSubmitHandler,
|
|
5020
|
+
parent: parent,
|
|
5021
|
+
publishTypingEvent: publishTypingEvent,
|
|
5022
|
+
removeFile: removeFile,
|
|
5023
|
+
removeImage: removeImage,
|
|
5024
|
+
setCooldownRemaining: setCooldownRemaining,
|
|
5025
|
+
setText: setText,
|
|
5026
|
+
showCommandsList: showCommandsList,
|
|
5027
|
+
text: text,
|
|
5028
|
+
textareaRef: textareaRef,
|
|
5029
|
+
uploadFile: uploadFile,
|
|
5030
|
+
uploadImage: uploadImage,
|
|
5031
|
+
uploadNewFiles: uploadNewFiles,
|
|
5032
|
+
useMentionsTransliteration: useMentionsTransliteration,
|
|
5033
|
+
}); }, [
|
|
5034
|
+
cooldownInterval,
|
|
5035
|
+
cooldownRemaining,
|
|
5036
|
+
editing,
|
|
5037
|
+
emojiPickerIsOpen,
|
|
5038
|
+
fileUploadsValue,
|
|
5039
|
+
imageUploadsValue,
|
|
5040
|
+
isUploadEnabled,
|
|
5041
|
+
mentionedUsersLength,
|
|
5042
|
+
parentId,
|
|
5043
|
+
publishTypingEvent,
|
|
5044
|
+
text,
|
|
5045
|
+
]);
|
|
5046
|
+
return messageInputContext;
|
|
5047
|
+
};
|
|
5048
|
+
|
|
4812
5049
|
var UnMemoizedMessageInput = function (props) {
|
|
4813
5050
|
var PropInput = props.Input;
|
|
4814
|
-
var _a = useComponentContext(), ContextInput = _a.Input, _b = _a.TriggerProvider, TriggerProvider = _b === void 0 ? DefaultTriggerProvider : _b;
|
|
5051
|
+
var _a = useComponentContext('MessageInput'), ContextInput = _a.Input, _b = _a.TriggerProvider, TriggerProvider = _b === void 0 ? DefaultTriggerProvider : _b;
|
|
4815
5052
|
var Input = PropInput || ContextInput || MessageInputFlat;
|
|
4816
5053
|
var messageInputState = useMessageInputState(props);
|
|
4817
5054
|
var cooldownTimerState = useCooldownTimer();
|
|
4818
|
-
var messageInputContextValue = __assign(__assign(__assign({}, cooldownTimerState), messageInputState), props);
|
|
5055
|
+
var messageInputContextValue = useCreateMessageInputContext(__assign(__assign(__assign({}, cooldownTimerState), messageInputState), props));
|
|
4819
5056
|
return (React__default['default'].createElement(MessageInputContextProvider, { value: messageInputContextValue },
|
|
4820
5057
|
React__default['default'].createElement(TriggerProvider, null,
|
|
4821
5058
|
React__default['default'].createElement(Input, null))));
|
|
@@ -4826,10 +5063,10 @@ var UnMemoizedMessageInput = function (props) {
|
|
|
4826
5063
|
var MessageInput = React__default['default'].memo(UnMemoizedMessageInput);
|
|
4827
5064
|
|
|
4828
5065
|
var MessageInputSmall = function () {
|
|
4829
|
-
var _a = useChannelStateContext(), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads;
|
|
4830
|
-
var t = useTranslationContext().t;
|
|
4831
|
-
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;
|
|
4832
|
-
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;
|
|
5066
|
+
var _a = useChannelStateContext('MessageInputSmall'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads;
|
|
5067
|
+
var t = useTranslationContext('MessageInputSmall').t;
|
|
5068
|
+
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;
|
|
5069
|
+
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;
|
|
4833
5070
|
return (React__default['default'].createElement("div", { className: 'str-chat__small-message-input__wrapper' },
|
|
4834
5071
|
React__default['default'].createElement(reactFileUtils.ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads },
|
|
4835
5072
|
React__default['default'].createElement("div", { className: "str-chat__small-message-input " + (SendButton$1 ? 'str-chat__small-message-input--send-button-active' : null) },
|
|
@@ -4869,14 +5106,14 @@ var MMLReact = React__default['default'].lazy(function () { return __awaiter(voi
|
|
|
4869
5106
|
*/
|
|
4870
5107
|
var MML = function (props) {
|
|
4871
5108
|
var actionHandler = props.actionHandler, _a = props.align, align = _a === void 0 ? 'right' : _a, source = props.source;
|
|
4872
|
-
var theme = useChatContext().theme;
|
|
5109
|
+
var theme = useChatContext('MML').theme;
|
|
4873
5110
|
return (React__default['default'].createElement(React.Suspense, { fallback: null },
|
|
4874
5111
|
React__default['default'].createElement(MMLReact, { className: "mml-align-" + align, Loading: null, onSubmit: actionHandler, source: source, Success: null, theme: (theme || '').replace(' ', '-') })));
|
|
4875
5112
|
};
|
|
4876
5113
|
|
|
4877
5114
|
var Modal = function (props) {
|
|
4878
5115
|
var children = props.children, onClose = props.onClose, open = props.open;
|
|
4879
|
-
var t = useTranslationContext().t;
|
|
5116
|
+
var t = useTranslationContext('Modal').t;
|
|
4880
5117
|
var innerRef = React.useRef(null);
|
|
4881
5118
|
var handleClick = function (event) {
|
|
4882
5119
|
var _a;
|
|
@@ -4916,9 +5153,9 @@ var isMutableRef = function (ref) {
|
|
|
4916
5153
|
var UnMemoizedReactionSelector = React__default['default'].forwardRef(function (props, ref) {
|
|
4917
5154
|
var _a;
|
|
4918
5155
|
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;
|
|
4919
|
-
var contextAvatar = useComponentContext().Avatar;
|
|
4920
|
-
var _e = useEmojiContext(), Emoji = _e.Emoji, emojiConfig = _e.emojiConfig;
|
|
4921
|
-
var _f = useMessageContext(), contextHandleReaction = _f.handleReaction, message = _f.message;
|
|
5156
|
+
var contextAvatar = useComponentContext('ReactionSelector').Avatar;
|
|
5157
|
+
var _e = useEmojiContext('ReactionSelector'), Emoji = _e.Emoji, emojiConfig = _e.emojiConfig;
|
|
5158
|
+
var _f = useMessageContext('ReactionSelector'), contextHandleReaction = _f.handleReaction, message = _f.message;
|
|
4922
5159
|
var _g = emojiConfig || {}, defaultMinimalEmojis = _g.defaultMinimalEmojis, fullEmojiData = _g.emojiData, emojiSetDef = _g.emojiSetDef;
|
|
4923
5160
|
var Avatar$1 = propAvatar || contextAvatar || Avatar;
|
|
4924
5161
|
var handleReaction = propHandleReaction || contextHandleReaction;
|
|
@@ -4998,8 +5235,8 @@ var ReactionSelector = React__default['default'].memo(UnMemoizedReactionSelector
|
|
|
4998
5235
|
|
|
4999
5236
|
var UnMemoizedReactionsList = function (props) {
|
|
5000
5237
|
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;
|
|
5001
|
-
var _b = useEmojiContext(), Emoji = _b.Emoji, emojiConfig = _b.emojiConfig;
|
|
5002
|
-
var _c = useMessageContext(), message = _c.message, onReactionListClick = _c.onReactionListClick;
|
|
5238
|
+
var _b = useEmojiContext('ReactionsList'), Emoji = _b.Emoji, emojiConfig = _b.emojiConfig;
|
|
5239
|
+
var _c = useMessageContext('ReactionsList'), message = _c.message, onReactionListClick = _c.onReactionListClick;
|
|
5003
5240
|
var _d = emojiConfig || {}, defaultMinimalEmojis = _d.defaultMinimalEmojis, fullEmojiData = _d.emojiData, emojiSetDef = _d.emojiSetDef;
|
|
5004
5241
|
var reactions = propReactions || message.latest_reactions || [];
|
|
5005
5242
|
var reactionCounts = propReactionCounts || message.reaction_counts || {};
|
|
@@ -5057,8 +5294,8 @@ var ReactionsList = React__default['default'].memo(UnMemoizedReactionsList);
|
|
|
5057
5294
|
|
|
5058
5295
|
var UnMemoizedSimpleReactionsList = function (props) {
|
|
5059
5296
|
var _a = props.additionalEmojiProps, additionalEmojiProps = _a === void 0 ? {} : _a, propHandleReaction = props.handleReaction, propReactionCounts = props.reaction_counts, propReactionOptions = props.reactionOptions, propReactions = props.reactions;
|
|
5060
|
-
var _b = useEmojiContext(), Emoji = _b.Emoji, emojiConfig = _b.emojiConfig;
|
|
5061
|
-
var _c = useMessageContext(), contextHandleReaction = _c.handleReaction, message = _c.message;
|
|
5297
|
+
var _b = useEmojiContext('SimpleReactionsList'), Emoji = _b.Emoji, emojiConfig = _b.emojiConfig;
|
|
5298
|
+
var _c = useMessageContext('SimpleReactionsList'), contextHandleReaction = _c.handleReaction, message = _c.message;
|
|
5062
5299
|
var _d = emojiConfig || {}, defaultMinimalEmojis = _d.defaultMinimalEmojis, fullEmojiData = _d.emojiData, emojiSetDef = _d.emojiSetDef;
|
|
5063
5300
|
var _e = React.useState(undefined), tooltipReactionType = _e[0], setTooltipReactionType = _e[1];
|
|
5064
5301
|
var handleReaction = propHandleReaction || contextHandleReaction;
|
|
@@ -5130,7 +5367,7 @@ var SimpleReactionsList = React__default['default'].memo(UnMemoizedSimpleReactio
|
|
|
5130
5367
|
var MessageSimpleWithContext = function (props) {
|
|
5131
5368
|
var _a;
|
|
5132
5369
|
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;
|
|
5133
|
-
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;
|
|
5370
|
+
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;
|
|
5134
5371
|
var messageWrapperRef = React.useRef(null);
|
|
5135
5372
|
var hasAttachment = messageHasAttachments(message);
|
|
5136
5373
|
var hasReactions = messageHasReactions(message);
|
|
@@ -5170,16 +5407,23 @@ var MemoizedMessageSimple = React__default['default'].memo(MessageSimpleWithCont
|
|
|
5170
5407
|
* The default UI component that renders a message and receives functionality and logic from the MessageContext.
|
|
5171
5408
|
*/
|
|
5172
5409
|
var MessageSimple = function (props) {
|
|
5173
|
-
var messageContext = useMessageContext();
|
|
5410
|
+
var messageContext = useMessageContext('MessageSimple');
|
|
5174
5411
|
return React__default['default'].createElement(MemoizedMessageSimple, __assign({}, messageContext, props));
|
|
5175
5412
|
};
|
|
5176
5413
|
|
|
5177
|
-
var TypingContext = React__default['default'].createContext(
|
|
5414
|
+
var TypingContext = React__default['default'].createContext(undefined);
|
|
5178
5415
|
var TypingProvider = function (_a) {
|
|
5179
5416
|
var children = _a.children, value = _a.value;
|
|
5180
5417
|
return (React__default['default'].createElement(TypingContext.Provider, { value: value }, children));
|
|
5181
5418
|
};
|
|
5182
|
-
var useTypingContext = function () {
|
|
5419
|
+
var useTypingContext = function (componentName) {
|
|
5420
|
+
var contextValue = React.useContext(TypingContext);
|
|
5421
|
+
if (!contextValue) {
|
|
5422
|
+
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.");
|
|
5423
|
+
return {};
|
|
5424
|
+
}
|
|
5425
|
+
return contextValue;
|
|
5426
|
+
};
|
|
5183
5427
|
/**
|
|
5184
5428
|
* Typescript currently does not support partial inference, so if TypingContext
|
|
5185
5429
|
* typing is desired while using the HOC withTypingContext, the Props for the
|
|
@@ -5200,39 +5444,39 @@ var compressed=true;var categories=[{id:"people",name:"Smileys & People",emojis:
|
|
|
5200
5444
|
|
|
5201
5445
|
var UnMemoizedChannel = function (props) {
|
|
5202
5446
|
var propsChannel = props.channel, _a = props.EmptyPlaceholder, EmptyPlaceholder = _a === void 0 ? null : _a;
|
|
5203
|
-
var contextChannel = useChatContext().channel;
|
|
5447
|
+
var contextChannel = useChatContext('Channel').channel;
|
|
5204
5448
|
var channel = propsChannel || contextChannel;
|
|
5205
5449
|
if (!(channel === null || channel === void 0 ? void 0 : channel.cid))
|
|
5206
5450
|
return EmptyPlaceholder;
|
|
5207
5451
|
return React__default['default'].createElement(ChannelInner, __assign({}, props, { channel: channel, key: channel.cid }));
|
|
5208
5452
|
};
|
|
5209
5453
|
var ChannelInner = function (props) {
|
|
5210
|
-
var
|
|
5211
|
-
var
|
|
5212
|
-
var
|
|
5213
|
-
var
|
|
5214
|
-
var _g = React.useState(),
|
|
5454
|
+
var _a;
|
|
5455
|
+
var acceptedFiles = props.acceptedFiles, activeUnreadHandler = props.activeUnreadHandler, channel = props.channel, children = props.children, doMarkReadRequest = props.doMarkReadRequest, doSendMessageRequest = props.doSendMessageRequest, doUpdateMessageRequest = props.doUpdateMessageRequest, _b = props.emojiData, emojiData = _b === void 0 ? defaultEmojiData : _b, _c = props.LoadingErrorIndicator, LoadingErrorIndicator$1 = _c === void 0 ? LoadingErrorIndicator : _c, _d = props.LoadingIndicator, LoadingIndicator$1 = _d === void 0 ? LoadingIndicator : _d, maxNumberOfFiles = props.maxNumberOfFiles, _e = props.multipleUploads, multipleUploads = _e === void 0 ? true : _e, onMentionsClick = props.onMentionsClick, onMentionsHover = props.onMentionsHover, skipMessageDataMemoization = props.skipMessageDataMemoization;
|
|
5456
|
+
var _f = useChatContext('Channel'), client = _f.client, customClasses = _f.customClasses, mutes = _f.mutes, theme = _f.theme, useImageFlagEmojisOnWindows = _f.useImageFlagEmojisOnWindows;
|
|
5457
|
+
var t = useTranslationContext('Channel').t;
|
|
5458
|
+
var _g = React.useState(channel.getConfig()), channelConfig = _g[0], setChannelConfig = _g[1];
|
|
5459
|
+
var _h = React.useState([]), notifications = _h[0], setNotifications = _h[1];
|
|
5460
|
+
var _j = React.useState(), quotedMessage = _j[0], setQuotedMessage = _j[1];
|
|
5215
5461
|
var notificationTimeouts = [];
|
|
5216
|
-
var
|
|
5462
|
+
var _k = React.useReducer(channelReducer, initialState), state = _k[0], dispatch = _k[1];
|
|
5217
5463
|
var isMounted = useIsMounted();
|
|
5218
5464
|
var originalTitle = React.useRef('');
|
|
5219
5465
|
var lastRead = React.useRef(new Date());
|
|
5220
5466
|
var online = React.useRef(true);
|
|
5221
|
-
var
|
|
5467
|
+
var channelCapabilitiesArray = (_a = channel.data) === null || _a === void 0 ? void 0 : _a.own_capabilities;
|
|
5222
5468
|
var emojiConfig = {
|
|
5223
5469
|
commonEmoji: commonEmoji,
|
|
5224
5470
|
defaultMinimalEmojis: defaultMinimalEmojis,
|
|
5225
5471
|
emojiData: emojiData,
|
|
5226
5472
|
emojiSetDef: emojiSetDef,
|
|
5227
5473
|
};
|
|
5228
|
-
var throttledCopyStateFromChannel =
|
|
5229
|
-
|
|
5230
|
-
|
|
5231
|
-
|
|
5232
|
-
|
|
5233
|
-
|
|
5234
|
-
var _a;
|
|
5235
|
-
if (!channel || channel.disconnected || !((_a = channel.getConfig()) === null || _a === void 0 ? void 0 : _a.read_events)) {
|
|
5474
|
+
var throttledCopyStateFromChannel = throttle__default['default'](function () { return dispatch({ channel: channel, type: 'copyStateFromChannelOnEvent' }); }, 500, {
|
|
5475
|
+
leading: true,
|
|
5476
|
+
trailing: true,
|
|
5477
|
+
});
|
|
5478
|
+
var markRead = function () {
|
|
5479
|
+
if (channel.disconnected || !(channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.read_events)) {
|
|
5236
5480
|
return;
|
|
5237
5481
|
}
|
|
5238
5482
|
lastRead.current = new Date();
|
|
@@ -5242,13 +5486,16 @@ var ChannelInner = function (props) {
|
|
|
5242
5486
|
else {
|
|
5243
5487
|
streamChat.logChatPromiseExecution(channel.markRead(), 'mark read');
|
|
5244
5488
|
}
|
|
5245
|
-
if (
|
|
5489
|
+
if (activeUnreadHandler) {
|
|
5490
|
+
activeUnreadHandler(0, originalTitle.current);
|
|
5491
|
+
}
|
|
5492
|
+
else if (originalTitle.current) {
|
|
5246
5493
|
document.title = originalTitle.current;
|
|
5247
5494
|
}
|
|
5248
|
-
}
|
|
5249
|
-
var markReadThrottled =
|
|
5250
|
-
var handleEvent =
|
|
5251
|
-
var _a, _b, _c, _d
|
|
5495
|
+
};
|
|
5496
|
+
var markReadThrottled = throttle__default['default'](markRead, 500, { leading: true, trailing: true });
|
|
5497
|
+
var handleEvent = function (event) {
|
|
5498
|
+
var _a, _b, _c, _d;
|
|
5252
5499
|
if (event.message) {
|
|
5253
5500
|
dispatch({
|
|
5254
5501
|
channel: channel,
|
|
@@ -5256,12 +5503,10 @@ var ChannelInner = function (props) {
|
|
|
5256
5503
|
type: 'updateThreadOnEvent',
|
|
5257
5504
|
});
|
|
5258
5505
|
}
|
|
5259
|
-
if (event.type === '
|
|
5260
|
-
dispatch({
|
|
5261
|
-
channel: channel,
|
|
5262
|
-
type: 'setTyping',
|
|
5263
|
-
});
|
|
5506
|
+
if (event.type === 'user.watching.start' || event.type === 'user.watching.stop')
|
|
5264
5507
|
return;
|
|
5508
|
+
if (event.type === 'typing.start' || event.type === 'typing.stop') {
|
|
5509
|
+
return dispatch({ channel: channel, type: 'setTyping' });
|
|
5265
5510
|
}
|
|
5266
5511
|
if (event.type === 'connection.changed' && typeof event.online === 'boolean') {
|
|
5267
5512
|
online.current = event.online;
|
|
@@ -5275,7 +5520,7 @@ var ChannelInner = function (props) {
|
|
|
5275
5520
|
if (!document.hidden) {
|
|
5276
5521
|
markReadThrottled();
|
|
5277
5522
|
}
|
|
5278
|
-
else if ((
|
|
5523
|
+
else if ((channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.read_events) && !channel.muteStatus().muted) {
|
|
5279
5524
|
var unread = channel.countUnread(lastRead.current);
|
|
5280
5525
|
if (activeUnreadHandler) {
|
|
5281
5526
|
activeUnreadHandler(unread, originalTitle.current);
|
|
@@ -5287,28 +5532,29 @@ var ChannelInner = function (props) {
|
|
|
5287
5532
|
}
|
|
5288
5533
|
}
|
|
5289
5534
|
throttledCopyStateFromChannel();
|
|
5290
|
-
}
|
|
5535
|
+
};
|
|
5291
5536
|
// useLayoutEffect here to prevent spinner. Use Suspense when it is available in stable release
|
|
5292
5537
|
React.useLayoutEffect(function () {
|
|
5293
5538
|
var errored = false;
|
|
5294
5539
|
var done = false;
|
|
5295
5540
|
var onVisibilityChange = function () {
|
|
5296
|
-
if (!document.hidden)
|
|
5541
|
+
if (!document.hidden)
|
|
5297
5542
|
markRead();
|
|
5298
|
-
}
|
|
5299
5543
|
};
|
|
5300
5544
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
5301
|
-
var e_1;
|
|
5545
|
+
var config, e_1;
|
|
5302
5546
|
return __generator(this, function (_a) {
|
|
5303
5547
|
switch (_a.label) {
|
|
5304
5548
|
case 0:
|
|
5305
|
-
if (
|
|
5549
|
+
if (!!channel.initialized) return [3 /*break*/, 4];
|
|
5306
5550
|
_a.label = 1;
|
|
5307
5551
|
case 1:
|
|
5308
5552
|
_a.trys.push([1, 3, , 4]);
|
|
5309
5553
|
return [4 /*yield*/, channel.watch()];
|
|
5310
5554
|
case 2:
|
|
5311
5555
|
_a.sent();
|
|
5556
|
+
config = channel.getConfig();
|
|
5557
|
+
setChannelConfig(config);
|
|
5312
5558
|
return [3 /*break*/, 4];
|
|
5313
5559
|
case 3:
|
|
5314
5560
|
e_1 = _a.sent();
|
|
@@ -5318,7 +5564,7 @@ var ChannelInner = function (props) {
|
|
|
5318
5564
|
case 4:
|
|
5319
5565
|
done = true;
|
|
5320
5566
|
originalTitle.current = document.title;
|
|
5321
|
-
if (
|
|
5567
|
+
if (!errored) {
|
|
5322
5568
|
dispatch({ channel: channel, type: 'initStateFromChannel' });
|
|
5323
5569
|
if (channel.countUnread() > 0)
|
|
5324
5570
|
markRead();
|
|
@@ -5338,15 +5584,14 @@ var ChannelInner = function (props) {
|
|
|
5338
5584
|
if (errored || !done)
|
|
5339
5585
|
return;
|
|
5340
5586
|
document.removeEventListener('visibilitychange', onVisibilityChange);
|
|
5341
|
-
|
|
5342
|
-
channel.off(handleEvent);
|
|
5587
|
+
channel === null || channel === void 0 ? void 0 : channel.off(handleEvent);
|
|
5343
5588
|
client.off('connection.changed', handleEvent);
|
|
5344
5589
|
client.off('connection.recovered', handleEvent);
|
|
5345
5590
|
client.off('user.updated', handleEvent);
|
|
5346
5591
|
client.off('user.deleted', handleEvent);
|
|
5347
5592
|
notificationTimeouts.forEach(clearTimeout);
|
|
5348
5593
|
};
|
|
5349
|
-
}, [channel
|
|
5594
|
+
}, [channel.cid]);
|
|
5350
5595
|
React.useEffect(function () {
|
|
5351
5596
|
var _a;
|
|
5352
5597
|
if (state.thread && ((_a = state.messages) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
@@ -5373,17 +5618,15 @@ var ChannelInner = function (props) {
|
|
|
5373
5618
|
}, 5000);
|
|
5374
5619
|
notificationTimeouts.push(timeout);
|
|
5375
5620
|
};
|
|
5376
|
-
var loadMoreFinished =
|
|
5621
|
+
var loadMoreFinished = debounce__default['default'](function (hasMore, messages) {
|
|
5377
5622
|
if (!isMounted.current)
|
|
5378
5623
|
return;
|
|
5379
5624
|
dispatch({ hasMore: hasMore, messages: messages, type: 'loadMoreFinished' });
|
|
5380
5625
|
}, 2000, {
|
|
5381
5626
|
leading: true,
|
|
5382
5627
|
trailing: true,
|
|
5383
|
-
})
|
|
5384
|
-
var loadMore =
|
|
5385
|
-
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
5386
|
-
function (limit) {
|
|
5628
|
+
});
|
|
5629
|
+
var loadMore = function (limit) {
|
|
5387
5630
|
if (limit === void 0) { limit = 100; }
|
|
5388
5631
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
5389
5632
|
var oldestMessage, oldestID, perPage, queryResponse, e_2, hasMoreMessages;
|
|
@@ -5391,7 +5634,7 @@ var ChannelInner = function (props) {
|
|
|
5391
5634
|
return __generator(this, function (_b) {
|
|
5392
5635
|
switch (_b.label) {
|
|
5393
5636
|
case 0:
|
|
5394
|
-
if (!online.current || !window.navigator.onLine
|
|
5637
|
+
if (!online.current || !window.navigator.onLine)
|
|
5395
5638
|
return [2 /*return*/, 0];
|
|
5396
5639
|
oldestMessage = (_a = state === null || state === void 0 ? void 0 : state.messages) === null || _a === void 0 ? void 0 : _a[0];
|
|
5397
5640
|
if (state.loadingMore || (oldestMessage === null || oldestMessage === void 0 ? void 0 : oldestMessage.status) !== 'received')
|
|
@@ -5426,27 +5669,22 @@ var ChannelInner = function (props) {
|
|
|
5426
5669
|
}
|
|
5427
5670
|
});
|
|
5428
5671
|
});
|
|
5429
|
-
}
|
|
5430
|
-
var updateMessage =
|
|
5431
|
-
|
|
5432
|
-
return;
|
|
5433
|
-
// adds the message to the local channel state..
|
|
5434
|
-
// this adds to both the main channel state as well as any reply threads
|
|
5672
|
+
};
|
|
5673
|
+
var updateMessage = function (updatedMessage) {
|
|
5674
|
+
// add the message to the local channel state
|
|
5435
5675
|
channel.state.addMessageSorted(updatedMessage, true);
|
|
5436
5676
|
dispatch({
|
|
5437
5677
|
channel: channel,
|
|
5438
5678
|
parentId: state.thread && updatedMessage.parent_id,
|
|
5439
5679
|
type: 'copyMessagesFromChannel',
|
|
5440
5680
|
});
|
|
5441
|
-
}
|
|
5681
|
+
};
|
|
5442
5682
|
var isUserResponseArray = function (output) { var _a; return ((_a = output[0]) === null || _a === void 0 ? void 0 : _a.id) != null; };
|
|
5443
|
-
var doSendMessage =
|
|
5683
|
+
var doSendMessage = function (message, customMessageData) { return __awaiter(void 0, void 0, void 0, function () {
|
|
5444
5684
|
var attachments, id, _a, mentioned_users, parent_id, text, mentions, messageData, messageResponse, error_1, stringError, parsedError;
|
|
5445
5685
|
return __generator(this, function (_b) {
|
|
5446
5686
|
switch (_b.label) {
|
|
5447
5687
|
case 0:
|
|
5448
|
-
if (!channel)
|
|
5449
|
-
return [2 /*return*/];
|
|
5450
5688
|
attachments = message.attachments, id = message.id, _a = message.mentioned_users, mentioned_users = _a === void 0 ? [] : _a, parent_id = message.parent_id, text = message.text;
|
|
5451
5689
|
mentions = isUserResponseArray(mentioned_users)
|
|
5452
5690
|
? mentioned_users.map(function (_a) {
|
|
@@ -5470,7 +5708,7 @@ var ChannelInner = function (props) {
|
|
|
5470
5708
|
_b.label = 5;
|
|
5471
5709
|
case 5:
|
|
5472
5710
|
// replace it after send is completed
|
|
5473
|
-
if (messageResponse
|
|
5711
|
+
if (messageResponse === null || messageResponse === void 0 ? void 0 : messageResponse.message) {
|
|
5474
5712
|
updateMessage(__assign(__assign({}, messageResponse.message), { status: 'received' }));
|
|
5475
5713
|
}
|
|
5476
5714
|
if (quotedMessage)
|
|
@@ -5485,25 +5723,20 @@ var ChannelInner = function (props) {
|
|
|
5485
5723
|
case 7: return [2 /*return*/];
|
|
5486
5724
|
}
|
|
5487
5725
|
});
|
|
5488
|
-
}); }
|
|
5489
|
-
var createMessagePreview =
|
|
5490
|
-
// create a preview of the message
|
|
5726
|
+
}); };
|
|
5727
|
+
var createMessagePreview = function (text, attachments, parent, mentioned_users) {
|
|
5491
5728
|
var clientSideID = client.userID + "-" + uuid.v4();
|
|
5492
5729
|
return __assign({ __html: text, attachments: attachments, created_at: new Date(), html: text, id: clientSideID, mentioned_users: mentioned_users, reactions: [], status: 'sending', text: text, type: 'regular', user: client.user }, ((parent === null || parent === void 0 ? void 0 : parent.id) ? { parent_id: parent.id } : null));
|
|
5493
|
-
}
|
|
5494
|
-
var sendMessage =
|
|
5730
|
+
};
|
|
5731
|
+
var sendMessage = function (_a, customMessageData) {
|
|
5495
5732
|
var _b = _a.attachments, attachments = _b === void 0 ? [] : _b, _c = _a.mentioned_users, mentioned_users = _c === void 0 ? [] : _c, _d = _a.parent, parent = _d === void 0 ? undefined : _d, _e = _a.text, text = _e === void 0 ? '' : _e;
|
|
5496
5733
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
5497
5734
|
var messagePreview;
|
|
5498
5735
|
return __generator(this, function (_f) {
|
|
5499
5736
|
switch (_f.label) {
|
|
5500
5737
|
case 0:
|
|
5501
|
-
if (!channel)
|
|
5502
|
-
return [2 /*return*/];
|
|
5503
|
-
// remove error messages upon submit
|
|
5504
5738
|
channel.state.filterErrorMessages();
|
|
5505
5739
|
messagePreview = createMessagePreview(text, attachments, parent, mentioned_users);
|
|
5506
|
-
// first we add the message to the UI
|
|
5507
5740
|
updateMessage(messagePreview);
|
|
5508
5741
|
return [4 /*yield*/, doSendMessage(messagePreview, customMessageData)];
|
|
5509
5742
|
case 1:
|
|
@@ -5512,62 +5745,55 @@ var ChannelInner = function (props) {
|
|
|
5512
5745
|
}
|
|
5513
5746
|
});
|
|
5514
5747
|
});
|
|
5515
|
-
}
|
|
5516
|
-
var retrySendMessage =
|
|
5748
|
+
};
|
|
5749
|
+
var retrySendMessage = function (message) { return __awaiter(void 0, void 0, void 0, function () {
|
|
5517
5750
|
return __generator(this, function (_a) {
|
|
5518
5751
|
switch (_a.label) {
|
|
5519
5752
|
case 0:
|
|
5520
|
-
// set the message status to sending
|
|
5521
5753
|
updateMessage(__assign(__assign({}, message), { errorStatusCode: undefined, status: 'sending' }));
|
|
5522
|
-
// actually try to send the message...
|
|
5523
5754
|
return [4 /*yield*/, doSendMessage(message)];
|
|
5524
5755
|
case 1:
|
|
5525
|
-
// actually try to send the message...
|
|
5526
5756
|
_a.sent();
|
|
5527
5757
|
return [2 /*return*/];
|
|
5528
5758
|
}
|
|
5529
5759
|
});
|
|
5530
|
-
}); }
|
|
5531
|
-
var removeMessage =
|
|
5532
|
-
if (!channel)
|
|
5533
|
-
return;
|
|
5760
|
+
}); };
|
|
5761
|
+
var removeMessage = function (message) {
|
|
5534
5762
|
channel.state.removeMessage(message);
|
|
5535
5763
|
dispatch({
|
|
5536
5764
|
channel: channel,
|
|
5537
5765
|
parentId: state.thread && message.parent_id,
|
|
5538
5766
|
type: 'copyMessagesFromChannel',
|
|
5539
5767
|
});
|
|
5540
|
-
}
|
|
5768
|
+
};
|
|
5541
5769
|
/** THREAD */
|
|
5542
|
-
var openThread =
|
|
5543
|
-
|
|
5544
|
-
return;
|
|
5545
|
-
if (event && event.preventDefault) {
|
|
5546
|
-
event.preventDefault();
|
|
5547
|
-
}
|
|
5770
|
+
var openThread = function (message, event) {
|
|
5771
|
+
event.preventDefault();
|
|
5548
5772
|
dispatch({ channel: channel, message: message, type: 'openThread' });
|
|
5549
|
-
}
|
|
5550
|
-
var
|
|
5773
|
+
};
|
|
5774
|
+
var closeThread = function (event) {
|
|
5775
|
+
event.preventDefault();
|
|
5776
|
+
dispatch({ type: 'closeThread' });
|
|
5777
|
+
};
|
|
5778
|
+
var loadMoreThreadFinished = debounce__default['default'](function (threadHasMore, threadMessages) {
|
|
5551
5779
|
dispatch({
|
|
5552
5780
|
threadHasMore: threadHasMore,
|
|
5553
5781
|
threadMessages: threadMessages,
|
|
5554
5782
|
type: 'loadMoreThreadFinished',
|
|
5555
5783
|
});
|
|
5556
|
-
}, 2000, { leading: true, trailing: true })
|
|
5557
|
-
var loadMoreThread =
|
|
5784
|
+
}, 2000, { leading: true, trailing: true });
|
|
5785
|
+
var loadMoreThread = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
5558
5786
|
var parentID, oldMessages, oldestMessageID, limit, queryResponse, threadHasMoreMessages, newThreadMessages;
|
|
5559
5787
|
var _a;
|
|
5560
5788
|
return __generator(this, function (_b) {
|
|
5561
5789
|
switch (_b.label) {
|
|
5562
5790
|
case 0:
|
|
5563
|
-
|
|
5564
|
-
if (!channel || state.threadLoadingMore || !state.thread)
|
|
5791
|
+
if (state.threadLoadingMore || !state.thread)
|
|
5565
5792
|
return [2 /*return*/];
|
|
5566
5793
|
dispatch({ type: 'startLoadingThread' });
|
|
5567
5794
|
parentID = state.thread.id;
|
|
5568
5795
|
if (!parentID) {
|
|
5569
|
-
dispatch({ type: 'closeThread' });
|
|
5570
|
-
return [2 /*return*/];
|
|
5796
|
+
return [2 /*return*/, dispatch({ type: 'closeThread' })];
|
|
5571
5797
|
}
|
|
5572
5798
|
oldMessages = channel.state.threads[parentID] || [];
|
|
5573
5799
|
oldestMessageID = (_a = oldMessages[0]) === null || _a === void 0 ? void 0 : _a.id;
|
|
@@ -5583,7 +5809,7 @@ var ChannelInner = function (props) {
|
|
|
5583
5809
|
queryResponse = _b.sent();
|
|
5584
5810
|
threadHasMoreMessages = queryResponse.messages.length === limit;
|
|
5585
5811
|
newThreadMessages = channel.state.threads[parentID] || [];
|
|
5586
|
-
// next set loadingMore to false so we can start asking for more data
|
|
5812
|
+
// next set loadingMore to false so we can start asking for more data
|
|
5587
5813
|
loadMoreThreadFinished(threadHasMoreMessages, newThreadMessages);
|
|
5588
5814
|
return [3 /*break*/, 4];
|
|
5589
5815
|
case 3:
|
|
@@ -5593,18 +5819,12 @@ var ChannelInner = function (props) {
|
|
|
5593
5819
|
case 4: return [2 /*return*/];
|
|
5594
5820
|
}
|
|
5595
5821
|
});
|
|
5596
|
-
}); }
|
|
5597
|
-
var closeThread = React.useCallback(function (event) {
|
|
5598
|
-
if (event && event.preventDefault) {
|
|
5599
|
-
event.preventDefault();
|
|
5600
|
-
}
|
|
5601
|
-
dispatch({ type: 'closeThread' });
|
|
5602
|
-
}, []);
|
|
5822
|
+
}); };
|
|
5603
5823
|
var onMentionsHoverOrClick = useMentionsHandlers(onMentionsHover, onMentionsClick);
|
|
5604
5824
|
var editMessage = useEditMessageHandler(doUpdateMessageRequest);
|
|
5605
5825
|
var typing = state.typing, restState = __rest(state, ["typing"]);
|
|
5606
|
-
var channelStateContextValue = __assign(__assign({}, restState), { acceptedFiles: acceptedFiles, channel: channel, channelConfig: channelConfig, maxNumberOfFiles: maxNumberOfFiles, multipleUploads: multipleUploads, mutes: mutes, notifications: notifications, quotedMessage: quotedMessage, watcher_count: state.watcherCount });
|
|
5607
|
-
var channelActionContextValue = {
|
|
5826
|
+
var channelStateContextValue = useCreateChannelStateContext(__assign(__assign({}, restState), { acceptedFiles: acceptedFiles, channel: channel, channelCapabilitiesArray: channelCapabilitiesArray, channelConfig: channelConfig, maxNumberOfFiles: maxNumberOfFiles, multipleUploads: multipleUploads, mutes: mutes, notifications: notifications, quotedMessage: quotedMessage, watcher_count: state.watcherCount }));
|
|
5827
|
+
var channelActionContextValue = React.useMemo(function () { return ({
|
|
5608
5828
|
addNotification: addNotification,
|
|
5609
5829
|
closeThread: closeThread,
|
|
5610
5830
|
dispatch: dispatch,
|
|
@@ -5618,8 +5838,9 @@ var ChannelInner = function (props) {
|
|
|
5618
5838
|
retrySendMessage: retrySendMessage,
|
|
5619
5839
|
sendMessage: sendMessage,
|
|
5620
5840
|
setQuotedMessage: setQuotedMessage,
|
|
5841
|
+
skipMessageDataMemoization: skipMessageDataMemoization,
|
|
5621
5842
|
updateMessage: updateMessage,
|
|
5622
|
-
};
|
|
5843
|
+
}); }, [channel.cid, loadMore, quotedMessage]);
|
|
5623
5844
|
var componentContextValue = React.useMemo(function () { return ({
|
|
5624
5845
|
Attachment: props.Attachment || Attachment,
|
|
5625
5846
|
AutocompleteSuggestionHeader: props.AutocompleteSuggestionHeader,
|
|
@@ -5663,10 +5884,11 @@ var ChannelInner = function (props) {
|
|
|
5663
5884
|
EmojiIndex: props.EmojiIndex,
|
|
5664
5885
|
EmojiPicker: props.EmojiPicker,
|
|
5665
5886
|
}); }, []);
|
|
5666
|
-
var typingContextValue = {
|
|
5887
|
+
var typingContextValue = useCreateTypingContext({
|
|
5667
5888
|
typing: typing,
|
|
5668
|
-
};
|
|
5889
|
+
});
|
|
5669
5890
|
var chatClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.chat) || 'str-chat';
|
|
5891
|
+
var chatContainerClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.chatContainer) || 'str-chat__container';
|
|
5670
5892
|
var channelClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.channel) || 'str-chat-channel';
|
|
5671
5893
|
var windowsEmojiClass = useImageFlagEmojisOnWindows && navigator.userAgent.match(/Win/)
|
|
5672
5894
|
? 'str-chat--windows-flags'
|
|
@@ -5679,7 +5901,7 @@ var ChannelInner = function (props) {
|
|
|
5679
5901
|
return (React__default['default'].createElement("div", { className: chatClass + " " + channelClass + " " + theme },
|
|
5680
5902
|
React__default['default'].createElement(LoadingIndicator$1, { size: 25 })));
|
|
5681
5903
|
}
|
|
5682
|
-
if (!
|
|
5904
|
+
if (!channel.watch) {
|
|
5683
5905
|
return (React__default['default'].createElement("div", { className: chatClass + " " + channelClass + " " + theme },
|
|
5684
5906
|
React__default['default'].createElement("div", null, t('Channel Missing'))));
|
|
5685
5907
|
}
|
|
@@ -5689,7 +5911,7 @@ var ChannelInner = function (props) {
|
|
|
5689
5911
|
React__default['default'].createElement(ComponentProvider, { value: componentContextValue },
|
|
5690
5912
|
React__default['default'].createElement(EmojiProvider, { value: emojiContextValue },
|
|
5691
5913
|
React__default['default'].createElement(TypingProvider, { value: typingContextValue },
|
|
5692
|
-
React__default['default'].createElement("div", { className:
|
|
5914
|
+
React__default['default'].createElement("div", { className: "" + chatContainerClass }, children))))))));
|
|
5693
5915
|
};
|
|
5694
5916
|
/**
|
|
5695
5917
|
* A wrapper component that provides channel data and renders children.
|
|
@@ -5704,9 +5926,9 @@ var Channel = React__default['default'].memo(UnMemoizedChannel);
|
|
|
5704
5926
|
|
|
5705
5927
|
var UnMemoizedChannelHeader = function (props) {
|
|
5706
5928
|
var _a = props.Avatar, Avatar$1 = _a === void 0 ? Avatar : _a, propImage = props.image, live = props.live, title = props.title;
|
|
5707
|
-
var _b = useChannelStateContext(), channel = _b.channel, watcher_count = _b.watcher_count;
|
|
5708
|
-
var openMobileNav = useChatContext().openMobileNav;
|
|
5709
|
-
var t = useTranslationContext().t;
|
|
5929
|
+
var _b = useChannelStateContext('ChannelHeader'), channel = _b.channel, watcher_count = _b.watcher_count;
|
|
5930
|
+
var openMobileNav = useChatContext('ChannelHeader').openMobileNav;
|
|
5931
|
+
var t = useTranslationContext('ChannelHeader').t;
|
|
5710
5932
|
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;
|
|
5711
5933
|
var image = propImage || channelImage;
|
|
5712
5934
|
return (React__default['default'].createElement("div", { className: 'str-chat__header-livestream' },
|
|
@@ -5739,7 +5961,7 @@ var img = "data:image/svg+xml,%3c%3fxml version='1.0' encoding='UTF-8'%3f%3e%3cs
|
|
|
5739
5961
|
|
|
5740
5962
|
var UnMemoizedChatDown = function (props) {
|
|
5741
5963
|
var image = props.image, text = props.text, _a = props.type, type = _a === void 0 ? 'Error' : _a;
|
|
5742
|
-
var t = useTranslationContext().t;
|
|
5964
|
+
var t = useTranslationContext('ChatDown').t;
|
|
5743
5965
|
return (React__default['default'].createElement("div", { className: 'str-chat__down' },
|
|
5744
5966
|
React__default['default'].createElement(LoadingChannels, null),
|
|
5745
5967
|
React__default['default'].createElement("div", { className: 'str-chat__down-main' },
|
|
@@ -5768,7 +5990,7 @@ var ChannelListMessenger = function (props) {
|
|
|
5768
5990
|
};
|
|
5769
5991
|
|
|
5770
5992
|
var useChannelDeletedListener = function (setChannels, customHandler) {
|
|
5771
|
-
var client = useChatContext().client;
|
|
5993
|
+
var client = useChatContext('useChannelDeletedListener').client;
|
|
5772
5994
|
React.useEffect(function () {
|
|
5773
5995
|
var handleEvent = function (event) {
|
|
5774
5996
|
if (customHandler && typeof customHandler === 'function') {
|
|
@@ -5793,7 +6015,7 @@ var useChannelDeletedListener = function (setChannels, customHandler) {
|
|
|
5793
6015
|
};
|
|
5794
6016
|
|
|
5795
6017
|
var useChannelHiddenListener = function (setChannels, customHandler) {
|
|
5796
|
-
var client = useChatContext().client;
|
|
6018
|
+
var client = useChatContext('useChannelHiddenListener').client;
|
|
5797
6019
|
React.useEffect(function () {
|
|
5798
6020
|
var handleEvent = function (event) {
|
|
5799
6021
|
if (customHandler && typeof customHandler === 'function') {
|
|
@@ -5818,7 +6040,7 @@ var useChannelHiddenListener = function (setChannels, customHandler) {
|
|
|
5818
6040
|
};
|
|
5819
6041
|
|
|
5820
6042
|
var useChannelTruncatedListener = function (setChannels, customHandler, forceUpdate) {
|
|
5821
|
-
var client = useChatContext().client;
|
|
6043
|
+
var client = useChatContext('useChannelTruncatedListener').client;
|
|
5822
6044
|
React.useEffect(function () {
|
|
5823
6045
|
var handleEvent = function (event) {
|
|
5824
6046
|
setChannels(function (channels) { return __spreadArray([], channels); });
|
|
@@ -5837,7 +6059,7 @@ var useChannelTruncatedListener = function (setChannels, customHandler, forceUpd
|
|
|
5837
6059
|
};
|
|
5838
6060
|
|
|
5839
6061
|
var useChannelUpdatedListener = function (setChannels, customHandler, forceUpdate) {
|
|
5840
|
-
var client = useChatContext().client;
|
|
6062
|
+
var client = useChatContext('useChannelUpdatedListener').client;
|
|
5841
6063
|
React.useEffect(function () {
|
|
5842
6064
|
var handleEvent = function (event) {
|
|
5843
6065
|
setChannels(function (channels) {
|
|
@@ -5889,7 +6111,7 @@ var moveChannelUp = function (_a) {
|
|
|
5889
6111
|
};
|
|
5890
6112
|
|
|
5891
6113
|
var useChannelVisibleListener = function (setChannels, customHandler) {
|
|
5892
|
-
var client = useChatContext().client;
|
|
6114
|
+
var client = useChatContext('useChannelVisibleListener').client;
|
|
5893
6115
|
React.useEffect(function () {
|
|
5894
6116
|
var handleEvent = function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
5895
6117
|
var channel_1;
|
|
@@ -5918,7 +6140,7 @@ var useChannelVisibleListener = function (setChannels, customHandler) {
|
|
|
5918
6140
|
};
|
|
5919
6141
|
|
|
5920
6142
|
var useConnectionRecoveredListener = function (forceUpdate) {
|
|
5921
|
-
var client = useChatContext().client;
|
|
6143
|
+
var client = useChatContext('useConnectionRecoveredListener').client;
|
|
5922
6144
|
React.useEffect(function () {
|
|
5923
6145
|
var handleEvent = function () {
|
|
5924
6146
|
if (forceUpdate) {
|
|
@@ -5935,7 +6157,7 @@ var useConnectionRecoveredListener = function (forceUpdate) {
|
|
|
5935
6157
|
var useMessageNewListener = function (setChannels, lockChannelOrder, allowNewMessagesFromUnfilteredChannels) {
|
|
5936
6158
|
if (lockChannelOrder === void 0) { lockChannelOrder = false; }
|
|
5937
6159
|
if (allowNewMessagesFromUnfilteredChannels === void 0) { allowNewMessagesFromUnfilteredChannels = true; }
|
|
5938
|
-
var client = useChatContext().client;
|
|
6160
|
+
var client = useChatContext('useMessageNewListener').client;
|
|
5939
6161
|
React.useEffect(function () {
|
|
5940
6162
|
var handleEvent = function (event) {
|
|
5941
6163
|
setChannels(function (channels) {
|
|
@@ -5975,7 +6197,7 @@ var useMobileNavigation = function (channelListRef, navOpen, closeMobileNav) {
|
|
|
5975
6197
|
|
|
5976
6198
|
var useNotificationAddedToChannelListener = function (setChannels, customHandler, allowNewMessagesFromUnfilteredChannels) {
|
|
5977
6199
|
if (allowNewMessagesFromUnfilteredChannels === void 0) { allowNewMessagesFromUnfilteredChannels = true; }
|
|
5978
|
-
var client = useChatContext().client;
|
|
6200
|
+
var client = useChatContext('useNotificationAddedToChannelListener').client;
|
|
5979
6201
|
React.useEffect(function () {
|
|
5980
6202
|
var handleEvent = function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
5981
6203
|
var channel_1;
|
|
@@ -6004,9 +6226,9 @@ var useNotificationAddedToChannelListener = function (setChannels, customHandler
|
|
|
6004
6226
|
}, [customHandler]);
|
|
6005
6227
|
};
|
|
6006
6228
|
|
|
6007
|
-
var useNotificationMessageNewListener = function (setChannels, customHandler,
|
|
6229
|
+
var useNotificationMessageNewListener = function (setChannels, customHandler, allowNewMessagesFromUnfilteredChannels) {
|
|
6008
6230
|
if (allowNewMessagesFromUnfilteredChannels === void 0) { allowNewMessagesFromUnfilteredChannels = true; }
|
|
6009
|
-
var client = useChatContext().client;
|
|
6231
|
+
var client = useChatContext('useNotificationMessageNewListener').client;
|
|
6010
6232
|
React.useEffect(function () {
|
|
6011
6233
|
var handleEvent = function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
6012
6234
|
var channel_1;
|
|
@@ -6024,9 +6246,7 @@ var useNotificationMessageNewListener = function (setChannels, customHandler, se
|
|
|
6024
6246
|
channel_1 = _b.sent();
|
|
6025
6247
|
setChannels(function (channels) { return uniqBy__default['default'](__spreadArray([channel_1], channels), 'cid'); });
|
|
6026
6248
|
_b.label = 3;
|
|
6027
|
-
case 3:
|
|
6028
|
-
setOffset === null || setOffset === void 0 ? void 0 : setOffset(function (prevOffset) { return prevOffset + 1; });
|
|
6029
|
-
return [2 /*return*/];
|
|
6249
|
+
case 3: return [2 /*return*/];
|
|
6030
6250
|
}
|
|
6031
6251
|
});
|
|
6032
6252
|
}); };
|
|
@@ -6038,7 +6258,7 @@ var useNotificationMessageNewListener = function (setChannels, customHandler, se
|
|
|
6038
6258
|
};
|
|
6039
6259
|
|
|
6040
6260
|
var useNotificationRemovedFromChannelListener = function (setChannels, customHandler) {
|
|
6041
|
-
var client = useChatContext().client;
|
|
6261
|
+
var client = useChatContext('useNotificationRemovedFromChannelListener').client;
|
|
6042
6262
|
React.useEffect(function () {
|
|
6043
6263
|
var handleEvent = function (event) {
|
|
6044
6264
|
if (customHandler && typeof customHandler === 'function') {
|
|
@@ -6060,12 +6280,11 @@ var usePaginatedChannels = function (client, filters, sort, options, activeChann
|
|
|
6060
6280
|
var _b = React.useState(false), error = _b[0], setError = _b[1];
|
|
6061
6281
|
var _c = React.useState(true), hasNextPage = _c[0], setHasNextPage = _c[1];
|
|
6062
6282
|
var _d = React.useState(true), loadingChannels = _d[0], setLoadingChannels = _d[1];
|
|
6063
|
-
var _e = React.useState(
|
|
6064
|
-
var _f = React.useState(true), refreshing = _f[0], setRefreshing = _f[1];
|
|
6283
|
+
var _e = React.useState(true), refreshing = _e[0], setRefreshing = _e[1];
|
|
6065
6284
|
var filterString = React.useMemo(function () { return JSON.stringify(filters); }, [filters]);
|
|
6066
6285
|
var sortString = React.useMemo(function () { return JSON.stringify(sort); }, [sort]);
|
|
6067
6286
|
var queryChannels = function (queryType) { return __awaiter(void 0, void 0, void 0, function () {
|
|
6068
|
-
var newOptions, channelQueryResponse, newChannels, err_1;
|
|
6287
|
+
var offset, newOptions, channelQueryResponse, newChannels, err_1;
|
|
6069
6288
|
var _a;
|
|
6070
6289
|
return __generator(this, function (_b) {
|
|
6071
6290
|
switch (_b.label) {
|
|
@@ -6075,27 +6294,21 @@ var usePaginatedChannels = function (client, filters, sort, options, activeChann
|
|
|
6075
6294
|
setLoadingChannels(true);
|
|
6076
6295
|
}
|
|
6077
6296
|
setRefreshing(true);
|
|
6078
|
-
|
|
6297
|
+
offset = queryType === 'reload' ? 0 : channels.length;
|
|
6298
|
+
newOptions = __assign({ limit: (_a = options === null || options === void 0 ? void 0 : options.limit) !== null && _a !== void 0 ? _a : MAX_QUERY_CHANNELS_LIMIT, offset: offset }, options);
|
|
6079
6299
|
_b.label = 1;
|
|
6080
6300
|
case 1:
|
|
6081
6301
|
_b.trys.push([1, 3, , 4]);
|
|
6082
6302
|
return [4 /*yield*/, client.queryChannels(filters, sort || {}, newOptions)];
|
|
6083
6303
|
case 2:
|
|
6084
6304
|
channelQueryResponse = _b.sent();
|
|
6085
|
-
newChannels =
|
|
6086
|
-
if (queryType === 'reload') {
|
|
6087
|
-
newChannels = channelQueryResponse;
|
|
6088
|
-
}
|
|
6089
|
-
else {
|
|
6090
|
-
newChannels = __spreadArray(__spreadArray([], channels), channelQueryResponse);
|
|
6091
|
-
}
|
|
6305
|
+
newChannels = queryType === 'reload' ? channelQueryResponse : __spreadArray(__spreadArray([], channels), channelQueryResponse);
|
|
6092
6306
|
setChannels(newChannels);
|
|
6093
6307
|
setHasNextPage(channelQueryResponse.length >= newOptions.limit);
|
|
6094
|
-
// Set active channel only
|
|
6095
|
-
if (offset
|
|
6308
|
+
// Set active channel only on load of first page
|
|
6309
|
+
if (!offset && activeChannelHandler) {
|
|
6096
6310
|
activeChannelHandler(newChannels, setChannels);
|
|
6097
6311
|
}
|
|
6098
|
-
setOffset(newChannels.length);
|
|
6099
6312
|
return [3 /*break*/, 4];
|
|
6100
6313
|
case 3:
|
|
6101
6314
|
err_1 = _b.sent();
|
|
@@ -6120,7 +6333,6 @@ var usePaginatedChannels = function (client, filters, sort, options, activeChann
|
|
|
6120
6333
|
hasNextPage: hasNextPage,
|
|
6121
6334
|
loadNextPage: loadNextPage,
|
|
6122
6335
|
setChannels: setChannels,
|
|
6123
|
-
setOffset: setOffset,
|
|
6124
6336
|
status: {
|
|
6125
6337
|
error: error,
|
|
6126
6338
|
loadingChannels: loadingChannels,
|
|
@@ -6130,7 +6342,7 @@ var usePaginatedChannels = function (client, filters, sort, options, activeChann
|
|
|
6130
6342
|
};
|
|
6131
6343
|
|
|
6132
6344
|
var useUserPresenceChangedListener = function (setChannels) {
|
|
6133
|
-
var client = useChatContext().client;
|
|
6345
|
+
var client = useChatContext('useUserPresenceChangedListener').client;
|
|
6134
6346
|
React.useEffect(function () {
|
|
6135
6347
|
var handleEvent = function (event) {
|
|
6136
6348
|
setChannels(function (channels) {
|
|
@@ -6183,7 +6395,7 @@ var UnMemoizedChannelPreviewMessenger = function (props) {
|
|
|
6183
6395
|
var ChannelPreviewMessenger = React__default['default'].memo(UnMemoizedChannelPreviewMessenger);
|
|
6184
6396
|
|
|
6185
6397
|
var useIsChannelMuted = function (channel) {
|
|
6186
|
-
var client = useChatContext().client;
|
|
6398
|
+
var client = useChatContext('useIsChannelMuted').client;
|
|
6187
6399
|
var _a = React.useState(channel.muteStatus()), muted = _a[0], setMuted = _a[1];
|
|
6188
6400
|
React.useEffect(function () {
|
|
6189
6401
|
var handleEvent = function () { return setMuted(channel.muteStatus()); };
|
|
@@ -6245,8 +6457,8 @@ var getDisplayImage = function (channel, currentUser) {
|
|
|
6245
6457
|
|
|
6246
6458
|
var ChannelPreview = function (props) {
|
|
6247
6459
|
var channel = props.channel, _a = props.Preview, Preview = _a === void 0 ? ChannelPreviewMessenger : _a;
|
|
6248
|
-
var _b = useChatContext(), activeChannel = _b.channel, client = _b.client, setActiveChannel = _b.setActiveChannel;
|
|
6249
|
-
var _c = useTranslationContext(), t = _c.t, userLanguage = _c.userLanguage;
|
|
6460
|
+
var _b = useChatContext('ChannelPreview'), activeChannel = _b.channel, client = _b.client, setActiveChannel = _b.setActiveChannel;
|
|
6461
|
+
var _c = useTranslationContext('ChannelPreview'), t = _c.t, userLanguage = _c.userLanguage;
|
|
6250
6462
|
var _d = React.useState(channel.state.messages[channel.state.messages.length - 1]), lastMessage = _d[0], setLastMessage = _d[1];
|
|
6251
6463
|
var _e = React.useState(0), unread = _e[0], setUnread = _e[1];
|
|
6252
6464
|
var isActive = (activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.cid) === channel.cid;
|
|
@@ -6299,7 +6511,7 @@ var ChannelPreview = function (props) {
|
|
|
6299
6511
|
|
|
6300
6512
|
var SearchInput = function (props) {
|
|
6301
6513
|
var channelSearchParams = props.channelSearchParams, inputRef = props.inputRef, onSearch = props.onSearch, query = props.query, searchFunction = props.searchFunction;
|
|
6302
|
-
var t = useTranslationContext().t;
|
|
6514
|
+
var t = useTranslationContext('SearchInput').t;
|
|
6303
6515
|
return (React__default['default'].createElement("input", { className: 'str-chat__channel-search-input', onChange: function (event) {
|
|
6304
6516
|
return searchFunction ? searchFunction(channelSearchParams, event) : onSearch(event);
|
|
6305
6517
|
}, placeholder: t('Search'), ref: inputRef, type: 'text', value: query }));
|
|
@@ -6331,7 +6543,7 @@ var DefaultSearchResultItem = function (props) {
|
|
|
6331
6543
|
};
|
|
6332
6544
|
var SearchResults = function (props) {
|
|
6333
6545
|
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;
|
|
6334
|
-
var t = useTranslationContext().t;
|
|
6546
|
+
var t = useTranslationContext('SearchResults').t;
|
|
6335
6547
|
var _c = React.useState(), focusedUser = _c[0], setFocusedUser = _c[1];
|
|
6336
6548
|
var device = useBreakpoint().device;
|
|
6337
6549
|
var containerStyle = popupResults && device === 'full' ? 'popup' : 'inline';
|
|
@@ -6379,7 +6591,7 @@ var SearchResults = function (props) {
|
|
|
6379
6591
|
|
|
6380
6592
|
var UnMemoizedChannelSearch = function (props) {
|
|
6381
6593
|
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;
|
|
6382
|
-
var _e = useChatContext(), client = _e.client, setActiveChannel = _e.setActiveChannel;
|
|
6594
|
+
var _e = useChatContext('ChannelSearch'), client = _e.client, setActiveChannel = _e.setActiveChannel;
|
|
6383
6595
|
var _f = React.useState(''), query = _f[0], setQuery = _f[1];
|
|
6384
6596
|
var _g = React.useState([]), results = _g[0], setResults = _g[1];
|
|
6385
6597
|
var _h = React.useState(false), resultsOpen = _h[0], setResultsOpen = _h[1];
|
|
@@ -6493,7 +6705,7 @@ var ChannelSearch = React__default['default'].memo(UnMemoizedChannelSearch);
|
|
|
6493
6705
|
|
|
6494
6706
|
var UnMemoizedEmptyStateIndicator = function (props) {
|
|
6495
6707
|
var listType = props.listType;
|
|
6496
|
-
var t = useTranslationContext().t;
|
|
6708
|
+
var t = useTranslationContext('EmptyStateIndicator').t;
|
|
6497
6709
|
if (listType === 'channel')
|
|
6498
6710
|
return React__default['default'].createElement("p", null, t('You have no channels currently'));
|
|
6499
6711
|
if (listType === 'message')
|
|
@@ -6523,7 +6735,7 @@ var DEFAULT_OPTIONS = {};
|
|
|
6523
6735
|
var DEFAULT_SORT = {};
|
|
6524
6736
|
var UnMemoizedChannelList = function (props) {
|
|
6525
6737
|
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;
|
|
6526
|
-
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;
|
|
6738
|
+
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;
|
|
6527
6739
|
var channelListRef = React.useRef(null);
|
|
6528
6740
|
var _q = React.useState(0), channelUpdateCount = _q[0], setChannelUpdateCount = _q[1];
|
|
6529
6741
|
/**
|
|
@@ -6570,11 +6782,11 @@ var UnMemoizedChannelList = function (props) {
|
|
|
6570
6782
|
* force a re-render. Incrementing this dummy variable ensures the channel previews update.
|
|
6571
6783
|
*/
|
|
6572
6784
|
var forceUpdate = function () { return setChannelUpdateCount(function (count) { return count + 1; }); };
|
|
6573
|
-
var _r = usePaginatedChannels(client, filters || DEFAULT_FILTERS, sort || DEFAULT_SORT, options || DEFAULT_OPTIONS, activeChannelHandler), channels = _r.channels, hasNextPage = _r.hasNextPage, loadNextPage = _r.loadNextPage, setChannels = _r.setChannels,
|
|
6785
|
+
var _r = usePaginatedChannels(client, filters || DEFAULT_FILTERS, sort || DEFAULT_SORT, options || DEFAULT_OPTIONS, activeChannelHandler), channels = _r.channels, hasNextPage = _r.hasNextPage, loadNextPage = _r.loadNextPage, setChannels = _r.setChannels, status = _r.status;
|
|
6574
6786
|
var loadedChannels = channelRenderFilterFn ? channelRenderFilterFn(channels) : channels;
|
|
6575
6787
|
useMobileNavigation(channelListRef, navOpen, closeMobileNav);
|
|
6576
6788
|
useMessageNewListener(setChannels, lockChannelOrder, allowNewMessagesFromUnfilteredChannels);
|
|
6577
|
-
useNotificationMessageNewListener(setChannels, onMessageNew,
|
|
6789
|
+
useNotificationMessageNewListener(setChannels, onMessageNew, allowNewMessagesFromUnfilteredChannels);
|
|
6578
6790
|
useNotificationAddedToChannelListener(setChannels, onAddedToChannel, allowNewMessagesFromUnfilteredChannels);
|
|
6579
6791
|
useNotificationRemovedFromChannelListener(setChannels, onRemovedFromChannel);
|
|
6580
6792
|
useChannelDeletedListener(setChannels, onChannelDeleted);
|
|
@@ -6629,7 +6841,7 @@ var UnMemoizedChannelList = function (props) {
|
|
|
6629
6841
|
*/
|
|
6630
6842
|
var ChannelList = React__default['default'].memo(UnMemoizedChannelList);
|
|
6631
6843
|
|
|
6632
|
-
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="
|
|
6844
|
+
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,"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..."};
|
|
6633
6845
|
|
|
6634
6846
|
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..."};
|
|
6635
6847
|
|
|
@@ -6659,9 +6871,9 @@ Dayjs__default['default'].extend(updateLocale__default['default']);
|
|
|
6659
6871
|
Dayjs__default['default'].updateLocale('de', {
|
|
6660
6872
|
calendar: {
|
|
6661
6873
|
lastDay: '[gestern um] LT',
|
|
6662
|
-
lastWeek: '[
|
|
6874
|
+
lastWeek: '[letzten] dddd [bei] LT',
|
|
6663
6875
|
nextDay: '[morgen zu] LT',
|
|
6664
|
-
nextWeek: 'dddd [
|
|
6876
|
+
nextWeek: 'dddd [bei] LT',
|
|
6665
6877
|
sameDay: '[heute um] LT',
|
|
6666
6878
|
sameElse: 'L',
|
|
6667
6879
|
},
|
|
@@ -7252,7 +7464,7 @@ var Streami18n = /** @class */ (function () {
|
|
|
7252
7464
|
return Streami18n;
|
|
7253
7465
|
}());
|
|
7254
7466
|
|
|
7255
|
-
var version = '6.
|
|
7467
|
+
var version = '6.11.0';
|
|
7256
7468
|
|
|
7257
7469
|
var useChat = function (_a) {
|
|
7258
7470
|
var _b;
|
|
@@ -7265,7 +7477,7 @@ var useChat = function (_a) {
|
|
|
7265
7477
|
var _e = React.useState(), channel = _e[0], setChannel = _e[1];
|
|
7266
7478
|
var _f = React.useState([]), mutes = _f[0], setMutes = _f[1];
|
|
7267
7479
|
var _g = React.useState(initialNavOpen), navOpen = _g[0], setNavOpen = _g[1];
|
|
7268
|
-
var clientMutes = (_b = client
|
|
7480
|
+
var clientMutes = (_b = client.user) === null || _b === void 0 ? void 0 : _b.mutes;
|
|
7269
7481
|
var closeMobileNav = function () { return setNavOpen(false); };
|
|
7270
7482
|
var openMobileNav = function () { return setTimeout(function () { return setNavOpen(true); }, 100); };
|
|
7271
7483
|
React.useEffect(function () {
|
|
@@ -7335,6 +7547,27 @@ var useChat = function (_a) {
|
|
|
7335
7547
|
};
|
|
7336
7548
|
};
|
|
7337
7549
|
|
|
7550
|
+
var useCreateChatContext = function (value) {
|
|
7551
|
+
var _a;
|
|
7552
|
+
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;
|
|
7553
|
+
var channelCid = channel === null || channel === void 0 ? void 0 : channel.cid;
|
|
7554
|
+
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);
|
|
7555
|
+
var mutedUsersLength = mutes.length;
|
|
7556
|
+
var chatContext = React.useMemo(function () { return ({
|
|
7557
|
+
channel: channel,
|
|
7558
|
+
client: client,
|
|
7559
|
+
closeMobileNav: closeMobileNav,
|
|
7560
|
+
customClasses: customClasses,
|
|
7561
|
+
mutes: mutes,
|
|
7562
|
+
navOpen: navOpen,
|
|
7563
|
+
openMobileNav: openMobileNav,
|
|
7564
|
+
setActiveChannel: setActiveChannel,
|
|
7565
|
+
theme: theme,
|
|
7566
|
+
useImageFlagEmojisOnWindows: useImageFlagEmojisOnWindows,
|
|
7567
|
+
}); }, [channelCid, clientValues, mutedUsersLength, navOpen]);
|
|
7568
|
+
return chatContext;
|
|
7569
|
+
};
|
|
7570
|
+
|
|
7338
7571
|
var darkModeTheme = {
|
|
7339
7572
|
'--bg-gradient-end': '#101214',
|
|
7340
7573
|
'--bg-gradient-start': '#070a0d',
|
|
@@ -7373,26 +7606,27 @@ var Chat = function (props) {
|
|
|
7373
7606
|
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;
|
|
7374
7607
|
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;
|
|
7375
7608
|
useCustomStyles(darkMode ? darkModeTheme : customStyles);
|
|
7609
|
+
var chatContextValue = useCreateChatContext({
|
|
7610
|
+
channel: channel,
|
|
7611
|
+
client: client,
|
|
7612
|
+
closeMobileNav: closeMobileNav,
|
|
7613
|
+
customClasses: customClasses,
|
|
7614
|
+
mutes: mutes,
|
|
7615
|
+
navOpen: navOpen,
|
|
7616
|
+
openMobileNav: openMobileNav,
|
|
7617
|
+
setActiveChannel: setActiveChannel,
|
|
7618
|
+
theme: theme,
|
|
7619
|
+
useImageFlagEmojisOnWindows: useImageFlagEmojisOnWindows,
|
|
7620
|
+
});
|
|
7376
7621
|
if (!translators.t)
|
|
7377
7622
|
return null;
|
|
7378
|
-
return (React__default['default'].createElement(ChatProvider, { value:
|
|
7379
|
-
channel: channel,
|
|
7380
|
-
client: client,
|
|
7381
|
-
closeMobileNav: closeMobileNav,
|
|
7382
|
-
customClasses: customClasses,
|
|
7383
|
-
mutes: mutes,
|
|
7384
|
-
navOpen: navOpen,
|
|
7385
|
-
openMobileNav: openMobileNav,
|
|
7386
|
-
setActiveChannel: setActiveChannel,
|
|
7387
|
-
theme: theme,
|
|
7388
|
-
useImageFlagEmojisOnWindows: useImageFlagEmojisOnWindows,
|
|
7389
|
-
} },
|
|
7623
|
+
return (React__default['default'].createElement(ChatProvider, { value: chatContextValue },
|
|
7390
7624
|
React__default['default'].createElement(TranslationProvider, { value: translators }, children)));
|
|
7391
7625
|
};
|
|
7392
7626
|
|
|
7393
7627
|
var UnMemoizedDateSeparator = function (props) {
|
|
7394
7628
|
var date = props.date, formatDate = props.formatDate, _a = props.position, position = _a === void 0 ? 'right' : _a, unread = props.unread;
|
|
7395
|
-
var _b = useTranslationContext(), t = _b.t, tDateTimeParser = _b.tDateTimeParser;
|
|
7629
|
+
var _b = useTranslationContext('DateSeparator'), t = _b.t, tDateTimeParser = _b.tDateTimeParser;
|
|
7396
7630
|
if (typeof date === 'string')
|
|
7397
7631
|
return null;
|
|
7398
7632
|
var parsedDate = tDateTimeParser(date.toISOString());
|
|
@@ -7417,7 +7651,7 @@ var DateSeparator = React__default['default'].memo(UnMemoizedDateSeparator);
|
|
|
7417
7651
|
var UnMemoizedEventComponent = function (props) {
|
|
7418
7652
|
var _a, _b, _c;
|
|
7419
7653
|
var _d = props.Avatar, Avatar$1 = _d === void 0 ? Avatar : _d, message = props.message;
|
|
7420
|
-
var tDateTimeParser = useTranslationContext().tDateTimeParser;
|
|
7654
|
+
var tDateTimeParser = useTranslationContext('EventComponent').tDateTimeParser;
|
|
7421
7655
|
var _e = message.created_at, created_at = _e === void 0 ? '' : _e, event = message.event, text = message.text, type = message.type;
|
|
7422
7656
|
var dateFormatter = function (date, format) {
|
|
7423
7657
|
var parsedDate = tDateTimeParser(date);
|
|
@@ -7572,10 +7806,10 @@ var getUserColor = function (theme, userId) {
|
|
|
7572
7806
|
var UnMemoizedFixedHeightMessage = function (props) {
|
|
7573
7807
|
var _a, _b, _c, _d;
|
|
7574
7808
|
var propGroupedByUser = props.groupedByUser, propMessage = props.message;
|
|
7575
|
-
var theme = useChatContext().theme;
|
|
7576
|
-
var _e = useMessageContext(), contextGroupedByUser = _e.groupedByUser, contextMessage = _e.message;
|
|
7577
|
-
var _f = useComponentContext().MessageDeleted, MessageDeleted$1 = _f === void 0 ? MessageDeleted : _f;
|
|
7578
|
-
var userLanguage = useTranslationContext().userLanguage;
|
|
7809
|
+
var theme = useChatContext('FixedHeightMessage').theme;
|
|
7810
|
+
var _e = useMessageContext('FixedHeightMessage'), contextGroupedByUser = _e.groupedByUser, contextMessage = _e.message;
|
|
7811
|
+
var _f = useComponentContext('FixedHeightMessage').MessageDeleted, MessageDeleted$1 = _f === void 0 ? MessageDeleted : _f;
|
|
7812
|
+
var userLanguage = useTranslationContext('FixedHeightMessage').userLanguage;
|
|
7579
7813
|
var groupedByUser = propGroupedByUser !== undefined ? propGroupedByUser : contextGroupedByUser;
|
|
7580
7814
|
var message = propMessage || contextMessage;
|
|
7581
7815
|
var handleAction = useActionHandler(message);
|
|
@@ -7619,7 +7853,7 @@ var FixedHeightMessage = React__default['default'].memo(UnMemoizedFixedHeightMes
|
|
|
7619
7853
|
|
|
7620
7854
|
var MessageWithContext = function (props) {
|
|
7621
7855
|
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;
|
|
7622
|
-
var contextMessage = useComponentContext().Message;
|
|
7856
|
+
var contextMessage = useComponentContext('Message').Message;
|
|
7623
7857
|
var actionsEnabled = message.type === 'regular' && message.status === 'received';
|
|
7624
7858
|
var MessageUIComponent = propMessage || contextMessage;
|
|
7625
7859
|
var _b = useEditHandler(), clearEdit = _b.clearEdit, editing = _b.editing, setEdit = _b.setEdit;
|
|
@@ -7629,9 +7863,6 @@ var MessageWithContext = function (props) {
|
|
|
7629
7863
|
}), onUserClick = _c.onUserClick, onUserHover = _c.onUserHover;
|
|
7630
7864
|
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;
|
|
7631
7865
|
var messageActionsHandler = React.useCallback(function () {
|
|
7632
|
-
if (!message || !messageActions) {
|
|
7633
|
-
return [];
|
|
7634
|
-
}
|
|
7635
7866
|
return getMessageActions(messageActions, {
|
|
7636
7867
|
canDelete: canDelete,
|
|
7637
7868
|
canEdit: canEdit,
|
|
@@ -7661,8 +7892,8 @@ var MemoizedMessage = React__default['default'].memo(MessageWithContext, areMess
|
|
|
7661
7892
|
*/
|
|
7662
7893
|
var Message = function (props) {
|
|
7663
7894
|
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;
|
|
7664
|
-
var addNotification = useChannelActionContext().addNotification;
|
|
7665
|
-
var mutes = useChannelStateContext().mutes;
|
|
7895
|
+
var addNotification = useChannelActionContext('Message').addNotification;
|
|
7896
|
+
var mutes = useChannelStateContext('Message').mutes;
|
|
7666
7897
|
var reactionSelectorRef = React.useRef(null);
|
|
7667
7898
|
var handleAction = useActionHandler(message);
|
|
7668
7899
|
var handleOpenThread = useOpenThreadHandler(message, propOpenThread);
|
|
@@ -7698,7 +7929,7 @@ var Message = function (props) {
|
|
|
7698
7929
|
var MessageCommerceWithContext = function (props) {
|
|
7699
7930
|
var _a, _b, _c, _d, _e, _f;
|
|
7700
7931
|
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;
|
|
7701
|
-
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;
|
|
7932
|
+
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;
|
|
7702
7933
|
var hasAttachment = messageHasAttachments(message);
|
|
7703
7934
|
var hasReactions = messageHasReactions(message);
|
|
7704
7935
|
var firstGroupStyle = groupStyles ? groupStyles[0] : 'single';
|
|
@@ -7732,16 +7963,15 @@ var MemoizedMessageCommerce = React__default['default'].memo(MessageCommerceWith
|
|
|
7732
7963
|
* UI component that renders a message and receives functionality from the Message/MessageList components
|
|
7733
7964
|
*/
|
|
7734
7965
|
var MessageCommerce = function (props) {
|
|
7735
|
-
var messageContext = useMessageContext();
|
|
7966
|
+
var messageContext = useMessageContext('MessageCommerce');
|
|
7736
7967
|
return React__default['default'].createElement(MemoizedMessageCommerce, __assign({}, messageContext, props));
|
|
7737
7968
|
};
|
|
7738
7969
|
|
|
7739
7970
|
var MessageLivestreamWithContext = function (props) {
|
|
7740
7971
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
7741
7972
|
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;
|
|
7742
|
-
var _m = useComponentContext().QuotedMessage, QuotedMessage$1 =
|
|
7743
|
-
var
|
|
7744
|
-
var _w = useTranslationContext(), t = _w.t, userLanguage = _w.userLanguage;
|
|
7973
|
+
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;
|
|
7974
|
+
var _w = useTranslationContext('MessageLivestream'), t = _w.t, userLanguage = _w.userLanguage;
|
|
7745
7975
|
var messageTextToRender = ((_a = message.i18n) === null || _a === void 0 ? void 0 : _a[userLanguage + "_text"]) || message.text;
|
|
7746
7976
|
var messageText = React.useMemo(function () { return renderText$1(messageTextToRender, message.mentioned_users); }, [
|
|
7747
7977
|
message.mentioned_users,
|
|
@@ -7804,8 +8034,8 @@ var MessageLivestreamWithContext = function (props) {
|
|
|
7804
8034
|
};
|
|
7805
8035
|
var MessageLivestreamActions = function (props) {
|
|
7806
8036
|
var messageWrapperRef = props.messageWrapperRef, onReactionListClick = props.onReactionListClick;
|
|
7807
|
-
var _a = useComponentContext().MessageTimestamp, MessageTimestamp$1 = _a === void 0 ? MessageTimestamp : _a;
|
|
7808
|
-
var _b = useMessageContext(), getMessageActions = _b.getMessageActions, handleOpenThread = _b.handleOpenThread, initialMessage = _b.initialMessage, message = _b.message, threadList = _b.threadList;
|
|
8037
|
+
var _a = useComponentContext('MessageLivestream').MessageTimestamp, MessageTimestamp$1 = _a === void 0 ? MessageTimestamp : _a;
|
|
8038
|
+
var _b = useMessageContext('MessageLivestream'), getMessageActions = _b.getMessageActions, handleOpenThread = _b.handleOpenThread, initialMessage = _b.initialMessage, message = _b.message, threadList = _b.threadList;
|
|
7809
8039
|
var _c = React.useState(false), actionsBoxOpen = _c[0], setActionsBoxOpen = _c[1];
|
|
7810
8040
|
var hideOptions = React.useCallback(function () { return setActionsBoxOpen(false); }, []);
|
|
7811
8041
|
var messageDeletedAt = !!message.deleted_at;
|
|
@@ -7866,7 +8096,7 @@ var MemoizedMessageLivestream = React__default['default'].memo(MessageLivestream
|
|
|
7866
8096
|
* Implements the look and feel for a livestream use case.
|
|
7867
8097
|
*/
|
|
7868
8098
|
var MessageLivestream = function (props) {
|
|
7869
|
-
var messageContext = useMessageContext();
|
|
8099
|
+
var messageContext = useMessageContext('MessageLivestream');
|
|
7870
8100
|
var messageWrapperRef = React.useRef(null);
|
|
7871
8101
|
var reactionSelectorRef = React.useRef(null);
|
|
7872
8102
|
var message = props.message || messageContext.message;
|
|
@@ -7877,8 +8107,8 @@ var MessageLivestream = function (props) {
|
|
|
7877
8107
|
var MessageTeamWithContext = function (props) {
|
|
7878
8108
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
7879
8109
|
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;
|
|
7880
|
-
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;
|
|
7881
|
-
var _z = useTranslationContext(), t = _z.t, userLanguage = _z.userLanguage;
|
|
8110
|
+
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;
|
|
8111
|
+
var _z = useTranslationContext('MessageTeam'), t = _z.t, userLanguage = _z.userLanguage;
|
|
7882
8112
|
var messageActions = getMessageActions();
|
|
7883
8113
|
var showActionsBox = showMessageActionsBox(messageActions);
|
|
7884
8114
|
var shouldShowReplies = messageActions.indexOf(MESSAGE_ACTIONS.reply) > -1 && !threadList;
|
|
@@ -7948,7 +8178,7 @@ var MemoizedMessageTeam = React__default['default'].memo(MessageTeamWithContext,
|
|
|
7948
8178
|
* Implements the look and feel for a team style collaboration environment.
|
|
7949
8179
|
*/
|
|
7950
8180
|
var MessageTeam = function (props) {
|
|
7951
|
-
var messageContext = useMessageContext();
|
|
8181
|
+
var messageContext = useMessageContext('MessageTeam');
|
|
7952
8182
|
var reactionSelectorRef = React.useRef(null);
|
|
7953
8183
|
var messageWrapperRef = React.useRef(null);
|
|
7954
8184
|
var message = props.message || messageContext.message;
|
|
@@ -7965,8 +8195,8 @@ var UnMemoizedCustomNotification = function (props) {
|
|
|
7965
8195
|
var CustomNotification = React__default['default'].memo(UnMemoizedCustomNotification);
|
|
7966
8196
|
|
|
7967
8197
|
var UnMemoizedConnectionStatus = function () {
|
|
7968
|
-
var client = useChatContext().client;
|
|
7969
|
-
var t = useTranslationContext().t;
|
|
8198
|
+
var client = useChatContext('ConnectionStatus').client;
|
|
8199
|
+
var t = useTranslationContext('ConnectionStatus').t;
|
|
7970
8200
|
var _a = React.useState(true), online = _a[0], setOnline = _a[1];
|
|
7971
8201
|
React.useEffect(function () {
|
|
7972
8202
|
var connectionChanged = function (_a) {
|
|
@@ -8187,8 +8417,8 @@ var getGroupStyles = function (message, previousMessage, nextMessage, noGroupByU
|
|
|
8187
8417
|
|
|
8188
8418
|
var useEnrichedMessages = function (args) {
|
|
8189
8419
|
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;
|
|
8190
|
-
var client = useChatContext().client;
|
|
8191
|
-
var HeaderComponent = useComponentContext().HeaderComponent;
|
|
8420
|
+
var client = useChatContext('useEnrichedMessages').client;
|
|
8421
|
+
var HeaderComponent = useComponentContext('useEnrichedMessages').HeaderComponent;
|
|
8192
8422
|
var lastRead = React.useMemo(function () { var _a; return (_a = channel.lastRead) === null || _a === void 0 ? void 0 : _a.call(channel); }, [channel]);
|
|
8193
8423
|
var messagesWithDates = disableDateSeparator && !hideDeletedMessages && hideNewMessageSeparator
|
|
8194
8424
|
? messages
|
|
@@ -8227,8 +8457,8 @@ var useLastReadData = function (props) {
|
|
|
8227
8457
|
|
|
8228
8458
|
var useMessageListElements = function (props) {
|
|
8229
8459
|
var enrichedMessages = props.enrichedMessages, internalMessageProps = props.internalMessageProps, messageGroupStyles = props.messageGroupStyles, onMessageLoadCaptured = props.onMessageLoadCaptured, read = props.read, returnAllReadData = props.returnAllReadData, threadList = props.threadList;
|
|
8230
|
-
var _a = useChatContext(), client = _a.client, customClasses = _a.customClasses;
|
|
8231
|
-
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;
|
|
8460
|
+
var _a = useChatContext('useMessageListElements'), client = _a.client, customClasses = _a.customClasses;
|
|
8461
|
+
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;
|
|
8232
8462
|
// get the readData, but only for messages submitted by the user themselves
|
|
8233
8463
|
var readData = useLastReadData({
|
|
8234
8464
|
messages: enrichedMessages,
|
|
@@ -8272,7 +8502,7 @@ var useMessageListElements = function (props) {
|
|
|
8272
8502
|
|
|
8273
8503
|
function useMessageListScrollManager(params) {
|
|
8274
8504
|
var onScrollBy = params.onScrollBy, scrollContainerMeasures = params.scrollContainerMeasures, scrolledUpThreshold = params.scrolledUpThreshold, scrollToBottom = params.scrollToBottom, showNewMessages = params.showNewMessages;
|
|
8275
|
-
var client = useChatContext().client;
|
|
8505
|
+
var client = useChatContext('useMessageListScrollManager').client;
|
|
8276
8506
|
var measures = React.useRef({
|
|
8277
8507
|
offsetHeight: 0,
|
|
8278
8508
|
scrollHeight: 0,
|
|
@@ -8415,14 +8645,23 @@ var UnMemoizedMessageNotification = function (props) {
|
|
|
8415
8645
|
};
|
|
8416
8646
|
var MessageNotification = React__default['default'].memo(UnMemoizedMessageNotification);
|
|
8417
8647
|
|
|
8648
|
+
var MessageListNotifications = function (props) {
|
|
8649
|
+
var hasNewMessages = props.hasNewMessages, MessageNotification = props.MessageNotification, notifications = props.notifications, scrollToBottom = props.scrollToBottom;
|
|
8650
|
+
var t = useTranslationContext('MessageListNotifications').t;
|
|
8651
|
+
return (React__default['default'].createElement("div", { className: 'str-chat__list-notifications' },
|
|
8652
|
+
notifications.map(function (notification) { return (React__default['default'].createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)); }),
|
|
8653
|
+
React__default['default'].createElement(ConnectionStatus, null),
|
|
8654
|
+
React__default['default'].createElement(MessageNotification, { onClick: scrollToBottom, showNotification: hasNewMessages }, t('New Messages!'))));
|
|
8655
|
+
};
|
|
8656
|
+
|
|
8418
8657
|
/**
|
|
8419
8658
|
* TypingIndicator lists users currently typing, it needs to be a child of Channel component
|
|
8420
8659
|
*/
|
|
8421
8660
|
var UnMemoizedTypingIndicator = function (props) {
|
|
8422
8661
|
var _a = props.Avatar, Avatar$1 = _a === void 0 ? Avatar : _a, _b = props.avatarSize, avatarSize = _b === void 0 ? 32 : _b, threadList = props.threadList;
|
|
8423
|
-
var _c = useChannelStateContext(), channelConfig = _c.channelConfig, thread = _c.thread;
|
|
8424
|
-
var client = useChatContext().client;
|
|
8425
|
-
var _d = useTypingContext().typing, typing = _d === void 0 ? {} : _d;
|
|
8662
|
+
var _c = useChannelStateContext('TypingIndicator'), channelConfig = _c.channelConfig, thread = _c.thread;
|
|
8663
|
+
var client = useChatContext('TypingIndicator').client;
|
|
8664
|
+
var _d = useTypingContext('TypingIndicator').typing, typing = _d === void 0 ? {} : _d;
|
|
8426
8665
|
if ((channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.typing_events) === false) {
|
|
8427
8666
|
return null;
|
|
8428
8667
|
}
|
|
@@ -8454,23 +8693,17 @@ var UnMemoizedTypingIndicator = function (props) {
|
|
|
8454
8693
|
};
|
|
8455
8694
|
var TypingIndicator = React__default['default'].memo(UnMemoizedTypingIndicator);
|
|
8456
8695
|
|
|
8457
|
-
var DefaultMessageListNotifications = function (props) {
|
|
8458
|
-
var hasNewMessages = props.hasNewMessages, MessageNotification = props.MessageNotification, notifications = props.notifications, scrollToBottom = props.scrollToBottom;
|
|
8459
|
-
var t = useTranslationContext().t;
|
|
8460
|
-
return (React__default['default'].createElement("div", { className: 'str-chat__list-notifications' },
|
|
8461
|
-
notifications.map(function (notification) { return (React__default['default'].createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)); }),
|
|
8462
|
-
React__default['default'].createElement(ConnectionStatus, null),
|
|
8463
|
-
React__default['default'].createElement(MessageNotification, { onClick: scrollToBottom, showNotification: hasNewMessages }, t('New Messages!'))));
|
|
8464
|
-
};
|
|
8465
8696
|
var useInternalInfiniteScrollProps = function (props) {
|
|
8466
|
-
var _a = useComponentContext().LoadingIndicator, LoadingIndicator$1 = _a === void 0 ? LoadingIndicator : _a;
|
|
8697
|
+
var _a = useComponentContext('useInternalInfiniteScrollProps').LoadingIndicator, LoadingIndicator$1 = _a === void 0 ? LoadingIndicator : _a;
|
|
8467
8698
|
return __assign({ hasMore: props.hasMore, isLoading: props.loadingMore, loader: (React__default['default'].createElement(Center, { key: 'loadingindicator' },
|
|
8468
8699
|
React__default['default'].createElement(LoadingIndicator$1, { size: 20 }))), loadMore: useCallLoadMore(props.loadMore, props.messageLimit || 100) }, props.internalInfiniteScrollProps);
|
|
8469
8700
|
};
|
|
8470
8701
|
var MessageListWithContext = function (props) {
|
|
8471
|
-
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,
|
|
8472
|
-
|
|
8473
|
-
|
|
8702
|
+
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, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
8703
|
+
_h = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
8704
|
+
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;
|
|
8705
|
+
var customClasses = useChatContext('MessageList').customClasses;
|
|
8706
|
+
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;
|
|
8474
8707
|
var _r = useScrollLocationLogic({
|
|
8475
8708
|
messages: messages,
|
|
8476
8709
|
scrolledUpThreshold: props.scrolledUpThreshold,
|
|
@@ -8527,7 +8760,7 @@ var MessageListWithContext = function (props) {
|
|
|
8527
8760
|
React__default['default'].createElement("ul", { className: 'str-chat__ul' }, elements),
|
|
8528
8761
|
React__default['default'].createElement(TypingIndicator$1, { threadList: threadList }),
|
|
8529
8762
|
React__default['default'].createElement("div", { key: 'bottom' })))),
|
|
8530
|
-
React__default['default'].createElement(MessageListNotifications, { hasNewMessages: hasNewMessages, MessageNotification: MessageNotification$1, notifications: notifications, scrollToBottom: scrollToBottom })));
|
|
8763
|
+
React__default['default'].createElement(MessageListNotifications$1, { hasNewMessages: hasNewMessages, MessageNotification: MessageNotification$1, notifications: notifications, scrollToBottom: scrollToBottom })));
|
|
8531
8764
|
};
|
|
8532
8765
|
/**
|
|
8533
8766
|
* The MessageList component renders a list of Messages.
|
|
@@ -8538,8 +8771,8 @@ var MessageListWithContext = function (props) {
|
|
|
8538
8771
|
* - [TypingContext](https://getstream.io/chat/docs/sdk/react/contexts/typing_context/)
|
|
8539
8772
|
*/
|
|
8540
8773
|
var MessageList = function (props) {
|
|
8541
|
-
var loadMore = useChannelActionContext().loadMore;
|
|
8542
|
-
var _a = useChannelStateContext(); _a.members; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
8774
|
+
var loadMore = useChannelActionContext('MessageList').loadMore;
|
|
8775
|
+
var _a = useChannelStateContext('MessageList'); _a.members; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
8543
8776
|
_a.mutes; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
8544
8777
|
_a.watchers; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
8545
8778
|
var restChannelStateContext = __rest(_a, ["members", "mutes", "watchers"]);
|
|
@@ -8548,7 +8781,7 @@ var MessageList = function (props) {
|
|
|
8548
8781
|
|
|
8549
8782
|
var useGiphyPreview = function (separateGiphyPreview) {
|
|
8550
8783
|
var _a = React.useState(), giphyPreviewMessage = _a[0], setGiphyPreviewMessage = _a[1];
|
|
8551
|
-
var client = useChatContext().client;
|
|
8784
|
+
var client = useChatContext('useGiphyPreview').client;
|
|
8552
8785
|
React.useEffect(function () {
|
|
8553
8786
|
var handleEvent = function (event) {
|
|
8554
8787
|
var message = event.message, user = event.user;
|
|
@@ -8654,15 +8887,14 @@ function useShouldForceScrollToBottom(messages, currentUserId) {
|
|
|
8654
8887
|
|
|
8655
8888
|
var PREPEND_OFFSET = Math.pow(10, 7);
|
|
8656
8889
|
var VirtualizedMessageListWithContext = function (props) {
|
|
8657
|
-
var 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,
|
|
8890
|
+
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,
|
|
8658
8891
|
// TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
|
|
8659
8892
|
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;
|
|
8660
|
-
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.
|
|
8661
|
-
var
|
|
8662
|
-
var t = useTranslationContext().t;
|
|
8893
|
+
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;
|
|
8894
|
+
var _v = useChatContext('VirtualizedMessageList'), client = _v.client, customClasses = _v.customClasses;
|
|
8663
8895
|
var lastRead = React.useMemo(function () { var _a; return (_a = channel.lastRead) === null || _a === void 0 ? void 0 : _a.call(channel); }, [channel]);
|
|
8664
8896
|
var MessageUIComponent = propMessage || contextMessage;
|
|
8665
|
-
var
|
|
8897
|
+
var _w = useGiphyPreview(separateGiphyPreview), giphyPreviewMessage = _w.giphyPreviewMessage, setGiphyPreviewMessage = _w.setGiphyPreviewMessage;
|
|
8666
8898
|
var processedMessages = React.useMemo(function () {
|
|
8667
8899
|
if (typeof messages === 'undefined') {
|
|
8668
8900
|
return [];
|
|
@@ -8693,7 +8925,7 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
8693
8925
|
client.userID,
|
|
8694
8926
|
]);
|
|
8695
8927
|
var virtuoso = React.useRef(null);
|
|
8696
|
-
var
|
|
8928
|
+
var _x = useNewMessageNotification(processedMessages, client.userID), atBottom = _x.atBottom, newMessagesNotification = _x.newMessagesNotification, setNewMessagesNotification = _x.setNewMessagesNotification;
|
|
8697
8929
|
var scrollToBottom = React.useCallback(function () {
|
|
8698
8930
|
if (virtuoso.current) {
|
|
8699
8931
|
virtuoso.current.scrollToIndex(processedMessages.length - 1);
|
|
@@ -8782,9 +9014,8 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
8782
9014
|
var virtualizedMessageListClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualizedMessageList) || 'str-chat__virtual-list';
|
|
8783
9015
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
8784
9016
|
React__default['default'].createElement("div", { className: virtualizedMessageListClass },
|
|
8785
|
-
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 }, (scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {}), (defaultItemHeight ? { defaultItemHeight: defaultItemHeight } : {}))),
|
|
8786
|
-
|
|
8787
|
-
React__default['default'].createElement(MessageNotification$1, { onClick: scrollToBottom, showNotification: newMessagesNotification }, t('New Messages!')))),
|
|
9017
|
+
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 } : {})))),
|
|
9018
|
+
React__default['default'].createElement(MessageListNotifications$1, { hasNewMessages: newMessagesNotification, MessageNotification: MessageNotification$1, notifications: notifications, scrollToBottom: scrollToBottom }),
|
|
8788
9019
|
giphyPreviewMessage && React__default['default'].createElement(GiphyPreviewMessage$1, { message: giphyPreviewMessage })));
|
|
8789
9020
|
};
|
|
8790
9021
|
/**
|
|
@@ -8794,26 +9025,25 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
8794
9025
|
* **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.
|
|
8795
9026
|
*/
|
|
8796
9027
|
function VirtualizedMessageList(props) {
|
|
8797
|
-
var loadMore = useChannelActionContext().loadMore;
|
|
8798
|
-
var _a = useChannelStateContext(), channel = _a.channel, hasMore = _a.hasMore, loadingMore = _a.loadingMore, contextMessages = _a.messages;
|
|
9028
|
+
var loadMore = useChannelActionContext('VirtualizedMessageList').loadMore;
|
|
9029
|
+
var _a = useChannelStateContext('VirtualizedMessageList'), channel = _a.channel, hasMore = _a.hasMore, loadingMore = _a.loadingMore, contextMessages = _a.messages, notifications = _a.notifications;
|
|
8799
9030
|
var messages = props.messages || contextMessages;
|
|
8800
|
-
return (React__default['default'].createElement(VirtualizedMessageListWithContext, __assign({ channel: channel, hasMore: !!hasMore, loadingMore: !!loadingMore, loadMore: loadMore, messages: messages }, props)));
|
|
9031
|
+
return (React__default['default'].createElement(VirtualizedMessageListWithContext, __assign({ channel: channel, hasMore: !!hasMore, loadingMore: !!loadingMore, loadMore: loadMore, messages: messages, notifications: notifications }, props)));
|
|
8801
9032
|
}
|
|
8802
9033
|
|
|
8803
9034
|
/**
|
|
8804
9035
|
* The Thread component renders a parent Message with a list of replies
|
|
8805
9036
|
*/
|
|
8806
9037
|
var Thread = function (props) {
|
|
8807
|
-
var _a,
|
|
8808
|
-
|
|
8809
|
-
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)
|
|
9038
|
+
var _a = useChannelStateContext('Thread'), channel = _a.channel, channelConfig = _a.channelConfig, thread = _a.thread;
|
|
9039
|
+
if (!thread || (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.replies) === false)
|
|
8810
9040
|
return null;
|
|
8811
9041
|
// The wrapper ensures a key variable is set and the component recreates on thread switch
|
|
8812
9042
|
return React__default['default'].createElement(ThreadInner, __assign({}, props, { key: "thread-" + thread.id + "-" + (channel === null || channel === void 0 ? void 0 : channel.cid) }));
|
|
8813
9043
|
};
|
|
8814
9044
|
var DefaultThreadHeader = function (props) {
|
|
8815
9045
|
var closeThread = props.closeThread, thread = props.thread;
|
|
8816
|
-
var t = useTranslationContext().t;
|
|
9046
|
+
var t = useTranslationContext('Thread').t;
|
|
8817
9047
|
var getReplyCount = function () {
|
|
8818
9048
|
if (!thread.reply_count)
|
|
8819
9049
|
return '';
|
|
@@ -8832,15 +9062,15 @@ var DefaultThreadHeader = function (props) {
|
|
|
8832
9062
|
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' })))));
|
|
8833
9063
|
};
|
|
8834
9064
|
var DefaultThreadStart = function () {
|
|
8835
|
-
var t = useTranslationContext().t;
|
|
9065
|
+
var t = useTranslationContext('Thread').t;
|
|
8836
9066
|
return React__default['default'].createElement("div", { className: 'str-chat__thread-start' }, t('Start of a new thread'));
|
|
8837
9067
|
};
|
|
8838
9068
|
var ThreadInner = function (props) {
|
|
8839
9069
|
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;
|
|
8840
|
-
var _c = useChannelStateContext(), thread = _c.thread, threadHasMore = _c.threadHasMore, threadLoadingMore = _c.threadLoadingMore, threadMessages = _c.threadMessages;
|
|
8841
|
-
var _d = useChannelActionContext(), closeThread = _d.closeThread, loadMoreThread = _d.loadMoreThread;
|
|
8842
|
-
var customClasses = useChatContext().customClasses;
|
|
8843
|
-
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;
|
|
9070
|
+
var _c = useChannelStateContext('Thread'), thread = _c.thread, threadHasMore = _c.threadHasMore, threadLoadingMore = _c.threadLoadingMore, threadMessages = _c.threadMessages;
|
|
9071
|
+
var _d = useChannelActionContext('Thread'), closeThread = _d.closeThread, loadMoreThread = _d.loadMoreThread;
|
|
9072
|
+
var customClasses = useChatContext('Thread').customClasses;
|
|
9073
|
+
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;
|
|
8844
9074
|
var messageList = React.useRef(null);
|
|
8845
9075
|
var ThreadInput = PropInput || (additionalMessageInputProps === null || additionalMessageInputProps === void 0 ? void 0 : additionalMessageInputProps.Input) || ContextInput || MessageInputSmall;
|
|
8846
9076
|
var ThreadMessage = PropMessage || (additionalMessageListProps === null || additionalMessageListProps === void 0 ? void 0 : additionalMessageListProps.Message);
|
|
@@ -8874,7 +9104,7 @@ var ThreadInner = function (props) {
|
|
|
8874
9104
|
|
|
8875
9105
|
var UnMemoizedWindow = function (props) {
|
|
8876
9106
|
var children = props.children, _a = props.hideOnThread, hideOnThread = _a === void 0 ? false : _a;
|
|
8877
|
-
var thread = useChannelStateContext().thread;
|
|
9107
|
+
var thread = useChannelStateContext('Window').thread;
|
|
8878
9108
|
// If thread is active and window should hide on thread. Return null
|
|
8879
9109
|
if (thread && hideOnThread)
|
|
8880
9110
|
return null;
|
|
@@ -9006,6 +9236,7 @@ exports.deTranslations = deTranslations;
|
|
|
9006
9236
|
exports.defaultPinPermissions = defaultPinPermissions;
|
|
9007
9237
|
exports.defaultScrollToItem = defaultScrollToItem;
|
|
9008
9238
|
exports.defaultTimestampFormat = defaultTimestampFormat;
|
|
9239
|
+
exports.emojiMarkdownPlugin = emojiMarkdownPlugin;
|
|
9009
9240
|
exports.enTranslations = enTranslations;
|
|
9010
9241
|
exports.esTranslations = esTranslations;
|
|
9011
9242
|
exports.escapeRegExp = escapeRegExp;
|
|
@@ -9019,6 +9250,7 @@ exports.getLatestMessagePreview = getLatestMessagePreview;
|
|
|
9019
9250
|
exports.getMessageActions = getMessageActions;
|
|
9020
9251
|
exports.getNonImageAttachments = getNonImageAttachments;
|
|
9021
9252
|
exports.getReadByTooltipText = getReadByTooltipText;
|
|
9253
|
+
exports.getWholeChar = getWholeChar;
|
|
9022
9254
|
exports.handleActionWarning = handleActionWarning;
|
|
9023
9255
|
exports.hiTranslations = hiTranslations;
|
|
9024
9256
|
exports.isAudioAttachment = isAudioAttachment;
|
|
@@ -9037,6 +9269,10 @@ exports.itTranslations = itTranslations;
|
|
|
9037
9269
|
exports.jaTranslations = jaTranslations;
|
|
9038
9270
|
exports.koTranslations = koTranslations;
|
|
9039
9271
|
exports.listener = Listeners;
|
|
9272
|
+
exports.markDownRenderers = markDownRenderers;
|
|
9273
|
+
exports.matchMarkdownLinks = matchMarkdownLinks;
|
|
9274
|
+
exports.mentionsMarkdownPlugin = mentionsMarkdownPlugin;
|
|
9275
|
+
exports.messageCodeBlocks = messageCodeBlocks;
|
|
9040
9276
|
exports.messageHasAttachments = messageHasAttachments;
|
|
9041
9277
|
exports.messageHasReactions = messageHasReactions;
|
|
9042
9278
|
exports.missingUseFlagHandlerParameterWarning = missingUseFlagHandlerParameterWarning;
|
|
@@ -9059,7 +9295,6 @@ exports.renderPreviewText = renderPreviewText;
|
|
|
9059
9295
|
exports.renderText = renderText;
|
|
9060
9296
|
exports.ruTranslations = ruTranslations;
|
|
9061
9297
|
exports.showMessageActionsBox = showMessageActionsBox;
|
|
9062
|
-
exports.smartRender = smartRender;
|
|
9063
9298
|
exports.trTranslations = trTranslations;
|
|
9064
9299
|
exports.useActionHandler = useActionHandler;
|
|
9065
9300
|
exports.useBreakpoint = useBreakpoint;
|