stream-chat-react 11.3.0 → 11.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.full-bundle.js +5791 -5143
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +4 -4
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/Attachment/Attachment.d.ts.map +1 -1
- package/dist/components/Attachment/Attachment.js +1 -0
- package/dist/components/Attachment/AttachmentContainer.d.ts.map +1 -1
- package/dist/components/Attachment/AttachmentContainer.js +1 -0
- package/dist/components/Attachment/hooks/useAudioController.d.ts.map +1 -1
- package/dist/components/Attachment/hooks/useAudioController.js +1 -0
- package/dist/components/Channel/Channel.d.ts +9 -2
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +119 -45
- package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -1
- package/dist/components/Channel/hooks/useCreateChannelStateContext.js +3 -1
- package/dist/components/Channel/hooks/useCreateTypingContext.d.ts.map +1 -1
- package/dist/components/Channel/hooks/useCreateTypingContext.js +3 -1
- package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
- package/dist/components/ChannelList/ChannelList.js +3 -0
- package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelDeletedListener.js +1 -0
- package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelHiddenListener.js +1 -0
- package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelTruncatedListener.js +1 -0
- package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelUpdatedListener.js +1 -0
- package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelVisibleListener.js +1 -0
- package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.js +1 -0
- package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useMessageNewListener.js +1 -0
- package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js +1 -0
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.js +1 -0
- package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.js +1 -0
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.js +2 -0
- package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.js +1 -0
- package/dist/components/ChannelPreview/ChannelPreview.d.ts +16 -0
- package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreview.js +18 -2
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts +5 -0
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.js +62 -2
- package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts.map +1 -1
- package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.js +1 -0
- package/dist/components/ChannelPreview/hooks/useIsChannelMuted.d.ts.map +1 -1
- package/dist/components/ChannelPreview/hooks/useIsChannelMuted.js +1 -0
- package/dist/components/ChannelSearch/SearchBar.d.ts.map +1 -1
- package/dist/components/ChannelSearch/SearchBar.js +2 -0
- package/dist/components/ChannelSearch/SearchResults.d.ts.map +1 -1
- package/dist/components/ChannelSearch/SearchResults.js +3 -1
- package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts.map +1 -1
- package/dist/components/ChannelSearch/hooks/useChannelSearch.js +7 -1
- package/dist/components/Chat/hooks/useChat.d.ts.map +1 -1
- package/dist/components/Chat/hooks/useChat.js +2 -0
- package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
- package/dist/components/Chat/hooks/useCreateChatContext.js +3 -1
- package/dist/components/Emojis/index.cjs.js +1 -1
- package/dist/components/Gallery/ModalGallery.d.ts.map +1 -1
- package/dist/components/Gallery/ModalGallery.js +3 -1
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +1 -0
- package/dist/components/LoadMore/LoadMoreButton.d.ts.map +1 -1
- package/dist/components/LoadMore/LoadMoreButton.js +1 -0
- package/dist/components/LoadMore/LoadMorePaginator.d.ts.map +1 -1
- package/dist/components/LoadMore/LoadMorePaginator.js +1 -0
- package/dist/components/Message/Message.d.ts.map +1 -1
- package/dist/components/Message/Message.js +40 -8
- package/dist/components/Message/MessageText.d.ts.map +1 -1
- package/dist/components/Message/MessageText.js +1 -0
- package/dist/components/Message/hooks/index.d.ts +2 -0
- package/dist/components/Message/hooks/index.d.ts.map +1 -1
- package/dist/components/Message/hooks/index.js +2 -0
- package/dist/components/Message/hooks/useMarkUnreadHandler.d.ts +10 -0
- package/dist/components/Message/hooks/useMarkUnreadHandler.d.ts.map +1 -0
- package/dist/components/Message/hooks/useMarkUnreadHandler.js +45 -0
- package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useReactionHandler.js +6 -2
- package/dist/components/Message/hooks/useReactionsFetcher.d.ts +11 -0
- package/dist/components/Message/hooks/useReactionsFetcher.d.ts.map +1 -0
- package/dist/components/Message/hooks/useReactionsFetcher.js +58 -0
- package/dist/components/Message/hooks/useUserRole.d.ts +1 -0
- package/dist/components/Message/hooks/useUserRole.d.ts.map +1 -1
- package/dist/components/Message/hooks/useUserRole.js +2 -0
- package/dist/components/Message/types.d.ts +7 -1
- package/dist/components/Message/types.d.ts.map +1 -1
- package/dist/components/Message/utils.d.ts +4 -1
- package/dist/components/Message/utils.d.ts.map +1 -1
- package/dist/components/Message/utils.js +12 -3
- package/dist/components/MessageActions/MessageActions.d.ts +1 -1
- package/dist/components/MessageActions/MessageActions.d.ts.map +1 -1
- package/dist/components/MessageActions/MessageActions.js +14 -5
- package/dist/components/MessageActions/MessageActionsBox.d.ts +4 -3
- package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
- package/dist/components/MessageActions/MessageActionsBox.js +8 -24
- package/dist/components/MessageActions/hooks/index.d.ts +2 -0
- package/dist/components/MessageActions/hooks/index.d.ts.map +1 -0
- package/dist/components/MessageActions/hooks/index.js +1 -0
- package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts +18 -0
- package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts.map +1 -0
- package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.js +32 -0
- package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputFlat.js +1 -0
- package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputSmall.js +1 -0
- package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useAttachments.js +3 -1
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +3 -1
- package/dist/components/MessageInput/hooks/useFileUploads.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useFileUploads.js +3 -0
- package/dist/components/MessageInput/hooks/useImageUploads.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useImageUploads.js +4 -1
- package/dist/components/MessageInput/hooks/useLinkPreviews.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useLinkPreviews.js +5 -1
- package/dist/components/MessageInput/hooks/useMessageInputText.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputText.js +6 -2
- package/dist/components/MessageInput/hooks/usePasteHandler.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/usePasteHandler.js +3 -1
- package/dist/components/MessageInput/hooks/useUserTrigger.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useUserTrigger.js +1 -0
- package/dist/components/MessageList/MessageList.d.ts +6 -1
- package/dist/components/MessageList/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.js +32 -13
- package/dist/components/MessageList/MessageListMainPanel.d.ts +1 -0
- package/dist/components/MessageList/MessageListMainPanel.d.ts.map +1 -1
- package/dist/components/MessageList/MessageListMainPanel.js +2 -1
- package/dist/components/MessageList/MessageListNotifications.d.ts +1 -0
- package/dist/components/MessageList/MessageListNotifications.d.ts.map +1 -1
- package/dist/components/MessageList/MessageListNotifications.js +2 -2
- package/dist/components/MessageList/MessageNotification.d.ts +2 -0
- package/dist/components/MessageList/MessageNotification.d.ts.map +1 -1
- package/dist/components/MessageList/ScrollToBottomButton.d.ts +1 -1
- package/dist/components/MessageList/ScrollToBottomButton.d.ts.map +1 -1
- package/dist/components/MessageList/ScrollToBottomButton.js +3 -43
- package/dist/components/MessageList/UnreadMessagesNotification.d.ts +6 -0
- package/dist/components/MessageList/UnreadMessagesNotification.d.ts.map +1 -0
- package/dist/components/MessageList/UnreadMessagesNotification.js +12 -0
- package/dist/components/MessageList/UnreadMessagesSeparator.d.ts +6 -0
- package/dist/components/MessageList/UnreadMessagesSeparator.d.ts.map +1 -0
- package/dist/components/MessageList/UnreadMessagesSeparator.js +10 -0
- package/dist/components/MessageList/VirtualizedMessageList.d.ts +12 -1
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +51 -30
- package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts +5 -3
- package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageListComponents.js +27 -6
- package/dist/components/MessageList/hooks/MessageList/index.d.ts +1 -0
- package/dist/components/MessageList/hooks/MessageList/index.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/index.js +1 -0
- package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.js +3 -1
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +5 -8
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.js +22 -31
- package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.js +1 -0
- package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.js +1 -0
- package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts +7 -0
- package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.js +42 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/index.js +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.js +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts +22 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.js +29 -0
- package/dist/components/MessageList/hooks/useMarkRead.d.ts +19 -0
- package/dist/components/MessageList/hooks/useMarkRead.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/useMarkRead.js +38 -0
- package/dist/components/MessageList/icons.d.ts +1 -0
- package/dist/components/MessageList/icons.d.ts.map +1 -1
- package/dist/components/MessageList/icons.js +2 -0
- package/dist/components/MessageList/index.d.ts +3 -0
- package/dist/components/MessageList/index.d.ts.map +1 -1
- package/dist/components/MessageList/index.js +3 -0
- package/dist/components/MessageList/renderMessages.d.ts +33 -0
- package/dist/components/MessageList/renderMessages.d.ts.map +1 -0
- package/dist/components/MessageList/renderMessages.js +35 -0
- package/dist/components/MessageList/utils.d.ts.map +1 -1
- package/dist/components/MessageList/utils.js +1 -1
- package/dist/components/Reactions/ReactionsList.d.ts +2 -1
- package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
- package/dist/components/Reactions/ReactionsList.js +32 -41
- package/dist/components/Reactions/ReactionsListModal.d.ts +13 -0
- package/dist/components/Reactions/ReactionsListModal.d.ts.map +1 -0
- package/dist/components/Reactions/ReactionsListModal.js +46 -0
- package/dist/components/Reactions/SimpleReactionsList.d.ts +2 -4
- package/dist/components/Reactions/SimpleReactionsList.d.ts.map +1 -1
- package/dist/components/Reactions/SimpleReactionsList.js +7 -24
- package/dist/components/Reactions/hooks/useFetchReactions.d.ts +12 -0
- package/dist/components/Reactions/hooks/useFetchReactions.d.ts.map +1 -0
- package/dist/components/Reactions/hooks/useFetchReactions.js +50 -0
- package/dist/components/Reactions/hooks/useProcessReactions.d.ts +3 -13
- package/dist/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -1
- package/dist/components/Reactions/hooks/useProcessReactions.js +51 -43
- package/dist/components/Reactions/types.d.ts +9 -0
- package/dist/components/Reactions/types.d.ts.map +1 -0
- package/dist/components/Reactions/types.js +1 -0
- package/dist/components/Thread/Thread.js +1 -0
- package/dist/context/ChannelActionContext.d.ts +2 -0
- package/dist/context/ChannelActionContext.d.ts.map +1 -1
- package/dist/context/ComponentContext.d.ts +6 -2
- package/dist/context/ComponentContext.d.ts.map +1 -1
- package/dist/context/MessageContext.d.ts +8 -2
- package/dist/context/MessageContext.d.ts.map +1 -1
- package/dist/css/v2/index.css +1 -1
- package/dist/css/v2/index.layout.css +1 -1
- package/dist/i18n/Streami18n.d.ts +10 -0
- package/dist/i18n/Streami18n.d.ts.map +1 -1
- package/dist/i18n/de.json +10 -0
- package/dist/i18n/en.json +10 -0
- package/dist/i18n/es.json +12 -0
- package/dist/i18n/fr.json +12 -0
- package/dist/i18n/hi.json +11 -0
- package/dist/i18n/it.json +12 -0
- package/dist/i18n/ja.json +8 -0
- package/dist/i18n/ko.json +8 -0
- package/dist/i18n/nl.json +10 -0
- package/dist/i18n/pt.json +12 -0
- package/dist/i18n/ru.json +14 -0
- package/dist/i18n/tr.json +10 -0
- package/dist/{icons-b84cd102.js → icons-7ead3d97.js} +12 -12
- package/dist/index.cjs.js +4911 -4265
- package/dist/scss/v2/AttachmentPreviewList/AttachmentPreviewList-layout.scss +1 -0
- package/dist/scss/v2/Message/Message-layout.scss +68 -10
- package/dist/scss/v2/Message/Message-theme.scss +34 -2
- package/dist/scss/v2/MessageActionsBox/MessageActionsBox-layout.scss +0 -11
- package/dist/scss/v2/MessageBounceOptions/MessageBounceOptions-layout.scss +18 -0
- package/dist/scss/v2/MessageBounceOptions/MessageBounceOptions-theme.scss +51 -0
- package/dist/scss/v2/MessageReactions/MessageReactions-layout.scss +74 -0
- package/dist/scss/v2/MessageReactions/MessageReactions-theme.scss +17 -0
- package/dist/scss/v2/_base.scss +3 -20
- package/dist/scss/v2/_global-theme-variables.scss +3 -0
- package/dist/scss/v2/index.layout.scss +1 -0
- package/dist/scss/v2/index.scss +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScrollLocationLogic.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/MessageList/useScrollLocationLogic.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAI9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,MAAM,4BAA4B,CACtC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;
|
|
1
|
+
{"version":3,"file":"useScrollLocationLogic.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/MessageList/useScrollLocationLogic.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAI9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,MAAM,4BAA4B,CACtC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;sBA2DvB,aAAa,CAAC,cAAc,CAAC;;;CAgCxC,CAAC"}
|
|
@@ -23,6 +23,7 @@ export var useScrollLocationLogic = function (params) {
|
|
|
23
23
|
setWrapperRect(listElement.getBoundingClientRect());
|
|
24
24
|
scrollToBottom();
|
|
25
25
|
}
|
|
26
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
26
27
|
}, [listElement, hasMoreNewer]);
|
|
27
28
|
var updateScrollTop = useMessageListScrollManager({
|
|
28
29
|
loadMoreScrollThreshold: loadMoreScrollThreshold,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type UseUnreadMessagesNotificationParams = {
|
|
2
|
+
unreadCount?: number;
|
|
3
|
+
};
|
|
4
|
+
export declare const useUnreadMessagesNotification: ({ unreadCount, }: UseUnreadMessagesNotificationParams) => {
|
|
5
|
+
show: boolean;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=useUnreadMessagesNotification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUnreadMessagesNotification.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,mCAAmC,GAAG;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,6BAA6B,qBAEvC,mCAAmC;;CAwCrC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { useChannelStateContext } from '../../../../context';
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { MESSAGE_LIST_MAIN_PANEL_CLASS } from '../../MessageListMainPanel';
|
|
4
|
+
import { UNREAD_MESSAGE_SEPARATOR_CLASS } from '../../UnreadMessagesSeparator';
|
|
5
|
+
var targetIsVisibleInContainer = function (element, container) {
|
|
6
|
+
var msgListHeight = container.getBoundingClientRect().height;
|
|
7
|
+
var targetMessageY = element.getBoundingClientRect().y;
|
|
8
|
+
return 0 <= targetMessageY && targetMessageY <= msgListHeight;
|
|
9
|
+
};
|
|
10
|
+
export var useUnreadMessagesNotification = function (_a) {
|
|
11
|
+
var unreadCount = _a.unreadCount;
|
|
12
|
+
var messages = useChannelStateContext('UnreadMessagesNotification').messages;
|
|
13
|
+
var _b = useState(false), show = _b[0], setShow = _b[1];
|
|
14
|
+
var intersectionObserverIsSupported = typeof IntersectionObserver !== 'undefined';
|
|
15
|
+
useEffect(function () {
|
|
16
|
+
if (!(unreadCount && intersectionObserverIsSupported)) {
|
|
17
|
+
setShow(false);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
var msgListPanel = document.querySelector(".".concat(MESSAGE_LIST_MAIN_PANEL_CLASS));
|
|
21
|
+
if (!msgListPanel)
|
|
22
|
+
return;
|
|
23
|
+
var observedTarget = document.querySelector(".".concat(UNREAD_MESSAGE_SEPARATOR_CLASS));
|
|
24
|
+
if (!observedTarget) {
|
|
25
|
+
setShow(true);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
setShow(!targetIsVisibleInContainer(observedTarget, msgListPanel));
|
|
29
|
+
var observer = new IntersectionObserver(function (elements) {
|
|
30
|
+
if (!elements.length)
|
|
31
|
+
return;
|
|
32
|
+
var _a = elements[0], boundingClientRect = _a.boundingClientRect, isIntersecting = _a.isIntersecting, rootBounds = _a.rootBounds;
|
|
33
|
+
var isScrolledAboveTargetTop = rootBounds && boundingClientRect && rootBounds.bottom < boundingClientRect.top;
|
|
34
|
+
setShow(!isIntersecting && !isScrolledAboveTargetTop);
|
|
35
|
+
}, { root: msgListPanel });
|
|
36
|
+
observer.observe(observedTarget);
|
|
37
|
+
return function () {
|
|
38
|
+
observer.disconnect();
|
|
39
|
+
};
|
|
40
|
+
}, [intersectionObserverIsSupported, messages, unreadCount]);
|
|
41
|
+
return { show: show && intersectionObserverIsSupported };
|
|
42
|
+
};
|
|
@@ -4,4 +4,5 @@ export * from './useNewMessageNotification';
|
|
|
4
4
|
export * from './usePrependMessagesCount';
|
|
5
5
|
export * from './useScrollToBottomOnNewMessage';
|
|
6
6
|
export * from './useShouldForceScrollToBottom';
|
|
7
|
+
export * from './useUnreadMessagesNotificationVirtualized';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/VirtualizedMessageList/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/VirtualizedMessageList/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4CAA4C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGiphyPreview.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,eAAO,MAAM,eAAe,2GAGJ,OAAO;;;
|
|
1
|
+
{"version":3,"file":"useGiphyPreview.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,eAAO,MAAM,eAAe,2GAGJ,OAAO;;;CAuB9B,CAAC"}
|
|
@@ -13,6 +13,7 @@ export var useGiphyPreview = function (separateGiphyPreview) {
|
|
|
13
13
|
if (separateGiphyPreview)
|
|
14
14
|
client.on('message.new', handleEvent);
|
|
15
15
|
return function () { return client.off('message.new', handleEvent); };
|
|
16
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
16
17
|
}, [separateGiphyPreview]);
|
|
17
18
|
return { giphyPreviewMessage: giphyPreviewMessage, setGiphyPreviewMessage: setGiphyPreviewMessage };
|
|
18
19
|
};
|
package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePrependMessagesCount.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAOzE,wBAAgB,yBAAyB,CACvC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"usePrependMessagesCount.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAOzE,wBAAgB,yBAAyB,CACvC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,UAiEzE"}
|
|
@@ -50,6 +50,7 @@ export function usePrependedMessagesCount(messages, hasDateSeparator) {
|
|
|
50
50
|
return 0;
|
|
51
51
|
// TODO: there's a bug here, the messages prop is the same array instance (something mutates it)
|
|
52
52
|
// that's why the second dependency is necessary
|
|
53
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
53
54
|
}, [firstRealMessageIndex, messages, messages === null || messages === void 0 ? void 0 : messages.length]);
|
|
54
55
|
return numItemsPrepended;
|
|
55
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScrollToBottomOnNewMessage.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,KAAK,mCAAmC,CACtC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,MAAM;IACN,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,4FAA4F;IAC5F,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,6BAA6B,
|
|
1
|
+
{"version":3,"file":"useScrollToBottomOnNewMessage.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,KAAK,mCAAmC,CACtC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,MAAM;IACN,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,4FAA4F;IAC5F,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,6BAA6B,kNA4CzC,CAAC"}
|
package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js
CHANGED
|
@@ -24,5 +24,6 @@ export var useScrollToBottomOnNewMessage = function (_a) {
|
|
|
24
24
|
window.removeEventListener('focus', scrollToBottomIfConfigured);
|
|
25
25
|
window.removeEventListener('blur', resetNewMessagesReceivedInBackground);
|
|
26
26
|
};
|
|
27
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
27
28
|
}, [scrollToBottomIfConfigured]);
|
|
28
29
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useShouldForceScrollToBottom.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,wBAAgB,4BAA4B,CAC1C,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useShouldForceScrollToBottom.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,wBAAgB,4BAA4B,CAC1C,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,iBA4BtE"}
|
package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.js
CHANGED
|
@@ -19,6 +19,7 @@ export function useShouldForceScrollToBottom(messages, currentUserId) {
|
|
|
19
19
|
initialFocusRegistered.current = true;
|
|
20
20
|
recheckForNewOwnMessage();
|
|
21
21
|
}
|
|
22
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
22
23
|
}, [messages, messages === null || messages === void 0 ? void 0 : messages.length]);
|
|
23
24
|
return recheckForNewOwnMessage;
|
|
24
25
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { StreamMessage } from '../../../../context';
|
|
2
|
+
import type { DefaultStreamChatGenerics } from '../../../../types/types';
|
|
3
|
+
export type UseUnreadMessagesNotificationParams = {
|
|
4
|
+
unreadCount: number;
|
|
5
|
+
lastRead?: Date | null;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Controls the logic when an `UnreadMessagesNotification` component should be shown.
|
|
9
|
+
* In virtualized message list there is no notion of being scrolled below or above `UnreadMessagesSeparator`.
|
|
10
|
+
* Therefore, the `UnreadMessagesNotification` component is rendered based on timestamps.
|
|
11
|
+
* If the there are unread messages in the channel and the `VirtualizedMessageList` renders
|
|
12
|
+
* messages created later than the last read message in the channel, then the
|
|
13
|
+
* `UnreadMessagesNotification` component is rendered. This is an approximate equivalent to being
|
|
14
|
+
* scrolled below the `UnreadMessagesNotification` component.
|
|
15
|
+
* @param lastRead
|
|
16
|
+
* @param unreadCount
|
|
17
|
+
*/
|
|
18
|
+
export declare const useUnreadMessagesNotificationVirtualized: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ lastRead, unreadCount, }: UseUnreadMessagesNotificationParams) => {
|
|
19
|
+
show: boolean;
|
|
20
|
+
toggleShowUnreadMessagesNotification: (renderedMessages: StreamMessage<StreamChatGenerics>[]) => void;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=useUnreadMessagesNotificationVirtualized.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUnreadMessagesNotificationVirtualized.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,MAAM,mCAAmC,GAAG;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wCAAwC,iHAKlD,mCAAmC;;;CAmBrC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Controls the logic when an `UnreadMessagesNotification` component should be shown.
|
|
4
|
+
* In virtualized message list there is no notion of being scrolled below or above `UnreadMessagesSeparator`.
|
|
5
|
+
* Therefore, the `UnreadMessagesNotification` component is rendered based on timestamps.
|
|
6
|
+
* If the there are unread messages in the channel and the `VirtualizedMessageList` renders
|
|
7
|
+
* messages created later than the last read message in the channel, then the
|
|
8
|
+
* `UnreadMessagesNotification` component is rendered. This is an approximate equivalent to being
|
|
9
|
+
* scrolled below the `UnreadMessagesNotification` component.
|
|
10
|
+
* @param lastRead
|
|
11
|
+
* @param unreadCount
|
|
12
|
+
*/
|
|
13
|
+
export var useUnreadMessagesNotificationVirtualized = function (_a) {
|
|
14
|
+
var lastRead = _a.lastRead, unreadCount = _a.unreadCount;
|
|
15
|
+
var _b = useState(false), show = _b[0], setShow = _b[1];
|
|
16
|
+
var toggleShowUnreadMessagesNotification = useCallback(function (renderedMessages) {
|
|
17
|
+
if (!renderedMessages.length)
|
|
18
|
+
return;
|
|
19
|
+
var firstRenderedMessageTimestamp = renderedMessages[0].created_at
|
|
20
|
+
? new Date(renderedMessages[0].created_at).getTime()
|
|
21
|
+
: 0;
|
|
22
|
+
setShow(unreadCount > 0 && !!lastRead && firstRenderedMessageTimestamp > lastRead.getTime());
|
|
23
|
+
}, [unreadCount, lastRead]);
|
|
24
|
+
useEffect(function () {
|
|
25
|
+
if (!unreadCount)
|
|
26
|
+
setShow(false);
|
|
27
|
+
}, [unreadCount]);
|
|
28
|
+
return { show: show, toggleShowUnreadMessagesNotification: toggleShowUnreadMessagesNotification };
|
|
29
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
type UseMarkReadParams = {
|
|
2
|
+
isMessageListScrolledToBottom: boolean;
|
|
3
|
+
messageListIsThread: boolean;
|
|
4
|
+
unreadCount: number;
|
|
5
|
+
markReadOnScrolledToBottom?: boolean;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Takes care of marking a channel read. The channel is read only if all the following applies:
|
|
9
|
+
* 1. the message list is not rendered in a thread
|
|
10
|
+
* 2. the message list is scrolled to the bottom
|
|
11
|
+
* 3. the channel was not marked unread by the user
|
|
12
|
+
* @param isMessageListScrolledToBottom
|
|
13
|
+
* @param messageListIsThread
|
|
14
|
+
* @param unreadCount
|
|
15
|
+
* @param wasChannelMarkedUnread
|
|
16
|
+
*/
|
|
17
|
+
export declare const useMarkRead: ({ isMessageListScrolledToBottom, markReadOnScrolledToBottom, messageListIsThread, unreadCount, }: UseMarkReadParams) => void;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=useMarkRead.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMarkRead.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useMarkRead.ts"],"names":[],"mappings":"AAGA,KAAK,iBAAiB,GAAG;IACvB,6BAA6B,EAAE,OAAO,CAAC;IACvC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,qGAKrB,iBAAiB,SA4BnB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { useChannelActionContext } from '../../../context';
|
|
3
|
+
/**
|
|
4
|
+
* Takes care of marking a channel read. The channel is read only if all the following applies:
|
|
5
|
+
* 1. the message list is not rendered in a thread
|
|
6
|
+
* 2. the message list is scrolled to the bottom
|
|
7
|
+
* 3. the channel was not marked unread by the user
|
|
8
|
+
* @param isMessageListScrolledToBottom
|
|
9
|
+
* @param messageListIsThread
|
|
10
|
+
* @param unreadCount
|
|
11
|
+
* @param wasChannelMarkedUnread
|
|
12
|
+
*/
|
|
13
|
+
export var useMarkRead = function (_a) {
|
|
14
|
+
var isMessageListScrolledToBottom = _a.isMessageListScrolledToBottom, markReadOnScrolledToBottom = _a.markReadOnScrolledToBottom, messageListIsThread = _a.messageListIsThread, unreadCount = _a.unreadCount;
|
|
15
|
+
var markRead = useChannelActionContext('useMarkRead').markRead;
|
|
16
|
+
useEffect(function () {
|
|
17
|
+
var shouldMarkRead = !messageListIsThread &&
|
|
18
|
+
isMessageListScrolledToBottom &&
|
|
19
|
+
markReadOnScrolledToBottom &&
|
|
20
|
+
unreadCount > 0;
|
|
21
|
+
var onVisibilityChange = function () {
|
|
22
|
+
if (!document.hidden && shouldMarkRead)
|
|
23
|
+
markRead();
|
|
24
|
+
};
|
|
25
|
+
document.addEventListener('visibilitychange', onVisibilityChange);
|
|
26
|
+
if (shouldMarkRead)
|
|
27
|
+
markRead();
|
|
28
|
+
return function () {
|
|
29
|
+
document.removeEventListener('visibilitychange', onVisibilityChange);
|
|
30
|
+
};
|
|
31
|
+
}, [
|
|
32
|
+
isMessageListScrolledToBottom,
|
|
33
|
+
markRead,
|
|
34
|
+
messageListIsThread,
|
|
35
|
+
unreadCount,
|
|
36
|
+
markReadOnScrolledToBottom,
|
|
37
|
+
]);
|
|
38
|
+
};
|
|
@@ -4,5 +4,6 @@ interface ArrowProps {
|
|
|
4
4
|
}
|
|
5
5
|
export declare const ArrowUp: ({ className, color }: ArrowProps) => JSX.Element;
|
|
6
6
|
export declare const ArrowDown: ({ className, color }: ArrowProps) => JSX.Element;
|
|
7
|
+
export declare const CloseIcon: () => JSX.Element;
|
|
7
8
|
export {};
|
|
8
9
|
//# sourceMappingURL=icons.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/icons.tsx"],"names":[],"mappings":"AAEA,UAAU,UAAU;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,OAAO,yBAA0B,UAAU,gBAevD,CAAC;AAEF,eAAO,MAAM,SAAS,yBAA0B,UAAU,gBAezD,CAAC"}
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/icons.tsx"],"names":[],"mappings":"AAEA,UAAU,UAAU;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,OAAO,yBAA0B,UAAU,gBAevD,CAAC;AAEF,eAAO,MAAM,SAAS,yBAA0B,UAAU,gBAezD,CAAC;AAEF,eAAO,MAAM,SAAS,mBAIrB,CAAC"}
|
|
@@ -9,3 +9,5 @@ export var ArrowDown = function (_a) {
|
|
|
9
9
|
return (React.createElement("svg", { className: className, "data-testid": 'arrow-down', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
|
|
10
10
|
React.createElement("path", { d: 'M7.41 8.29504L12 12.875L16.59 8.29504L18 9.70504L12 15.705L6 9.70504L7.41 8.29504Z', fill: color || 'var(--primary-color)' })));
|
|
11
11
|
};
|
|
12
|
+
export var CloseIcon = function () { return (React.createElement("svg", { fill: 'currentColor', viewBox: '0 0 14 13', xmlns: 'http://www.w3.org/2000/svg' },
|
|
13
|
+
React.createElement("path", { d: 'M1.32227 12.3408C0.944336 11.9629 0.953125 11.3213 1.32227 10.9521L5.60254 6.66309L1.32227 2.38281C0.953125 2.01367 0.944336 1.37207 1.32227 0.994141C1.7002 0.616211 2.3418 0.625 2.71094 0.985352L7 5.27441L11.2803 0.994141C11.6494 0.625 12.291 0.616211 12.6689 0.994141C13.0469 1.37207 13.0381 2.01367 12.6689 2.38281L8.38867 6.66309L12.6689 10.9521C13.0381 11.3213 13.0469 11.9629 12.6689 12.3408C12.291 12.7188 11.6494 12.71 11.2803 12.3408L7 8.06055L2.71094 12.3408C2.3418 12.71 1.7002 12.7188 1.32227 12.3408Z' }))); };
|
|
@@ -4,7 +4,10 @@ export * from './MessageList';
|
|
|
4
4
|
export * from './MessageListNotifications';
|
|
5
5
|
export * from './MessageNotification';
|
|
6
6
|
export * from './ScrollToBottomButton';
|
|
7
|
+
export * from './UnreadMessagesNotification';
|
|
8
|
+
export * from './UnreadMessagesSeparator';
|
|
7
9
|
export * from './VirtualizedMessageList';
|
|
8
10
|
export * from './hooks';
|
|
11
|
+
export * from './renderMessages';
|
|
9
12
|
export * from './utils';
|
|
10
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC"}
|
|
@@ -4,6 +4,9 @@ export * from './MessageList';
|
|
|
4
4
|
export * from './MessageListNotifications';
|
|
5
5
|
export * from './MessageNotification';
|
|
6
6
|
export * from './ScrollToBottomButton';
|
|
7
|
+
export * from './UnreadMessagesNotification';
|
|
8
|
+
export * from './UnreadMessagesSeparator';
|
|
7
9
|
export * from './VirtualizedMessageList';
|
|
8
10
|
export * from './hooks';
|
|
11
|
+
export * from './renderMessages';
|
|
9
12
|
export * from './utils';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { MessageProps } from '../Message/types';
|
|
3
|
+
import { StreamMessage } from '../../context/ChannelStateContext';
|
|
4
|
+
import { DefaultStreamChatGenerics } from '../../types/types';
|
|
5
|
+
import { ComponentContextValue, CustomClasses } from '../../context';
|
|
6
|
+
import { GroupStyle } from './utils';
|
|
7
|
+
import { ChannelState as StreamChannelState, UserResponse } from 'stream-chat';
|
|
8
|
+
export interface RenderMessagesOptions<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> {
|
|
9
|
+
components: ComponentContextValue<StreamChatGenerics>;
|
|
10
|
+
lastReceivedMessageId: string | null;
|
|
11
|
+
messageGroupStyles: Record<string, GroupStyle>;
|
|
12
|
+
messages: Array<StreamMessage<StreamChatGenerics>>;
|
|
13
|
+
/**
|
|
14
|
+
* Object mapping message IDs of own messages to the users who read those messages.
|
|
15
|
+
*/
|
|
16
|
+
readData: Record<string, Array<UserResponse<StreamChatGenerics>>>;
|
|
17
|
+
/**
|
|
18
|
+
* Props forwarded to the Message component.
|
|
19
|
+
*/
|
|
20
|
+
sharedMessageProps: SharedMessageProps<StreamChatGenerics>;
|
|
21
|
+
customClasses?: CustomClasses;
|
|
22
|
+
/**
|
|
23
|
+
* Current user's read status.
|
|
24
|
+
* Useful to determine, when a channel has been marked read the last time, the last read message, count of unread messages.
|
|
25
|
+
*/
|
|
26
|
+
ownReadState?: StreamChannelState<StreamChatGenerics>['read'][keyof StreamChannelState<StreamChatGenerics>['read']];
|
|
27
|
+
}
|
|
28
|
+
export type SharedMessageProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Omit<MessageProps<StreamChatGenerics>, MessagePropsToOmit>;
|
|
29
|
+
export type MessageRenderer<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = (options: RenderMessagesOptions<StreamChatGenerics>) => Array<ReactNode>;
|
|
30
|
+
type MessagePropsToOmit = 'channel' | 'groupStyles' | 'initialMessage' | 'lastReceivedId' | 'message' | 'readBy';
|
|
31
|
+
export declare function defaultRenderMessages<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ components, customClasses, lastReceivedMessageId: lastReceivedId, messageGroupStyles, messages, ownReadState, readData, sharedMessageProps: messageProps, }: RenderMessagesOptions<StreamChatGenerics>): JSX.Element[];
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=renderMessages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderMessages.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/renderMessages.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAY,SAAS,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAU,MAAM,eAAe,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,YAAY,IAAI,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/E,MAAM,WAAW,qBAAqB,CACpC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB;IAEhF,UAAU,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IACtD,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/C,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACnD;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAClE;;OAEG;IACH,kBAAkB,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAC3D,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;OAGG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;CACrH;AAED,MAAM,MAAM,kBAAkB,CAC5B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAE/D,MAAM,MAAM,eAAe,CACzB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,CAAC,OAAO,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;AAE7E,KAAK,kBAAkB,GACnB,SAAS,GACT,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,SAAS,GACT,QAAQ,CAAC;AAEb,wBAAgB,qBAAqB,CACnC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,EACA,UAAU,EACV,aAAa,EACb,qBAAqB,EAAE,cAAc,EACrC,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAAE,YAAY,GACjC,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,iBA6D3C"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { __assign } from "tslib";
|
|
2
|
+
import React, { Fragment } from 'react';
|
|
3
|
+
import { isDate } from '../../context';
|
|
4
|
+
import { CUSTOM_MESSAGE_TYPE } from '../../constants/messageTypes';
|
|
5
|
+
import { Message } from '../Message/Message';
|
|
6
|
+
export function defaultRenderMessages(_a) {
|
|
7
|
+
var components = _a.components, customClasses = _a.customClasses, lastReceivedId = _a.lastReceivedMessageId, messageGroupStyles = _a.messageGroupStyles, messages = _a.messages, ownReadState = _a.ownReadState, readData = _a.readData, messageProps = _a.sharedMessageProps;
|
|
8
|
+
var DateSeparator = components.DateSeparator, HeaderComponent = components.HeaderComponent, MessageSystem = components.MessageSystem, UnreadMessagesSeparator = components.UnreadMessagesSeparator;
|
|
9
|
+
return messages.map(function (message, index) {
|
|
10
|
+
if (message.customType === CUSTOM_MESSAGE_TYPE.date && message.date && isDate(message.date)) {
|
|
11
|
+
return (React.createElement("li", { key: "".concat(message.date.toISOString(), "-i") },
|
|
12
|
+
React.createElement(DateSeparator, { date: message.date, formatDate: messageProps.formatDate, unread: message.unread })));
|
|
13
|
+
}
|
|
14
|
+
if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
|
|
15
|
+
return (React.createElement("li", { key: 'intro' },
|
|
16
|
+
React.createElement(HeaderComponent, null)));
|
|
17
|
+
}
|
|
18
|
+
if (message.type === 'system') {
|
|
19
|
+
return (React.createElement("li", { key: message.id || message.created_at },
|
|
20
|
+
React.createElement(MessageSystem, { message: message })));
|
|
21
|
+
}
|
|
22
|
+
var groupStyles = messageGroupStyles[message.id] || '';
|
|
23
|
+
var messageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.message) || "str-chat__li str-chat__li--".concat(groupStyles);
|
|
24
|
+
var isNewestMessage = index === messages.length - 1;
|
|
25
|
+
var isLastReadMessage = (ownReadState === null || ownReadState === void 0 ? void 0 : ownReadState.last_read_message_id) === message.id;
|
|
26
|
+
var showUnreadSeparator = isLastReadMessage &&
|
|
27
|
+
!isNewestMessage &&
|
|
28
|
+
((ownReadState === null || ownReadState === void 0 ? void 0 : ownReadState.first_unread_message_id) || (ownReadState === null || ownReadState === void 0 ? void 0 : ownReadState.unread_messages) > 0); // unread count can be 0 if the user marks unread only own messages
|
|
29
|
+
return (React.createElement(Fragment, { key: message.id || message.created_at },
|
|
30
|
+
React.createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass },
|
|
31
|
+
React.createElement(Message, __assign({ groupStyles: [groupStyles], lastReceivedId: lastReceivedId, message: message, readBy: readData[message.id] || [] }, messageProps))),
|
|
32
|
+
showUnreadSeparator && UnreadMessagesSeparator && (React.createElement("li", { className: 'str-chat__li str-chat__unread-messages-separator-wrapper' },
|
|
33
|
+
React.createElement(UnreadMessagesSeparator, { unreadCount: ownReadState.unread_messages })))));
|
|
34
|
+
});
|
|
35
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/utils.ts"],"names":[],"mappings":";AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,KAAK,qBAAqB,CACxB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kEAAkE;IAClE,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,+FAA+F;IAC/F,sBAAsB,CAAC,EAAE,KAAK,CAAC,QAAQ,CACrC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC,CACpE,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,8KAuF3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,GAAG,IAAI,WAQrD,CAAC;AAGF,eAAO,MAAM,eAAe,oJAY3B,CAAC;AAEF,eAAO,MAAM,aAAa;eAIU,IAAI;;mCACnB,OAAO,uDAqC3B,CAAC;AAEF,eAAO,MAAM,WAAW,qJAIL,MAAM,wCAgDxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,EAAE,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErE,eAAO,MAAM,cAAc,oPAMV,OAAO,KACrB,UAyCF,CAAC;AAOF,eAAO,MAAM,uBAAuB,0BAA2B,MAAM,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/utils.ts"],"names":[],"mappings":";AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,KAAK,qBAAqB,CACxB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kEAAkE;IAClE,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,+FAA+F;IAC/F,sBAAsB,CAAC,EAAE,KAAK,CAAC,QAAQ,CACrC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC,CACpE,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,8KAuF3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,GAAG,IAAI,WAQrD,CAAC;AAGF,eAAO,MAAM,eAAe,oJAY3B,CAAC;AAEF,eAAO,MAAM,aAAa;eAIU,IAAI;;mCACnB,OAAO,uDAqC3B,CAAC;AAEF,eAAO,MAAM,WAAW,qJAIL,MAAM,wCAgDxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,EAAE,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErE,eAAO,MAAM,cAAc,oPAMV,OAAO,KACrB,UAyCF,CAAC;AAOF,eAAO,MAAM,uBAAuB,0BAA2B,MAAM,SAAS,MAAM,YACpD,CAAC;AAGjC,eAAO,MAAM,kBAAkB,0BAA2B,MAAM,SAAS,MAAM,YAChD,CAAC"}
|
|
@@ -217,7 +217,7 @@ export var getGroupStyles = function (message, previousMessage, nextMessage, noG
|
|
|
217
217
|
// The MessageList should have configurable the limit for performing the requests.
|
|
218
218
|
// This parameter would then be used within these functions
|
|
219
219
|
export var hasMoreMessagesProbably = function (returnedCountMessages, limit) {
|
|
220
|
-
return returnedCountMessages
|
|
220
|
+
return returnedCountMessages >= limit;
|
|
221
221
|
};
|
|
222
222
|
// @deprecated
|
|
223
223
|
export var hasNotMoreMessages = function (returnedCountMessages, limit) {
|
|
@@ -2,7 +2,8 @@ import type { ReactionResponse } from 'stream-chat';
|
|
|
2
2
|
import type { ReactEventHandler } from '../Message/types';
|
|
3
3
|
import type { DefaultStreamChatGenerics } from '../../types/types';
|
|
4
4
|
import type { ReactionOptions } from './reactionOptions';
|
|
5
|
-
|
|
5
|
+
import { MessageContextValue } from '../../context';
|
|
6
|
+
export type ReactionsListProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Partial<Pick<MessageContextValue<StreamChatGenerics>, 'handleFetchReactions'>> & {
|
|
6
7
|
/** Custom on click handler for an individual reaction, defaults to `onReactionListClick` from the `MessageContext` */
|
|
7
8
|
onClick?: ReactEventHandler;
|
|
8
9
|
/** An array of the own reaction objects to distinguish own reactions visually */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactionsList.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/ReactionsList.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ReactionsList.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/ReactionsList.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGpD,MAAM,MAAM,kBAAkB,CAC5B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,EAAE,sBAAsB,CAAC,CAAC,GAAG;IACnF,sHAAsH;IACtH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,iFAAiF;IACjF,aAAa,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACvD,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,+DAA+D;IAC/D,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,8DAA8D;IAC9D,SAAS,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACnD,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AA8EF;;GAEG;AACH,eAAO,MAAM,aAAa,yJAAwE,CAAC"}
|
|
@@ -1,49 +1,40 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { __rest } from "tslib";
|
|
2
2
|
import React, { useState } from 'react';
|
|
3
3
|
import clsx from 'clsx';
|
|
4
|
-
import { useMessageContext } from '../../context/MessageContext';
|
|
5
|
-
import { useChatContext } from '../../context/ChatContext';
|
|
6
4
|
import { useProcessReactions } from './hooks/useProcessReactions';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
var ButtonWithTooltip = function (_a) {
|
|
10
|
-
var children = _a.children, onMouseEnter = _a.onMouseEnter, onMouseLeave = _a.onMouseLeave, rest = __rest(_a, ["children", "onMouseEnter", "onMouseLeave"]);
|
|
11
|
-
var _b = useState(null), referenceElement = _b[0], setReferenceElement = _b[1];
|
|
12
|
-
var _c = useEnterLeaveHandlers({
|
|
13
|
-
onMouseEnter: onMouseEnter,
|
|
14
|
-
onMouseLeave: onMouseLeave,
|
|
15
|
-
}), handleEnter = _c.handleEnter, handleLeave = _c.handleLeave, tooltipVisible = _c.tooltipVisible;
|
|
16
|
-
var themeVersion = useChatContext('ButtonWithTooltip').themeVersion;
|
|
17
|
-
return (React.createElement(React.Fragment, null,
|
|
18
|
-
themeVersion === '2' && (React.createElement(PopperTooltip, { referenceElement: referenceElement, visible: tooltipVisible }, rest.title)),
|
|
19
|
-
React.createElement("button", __assign({ onMouseEnter: handleEnter, onMouseLeave: handleLeave, ref: setReferenceElement }, rest), children)));
|
|
20
|
-
};
|
|
5
|
+
import { ReactionsListModal } from './ReactionsListModal';
|
|
6
|
+
import { MAX_MESSAGE_REACTIONS_TO_FETCH } from '../Message/hooks';
|
|
21
7
|
var UnMemoizedReactionsList = function (props) {
|
|
22
|
-
var
|
|
23
|
-
var
|
|
24
|
-
var
|
|
25
|
-
|
|
8
|
+
var handleFetchReactions = props.handleFetchReactions, _a = props.reverse, reverse = _a === void 0 ? false : _a, rest = __rest(props, ["handleFetchReactions", "reverse"]);
|
|
9
|
+
var _b = useProcessReactions(rest), existingReactions = _b.existingReactions, hasReactions = _b.hasReactions, totalReactionCount = _b.totalReactionCount;
|
|
10
|
+
var _c = useState(null), selectedReactionType = _c[0], setSelectedReactionType = _c[1];
|
|
11
|
+
var handleReactionButtonClick = function (reactionType) {
|
|
12
|
+
if (totalReactionCount > MAX_MESSAGE_REACTIONS_TO_FETCH) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
setSelectedReactionType(reactionType);
|
|
16
|
+
};
|
|
17
|
+
if (!hasReactions)
|
|
26
18
|
return null;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
'
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
React.createElement(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
React.createElement("span", { className: 'str-chat__reaction-list--counter' }, totalReactionCount)))));
|
|
19
|
+
return (React.createElement(React.Fragment, null,
|
|
20
|
+
React.createElement("div", { "aria-label": 'Reaction list', className: clsx('str-chat__reaction-list str-chat__message-reactions-container', {
|
|
21
|
+
'str-chat__reaction-list--reverse': reverse,
|
|
22
|
+
}), "data-testid": 'reaction-list', role: 'figure' },
|
|
23
|
+
React.createElement("ul", { className: 'str-chat__message-reactions' },
|
|
24
|
+
existingReactions.map(function (_a) {
|
|
25
|
+
var EmojiComponent = _a.EmojiComponent, isOwnReaction = _a.isOwnReaction, reactionCount = _a.reactionCount, reactionType = _a.reactionType;
|
|
26
|
+
return EmojiComponent && (React.createElement("li", { className: clsx('str-chat__message-reaction', {
|
|
27
|
+
'str-chat__message-reaction-own': isOwnReaction,
|
|
28
|
+
}), key: reactionType },
|
|
29
|
+
React.createElement("button", { "aria-label": "Reactions: ".concat(reactionType), "data-testid": "reactions-list-button-".concat(reactionType), onClick: function () { return handleReactionButtonClick(reactionType); }, type: 'button' },
|
|
30
|
+
React.createElement("span", { className: 'str-chat__message-reaction-emoji' },
|
|
31
|
+
React.createElement(EmojiComponent, null)),
|
|
32
|
+
"\u00A0",
|
|
33
|
+
React.createElement("span", { className: 'str-chat__message-reaction-count', "data-testclass": 'reaction-list-reaction-count' }, reactionCount))));
|
|
34
|
+
}),
|
|
35
|
+
React.createElement("li", null,
|
|
36
|
+
React.createElement("span", { className: 'str-chat__reaction-list--counter' }, totalReactionCount)))),
|
|
37
|
+
React.createElement(ReactionsListModal, { handleFetchReactions: handleFetchReactions, onClose: function () { return setSelectedReactionType(null); }, onSelectedReactionTypeChange: setSelectedReactionType, open: selectedReactionType !== null, reactions: existingReactions, selectedReactionType: selectedReactionType })));
|
|
47
38
|
};
|
|
48
39
|
/**
|
|
49
40
|
* Component that displays a list of reactions on a message.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ModalProps } from '../Modal';
|
|
3
|
+
import { ReactionSummary } from './types';
|
|
4
|
+
import { MessageContextValue } from '../../context';
|
|
5
|
+
import { DefaultStreamChatGenerics } from '../../types/types';
|
|
6
|
+
type ReactionsListModalProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = ModalProps & Partial<Pick<MessageContextValue<StreamChatGenerics>, 'handleFetchReactions'>> & {
|
|
7
|
+
reactions: ReactionSummary[];
|
|
8
|
+
selectedReactionType: string | null;
|
|
9
|
+
onSelectedReactionTypeChange?: (reactionType: string) => void;
|
|
10
|
+
};
|
|
11
|
+
export declare function ReactionsListModal({ handleFetchReactions, onSelectedReactionTypeChange, reactions, selectedReactionType, ...modalProps }: ReactionsListModalProps): JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=ReactionsListModal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReactionsListModal.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/ReactionsListModal.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAS,UAAU,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,KAAK,uBAAuB,CAC1B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,UAAU,GACZ,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,EAAE,sBAAsB,CAAC,CAAC,GAAG;IAC/E,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,4BAA4B,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/D,CAAC;AAEJ,wBAAgB,kBAAkB,CAAC,EACjC,oBAAoB,EACpB,4BAA4B,EAC5B,SAAS,EACT,oBAAoB,EACpB,GAAG,UAAU,EACd,EAAE,uBAAuB,eAyEzB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { __assign, __rest } from "tslib";
|
|
2
|
+
import React, { useMemo } from 'react';
|
|
3
|
+
import clsx from 'clsx';
|
|
4
|
+
import { Modal } from '../Modal';
|
|
5
|
+
import { useFetchReactions } from './hooks/useFetchReactions';
|
|
6
|
+
import { LoadingIndicator } from '../Loading';
|
|
7
|
+
import { Avatar } from '../Avatar';
|
|
8
|
+
export function ReactionsListModal(_a) {
|
|
9
|
+
var _b;
|
|
10
|
+
var handleFetchReactions = _a.handleFetchReactions, onSelectedReactionTypeChange = _a.onSelectedReactionTypeChange, reactions = _a.reactions, selectedReactionType = _a.selectedReactionType, modalProps = __rest(_a, ["handleFetchReactions", "onSelectedReactionTypeChange", "reactions", "selectedReactionType"]);
|
|
11
|
+
var selectedReaction = reactions.find(function (_a) {
|
|
12
|
+
var reactionType = _a.reactionType;
|
|
13
|
+
return reactionType === selectedReactionType;
|
|
14
|
+
});
|
|
15
|
+
var SelectedEmojiComponent = (_b = selectedReaction === null || selectedReaction === void 0 ? void 0 : selectedReaction.EmojiComponent) !== null && _b !== void 0 ? _b : null;
|
|
16
|
+
var _c = useFetchReactions({
|
|
17
|
+
handleFetchReactions: handleFetchReactions,
|
|
18
|
+
shouldFetch: modalProps.open,
|
|
19
|
+
}), areReactionsLoading = _c.isLoading, allReactions = _c.reactions;
|
|
20
|
+
var currentReactions = useMemo(function () {
|
|
21
|
+
if (!selectedReactionType) {
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
return allReactions.filter(function (reaction) { return reaction.type === selectedReactionType && reaction.user; });
|
|
25
|
+
}, [allReactions, selectedReactionType]);
|
|
26
|
+
return (React.createElement(Modal, __assign({}, modalProps),
|
|
27
|
+
React.createElement("div", { className: 'str-chat__message-reactions-details', "data-testid": 'reactions-list-modal' },
|
|
28
|
+
React.createElement("div", { className: 'str-chat__message-reactions-details-reaction-types' }, reactions.map(function (_a) {
|
|
29
|
+
var EmojiComponent = _a.EmojiComponent, reactionCount = _a.reactionCount, reactionType = _a.reactionType;
|
|
30
|
+
return EmojiComponent && (React.createElement("div", { className: clsx('str-chat__message-reactions-details-reaction-type', {
|
|
31
|
+
'str-chat__message-reactions-details-reaction-type--selected': selectedReactionType === reactionType,
|
|
32
|
+
}), "data-testid": "reaction-details-selector-".concat(reactionType), key: reactionType, onClick: function () { return onSelectedReactionTypeChange === null || onSelectedReactionTypeChange === void 0 ? void 0 : onSelectedReactionTypeChange(reactionType); } },
|
|
33
|
+
React.createElement("span", { className: 'emoji str-chat__message-reaction-emoji' },
|
|
34
|
+
React.createElement(EmojiComponent, null)),
|
|
35
|
+
"\u00A0",
|
|
36
|
+
React.createElement("span", { className: 'str-chat__message-reaction-count' }, reactionCount)));
|
|
37
|
+
})),
|
|
38
|
+
SelectedEmojiComponent && (React.createElement("div", { className: 'emoji str-chat__message-reaction-emoji str-chat__message-reaction-emoji-big' },
|
|
39
|
+
React.createElement(SelectedEmojiComponent, null))),
|
|
40
|
+
React.createElement("div", { className: 'str-chat__message-reactions-details-reacting-users', "data-testid": 'all-reacting-users' }, areReactionsLoading ? (React.createElement(LoadingIndicator, null)) : (currentReactions.map(function (_a) {
|
|
41
|
+
var user = _a.user;
|
|
42
|
+
return (React.createElement("div", { className: 'str-chat__message-reactions-details-reacting-user', key: user === null || user === void 0 ? void 0 : user.id },
|
|
43
|
+
React.createElement(Avatar, { "data-testid": 'avatar', image: user === null || user === void 0 ? void 0 : user.image, name: (user === null || user === void 0 ? void 0 : user.name) || (user === null || user === void 0 ? void 0 : user.id) }),
|
|
44
|
+
React.createElement("span", { className: 'str-chat__user-item--name', "data-testid": 'reaction-user-username' }, (user === null || user === void 0 ? void 0 : user.name) || (user === null || user === void 0 ? void 0 : user.id))));
|
|
45
|
+
}))))));
|
|
46
|
+
}
|