stream-chat-react 14.12.0 → 15.0.0-rc.1
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/cjs/ListItemLayout.60c3b287.js +2181 -0
- package/dist/cjs/ListItemLayout.60c3b287.js.map +1 -0
- package/dist/cjs/{ReactPlayerWrapper.7cc7b0d8.js → ReactPlayerWrapper.f04b1d06.js} +3 -3
- package/dist/cjs/{ReactPlayerWrapper.7cc7b0d8.js.map → ReactPlayerWrapper.f04b1d06.js.map} +1 -1
- package/dist/cjs/SlotLayout.de45be2d.js +1672 -0
- package/dist/cjs/SlotLayout.de45be2d.js.map +1 -0
- package/dist/cjs/Thread.373af587.js +7479 -0
- package/dist/cjs/Thread.373af587.js.map +1 -0
- package/dist/cjs/channel-detail.js +409 -389
- package/dist/cjs/channel-detail.js.map +1 -1
- package/dist/cjs/emojis.js +18 -16
- package/dist/cjs/emojis.js.map +1 -1
- package/dist/cjs/index.js +14467 -20208
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/slot-geometry.js +145 -0
- package/dist/cjs/slot-geometry.js.map +1 -0
- package/dist/cjs/slot-layout.js +37 -0
- package/dist/cjs/useChannel.1004ed4c.js +18 -0
- package/dist/cjs/useChannel.1004ed4c.js.map +1 -0
- package/dist/cjs/useComponentContextIcons.d16834d9.js +1729 -0
- package/dist/cjs/useComponentContextIcons.d16834d9.js.map +1 -0
- package/dist/cjs/useIsCooldownActive.1f778bc1.js +110 -0
- package/dist/cjs/useIsCooldownActive.1f778bc1.js.map +1 -0
- package/dist/css/channel-detail.css.map +1 -1
- package/dist/css/index.css +208 -103
- package/dist/css/index.css.map +1 -1
- package/dist/es/a11y/accessibleLabel.mjs +6 -2
- package/dist/es/a11y/accessibleLabel.mjs.map +1 -1
- package/dist/es/components/AIStateIndicator/AIStateIndicator.mjs +6 -5
- package/dist/es/components/AIStateIndicator/AIStateIndicator.mjs.map +1 -1
- package/dist/es/components/AIStateIndicator/hooks/useAIState.mjs +9 -33
- package/dist/es/components/AIStateIndicator/hooks/useAIState.mjs.map +1 -1
- package/dist/es/components/Accessibility/NotificationAnnouncer.mjs +2 -3
- package/dist/es/components/Accessibility/NotificationAnnouncer.mjs.map +1 -1
- package/dist/es/components/Accessibility/hooks/useIncomingMessageAnnouncements.mjs +10 -5
- package/dist/es/components/Accessibility/hooks/useIncomingMessageAnnouncements.mjs.map +1 -1
- package/dist/es/components/Accessibility/hooks/useInteractionAnnouncements.mjs +38 -28
- package/dist/es/components/Accessibility/hooks/useInteractionAnnouncements.mjs.map +1 -1
- package/dist/es/components/Accessibility/useAriaLiveAnnouncer.mjs +5 -8
- package/dist/es/components/Accessibility/useAriaLiveAnnouncer.mjs.map +1 -1
- package/dist/es/components/Attachment/Attachment.mjs +21 -6
- package/dist/es/components/Attachment/Attachment.mjs.map +1 -1
- package/dist/es/components/Attachment/AttachmentActions.mjs +10 -9
- package/dist/es/components/Attachment/AttachmentActions.mjs.map +1 -1
- package/dist/es/components/Attachment/AttachmentContainer.mjs +21 -17
- package/dist/es/components/Attachment/AttachmentContainer.mjs.map +1 -1
- package/dist/es/components/Attachment/Audio.mjs +15 -10
- package/dist/es/components/Attachment/Audio.mjs.map +1 -1
- package/dist/es/components/Attachment/FileAttachment.mjs +4 -5
- package/dist/es/components/Attachment/FileAttachment.mjs.map +1 -1
- package/dist/es/components/Attachment/Geolocation.mjs +29 -17
- package/dist/es/components/Attachment/Geolocation.mjs.map +1 -1
- package/dist/es/components/Attachment/Giphy.mjs +4 -4
- package/dist/es/components/Attachment/Giphy.mjs.map +1 -1
- package/dist/es/components/Attachment/LinkPreview/Card.mjs +4 -4
- package/dist/es/components/Attachment/LinkPreview/Card.mjs.map +1 -1
- package/dist/es/components/Attachment/LinkPreview/UnableToRenderCard.mjs +2 -2
- package/dist/es/components/Attachment/LinkPreview/UnableToRenderCard.mjs.map +1 -1
- package/dist/es/components/Attachment/ModalGallery.mjs +20 -8
- package/dist/es/components/Attachment/ModalGallery.mjs.map +1 -1
- package/dist/es/components/Attachment/UnsupportedAttachment.mjs +3 -3
- package/dist/es/components/Attachment/UnsupportedAttachment.mjs.map +1 -1
- package/dist/es/components/Attachment/VideoAttachment.mjs +10 -10
- package/dist/es/components/Attachment/VideoAttachment.mjs.map +1 -1
- package/dist/es/components/Attachment/VisibilityDisclaimer.mjs +2 -2
- package/dist/es/components/Attachment/VisibilityDisclaimer.mjs.map +1 -1
- package/dist/es/components/Attachment/VoiceRecording.mjs +17 -12
- package/dist/es/components/Attachment/VoiceRecording.mjs.map +1 -1
- package/dist/es/components/Attachment/components/AttachmentUploadProgressIndicator.mjs +1 -1
- package/dist/es/components/Attachment/components/DownloadButton.mjs +3 -3
- package/dist/es/components/Attachment/components/DownloadButton.mjs.map +1 -1
- package/dist/es/components/Attachment/hooks/useAttachmentUploadState.mjs +4 -30
- package/dist/es/components/Attachment/hooks/useAttachmentUploadState.mjs.map +1 -1
- package/dist/es/components/Attachment/utils.mjs.map +1 -1
- package/dist/es/components/AudioPlayback/AudioPlaybackArbiter.mjs +57 -0
- package/dist/es/components/AudioPlayback/AudioPlaybackArbiter.mjs.map +1 -0
- package/dist/es/components/AudioPlayback/AudioPlayer.mjs +329 -314
- package/dist/es/components/AudioPlayback/AudioPlayer.mjs.map +1 -1
- package/dist/es/components/AudioPlayback/AudioPlayerPool.mjs +54 -90
- package/dist/es/components/AudioPlayback/AudioPlayerPool.mjs.map +1 -1
- package/dist/es/components/AudioPlayback/WithAudioPlayback.mjs +20 -6
- package/dist/es/components/AudioPlayback/WithAudioPlayback.mjs.map +1 -1
- package/dist/es/components/AudioPlayback/components/ProgressBar.mjs +2 -2
- package/dist/es/components/AudioPlayback/components/ProgressBar.mjs.map +1 -1
- package/dist/es/components/AudioPlayback/components/WaveProgressBar.mjs +2 -2
- package/dist/es/components/AudioPlayback/components/WaveProgressBar.mjs.map +1 -1
- package/dist/es/components/AudioPlayback/components/progressBarA11y.mjs +2 -2
- package/dist/es/components/AudioPlayback/components/progressBarA11y.mjs.map +1 -1
- package/dist/es/components/AudioPlayback/plugins/AudioPlayerNotificationsPlugin.mjs +4 -4
- package/dist/es/components/AudioPlayback/plugins/AudioPlayerNotificationsPlugin.mjs.map +1 -1
- package/dist/es/components/Avatar/Avatar.mjs.map +1 -1
- package/dist/es/components/Avatar/AvatarStack.mjs +1 -1
- package/dist/es/components/Avatar/AvatarStack.mjs.map +1 -1
- package/dist/es/components/Badge/Badge.mjs.map +1 -1
- package/dist/es/components/Badge/MediaBadge.mjs +2 -1
- package/dist/es/components/Badge/MediaBadge.mjs.map +1 -1
- package/dist/es/components/BaseImage/ImagePlaceholder.mjs +3 -3
- package/dist/es/components/BaseImage/ImagePlaceholder.mjs.map +1 -1
- package/dist/es/components/Button/PlayButton.mjs +3 -3
- package/dist/es/components/Button/PlayButton.mjs.map +1 -1
- package/dist/es/components/Button/WorkspaceNavigationButtons.mjs +94 -0
- package/dist/es/components/Button/WorkspaceNavigationButtons.mjs.map +1 -0
- package/dist/es/components/Channel/Channel.mjs +34 -720
- package/dist/es/components/Channel/Channel.mjs.map +1 -1
- package/dist/es/components/Channel/hooks/useChannelCapabilities.mjs +21 -0
- package/dist/es/components/Channel/hooks/useChannelCapabilities.mjs.map +1 -0
- package/dist/es/components/Channel/hooks/useChannelContainerClasses.mjs +1 -1
- package/dist/es/components/Channel/hooks/useChannelContainerClasses.mjs.map +1 -1
- package/dist/es/components/ChannelHeader/ChannelHeader.mjs +17 -16
- package/dist/es/components/ChannelHeader/ChannelHeader.mjs.map +1 -1
- package/dist/es/components/ChannelHeader/hooks/useChannelHasMembersOnline.mjs +16 -41
- package/dist/es/components/ChannelHeader/hooks/useChannelHasMembersOnline.mjs.map +1 -1
- package/dist/es/components/ChannelHeader/hooks/useChannelHeaderOnlineStatus.mjs +19 -21
- package/dist/es/components/ChannelHeader/hooks/useChannelHeaderOnlineStatus.mjs.map +1 -1
- package/dist/es/components/ChannelList/ChannelList.mjs +60 -131
- package/dist/es/components/ChannelList/ChannelList.mjs.map +1 -1
- package/dist/es/components/ChannelList/ChannelListHeader.mjs +4 -4
- package/dist/es/components/ChannelList/ChannelListHeader.mjs.map +1 -1
- package/dist/es/components/ChannelList/ChannelLists.mjs +31 -0
- package/dist/es/components/ChannelList/ChannelLists.mjs.map +1 -0
- package/dist/es/components/ChannelList/ChannelNavigation.mjs +36 -0
- package/dist/es/components/ChannelList/ChannelNavigation.mjs.map +1 -0
- package/dist/es/components/ChannelList/hooks/useChannelMembersState.mjs.map +1 -1
- package/dist/es/components/ChannelList/hooks/useChannelMembershipState.mjs.map +1 -1
- package/dist/es/components/ChannelList/hooks/useChannelPaginatorState.mjs +21 -0
- package/dist/es/components/ChannelList/hooks/useChannelPaginatorState.mjs.map +1 -0
- package/dist/es/components/ChannelList/hooks/useSelectedChannelState.mjs.map +1 -1
- package/dist/es/components/ChannelListItem/ChannelListItem.mjs +23 -74
- package/dist/es/components/ChannelListItem/ChannelListItem.mjs.map +1 -1
- package/dist/es/components/ChannelListItem/ChannelListItemActionButtons.defaults.mjs +34 -34
- package/dist/es/components/ChannelListItem/ChannelListItemActionButtons.defaults.mjs.map +1 -1
- package/dist/es/components/ChannelListItem/ChannelListItemActionButtons.mjs +2 -2
- package/dist/es/components/ChannelListItem/ChannelListItemActionButtons.mjs.map +1 -1
- package/dist/es/components/ChannelListItem/ChannelListItemTimestamp.mjs +7 -6
- package/dist/es/components/ChannelListItem/ChannelListItemTimestamp.mjs.map +1 -1
- package/dist/es/components/ChannelListItem/ChannelListItemUI.mjs +15 -13
- package/dist/es/components/ChannelListItem/ChannelListItemUI.mjs.map +1 -1
- package/dist/es/components/ChannelListItem/hooks/useChannelDisplayName.mjs +7 -7
- package/dist/es/components/ChannelListItem/hooks/useChannelDisplayName.mjs.map +1 -1
- package/dist/es/components/ChannelListItem/hooks/useIsChannelMuted.mjs +8 -26
- package/dist/es/components/ChannelListItem/hooks/useIsChannelMuted.mjs.map +1 -1
- package/dist/es/components/ChannelListItem/hooks/useIsUserMuted.mjs +1 -1
- package/dist/es/components/ChannelListItem/hooks/useIsUserMuted.mjs.map +1 -1
- package/dist/es/components/ChannelListItem/hooks/useMessageDeliveryStatus.mjs +18 -50
- package/dist/es/components/ChannelListItem/hooks/useMessageDeliveryStatus.mjs.map +1 -1
- package/dist/es/components/ChannelListItem/utils.a11y.mjs +35 -21
- package/dist/es/components/ChannelListItem/utils.a11y.mjs.map +1 -1
- package/dist/es/components/ChannelListItem/utils.mjs +31 -30
- package/dist/es/components/ChannelListItem/utils.mjs.map +1 -1
- package/dist/es/components/Chat/Chat.mjs +17 -16
- package/dist/es/components/Chat/Chat.mjs.map +1 -1
- package/dist/es/components/Chat/hooks/useChat.mjs +7 -49
- package/dist/es/components/Chat/hooks/useChat.mjs.map +1 -1
- package/dist/es/components/Chat/hooks/useCreateChatClient.mjs +1 -1
- package/dist/es/components/Chat/hooks/useCreateChatClient.mjs.map +1 -1
- package/dist/es/components/Chat/hooks/useCreateChatContext.mjs +3 -11
- package/dist/es/components/Chat/hooks/useCreateChatContext.mjs.map +1 -1
- package/dist/es/components/Chat/hooks/useNetworkConnectionState.mjs +46 -0
- package/dist/es/components/Chat/hooks/useNetworkConnectionState.mjs.map +1 -0
- package/dist/es/components/Chat/hooks/useReportLostConnectionSystemNotification.mjs +112 -24
- package/dist/es/components/Chat/hooks/useReportLostConnectionSystemNotification.mjs.map +1 -1
- package/dist/es/components/Chat/hooks/useSplitActionSet.mjs +1 -1
- package/dist/es/components/Chat/hooks/useSplitActionSet.mjs.map +1 -1
- package/dist/es/components/Chat/hooks/useWSConnectionState.mjs +31 -0
- package/dist/es/components/Chat/hooks/useWSConnectionState.mjs.map +1 -0
- package/dist/es/components/DateSeparator/DateSeparator.mjs +2 -2
- package/dist/es/components/DateSeparator/DateSeparator.mjs.map +1 -1
- package/dist/es/components/Dialog/components/Alert.mjs +1 -1
- package/dist/es/components/Dialog/components/Callout.mjs +2 -2
- package/dist/es/components/Dialog/components/Callout.mjs.map +1 -1
- package/dist/es/components/Dialog/components/ContextMenu.mjs +9 -8
- package/dist/es/components/Dialog/components/ContextMenu.mjs.map +1 -1
- package/dist/es/components/Dialog/components/Prompt.mjs +5 -5
- package/dist/es/components/Dialog/components/Prompt.mjs.map +1 -1
- package/dist/es/components/Dialog/components/Viewer.mjs +5 -5
- package/dist/es/components/Dialog/components/Viewer.mjs.map +1 -1
- package/dist/es/components/Dialog/hooks/usePopoverPosition.mjs +9 -1
- package/dist/es/components/Dialog/hooks/usePopoverPosition.mjs.map +1 -1
- package/dist/es/components/Dialog/service/DialogManager.mjs +22 -19
- package/dist/es/components/Dialog/service/DialogManager.mjs.map +1 -1
- package/dist/es/components/EmptyStateIndicator/EmptyStateIndicator.mjs +6 -5
- package/dist/es/components/EmptyStateIndicator/EmptyStateIndicator.mjs.map +1 -1
- package/dist/es/components/Form/Dropdown.mjs +6 -3
- package/dist/es/components/Form/Dropdown.mjs.map +1 -1
- package/dist/es/components/Form/NumericInput.mjs +6 -5
- package/dist/es/components/Form/NumericInput.mjs.map +1 -1
- package/dist/es/components/Form/SwitchField.mjs +2 -2
- package/dist/es/components/Form/SwitchField.mjs.map +1 -1
- package/dist/es/components/Form/TextInput.mjs +1 -1
- package/dist/es/components/Gallery/GalleryContext.mjs +2 -8
- package/dist/es/components/Gallery/GalleryContext.mjs.map +1 -1
- package/dist/es/components/Gallery/GalleryHeader.mjs +39 -12
- package/dist/es/components/Gallery/GalleryHeader.mjs.map +1 -1
- package/dist/es/components/Gallery/GalleryUI.mjs +4 -4
- package/dist/es/components/Gallery/GalleryUI.mjs.map +1 -1
- package/dist/es/components/InfiniteScrollPaginator/InfiniteScrollPaginator.mjs +16 -14
- package/dist/es/components/InfiniteScrollPaginator/InfiniteScrollPaginator.mjs.map +1 -1
- package/dist/es/components/InfiniteScrollPaginator/InfiniteScrollWithComponents.mjs +43 -0
- package/dist/es/components/InfiniteScrollPaginator/InfiniteScrollWithComponents.mjs.map +1 -0
- package/dist/es/components/InfiniteScrollPaginator/hooks/useCursorPaginator.mjs +1 -1
- package/dist/es/components/InfiniteScrollPaginator/hooks/useCursorPaginator.mjs.map +1 -1
- package/dist/es/components/LoadMore/LoadMoreButton.mjs +3 -3
- package/dist/es/components/LoadMore/LoadMoreButton.mjs.map +1 -1
- package/dist/es/components/Loading/AttachmentUploadedSizeIndicator.mjs +2 -11
- package/dist/es/components/Loading/AttachmentUploadedSizeIndicator.mjs.map +1 -1
- package/dist/es/components/Loading/LoadingErrorIndicator.mjs +2 -2
- package/dist/es/components/Loading/LoadingErrorIndicator.mjs.map +1 -1
- package/dist/es/components/Loading/LoadingIndicator.mjs.map +1 -1
- package/dist/es/components/Loading/UploadProgressIndicator.mjs.map +1 -1
- package/dist/es/components/Loading/progress-indicators.mjs +2 -2
- package/dist/es/components/Loading/progress-indicators.mjs.map +1 -1
- package/dist/es/components/Location/ShareLocationDialog.mjs +13 -13
- package/dist/es/components/Location/ShareLocationDialog.mjs.map +1 -1
- package/dist/es/components/Location/hooks/useLiveLocationSharingManager.mjs +1 -0
- package/dist/es/components/Location/hooks/useLiveLocationSharingManager.mjs.map +1 -1
- package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecorder.mjs +4 -4
- package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecorder.mjs.map +1 -1
- package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecorderRecordingControls.mjs +7 -7
- package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecorderRecordingControls.mjs.map +1 -1
- package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecordingButtonWithNotification.mjs +4 -4
- package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecordingButtonWithNotification.mjs.map +1 -1
- package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecordingPlayback.mjs +2 -2
- package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecordingPlayback.mjs.map +1 -1
- package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecordingPreview.mjs +1 -1
- package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecordingPreview.mjs.map +1 -1
- package/dist/es/components/MediaRecorder/RecordingPermissionDeniedNotification.mjs +4 -4
- package/dist/es/components/MediaRecorder/RecordingPermissionDeniedNotification.mjs.map +1 -1
- package/dist/es/components/MediaRecorder/classes/AmplitudeRecorder.mjs +32 -26
- package/dist/es/components/MediaRecorder/classes/AmplitudeRecorder.mjs.map +1 -1
- package/dist/es/components/MediaRecorder/classes/BrowserPermission.mjs +5 -4
- package/dist/es/components/MediaRecorder/classes/BrowserPermission.mjs.map +1 -1
- package/dist/es/components/MediaRecorder/classes/MediaRecorderController.mjs +195 -181
- package/dist/es/components/MediaRecorder/classes/MediaRecorderController.mjs.map +1 -1
- package/dist/es/components/MediaRecorder/hooks/useMediaRecorder.mjs +7 -11
- package/dist/es/components/MediaRecorder/hooks/useMediaRecorder.mjs.map +1 -1
- package/dist/es/components/MediaRecorder/observable/BehaviorSubject.mjs +1 -0
- package/dist/es/components/MediaRecorder/observable/BehaviorSubject.mjs.map +1 -1
- package/dist/es/components/MediaRecorder/observable/Observable.mjs +2 -1
- package/dist/es/components/MediaRecorder/observable/Observable.mjs.map +1 -1
- package/dist/es/components/MediaRecorder/observable/Subject.mjs +3 -2
- package/dist/es/components/MediaRecorder/observable/Subject.mjs.map +1 -1
- package/dist/es/components/MediaRecorder/observable/Subscription.mjs +2 -1
- package/dist/es/components/MediaRecorder/observable/Subscription.mjs.map +1 -1
- package/dist/es/components/Message/Message.mjs +13 -54
- package/dist/es/components/Message/Message.mjs.map +1 -1
- package/dist/es/components/Message/MessageAlsoSentInChannelIndicator.mjs +10 -54
- package/dist/es/components/Message/MessageAlsoSentInChannelIndicator.mjs.map +1 -1
- package/dist/es/components/Message/MessageBlocked.mjs +2 -2
- package/dist/es/components/Message/MessageBlocked.mjs.map +1 -1
- package/dist/es/components/Message/MessageDeletedBubble.mjs +2 -2
- package/dist/es/components/Message/MessageDeletedBubble.mjs.map +1 -1
- package/dist/es/components/Message/MessageEditedIndicator.mjs +8 -7
- package/dist/es/components/Message/MessageEditedIndicator.mjs.map +1 -1
- package/dist/es/components/Message/MessageRepliesCountButton.mjs +43 -9
- package/dist/es/components/Message/MessageRepliesCountButton.mjs.map +1 -1
- package/dist/es/components/Message/MessageStatus.mjs +13 -11
- package/dist/es/components/Message/MessageStatus.mjs.map +1 -1
- package/dist/es/components/Message/MessageText.mjs +4 -4
- package/dist/es/components/Message/MessageText.mjs.map +1 -1
- package/dist/es/components/Message/MessageTimestamp.mjs +4 -3
- package/dist/es/components/Message/MessageTimestamp.mjs.map +1 -1
- package/dist/es/components/Message/MessageTranslationIndicator.mjs +7 -7
- package/dist/es/components/Message/MessageTranslationIndicator.mjs.map +1 -1
- package/dist/es/components/Message/MessageUI.mjs +22 -21
- package/dist/es/components/Message/MessageUI.mjs.map +1 -1
- package/dist/es/components/Message/PinIndicator.mjs +3 -3
- package/dist/es/components/Message/PinIndicator.mjs.map +1 -1
- package/dist/es/components/Message/QuotedMessage.mjs +4 -4
- package/dist/es/components/Message/QuotedMessage.mjs.map +1 -1
- package/dist/es/components/Message/ReminderNotification.mjs +13 -12
- package/dist/es/components/Message/ReminderNotification.mjs.map +1 -1
- package/dist/es/components/Message/StreamedMessageText.mjs +5 -4
- package/dist/es/components/Message/StreamedMessageText.mjs.map +1 -1
- package/dist/es/components/Message/Timestamp.mjs +5 -5
- package/dist/es/components/Message/Timestamp.mjs.map +1 -1
- package/dist/es/components/Message/hooks/useActionHandler.mjs +8 -7
- package/dist/es/components/Message/hooks/useActionHandler.mjs.map +1 -1
- package/dist/es/components/Message/hooks/useDeleteHandler.mjs +30 -11
- package/dist/es/components/Message/hooks/useDeleteHandler.mjs.map +1 -1
- package/dist/es/components/Message/hooks/useFlagHandler.mjs +3 -3
- package/dist/es/components/Message/hooks/useFlagHandler.mjs.map +1 -1
- package/dist/es/components/Message/hooks/useMarkUnreadHandler.mjs +8 -3
- package/dist/es/components/Message/hooks/useMarkUnreadHandler.mjs.map +1 -1
- package/dist/es/components/Message/hooks/useMentionsHandler.mjs +2 -4
- package/dist/es/components/Message/hooks/useMentionsHandler.mjs.map +1 -1
- package/dist/es/components/Message/hooks/useMessageAlsoSentInChannelNavigation.mjs +72 -0
- package/dist/es/components/Message/hooks/useMessageAlsoSentInChannelNavigation.mjs.map +1 -0
- package/dist/es/components/Message/hooks/useMessageReminder.mjs +1 -1
- package/dist/es/components/Message/hooks/useMuteHandler.mjs +26 -9
- package/dist/es/components/Message/hooks/useMuteHandler.mjs.map +1 -1
- package/dist/es/components/Message/hooks/useOpenThreadHandler.mjs +13 -5
- package/dist/es/components/Message/hooks/useOpenThreadHandler.mjs.map +1 -1
- package/dist/es/components/Message/hooks/usePinHandler.mjs +26 -21
- package/dist/es/components/Message/hooks/usePinHandler.mjs.map +1 -1
- package/dist/es/components/Message/hooks/useReactionHandler.mjs +25 -17
- package/dist/es/components/Message/hooks/useReactionHandler.mjs.map +1 -1
- package/dist/es/components/Message/hooks/useReactionsFetcher.mjs +6 -3
- package/dist/es/components/Message/hooks/useReactionsFetcher.mjs.map +1 -1
- package/dist/es/components/Message/hooks/useRetryHandler.mjs +9 -7
- package/dist/es/components/Message/hooks/useRetryHandler.mjs.map +1 -1
- package/dist/es/components/Message/hooks/useUserRole.mjs +16 -12
- package/dist/es/components/Message/hooks/useUserRole.mjs.map +1 -1
- package/dist/es/components/Message/renderText/renderText.mjs +1 -1
- package/dist/es/components/Message/utils.mjs +19 -56
- package/dist/es/components/Message/utils.mjs.map +1 -1
- package/dist/es/components/MessageActions/DeleteMessageAlert.mjs +5 -5
- package/dist/es/components/MessageActions/DeleteMessageAlert.mjs.map +1 -1
- package/dist/es/components/MessageActions/DownloadSubmenu.mjs +4 -4
- package/dist/es/components/MessageActions/DownloadSubmenu.mjs.map +1 -1
- package/dist/es/components/MessageActions/MessageActions.defaults.mjs +72 -73
- package/dist/es/components/MessageActions/MessageActions.defaults.mjs.map +1 -1
- package/dist/es/components/MessageActions/MessageActions.mjs +3 -3
- package/dist/es/components/MessageActions/MessageActions.mjs.map +1 -1
- package/dist/es/components/MessageActions/RemindMeSubmenu.mjs +7 -7
- package/dist/es/components/MessageActions/RemindMeSubmenu.mjs.map +1 -1
- package/dist/es/components/MessageActions/hooks/useBaseMessageActionSetFilter.mjs +7 -4
- package/dist/es/components/MessageActions/hooks/useBaseMessageActionSetFilter.mjs.map +1 -1
- package/dist/es/components/MessageBounce/MessageBounceModal.mjs +1 -1
- package/dist/es/components/MessageBounce/MessageBouncePrompt.mjs +8 -8
- package/dist/es/components/MessageBounce/MessageBouncePrompt.mjs.map +1 -1
- package/dist/es/components/MessageComposer/AttachmentPreviewList/AttachmentPreviewList.mjs +2 -2
- package/dist/es/components/MessageComposer/AttachmentPreviewList/AudioAttachmentPreview.mjs +14 -14
- package/dist/es/components/MessageComposer/AttachmentPreviewList/AudioAttachmentPreview.mjs.map +1 -1
- package/dist/es/components/MessageComposer/AttachmentPreviewList/FileAttachmentPreview.mjs +9 -9
- package/dist/es/components/MessageComposer/AttachmentPreviewList/FileAttachmentPreview.mjs.map +1 -1
- package/dist/es/components/MessageComposer/AttachmentPreviewList/GeolocationPreview.mjs +6 -6
- package/dist/es/components/MessageComposer/AttachmentPreviewList/GeolocationPreview.mjs.map +1 -1
- package/dist/es/components/MessageComposer/AttachmentPreviewList/MediaAttachmentPreview.mjs +3 -4
- package/dist/es/components/MessageComposer/AttachmentPreviewList/MediaAttachmentPreview.mjs.map +1 -1
- package/dist/es/components/MessageComposer/AttachmentPreviewList/UnsupportedAttachmentPreview.mjs +2 -2
- package/dist/es/components/MessageComposer/AttachmentPreviewList/UnsupportedAttachmentPreview.mjs.map +1 -1
- package/dist/es/components/MessageComposer/AttachmentPreviewList/VoiceRecordingPreviewSlot.mjs +2 -2
- package/dist/es/components/MessageComposer/AttachmentPreviewList/utils/AttachmentPreviewRoot.mjs +2 -2
- package/dist/es/components/MessageComposer/AttachmentPreviewList/utils/AttachmentPreviewRoot.mjs.map +1 -1
- package/dist/es/components/MessageComposer/AttachmentSelector/AttachmentSelector.mjs +33 -30
- package/dist/es/components/MessageComposer/AttachmentSelector/AttachmentSelector.mjs.map +1 -1
- package/dist/es/components/MessageComposer/AttachmentSelector/CommandsMenu.mjs +26 -31
- package/dist/es/components/MessageComposer/AttachmentSelector/CommandsMenu.mjs.map +1 -1
- package/dist/es/components/MessageComposer/CommandChip.mjs +3 -3
- package/dist/es/components/MessageComposer/CommandChip.mjs.map +1 -1
- package/dist/es/components/MessageComposer/EditedMessagePreview.mjs +1 -1
- package/dist/es/components/MessageComposer/EditedMessagePreview.mjs.map +1 -1
- package/dist/es/components/MessageComposer/LinkPreviewList.mjs +3 -3
- package/dist/es/components/MessageComposer/MessageComposer.mjs +12 -17
- package/dist/es/components/MessageComposer/MessageComposer.mjs.map +1 -1
- package/dist/es/components/MessageComposer/MessageComposerActions.mjs +17 -13
- package/dist/es/components/MessageComposer/MessageComposerActions.mjs.map +1 -1
- package/dist/es/components/MessageComposer/MessageComposerUI.mjs +8 -8
- package/dist/es/components/MessageComposer/MessageComposerUI.mjs.map +1 -1
- package/dist/es/components/MessageComposer/QuotedMessagePreview.mjs +40 -40
- package/dist/es/components/MessageComposer/QuotedMessagePreview.mjs.map +1 -1
- package/dist/es/components/MessageComposer/RemoveAttachmentPreviewButton.mjs +2 -2
- package/dist/es/components/MessageComposer/RemoveAttachmentPreviewButton.mjs.map +1 -1
- package/dist/es/components/MessageComposer/SendButton.mjs +2 -2
- package/dist/es/components/MessageComposer/SendButton.mjs.map +1 -1
- package/dist/es/components/MessageComposer/SendToChannelCheckbox.mjs +2 -2
- package/dist/es/components/MessageComposer/SendToChannelCheckbox.mjs.map +1 -1
- package/dist/es/components/MessageComposer/StopAIGenerationButton.mjs +1 -1
- package/dist/es/components/MessageComposer/StopAIGenerationButton.mjs.map +1 -1
- package/dist/es/components/MessageComposer/WithDragAndDropUpload.mjs +9 -13
- package/dist/es/components/MessageComposer/WithDragAndDropUpload.mjs.map +1 -1
- package/dist/es/components/MessageComposer/hooks/useAttachmentManagerState.mjs +15 -2
- package/dist/es/components/MessageComposer/hooks/useAttachmentManagerState.mjs.map +1 -1
- package/dist/es/components/MessageComposer/hooks/useCooldownRemaining.mjs +2 -3
- package/dist/es/components/MessageComposer/hooks/useCooldownRemaining.mjs.map +1 -1
- package/dist/es/components/MessageComposer/hooks/useCreateMessageComposerContext.mjs +1 -3
- package/dist/es/components/MessageComposer/hooks/useCreateMessageComposerContext.mjs.map +1 -1
- package/dist/es/components/MessageComposer/hooks/useIsCooldownActive.mjs +2 -3
- package/dist/es/components/MessageComposer/hooks/useIsCooldownActive.mjs.map +1 -1
- package/dist/es/components/MessageComposer/hooks/useMessageComposerBindings.mjs +0 -4
- package/dist/es/components/MessageComposer/hooks/useMessageComposerBindings.mjs.map +1 -1
- package/dist/es/components/MessageComposer/hooks/useMessageComposerCommands.mjs +4 -4
- package/dist/es/components/MessageComposer/hooks/useMessageComposerCommands.mjs.map +1 -1
- package/dist/es/components/MessageComposer/hooks/useMessageComposerController.mjs +8 -34
- package/dist/es/components/MessageComposer/hooks/useMessageComposerController.mjs.map +1 -1
- package/dist/es/components/MessageComposer/hooks/useMessageComposerHasSendableData.mjs.map +1 -1
- package/dist/es/components/MessageComposer/hooks/useMessageComposerSubmitFn.mjs +16 -0
- package/dist/es/components/MessageComposer/hooks/useMessageComposerSubmitFn.mjs.map +1 -0
- package/dist/es/components/MessageComposer/hooks/usePasteHandler.mjs +1 -1
- package/dist/es/components/MessageComposer/hooks/utils.mjs.map +1 -1
- package/dist/es/components/MessageComposer/icons.mjs +2 -2
- package/dist/es/components/MessageComposer/icons.mjs.map +1 -1
- package/dist/es/components/MessageComposer/preEditSnapshot.mjs +1 -7
- package/dist/es/components/MessageComposer/preEditSnapshot.mjs.map +1 -1
- package/dist/es/components/MessageList/FloatingDateSeparator.mjs +7 -7
- package/dist/es/components/MessageList/FloatingDateSeparator.mjs.map +1 -1
- package/dist/es/components/MessageList/MessageList.mjs +168 -213
- package/dist/es/components/MessageList/MessageList.mjs.map +1 -1
- package/dist/es/components/MessageList/NewMessageNotification.mjs +5 -1
- package/dist/es/components/MessageList/NewMessageNotification.mjs.map +1 -1
- package/dist/es/components/MessageList/ScrollToLatestMessageButton.mjs +27 -22
- package/dist/es/components/MessageList/ScrollToLatestMessageButton.mjs.map +1 -1
- package/dist/es/components/MessageList/UnreadMessagesNotification.mjs +25 -9
- package/dist/es/components/MessageList/UnreadMessagesNotification.mjs.map +1 -1
- package/dist/es/components/MessageList/UnreadMessagesSeparator.mjs +18 -7
- package/dist/es/components/MessageList/UnreadMessagesSeparator.mjs.map +1 -1
- package/dist/es/components/MessageList/VirtualizedMessageList.mjs +186 -167
- package/dist/es/components/MessageList/VirtualizedMessageList.mjs.map +1 -1
- package/dist/es/components/MessageList/VirtualizedMessageListComponents.mjs +12 -12
- package/dist/es/components/MessageList/VirtualizedMessageListComponents.mjs.map +1 -1
- package/dist/es/components/MessageList/hooks/MessageList/useEnrichedMessages.mjs +6 -7
- package/dist/es/components/MessageList/hooks/MessageList/useEnrichedMessages.mjs.map +1 -1
- package/dist/es/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.mjs +6 -10
- package/dist/es/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.mjs.map +1 -1
- package/dist/es/components/MessageList/hooks/MessageList/useMessageListElements.mjs +18 -10
- package/dist/es/components/MessageList/hooks/MessageList/useMessageListElements.mjs.map +1 -1
- package/dist/es/components/MessageList/hooks/MessageList/useMessageListScrollManager.mjs +6 -4
- package/dist/es/components/MessageList/hooks/MessageList/useMessageListScrollManager.mjs.map +1 -1
- package/dist/es/components/MessageList/hooks/MessageList/useScrollLocationLogic.mjs +27 -202
- package/dist/es/components/MessageList/hooks/MessageList/useScrollLocationLogic.mjs.map +1 -1
- package/dist/es/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.mjs +10 -5
- package/dist/es/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.mjs.map +1 -1
- package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useFloatingDateSeparator.mjs +6 -5
- package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useFloatingDateSeparator.mjs.map +1 -1
- package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.mjs +4 -4
- package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.mjs.map +1 -1
- package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.mjs +5 -1
- package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.mjs.map +1 -1
- package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.mjs +14 -9
- package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.mjs.map +1 -1
- package/dist/es/components/MessageList/hooks/useCanPaginateReplies.mjs +47 -0
- package/dist/es/components/MessageList/hooks/useCanPaginateReplies.mjs.map +1 -0
- package/dist/es/components/MessageList/hooks/useLastDeliveredData.mjs +6 -38
- package/dist/es/components/MessageList/hooks/useLastDeliveredData.mjs.map +1 -1
- package/dist/es/components/MessageList/hooks/useLastReadData.mjs +6 -23
- package/dist/es/components/MessageList/hooks/useLastReadData.mjs.map +1 -1
- package/dist/es/components/MessageList/hooks/useMarkRead.mjs +78 -48
- package/dist/es/components/MessageList/hooks/useMarkRead.mjs.map +1 -1
- package/dist/es/components/MessageList/hooks/useReceiptsByMessageId.mjs +71 -0
- package/dist/es/components/MessageList/hooks/useReceiptsByMessageId.mjs.map +1 -0
- package/dist/es/components/MessageList/hooks/useThreadHead.mjs +26 -0
- package/dist/es/components/MessageList/hooks/useThreadHead.mjs.map +1 -0
- package/dist/es/components/MessageList/messageSourceKey.mjs +37 -0
- package/dist/es/components/MessageList/messageSourceKey.mjs.map +1 -0
- package/dist/es/components/MessageList/renderMessages.mjs +11 -11
- package/dist/es/components/MessageList/renderMessages.mjs.map +1 -1
- package/dist/es/components/MessageList/utils.mjs +40 -33
- package/dist/es/components/MessageList/utils.mjs.map +1 -1
- package/dist/es/components/Modal/GlobalModal.mjs +2 -2
- package/dist/es/components/Notifications/Notification.mjs +10 -9
- package/dist/es/components/Notifications/Notification.mjs.map +1 -1
- package/dist/es/components/Notifications/NotificationList.mjs +5 -19
- package/dist/es/components/Notifications/NotificationList.mjs.map +1 -1
- package/dist/es/components/Notifications/hooks/useNotificationApi.mjs +69 -62
- package/dist/es/components/Notifications/hooks/useNotificationApi.mjs.map +1 -1
- package/dist/es/components/Notifications/hooks/useNotificationTarget.mjs +8 -12
- package/dist/es/components/Notifications/hooks/useNotificationTarget.mjs.map +1 -1
- package/dist/es/components/Notifications/hooks/useNotifications.mjs +1 -1
- package/dist/es/components/Notifications/hooks/useSystemNotifications.mjs +1 -1
- package/dist/es/components/Notifications/notificationTarget.mjs +17 -2
- package/dist/es/components/Notifications/notificationTarget.mjs.map +1 -1
- package/dist/es/components/Poll/Poll.mjs +1 -1
- package/dist/es/components/Poll/PollActions/AddCommentPrompt.mjs +8 -8
- package/dist/es/components/Poll/PollActions/AddCommentPrompt.mjs.map +1 -1
- package/dist/es/components/Poll/PollActions/EndPollAlert.mjs +9 -9
- package/dist/es/components/Poll/PollActions/EndPollAlert.mjs.map +1 -1
- package/dist/es/components/Poll/PollActions/PollActions.mjs +20 -14
- package/dist/es/components/Poll/PollActions/PollActions.mjs.map +1 -1
- package/dist/es/components/Poll/PollActions/PollAnswerList.mjs +8 -8
- package/dist/es/components/Poll/PollActions/PollAnswerList.mjs.map +1 -1
- package/dist/es/components/Poll/PollActions/PollOptionsFullList.mjs +4 -4
- package/dist/es/components/Poll/PollActions/PollOptionsFullList.mjs.map +1 -1
- package/dist/es/components/Poll/PollActions/PollQuestion.mjs +1 -1
- package/dist/es/components/Poll/PollActions/PollQuestion.mjs.map +1 -1
- package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotes.mjs +7 -5
- package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotes.mjs.map +1 -1
- package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.mjs +8 -4
- package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.mjs.map +1 -1
- package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotesList.mjs +1 -1
- package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotesList.mjs.map +1 -1
- package/dist/es/components/Poll/PollActions/PollResults/PollResults.mjs +11 -7
- package/dist/es/components/Poll/PollActions/PollResults/PollResults.mjs.map +1 -1
- package/dist/es/components/Poll/PollActions/SuggestPollOptionPrompt.mjs +15 -12
- package/dist/es/components/Poll/PollActions/SuggestPollOptionPrompt.mjs.map +1 -1
- package/dist/es/components/Poll/PollContent.mjs +2 -2
- package/dist/es/components/Poll/PollCreationDialog/MultipleAnswersField.mjs +13 -11
- package/dist/es/components/Poll/PollCreationDialog/MultipleAnswersField.mjs.map +1 -1
- package/dist/es/components/Poll/PollCreationDialog/NameField.mjs +6 -5
- package/dist/es/components/Poll/PollCreationDialog/NameField.mjs.map +1 -1
- package/dist/es/components/Poll/PollCreationDialog/OptionFieldSet.mjs +14 -13
- package/dist/es/components/Poll/PollCreationDialog/OptionFieldSet.mjs.map +1 -1
- package/dist/es/components/Poll/PollCreationDialog/PollCreationDialog.mjs +11 -12
- package/dist/es/components/Poll/PollCreationDialog/PollCreationDialog.mjs.map +1 -1
- package/dist/es/components/Poll/PollCreationDialog/PollCreationDialogControls.mjs +11 -20
- package/dist/es/components/Poll/PollCreationDialog/PollCreationDialogControls.mjs.map +1 -1
- package/dist/es/components/Poll/PollCreationDialog/PollOptionReorderHandle.mjs +5 -5
- package/dist/es/components/Poll/PollCreationDialog/PollOptionReorderHandle.mjs.map +1 -1
- package/dist/es/components/Poll/PollHeader.mjs +10 -6
- package/dist/es/components/Poll/PollHeader.mjs.map +1 -1
- package/dist/es/components/Poll/PollOptionList.mjs +8 -4
- package/dist/es/components/Poll/PollOptionList.mjs.map +1 -1
- package/dist/es/components/Poll/PollOptionSelector.mjs +13 -7
- package/dist/es/components/Poll/PollOptionSelector.mjs.map +1 -1
- package/dist/es/components/Poll/PollVote.mjs +6 -5
- package/dist/es/components/Poll/PollVote.mjs.map +1 -1
- package/dist/es/components/Poll/hooks/useManagePollVotesRealtime.mjs.map +1 -1
- package/dist/es/components/Poll/hooks/usePollAnswerPagination.mjs +5 -5
- package/dist/es/components/Poll/hooks/usePollAnswerPagination.mjs.map +1 -1
- package/dist/es/components/Poll/hooks/usePollOptionVotesPagination.mjs +6 -5
- package/dist/es/components/Poll/hooks/usePollOptionVotesPagination.mjs.map +1 -1
- package/dist/es/components/ReactFileUtilities/UploadButton.mjs +5 -5
- package/dist/es/components/ReactFileUtilities/UploadButton.mjs.map +1 -1
- package/dist/es/components/Reactions/MessageReactions.mjs +7 -7
- package/dist/es/components/Reactions/MessageReactions.mjs.map +1 -1
- package/dist/es/components/Reactions/MessageReactionsDetail.mjs +19 -12
- package/dist/es/components/Reactions/MessageReactionsDetail.mjs.map +1 -1
- package/dist/es/components/Reactions/ReactionSelector.mjs +15 -21
- package/dist/es/components/Reactions/ReactionSelector.mjs.map +1 -1
- package/dist/es/components/Reactions/ReactionSelectorWithButton.mjs +4 -4
- package/dist/es/components/Reactions/ReactionSelectorWithButton.mjs.map +1 -1
- package/dist/es/components/Reactions/hooks/useFetchReactions.mjs +3 -3
- package/dist/es/components/Reactions/hooks/useFetchReactions.mjs.map +1 -1
- package/dist/es/components/Reactions/hooks/useProcessReactions.mjs +5 -4
- package/dist/es/components/Reactions/hooks/useProcessReactions.mjs.map +1 -1
- package/dist/es/components/Search/Search.mjs +1 -1
- package/dist/es/components/Search/SearchBar/SearchBar.mjs +8 -7
- package/dist/es/components/Search/SearchBar/SearchBar.mjs.map +1 -1
- package/dist/es/components/Search/SearchContext.mjs +2 -3
- package/dist/es/components/Search/SearchContext.mjs.map +1 -1
- package/dist/es/components/Search/SearchResults/SearchResultItem.mjs +56 -39
- package/dist/es/components/Search/SearchResults/SearchResultItem.mjs.map +1 -1
- package/dist/es/components/Search/SearchResults/SearchResults.mjs +4 -4
- package/dist/es/components/Search/SearchResults/SearchResults.mjs.map +1 -1
- package/dist/es/components/Search/SearchResults/SearchResultsHeader.mjs +6 -5
- package/dist/es/components/Search/SearchResults/SearchResultsHeader.mjs.map +1 -1
- package/dist/es/components/Search/SearchResults/SearchResultsPresearch.mjs +1 -1
- package/dist/es/components/Search/SearchResults/SearchResultsPresearch.mjs.map +1 -1
- package/dist/es/components/Search/SearchResults/SearchSourceResultList.mjs +1 -1
- package/dist/es/components/Search/SearchResults/SearchSourceResultListFooter.mjs +2 -2
- package/dist/es/components/Search/SearchResults/SearchSourceResultListFooter.mjs.map +1 -1
- package/dist/es/components/Search/SearchResults/SearchSourceResults.mjs +1 -1
- package/dist/es/components/Search/SearchResults/SearchSourceResultsEmpty.mjs +1 -1
- package/dist/es/components/Search/SearchResults/SearchSourceResultsEmpty.mjs.map +1 -1
- package/dist/es/components/Search/SearchResults/SearchSourceResultsLoadingIndicator.mjs +1 -1
- package/dist/es/components/Search/SearchResults/SearchSourceResultsLoadingIndicator.mjs.map +1 -1
- package/dist/es/components/Search/SearchSourceResultsContext.mjs +2 -3
- package/dist/es/components/Search/SearchSourceResultsContext.mjs.map +1 -1
- package/dist/es/components/SummarizedMessagePreview/SummarizedMessagePreview.mjs +1 -1
- package/dist/es/components/SummarizedMessagePreview/SummarizedMessagePreview.mjs.map +1 -1
- package/dist/es/components/SummarizedMessagePreview/hooks/useLatestMessagePreview.mjs +44 -19
- package/dist/es/components/SummarizedMessagePreview/hooks/useLatestMessagePreview.mjs.map +1 -1
- package/dist/es/components/TextareaComposer/SuggestionList/CommandItem.mjs +1 -1
- package/dist/es/components/TextareaComposer/SuggestionList/CommandItem.mjs.map +1 -1
- package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/BroadcastMentionItem.mjs +2 -2
- package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/BroadcastMentionItem.mjs.map +1 -1
- package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/RoleItem.mjs +2 -2
- package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/RoleItem.mjs.map +1 -1
- package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/UserGroupItem.mjs.map +1 -1
- package/dist/es/components/TextareaComposer/SuggestionList/SuggestionList.mjs +11 -11
- package/dist/es/components/TextareaComposer/SuggestionList/SuggestionList.mjs.map +1 -1
- package/dist/es/components/TextareaComposer/SuggestionList/SuggestionListItem.mjs +1 -1
- package/dist/es/components/TextareaComposer/TextareaComposer.mjs +13 -11
- package/dist/es/components/TextareaComposer/TextareaComposer.mjs.map +1 -1
- package/dist/es/components/TextareaComposer/hooks/useTextareaPlaceholder.mjs +12 -11
- package/dist/es/components/TextareaComposer/hooks/useTextareaPlaceholder.mjs.map +1 -1
- package/dist/es/components/Thread/Thread.mjs +89 -92
- package/dist/es/components/Thread/Thread.mjs.map +1 -1
- package/dist/es/components/Thread/ThreadHead.mjs +5 -4
- package/dist/es/components/Thread/ThreadHead.mjs.map +1 -1
- package/dist/es/components/Thread/ThreadHeader.mjs +31 -41
- package/dist/es/components/Thread/ThreadHeader.mjs.map +1 -1
- package/dist/es/components/Thread/ThreadStart.mjs +11 -10
- package/dist/es/components/Thread/ThreadStart.mjs.map +1 -1
- package/dist/es/components/Threads/ThreadContext.mjs +1 -5
- package/dist/es/components/Threads/ThreadContext.mjs.map +1 -1
- package/dist/es/components/Threads/ThreadList/ThreadList.mjs +19 -27
- package/dist/es/components/Threads/ThreadList/ThreadList.mjs.map +1 -1
- package/dist/es/components/Threads/ThreadList/ThreadListEmptyPlaceholder.mjs +3 -3
- package/dist/es/components/Threads/ThreadList/ThreadListEmptyPlaceholder.mjs.map +1 -1
- package/dist/es/components/Threads/ThreadList/ThreadListHeader.mjs +4 -4
- package/dist/es/components/Threads/ThreadList/ThreadListHeader.mjs.map +1 -1
- package/dist/es/components/Threads/ThreadList/ThreadListItemUI.mjs +30 -30
- package/dist/es/components/Threads/ThreadList/ThreadListItemUI.mjs.map +1 -1
- package/dist/es/components/Threads/ThreadList/ThreadListLoadingIndicator.mjs +1 -1
- package/dist/es/components/Threads/ThreadList/ThreadListUnseenThreadsBanner.mjs +7 -3
- package/dist/es/components/Threads/ThreadList/ThreadListUnseenThreadsBanner.mjs.map +1 -1
- package/dist/es/components/Threads/ThreadList/useThreadHighlighting.mjs +47 -0
- package/dist/es/components/Threads/ThreadList/useThreadHighlighting.mjs.map +1 -0
- package/dist/es/components/Threads/ThreadList/utils.a11y.mjs +13 -8
- package/dist/es/components/Threads/ThreadList/utils.a11y.mjs.map +1 -1
- package/dist/es/components/Threads/hooks/useCloseThread.mjs +30 -0
- package/dist/es/components/Threads/hooks/useCloseThread.mjs.map +1 -0
- package/dist/es/components/TypingIndicator/TypingIndicator.mjs +23 -17
- package/dist/es/components/TypingIndicator/TypingIndicator.mjs.map +1 -1
- package/dist/es/components/TypingIndicator/TypingIndicatorHeader.mjs +15 -11
- package/dist/es/components/TypingIndicator/TypingIndicatorHeader.mjs.map +1 -1
- package/dist/es/components/TypingIndicator/hooks/useDebouncedTypingActive.mjs.map +1 -1
- package/dist/es/components/TypingIndicator/utils/getTypingStatusMessage.mjs +7 -3
- package/dist/es/components/TypingIndicator/utils/getTypingStatusMessage.mjs.map +1 -1
- package/dist/es/components/VideoPlayer/VideoThumbnail.mjs +2 -2
- package/dist/es/components/VideoPlayer/VideoThumbnail.mjs.map +1 -1
- package/dist/es/context/AttachmentContext.mjs +16 -0
- package/dist/es/context/AttachmentContext.mjs.map +1 -0
- package/dist/es/context/ChannelInstanceContext.mjs +17 -0
- package/dist/es/context/ChannelInstanceContext.mjs.map +1 -0
- package/dist/es/context/ChannelListContext.mjs +3 -6
- package/dist/es/context/ChannelListContext.mjs.map +1 -1
- package/dist/es/context/ChatContext.mjs +2 -8
- package/dist/es/context/ChatContext.mjs.map +1 -1
- package/dist/es/context/ComponentContext.mjs +1 -1
- package/dist/es/context/ComponentContext.mjs.map +1 -1
- package/dist/es/context/DialogManagerContext.mjs +2 -2
- package/dist/es/context/DialogManagerContext.mjs.map +1 -1
- package/dist/es/context/MessageBounceContext.mjs +12 -14
- package/dist/es/context/MessageBounceContext.mjs.map +1 -1
- package/dist/es/context/MessageComposerContext.mjs +8 -6
- package/dist/es/context/MessageComposerContext.mjs.map +1 -1
- package/dist/es/context/MessageComposerControllerContext.mjs +19 -0
- package/dist/es/context/MessageComposerControllerContext.mjs.map +1 -0
- package/dist/es/context/MessageContext.mjs +2 -5
- package/dist/es/context/MessageContext.mjs.map +1 -1
- package/dist/es/context/MessageListContext.mjs +2 -8
- package/dist/es/context/MessageListContext.mjs.map +1 -1
- package/dist/es/context/MessageTranslationViewContext.mjs +3 -6
- package/dist/es/context/MessageTranslationViewContext.mjs.map +1 -1
- package/dist/es/context/ModalContext.mjs +6 -8
- package/dist/es/context/ModalContext.mjs.map +1 -1
- package/dist/es/context/PollContext.mjs +2 -3
- package/dist/es/context/PollContext.mjs.map +1 -1
- package/dist/es/context/TranslationContext.mjs +8 -21
- package/dist/es/context/TranslationContext.mjs.map +1 -1
- package/dist/es/context/VirtualizedMessageListContext.mjs +2 -1
- package/dist/es/context/VirtualizedMessageListContext.mjs.map +1 -1
- package/dist/es/context/WithComponents.mjs +3 -3
- package/dist/es/context/WithComponents.mjs.map +1 -1
- package/dist/es/context/WorkspaceNavigationContext.mjs +45 -0
- package/dist/es/context/WorkspaceNavigationContext.mjs.map +1 -0
- package/dist/es/context/requireContext.mjs +17 -0
- package/dist/es/context/requireContext.mjs.map +1 -0
- package/dist/es/context/useChannel.mjs +14 -0
- package/dist/es/context/useChannel.mjs.map +1 -0
- package/dist/es/context/useComponentContextIcons.mjs +8 -13
- package/dist/es/context/useComponentContextIcons.mjs.map +1 -1
- package/dist/es/hooks/useIsDmChannel.mjs +30 -0
- package/dist/es/hooks/useIsDmChannel.mjs.map +1 -0
- package/dist/es/hooks/useMessagePaginator.mjs +14 -0
- package/dist/es/hooks/useMessagePaginator.mjs.map +1 -0
- package/dist/es/i18n/Streami18n.mjs +38 -521
- package/dist/es/i18n/Streami18n.mjs.map +1 -1
- package/dist/es/i18n/TranslationBuilder/index.mjs +3 -0
- package/dist/es/i18n/TranslationBuilder/notifications/NotificationTranslationTopic.mjs +22 -24
- package/dist/es/i18n/TranslationBuilder/notifications/NotificationTranslationTopic.mjs.map +1 -1
- package/dist/es/i18n/TranslationBuilder/notifications/translators.mjs +20 -31
- package/dist/es/i18n/TranslationBuilder/notifications/translators.mjs.map +1 -1
- package/dist/es/i18n/TranslationBuilder/notifications/translatorsByNotificationType.mjs +42 -15
- package/dist/es/i18n/TranslationBuilder/notifications/translatorsByNotificationType.mjs.map +1 -1
- package/dist/es/i18n/runtimeDefaults.mjs +41 -0
- package/dist/es/i18n/runtimeDefaults.mjs.map +1 -0
- package/dist/es/i18n/useStreami18n.mjs +41 -0
- package/dist/es/i18n/useStreami18n.mjs.map +1 -0
- package/dist/es/i18n/utils.mjs +7 -125
- package/dist/es/i18n/utils.mjs.map +1 -1
- package/dist/es/index.mjs +175 -180
- package/dist/es/plugins/ChannelDetail/AvatarWithChannelDetail.mjs +4 -4
- package/dist/es/plugins/ChannelDetail/AvatarWithChannelDetail.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/ChannelDetail.mjs +1 -1
- package/dist/es/plugins/ChannelDetail/ChannelDetail.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/ChannelDetailEmptyList.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/ChannelDetailSearchInput.mjs +3 -3
- package/dist/es/plugins/ChannelDetail/ChannelDetailSearchInput.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/SectionNavigator/SectionNavigatorHeader.mjs +4 -5
- package/dist/es/plugins/ChannelDetail/SectionNavigator/SectionNavigatorHeader.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesEmptyList.mjs +4 -4
- package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesEmptyList.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.mjs +9 -8
- package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.utils.mjs +7 -6
- package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.utils.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/useChannelFilesSearch.mjs +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementActions.defaults.mjs +44 -44
- package/dist/es/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementActions.defaults.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementView.mjs +25 -25
- package/dist/es/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementView.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaEmptyList.mjs +4 -4
- package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaEmptyList.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.mjs +13 -13
- package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.utils.mjs +8 -3
- package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.utils.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/useChannelMediaSearch.mjs +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberActions.defaults.mjs +44 -41
- package/dist/es/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberActions.defaults.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberDetail.mjs +6 -5
- package/dist/es/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberDetail.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.mjs +19 -11
- package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.mjs +12 -11
- package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersHeaderActions.defaults.mjs +8 -8
- package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersHeaderActions.defaults.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.mjs +8 -4
- package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.utils.mjs +1 -1
- package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.utils.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesEmptyList.mjs +3 -3
- package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesEmptyList.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.mjs +24 -21
- package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesCount.mjs +9 -17
- package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesCount.mjs.map +1 -1
- package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesSearch.mjs +1 -1
- package/dist/es/plugins/Emojis/EmojiPicker.mjs +9 -8
- package/dist/es/plugins/Emojis/EmojiPicker.mjs.map +1 -1
- package/dist/es/plugins/Emojis/middleware/textComposerEmojiMiddleware.mjs +2 -1
- package/dist/es/plugins/Emojis/middleware/textComposerEmojiMiddleware.mjs.map +1 -1
- package/dist/es/plugins/SlotGeometry/SlotGeometry.mjs +141 -0
- package/dist/es/plugins/SlotGeometry/SlotGeometry.mjs.map +1 -0
- package/dist/es/plugins/SlotLayout/ChannelSlot.mjs +30 -0
- package/dist/es/plugins/SlotLayout/ChannelSlot.mjs.map +1 -0
- package/dist/es/{components/ChatView → plugins/SlotLayout}/ChatView.a11y.utility.mjs +1 -1
- package/dist/es/plugins/SlotLayout/ChatView.a11y.utility.mjs.map +1 -0
- package/dist/es/plugins/SlotLayout/ChatView.mjs +277 -0
- package/dist/es/plugins/SlotLayout/ChatView.mjs.map +1 -0
- package/dist/es/plugins/SlotLayout/ChatViewNavigationContext.mjs +239 -0
- package/dist/es/plugins/SlotLayout/ChatViewNavigationContext.mjs.map +1 -0
- package/dist/es/plugins/SlotLayout/ThreadListSlot.mjs +42 -0
- package/dist/es/plugins/SlotLayout/ThreadListSlot.mjs.map +1 -0
- package/dist/es/plugins/SlotLayout/ThreadSlot.mjs +34 -0
- package/dist/es/plugins/SlotLayout/ThreadSlot.mjs.map +1 -0
- package/dist/es/plugins/SlotLayout/hooks/useLayoutViewState.mjs +26 -0
- package/dist/es/plugins/SlotLayout/hooks/useLayoutViewState.mjs.map +1 -0
- package/dist/es/plugins/SlotLayout/hooks/useSlotEntity.mjs +167 -0
- package/dist/es/plugins/SlotLayout/hooks/useSlotEntity.mjs.map +1 -0
- package/dist/es/plugins/SlotLayout/layout/Slot.mjs +46 -0
- package/dist/es/plugins/SlotLayout/layout/Slot.mjs.map +1 -0
- package/dist/es/plugins/SlotLayout/layout/WorkspaceLayout.mjs +23 -0
- package/dist/es/plugins/SlotLayout/layout/WorkspaceLayout.mjs.map +1 -0
- package/dist/es/plugins/SlotLayout/layoutController/LayoutController.mjs +376 -0
- package/dist/es/plugins/SlotLayout/layoutController/LayoutController.mjs.map +1 -0
- package/dist/es/plugins/SlotLayout/layoutController/serialization.mjs +80 -0
- package/dist/es/plugins/SlotLayout/layoutController/serialization.mjs.map +1 -0
- package/dist/es/plugins/SlotLayout/slotBinding.mjs +15 -0
- package/dist/es/plugins/SlotLayout/slotBinding.mjs.map +1 -0
- package/dist/es/plugins/SlotLayout/slotRegistry.mjs +64 -0
- package/dist/es/plugins/SlotLayout/slotRegistry.mjs.map +1 -0
- package/dist/es/plugins/SlotLayout/workspaceNavigationAdapter.mjs +130 -0
- package/dist/es/plugins/SlotLayout/workspaceNavigationAdapter.mjs.map +1 -0
- package/dist/es/slot-geometry.mjs +2 -0
- package/dist/es/slot-layout.mjs +14 -0
- package/dist/es/store/hooks/useStateStore.mjs.map +1 -1
- package/dist/es/utils/getChannel.mjs +5 -2
- package/dist/es/utils/getChannel.mjs.map +1 -1
- package/dist/es/utils/useStableCallback.mjs +1 -1
- package/dist/es/utils/useStableCallback.mjs.map +1 -1
- package/dist/types/a11y/accessibleLabel.d.ts.map +1 -1
- package/dist/types/components/AIStateIndicator/AIStateIndicator.d.ts.map +1 -1
- package/dist/types/components/AIStateIndicator/hooks/useAIState.d.ts +3 -8
- package/dist/types/components/AIStateIndicator/hooks/useAIState.d.ts.map +1 -1
- package/dist/types/components/Accessibility/NotificationAnnouncer.d.ts +1 -2
- package/dist/types/components/Accessibility/NotificationAnnouncer.d.ts.map +1 -1
- package/dist/types/components/Accessibility/hooks/useIncomingMessageAnnouncements.d.ts.map +1 -1
- package/dist/types/components/Accessibility/hooks/useInteractionAnnouncements.d.ts.map +1 -1
- package/dist/types/components/Accessibility/useAriaLiveAnnouncer.d.ts +4 -0
- package/dist/types/components/Accessibility/useAriaLiveAnnouncer.d.ts.map +1 -1
- package/dist/types/components/Attachment/Attachment.d.ts +13 -2
- package/dist/types/components/Attachment/Attachment.d.ts.map +1 -1
- package/dist/types/components/Attachment/AttachmentActions.d.ts.map +1 -1
- package/dist/types/components/Attachment/AttachmentContainer.d.ts +2 -2
- package/dist/types/components/Attachment/AttachmentContainer.d.ts.map +1 -1
- package/dist/types/components/Attachment/Audio.d.ts.map +1 -1
- package/dist/types/components/Attachment/FileAttachment.d.ts.map +1 -1
- package/dist/types/components/Attachment/Geolocation.d.ts +3 -3
- package/dist/types/components/Attachment/Geolocation.d.ts.map +1 -1
- package/dist/types/components/Attachment/Giphy.d.ts.map +1 -1
- package/dist/types/components/Attachment/LinkPreview/Card.d.ts.map +1 -1
- package/dist/types/components/Attachment/LinkPreview/CardAudio.d.ts +1 -1
- package/dist/types/components/Attachment/LinkPreview/CardAudio.d.ts.map +1 -1
- package/dist/types/components/Attachment/ModalGallery.d.ts.map +1 -1
- package/dist/types/components/Attachment/UnsupportedAttachment.d.ts.map +1 -1
- package/dist/types/components/Attachment/VideoAttachment.d.ts.map +1 -1
- package/dist/types/components/Attachment/VisibilityDisclaimer.d.ts.map +1 -1
- package/dist/types/components/Attachment/VoiceRecording.d.ts.map +1 -1
- package/dist/types/components/Attachment/components/DownloadButton.d.ts.map +1 -1
- package/dist/types/components/Attachment/components/index.d.ts +1 -1
- package/dist/types/components/Attachment/components/index.d.ts.map +1 -1
- package/dist/types/components/Attachment/hooks/useAttachmentUploadState.d.ts +0 -28
- package/dist/types/components/Attachment/hooks/useAttachmentUploadState.d.ts.map +1 -1
- package/dist/types/components/Attachment/index.d.ts +1 -1
- package/dist/types/components/Attachment/index.d.ts.map +1 -1
- package/dist/types/components/Attachment/utils.d.ts +2 -2
- package/dist/types/components/Attachment/utils.d.ts.map +1 -1
- package/dist/types/components/AudioPlayback/AudioPlaybackArbiter.d.ts +37 -0
- package/dist/types/components/AudioPlayback/AudioPlaybackArbiter.d.ts.map +1 -0
- package/dist/types/components/AudioPlayback/AudioPlayer.d.ts +1 -1
- package/dist/types/components/AudioPlayback/AudioPlayer.d.ts.map +1 -1
- package/dist/types/components/AudioPlayback/AudioPlayerPool.d.ts +19 -31
- package/dist/types/components/AudioPlayback/AudioPlayerPool.d.ts.map +1 -1
- package/dist/types/components/AudioPlayback/WithAudioPlayback.d.ts +17 -2
- package/dist/types/components/AudioPlayback/WithAudioPlayback.d.ts.map +1 -1
- package/dist/types/components/AudioPlayback/components/ProgressBar.d.ts.map +1 -1
- package/dist/types/components/AudioPlayback/components/WaveProgressBar.d.ts.map +1 -1
- package/dist/types/components/AudioPlayback/components/progressBarA11y.d.ts +2 -2
- package/dist/types/components/AudioPlayback/components/progressBarA11y.d.ts.map +1 -1
- package/dist/types/components/AudioPlayback/index.d.ts.map +1 -1
- package/dist/types/components/AudioPlayback/plugins/AudioPlayerNotificationsPlugin.d.ts +2 -2
- package/dist/types/components/AudioPlayback/plugins/AudioPlayerNotificationsPlugin.d.ts.map +1 -1
- package/dist/types/components/Avatar/Avatar.d.ts +1 -5
- package/dist/types/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/types/components/Badge/Badge.d.ts.map +1 -1
- package/dist/types/components/Badge/MediaBadge.d.ts.map +1 -1
- package/dist/types/components/BaseImage/ImagePlaceholder.d.ts.map +1 -1
- package/dist/types/components/Button/PlayButton.d.ts.map +1 -1
- package/dist/types/components/Button/WorkspaceNavigationButtons.d.ts +11 -0
- package/dist/types/components/Button/WorkspaceNavigationButtons.d.ts.map +1 -0
- package/dist/types/components/Button/index.d.ts +1 -0
- package/dist/types/components/Button/index.d.ts.map +1 -1
- package/dist/types/components/Channel/Channel.d.ts +9 -57
- package/dist/types/components/Channel/Channel.d.ts.map +1 -1
- package/dist/types/components/Channel/hooks/useChannelCapabilities.d.ts +4 -0
- package/dist/types/components/Channel/hooks/useChannelCapabilities.d.ts.map +1 -0
- package/dist/types/components/Channel/index.d.ts +1 -2
- package/dist/types/components/Channel/index.d.ts.map +1 -1
- package/dist/types/components/ChannelHeader/ChannelHeader.d.ts +12 -0
- package/dist/types/components/ChannelHeader/ChannelHeader.d.ts.map +1 -1
- package/dist/types/components/ChannelHeader/hooks/useChannelHasMembersOnline.d.ts +8 -0
- package/dist/types/components/ChannelHeader/hooks/useChannelHasMembersOnline.d.ts.map +1 -1
- package/dist/types/components/ChannelHeader/hooks/useChannelHeaderOnlineStatus.d.ts +7 -8
- package/dist/types/components/ChannelHeader/hooks/useChannelHeaderOnlineStatus.d.ts.map +1 -1
- package/dist/types/components/ChannelList/ChannelList.d.ts +11 -78
- package/dist/types/components/ChannelList/ChannelList.d.ts.map +1 -1
- package/dist/types/components/ChannelList/ChannelListHeader.d.ts.map +1 -1
- package/dist/types/components/ChannelList/ChannelLists.d.ts +10 -0
- package/dist/types/components/ChannelList/ChannelLists.d.ts.map +1 -0
- package/dist/types/components/ChannelList/ChannelNavigation.d.ts +9 -0
- package/dist/types/components/ChannelList/ChannelNavigation.d.ts.map +1 -0
- package/dist/types/components/ChannelList/hooks/index.d.ts +1 -2
- package/dist/types/components/ChannelList/hooks/index.d.ts.map +1 -1
- package/dist/types/components/ChannelList/hooks/useChannelMembersState.d.ts.map +1 -1
- package/dist/types/components/ChannelList/hooks/useChannelMembershipState.d.ts.map +1 -1
- package/dist/types/components/ChannelList/hooks/useChannelPaginatorState.d.ts +18 -0
- package/dist/types/components/ChannelList/hooks/useChannelPaginatorState.d.ts.map +1 -0
- package/dist/types/components/ChannelList/hooks/useSelectedChannelState.d.ts +3 -3
- package/dist/types/components/ChannelList/hooks/useSelectedChannelState.d.ts.map +1 -1
- package/dist/types/components/ChannelList/index.d.ts +3 -2
- package/dist/types/components/ChannelList/index.d.ts.map +1 -1
- package/dist/types/components/ChannelListItem/ChannelListItem.d.ts +9 -18
- package/dist/types/components/ChannelListItem/ChannelListItem.d.ts.map +1 -1
- package/dist/types/components/ChannelListItem/ChannelListItemActionButtons.defaults.d.ts.map +1 -1
- package/dist/types/components/ChannelListItem/ChannelListItemTimestamp.d.ts +3 -3
- package/dist/types/components/ChannelListItem/ChannelListItemTimestamp.d.ts.map +1 -1
- package/dist/types/components/ChannelListItem/ChannelListItemUI.d.ts.map +1 -1
- package/dist/types/components/ChannelListItem/hooks/useChannelDisplayName.d.ts +1 -1
- package/dist/types/components/ChannelListItem/hooks/useChannelDisplayName.d.ts.map +1 -1
- package/dist/types/components/ChannelListItem/hooks/useIsChannelMuted.d.ts +8 -5
- package/dist/types/components/ChannelListItem/hooks/useIsChannelMuted.d.ts.map +1 -1
- package/dist/types/components/ChannelListItem/hooks/useMessageDeliveryStatus.d.ts.map +1 -1
- package/dist/types/components/ChannelListItem/utils.a11y.d.ts +14 -5
- package/dist/types/components/ChannelListItem/utils.a11y.d.ts.map +1 -1
- package/dist/types/components/ChannelListItem/utils.d.ts +1 -1
- package/dist/types/components/ChannelListItem/utils.d.ts.map +1 -1
- package/dist/types/components/Chat/Chat.d.ts +1 -4
- package/dist/types/components/Chat/Chat.d.ts.map +1 -1
- package/dist/types/components/Chat/hooks/useChat.d.ts +4 -16
- package/dist/types/components/Chat/hooks/useChat.d.ts.map +1 -1
- package/dist/types/components/Chat/hooks/useCreateChatClient.d.ts +2 -2
- package/dist/types/components/Chat/hooks/useCreateChatClient.d.ts.map +1 -1
- package/dist/types/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
- package/dist/types/components/Chat/hooks/useNetworkConnectionState.d.ts +34 -0
- package/dist/types/components/Chat/hooks/useNetworkConnectionState.d.ts.map +1 -0
- package/dist/types/components/Chat/hooks/useReportLostConnectionSystemNotification.d.ts +26 -2
- package/dist/types/components/Chat/hooks/useReportLostConnectionSystemNotification.d.ts.map +1 -1
- package/dist/types/components/Chat/hooks/useWSConnectionState.d.ts +22 -0
- package/dist/types/components/Chat/hooks/useWSConnectionState.d.ts.map +1 -0
- package/dist/types/components/Chat/index.d.ts +2 -0
- package/dist/types/components/Chat/index.d.ts.map +1 -1
- package/dist/types/components/Dialog/components/ContextMenu.d.ts +0 -4
- package/dist/types/components/Dialog/components/ContextMenu.d.ts.map +1 -1
- package/dist/types/components/Dialog/hooks/usePopoverPosition.d.ts +2 -2
- package/dist/types/components/Dialog/hooks/usePopoverPosition.d.ts.map +1 -1
- package/dist/types/components/Dialog/service/DialogManager.d.ts +1 -1
- package/dist/types/components/Dialog/service/DialogManager.d.ts.map +1 -1
- package/dist/types/components/EmptyStateIndicator/EmptyStateIndicator.d.ts.map +1 -1
- package/dist/types/components/Form/Dropdown.d.ts +4 -1
- package/dist/types/components/Form/Dropdown.d.ts.map +1 -1
- package/dist/types/components/Form/NumericInput.d.ts.map +1 -1
- package/dist/types/components/Gallery/GalleryContext.d.ts +5 -0
- package/dist/types/components/Gallery/GalleryContext.d.ts.map +1 -1
- package/dist/types/components/Gallery/GalleryHeader.d.ts.map +1 -1
- package/dist/types/components/Gallery/GalleryUI.d.ts.map +1 -1
- package/dist/types/components/Icons/index.d.ts +1 -1
- package/dist/types/components/Icons/index.d.ts.map +1 -1
- package/dist/types/components/Icons/slots.d.ts +18 -7
- package/dist/types/components/Icons/slots.d.ts.map +1 -1
- package/dist/types/components/InfiniteScrollPaginator/InfiniteScrollPaginator.d.ts +8 -2
- package/dist/types/components/InfiniteScrollPaginator/InfiniteScrollPaginator.d.ts.map +1 -1
- package/dist/types/components/InfiniteScrollPaginator/InfiniteScrollWithComponents.d.ts +43 -0
- package/dist/types/components/InfiniteScrollPaginator/InfiniteScrollWithComponents.d.ts.map +1 -0
- package/dist/types/components/InfiniteScrollPaginator/hooks/useCursorPaginator.d.ts +1 -1
- package/dist/types/components/InfiniteScrollPaginator/hooks/useCursorPaginator.d.ts.map +1 -1
- package/dist/types/components/LoadMore/LoadMoreButton.d.ts.map +1 -1
- package/dist/types/components/Loading/AttachmentUploadedSizeIndicator.d.ts +3 -0
- package/dist/types/components/Loading/AttachmentUploadedSizeIndicator.d.ts.map +1 -1
- package/dist/types/components/Loading/LoadingErrorIndicator.d.ts.map +1 -1
- package/dist/types/components/Loading/LoadingIndicator.d.ts +2 -3
- package/dist/types/components/Loading/LoadingIndicator.d.ts.map +1 -1
- package/dist/types/components/Loading/UploadProgressIndicator.d.ts +2 -2
- package/dist/types/components/Loading/index.d.ts +1 -1
- package/dist/types/components/Loading/index.d.ts.map +1 -1
- package/dist/types/components/Loading/progress-indicators.d.ts.map +1 -1
- package/dist/types/components/Location/ShareLocationDialog.d.ts.map +1 -1
- package/dist/types/components/Location/hooks/useLiveLocationSharingManager.d.ts.map +1 -1
- package/dist/types/components/MediaRecorder/AudioRecorder/AudioRecorderRecordingControls.d.ts.map +1 -1
- package/dist/types/components/MediaRecorder/AudioRecorder/AudioRecordingButtonWithNotification.d.ts.map +1 -1
- package/dist/types/components/MediaRecorder/AudioRecorder/AudioRecordingPlayback.d.ts.map +1 -1
- package/dist/types/components/MediaRecorder/AudioRecorder/AudioRecordingPreview.d.ts.map +1 -1
- package/dist/types/components/MediaRecorder/RecordingPermissionDeniedNotification.d.ts.map +1 -1
- package/dist/types/components/MediaRecorder/classes/MediaRecorderController.d.ts.map +1 -1
- package/dist/types/components/MediaRecorder/hooks/useMediaRecorder.d.ts +2 -2
- package/dist/types/components/MediaRecorder/hooks/useMediaRecorder.d.ts.map +1 -1
- package/dist/types/components/Message/Message.d.ts.map +1 -1
- package/dist/types/components/Message/MessageAlsoSentInChannelIndicator.d.ts +11 -1
- package/dist/types/components/Message/MessageAlsoSentInChannelIndicator.d.ts.map +1 -1
- package/dist/types/components/Message/MessageDeletedBubble.d.ts.map +1 -1
- package/dist/types/components/Message/MessageEditedIndicator.d.ts.map +1 -1
- package/dist/types/components/Message/MessageRepliesCountButton.d.ts.map +1 -1
- package/dist/types/components/Message/MessageStatus.d.ts.map +1 -1
- package/dist/types/components/Message/MessageText.d.ts.map +1 -1
- package/dist/types/components/Message/MessageTimestamp.d.ts.map +1 -1
- package/dist/types/components/Message/MessageTranslationIndicator.d.ts.map +1 -1
- package/dist/types/components/Message/MessageUI.d.ts.map +1 -1
- package/dist/types/components/Message/ReminderNotification.d.ts.map +1 -1
- package/dist/types/components/Message/StreamedMessageText.d.ts.map +1 -1
- package/dist/types/components/Message/Timestamp.d.ts.map +1 -1
- package/dist/types/components/Message/hooks/index.d.ts +1 -0
- package/dist/types/components/Message/hooks/index.d.ts.map +1 -1
- package/dist/types/components/Message/hooks/useActionHandler.d.ts +1 -1
- package/dist/types/components/Message/hooks/useActionHandler.d.ts.map +1 -1
- package/dist/types/components/Message/hooks/useDeleteHandler.d.ts +6 -2
- package/dist/types/components/Message/hooks/useDeleteHandler.d.ts.map +1 -1
- package/dist/types/components/Message/hooks/useMarkUnreadHandler.d.ts +6 -1
- package/dist/types/components/Message/hooks/useMarkUnreadHandler.d.ts.map +1 -1
- package/dist/types/components/Message/hooks/useMentionsHandler.d.ts.map +1 -1
- package/dist/types/components/Message/hooks/useMessageAlsoSentInChannelNavigation.d.ts +22 -0
- package/dist/types/components/Message/hooks/useMessageAlsoSentInChannelNavigation.d.ts.map +1 -0
- package/dist/types/components/Message/hooks/useMuteHandler.d.ts +7 -2
- package/dist/types/components/Message/hooks/useMuteHandler.d.ts.map +1 -1
- package/dist/types/components/Message/hooks/useOpenThreadHandler.d.ts +1 -0
- package/dist/types/components/Message/hooks/useOpenThreadHandler.d.ts.map +1 -1
- package/dist/types/components/Message/hooks/usePinHandler.d.ts +23 -2
- package/dist/types/components/Message/hooks/usePinHandler.d.ts.map +1 -1
- package/dist/types/components/Message/hooks/useReactionHandler.d.ts +1 -1
- package/dist/types/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
- package/dist/types/components/Message/hooks/useReactionsFetcher.d.ts +2 -2
- package/dist/types/components/Message/hooks/useReactionsFetcher.d.ts.map +1 -1
- package/dist/types/components/Message/hooks/useRetryHandler.d.ts +3 -2
- package/dist/types/components/Message/hooks/useRetryHandler.d.ts.map +1 -1
- package/dist/types/components/Message/hooks/useUserRole.d.ts +1 -0
- package/dist/types/components/Message/hooks/useUserRole.d.ts.map +1 -1
- package/dist/types/components/Message/types.d.ts +11 -20
- package/dist/types/components/Message/types.d.ts.map +1 -1
- package/dist/types/components/Message/utils.d.ts +7 -38
- package/dist/types/components/Message/utils.d.ts.map +1 -1
- package/dist/types/components/MessageActions/DeleteMessageAlert.d.ts.map +1 -1
- package/dist/types/components/MessageActions/DownloadSubmenu.d.ts.map +1 -1
- package/dist/types/components/MessageActions/MessageActions.d.ts +6 -2
- package/dist/types/components/MessageActions/MessageActions.d.ts.map +1 -1
- package/dist/types/components/MessageActions/MessageActions.defaults.d.ts.map +1 -1
- package/dist/types/components/MessageActions/RemindMeSubmenu.d.ts.map +1 -1
- package/dist/types/components/MessageActions/hooks/useBaseMessageActionSetFilter.d.ts.map +1 -1
- package/dist/types/components/MessageBounce/MessageBouncePrompt.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/AttachmentPreviewList/AudioAttachmentPreview.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/AttachmentPreviewList/FileAttachmentPreview.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/AttachmentPreviewList/GeolocationPreview.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/AttachmentPreviewList/MediaAttachmentPreview.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/AttachmentPreviewList/UnsupportedAttachmentPreview.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/AttachmentPreviewList/index.d.ts +1 -1
- package/dist/types/components/MessageComposer/AttachmentPreviewList/index.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/AttachmentPreviewList/utils/AttachmentPreviewRoot.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/AttachmentSelector/AttachmentSelector.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/AttachmentSelector/CommandsMenu.d.ts +5 -5
- package/dist/types/components/MessageComposer/AttachmentSelector/CommandsMenu.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/CommandChip.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/EditMessageForm.d.ts +1 -0
- package/dist/types/components/MessageComposer/EditMessageForm.d.ts.map +1 -0
- package/dist/types/components/MessageComposer/MessageComposer.d.ts +1 -17
- package/dist/types/components/MessageComposer/MessageComposer.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/MessageComposerActions.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/MessageComposerUI.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/QuotedMessagePreview.d.ts +3 -3
- package/dist/types/components/MessageComposer/QuotedMessagePreview.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/RemoveAttachmentPreviewButton.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/SendButton.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/SendToChannelCheckbox.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/StopAIGenerationButton.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/WithDragAndDropUpload.d.ts +2 -5
- package/dist/types/components/MessageComposer/WithDragAndDropUpload.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/hooks/index.d.ts +1 -0
- package/dist/types/components/MessageComposer/hooks/index.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/hooks/useAttachmentManagerState.d.ts +5 -1
- package/dist/types/components/MessageComposer/hooks/useAttachmentManagerState.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/hooks/useAttachmentsForPreview.d.ts +1 -2
- package/dist/types/components/MessageComposer/hooks/useAttachmentsForPreview.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/hooks/useCreateMessageComposerContext.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/hooks/useMessageComposerBindings.d.ts +0 -1
- package/dist/types/components/MessageComposer/hooks/useMessageComposerBindings.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/hooks/useMessageComposerCommands.d.ts +2 -2
- package/dist/types/components/MessageComposer/hooks/useMessageComposerCommands.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/hooks/useMessageComposerController.d.ts +1 -1
- package/dist/types/components/MessageComposer/hooks/useMessageComposerController.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/hooks/useMessageComposerHasSendableData.d.ts.map +1 -1
- package/dist/types/components/MessageComposer/hooks/useMessageComposerSubmitFn.d.ts +7 -0
- package/dist/types/components/MessageComposer/hooks/useMessageComposerSubmitFn.d.ts.map +1 -0
- package/dist/types/components/MessageComposer/index.d.ts +2 -1
- package/dist/types/components/MessageComposer/index.d.ts.map +1 -1
- package/dist/types/components/MessageList/FloatingDateSeparator.d.ts +1 -1
- package/dist/types/components/MessageList/FloatingDateSeparator.d.ts.map +1 -1
- package/dist/types/components/MessageList/MessageList.d.ts +24 -25
- package/dist/types/components/MessageList/MessageList.d.ts.map +1 -1
- package/dist/types/components/MessageList/NewMessageNotification.d.ts.map +1 -1
- package/dist/types/components/MessageList/ScrollToLatestMessageButton.d.ts +0 -1
- package/dist/types/components/MessageList/ScrollToLatestMessageButton.d.ts.map +1 -1
- package/dist/types/components/MessageList/UnreadMessagesNotification.d.ts +1 -4
- package/dist/types/components/MessageList/UnreadMessagesNotification.d.ts.map +1 -1
- package/dist/types/components/MessageList/UnreadMessagesSeparator.d.ts.map +1 -1
- package/dist/types/components/MessageList/VirtualizedMessageList.d.ts +23 -42
- package/dist/types/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/types/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
- package/dist/types/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts +3 -3
- package/dist/types/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts.map +1 -1
- package/dist/types/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.d.ts +2 -2
- package/dist/types/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.d.ts.map +1 -1
- package/dist/types/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +1 -3
- package/dist/types/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -1
- package/dist/types/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts +1 -0
- package/dist/types/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts.map +1 -1
- package/dist/types/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts +6 -25
- package/dist/types/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -1
- package/dist/types/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts +1 -1
- package/dist/types/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts.map +1 -1
- package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useFloatingDateSeparator.d.ts +2 -2
- package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useFloatingDateSeparator.d.ts.map +1 -1
- package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.d.ts +1 -1
- package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.d.ts.map +1 -1
- package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts +1 -5
- package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts.map +1 -1
- package/dist/types/components/MessageList/hooks/useCanPaginateReplies.d.ts +32 -0
- package/dist/types/components/MessageList/hooks/useCanPaginateReplies.d.ts.map +1 -0
- package/dist/types/components/MessageList/hooks/useLastDeliveredData.d.ts +1 -0
- package/dist/types/components/MessageList/hooks/useLastDeliveredData.d.ts.map +1 -1
- package/dist/types/components/MessageList/hooks/useLastReadData.d.ts +1 -0
- package/dist/types/components/MessageList/hooks/useLastReadData.d.ts.map +1 -1
- package/dist/types/components/MessageList/hooks/useMarkRead.d.ts +5 -9
- package/dist/types/components/MessageList/hooks/useMarkRead.d.ts.map +1 -1
- package/dist/types/components/MessageList/hooks/useReceiptsByMessageId.d.ts +12 -0
- package/dist/types/components/MessageList/hooks/useReceiptsByMessageId.d.ts.map +1 -0
- package/dist/types/components/MessageList/hooks/useThreadHead.d.ts +9 -0
- package/dist/types/components/MessageList/hooks/useThreadHead.d.ts.map +1 -0
- package/dist/types/components/MessageList/messageSourceKey.d.ts +14 -0
- package/dist/types/components/MessageList/messageSourceKey.d.ts.map +1 -0
- package/dist/types/components/MessageList/renderMessages.d.ts +11 -9
- package/dist/types/components/MessageList/renderMessages.d.ts.map +1 -1
- package/dist/types/components/MessageList/utils.d.ts +22 -13
- package/dist/types/components/MessageList/utils.d.ts.map +1 -1
- package/dist/types/components/Modal/CloseButtonOnModalOverlay.d.ts.map +1 -1
- package/dist/types/components/Notifications/Notification.d.ts.map +1 -1
- package/dist/types/components/Notifications/NotificationList.d.ts.map +1 -1
- package/dist/types/components/Notifications/hooks/useNotificationApi.d.ts +3 -0
- package/dist/types/components/Notifications/hooks/useNotificationApi.d.ts.map +1 -1
- package/dist/types/components/Notifications/hooks/useNotificationTarget.d.ts.map +1 -1
- package/dist/types/components/Notifications/notificationTarget.d.ts.map +1 -1
- package/dist/types/components/Poll/PollActions/AddCommentPrompt.d.ts.map +1 -1
- package/dist/types/components/Poll/PollActions/EndPollAlert.d.ts.map +1 -1
- package/dist/types/components/Poll/PollActions/PollActions.d.ts.map +1 -1
- package/dist/types/components/Poll/PollActions/PollAnswerList.d.ts.map +1 -1
- package/dist/types/components/Poll/PollActions/PollOptionsFullList.d.ts.map +1 -1
- package/dist/types/components/Poll/PollActions/PollQuestion.d.ts.map +1 -1
- package/dist/types/components/Poll/PollActions/PollResults/PollOptionWithVotes.d.ts +2 -2
- package/dist/types/components/Poll/PollActions/PollResults/PollOptionWithVotes.d.ts.map +1 -1
- package/dist/types/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.d.ts +2 -2
- package/dist/types/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.d.ts.map +1 -1
- package/dist/types/components/Poll/PollActions/PollResults/PollOptionWithVotesList.d.ts +2 -2
- package/dist/types/components/Poll/PollActions/PollResults/PollOptionWithVotesList.d.ts.map +1 -1
- package/dist/types/components/Poll/PollActions/PollResults/PollResults.d.ts.map +1 -1
- package/dist/types/components/Poll/PollActions/SuggestPollOptionPrompt.d.ts.map +1 -1
- package/dist/types/components/Poll/PollCreationDialog/MultipleAnswersField.d.ts.map +1 -1
- package/dist/types/components/Poll/PollCreationDialog/NameField.d.ts.map +1 -1
- package/dist/types/components/Poll/PollCreationDialog/OptionFieldSet.d.ts.map +1 -1
- package/dist/types/components/Poll/PollCreationDialog/PollCreationDialog.d.ts.map +1 -1
- package/dist/types/components/Poll/PollCreationDialog/PollCreationDialogControls.d.ts.map +1 -1
- package/dist/types/components/Poll/PollCreationDialog/PollOptionReorderHandle.d.ts.map +1 -1
- package/dist/types/components/Poll/PollHeader.d.ts.map +1 -1
- package/dist/types/components/Poll/PollOptionList.d.ts.map +1 -1
- package/dist/types/components/Poll/PollOptionSelector.d.ts +2 -2
- package/dist/types/components/Poll/PollOptionSelector.d.ts.map +1 -1
- package/dist/types/components/Poll/PollVote.d.ts +1 -1
- package/dist/types/components/Poll/PollVote.d.ts.map +1 -1
- package/dist/types/components/Poll/hooks/useManagePollVotesRealtime.d.ts +2 -2
- package/dist/types/components/Poll/hooks/useManagePollVotesRealtime.d.ts.map +1 -1
- package/dist/types/components/Poll/hooks/usePollAnswerPagination.d.ts +2 -2
- package/dist/types/components/Poll/hooks/usePollAnswerPagination.d.ts.map +1 -1
- package/dist/types/components/Poll/hooks/usePollOptionVotesPagination.d.ts +2 -2
- package/dist/types/components/Poll/hooks/usePollOptionVotesPagination.d.ts.map +1 -1
- package/dist/types/components/Reactions/MessageReactions.d.ts.map +1 -1
- package/dist/types/components/Reactions/MessageReactionsDetail.d.ts +2 -2
- package/dist/types/components/Reactions/MessageReactionsDetail.d.ts.map +1 -1
- package/dist/types/components/Reactions/ReactionSelector.d.ts.map +1 -1
- package/dist/types/components/Reactions/ReactionSelectorWithButton.d.ts +0 -5
- package/dist/types/components/Reactions/ReactionSelectorWithButton.d.ts.map +1 -1
- package/dist/types/components/Reactions/hooks/useFetchReactions.d.ts +2 -2
- package/dist/types/components/Reactions/hooks/useFetchReactions.d.ts.map +1 -1
- package/dist/types/components/Reactions/hooks/useProcessReactions.d.ts +1 -3
- package/dist/types/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -1
- package/dist/types/components/Search/SearchBar/SearchBar.d.ts.map +1 -1
- package/dist/types/components/Search/SearchContext.d.ts.map +1 -1
- package/dist/types/components/Search/SearchResults/SearchResultItem.d.ts +20 -6
- package/dist/types/components/Search/SearchResults/SearchResultItem.d.ts.map +1 -1
- package/dist/types/components/Search/SearchResults/SearchResultsHeader.d.ts.map +1 -1
- package/dist/types/components/Search/SearchResults/SearchSourceResultsEmpty.d.ts.map +1 -1
- package/dist/types/components/Search/SearchResults/SearchSourceResultsLoadingIndicator.d.ts.map +1 -1
- package/dist/types/components/Search/SearchSourceResultsContext.d.ts.map +1 -1
- package/dist/types/components/Search/hooks/index.d.ts +0 -1
- package/dist/types/components/Search/hooks/index.d.ts.map +1 -1
- package/dist/types/components/SummarizedMessagePreview/SummarizedMessagePreview.d.ts +6 -0
- package/dist/types/components/SummarizedMessagePreview/SummarizedMessagePreview.d.ts.map +1 -1
- package/dist/types/components/SummarizedMessagePreview/hooks/useLatestMessagePreview.d.ts.map +1 -1
- package/dist/types/components/TextareaComposer/SuggestionList/CommandItem.d.ts +2 -2
- package/dist/types/components/TextareaComposer/SuggestionList/CommandItem.d.ts.map +1 -1
- package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/BroadcastMentionItem.d.ts.map +1 -1
- package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/RoleItem.d.ts.map +1 -1
- package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/UserGroupItem.d.ts.map +1 -1
- package/dist/types/components/TextareaComposer/SuggestionList/SuggestionList.d.ts.map +1 -1
- package/dist/types/components/TextareaComposer/TextareaComposer.d.ts.map +1 -1
- package/dist/types/components/TextareaComposer/hooks/useTextareaPlaceholder.d.ts.map +1 -1
- package/dist/types/components/Thread/Thread.d.ts +31 -27
- package/dist/types/components/Thread/Thread.d.ts.map +1 -1
- package/dist/types/components/Thread/ThreadHead.d.ts.map +1 -1
- package/dist/types/components/Thread/ThreadHeader.d.ts +13 -6
- package/dist/types/components/Thread/ThreadHeader.d.ts.map +1 -1
- package/dist/types/components/Thread/ThreadStart.d.ts.map +1 -1
- package/dist/types/components/Thread/index.d.ts +0 -1
- package/dist/types/components/Thread/index.d.ts.map +1 -1
- package/dist/types/components/Threads/ThreadContext.d.ts.map +1 -1
- package/dist/types/components/Threads/ThreadList/ThreadList.d.ts.map +1 -1
- package/dist/types/components/Threads/ThreadList/ThreadListEmptyPlaceholder.d.ts.map +1 -1
- package/dist/types/components/Threads/ThreadList/ThreadListHeader.d.ts.map +1 -1
- package/dist/types/components/Threads/ThreadList/ThreadListItemUI.d.ts.map +1 -1
- package/dist/types/components/Threads/ThreadList/ThreadListUnseenThreadsBanner.d.ts.map +1 -1
- package/dist/types/components/Threads/ThreadList/useThreadHighlighting.d.ts +15 -0
- package/dist/types/components/Threads/ThreadList/useThreadHighlighting.d.ts.map +1 -0
- package/dist/types/components/Threads/ThreadList/utils.a11y.d.ts.map +1 -1
- package/dist/types/components/Threads/hooks/useCloseThread.d.ts +9 -0
- package/dist/types/components/Threads/hooks/useCloseThread.d.ts.map +1 -0
- package/dist/types/components/Threads/index.d.ts +1 -0
- package/dist/types/components/Threads/index.d.ts.map +1 -1
- package/dist/types/components/TypingIndicator/TypingIndicator.d.ts +4 -5
- package/dist/types/components/TypingIndicator/TypingIndicator.d.ts.map +1 -1
- package/dist/types/components/TypingIndicator/TypingIndicatorHeader.d.ts +1 -1
- package/dist/types/components/TypingIndicator/TypingIndicatorHeader.d.ts.map +1 -1
- package/dist/types/components/TypingIndicator/hooks/useDebouncedTypingActive.d.ts +2 -2
- package/dist/types/components/TypingIndicator/hooks/useDebouncedTypingActive.d.ts.map +1 -1
- package/dist/types/components/TypingIndicator/utils/getTypingStatusMessage.d.ts +2 -3
- package/dist/types/components/TypingIndicator/utils/getTypingStatusMessage.d.ts.map +1 -1
- package/dist/types/components/VideoPlayer/VideoThumbnail.d.ts.map +1 -1
- package/dist/types/components/index.d.ts +0 -2
- package/dist/types/components/index.d.ts.map +1 -1
- package/dist/types/context/AttachmentContext.d.ts +19 -0
- package/dist/types/context/AttachmentContext.d.ts.map +1 -0
- package/dist/types/context/ChannelInstanceContext.d.ts +16 -0
- package/dist/types/context/ChannelInstanceContext.d.ts.map +1 -0
- package/dist/types/context/ChannelListContext.d.ts +9 -18
- package/dist/types/context/ChannelListContext.d.ts.map +1 -1
- package/dist/types/context/ChatContext.d.ts +10 -23
- package/dist/types/context/ChatContext.d.ts.map +1 -1
- package/dist/types/context/ComponentContext.d.ts +30 -23
- package/dist/types/context/ComponentContext.d.ts.map +1 -1
- package/dist/types/context/DialogManagerContext.d.ts.map +1 -1
- package/dist/types/context/MessageBounceContext.d.ts +1 -1
- package/dist/types/context/MessageBounceContext.d.ts.map +1 -1
- package/dist/types/context/MessageComposerContext.d.ts +7 -2
- package/dist/types/context/MessageComposerContext.d.ts.map +1 -1
- package/dist/types/context/MessageComposerControllerContext.d.ts +13 -0
- package/dist/types/context/MessageComposerControllerContext.d.ts.map +1 -0
- package/dist/types/context/MessageContext.d.ts +8 -21
- package/dist/types/context/MessageContext.d.ts.map +1 -1
- package/dist/types/context/MessageListContext.d.ts +2 -2
- package/dist/types/context/MessageListContext.d.ts.map +1 -1
- package/dist/types/context/MessageTranslationViewContext.d.ts.map +1 -1
- package/dist/types/context/ModalContext.d.ts +4 -0
- package/dist/types/context/ModalContext.d.ts.map +1 -1
- package/dist/types/context/PollContext.d.ts.map +1 -1
- package/dist/types/context/TranslationContext.d.ts +21 -11
- package/dist/types/context/TranslationContext.d.ts.map +1 -1
- package/dist/types/context/VirtualizedMessageListContext.d.ts.map +1 -1
- package/dist/types/context/WithComponents.d.ts.map +1 -1
- package/dist/types/context/WorkspaceNavigationContext.d.ts +128 -0
- package/dist/types/context/WorkspaceNavigationContext.d.ts.map +1 -0
- package/dist/types/context/index.d.ts +6 -4
- package/dist/types/context/index.d.ts.map +1 -1
- package/dist/types/context/requireContext.d.ts +10 -0
- package/dist/types/context/requireContext.d.ts.map +1 -0
- package/dist/types/context/useChannel.d.ts +3 -0
- package/dist/types/context/useChannel.d.ts.map +1 -0
- package/dist/types/context/useComponentContextIcons.d.ts +4 -6
- package/dist/types/context/useComponentContextIcons.d.ts.map +1 -1
- package/dist/types/hooks/index.d.ts +3 -0
- package/dist/types/hooks/index.d.ts.map +1 -0
- package/dist/types/hooks/useIsDmChannel.d.ts +13 -0
- package/dist/types/hooks/useIsDmChannel.d.ts.map +1 -0
- package/dist/types/hooks/useMessagePaginator.d.ts +6 -0
- package/dist/types/hooks/useMessagePaginator.d.ts.map +1 -0
- package/dist/types/i18n/Streami18n.d.ts +48 -848
- package/dist/types/i18n/Streami18n.d.ts.map +1 -1
- package/dist/types/i18n/TranslationBuilder/index.d.ts +6 -1
- package/dist/types/i18n/TranslationBuilder/index.d.ts.map +1 -1
- package/dist/types/i18n/TranslationBuilder/notifications/NotificationTranslationTopic.d.ts.map +1 -1
- package/dist/types/i18n/TranslationBuilder/notifications/translators.d.ts.map +1 -1
- package/dist/types/i18n/TranslationBuilder/notifications/translatorsByNotificationType.d.ts +3 -1
- package/dist/types/i18n/TranslationBuilder/notifications/translatorsByNotificationType.d.ts.map +1 -1
- package/dist/types/i18n/index.d.ts +2 -2
- package/dist/types/i18n/index.d.ts.map +1 -1
- package/dist/types/i18n/keys.d.ts +583 -0
- package/dist/types/i18n/keys.d.ts.map +1 -0
- package/dist/types/i18n/runtimeDefaults.d.ts +37 -0
- package/dist/types/i18n/runtimeDefaults.d.ts.map +1 -0
- package/dist/types/i18n/types.d.ts +34 -104
- package/dist/types/i18n/types.d.ts.map +1 -1
- package/dist/types/i18n/useStreami18n.d.ts +19 -0
- package/dist/types/i18n/useStreami18n.d.ts.map +1 -0
- package/dist/types/i18n/utils.d.ts +18 -14
- package/dist/types/i18n/utils.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/AvatarWithChannelDetail.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/ChannelDetail.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/ChannelDetailEmptyList.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/ChannelDetailSearchInput.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/SectionNavigator/SectionNavigatorHeader.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesEmptyList.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.utils.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementActions.defaults.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementView.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaEmptyList.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.utils.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberActions.defaults.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberDetail.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersHeaderActions.defaults.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.utils.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesEmptyList.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.d.ts.map +1 -1
- package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesCount.d.ts +5 -1
- package/dist/types/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesCount.d.ts.map +1 -1
- package/dist/types/plugins/Emojis/EmojiPicker.d.ts +0 -4
- package/dist/types/plugins/Emojis/EmojiPicker.d.ts.map +1 -1
- package/dist/types/plugins/SlotGeometry/SlotGeometry.d.ts +72 -0
- package/dist/types/plugins/SlotGeometry/SlotGeometry.d.ts.map +1 -0
- package/dist/types/plugins/SlotGeometry/index.d.ts +3 -0
- package/dist/types/plugins/SlotGeometry/index.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/ChannelSlot.d.ts +24 -0
- package/dist/types/plugins/SlotLayout/ChannelSlot.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/ChatView.a11y.utility.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/ChatView.d.ts +113 -0
- package/dist/types/plugins/SlotLayout/ChatView.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/ChatViewNavigationContext.d.ts +111 -0
- package/dist/types/plugins/SlotLayout/ChatViewNavigationContext.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/ThreadListSlot.d.ts +8 -0
- package/dist/types/plugins/SlotLayout/ThreadListSlot.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/ThreadSlot.d.ts +10 -0
- package/dist/types/plugins/SlotLayout/ThreadSlot.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/hooks/index.d.ts +3 -0
- package/dist/types/plugins/SlotLayout/hooks/index.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/hooks/useLayoutViewState.d.ts +5 -0
- package/dist/types/plugins/SlotLayout/hooks/useLayoutViewState.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/hooks/useSlotEntity.d.ts +162 -0
- package/dist/types/plugins/SlotLayout/hooks/useSlotEntity.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/index.d.ts +12 -0
- package/dist/types/plugins/SlotLayout/index.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/layout/Slot.d.ts +8 -0
- package/dist/types/plugins/SlotLayout/layout/Slot.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/layout/WorkspaceLayout.d.ts +11 -0
- package/dist/types/plugins/SlotLayout/layout/WorkspaceLayout.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/layoutController/LayoutController.d.ts +25 -0
- package/dist/types/plugins/SlotLayout/layoutController/LayoutController.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/layoutController/layoutControllerTypes.d.ts +121 -0
- package/dist/types/plugins/SlotLayout/layoutController/layoutControllerTypes.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/layoutController/serialization.d.ts +6 -0
- package/dist/types/plugins/SlotLayout/layoutController/serialization.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/slotBinding.d.ts +85 -0
- package/dist/types/plugins/SlotLayout/slotBinding.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/slotRegistry.d.ts +60 -0
- package/dist/types/plugins/SlotLayout/slotRegistry.d.ts.map +1 -0
- package/dist/types/plugins/SlotLayout/workspaceNavigationAdapter.d.ts +26 -0
- package/dist/types/plugins/SlotLayout/workspaceNavigationAdapter.d.ts.map +1 -0
- package/dist/types/store/hooks/useStateStore.d.ts +1 -1
- package/dist/types/store/hooks/useStateStore.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +0 -1
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/types.d.ts +0 -10
- package/dist/types/types/types.d.ts.map +1 -1
- package/dist/types/utils/getChannel.d.ts +2 -2
- package/dist/types/utils/getChannel.d.ts.map +1 -1
- package/dist/types/utils/useStableCallback.d.ts +1 -1
- package/package.json +34 -16
- package/dist/cjs/NotificationList.4ce251ea.js +0 -9552
- package/dist/cjs/NotificationList.4ce251ea.js.map +0 -1
- package/dist/cjs/useChannelHeaderOnlineStatus.64c443f5.js +0 -961
- package/dist/cjs/useChannelHeaderOnlineStatus.64c443f5.js.map +0 -1
- package/dist/cjs/useInertWhenHidden.1a2a6a2b.js +0 -6573
- package/dist/cjs/useInertWhenHidden.1a2a6a2b.js.map +0 -1
- package/dist/es/components/Channel/channelState.mjs +0 -195
- package/dist/es/components/Channel/channelState.mjs.map +0 -1
- package/dist/es/components/Channel/hooks/useCreateChannelStateContext.mjs +0 -86
- package/dist/es/components/Channel/hooks/useCreateChannelStateContext.mjs.map +0 -1
- package/dist/es/components/Channel/hooks/useCreateTypingContext.mjs +0 -10
- package/dist/es/components/Channel/hooks/useCreateTypingContext.mjs.map +0 -1
- package/dist/es/components/Channel/hooks/useEditMessageHandler.mjs +0 -13
- package/dist/es/components/Channel/hooks/useEditMessageHandler.mjs.map +0 -1
- package/dist/es/components/Channel/hooks/useIsMounted.mjs +0 -16
- package/dist/es/components/Channel/hooks/useIsMounted.mjs.map +0 -1
- package/dist/es/components/Channel/hooks/useMentionsHandlers.mjs +0 -18
- package/dist/es/components/Channel/hooks/useMentionsHandlers.mjs.map +0 -1
- package/dist/es/components/Channel/utils.mjs +0 -156
- package/dist/es/components/Channel/utils.mjs.map +0 -1
- package/dist/es/components/ChannelList/ChannelListUI.mjs +0 -35
- package/dist/es/components/ChannelList/ChannelListUI.mjs.map +0 -1
- package/dist/es/components/ChannelList/hooks/useChannelListShape.mjs +0 -310
- package/dist/es/components/ChannelList/hooks/useChannelListShape.mjs.map +0 -1
- package/dist/es/components/ChannelList/hooks/useConnectionRecoveredListener.mjs +0 -19
- package/dist/es/components/ChannelList/hooks/useConnectionRecoveredListener.mjs.map +0 -1
- package/dist/es/components/ChannelList/hooks/usePaginatedChannels.mjs +0 -110
- package/dist/es/components/ChannelList/hooks/usePaginatedChannels.mjs.map +0 -1
- package/dist/es/components/ChannelList/utils.mjs +0 -86
- package/dist/es/components/ChannelList/utils.mjs.map +0 -1
- package/dist/es/components/Chat/hooks/useChannelsQueryState.mjs +0 -16
- package/dist/es/components/Chat/hooks/useChannelsQueryState.mjs.map +0 -1
- package/dist/es/components/ChatView/ChatView.a11y.utility.mjs.map +0 -1
- package/dist/es/components/ChatView/ChatView.mjs +0 -224
- package/dist/es/components/ChatView/ChatView.mjs.map +0 -1
- package/dist/es/components/MessageComposer/hooks/useSubmitHandler.mjs +0 -98
- package/dist/es/components/MessageComposer/hooks/useSubmitHandler.mjs.map +0 -1
- package/dist/es/components/MessageList/hooks/useReducedMotionPreference.mjs +0 -23
- package/dist/es/components/MessageList/hooks/useReducedMotionPreference.mjs.map +0 -1
- package/dist/es/components/Search/hooks/useSearchFocusedMessage.mjs +0 -13
- package/dist/es/components/Search/hooks/useSearchFocusedMessage.mjs.map +0 -1
- package/dist/es/components/Thread/LegacyThreadContext.mjs +0 -8
- package/dist/es/components/Thread/LegacyThreadContext.mjs.map +0 -1
- package/dist/es/components/UtilityComponents/NullComponent.mjs +0 -6
- package/dist/es/components/UtilityComponents/NullComponent.mjs.map +0 -1
- package/dist/es/components/Window/Window.mjs +0 -21
- package/dist/es/components/Window/Window.mjs.map +0 -1
- package/dist/es/context/ChannelActionContext.mjs +0 -20
- package/dist/es/context/ChannelActionContext.mjs.map +0 -1
- package/dist/es/context/ChannelStateContext.mjs +0 -24
- package/dist/es/context/ChannelStateContext.mjs.map +0 -1
- package/dist/es/context/TypingContext.mjs +0 -20
- package/dist/es/context/TypingContext.mjs.map +0 -1
- package/dist/es/i18n/TranslationBuilder/TranslationBuilder.mjs +0 -86
- package/dist/es/i18n/TranslationBuilder/TranslationBuilder.mjs.map +0 -1
- package/dist/es/i18n/de.mjs +0 -782
- package/dist/es/i18n/de.mjs.map +0 -1
- package/dist/es/i18n/en.mjs +0 -779
- package/dist/es/i18n/en.mjs.map +0 -1
- package/dist/es/i18n/es.mjs +0 -821
- package/dist/es/i18n/es.mjs.map +0 -1
- package/dist/es/i18n/fr.mjs +0 -822
- package/dist/es/i18n/fr.mjs.map +0 -1
- package/dist/es/i18n/hi.mjs +0 -786
- package/dist/es/i18n/hi.mjs.map +0 -1
- package/dist/es/i18n/it.mjs +0 -821
- package/dist/es/i18n/it.mjs.map +0 -1
- package/dist/es/i18n/ja.mjs +0 -760
- package/dist/es/i18n/ja.mjs.map +0 -1
- package/dist/es/i18n/ko.mjs +0 -760
- package/dist/es/i18n/ko.mjs.map +0 -1
- package/dist/es/i18n/nl.mjs +0 -786
- package/dist/es/i18n/nl.mjs.map +0 -1
- package/dist/es/i18n/pt.mjs +0 -819
- package/dist/es/i18n/pt.mjs.map +0 -1
- package/dist/es/i18n/ru.mjs +0 -868
- package/dist/es/i18n/ru.mjs.map +0 -1
- package/dist/es/i18n/tr.mjs +0 -781
- package/dist/es/i18n/tr.mjs.map +0 -1
- package/dist/es/utils/getChannelConfig.mjs +0 -11
- package/dist/es/utils/getChannelConfig.mjs.map +0 -1
- package/dist/types/components/Channel/channelState.d.ts +0 -90
- package/dist/types/components/Channel/channelState.d.ts.map +0 -1
- package/dist/types/components/Channel/hooks/useCreateChannelStateContext.d.ts +0 -6
- package/dist/types/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +0 -1
- package/dist/types/components/Channel/hooks/useCreateTypingContext.d.ts +0 -3
- package/dist/types/components/Channel/hooks/useCreateTypingContext.d.ts.map +0 -1
- package/dist/types/components/Channel/hooks/useEditMessageHandler.d.ts +0 -5
- package/dist/types/components/Channel/hooks/useEditMessageHandler.d.ts.map +0 -1
- package/dist/types/components/Channel/hooks/useMentionsHandlers.d.ts +0 -10
- package/dist/types/components/Channel/hooks/useMentionsHandlers.d.ts.map +0 -1
- package/dist/types/components/Channel/utils.d.ts +0 -55
- package/dist/types/components/Channel/utils.d.ts.map +0 -1
- package/dist/types/components/ChannelList/ChannelListUI.d.ts +0 -18
- package/dist/types/components/ChannelList/ChannelListUI.d.ts.map +0 -1
- package/dist/types/components/ChannelList/hooks/useChannelListShape.d.ts +0 -61
- package/dist/types/components/ChannelList/hooks/useChannelListShape.d.ts.map +0 -1
- package/dist/types/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts +0 -2
- package/dist/types/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts.map +0 -1
- package/dist/types/components/ChannelList/hooks/usePaginatedChannels.d.ts +0 -29
- package/dist/types/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +0 -1
- package/dist/types/components/ChannelList/utils.d.ts +0 -46
- package/dist/types/components/ChannelList/utils.d.ts.map +0 -1
- package/dist/types/components/Chat/hooks/useChannelsQueryState.d.ts +0 -12
- package/dist/types/components/Chat/hooks/useChannelsQueryState.d.ts.map +0 -1
- package/dist/types/components/ChatView/ChatView.a11y.utility.d.ts.map +0 -1
- package/dist/types/components/ChatView/ChatView.d.ts +0 -59
- package/dist/types/components/ChatView/ChatView.d.ts.map +0 -1
- package/dist/types/components/ChatView/index.d.ts +0 -2
- package/dist/types/components/ChatView/index.d.ts.map +0 -1
- package/dist/types/components/MessageComposer/hooks/useSubmitHandler.d.ts +0 -5
- package/dist/types/components/MessageComposer/hooks/useSubmitHandler.d.ts.map +0 -1
- package/dist/types/components/Search/hooks/useSearchFocusedMessage.d.ts +0 -2
- package/dist/types/components/Search/hooks/useSearchFocusedMessage.d.ts.map +0 -1
- package/dist/types/components/Thread/LegacyThreadContext.d.ts +0 -9
- package/dist/types/components/Thread/LegacyThreadContext.d.ts.map +0 -1
- package/dist/types/components/Window/Window.d.ts +0 -13
- package/dist/types/components/Window/Window.d.ts.map +0 -1
- package/dist/types/components/Window/index.d.ts +0 -2
- package/dist/types/components/Window/index.d.ts.map +0 -1
- package/dist/types/context/ChannelActionContext.d.ts +0 -46
- package/dist/types/context/ChannelActionContext.d.ts.map +0 -1
- package/dist/types/context/ChannelStateContext.d.ts +0 -51
- package/dist/types/context/ChannelStateContext.d.ts.map +0 -1
- package/dist/types/context/TypingContext.d.ts +0 -12
- package/dist/types/context/TypingContext.d.ts.map +0 -1
- package/dist/types/i18n/TranslationBuilder/TranslationBuilder.d.ts +0 -36
- package/dist/types/i18n/TranslationBuilder/TranslationBuilder.d.ts.map +0 -1
- package/dist/types/i18n/translations.d.ts +0 -14
- package/dist/types/i18n/translations.d.ts.map +0 -1
- package/dist/types/utils/getChannelConfig.d.ts +0 -8
- package/dist/types/utils/getChannelConfig.d.ts.map +0 -1
- /package/dist/types/{components/ChatView → plugins/SlotLayout}/ChatView.a11y.utility.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualizedMessageList.mjs","names":[],"sources":["../../../../src/components/MessageList/VirtualizedMessageList.tsx"],"sourcesContent":["import type { RefObject } from 'react';\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { FloatingDateSeparator } from './FloatingDateSeparator';\nimport type {\n ComputeItemKey,\n ScrollSeekConfiguration,\n ScrollSeekPlaceholderProps,\n VirtuosoHandle,\n VirtuosoProps,\n} from 'react-virtuoso';\nimport { Virtuoso } from 'react-virtuoso';\n\nimport { GiphyPreviewMessage as DefaultGiphyPreviewMessage } from './GiphyPreviewMessage';\nimport { useLastReadData } from './hooks';\nimport {\n useGiphyPreview,\n useMessageSetKey,\n useNewMessageNotification,\n usePrependedMessagesCount,\n useScrollToBottomOnNewMessage,\n useShouldForceScrollToBottom,\n useUnreadMessagesNotificationVirtualized,\n} from './hooks/VirtualizedMessageList';\nimport { useMarkRead } from './hooks/useMarkRead';\nimport { NewMessageNotification as DefaultNewMessageNotification } from './NewMessageNotification';\nimport { MessageListMainPanel as DefaultMessageListMainPanel } from './MessageListMainPanel';\nimport type { GroupStyle, ProcessMessagesParams, RenderedMessage } from './utils';\nimport { getGroupStyles, getLastReceived, processMessages } from './utils';\nimport type { MessageProps, MessageUIComponentProps } from '../Message';\nimport { MessageUI } from '../Message';\nimport { UnreadMessagesNotification as DefaultUnreadMessagesNotification } from './UnreadMessagesNotification';\nimport {\n calculateFirstItemIndex,\n calculateItemIndex,\n EmptyPlaceholder,\n Header,\n Item,\n makeItemsRenderedHandler,\n messageRenderer,\n} from './VirtualizedMessageListComponents';\n\nimport {\n ScrollToLatestMessageButton as DefaultScrollToLatestMessageButton,\n UnreadMessagesSeparator as DefaultUnreadMessagesSeparator,\n} from '../MessageList';\nimport { DateSeparator as DefaultDateSeparator } from '../DateSeparator';\nimport { EventComponent as DefaultMessageSystem } from '../EventComponent';\nimport {\n NotificationList as DefaultNotificationList,\n useNotificationTarget,\n} from '../Notifications';\n\nimport { DialogManagerProvider } from '../../context';\nimport type { ChannelActionContextValue } from '../../context/ChannelActionContext';\nimport { useChannelActionContext } from '../../context/ChannelActionContext';\nimport type {\n ChannelNotifications,\n ChannelStateContextValue,\n} from '../../context/ChannelStateContext';\nimport { useChannelStateContext } from '../../context/ChannelStateContext';\nimport type { ChatContextValue } from '../../context/ChatContext';\nimport { useChatContext } from '../../context/ChatContext';\nimport type { ComponentContextValue } from '../../context/ComponentContext';\nimport { useComponentContext } from '../../context/ComponentContext';\nimport { MessageTranslationViewProvider } from '../../context/MessageTranslationViewContext';\nimport { VirtualizedMessageListContextProvider } from '../../context/VirtualizedMessageListContext';\n\nimport type {\n Channel,\n LocalMessage,\n ChannelState as StreamChannelState,\n UserResponse,\n} from 'stream-chat';\nimport type { UnknownType } from '../../types/types';\nimport { DEFAULT_NEXT_CHANNEL_PAGE_SIZE } from '../../constants/limits';\nimport { useStableId } from '../UtilityComponents/useStableId';\nimport { useLastDeliveredData } from './hooks/useLastDeliveredData';\nimport { useLastOwnMessage } from './hooks/useLastOwnMessage';\nimport { useReducedMotionPreference } from './hooks/useReducedMotionPreference';\nimport { useIncomingMessageAnnouncements } from '../Accessibility';\n\ntype PropsDrilledToMessage =\n | 'additionalMessageComposerProps'\n | 'formatDate'\n | 'messageActions'\n | 'openThread'\n | 'reactionDetailsSort'\n | 'renderText'\n | 'showAvatar'\n | 'sortReactions';\n\ntype VirtualizedMessageListPropsForContext =\n | PropsDrilledToMessage\n | 'closeReactionSelectorOnClick'\n | 'customMessageRenderer'\n | 'head'\n | 'loadingMore'\n | 'Message'\n | 'returnAllReadData'\n | 'shouldGroupByUser'\n | 'threadList';\n\n/**\n * Context object provided to some Virtuoso props that are functions (components rendered by Virtuoso and other functions)\n */\nexport type VirtuosoContext = Required<\n Pick<\n ComponentContextValue,\n 'DateSeparator' | 'MessageSystem' | 'UnreadMessagesSeparator'\n >\n> &\n Pick<VirtualizedMessageListProps, VirtualizedMessageListPropsForContext> &\n Pick<ChatContextValue, 'customClasses'> & {\n /** Latest received message id in the current channel */\n lastReceivedMessageId: string | null | undefined;\n /** Object mapping between the message ID and a string representing the position in the group of a sequence of messages posted by the same user. */\n messageGroupStyles: Record<string, GroupStyle>;\n /** Number of messages prepended before the first page of messages. This is needed to calculate the virtual position in the virtual list. */\n numItemsPrepended: number;\n /** Mapping of message ID of own messages to the array of users, who were delivered the given message */\n ownMessagesDeliveredToOthers: Record<string, UserResponse[]>;\n /** Mapping of message ID of own messages to the array of users, who read the given message */\n ownMessagesReadByOthers: Record<string, UserResponse[]>;\n /** The original message list enriched with date separators, omitted deleted messages or giphy previews. */\n processedMessages: RenderedMessage[];\n /** Instance of VirtuosoHandle object providing the API to navigate in the virtualized list by various scroll actions. */\n virtuosoRef: RefObject<VirtuosoHandle | null>;\n /** Latest own message in currently displayed message set. */\n lastOwnMessage?: LocalMessage;\n /** Message id which was marked as unread. ALl the messages following this message are considered unrea. */\n firstUnreadMessageId?: string;\n lastReadDate?: Date;\n /**\n * The ID of the last message considered read by the current user in the current channel.\n * All the messages following this message are considered unread.\n */\n lastReadMessageId?: string;\n /** The number of unread messages in the current channel. */\n unreadMessageCount?: number;\n };\n\ntype VirtualizedMessageListWithContextProps = VirtualizedMessageListProps & {\n channel: Channel;\n hasMore: boolean;\n hasMoreNewer: boolean;\n jumpToLatestMessage: () => Promise<void>;\n loadingMore: boolean;\n loadingMoreNewer: boolean;\n notifications: ChannelNotifications;\n read?: StreamChannelState['read'];\n thread?: ChannelStateContextValue['thread'];\n};\n\nfunction captureResizeObserverExceededError(e: ErrorEvent) {\n if (\n e.message === 'ResizeObserver loop completed with undelivered notifications.' ||\n e.message === 'ResizeObserver loop limit exceeded'\n ) {\n e.stopImmediatePropagation();\n }\n}\n\nfunction useCaptureResizeObserverExceededError() {\n useEffect(() => {\n window.addEventListener('error', captureResizeObserverExceededError);\n return () => {\n window.removeEventListener('error', captureResizeObserverExceededError);\n };\n }, []);\n}\n\nfunction fractionalItemSize(element: HTMLElement) {\n return element.getBoundingClientRect().height;\n}\n\nfunction findMessageIndex(messages: RenderedMessage[], id: string) {\n return messages.findIndex((message) => message.id === id);\n}\n\nfunction calculateInitialTopMostItemIndex(\n messages: RenderedMessage[],\n highlightedMessageId: string | undefined,\n) {\n if (highlightedMessageId) {\n const index = findMessageIndex(messages, highlightedMessageId);\n if (index !== -1) {\n return { align: 'center', index } as const;\n }\n }\n return messages.length - 1;\n}\n\nconst VirtualizedMessageListWithContext = (\n props: VirtualizedMessageListWithContextProps,\n) => {\n const {\n additionalMessageComposerProps,\n additionalVirtuosoProps = {},\n channel,\n channelUnreadUiState,\n closeReactionSelectorOnClick,\n customMessageRenderer,\n defaultItemHeight,\n disableDateSeparator = true,\n formatDate,\n groupStyles,\n hasMoreNewer,\n head,\n hideDeletedMessages = false,\n hideNewMessageSeparator = false,\n highlightedMessageId,\n jumpToLatestMessage,\n loadingMore,\n loadMore,\n loadMoreNewer,\n maxTimeBetweenGroupedMessages,\n Message: MessageUIComponentFromProps,\n messageActions,\n messageLimit = DEFAULT_NEXT_CHANNEL_PAGE_SIZE,\n messages,\n openThread,\n // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component\n overscan = 0,\n reactionDetailsSort,\n renderText,\n returnAllReadData = false,\n reviewProcessedMessage,\n scrollSeekPlaceHolder,\n scrollToLatestMessageOnFocus = false,\n separateGiphyPreview = false,\n shouldGroupByUser = false,\n showAvatar,\n showUnreadNotificationAlways,\n sortReactions,\n stickToBottomScrollBehavior = 'smooth',\n suppressAutoscroll,\n thread,\n threadList,\n } = props;\n\n const { components: virtuosoComponentsFromProps, ...overridingVirtuosoProps } =\n additionalVirtuosoProps;\n\n // Stops errors generated from react-virtuoso to bubble up\n // to Sentry or other tracking tools.\n useCaptureResizeObserverExceededError();\n\n const {\n DateSeparator = DefaultDateSeparator,\n GiphyPreviewMessage = DefaultGiphyPreviewMessage,\n MessageListMainPanel = DefaultMessageListMainPanel,\n MessageSystem = DefaultMessageSystem,\n NewMessageNotification = DefaultNewMessageNotification,\n NotificationList = DefaultNotificationList,\n ScrollToLatestMessageButton = DefaultScrollToLatestMessageButton,\n TypingIndicator,\n UnreadMessagesNotification = DefaultUnreadMessagesNotification,\n UnreadMessagesSeparator = DefaultUnreadMessagesSeparator,\n VirtualMessage: MessageUIComponentFromContext = MessageUI,\n } = useComponentContext('VirtualizedMessageList');\n const MessageUIComponent = MessageUIComponentFromProps || MessageUIComponentFromContext;\n\n const { client, customClasses } = useChatContext('VirtualizedMessageList');\n const prefersReducedMotion = useReducedMotionPreference();\n const effectiveStickToBottomScrollBehavior = prefersReducedMotion\n ? 'auto'\n : stickToBottomScrollBehavior;\n const notificationTarget = useNotificationTarget();\n\n const virtuoso = useRef<VirtuosoHandle>(null);\n\n const lastRead = useMemo(() => channel.lastRead?.(), [channel]);\n\n const { show: showUnreadMessagesNotification, toggleShowUnreadMessagesNotification } =\n useUnreadMessagesNotificationVirtualized({\n lastRead: channelUnreadUiState?.last_read,\n showAlways: !!showUnreadNotificationAlways,\n unreadCount: channelUnreadUiState?.unread_messages ?? 0,\n });\n\n const { giphyPreviewMessage, setGiphyPreviewMessage } =\n useGiphyPreview(separateGiphyPreview);\n\n const processedMessages = useMemo(() => {\n if (typeof messages === 'undefined') {\n return [];\n }\n\n if (\n disableDateSeparator &&\n !hideDeletedMessages &&\n hideNewMessageSeparator &&\n !separateGiphyPreview\n ) {\n return messages;\n }\n\n return processMessages({\n enableDateSeparator: !disableDateSeparator,\n hideDeletedMessages,\n hideNewMessageSeparator,\n lastRead,\n messages,\n reviewProcessedMessage,\n setGiphyPreviewMessage,\n userId: client.userID || '',\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n disableDateSeparator,\n hideDeletedMessages,\n hideNewMessageSeparator,\n lastRead,\n messages,\n messages?.length,\n client.userID,\n ]);\n\n /**\n * This indirection via a ref is needed because Virtuoso’s itemsRendered is set at render time,\n * while FloatingDateSeparator lives in a child component that may run its hooks in a different order.\n * Using a ref lets the parent provide the callback to Virtuoso while the child keeps ownership\n * of the actual handler implementation.\n */\n const floatingDateItemsRenderedRef = useRef<\n ((rendered: RenderedMessage[]) => void) | null\n >(null);\n\n const lastOwnMessage = useLastOwnMessage({ messages, ownUserId: client.user?.id });\n\n // get the mapping of own messages to array of users who read them\n const ownMessagesReadByOthers = useLastReadData({\n channel,\n lastOwnMessage,\n messages: messages || [],\n returnAllReadData,\n });\n\n const ownMessagesDeliveredToOthers = useLastDeliveredData({\n channel,\n lastOwnMessage,\n messages: messages || [],\n returnAllReadData,\n });\n\n const lastReceivedMessageId = useMemo(\n () => getLastReceived(processedMessages),\n [processedMessages],\n );\n\n const groupStylesFn = groupStyles || getGroupStyles;\n const messageGroupStyles = useMemo(\n () =>\n processedMessages.reduce<Record<string, GroupStyle>>((acc, message, i) => {\n const style = groupStylesFn(\n message,\n processedMessages[i - 1],\n processedMessages[i + 1],\n !shouldGroupByUser,\n maxTimeBetweenGroupedMessages,\n );\n if (style && message.id) acc[message.id] = style;\n return acc;\n }, {}),\n // processedMessages were incorrectly rebuilt with a new object identity at some point, hence the .length usage\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n maxTimeBetweenGroupedMessages,\n processedMessages.length,\n shouldGroupByUser,\n groupStylesFn,\n ],\n );\n\n const {\n atBottom,\n isMessageListScrolledToBottom,\n newMessagesNotification,\n setIsMessageListScrolledToBottom,\n setNewMessagesNotification,\n } = useNewMessageNotification(processedMessages, client.userID, hasMoreNewer);\n\n useMarkRead({\n isMessageListScrolledToBottom,\n messageListIsThread: !!threadList,\n wasMarkedUnread: !!channelUnreadUiState?.first_unread_message_id,\n });\n\n const scrollToBottom = useCallback(async () => {\n if (hasMoreNewer) {\n await jumpToLatestMessage();\n return;\n }\n\n if (virtuoso.current) {\n virtuoso.current.scrollToIndex(processedMessages.length - 1);\n }\n\n setNewMessagesNotification(false);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n virtuoso,\n processedMessages,\n setNewMessagesNotification,\n // processedMessages were incorrectly rebuilt with a new object identity at some point, hence the .length usage\n processedMessages.length,\n hasMoreNewer,\n jumpToLatestMessage,\n ]);\n\n useScrollToBottomOnNewMessage({\n messages,\n scrollToBottom,\n scrollToLatestMessageOnFocus,\n });\n\n const numItemsPrepended = usePrependedMessagesCount(\n processedMessages,\n !disableDateSeparator,\n );\n\n const { messageSetKey } = useMessageSetKey({ messages });\n\n const shouldForceScrollToBottom = useShouldForceScrollToBottom(\n processedMessages,\n client.userID,\n );\n\n useIncomingMessageAnnouncements({\n activeThreadId: thread?.id,\n channel,\n ownUserId: client.userID,\n threadList,\n });\n\n const handleItemsRendered = useMemo(\n () =>\n makeItemsRenderedHandler(\n [\n toggleShowUnreadMessagesNotification,\n (rendered) => floatingDateItemsRenderedRef.current?.(rendered),\n ],\n processedMessages,\n ),\n [processedMessages, toggleShowUnreadMessagesNotification],\n );\n const followOutput = (isAtBottom: boolean) => {\n if (hasMoreNewer || suppressAutoscroll) {\n return false;\n }\n\n if (shouldForceScrollToBottom()) {\n return isAtBottom ? effectiveStickToBottomScrollBehavior : 'auto';\n }\n // a message from another user has been received - don't scroll to bottom unless already there\n return isAtBottom ? effectiveStickToBottomScrollBehavior : false;\n };\n\n const computeItemKey = useCallback<ComputeItemKey<UnknownType, VirtuosoContext>>(\n (index, _, { numItemsPrepended, processedMessages }) =>\n processedMessages[calculateItemIndex(index, numItemsPrepended)].id,\n [],\n );\n\n const atBottomStateChange = (isAtBottom: boolean) => {\n atBottom.current = isAtBottom;\n setIsMessageListScrolledToBottom(isAtBottom);\n\n if (isAtBottom) {\n loadMoreNewer?.(messageLimit);\n setNewMessagesNotification?.(false);\n }\n };\n const atTopStateChange = (isAtTop: boolean) => {\n if (isAtTop) {\n loadMore?.(messageLimit);\n }\n };\n\n useEffect(() => {\n let scrollTimeout: ReturnType<typeof setTimeout>;\n if (highlightedMessageId) {\n const index = findMessageIndex(processedMessages, highlightedMessageId);\n if (index !== -1) {\n scrollTimeout = setTimeout(() => {\n virtuoso.current?.scrollToIndex({ align: 'center', index });\n }, 0);\n }\n }\n return () => {\n clearTimeout(scrollTimeout);\n };\n }, [highlightedMessageId, processedMessages]);\n\n const id = useStableId();\n\n if (!processedMessages) return null;\n\n const dialogManagerId = threadList\n ? `virtualized-message-list-dialog-manager-thread-${id}`\n : `virtualized-message-list-dialog-manager-${id}`;\n\n return (\n <VirtualizedMessageListContextProvider value={{ scrollToBottom }}>\n <MessageTranslationViewProvider>\n <MessageListMainPanel>\n <DialogManagerProvider id={dialogManagerId}>\n {!threadList && showUnreadMessagesNotification && (\n <UnreadMessagesNotification\n unreadCount={channelUnreadUiState?.unread_messages}\n />\n )}\n <div\n className={\n customClasses?.virtualizedMessageList || 'str-chat__virtual-list'\n }\n >\n <FloatingDateSeparator\n disableDateSeparator={disableDateSeparator}\n itemsRenderedRef={floatingDateItemsRenderedRef}\n processedMessages={processedMessages}\n />\n <Virtuoso<UnknownType, VirtuosoContext>\n atBottomStateChange={atBottomStateChange}\n atBottomThreshold={100}\n atTopStateChange={atTopStateChange}\n atTopThreshold={100}\n className='str-chat__message-list-scroll'\n components={{\n EmptyPlaceholder,\n Header,\n Item,\n ...(TypingIndicator && {\n Footer: () =>\n isMessageListScrolledToBottom ? (\n <TypingIndicator\n isMessageListScrolledToBottom={isMessageListScrolledToBottom}\n scrollToBottom={scrollToBottom}\n threadList={threadList}\n />\n ) : null,\n }),\n ...virtuosoComponentsFromProps,\n }}\n computeItemKey={computeItemKey}\n context={{\n additionalMessageComposerProps,\n closeReactionSelectorOnClick,\n customClasses,\n customMessageRenderer,\n DateSeparator,\n firstUnreadMessageId: channelUnreadUiState?.first_unread_message_id,\n formatDate,\n head,\n lastOwnMessage,\n lastReadDate: channelUnreadUiState?.last_read,\n lastReadMessageId: channelUnreadUiState?.last_read_message_id,\n lastReceivedMessageId,\n loadingMore,\n Message: MessageUIComponent,\n messageActions,\n messageGroupStyles,\n MessageSystem,\n numItemsPrepended,\n openThread,\n ownMessagesDeliveredToOthers,\n ownMessagesReadByOthers,\n processedMessages,\n reactionDetailsSort,\n renderText,\n returnAllReadData,\n shouldGroupByUser,\n showAvatar,\n sortReactions,\n threadList,\n unreadMessageCount: channelUnreadUiState?.unread_messages,\n UnreadMessagesSeparator,\n virtuosoRef: virtuoso,\n }}\n firstItemIndex={calculateFirstItemIndex(numItemsPrepended)}\n followOutput={followOutput}\n increaseViewportBy={{ bottom: 200, top: 0 }}\n initialTopMostItemIndex={calculateInitialTopMostItemIndex(\n processedMessages,\n highlightedMessageId,\n )}\n itemContent={messageRenderer}\n itemSize={fractionalItemSize}\n itemsRendered={handleItemsRendered}\n key={messageSetKey}\n overscan={overscan}\n ref={virtuoso}\n style={{ overflowX: 'hidden' }}\n totalCount={processedMessages.length}\n {...overridingVirtuosoProps}\n {...(scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {})}\n {...(defaultItemHeight ? { defaultItemHeight } : {})}\n />\n <NewMessageNotification\n newMessageCount={channelUnreadUiState?.unread_messages}\n showNotification={newMessagesNotification || hasMoreNewer}\n />\n <ScrollToLatestMessageButton\n isMessageListScrolledToBottom={isMessageListScrolledToBottom}\n isNotAtLatestMessageSet={hasMoreNewer}\n onClick={scrollToBottom}\n threadList={threadList}\n />\n </div>\n </DialogManagerProvider>\n <NotificationList panel={notificationTarget} />\n </MessageListMainPanel>\n {giphyPreviewMessage && <GiphyPreviewMessage message={giphyPreviewMessage} />}\n </MessageTranslationViewProvider>\n </VirtualizedMessageListContextProvider>\n );\n};\n\nexport type VirtualizedMessageListProps = Partial<\n Pick<MessageProps, PropsDrilledToMessage>\n> & {\n /** Additional props to be passed the underlying [`react-virtuoso` virtualized list dependency](https://virtuoso.dev/virtuoso-api-reference/) */\n additionalVirtuosoProps?: VirtuosoProps<UnknownType, VirtuosoContext>;\n channelUnreadUiState?: ChannelStateContextValue['channelUnreadUiState'];\n /** If true, picking a reaction from the `ReactionSelector` component will close the selector */\n closeReactionSelectorOnClick?: boolean;\n /** Custom render function, if passed, certain UI props are ignored */\n customMessageRenderer?: (\n messageList: RenderedMessage[],\n index: number,\n ) => React.ReactElement;\n /** @deprecated Use additionalVirtuosoProps.defaultItemHeight instead. Will be removed with next major release - `v11.0.0`.\n * If set, the default item height is used for the calculation of the total list height. Use if you expect messages with a lot of height variance\n * */\n defaultItemHeight?: number;\n /** Disables the injection of date separator components in MessageList, defaults to `true` */\n disableDateSeparator?: boolean;\n /** Callback function to set group styles for each message */\n groupStyles?: (\n message: RenderedMessage,\n previousMessage: RenderedMessage,\n nextMessage: RenderedMessage,\n noGroupByUser: boolean,\n maxTimeBetweenGroupedMessages?: number,\n ) => GroupStyle;\n /** Whether or not the list has more items to load */\n hasMore?: boolean;\n /** Whether or not the list has newer items to load */\n hasMoreNewer?: boolean;\n /**\n * @deprecated Use additionalVirtuosoProps.components.Header to override default component rendered above the list ove messages.\n * Element to be rendered at the top of the thread message list. By default, these are the Message and ThreadStart components\n */\n head?: React.ReactElement;\n /** Hides the `MessageDeleted` components from the list, defaults to `false` */\n hideDeletedMessages?: boolean;\n /** Hides the `DateSeparator` component when new messages are received in a channel that's watched but not active, defaults to false */\n hideNewMessageSeparator?: boolean;\n /** The id of the message to highlight and center */\n highlightedMessageId?: string;\n /** Whether or not the list is currently loading more items */\n loadingMore?: boolean;\n /** Whether or not the list is currently loading newer items */\n loadingMoreNewer?: boolean;\n /** Function called when more messages are to be loaded, defaults to function stored in [ChannelActionContext](https://getstream.io/chat/docs/sdk/react/contexts/channel_action_context/) */\n loadMore?: ChannelActionContextValue['loadMore'] | (() => Promise<void>);\n /** Function called when new messages are to be loaded, defaults to function stored in [ChannelActionContext](https://getstream.io/chat/docs/sdk/react/contexts/channel_action_context/) */\n loadMoreNewer?: ChannelActionContextValue['loadMore'] | (() => Promise<void>);\n /** Maximum time in milliseconds that should occur between messages to still consider them grouped together */\n maxTimeBetweenGroupedMessages?: number;\n /** Custom UI component to display a message, defaults to and accepts same props as [MessageUI](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Message/MessageUI.tsx) */\n Message?: React.ComponentType<MessageUIComponentProps>;\n /** The limit to use when paginating messages */\n messageLimit?: number;\n /** Optional prop to override the messages available from [ChannelStateContext](https://getstream.io/chat/docs/sdk/react/contexts/channel_state_context/) */\n messages?: LocalMessage[];\n /**\n * @deprecated Use additionalVirtuosoProps.overscan instead. Will be removed with next major release - `v11.0.0`.\n * The amount of extra content the list should render in addition to what's necessary to fill in the viewport\n */\n overscan?: number;\n /** Keep track of read receipts for each message sent by the user. When disabled, only the last own message delivery / read status is rendered. */\n returnAllReadData?: boolean;\n /**\n * Allows to review changes introduced to messages array on per message basis (e.g. date separator injected before a message).\n * The array returned from the function is appended to the array of messages that are later rendered into React elements in the `VirtualizedMessageList`.\n */\n reviewProcessedMessage?: ProcessMessagesParams['reviewProcessedMessage'];\n /**\n * @deprecated Pass additionalVirtuosoProps.scrollSeekConfiguration and specify the placeholder in additionalVirtuosoProps.components.ScrollSeekPlaceholder instead. Will be removed with next major release - `v11.0.0`.\n * Performance improvement by showing placeholders if user scrolls fast through list.\n * it can be used like this:\n * ```\n * {\n * enter: (velocity) => Math.abs(velocity) > 120,\n * exit: (velocity) => Math.abs(velocity) < 40,\n * change: () => null,\n * placeholder: ({index, height})=> <div style={{height: height + \"px\"}}>{index}</div>,\n * }\n * ```\n */\n scrollSeekPlaceHolder?: ScrollSeekConfiguration & {\n placeholder: React.ComponentType<ScrollSeekPlaceholderProps>;\n };\n /** When `true`, the list will scroll to the latest message when the window regains focus */\n scrollToLatestMessageOnFocus?: boolean;\n /** If true, the Giphy preview will render as a separate component above the `MessageComposer`, rather than inline with the other messages in the list */\n separateGiphyPreview?: boolean;\n /** If true, group messages belonging to the same user, otherwise show each message individually */\n shouldGroupByUser?: boolean;\n /**\n * The floating notification informing about unread messages will be shown when the\n * UnreadMessagesSeparator is not visible. The default is false, that means the notification\n * is shown only when viewing unread messages.\n */\n showUnreadNotificationAlways?: boolean;\n /** The scrollTo behavior when new messages appear. Use `\"smooth\"` for regular chat channels, and `\"auto\"` (which results in instant scroll to bottom) if you expect high throughput. Reduced-motion users are always treated as `\"auto\"`. */\n stickToBottomScrollBehavior?: 'smooth' | 'auto';\n /** stops the list from autoscrolling when new messages are loaded */\n suppressAutoscroll?: boolean;\n /** If true, indicates the message list is a thread */\n threadList?: boolean;\n};\n\n/**\n * The VirtualizedMessageList component renders a list of messages in a virtualized list.\n * It is a consumer of the React contexts set in [Channel](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Channel/Channel.tsx).\n */\nexport function VirtualizedMessageList(props: VirtualizedMessageListProps) {\n const { jumpToLatestMessage, loadMore, loadMoreNewer } = useChannelActionContext(\n 'VirtualizedMessageList',\n );\n const {\n channel,\n channelUnreadUiState,\n hasMore,\n hasMoreNewer,\n highlightedMessageId,\n loadingMore,\n loadingMoreNewer,\n messages: contextMessages,\n notifications,\n read,\n suppressAutoscroll,\n thread,\n } = useChannelStateContext('VirtualizedMessageList');\n\n const messages = props.messages || contextMessages;\n\n return (\n <VirtualizedMessageListWithContext\n channel={channel}\n channelUnreadUiState={props.channelUnreadUiState ?? channelUnreadUiState}\n hasMore={!!hasMore}\n hasMoreNewer={!!hasMoreNewer}\n highlightedMessageId={highlightedMessageId}\n jumpToLatestMessage={jumpToLatestMessage}\n loadingMore={!!loadingMore}\n loadingMoreNewer={!!loadingMoreNewer}\n loadMore={loadMore}\n loadMoreNewer={loadMoreNewer}\n messages={messages}\n notifications={notifications}\n read={read}\n suppressAutoscroll={suppressAutoscroll}\n thread={thread}\n {...props}\n />\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VirtualizedMessageList.mjs","names":[],"sources":["../../../../src/components/MessageList/VirtualizedMessageList.tsx"],"sourcesContent":["import type { RefObject } from 'react';\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { FloatingDateSeparator } from './FloatingDateSeparator';\nimport type {\n ComputeItemKey,\n ScrollSeekConfiguration,\n ScrollSeekPlaceholderProps,\n VirtuosoHandle,\n VirtuosoProps,\n} from 'react-virtuoso';\nimport { Virtuoso } from 'react-virtuoso';\n\nimport { GiphyPreviewMessage as DefaultGiphyPreviewMessage } from './GiphyPreviewMessage';\nimport { useLastReadData } from './hooks';\nimport {\n useGiphyPreview,\n useMessageSetKey,\n useNewMessageNotification,\n usePrependedMessagesCount,\n useScrollToBottomOnNewMessage,\n useShouldForceScrollToBottom,\n useUnreadMessagesNotificationVirtualized,\n} from './hooks/VirtualizedMessageList';\nimport { useMarkRead } from './hooks/useMarkRead';\n\nimport {\n NotificationList as DefaultNotificationList,\n useNotificationTarget,\n} from '../Notifications';\nimport { useIncomingMessageAnnouncements } from '../Accessibility';\nimport { NewMessageNotification as DefaultNewMessageNotification } from './NewMessageNotification';\nimport { MessageListMainPanel as DefaultMessageListMainPanel } from './MessageListMainPanel';\nimport type { GroupStyle, ProcessMessagesParams, RenderedMessage } from './utils';\nimport { getGroupStyles, getLastReceived, processMessages } from './utils';\nimport type { MessageProps } from '../Message';\nimport { UnreadMessagesNotification as DefaultUnreadMessagesNotification } from './UnreadMessagesNotification';\nimport {\n calculateFirstItemIndex,\n calculateItemIndex,\n EmptyPlaceholder,\n Header,\n Item,\n makeItemsRenderedHandler,\n messageRenderer,\n} from './VirtualizedMessageListComponents';\n\nimport {\n UnreadMessagesSeparator as DefaultUnreadMessagesSeparator,\n ScrollToLatestMessageButton,\n} from '../MessageList';\nimport { DateSeparator as DefaultDateSeparator } from '../DateSeparator';\nimport { EventComponent as DefaultMessageSystem } from '../EventComponent';\n\nimport { DialogManagerProvider, useChannel, WithComponents } from '../../context';\nimport type { ChatContextValue } from '../../context/ChatContext';\nimport { useChatContext } from '../../context/ChatContext';\nimport type { ComponentContextValue } from '../../context/ComponentContext';\nimport { useComponentContext } from '../../context/ComponentContext';\nimport { MessageTranslationViewProvider } from '../../context/MessageTranslationViewContext';\nimport { VirtualizedMessageListContextProvider } from '../../context/VirtualizedMessageListContext';\nimport { getMessageSourceKey } from './messageSourceKey';\nimport { useStateStore } from '../../store';\nimport { useThreadContext } from '../Threads';\nimport { useThreadHead } from './hooks/useThreadHead';\nimport { useMessagePaginator } from '../../hooks';\n\nimport type {\n Channel,\n LocalMessage,\n MessageFocusSignalState,\n MessagePaginatorState,\n ChannelState as StreamChannelState,\n TimestampNS,\n UnreadSnapshotState,\n UserResponse,\n} from 'stream-chat';\nimport type { UnknownType } from '../../types/types';\nimport { useCanPaginateReplies } from './hooks/useCanPaginateReplies';\nimport { useStableId } from '../UtilityComponents/useStableId';\nimport { useLastDeliveredData } from './hooks/useLastDeliveredData';\nimport { useLastOwnMessage } from './hooks/useLastOwnMessage';\n\ntype PropsDrilledToMessage =\n | 'additionalMessageComposerProps'\n | 'formatDate'\n | 'reactionDetailsSort'\n | 'renderText'\n | 'showAvatar'\n | 'sortReactions';\n\ntype VirtualizedMessageListPropsForContext =\n | PropsDrilledToMessage\n | 'closeReactionSelectorOnClick'\n | 'customMessageRenderer'\n // | 'loadingMore'\n | 'returnAllReadData'\n | 'shouldGroupByUser';\n\n/**\n * Context object provided to some Virtuoso props that are functions (components rendered by Virtuoso and other functions)\n */\nexport type VirtuosoContext = Required<\n Pick<\n ComponentContextValue,\n 'DateSeparator' | 'MessageSystem' | 'UnreadMessagesSeparator'\n >\n> &\n Pick<VirtualizedMessageListProps, VirtualizedMessageListPropsForContext> &\n Pick<ChatContextValue, 'customClasses'> & {\n channel: Channel;\n /** The thread parent message rendered above the replies, or null outside a thread. */\n head: React.ReactElement | null;\n /** Latest received message id in the current channel */\n lastReceivedMessageId: string | null | undefined;\n loadingMore: boolean;\n /** Object mapping between the message ID and a string representing the position in the group of a sequence of messages posted by the same user. */\n messageGroupStyles: Record<string, GroupStyle>;\n /** Number of messages prepended before the first page of messages. This is needed to calculate the virtual position in the virtual list. */\n numItemsPrepended: number;\n /** Mapping of message ID of own messages to the array of users, who were delivered the given message */\n ownMessagesDeliveredToOthers: Record<string, UserResponse[]>;\n /** Mapping of message ID of own messages to the array of users, who read the given message */\n ownMessagesReadByOthers: Record<string, UserResponse[]>;\n /** The original message list enriched with date separators, omitted deleted messages or giphy previews. */\n processedMessages: RenderedMessage[];\n /** Instance of VirtuosoHandle object providing the API to navigate in the virtualized list by various scroll actions. */\n virtuosoRef: RefObject<VirtuosoHandle | null>;\n /** Latest own message in currently displayed message set. */\n lastOwnMessage?: LocalMessage;\n /** Message id which was marked as unread. ALl the messages following this message are considered unrea. */\n firstUnreadMessageId: string | null;\n /** Unix nanoseconds, as `messagePaginator.unreadStateSnapshot.lastReadAt` carries it. */\n lastReadDate: TimestampNS | null;\n /**\n * The ID of the last message considered read by the current user in the current channel.\n * All the messages following this message are considered unread.\n */\n lastReadMessageId: string | null;\n /** The number of unread messages in the current channel. */\n unreadMessageCount: number;\n /** Message id currently targeted by paginator focus signal. */\n focusedMessageId?: string | null;\n };\n\ntype VirtualizedMessageListWithContextProps = VirtualizedMessageListProps & {\n channel: Channel;\n // hasMore: boolean;\n // hasMoreNewer: boolean;\n // jumpToLatestMessage: () => Promise<void>;\n // loadingMore: boolean;\n // loadingMoreNewer: boolean;\n read?: StreamChannelState['read'];\n};\n\nconst channelReadSelector = (nextValue: { read: StreamChannelState['read'] }) => ({\n read: nextValue.read,\n});\n\nfunction captureResizeObserverExceededError(e: ErrorEvent) {\n if (\n e.message === 'ResizeObserver loop completed with undelivered notifications.' ||\n e.message === 'ResizeObserver loop limit exceeded'\n ) {\n e.stopImmediatePropagation();\n }\n}\n\nfunction useCaptureResizeObserverExceededError() {\n useEffect(() => {\n window.addEventListener('error', captureResizeObserverExceededError);\n return () => {\n window.removeEventListener('error', captureResizeObserverExceededError);\n };\n }, []);\n}\n\nfunction fractionalItemSize(element: HTMLElement) {\n return element.getBoundingClientRect().height;\n}\n\nfunction findMessageIndex(messages: RenderedMessage[], id: string) {\n return messages.findIndex((message) => message.id === id);\n}\n\nfunction calculateInitialTopMostItemIndex(\n messages: RenderedMessage[],\n focusedMessageId: string | undefined,\n) {\n if (focusedMessageId) {\n const index = findMessageIndex(messages, focusedMessageId);\n if (index !== -1) {\n return { align: 'center', index } as const;\n }\n }\n return messages.length - 1;\n}\n\nconst unreadStateSnapshotSelector = (state: UnreadSnapshotState) => state;\nconst messageFocusSignalSelector = (state: MessageFocusSignalState) => ({\n messageFocusSignal: state.signal,\n});\n\nconst messagePaginatorStateSelector = (state: MessagePaginatorState) => ({\n hasMoreNewer: state.hasMoreHead,\n isLoading: state.isLoading,\n messages: state.items ?? [],\n});\n\nconst VirtualizedMessageListWithContext = (\n props: VirtualizedMessageListWithContextProps,\n) => {\n const {\n additionalMessageComposerProps,\n additionalVirtuosoProps = {},\n channel,\n // channelUnreadUiState,\n closeReactionSelectorOnClick,\n customMessageRenderer,\n defaultItemHeight,\n formatDate,\n groupStyles,\n hideDeletedMessages = false,\n // hasMoreNewer,\n hideNewMessageSeparator = false,\n maxTimeBetweenGroupedMessages,\n // jumpToLatestMessage,\n // loadingMore,\n // loadMore,\n // loadMoreNewer,\n overscan = 0,\n // messageLimit = DEFAULT_NEXT_CHANNEL_PAGE_SIZE,\n // messages,\n // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component\n reactionDetailsSort,\n renderText,\n returnAllReadData = false,\n reviewProcessedMessage,\n scrollSeekPlaceHolder,\n scrollToLatestMessageOnFocus = false,\n separateGiphyPreview = false,\n shouldGroupByUser = false,\n showAvatar,\n showUnreadNotificationAlways,\n sortReactions,\n stickToBottomScrollBehavior = 'smooth',\n suppressAutoscroll: suppressAutoscrollFromProps = false,\n withDateSeparator = false,\n } = props;\n const thread = useThreadContext();\n const isThreadList = !!thread;\n const threadHead = useThreadHead();\n const [suppressAutoscrollWhileLoadingOlder, setSuppressAutoscrollWhileLoadingOlder] =\n React.useState(false);\n const suppressAutoscroll =\n suppressAutoscrollFromProps || suppressAutoscrollWhileLoadingOlder;\n const loadingOlderRef = useRef(false);\n\n const { components: virtuosoComponentsFromProps, ...overridingVirtuosoProps } =\n additionalVirtuosoProps;\n\n // Stops errors generated from react-virtuoso to bubble up\n // to Sentry or other tracking tools.\n useCaptureResizeObserverExceededError();\n\n const {\n DateSeparator = DefaultDateSeparator,\n GiphyPreviewMessage = DefaultGiphyPreviewMessage,\n MessageSystem = DefaultMessageSystem,\n NewMessageNotification = DefaultNewMessageNotification,\n TypingIndicator,\n UnreadMessagesNotification = DefaultUnreadMessagesNotification,\n UnreadMessagesSeparator = DefaultUnreadMessagesSeparator,\n VirtualMessage,\n } = useComponentContext();\n // `VirtualMessage` overrides `MessageUI` for the messages this list renders, so it is\n // applied to this subtree's `ComponentContext` rather than drilled down to each `Message`.\n // Memoized so the provider does not hand every consumer below a new value each render.\n const virtualMessageOverrides = useMemo(\n () => ({ MessageUI: VirtualMessage }),\n [VirtualMessage],\n );\n\n const { client, customClasses } = useChatContext();\n const messagePaginator = useMessagePaginator();\n\n const { hasMoreNewer, isLoading, messages } = useStateStore(\n messagePaginator.state,\n messagePaginatorStateSelector,\n );\n const { messageFocusSignal } = useStateStore(\n messagePaginator.messageFocusSignal,\n messageFocusSignalSelector,\n );\n\n const channelUnreadUiState = useStateStore(\n messagePaginator.unreadStateSnapshot,\n unreadStateSnapshotSelector,\n );\n const focusedMessageId = messageFocusSignal?.messageId;\n\n const virtuoso = useRef<VirtuosoHandle>(null);\n\n const lastRead = useMemo(() => channel.lastRead?.(), [channel]);\n\n const { show: showUnreadMessagesNotification, toggleShowUnreadMessagesNotification } =\n useUnreadMessagesNotificationVirtualized({\n showAlways: !!showUnreadNotificationAlways,\n });\n\n const { giphyPreviewMessage, setGiphyPreviewMessage } =\n useGiphyPreview(separateGiphyPreview);\n\n const processedMessages = useMemo(() => {\n if (typeof messages === 'undefined') {\n return [];\n }\n\n if (\n !withDateSeparator &&\n !hideDeletedMessages &&\n hideNewMessageSeparator &&\n !separateGiphyPreview\n ) {\n return messages;\n }\n\n return processMessages({\n hideDeletedMessages,\n hideNewMessageSeparator,\n lastRead,\n messages,\n reviewProcessedMessage,\n setGiphyPreviewMessage,\n userId: client.userID || '',\n withDateSeparator,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n withDateSeparator,\n hideDeletedMessages,\n hideNewMessageSeparator,\n lastRead,\n messages,\n messages?.length,\n client.userID,\n ]);\n\n /**\n * This indirection via a ref is needed because Virtuoso’s itemsRendered is set at render time,\n * while FloatingDateSeparator lives in a child component that may run its hooks in a different order.\n * Using a ref lets the parent provide the callback to Virtuoso while the child keeps ownership\n * of the actual handler implementation.\n */\n const floatingDateItemsRenderedRef = useRef<\n ((rendered: RenderedMessage[]) => void) | null\n >(null);\n\n const lastOwnMessage = useLastOwnMessage({ messages, ownUserId: client.user?.id });\n\n // get the mapping of own messages to array of users who read them\n const ownMessagesReadByOthers = useLastReadData({\n channel,\n lastOwnMessage,\n messages: messages || [],\n returnAllReadData,\n });\n\n const ownMessagesDeliveredToOthers = useLastDeliveredData({\n channel,\n lastOwnMessage,\n messages: messages || [],\n returnAllReadData,\n });\n\n const lastReceivedMessageId = useMemo(\n () => getLastReceived(processedMessages),\n [processedMessages],\n );\n\n const groupStylesFn = groupStyles || getGroupStyles;\n const messageGroupStyles = useMemo(\n () =>\n processedMessages.reduce<Record<string, GroupStyle>>((acc, message, i) => {\n const style = groupStylesFn(\n message,\n processedMessages[i - 1],\n processedMessages[i + 1],\n !shouldGroupByUser,\n maxTimeBetweenGroupedMessages,\n );\n if (style && message.id) acc[message.id] = style;\n return acc;\n }, {}),\n // processedMessages were incorrectly rebuilt with a new object identity at some point, hence the .length usage\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n maxTimeBetweenGroupedMessages,\n processedMessages.length,\n shouldGroupByUser,\n groupStylesFn,\n ],\n );\n\n const {\n atBottom,\n isMessageListScrolledToBottom,\n newMessagesNotification,\n setIsMessageListScrolledToBottom,\n setNewMessagesNotification,\n } = useNewMessageNotification(processedMessages, client.userID);\n\n useMarkRead({\n hasMoreNewer,\n isMessageListScrolledToBottom,\n messageListIsThread: isThreadList,\n });\n\n useIncomingMessageAnnouncements({\n activeThreadId: thread?.id,\n channel,\n ownUserId: channel.getClient().user?.id,\n threadList: isThreadList,\n });\n\n const scrollToBottom = useCallback(async () => {\n if (messagePaginator.hasMoreHead) {\n await messagePaginator.jumpToTheLatestMessage();\n } else if (virtuoso.current) {\n virtuoso.current.scrollToIndex(processedMessages.length - 1);\n }\n\n setNewMessagesNotification(false);\n }, [\n messagePaginator,\n virtuoso,\n processedMessages,\n setNewMessagesNotification,\n // processedMessages were incorrectly rebuilt with a new object identity at some point, hence the .length usage\n // processedMessages.length,\n // hasMoreNewer,\n // jumpToLatestMessage,\n ]);\n\n useScrollToBottomOnNewMessage({\n messages,\n scrollToBottom,\n scrollToLatestMessageOnFocus,\n });\n\n const numItemsPrepended = usePrependedMessagesCount(\n processedMessages,\n withDateSeparator,\n );\n\n const { messageSetKey } = useMessageSetKey({ messages });\n\n const shouldForceScrollToBottom = useShouldForceScrollToBottom(\n processedMessages,\n client.userID,\n );\n\n const handleItemsRendered = useMemo(\n () =>\n makeItemsRenderedHandler(\n [\n toggleShowUnreadMessagesNotification,\n (rendered) => floatingDateItemsRenderedRef.current?.(rendered),\n ],\n processedMessages,\n ),\n [processedMessages, toggleShowUnreadMessagesNotification],\n );\n const followOutput = (isAtBottom: boolean) => {\n if (messagePaginator.hasMoreHead || suppressAutoscroll) {\n return false;\n }\n\n if (shouldForceScrollToBottom()) {\n return isAtBottom ? stickToBottomScrollBehavior : 'auto';\n }\n // a message from another user has been received - don't scroll to bottom unless already there\n return isAtBottom ? stickToBottomScrollBehavior : false;\n };\n\n const computeItemKey = useCallback<ComputeItemKey<UnknownType, VirtuosoContext>>(\n (index, _, { numItemsPrepended, processedMessages }) =>\n processedMessages[calculateItemIndex(index, numItemsPrepended)].id,\n [],\n );\n\n const canPaginateReplies = useCanPaginateReplies();\n\n const atBottomStateChange = (isAtBottom: boolean) => {\n atBottom.current = isAtBottom;\n setIsMessageListScrolledToBottom(isAtBottom);\n\n if (isAtBottom) {\n // An empty thread is at both ends at once, so Virtuoso reports both on mount — see\n // `useCanPaginateReplies` for why that must not become a request.\n if (canPaginateReplies) messagePaginator.toHead();\n // loadMoreNewer?.(messageLimit);\n setNewMessagesNotification?.(false);\n }\n };\n const atTopStateChange = (isAtTop: boolean) => {\n if (isAtTop) {\n if (!canPaginateReplies) return;\n if (loadingOlderRef.current) return;\n loadingOlderRef.current = true;\n setSuppressAutoscrollWhileLoadingOlder(true);\n void messagePaginator.toTail().finally(() => {\n loadingOlderRef.current = false;\n setSuppressAutoscrollWhileLoadingOlder(false);\n });\n }\n };\n\n useEffect(() => {\n let scrollTimeout: ReturnType<typeof setTimeout>;\n if (focusedMessageId) {\n const index = findMessageIndex(processedMessages, focusedMessageId);\n if (index !== -1) {\n scrollTimeout = setTimeout(() => {\n virtuoso.current?.scrollToIndex({ align: 'center', index });\n }, 0);\n }\n }\n return () => {\n clearTimeout(scrollTimeout);\n };\n }, [focusedMessageId, processedMessages]);\n\n const id = useStableId();\n\n if (!processedMessages) return null;\n\n const dialogManagerId = isThreadList\n ? `virtualized-message-list-dialog-manager-thread-${id}`\n : `virtualized-message-list-dialog-manager-${id}`;\n\n const list = (\n <VirtualizedMessageListContextProvider value={{ scrollToBottom }}>\n <MessageTranslationViewProvider>\n <DialogManagerProvider id={dialogManagerId}>\n {!isThreadList && showUnreadMessagesNotification && (\n <UnreadMessagesNotification unreadCount={channelUnreadUiState?.unreadCount} />\n )}\n <div\n className={customClasses?.virtualizedMessageList || 'str-chat__virtual-list'}\n >\n <FloatingDateSeparator\n itemsRenderedRef={floatingDateItemsRenderedRef}\n processedMessages={processedMessages}\n withDateSeparator={withDateSeparator}\n />\n <Virtuoso<UnknownType, VirtuosoContext>\n atBottomStateChange={atBottomStateChange}\n atBottomThreshold={100}\n atTopStateChange={atTopStateChange}\n atTopThreshold={100}\n className='str-chat__message-list-scroll'\n components={{\n EmptyPlaceholder,\n Header,\n Item,\n ...virtuosoComponentsFromProps,\n }}\n computeItemKey={computeItemKey}\n context={{\n additionalMessageComposerProps,\n channel,\n closeReactionSelectorOnClick,\n customClasses,\n customMessageRenderer,\n DateSeparator,\n firstUnreadMessageId: channelUnreadUiState?.firstUnreadMessageId,\n focusedMessageId,\n formatDate,\n head: threadHead,\n lastOwnMessage,\n lastReadDate: channelUnreadUiState?.lastReadAt,\n lastReadMessageId: channelUnreadUiState?.lastReadMessageId,\n lastReceivedMessageId,\n loadingMore: isLoading,\n messageGroupStyles,\n MessageSystem,\n numItemsPrepended,\n ownMessagesDeliveredToOthers,\n ownMessagesReadByOthers,\n processedMessages,\n reactionDetailsSort,\n renderText,\n returnAllReadData,\n shouldGroupByUser,\n showAvatar,\n sortReactions,\n unreadMessageCount: channelUnreadUiState?.unreadCount,\n UnreadMessagesSeparator,\n virtuosoRef: virtuoso,\n }}\n firstItemIndex={calculateFirstItemIndex(numItemsPrepended)}\n followOutput={followOutput}\n increaseViewportBy={{ bottom: 200, top: 0 }}\n initialTopMostItemIndex={calculateInitialTopMostItemIndex(\n processedMessages,\n focusedMessageId,\n )}\n itemContent={messageRenderer}\n itemSize={fractionalItemSize}\n itemsRendered={handleItemsRendered}\n key={messageSetKey}\n overscan={overscan}\n ref={virtuoso}\n style={{ overflowX: 'hidden' }}\n totalCount={processedMessages.length}\n {...overridingVirtuosoProps}\n {...(scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {})}\n {...(defaultItemHeight ? { defaultItemHeight } : {})}\n />\n <NewMessageNotification\n newMessageCount={channelUnreadUiState?.unreadCount}\n showNotification={\n (newMessagesNotification || hasMoreNewer) &&\n !isMessageListScrolledToBottom\n }\n />\n {/* An empty list has nothing to jump to. Gate on the message count rather than on\n scroll position alone: a list with no content can legitimately report \"not at\n bottom\", which would otherwise render a dead affordance. */}\n {messages.length > 0 && (\n <ScrollToLatestMessageButton\n isMessageListScrolledToBottom={isMessageListScrolledToBottom}\n isNotAtLatestMessageSet={hasMoreNewer && messages.length > 0}\n onClick={scrollToBottom}\n />\n )}\n </div>\n </DialogManagerProvider>\n {TypingIndicator && (\n <TypingIndicator\n isMessageListScrolledToBottom={isMessageListScrolledToBottom}\n scrollToBottom={scrollToBottom}\n />\n )}\n {giphyPreviewMessage && <GiphyPreviewMessage message={giphyPreviewMessage} />}\n </MessageTranslationViewProvider>\n </VirtualizedMessageListContextProvider>\n );\n\n // Only wrap when there is something to override, so the common case adds no provider.\n return VirtualMessage ? (\n <WithComponents overrides={virtualMessageOverrides}>{list}</WithComponents>\n ) : (\n list\n );\n};\n\nexport type VirtualizedMessageListProps = Partial<\n Pick<MessageProps, PropsDrilledToMessage>\n> & {\n /** Additional props to be passed the underlying [`react-virtuoso` virtualized list dependency](https://virtuoso.dev/virtuoso-api-reference/) */\n additionalVirtuosoProps?: VirtuosoProps<UnknownType, VirtuosoContext>;\n /** If true, picking a reaction from the `ReactionSelector` component will close the selector */\n closeReactionSelectorOnClick?: boolean;\n /** Custom render function, if passed, certain UI props are ignored */\n customMessageRenderer?: (\n messageList: RenderedMessage[],\n index: number,\n ) => React.ReactElement;\n /** @deprecated Use additionalVirtuosoProps.defaultItemHeight instead. Will be removed with next major release - `v11.0.0`.\n * If set, the default item height is used for the calculation of the total list height. Use if you expect messages with a lot of height variance\n * */\n defaultItemHeight?: number;\n /** Callback function to set group styles for each message */\n groupStyles?: (\n message: RenderedMessage,\n previousMessage: RenderedMessage,\n nextMessage: RenderedMessage,\n noGroupByUser: boolean,\n maxTimeBetweenGroupedMessages?: number,\n ) => GroupStyle;\n // /** Whether or not the list has more items to load */\n // hasMore?: boolean;\n // /** Whether or not the list has newer items to load */\n // hasMoreNewer?: boolean;\n /** Hides the `MessageDeleted` components from the list, defaults to `false` */\n hideDeletedMessages?: boolean;\n /** Hides the `DateSeparator` component when new messages are received in a channel that's watched but not active, defaults to false */\n hideNewMessageSeparator?: boolean;\n // /** Whether or not the list is currently loading more items */\n // loadingMore?: boolean;\n // /** Whether or not the list is currently loading newer items */\n // loadingMoreNewer?: boolean;\n /** Function called when more messages are to be loaded. */\n // loadMore?: () => Promise<void>;\n /** Function called when new messages are to be loaded. */\n // loadMoreNewer?: () => Promise<void>;\n /** Maximum time in milliseconds that should occur between messages to still consider them grouped together */\n maxTimeBetweenGroupedMessages?: number;\n // /** The limit to use when paginating messages */\n // messageLimit?: number;\n /** Optional prop to override the messages available from the active message paginator. */\n messages?: LocalMessage[];\n /**\n * @deprecated Use additionalVirtuosoProps.overscan instead. Will be removed with next major release - `v11.0.0`.\n * The amount of extra content the list should render in addition to what's necessary to fill in the viewport\n */\n overscan?: number;\n /** Keep track of read receipts for each message sent by the user. When disabled, only the last own message delivery / read status is rendered. */\n returnAllReadData?: boolean;\n /**\n * Allows to review changes introduced to messages array on per message basis (e.g. date separator injected before a message).\n * The array returned from the function is appended to the array of messages that are later rendered into React elements in the `VirtualizedMessageList`.\n */\n reviewProcessedMessage?: ProcessMessagesParams['reviewProcessedMessage'];\n /**\n * @deprecated Pass additionalVirtuosoProps.scrollSeekConfiguration and specify the placeholder in additionalVirtuosoProps.components.ScrollSeekPlaceholder instead. Will be removed with next major release - `v11.0.0`.\n * Performance improvement by showing placeholders if user scrolls fast through list.\n * it can be used like this:\n * ```\n * {\n * enter: (velocity) => Math.abs(velocity) > 120,\n * exit: (velocity) => Math.abs(velocity) < 40,\n * change: () => null,\n * placeholder: ({index, height})=> <div style={{height: height + \"px\"}}>{index}</div>,\n * }\n * ```\n */\n scrollSeekPlaceHolder?: ScrollSeekConfiguration & {\n placeholder: React.ComponentType<ScrollSeekPlaceholderProps>;\n };\n /** When `true`, the list will scroll to the latest message when the window regains focus */\n scrollToLatestMessageOnFocus?: boolean;\n /** If true, the Giphy preview will render as a separate component above the `MessageInput`, rather than inline with the other messages in the list */\n separateGiphyPreview?: boolean;\n /** If true, group messages belonging to the same user, otherwise show each message individually */\n shouldGroupByUser?: boolean;\n /**\n * The floating notification informing about unread messages will be shown when the\n * UnreadMessagesSeparator is not visible. The default is false, that means the notification\n * is shown only when viewing unread messages.\n */\n showUnreadNotificationAlways?: boolean;\n /** The scrollTo behavior when new messages appear. Use `\"smooth\"` for regular chat channels, and `\"auto\"` (which results in instant scroll to bottom) if you expect high throughput. */\n stickToBottomScrollBehavior?: 'smooth' | 'auto';\n /** If true, prevents autoscroll-to-bottom behavior on new messages. */\n suppressAutoscroll?: boolean;\n /** Injects date separator components into the list, defaults to `false` */\n withDateSeparator?: boolean;\n};\n\n/**\n * The VirtualizedMessageList component renders a list of messages in a virtualized list.\n * It is a consumer of the React contexts set in [Channel](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Channel/Channel.tsx).\n */\nexport function VirtualizedMessageList(props: VirtualizedMessageListProps) {\n const channel = useChannel();\n const thread = useThreadContext();\n const notificationTarget = useNotificationTarget();\n const {\n MessageListMainPanel = DefaultMessageListMainPanel,\n NotificationList = DefaultNotificationList,\n } = useComponentContext();\n\n const { read } = useStateStore(channel?.state, channelReadSelector) ?? {};\n\n const messages = props.messages; // || contextMessages;\n\n // See the note in `MessageList`: the panel and the notification area sit above the key, so a\n // notification keeps its element, its countdown and its box across a switch. Here it also puts\n // them above `VirtualizedMessageListWithContext`'s `if (!processedMessages) return null`, which\n // would otherwise take the notification area down with the list.\n // todo: finalize the props shape for VirtualizedMessageList\n return (\n <MessageListMainPanel>\n <VirtualizedMessageListWithContext\n channel={channel}\n // See the note in MessageList: this list's local state -- Virtuoso's scroll offset above all\n // -- is scoped to whatever it is showing, a thread's replies or a channel's messages.\n key={getMessageSourceKey({ channel, thread })}\n // channelUnreadUiState={props.channelUnreadUiState ?? channelUnreadUiState}\n // hasMore={!!hasMore}\n // hasMoreNewer={!!hasMoreNewer}\n // jumpToLatestMessage={jumpToLatestMessage}\n // loadingMore={!!loadingMore}\n // loadingMoreNewer={!!loadingMoreNewer}\n // loadMore={loadMore}\n // loadMoreNewer={loadMoreNewer}\n messages={messages}\n read={read}\n {...props}\n />\n <NotificationList panel={notificationTarget} />\n </MessageListMainPanel>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { useComponentContext } from "../../context/ComponentContext.mjs";
|
|
2
|
+
import { useThreadContext } from "../Threads/ThreadContext.mjs";
|
|
2
3
|
import { EmptyStateIndicator } from "../EmptyStateIndicator/EmptyStateIndicator.mjs";
|
|
3
4
|
import { LoadingIndicator } from "../Loading/LoadingIndicator.mjs";
|
|
4
|
-
import { Message } from "../Message/Message.mjs";
|
|
5
5
|
import { getIsFirstUnreadMessage, isDateSeparatorMessage, isIntroMessage } from "./utils.mjs";
|
|
6
|
+
import { Message } from "../Message/Message.mjs";
|
|
6
7
|
import "react";
|
|
7
8
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
8
9
|
import clsx from "clsx";
|
|
@@ -32,19 +33,20 @@ var Item = ({ context, ...props }) => {
|
|
|
32
33
|
});
|
|
33
34
|
};
|
|
34
35
|
var Header = ({ context }) => {
|
|
35
|
-
const { LoadingIndicator: LoadingIndicator$1 = LoadingIndicator } = useComponentContext(
|
|
36
|
+
const { LoadingIndicator: LoadingIndicator$1 = LoadingIndicator } = useComponentContext();
|
|
36
37
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [context?.head, context?.loadingMore && LoadingIndicator$1 && /* @__PURE__ */ jsx("div", {
|
|
37
38
|
className: "str-chat__virtual-list__loading",
|
|
38
39
|
children: /* @__PURE__ */ jsx(LoadingIndicator$1, {})
|
|
39
40
|
})] });
|
|
40
41
|
};
|
|
41
42
|
var EmptyPlaceholder = ({ context }) => {
|
|
42
|
-
const
|
|
43
|
+
const isThreadList = !!useThreadContext();
|
|
44
|
+
const { EmptyStateIndicator: EmptyStateIndicator$1 = EmptyStateIndicator } = useComponentContext();
|
|
43
45
|
if (typeof context?.processedMessages !== "undefined" && context.processedMessages.length > 0) return null;
|
|
44
|
-
return /* @__PURE__ */ jsx(Fragment$1, { children: EmptyStateIndicator$1 && /* @__PURE__ */ jsx(EmptyStateIndicator$1, { listType:
|
|
46
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children: EmptyStateIndicator$1 && /* @__PURE__ */ jsx(EmptyStateIndicator$1, { listType: isThreadList ? "thread" : "message" }) });
|
|
45
47
|
};
|
|
46
48
|
var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
|
|
47
|
-
const { additionalMessageComposerProps, closeReactionSelectorOnClick, customMessageRenderer, DateSeparator, firstUnreadMessageId, formatDate, lastOwnMessage, lastReadDate, lastReadMessageId, lastReceivedMessageId,
|
|
49
|
+
const { additionalMessageComposerProps, channel, closeReactionSelectorOnClick, customMessageRenderer, DateSeparator, firstUnreadMessageId, focusedMessageId, formatDate, lastOwnMessage, lastReadDate, lastReadMessageId, lastReceivedMessageId, messageGroupStyles, MessageSystem, numItemsPrepended, ownMessagesDeliveredToOthers, ownMessagesReadByOthers, processedMessages: messageList, reactionDetailsSort, renderText, returnAllReadData, showAvatar, sortReactions, unreadMessageCount = 0, UnreadMessagesSeparator, virtuosoRef } = virtuosoContext;
|
|
48
50
|
const streamMessageIndex = calculateItemIndex(virtuosoIndex, numItemsPrepended);
|
|
49
51
|
if (customMessageRenderer) return customMessageRenderer(messageList, streamMessageIndex);
|
|
50
52
|
const message = messageList[streamMessageIndex];
|
|
@@ -55,13 +57,14 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
|
|
|
55
57
|
}) : null;
|
|
56
58
|
if (message.type === "system") return MessageSystem ? /* @__PURE__ */ jsx(MessageSystem, { message }) : null;
|
|
57
59
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [getIsFirstUnreadMessage({
|
|
60
|
+
channel,
|
|
58
61
|
firstUnreadMessageId,
|
|
59
62
|
isFirstMessage: streamMessageIndex === 0,
|
|
60
|
-
lastReadDate,
|
|
63
|
+
lastReadAt: lastReadDate,
|
|
61
64
|
lastReadMessageId,
|
|
62
65
|
message,
|
|
63
66
|
previousMessage: streamMessageIndex ? messageList[streamMessageIndex - 1] : void 0,
|
|
64
|
-
unreadMessageCount
|
|
67
|
+
unreadCount: unreadMessageCount
|
|
65
68
|
}) && /* @__PURE__ */ jsx("div", {
|
|
66
69
|
className: "str-chat__unread-messages-separator-wrapper",
|
|
67
70
|
children: /* @__PURE__ */ jsx(UnreadMessagesSeparator, { unreadCount: unreadMessageCount })
|
|
@@ -72,19 +75,16 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
|
|
|
72
75
|
deliveredTo: ownMessagesDeliveredToOthers[message.id] || [],
|
|
73
76
|
formatDate,
|
|
74
77
|
groupStyles: [messageGroupStyles[message.id] ?? ""],
|
|
78
|
+
highlighted: focusedMessageId === message.id,
|
|
75
79
|
lastOwnMessage,
|
|
76
80
|
lastReceivedId: lastReceivedMessageId,
|
|
77
81
|
message,
|
|
78
|
-
Message: MessageUIComponent,
|
|
79
|
-
messageActions,
|
|
80
|
-
openThread,
|
|
81
82
|
reactionDetailsSort,
|
|
82
83
|
readBy: ownMessagesReadByOthers[message.id] || [],
|
|
83
84
|
renderText,
|
|
84
85
|
returnAllReadData,
|
|
85
86
|
showAvatar,
|
|
86
|
-
sortReactions
|
|
87
|
-
threadList
|
|
87
|
+
sortReactions
|
|
88
88
|
})] });
|
|
89
89
|
};
|
|
90
90
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualizedMessageListComponents.mjs","names":[],"sources":["../../../../src/components/MessageList/VirtualizedMessageListComponents.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport throttle from 'lodash.throttle';\nimport React from 'react';\nimport type { ItemProps, ListItem } from 'react-virtuoso';\n\nimport { EmptyStateIndicator as DefaultEmptyStateIndicator } from '../EmptyStateIndicator';\nimport { LoadingIndicator as DefaultLoadingIndicator } from '../Loading';\nimport { Message } from '../Message';\n\nimport { useComponentContext } from '../../context';\nimport type { GroupStyle, RenderedMessage } from './utils';\nimport { getIsFirstUnreadMessage, isDateSeparatorMessage, isIntroMessage } from './utils';\nimport type { VirtuosoContext } from './VirtualizedMessageList';\nimport type { UnknownType } from '../../types/types';\n\nconst PREPEND_OFFSET = 10 ** 7;\n\nexport function calculateItemIndex(virtuosoIndex: number, numItemsPrepended: number) {\n return virtuosoIndex + numItemsPrepended - PREPEND_OFFSET;\n}\n\nexport function calculateFirstItemIndex(numItemsPrepended: number) {\n return PREPEND_OFFSET - numItemsPrepended;\n}\n\nexport const makeItemsRenderedHandler = (\n renderedItemsActions: Array<(msg: RenderedMessage[]) => void>,\n processedMessages: RenderedMessage[],\n) =>\n throttle((items: ListItem<UnknownType>[]) => {\n const renderedMessages = items\n .map((item) => {\n if (!item.originalIndex) return undefined;\n return processedMessages[calculateItemIndex(item.originalIndex, PREPEND_OFFSET)];\n })\n .filter((msg) => !!msg);\n renderedItemsActions.forEach((action) =>\n action(renderedMessages as RenderedMessage[]),\n );\n }, 200);\n\ntype CommonVirtuosoComponentProps = {\n context?: VirtuosoContext;\n};\n// using 'display: inline-block'\n// traps CSS margins of the item elements, preventing incorrect item measurements\nexport const Item = ({ context, ...props }: ItemProps & CommonVirtuosoComponentProps) => {\n if (!context) return <></>;\n\n const message =\n context.processedMessages[\n calculateItemIndex(props['data-item-index'], context.numItemsPrepended)\n ];\n const groupStyles: GroupStyle = context.messageGroupStyles[message.id];\n\n return (\n <div\n {...props}\n className={\n context?.customClasses?.virtualMessage ||\n clsx('str-chat__virtual-list-message-wrapper str-chat__li', {\n [`str-chat__li--${groupStyles}`]: groupStyles,\n })\n }\n />\n );\n};\nexport const Header = ({ context }: CommonVirtuosoComponentProps) => {\n const { LoadingIndicator = DefaultLoadingIndicator } = useComponentContext(
|
|
1
|
+
{"version":3,"file":"VirtualizedMessageListComponents.mjs","names":[],"sources":["../../../../src/components/MessageList/VirtualizedMessageListComponents.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport throttle from 'lodash.throttle';\nimport React from 'react';\nimport type { ItemProps, ListItem } from 'react-virtuoso';\n\nimport { EmptyStateIndicator as DefaultEmptyStateIndicator } from '../EmptyStateIndicator';\nimport { LoadingIndicator as DefaultLoadingIndicator } from '../Loading';\nimport { Message } from '../Message';\n\nimport { useComponentContext } from '../../context';\nimport type { GroupStyle, RenderedMessage } from './utils';\nimport { getIsFirstUnreadMessage, isDateSeparatorMessage, isIntroMessage } from './utils';\nimport type { VirtuosoContext } from './VirtualizedMessageList';\nimport type { UnknownType } from '../../types/types';\nimport { useThreadContext } from '../Threads';\n\nconst PREPEND_OFFSET = 10 ** 7;\n\nexport function calculateItemIndex(virtuosoIndex: number, numItemsPrepended: number) {\n return virtuosoIndex + numItemsPrepended - PREPEND_OFFSET;\n}\n\nexport function calculateFirstItemIndex(numItemsPrepended: number) {\n return PREPEND_OFFSET - numItemsPrepended;\n}\n\nexport const makeItemsRenderedHandler = (\n renderedItemsActions: Array<(msg: RenderedMessage[]) => void>,\n processedMessages: RenderedMessage[],\n) =>\n throttle((items: ListItem<UnknownType>[]) => {\n const renderedMessages = items\n .map((item) => {\n if (!item.originalIndex) return undefined;\n return processedMessages[calculateItemIndex(item.originalIndex, PREPEND_OFFSET)];\n })\n .filter((msg) => !!msg);\n renderedItemsActions.forEach((action) =>\n action(renderedMessages as RenderedMessage[]),\n );\n }, 200);\n\ntype CommonVirtuosoComponentProps = {\n context?: VirtuosoContext;\n};\n// using 'display: inline-block'\n// traps CSS margins of the item elements, preventing incorrect item measurements\nexport const Item = ({ context, ...props }: ItemProps & CommonVirtuosoComponentProps) => {\n if (!context) return <></>;\n\n const message =\n context.processedMessages[\n calculateItemIndex(props['data-item-index'], context.numItemsPrepended)\n ];\n const groupStyles: GroupStyle = context.messageGroupStyles[message.id];\n\n return (\n <div\n {...props}\n className={\n context?.customClasses?.virtualMessage ||\n clsx('str-chat__virtual-list-message-wrapper str-chat__li', {\n [`str-chat__li--${groupStyles}`]: groupStyles,\n })\n }\n />\n );\n};\nexport const Header = ({ context }: CommonVirtuosoComponentProps) => {\n const { LoadingIndicator = DefaultLoadingIndicator } = useComponentContext();\n\n return (\n <>\n {context?.head}\n {context?.loadingMore && LoadingIndicator && (\n <div className='str-chat__virtual-list__loading'>\n <LoadingIndicator />\n </div>\n )}\n </>\n );\n};\nexport const EmptyPlaceholder = ({ context }: CommonVirtuosoComponentProps) => {\n const thread = useThreadContext();\n const isThreadList = !!thread;\n const { EmptyStateIndicator = DefaultEmptyStateIndicator } = useComponentContext();\n // prevent showing that there are no messages if there actually are messages (for some reason virtuoso decides to render empty placeholder first, even though it has the totalCount prop > 0)\n if (\n typeof context?.processedMessages !== 'undefined' &&\n context.processedMessages.length > 0\n )\n return null;\n\n return (\n <>\n {EmptyStateIndicator && (\n <EmptyStateIndicator listType={isThreadList ? 'thread' : 'message'} />\n )}\n </>\n );\n};\n\nexport const messageRenderer = (\n virtuosoIndex: number,\n _data: UnknownType,\n virtuosoContext: VirtuosoContext,\n) => {\n const {\n additionalMessageComposerProps,\n channel,\n closeReactionSelectorOnClick,\n customMessageRenderer,\n DateSeparator,\n firstUnreadMessageId,\n focusedMessageId,\n formatDate,\n lastOwnMessage,\n lastReadDate,\n lastReadMessageId,\n lastReceivedMessageId,\n messageGroupStyles,\n MessageSystem,\n numItemsPrepended,\n ownMessagesDeliveredToOthers,\n ownMessagesReadByOthers,\n processedMessages: messageList,\n reactionDetailsSort,\n renderText,\n returnAllReadData,\n showAvatar,\n sortReactions,\n unreadMessageCount = 0,\n UnreadMessagesSeparator,\n virtuosoRef,\n } = virtuosoContext;\n\n const streamMessageIndex = calculateItemIndex(virtuosoIndex, numItemsPrepended);\n\n if (customMessageRenderer) {\n return customMessageRenderer(messageList, streamMessageIndex);\n }\n\n const message = messageList[streamMessageIndex];\n\n if (!message || isIntroMessage(message)) return <div style={{ height: '1px' }}></div>; // returning null or zero height breaks the virtuoso\n\n if (isDateSeparatorMessage(message)) {\n return DateSeparator ? (\n <DateSeparator date={message.date} unread={message.unread} />\n ) : null;\n }\n\n if (message.type === 'system') {\n return MessageSystem ? <MessageSystem message={message} /> : null;\n }\n\n const isFirstUnreadMessage = getIsFirstUnreadMessage({\n channel,\n firstUnreadMessageId,\n isFirstMessage: streamMessageIndex === 0,\n lastReadAt: lastReadDate,\n lastReadMessageId,\n message,\n previousMessage: streamMessageIndex ? messageList[streamMessageIndex - 1] : undefined,\n unreadCount: unreadMessageCount,\n });\n\n return (\n <>\n {isFirstUnreadMessage && (\n <div className='str-chat__unread-messages-separator-wrapper'>\n <UnreadMessagesSeparator unreadCount={unreadMessageCount} />\n </div>\n )}\n <Message\n additionalMessageComposerProps={additionalMessageComposerProps}\n autoscrollToBottom={virtuosoRef.current?.autoscrollToBottom}\n closeReactionSelectorOnClick={closeReactionSelectorOnClick}\n deliveredTo={ownMessagesDeliveredToOthers[message.id] || []}\n formatDate={formatDate}\n groupStyles={[messageGroupStyles[message.id] ?? '']}\n highlighted={focusedMessageId === message.id}\n lastOwnMessage={lastOwnMessage}\n lastReceivedId={lastReceivedMessageId}\n message={message}\n reactionDetailsSort={reactionDetailsSort}\n readBy={ownMessagesReadByOthers[message.id] || []}\n renderText={renderText}\n returnAllReadData={returnAllReadData}\n showAvatar={showAvatar}\n sortReactions={sortReactions}\n />\n </>\n );\n};\n"],"mappings":"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"}
|
|
@@ -4,19 +4,18 @@ import { getGroupStyles, insertIntro, processMessages } from "../../utils.mjs";
|
|
|
4
4
|
import { useMemo } from "react";
|
|
5
5
|
//#region src/components/MessageList/hooks/MessageList/useEnrichedMessages.ts
|
|
6
6
|
var useEnrichedMessages = (args) => {
|
|
7
|
-
const { channel,
|
|
8
|
-
const { client } = useChatContext(
|
|
9
|
-
const { HeaderComponent } = useComponentContext(
|
|
7
|
+
const { channel, groupStyles, headerPosition, hideDeletedMessages, hideNewMessageSeparator, maxTimeBetweenGroupedMessages, messages, noGroupByUser, reviewProcessedMessage, withDateSeparator } = args;
|
|
8
|
+
const { client } = useChatContext();
|
|
9
|
+
const { HeaderComponent } = useComponentContext();
|
|
10
10
|
const lastRead = useMemo(() => channel.lastRead?.(), [channel]);
|
|
11
|
-
|
|
12
|
-
let messagesWithDates = !enableDateSeparator && !hideDeletedMessages && hideNewMessageSeparator ? messages : processMessages({
|
|
13
|
-
enableDateSeparator,
|
|
11
|
+
let messagesWithDates = !withDateSeparator && !hideDeletedMessages && hideNewMessageSeparator ? messages : processMessages({
|
|
14
12
|
hideDeletedMessages,
|
|
15
13
|
hideNewMessageSeparator,
|
|
16
14
|
lastRead,
|
|
17
15
|
messages,
|
|
18
16
|
reviewProcessedMessage,
|
|
19
|
-
userId: client.userID || ""
|
|
17
|
+
userId: client.userID || "",
|
|
18
|
+
withDateSeparator
|
|
20
19
|
});
|
|
21
20
|
if (HeaderComponent) messagesWithDates = insertIntro(messagesWithDates, headerPosition);
|
|
22
21
|
const groupStylesFn = groupStyles || getGroupStyles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEnrichedMessages.mjs","names":[],"sources":["../../../../../../src/components/MessageList/hooks/MessageList/useEnrichedMessages.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport type { GroupStyle, ProcessMessagesParams, RenderedMessage } from '../../utils';\nimport { getGroupStyles, insertIntro, processMessages } from '../../utils';\n\nimport { useChatContext } from '../../../../context/ChatContext';\nimport { useComponentContext } from '../../../../context/ComponentContext';\n\nimport type { Channel, LocalMessage } from 'stream-chat';\n\nexport const useEnrichedMessages = (args: {\n channel: Channel;\n
|
|
1
|
+
{"version":3,"file":"useEnrichedMessages.mjs","names":[],"sources":["../../../../../../src/components/MessageList/hooks/MessageList/useEnrichedMessages.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport type { GroupStyle, ProcessMessagesParams, RenderedMessage } from '../../utils';\nimport { getGroupStyles, insertIntro, processMessages } from '../../utils';\n\nimport { useChatContext } from '../../../../context/ChatContext';\nimport { useComponentContext } from '../../../../context/ComponentContext';\n\nimport type { Channel, LocalMessage, TimestampNS } from 'stream-chat';\n\nexport const useEnrichedMessages = (args: {\n channel: Channel;\n hideDeletedMessages: boolean;\n hideNewMessageSeparator: boolean;\n messages: LocalMessage[];\n noGroupByUser: boolean;\n withDateSeparator: boolean;\n groupStyles?: (\n message: RenderedMessage,\n previousMessage: RenderedMessage,\n nextMessage: RenderedMessage,\n noGroupByUser: boolean,\n maxTimeBetweenGroupedMessages?: number,\n ) => GroupStyle;\n headerPosition?: TimestampNS;\n maxTimeBetweenGroupedMessages?: number;\n reviewProcessedMessage?: ProcessMessagesParams['reviewProcessedMessage'];\n}) => {\n const {\n channel,\n groupStyles,\n headerPosition,\n hideDeletedMessages,\n hideNewMessageSeparator,\n maxTimeBetweenGroupedMessages,\n messages,\n noGroupByUser,\n reviewProcessedMessage,\n withDateSeparator,\n } = args;\n\n const { client } = useChatContext();\n const { HeaderComponent } = useComponentContext();\n\n const lastRead = useMemo(() => channel.lastRead?.(), [channel]);\n\n let messagesWithDates =\n !withDateSeparator && !hideDeletedMessages && hideNewMessageSeparator\n ? messages\n : processMessages({\n hideDeletedMessages,\n hideNewMessageSeparator,\n lastRead,\n messages,\n reviewProcessedMessage,\n userId: client.userID || '',\n withDateSeparator,\n });\n\n if (HeaderComponent) {\n messagesWithDates = insertIntro(messagesWithDates, headerPosition);\n }\n\n const groupStylesFn = groupStyles || getGroupStyles;\n const messageGroupStyles = useMemo(\n () =>\n messagesWithDates.reduce<Record<string, GroupStyle>>((acc, message, i) => {\n const style = groupStylesFn(\n message,\n messagesWithDates[i - 1],\n messagesWithDates[i + 1],\n noGroupByUser,\n maxTimeBetweenGroupedMessages,\n );\n if (style) acc[message.id] = style;\n return acc;\n }, {}),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [maxTimeBetweenGroupedMessages, messagesWithDates, noGroupByUser],\n );\n\n return { messageGroupStyles, messages: messagesWithDates };\n};\n"],"mappings":";;;;;AAUA,IAAa,uBAAuB,SAiB9B;CACJ,MAAM,EACJ,SACA,aACA,gBACA,qBACA,yBACA,+BACA,UACA,eACA,wBACA,sBACE;CAEJ,MAAM,EAAE,WAAW,eAAe;CAClC,MAAM,EAAE,oBAAoB,oBAAoB;CAEhD,MAAM,WAAW,cAAc,QAAQ,WAAW,GAAG,CAAC,OAAO,CAAC;CAE9D,IAAI,oBACF,CAAC,qBAAqB,CAAC,uBAAuB,0BAC1C,WACA,gBAAgB;EACd;EACA;EACA;EACA;EACA;EACA,QAAQ,OAAO,UAAU;EACzB;CACF,CAAC;CAEP,IAAI,iBACF,oBAAoB,YAAY,mBAAmB,cAAc;CAGnE,MAAM,gBAAgB,eAAe;CAkBrC,OAAO;EAAE,oBAjBkB,cAEvB,kBAAkB,QAAoC,KAAK,SAAS,MAAM;GACxE,MAAM,QAAQ,cACZ,SACA,kBAAkB,IAAI,IACtB,kBAAkB,IAAI,IACtB,eACA,6BACF;GACA,IAAI,OAAO,IAAI,QAAQ,MAAM;GAC7B,OAAO;EACT,GAAG,CAAC,CAAC,GAEP;GAAC;GAA+B;GAAmB;EAAa,CAGzD;EAAoB,UAAU;CAAkB;AAC3D"}
|
package/dist/es/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.mjs
CHANGED
|
@@ -7,13 +7,13 @@ var THROTTLE_MS = 100;
|
|
|
7
7
|
* For non-virtualized MessageList: keeps the floating date synced with the
|
|
8
8
|
* separator currently pinned to the top boundary of the list viewport.
|
|
9
9
|
*/
|
|
10
|
-
var useFloatingDateSeparatorMessageList = ({
|
|
10
|
+
var useFloatingDateSeparatorMessageList = ({ listElement, processedMessages, withDateSeparator }) => {
|
|
11
11
|
const [state, setState] = useState({
|
|
12
12
|
date: null,
|
|
13
13
|
visible: false
|
|
14
14
|
});
|
|
15
15
|
const update = useCallback(() => {
|
|
16
|
-
if (
|
|
16
|
+
if (!withDateSeparator || !listElement || processedMessages.length === 0) {
|
|
17
17
|
setState({
|
|
18
18
|
date: null,
|
|
19
19
|
visible: false
|
|
@@ -46,7 +46,7 @@ var useFloatingDateSeparatorMessageList = ({ disableDateSeparator, listElement,
|
|
|
46
46
|
visible: bestDate !== null
|
|
47
47
|
});
|
|
48
48
|
}, [
|
|
49
|
-
|
|
49
|
+
withDateSeparator,
|
|
50
50
|
listElement,
|
|
51
51
|
processedMessages
|
|
52
52
|
]);
|
|
@@ -55,15 +55,11 @@ var useFloatingDateSeparatorMessageList = ({ disableDateSeparator, listElement,
|
|
|
55
55
|
const throttled = throttle(update, THROTTLE_MS);
|
|
56
56
|
throttled();
|
|
57
57
|
listElement.addEventListener("scroll", throttled);
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
throttled.cancel();
|
|
61
|
-
};
|
|
62
|
-
const resizeObserver = new ResizeObserver(throttled);
|
|
63
|
-
resizeObserver.observe(listElement);
|
|
58
|
+
const resizeObserver = typeof ResizeObserver !== "undefined" ? new ResizeObserver(throttled) : void 0;
|
|
59
|
+
resizeObserver?.observe(listElement);
|
|
64
60
|
return () => {
|
|
65
61
|
listElement.removeEventListener("scroll", throttled);
|
|
66
|
-
resizeObserver
|
|
62
|
+
resizeObserver?.disconnect();
|
|
67
63
|
throttled.cancel();
|
|
68
64
|
};
|
|
69
65
|
}, [listElement, update]);
|
package/dist/es/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFloatingDateSeparatorMessageList.mjs","names":[],"sources":["../../../../../../src/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport throttle from 'lodash.throttle';\n\nimport type { RenderedMessage } from '../../utils';\n\nconst DATE_SEPARATOR_SELECTOR =\n '.str-chat__date-separator:not(.str-chat__date-separator--floating)';\nconst THROTTLE_MS = 100;\n\nexport type UseFloatingDateSeparatorMessageListParams = {\n
|
|
1
|
+
{"version":3,"file":"useFloatingDateSeparatorMessageList.mjs","names":[],"sources":["../../../../../../src/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport throttle from 'lodash.throttle';\n\nimport type { RenderedMessage } from '../../utils';\n\nconst DATE_SEPARATOR_SELECTOR =\n '.str-chat__date-separator:not(.str-chat__date-separator--floating)';\nconst THROTTLE_MS = 100;\n\nexport type UseFloatingDateSeparatorMessageListParams = {\n listElement: HTMLDivElement | null;\n processedMessages: RenderedMessage[];\n withDateSeparator: boolean;\n};\n\nexport type UseFloatingDateSeparatorMessageListResult = {\n floatingDate: Date | null;\n showFloatingDate: boolean;\n};\n\n/**\n * For non-virtualized MessageList: keeps the floating date synced with the\n * separator currently pinned to the top boundary of the list viewport.\n */\nexport const useFloatingDateSeparatorMessageList = ({\n listElement,\n processedMessages,\n withDateSeparator,\n}: UseFloatingDateSeparatorMessageListParams): UseFloatingDateSeparatorMessageListResult => {\n const [state, setState] = useState<{ date: Date | null; visible: boolean }>({\n date: null,\n visible: false,\n });\n\n const update = useCallback(() => {\n if (!withDateSeparator || !listElement || processedMessages.length === 0) {\n setState({ date: null, visible: false });\n return;\n }\n\n const separators = listElement.querySelectorAll<HTMLElement>(DATE_SEPARATOR_SELECTOR);\n if (separators.length === 0) {\n setState({ date: null, visible: false });\n return;\n }\n\n const containerRect = listElement.getBoundingClientRect();\n let bestDate: Date | null = null;\n let bestTop = -Infinity;\n\n for (const el of separators) {\n const rect = el.getBoundingClientRect();\n const dataDate = el.getAttribute('data-date');\n if (!dataDate) continue;\n\n const isAtOrAboveTopBoundary = rect.top <= containerRect.top;\n\n if (isAtOrAboveTopBoundary && rect.top > bestTop) {\n bestTop = rect.top;\n const d = new Date(dataDate);\n if (!isNaN(d.getTime())) bestDate = d;\n }\n }\n\n setState({\n date: bestDate,\n visible: bestDate !== null,\n });\n }, [withDateSeparator, listElement, processedMessages]);\n\n useEffect(() => {\n if (!listElement) return;\n\n const throttled = throttle(update, THROTTLE_MS);\n\n throttled();\n listElement.addEventListener('scroll', throttled);\n const resizeObserver =\n typeof ResizeObserver !== 'undefined' ? new ResizeObserver(throttled) : undefined;\n resizeObserver?.observe(listElement);\n\n return () => {\n listElement.removeEventListener('scroll', throttled);\n resizeObserver?.disconnect();\n throttled.cancel();\n };\n }, [listElement, update]);\n\n return {\n floatingDate: state.date,\n showFloatingDate: state.visible,\n };\n};\n"],"mappings":";;;AAKA,IAAM,0BACJ;AACF,IAAM,cAAc;;;;;AAiBpB,IAAa,uCAAuC,EAClD,aACA,mBACA,wBAC0F;CAC1F,MAAM,CAAC,OAAO,YAAY,SAAkD;EAC1E,MAAM;EACN,SAAS;CACX,CAAC;CAED,MAAM,SAAS,kBAAkB;EAC/B,IAAI,CAAC,qBAAqB,CAAC,eAAe,kBAAkB,WAAW,GAAG;GACxE,SAAS;IAAE,MAAM;IAAM,SAAS;GAAM,CAAC;GACvC;EACF;EAEA,MAAM,aAAa,YAAY,iBAA8B,uBAAuB;EACpF,IAAI,WAAW,WAAW,GAAG;GAC3B,SAAS;IAAE,MAAM;IAAM,SAAS;GAAM,CAAC;GACvC;EACF;EAEA,MAAM,gBAAgB,YAAY,sBAAsB;EACxD,IAAI,WAAwB;EAC5B,IAAI,UAAU;EAEd,KAAK,MAAM,MAAM,YAAY;GAC3B,MAAM,OAAO,GAAG,sBAAsB;GACtC,MAAM,WAAW,GAAG,aAAa,WAAW;GAC5C,IAAI,CAAC,UAAU;GAIf,IAF+B,KAAK,OAAO,cAAc,OAE3B,KAAK,MAAM,SAAS;IAChD,UAAU,KAAK;IACf,MAAM,IAAI,IAAI,KAAK,QAAQ;IAC3B,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,WAAW;GACtC;EACF;EAEA,SAAS;GACP,MAAM;GACN,SAAS,aAAa;EACxB,CAAC;CACH,GAAG;EAAC;EAAmB;EAAa;CAAiB,CAAC;CAEtD,gBAAgB;EACd,IAAI,CAAC,aAAa;EAElB,MAAM,YAAY,SAAS,QAAQ,WAAW;EAE9C,UAAU;EACV,YAAY,iBAAiB,UAAU,SAAS;EAChD,MAAM,iBACJ,OAAO,mBAAmB,cAAc,IAAI,eAAe,SAAS,IAAI,KAAA;EAC1E,gBAAgB,QAAQ,WAAW;EAEnC,aAAa;GACX,YAAY,oBAAoB,UAAU,SAAS;GACnD,gBAAgB,WAAW;GAC3B,UAAU,OAAO;EACnB;CACF,GAAG,CAAC,aAAa,MAAM,CAAC;CAExB,OAAO;EACL,cAAc,MAAM;EACpB,kBAAkB,MAAM;CAC1B;AACF"}
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useStateStore } from "../../../../store/hooks/useStateStore.mjs";
|
|
2
2
|
import { useChatContext } from "../../../../context/ChatContext.mjs";
|
|
3
3
|
import { useComponentContext } from "../../../../context/ComponentContext.mjs";
|
|
4
4
|
import { getLastReceived } from "../../utils.mjs";
|
|
5
5
|
import { useLastReadData } from "../useLastReadData.mjs";
|
|
6
6
|
import { useLastDeliveredData } from "../useLastDeliveredData.mjs";
|
|
7
|
+
import { useChannel } from "../../../../context/useChannel.mjs";
|
|
7
8
|
import { useMemo } from "react";
|
|
8
9
|
//#region src/components/MessageList/hooks/MessageList/useMessageListElements.tsx
|
|
10
|
+
var unreadStateSnapshotSelector = (state) => state;
|
|
9
11
|
var useMessageListElements = (props) => {
|
|
10
|
-
const {
|
|
11
|
-
const { customClasses } = useChatContext(
|
|
12
|
-
const
|
|
13
|
-
const components = useComponentContext(
|
|
12
|
+
const { enrichedMessages, focusedMessageId, internalMessageProps, lastOwnMessage, messageGroupStyles, messages, renderMessages, returnAllReadData } = props;
|
|
13
|
+
const { customClasses } = useChatContext();
|
|
14
|
+
const channel = useChannel();
|
|
15
|
+
const components = useComponentContext();
|
|
16
|
+
const channelUnreadUiState = useStateStore(channel.messagePaginator.unreadStateSnapshot, unreadStateSnapshotSelector);
|
|
14
17
|
const readData = useLastReadData({
|
|
15
18
|
channel,
|
|
16
19
|
lastOwnMessage,
|
|
@@ -25,9 +28,11 @@ var useMessageListElements = (props) => {
|
|
|
25
28
|
});
|
|
26
29
|
const lastReceivedMessageId = useMemo(() => getLastReceived(enrichedMessages), [enrichedMessages]);
|
|
27
30
|
return useMemo(() => renderMessages({
|
|
31
|
+
channel,
|
|
28
32
|
channelUnreadUiState,
|
|
29
33
|
components,
|
|
30
34
|
customClasses,
|
|
35
|
+
focusedMessageId,
|
|
31
36
|
lastOwnMessage,
|
|
32
37
|
lastReceivedMessageId,
|
|
33
38
|
messageGroupStyles,
|
|
@@ -36,20 +41,23 @@ var useMessageListElements = (props) => {
|
|
|
36
41
|
readData,
|
|
37
42
|
sharedMessageProps: {
|
|
38
43
|
...internalMessageProps,
|
|
39
|
-
returnAllReadData
|
|
40
|
-
threadList
|
|
44
|
+
returnAllReadData
|
|
41
45
|
}
|
|
42
46
|
}), [
|
|
47
|
+
channel,
|
|
48
|
+
channelUnreadUiState,
|
|
49
|
+
components,
|
|
50
|
+
customClasses,
|
|
43
51
|
enrichedMessages,
|
|
52
|
+
focusedMessageId,
|
|
44
53
|
internalMessageProps,
|
|
45
54
|
lastOwnMessage,
|
|
46
55
|
lastReceivedMessageId,
|
|
47
56
|
messageGroupStyles,
|
|
48
|
-
|
|
57
|
+
ownMessagesDeliveredToOthers,
|
|
49
58
|
readData,
|
|
50
59
|
renderMessages,
|
|
51
|
-
returnAllReadData
|
|
52
|
-
threadList
|
|
60
|
+
returnAllReadData
|
|
53
61
|
]);
|
|
54
62
|
};
|
|
55
63
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMessageListElements.mjs","names":[],"sources":["../../../../../../src/components/MessageList/hooks/MessageList/useMessageListElements.tsx"],"sourcesContent":["import type React from 'react';\nimport { useMemo } from 'react';\n\nimport { useLastReadData } from '../useLastReadData';\nimport type { GroupStyle, RenderedMessage } from '../../utils';\nimport { getLastReceived } from '../../utils';\n\nimport { useChatContext } from '../../../../context/ChatContext';\nimport { useComponentContext } from '../../../../context/ComponentContext';\n\nimport type { LocalMessage } from 'stream-chat';\nimport type {
|
|
1
|
+
{"version":3,"file":"useMessageListElements.mjs","names":[],"sources":["../../../../../../src/components/MessageList/hooks/MessageList/useMessageListElements.tsx"],"sourcesContent":["import type React from 'react';\nimport { useMemo } from 'react';\n\nimport { useLastReadData } from '../useLastReadData';\nimport type { GroupStyle, RenderedMessage } from '../../utils';\nimport { getLastReceived } from '../../utils';\n\nimport { useChatContext } from '../../../../context/ChatContext';\nimport { useComponentContext } from '../../../../context/ComponentContext';\n\nimport type { LocalMessage, UnreadSnapshotState } from 'stream-chat';\nimport type { MessageRenderer, SharedMessageProps } from '../../renderMessages';\nimport { useChannel } from '../../../../context';\nimport { useLastDeliveredData } from '../useLastDeliveredData';\nimport { useStateStore } from '../../../../store';\n\ntype UseMessageListElementsProps = {\n messages: LocalMessage[];\n enrichedMessages: RenderedMessage[];\n focusedMessageId?: string | null;\n internalMessageProps: SharedMessageProps;\n messageGroupStyles: Record<string, GroupStyle>;\n renderMessages: MessageRenderer;\n returnAllReadData: boolean;\n lastOwnMessage?: LocalMessage;\n};\n\nconst unreadStateSnapshotSelector = (state: UnreadSnapshotState) => state;\n\nexport const useMessageListElements = (props: UseMessageListElementsProps) => {\n const {\n enrichedMessages,\n focusedMessageId,\n internalMessageProps,\n lastOwnMessage,\n messageGroupStyles,\n messages,\n renderMessages,\n returnAllReadData,\n } = props;\n\n const { customClasses } = useChatContext();\n const channel = useChannel();\n const components = useComponentContext();\n const channelUnreadUiState = useStateStore(\n channel.messagePaginator.unreadStateSnapshot,\n unreadStateSnapshotSelector,\n );\n // get the readData, but only for messages submitted by the user themselves\n const readData = useLastReadData({\n channel,\n lastOwnMessage,\n messages,\n returnAllReadData,\n });\n\n const ownMessagesDeliveredToOthers = useLastDeliveredData({\n channel,\n lastOwnMessage,\n messages,\n returnAllReadData,\n });\n\n const lastReceivedMessageId = useMemo(\n () => getLastReceived(enrichedMessages),\n [enrichedMessages],\n );\n\n const elements: React.ReactNode[] = useMemo(\n () =>\n renderMessages({\n channel,\n channelUnreadUiState,\n components,\n customClasses,\n focusedMessageId,\n lastOwnMessage,\n lastReceivedMessageId,\n messageGroupStyles,\n messages: enrichedMessages,\n ownMessagesDeliveredToOthers,\n readData,\n sharedMessageProps: { ...internalMessageProps, returnAllReadData },\n }),\n [\n channel,\n channelUnreadUiState,\n components,\n customClasses,\n enrichedMessages,\n focusedMessageId,\n internalMessageProps,\n lastOwnMessage,\n lastReceivedMessageId,\n messageGroupStyles,\n ownMessagesDeliveredToOthers,\n readData,\n renderMessages,\n returnAllReadData,\n ],\n );\n\n return elements;\n};\n"],"mappings":";;;;;;;;;AA2BA,IAAM,+BAA+B,UAA+B;AAEpE,IAAa,0BAA0B,UAAuC;CAC5E,MAAM,EACJ,kBACA,kBACA,sBACA,gBACA,oBACA,UACA,gBACA,sBACE;CAEJ,MAAM,EAAE,kBAAkB,eAAe;CACzC,MAAM,UAAU,WAAW;CAC3B,MAAM,aAAa,oBAAoB;CACvC,MAAM,uBAAuB,cAC3B,QAAQ,iBAAiB,qBACzB,2BACF;CAEA,MAAM,WAAW,gBAAgB;EAC/B;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,+BAA+B,qBAAqB;EACxD;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,wBAAwB,cACtB,gBAAgB,gBAAgB,GACtC,CAAC,gBAAgB,CACnB;CAoCA,OAlCoC,cAEhC,eAAe;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA,oBAAoB;GAAE,GAAG;GAAsB;EAAkB;CACnE,CAAC,GACH;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAGK;AACT"}
|
|
@@ -18,8 +18,8 @@ var messageIdsMatchAsSuffix = (prevMessages, newMessages) => prevMessages.every(
|
|
|
18
18
|
* are not comparable as a single contiguous list.
|
|
19
19
|
*/
|
|
20
20
|
function useMessageListScrollManager(params) {
|
|
21
|
-
const { captureAnchor, disableScrollManagement = false, justReachedLatestMessageSet = false, loadingMore = false, loadMoreScrollThreshold, onScrollBy, onScrollToTop, restoreAnchor, scrollContainerMeasures, scrolledUpThreshold, scrollToBottom, showNewMessages } = params;
|
|
22
|
-
const { client } = useChatContext(
|
|
21
|
+
const { captureAnchor, disableScrollManagement = false, justReachedLatestMessageSet = false, loadingMore = false, loadMoreScrollThreshold, onScrollBy, onScrollToTop, restoreAnchor, scrollContainerMeasures, scrolledUpThreshold, scrollToBottom, showNewMessages, suppressAutoscroll = false } = params;
|
|
22
|
+
const { client } = useChatContext();
|
|
23
23
|
const measures = useRef({
|
|
24
24
|
offsetHeight: 0,
|
|
25
25
|
scrollHeight: 0,
|
|
@@ -94,7 +94,8 @@ function useMessageListScrollManager(params) {
|
|
|
94
94
|
previousLoadingMoreRef.current = loadingMore;
|
|
95
95
|
return;
|
|
96
96
|
}
|
|
97
|
-
|
|
97
|
+
const lastMessageIsFromCurrentUser = lastNewMessage.user?.id === client.userID;
|
|
98
|
+
if (!suppressAutoscroll && (lastMessageIsFromCurrentUser || wasAtBottom)) scrollToBottom();
|
|
98
99
|
else showNewMessages();
|
|
99
100
|
} else olderPaginationState.current = {
|
|
100
101
|
anchor: null,
|
|
@@ -121,7 +122,8 @@ function useMessageListScrollManager(params) {
|
|
|
121
122
|
messages,
|
|
122
123
|
params.messages,
|
|
123
124
|
restoreAnchor,
|
|
124
|
-
scrollContainerMeasures
|
|
125
|
+
scrollContainerMeasures,
|
|
126
|
+
suppressAutoscroll
|
|
125
127
|
]);
|
|
126
128
|
return (scrollTopValue, getLatestAnchor = null) => {
|
|
127
129
|
scrollTop.current = scrollTopValue;
|