stream-chat-react 12.15.0 → 13.0.0-rc.2
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/components/AIStateIndicator/AIStateIndicator.d.ts +4 -5
- package/dist/components/AIStateIndicator/hooks/useAIState.d.ts +2 -3
- package/dist/components/Attachment/Attachment.d.ts +8 -9
- package/dist/components/Attachment/Attachment.js +6 -5
- package/dist/components/Attachment/AttachmentActions.d.ts +2 -3
- package/dist/components/Attachment/AttachmentContainer.d.ts +15 -15
- package/dist/components/Attachment/AttachmentContainer.js +2 -2
- package/dist/components/Attachment/Audio.d.ts +3 -4
- package/dist/components/Attachment/Card.d.ts +1 -1
- package/dist/components/Attachment/FileAttachment.d.ts +3 -4
- package/dist/components/Attachment/FileAttachment.js +1 -1
- package/dist/components/Attachment/UnsupportedAttachment.d.ts +3 -4
- package/dist/components/Attachment/UnsupportedAttachment.js +1 -1
- package/dist/components/Attachment/VoiceRecording.d.ts +4 -5
- package/dist/components/Attachment/components/FileSizeIndicator.d.ts +1 -1
- package/dist/components/Attachment/components/FileSizeIndicator.js +4 -2
- package/dist/components/Attachment/utils.d.ts +8 -22
- package/dist/components/Attachment/utils.js +3 -18
- package/dist/components/Avatar/Avatar.d.ts +3 -4
- package/dist/components/Avatar/ChannelAvatar.d.ts +3 -4
- package/dist/components/Avatar/ChannelAvatar.js +1 -1
- package/dist/components/Avatar/GroupAvatar.d.ts +2 -2
- package/dist/components/Channel/Channel.d.ts +18 -43
- package/dist/components/Channel/Channel.js +25 -88
- package/dist/components/Channel/channelState.d.ts +17 -18
- package/dist/components/Channel/hooks/useChannelContainerClasses.d.ts +2 -3
- package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts +2 -3
- package/dist/components/Channel/hooks/useCreateChannelStateContext.js +1 -15
- package/dist/components/Channel/hooks/useCreateTypingContext.d.ts +1 -2
- package/dist/components/Channel/hooks/useEditMessageHandler.d.ts +3 -4
- package/dist/components/Channel/hooks/useMentionsHandlers.d.ts +3 -4
- package/dist/components/Channel/utils.d.ts +8 -6
- package/dist/components/Channel/utils.js +1 -0
- package/dist/components/ChannelHeader/ChannelHeader.d.ts +2 -3
- package/dist/components/ChannelList/ChannelList.d.ts +31 -30
- package/dist/components/ChannelList/ChannelList.js +8 -10
- package/dist/components/ChannelList/ChannelListMessenger.d.ts +6 -6
- package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts +1 -2
- package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts +1 -2
- package/dist/components/ChannelList/hooks/useChannelListShape.d.ts +44 -44
- package/dist/components/ChannelList/hooks/useChannelListShape.js +0 -2
- package/dist/components/ChannelList/hooks/useChannelMembershipState.d.ts +3 -3
- package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts +1 -2
- package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts +1 -2
- package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts +1 -2
- package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts +1 -2
- package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts +1 -2
- package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts +1 -2
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts +1 -2
- package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts +1 -2
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts +7 -8
- package/dist/components/ChannelList/hooks/usePaginatedChannels.js +3 -3
- package/dist/components/ChannelList/hooks/useSelectedChannelState.d.ts +7 -7
- package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts +1 -2
- package/dist/components/ChannelList/utils.d.ts +20 -21
- package/dist/components/ChannelList/utils.js +2 -2
- package/dist/components/ChannelPreview/ChannelPreview.d.ts +15 -16
- package/dist/components/ChannelPreview/ChannelPreview.js +1 -1
- package/dist/components/ChannelPreview/ChannelPreviewActionButtons.d.ts +4 -4
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts +1 -2
- package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts +3 -4
- package/dist/components/ChannelPreview/hooks/useIsChannelMuted.d.ts +1 -2
- package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.d.ts +5 -7
- package/dist/components/ChannelPreview/icons.d.ts +1 -1
- package/dist/components/ChannelPreview/utils.d.ts +7 -7
- package/dist/components/ChannelSearch/ChannelSearch.d.ts +5 -6
- package/dist/components/ChannelSearch/ChannelSearch.js +2 -2
- package/dist/components/ChannelSearch/SearchBar.d.ts +1 -1
- package/dist/components/ChannelSearch/SearchBar.js +1 -1
- package/dist/components/ChannelSearch/SearchResults.d.ts +13 -14
- package/dist/components/ChannelSearch/SearchResults.js +1 -1
- package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts +17 -18
- package/dist/components/ChannelSearch/hooks/useChannelSearch.js +2 -6
- package/dist/components/ChannelSearch/utils.d.ts +2 -3
- package/dist/components/Chat/Chat.d.ts +9 -9
- package/dist/components/Chat/hooks/useChannelsQueryState.d.ts +1 -1
- package/dist/components/Chat/hooks/useChat.d.ts +10 -10
- package/dist/components/Chat/hooks/useChat.js +3 -3
- package/dist/components/Chat/hooks/useCreateChatClient.d.ts +4 -4
- package/dist/components/Chat/hooks/useCreateChatContext.d.ts +1 -2
- package/dist/components/Dialog/DialogAnchor.d.ts +4 -3
- package/dist/components/Dialog/DialogAnchor.js +2 -2
- package/dist/components/Dialog/DialogMenu.d.ts +2 -1
- package/dist/components/Dialog/DialogPortal.d.ts +2 -1
- package/dist/components/Dialog/FormDialog.d.ts +2 -1
- package/dist/components/Dialog/FormDialog.js +1 -1
- package/dist/components/Dialog/PromptDialog.d.ts +2 -1
- package/dist/components/DragAndDrop/DragAndDropContainer.d.ts +2 -1
- package/dist/components/EventComponent/EventComponent.d.ts +7 -6
- package/dist/components/Form/FieldError.d.ts +2 -1
- package/dist/components/Form/SwitchField.d.ts +2 -1
- package/dist/components/Form/SwitchField.js +1 -1
- package/dist/components/Gallery/Gallery.d.ts +5 -5
- package/dist/components/Gallery/Image.d.ts +6 -5
- package/dist/components/Gallery/ModalGallery.d.ts +3 -4
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts +2 -1
- package/dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.d.ts +2 -1
- package/dist/components/LoadMore/LoadMoreButton.d.ts +2 -1
- package/dist/components/LoadMore/LoadMorePaginator.d.ts +3 -2
- package/dist/components/LoadMore/LoadMorePaginator.js +1 -1
- package/dist/components/MediaRecorder/AudioRecorder/AudioRecorder.js +3 -2
- package/dist/components/MediaRecorder/AudioRecorder/AudioRecordingInProgress.js +1 -1
- package/dist/components/MediaRecorder/RecordingPermissionDeniedNotification.d.ts +1 -1
- package/dist/components/MediaRecorder/classes/MediaRecorderController.d.ts +11 -23
- package/dist/components/MediaRecorder/hooks/useMediaRecorder.d.ts +8 -8
- package/dist/components/MediaRecorder/hooks/useMediaRecorder.js +6 -4
- package/dist/components/MediaRecorder/observable/BehaviorSubject.d.ts +2 -2
- package/dist/components/MediaRecorder/observable/Observable.d.ts +1 -1
- package/dist/components/MediaRecorder/observable/Subject.d.ts +3 -2
- package/dist/components/Message/FixedHeightMessage.d.ts +4 -5
- package/dist/components/Message/Message.d.ts +1 -2
- package/dist/components/Message/MessageDeleted.d.ts +4 -5
- package/dist/components/Message/MessageEditedTimestamp.d.ts +2 -3
- package/dist/components/Message/MessageErrorText.d.ts +4 -5
- package/dist/components/Message/MessageErrorText.js +2 -2
- package/dist/components/Message/MessageOptions.d.ts +3 -3
- package/dist/components/Message/MessageRepliesCountButton.d.ts +2 -1
- package/dist/components/Message/MessageSimple.d.ts +1 -2
- package/dist/components/Message/MessageSimple.js +8 -10
- package/dist/components/Message/MessageStatus.d.ts +3 -4
- package/dist/components/Message/MessageText.d.ts +6 -6
- package/dist/components/Message/MessageTimestamp.d.ts +4 -5
- package/dist/components/Message/QuotedMessage.d.ts +2 -3
- package/dist/components/Message/QuotedMessage.js +1 -1
- package/dist/components/Message/StreamedMessageText.d.ts +3 -4
- package/dist/components/Message/hooks/useActionHandler.d.ts +2 -3
- package/dist/components/Message/hooks/useActionHandler.js +1 -1
- package/dist/components/Message/hooks/useDeleteHandler.d.ts +4 -5
- package/dist/components/Message/hooks/useFlagHandler.d.ts +5 -6
- package/dist/components/Message/hooks/useMarkUnreadHandler.d.ts +5 -6
- package/dist/components/Message/hooks/useMentionsHandler.d.ts +6 -8
- package/dist/components/Message/hooks/useMessageTextStreaming.d.ts +2 -3
- package/dist/components/Message/hooks/useMuteHandler.d.ts +5 -7
- package/dist/components/Message/hooks/useMuteHandler.js +1 -1
- package/dist/components/Message/hooks/useOpenThreadHandler.d.ts +2 -3
- package/dist/components/Message/hooks/usePinHandler.d.ts +4 -5
- package/dist/components/Message/hooks/usePinHandler.js +1 -1
- package/dist/components/Message/hooks/useReactionHandler.d.ts +3 -4
- package/dist/components/Message/hooks/useReactionHandler.js +2 -4
- package/dist/components/Message/hooks/useReactionsFetcher.d.ts +5 -7
- package/dist/components/Message/hooks/useRetryHandler.d.ts +2 -3
- package/dist/components/Message/hooks/useRetryHandler.js +1 -1
- package/dist/components/Message/hooks/useUserHandler.d.ts +5 -6
- package/dist/components/Message/hooks/useUserRole.d.ts +2 -3
- package/dist/components/Message/hooks/useUserRole.js +1 -1
- package/dist/components/Message/icons.d.ts +2 -2
- package/dist/components/Message/icons.js +1 -1
- package/dist/components/Message/renderText/componentRenderers/Anchor.d.ts +2 -1
- package/dist/components/Message/renderText/componentRenderers/Emoji.d.ts +1 -1
- package/dist/components/Message/renderText/componentRenderers/Mention.d.ts +5 -5
- package/dist/components/Message/renderText/componentRenderers/Mention.js +1 -1
- package/dist/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.d.ts +1 -2
- package/dist/components/Message/renderText/renderText.d.ts +6 -6
- package/dist/components/Message/renderText/types.d.ts +1 -1
- package/dist/components/Message/types.d.ts +27 -28
- package/dist/components/Message/utils.d.ts +21 -22
- package/dist/components/Message/utils.js +5 -4
- package/dist/components/MessageActions/CustomMessageActionsList.d.ts +6 -7
- package/dist/components/MessageActions/MessageActions.d.ts +6 -5
- package/dist/components/MessageActions/MessageActions.js +1 -1
- package/dist/components/MessageActions/MessageActionsBox.d.ts +5 -5
- package/dist/components/MessageActions/MessageActionsBox.js +4 -3
- package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts +1 -1
- package/dist/components/MessageBounce/MessageBounceModal.d.ts +4 -3
- package/dist/components/MessageBounce/MessageBouncePrompt.d.ts +1 -2
- package/dist/components/MessageInput/AttachmentPreviewList/AttachmentPreviewList.d.ts +11 -11
- package/dist/components/MessageInput/AttachmentPreviewList/AttachmentPreviewList.js +17 -14
- package/dist/components/MessageInput/AttachmentPreviewList/FileAttachmentPreview.d.ts +4 -12
- package/dist/components/MessageInput/AttachmentPreviewList/FileAttachmentPreview.js +8 -5
- package/dist/components/MessageInput/AttachmentPreviewList/ImageAttachmentPreview.d.ts +4 -5
- package/dist/components/MessageInput/AttachmentPreviewList/ImageAttachmentPreview.js +2 -2
- package/dist/components/MessageInput/AttachmentPreviewList/UnsupportedAttachmentPreview.d.ts +7 -5
- package/dist/components/MessageInput/AttachmentPreviewList/UnsupportedAttachmentPreview.js +5 -2
- package/dist/components/MessageInput/AttachmentPreviewList/VoiceRecordingPreview.d.ts +4 -5
- package/dist/components/MessageInput/AttachmentPreviewList/VoiceRecordingPreview.js +5 -2
- package/dist/components/MessageInput/AttachmentPreviewList/index.d.ts +1 -1
- package/dist/components/MessageInput/AttachmentPreviewList/types.d.ts +3 -4
- package/dist/components/MessageInput/AttachmentSelector.d.ts +1 -2
- package/dist/components/MessageInput/AttachmentSelector.js +5 -3
- package/dist/components/MessageInput/EditMessageForm.d.ts +3 -2
- package/dist/components/MessageInput/EditMessageForm.js +30 -6
- package/dist/components/MessageInput/LinkPreviewList.d.ts +6 -4
- package/dist/components/MessageInput/LinkPreviewList.js +24 -10
- package/dist/components/MessageInput/MessageInput.d.ts +23 -45
- package/dist/components/MessageInput/MessageInput.js +24 -17
- package/dist/components/MessageInput/MessageInputFlat.d.ts +1 -2
- package/dist/components/MessageInput/MessageInputFlat.js +14 -39
- package/dist/components/MessageInput/QuotedMessagePreview.d.ts +4 -7
- package/dist/components/MessageInput/QuotedMessagePreview.js +22 -16
- package/dist/components/MessageInput/SendButton.d.ts +4 -5
- package/dist/components/MessageInput/SendButton.js +6 -2
- package/dist/components/MessageInput/WithDragAndDropUpload.d.ts +4 -3
- package/dist/components/MessageInput/WithDragAndDropUpload.js +20 -9
- package/dist/components/MessageInput/hooks/index.d.ts +5 -1
- package/dist/components/MessageInput/hooks/index.js +5 -1
- package/dist/components/MessageInput/hooks/useAttachmentManagerState.d.ts +10 -0
- package/dist/components/MessageInput/hooks/useAttachmentManagerState.js +19 -0
- package/dist/components/MessageInput/hooks/useCanCreatePoll.d.ts +1 -0
- package/dist/components/MessageInput/hooks/useCanCreatePoll.js +10 -0
- package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts +2 -3
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts +1 -2
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +1 -55
- package/dist/components/MessageInput/hooks/useMessageComposer.d.ts +2 -0
- package/dist/components/MessageInput/hooks/useMessageComposer.js +80 -0
- package/dist/components/MessageInput/hooks/useMessageComposerHasSendableData.d.ts +1 -0
- package/dist/components/MessageInput/hooks/useMessageComposerHasSendableData.js +8 -0
- package/dist/components/MessageInput/hooks/useMessageInputControls.d.ts +12 -0
- package/dist/components/MessageInput/hooks/useMessageInputControls.js +23 -0
- package/dist/components/MessageInput/hooks/useMessageInputText.d.ts +1 -5
- package/dist/components/MessageInput/hooks/useMessageInputText.js +19 -53
- package/dist/components/MessageInput/hooks/usePasteHandler.d.ts +1 -3
- package/dist/components/MessageInput/hooks/usePasteHandler.js +6 -8
- package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts +2 -6
- package/dist/components/MessageInput/hooks/useSubmitHandler.js +30 -98
- package/dist/components/MessageInput/hooks/utils.d.ts +0 -27
- package/dist/components/MessageInput/hooks/utils.js +0 -124
- package/dist/components/MessageInput/index.d.ts +0 -2
- package/dist/components/MessageInput/index.js +0 -2
- package/dist/components/MessageList/ConnectionStatus.d.ts +1 -2
- package/dist/components/MessageList/ConnectionStatus.js +1 -1
- package/dist/components/MessageList/CustomNotification.d.ts +2 -1
- package/dist/components/MessageList/GiphyPreviewMessage.d.ts +4 -5
- package/dist/components/MessageList/MessageList.d.ts +11 -12
- package/dist/components/MessageList/MessageList.js +4 -4
- package/dist/components/MessageList/MessageNotification.d.ts +2 -1
- package/dist/components/MessageList/VirtualizedMessageList.d.ts +22 -21
- package/dist/components/MessageList/VirtualizedMessageList.js +6 -6
- package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts +10 -10
- package/dist/components/MessageList/VirtualizedMessageListComponents.js +7 -7
- package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts +8 -10
- package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.js +1 -1
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +11 -12
- package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts +4 -5
- package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts +5 -6
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts +4 -5
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js +3 -2
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.d.ts +4 -5
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.js +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.d.ts +2 -3
- package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts +2 -3
- package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js +6 -2
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts +4 -5
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.d.ts +2 -3
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts +3 -4
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.js +5 -6
- package/dist/components/MessageList/hooks/useLastReadData.d.ts +5 -6
- package/dist/components/MessageList/hooks/useLastReadData.js +5 -1
- package/dist/components/MessageList/hooks/useMarkRead.d.ts +1 -2
- package/dist/components/MessageList/renderMessages.d.ts +14 -14
- package/dist/components/MessageList/renderMessages.js +8 -7
- package/dist/components/MessageList/utils.d.ts +34 -28
- package/dist/components/MessageList/utils.js +26 -21
- package/dist/components/Modal/Modal.d.ts +2 -1
- package/dist/components/Poll/Poll.d.ts +2 -3
- package/dist/components/Poll/Poll.js +1 -1
- package/dist/components/Poll/PollActions/AddCommentForm.d.ts +1 -2
- package/dist/components/Poll/PollActions/AddCommentForm.js +4 -2
- package/dist/components/Poll/PollActions/EndPollDialog.d.ts +1 -2
- package/dist/components/Poll/PollActions/EndPollDialog.js +1 -1
- package/dist/components/Poll/PollActions/PollAction.d.ts +2 -1
- package/dist/components/Poll/PollActions/PollActions.d.ts +7 -8
- package/dist/components/Poll/PollActions/PollActions.js +5 -5
- package/dist/components/Poll/PollActions/PollAnswerList.d.ts +1 -2
- package/dist/components/Poll/PollActions/PollOptionsFullList.d.ts +1 -2
- package/dist/components/Poll/PollActions/PollOptionsFullList.js +4 -2
- package/dist/components/Poll/PollActions/PollResults/PollOptionVotesList.d.ts +3 -4
- package/dist/components/Poll/PollActions/PollResults/PollOptionVotesList.js +1 -1
- package/dist/components/Poll/PollActions/PollResults/PollOptionWithLatestVotes.d.ts +3 -4
- package/dist/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.d.ts +4 -5
- package/dist/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.js +1 -1
- package/dist/components/Poll/PollActions/PollResults/PollResults.d.ts +1 -2
- package/dist/components/Poll/PollActions/PollResults/PollResults.js +1 -1
- package/dist/components/Poll/PollActions/SuggestPollOptionForm.d.ts +1 -2
- package/dist/components/Poll/PollActions/SuggestPollOptionForm.js +3 -1
- package/dist/components/Poll/PollContent.d.ts +1 -2
- package/dist/components/Poll/PollCreationDialog/MultipleAnswersField.d.ts +2 -0
- package/dist/components/Poll/PollCreationDialog/MultipleAnswersField.js +35 -0
- package/dist/components/Poll/PollCreationDialog/NameField.d.ts +2 -0
- package/dist/components/Poll/PollCreationDialog/NameField.js +26 -0
- package/dist/components/Poll/PollCreationDialog/OptionFieldSet.d.ts +1 -8
- package/dist/components/Poll/PollCreationDialog/OptionFieldSet.js +33 -65
- package/dist/components/Poll/PollCreationDialog/PollCreationDialog.js +31 -85
- package/dist/components/Poll/PollCreationDialog/PollCreationDialogControls.d.ts +1 -4
- package/dist/components/Poll/PollCreationDialog/PollCreationDialogControls.js +15 -41
- package/dist/components/Poll/PollCreationDialog/types.d.ts +0 -14
- package/dist/components/Poll/PollHeader.d.ts +1 -2
- package/dist/components/Poll/PollOptionList.d.ts +1 -2
- package/dist/components/Poll/PollOptionList.js +4 -2
- package/dist/components/Poll/PollOptionSelector.d.ts +3 -4
- package/dist/components/Poll/PollVote.d.ts +6 -7
- package/dist/components/Poll/PollVote.js +3 -3
- package/dist/components/Poll/QuotedPoll.d.ts +1 -2
- package/dist/components/Poll/constants.d.ts +0 -1
- package/dist/components/Poll/constants.js +0 -1
- package/dist/components/Poll/hooks/useManagePollVotesRealtime.d.ts +2 -3
- package/dist/components/Poll/hooks/usePollAnswerPagination.d.ts +2 -3
- package/dist/components/Poll/hooks/usePollAnswerPagination.js +2 -2
- package/dist/components/Poll/hooks/usePollOptionVotesPagination.d.ts +2 -3
- package/dist/components/Poll/hooks/usePollOptionVotesPagination.js +1 -1
- package/dist/components/Portal/Portal.d.ts +1 -1
- package/dist/components/ReactFileUtilities/FileIcon/FileIcon.d.ts +1 -1
- package/dist/components/ReactFileUtilities/FileIcon/FileIconSet.d.ts +2 -1
- package/dist/components/ReactFileUtilities/FileIcon/iconMap.d.ts +1 -1
- package/dist/components/ReactFileUtilities/UploadButton.d.ts +3 -2
- package/dist/components/ReactFileUtilities/UploadButton.js +16 -6
- package/dist/components/ReactFileUtilities/index.d.ts +0 -1
- package/dist/components/ReactFileUtilities/index.js +0 -1
- package/dist/components/ReactFileUtilities/utils.d.ts +2 -2
- package/dist/components/Reactions/ReactionSelector.d.ts +4 -5
- package/dist/components/Reactions/ReactionSelectorWithButton.d.ts +1 -2
- package/dist/components/Reactions/ReactionsList.d.ts +6 -7
- package/dist/components/Reactions/ReactionsList.js +2 -2
- package/dist/components/Reactions/ReactionsListModal.d.ts +9 -10
- package/dist/components/Reactions/SimpleReactionsList.d.ts +5 -6
- package/dist/components/Reactions/StreamEmoji.d.ts +1 -1
- package/dist/components/Reactions/hooks/useFetchReactions.d.ts +9 -10
- package/dist/components/Reactions/hooks/useProcessReactions.d.ts +1 -2
- package/dist/components/Reactions/types.d.ts +3 -4
- package/dist/components/Reactions/utils/utils.d.ts +1 -1
- package/dist/components/SafeAnchor/SafeAnchor.d.ts +2 -1
- package/dist/components/TextareaComposer/SuggestionList/CommandItem.d.ts +7 -0
- package/dist/components/{CommandItem → TextareaComposer/SuggestionList}/CommandItem.js +1 -2
- package/dist/components/{EmoticonItem → TextareaComposer/SuggestionList}/EmoticonItem.d.ts +7 -7
- package/dist/components/TextareaComposer/SuggestionList/EmoticonItem.js +12 -0
- package/dist/components/TextareaComposer/SuggestionList/SuggestionList.d.ts +14 -0
- package/dist/components/TextareaComposer/SuggestionList/SuggestionList.js +50 -0
- package/dist/components/TextareaComposer/SuggestionList/SuggestionListItem.d.ts +18 -0
- package/dist/components/TextareaComposer/SuggestionList/SuggestionListItem.js +24 -0
- package/dist/components/{UserItem → TextareaComposer/SuggestionList}/UserItem.d.ts +7 -4
- package/dist/components/TextareaComposer/SuggestionList/UserItem.js +24 -0
- package/dist/components/TextareaComposer/SuggestionList/index.d.ts +5 -0
- package/dist/components/TextareaComposer/SuggestionList/index.js +5 -0
- package/dist/components/TextareaComposer/TextareaComposer.d.ts +13 -0
- package/dist/components/TextareaComposer/TextareaComposer.js +155 -0
- package/dist/components/TextareaComposer/index.d.ts +2 -0
- package/dist/components/TextareaComposer/index.js +2 -0
- package/dist/components/Thread/Thread.d.ts +13 -10
- package/dist/components/Thread/Thread.js +23 -12
- package/dist/components/Thread/ThreadHead.d.ts +2 -3
- package/dist/components/Thread/ThreadHeader.d.ts +5 -6
- package/dist/components/Thread/ThreadHeader.js +1 -1
- package/dist/components/Threads/ThreadContext.d.ts +2 -2
- package/dist/components/Threads/ThreadContext.js +1 -4
- package/dist/components/Threads/ThreadList/ThreadList.d.ts +1 -1
- package/dist/components/Threads/ThreadList/ThreadListItem.d.ts +1 -1
- package/dist/components/Threads/hooks/useThreadManagerState.d.ts +1 -1
- package/dist/components/Threads/hooks/useThreadState.d.ts +1 -1
- package/dist/components/Threads/icons.d.ts +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +3 -2
- package/dist/components/Tooltip/hooks/useEnterLeaveHandlers.d.ts +1 -1
- package/dist/components/TypingIndicator/TypingIndicator.d.ts +1 -2
- package/dist/components/Window/Window.d.ts +6 -6
- package/dist/components/index.d.ts +1 -5
- package/dist/components/index.js +1 -5
- package/dist/context/AttachmentSelectorContext.d.ts +2 -1
- package/dist/context/ChannelActionContext.d.ts +26 -35
- package/dist/context/ChannelListContext.d.ts +9 -9
- package/dist/context/ChannelListContext.js +1 -1
- package/dist/context/ChannelStateContext.d.ts +24 -34
- package/dist/context/ChatContext.d.ts +18 -17
- package/dist/context/ComponentContext.d.ts +39 -37
- package/dist/context/DialogManagerContext.d.ts +2 -1
- package/dist/context/MessageBounceContext.d.ts +8 -7
- package/dist/context/MessageBounceContext.js +1 -1
- package/dist/context/MessageContext.d.ts +23 -23
- package/dist/context/MessageInputContext.d.ts +8 -26
- package/dist/context/MessageListContext.d.ts +2 -1
- package/dist/context/PollContext.d.ts +8 -8
- package/dist/context/TranslationContext.d.ts +2 -1
- package/dist/context/TypingContext.d.ts +11 -10
- package/dist/context/VirtualizedMessageListContext.d.ts +2 -1
- package/dist/context/WithComponents.d.ts +3 -2
- package/dist/css/v2/index.css +1 -1
- package/dist/css/v2/index.layout.css +1 -1
- package/dist/experimental/MessageActions/MessageActions.d.ts +1 -1
- package/dist/experimental/MessageActions/MessageActions.js +1 -1
- package/dist/experimental/MessageActions/defaults.js +4 -3
- package/dist/experimental/Search/Search.d.ts +1 -2
- package/dist/experimental/Search/SearchContext.d.ts +8 -8
- package/dist/experimental/Search/SearchResults/SearchResultItem.d.ts +11 -11
- package/dist/experimental/Search/SearchResults/SearchResultItem.js +3 -3
- package/dist/experimental/Search/SearchResults/SearchResults.d.ts +1 -2
- package/dist/experimental/Search/SearchResults/SearchResultsHeader.d.ts +1 -2
- package/dist/experimental/Search/SearchResults/SearchResultsHeader.js +1 -1
- package/dist/experimental/Search/SearchResults/SearchSourceResultList.d.ts +2 -3
- package/dist/experimental/Search/SearchResults/SearchSourceResultListFooter.d.ts +1 -2
- package/dist/experimental/Search/SearchResults/SearchSourceResults.d.ts +1 -2
- package/dist/experimental/Search/SearchResults/SearchSourceResults.js +1 -1
- package/dist/experimental/Search/SearchSourceResultsContext.d.ts +2 -1
- package/dist/experimental/Search/hooks/useSearchFocusedMessage.d.ts +1 -2
- package/dist/experimental/Search/hooks/useSearchFocusedMessage.js +3 -1
- package/dist/experimental/Search/hooks/useSearchQueriesInProgress.d.ts +3 -4
- package/dist/experimental/index.browser.cjs +1139 -1075
- package/dist/experimental/index.browser.cjs.map +4 -4
- package/dist/experimental/index.node.cjs +1139 -1075
- package/dist/experimental/index.node.cjs.map +4 -4
- package/dist/i18n/Streami18n.d.ts +1 -1
- package/dist/i18n/types.d.ts +2 -2
- package/dist/i18n/utils.d.ts +1 -1
- package/dist/i18n/utils.js +3 -1
- package/dist/index.browser.cjs +28513 -30641
- package/dist/index.browser.cjs.map +4 -4
- package/dist/index.node.cjs +30740 -32877
- package/dist/index.node.cjs.map +4 -4
- package/dist/plugins/Emojis/index.browser.cjs +133 -2
- package/dist/plugins/Emojis/index.browser.cjs.map +4 -4
- package/dist/plugins/Emojis/index.d.ts +1 -0
- package/dist/plugins/Emojis/index.js +1 -0
- package/dist/plugins/Emojis/index.node.cjs +135 -3
- package/dist/plugins/Emojis/index.node.cjs.map +4 -4
- package/dist/plugins/Emojis/middleware/index.d.ts +1 -0
- package/dist/plugins/Emojis/middleware/index.js +1 -0
- package/dist/plugins/Emojis/middleware/textComposerEmojiMiddleware.d.ts +66 -0
- package/dist/plugins/Emojis/middleware/textComposerEmojiMiddleware.js +143 -0
- package/dist/plugins/encoders/mp3.browser.cjs.map +2 -2
- package/dist/plugins/encoders/mp3.node.cjs.map +2 -2
- package/dist/scss/v2/Autocomplete/Autocomplete-layout.scss +14 -0
- package/dist/scss/v2/Autocomplete/Autocomplete-theme.scss +11 -0
- package/dist/scss/v2/LinkPreview/LinkPreview-layout.scss +18 -0
- package/dist/scss/v2/LinkPreview/LinkPreview-theme.scss +15 -0
- package/dist/types/defaultDataInterfaces.d.ts +25 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/types.d.ts +2 -62
- package/dist/utils/getChannel.d.ts +5 -6
- package/dist/utils/mergeDeep.d.ts +2 -3
- package/package.json +5 -5
- package/dist/components/AutoCompleteTextarea/Item.d.ts +0 -2
- package/dist/components/AutoCompleteTextarea/Item.js +0 -10
- package/dist/components/AutoCompleteTextarea/List.d.ts +0 -17
- package/dist/components/AutoCompleteTextarea/List.js +0 -89
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts +0 -114
- package/dist/components/AutoCompleteTextarea/Textarea.js +0 -593
- package/dist/components/AutoCompleteTextarea/index.d.ts +0 -4
- package/dist/components/AutoCompleteTextarea/index.js +0 -4
- package/dist/components/AutoCompleteTextarea/types.d.ts +0 -15
- package/dist/components/AutoCompleteTextarea/utils.d.ts +0 -6
- package/dist/components/AutoCompleteTextarea/utils.js +0 -40
- package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts +0 -78
- package/dist/components/ChatAutoComplete/ChatAutoComplete.js +0 -33
- package/dist/components/ChatAutoComplete/index.d.ts +0 -1
- package/dist/components/ChatAutoComplete/index.js +0 -1
- package/dist/components/CommandItem/CommandItem.d.ts +0 -12
- package/dist/components/CommandItem/index.d.ts +0 -1
- package/dist/components/CommandItem/index.js +0 -1
- package/dist/components/EmoticonItem/EmoticonItem.js +0 -16
- package/dist/components/EmoticonItem/index.d.ts +0 -1
- package/dist/components/EmoticonItem/index.js +0 -1
- package/dist/components/MessageInput/DefaultTriggerProvider.d.ts +0 -35
- package/dist/components/MessageInput/DefaultTriggerProvider.js +0 -24
- package/dist/components/MessageInput/DropzoneProvider.d.ts +0 -4
- package/dist/components/MessageInput/DropzoneProvider.js +0 -23
- package/dist/components/MessageInput/hooks/useAttachments.d.ts +0 -14
- package/dist/components/MessageInput/hooks/useAttachments.js +0 -209
- package/dist/components/MessageInput/hooks/useCommandTrigger.d.ts +0 -3
- package/dist/components/MessageInput/hooks/useCommandTrigger.js +0 -62
- package/dist/components/MessageInput/hooks/useEmojiTrigger.d.ts +0 -3
- package/dist/components/MessageInput/hooks/useEmojiTrigger.js +0 -29
- package/dist/components/MessageInput/hooks/useLinkPreviews.d.ts +0 -30
- package/dist/components/MessageInput/hooks/useLinkPreviews.js +0 -109
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +0 -71
- package/dist/components/MessageInput/hooks/useMessageInputState.js +0 -200
- package/dist/components/MessageInput/hooks/useUserTrigger.d.ts +0 -12
- package/dist/components/MessageInput/hooks/useUserTrigger.js +0 -130
- package/dist/components/MessageInput/types.d.ts +0 -87
- package/dist/components/MessageInput/types.js +0 -19
- package/dist/components/ReactFileUtilities/ImageDropzone.d.ts +0 -16
- package/dist/components/ReactFileUtilities/ImageDropzone.js +0 -42
- package/dist/components/UserItem/UserItem.js +0 -26
- package/dist/components/UserItem/index.d.ts +0 -1
- package/dist/components/UserItem/index.js +0 -1
- /package/dist/components/{MessageInput → MediaRecorder/AudioRecorder}/hooks/useTimeElapsed.d.ts +0 -0
- /package/dist/components/{MessageInput → MediaRecorder/AudioRecorder}/hooks/useTimeElapsed.js +0 -0
- /package/dist/{components/AutoCompleteTextarea/types.js → types/defaultDataInterfaces.js} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
const
|
|
2
|
+
export const CommandItem = (props) => {
|
|
3
3
|
const { entity } = props;
|
|
4
4
|
return (React.createElement("div", { className: 'str-chat__slash-command' },
|
|
5
5
|
React.createElement("span", { className: 'str-chat__slash-command-header' },
|
|
@@ -9,4 +9,3 @@ const UnMemoizedCommandItem = (props) => {
|
|
|
9
9
|
React.createElement("br", null),
|
|
10
10
|
React.createElement("span", { className: 'str-chat__slash-command-description' }, entity.description)));
|
|
11
11
|
};
|
|
12
|
-
export const CommandItem = React.memo(UnMemoizedCommandItem);
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
export type EmoticonItemProps = {
|
|
3
3
|
entity: {
|
|
4
|
+
/** Name for emoticon */
|
|
5
|
+
name: string;
|
|
6
|
+
/** Native value or actual emoticon */
|
|
7
|
+
native: string;
|
|
4
8
|
/** The parts of the Name property of the entity (or id if no name) that can be matched to the user input value.
|
|
5
9
|
* Default is bold for matches, but can be overwritten in css.
|
|
6
10
|
* */
|
|
7
|
-
|
|
8
|
-
|
|
11
|
+
tokenizedDisplayName: {
|
|
12
|
+
token: string;
|
|
9
13
|
parts: string[];
|
|
10
14
|
};
|
|
11
|
-
/** Name for emoticon */
|
|
12
|
-
name: string;
|
|
13
|
-
/** Native value or actual emoticon */
|
|
14
|
-
native: string;
|
|
15
15
|
};
|
|
16
16
|
};
|
|
17
|
-
export declare const EmoticonItem: (props: EmoticonItemProps) => React.JSX.Element;
|
|
17
|
+
export declare const EmoticonItem: (props: EmoticonItemProps) => React.JSX.Element | null;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export const EmoticonItem = (props) => {
|
|
3
|
+
const { entity } = props;
|
|
4
|
+
const hasEntity = Object.keys(entity).length;
|
|
5
|
+
if (!hasEntity)
|
|
6
|
+
return null;
|
|
7
|
+
const { parts, token } = entity.tokenizedDisplayName ?? {};
|
|
8
|
+
const renderName = () => parts?.map((part, i) => part.toLowerCase() === token ? (React.createElement("span", { className: 'str-chat__emoji-item--highlight', key: `part-${i}` }, part)) : (React.createElement("span", { className: 'str-chat__emoji-item--part', key: `part-${i}` }, part))) ?? null;
|
|
9
|
+
return (React.createElement("div", { className: 'str-chat__emoji-item' },
|
|
10
|
+
React.createElement("span", { className: 'str-chat__emoji-item--entity' }, entity.native),
|
|
11
|
+
React.createElement("span", { className: 'str-chat__emoji-item--name' }, renderName())));
|
|
12
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { SuggestionListItemComponentProps } from './SuggestionListItem';
|
|
3
|
+
type SuggestionTrigger = '/' | ':' | '@' | string;
|
|
4
|
+
export type SuggestionListProps = Partial<{
|
|
5
|
+
suggestionItemComponents: Record<SuggestionTrigger, React.ComponentType<SuggestionListItemComponentProps>>;
|
|
6
|
+
className?: string;
|
|
7
|
+
closeOnClickOutside?: boolean;
|
|
8
|
+
containerClassName?: string;
|
|
9
|
+
focusedItemIndex: number;
|
|
10
|
+
setFocusedItemIndex: (index: number) => void;
|
|
11
|
+
}>;
|
|
12
|
+
export declare const defaultComponents: Record<SuggestionTrigger, React.ComponentType<SuggestionListItemComponentProps>>;
|
|
13
|
+
export declare const SuggestionList: ({ className, closeOnClickOutside, containerClassName, focusedItemIndex, setFocusedItemIndex, suggestionItemComponents, }: SuggestionListProps) => React.JSX.Element | null;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import clsx from 'clsx';
|
|
2
|
+
import React, { useEffect, useState } from 'react';
|
|
3
|
+
import { CommandItem } from './CommandItem';
|
|
4
|
+
import { EmoticonItem } from './EmoticonItem';
|
|
5
|
+
import { SuggestionListItem as DefaultSuggestionListItem } from './SuggestionListItem';
|
|
6
|
+
import { UserItem } from './UserItem';
|
|
7
|
+
import { useComponentContext } from '../../../context/ComponentContext';
|
|
8
|
+
import { useStateStore } from '../../../store';
|
|
9
|
+
import { InfiniteScrollPaginator } from '../../InfiniteScrollPaginator/InfiniteScrollPaginator';
|
|
10
|
+
import { useMessageComposer } from '../../MessageInput';
|
|
11
|
+
const textComposerStateSelector = (state) => ({
|
|
12
|
+
suggestions: state.suggestions,
|
|
13
|
+
});
|
|
14
|
+
const searchSourceStateSelector = (nextValue) => ({
|
|
15
|
+
items: nextValue.items ?? [],
|
|
16
|
+
});
|
|
17
|
+
export const defaultComponents = {
|
|
18
|
+
'/': (props) => (React.createElement(CommandItem, { entity: props.entity })),
|
|
19
|
+
':': (props) => (React.createElement(EmoticonItem, { entity: props.entity })),
|
|
20
|
+
'@': (props) => (React.createElement(UserItem, { entity: props.entity })),
|
|
21
|
+
};
|
|
22
|
+
export const SuggestionList = ({ className, closeOnClickOutside = true, containerClassName, focusedItemIndex, setFocusedItemIndex, suggestionItemComponents = defaultComponents, }) => {
|
|
23
|
+
const { AutocompleteSuggestionItem = DefaultSuggestionListItem } = useComponentContext();
|
|
24
|
+
const messageComposer = useMessageComposer();
|
|
25
|
+
const { textComposer } = messageComposer;
|
|
26
|
+
const { suggestions } = useStateStore(textComposer.state, textComposerStateSelector);
|
|
27
|
+
const { items } = useStateStore(suggestions?.searchSource.state, searchSourceStateSelector) ?? {};
|
|
28
|
+
const [container, setContainer] = useState(null);
|
|
29
|
+
const component = suggestions?.trigger
|
|
30
|
+
? suggestionItemComponents[suggestions?.trigger]
|
|
31
|
+
: undefined;
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (!closeOnClickOutside || !suggestions || !container)
|
|
34
|
+
return;
|
|
35
|
+
const handleClick = (event) => {
|
|
36
|
+
if (container.contains(event.target))
|
|
37
|
+
return;
|
|
38
|
+
textComposer.closeSuggestions();
|
|
39
|
+
};
|
|
40
|
+
document.addEventListener('click', handleClick);
|
|
41
|
+
return () => {
|
|
42
|
+
document.removeEventListener('click', handleClick);
|
|
43
|
+
};
|
|
44
|
+
}, [closeOnClickOutside, suggestions, container, textComposer]);
|
|
45
|
+
if (!suggestions || !items?.length || !component)
|
|
46
|
+
return null;
|
|
47
|
+
return (React.createElement("div", { className: clsx('str-chat__suggestion-list-container', containerClassName), ref: setContainer },
|
|
48
|
+
React.createElement(InfiniteScrollPaginator, { loadNextOnScrollToBottom: suggestions.searchSource.search, threshold: 100 },
|
|
49
|
+
React.createElement("ul", { className: clsx('str-chat__suggestion-list str-chat__suggestion-list--react', className) }, items.map((item, i) => (React.createElement(AutocompleteSuggestionItem, { component: component, focused: focusedItemIndex === i, item: item, key: item.id.toString(), onMouseEnter: () => setFocusedItemIndex?.(i) })))))));
|
|
50
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { TextComposerSuggestion } from 'stream-chat';
|
|
3
|
+
import type { UserItemProps } from './UserItem';
|
|
4
|
+
import type { CommandItemProps } from './CommandItem';
|
|
5
|
+
import type { EmoticonItemProps } from './EmoticonItem';
|
|
6
|
+
export type DefaultSuggestionListItemEntity = UserItemProps['entity'] | CommandItemProps['entity'] | EmoticonItemProps['entity'];
|
|
7
|
+
export type SuggestionListItemComponentProps = {
|
|
8
|
+
entity: DefaultSuggestionListItemEntity | unknown;
|
|
9
|
+
focused: boolean;
|
|
10
|
+
};
|
|
11
|
+
export type SuggestionItemProps = {
|
|
12
|
+
component: React.ComponentType<SuggestionListItemComponentProps>;
|
|
13
|
+
item: TextComposerSuggestion;
|
|
14
|
+
focused: boolean;
|
|
15
|
+
className?: string;
|
|
16
|
+
onMouseEnter?: () => void;
|
|
17
|
+
};
|
|
18
|
+
export declare const SuggestionListItem: React.ForwardRefExoticComponent<SuggestionItemProps & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import clsx from 'clsx';
|
|
2
|
+
import React, { useCallback, useLayoutEffect, useRef } from 'react';
|
|
3
|
+
import { useMessageComposer } from '../../MessageInput';
|
|
4
|
+
export const SuggestionListItem = React.forwardRef(function SuggestionListItem({ className, component: Component, focused, item, onMouseEnter }, innerRef) {
|
|
5
|
+
const { textComposer } = useMessageComposer();
|
|
6
|
+
const containerRef = useRef(null);
|
|
7
|
+
const handleSelect = useCallback(() => {
|
|
8
|
+
textComposer.handleSelect(item);
|
|
9
|
+
}, [item, textComposer]);
|
|
10
|
+
useLayoutEffect(() => {
|
|
11
|
+
if (!focused)
|
|
12
|
+
return;
|
|
13
|
+
containerRef.current?.scrollIntoView({ behavior: 'instant', block: 'nearest' });
|
|
14
|
+
}, [focused, containerRef]);
|
|
15
|
+
return (React.createElement("li", { className: clsx('str-chat__suggestion-list-item', className, {
|
|
16
|
+
'str-chat__suggestion-item--selected': focused,
|
|
17
|
+
}), onMouseEnter: onMouseEnter, ref: containerRef },
|
|
18
|
+
React.createElement("button", { onClick: handleSelect, onKeyDown: (event) => {
|
|
19
|
+
if (event.key === 'Enter') {
|
|
20
|
+
handleSelect();
|
|
21
|
+
}
|
|
22
|
+
}, ref: innerRef },
|
|
23
|
+
React.createElement(Component, { entity: item, focused: focused }))));
|
|
24
|
+
});
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { AvatarProps } from '
|
|
2
|
+
import type { AvatarProps } from '../../Avatar';
|
|
3
3
|
export type UserItemProps = {
|
|
4
4
|
/** The user */
|
|
5
5
|
entity: {
|
|
6
6
|
/** The parts of the Name property of the entity (or id if no name) that can be matched to the user input value.
|
|
7
7
|
* Default is bold for matches, but can be overwritten in css.
|
|
8
8
|
* */
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
tokenizedDisplayName: {
|
|
10
|
+
token: string;
|
|
11
11
|
parts: string[];
|
|
12
12
|
};
|
|
13
13
|
/** Id of the user */
|
|
@@ -20,4 +20,7 @@ export type UserItemProps = {
|
|
|
20
20
|
/** Custom UI component to display user avatar, defaults to and accepts same props as: [Avatar](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Avatar/Avatar.tsx) */
|
|
21
21
|
Avatar?: React.ComponentType<AvatarProps>;
|
|
22
22
|
};
|
|
23
|
-
|
|
23
|
+
/**
|
|
24
|
+
* UI component for mentions rendered in suggestion list
|
|
25
|
+
*/
|
|
26
|
+
export declare const UserItem: ({ Avatar, entity }: UserItemProps) => React.JSX.Element | null;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import { Avatar as DefaultAvatar } from '../../Avatar';
|
|
4
|
+
/**
|
|
5
|
+
* UI component for mentions rendered in suggestion list
|
|
6
|
+
*/
|
|
7
|
+
export const UserItem = ({ Avatar = DefaultAvatar, entity }) => {
|
|
8
|
+
const hasEntity = !!Object.keys(entity).length;
|
|
9
|
+
if (!hasEntity)
|
|
10
|
+
return null;
|
|
11
|
+
const { parts, token } = entity.tokenizedDisplayName;
|
|
12
|
+
const renderName = () => parts.map((part, i) => {
|
|
13
|
+
const matches = part.toLowerCase() === token;
|
|
14
|
+
const partWithHTMLSpacesAround = part.replace(/^\s+|\s+$/g, '\u00A0');
|
|
15
|
+
return (React.createElement("span", { className: clsx({
|
|
16
|
+
'str-chat__emoji-item--highlight': matches,
|
|
17
|
+
'str-chat__emoji-item--part': !matches,
|
|
18
|
+
}), key: `part-${i}` }, partWithHTMLSpacesAround));
|
|
19
|
+
});
|
|
20
|
+
return (React.createElement("div", { className: 'str-chat__user-item' },
|
|
21
|
+
React.createElement(Avatar, { className: 'str-chat__avatar--autocomplete-item', image: entity.image, name: entity.name || entity.id }),
|
|
22
|
+
React.createElement("span", { className: 'str-chat__user-item--name', "data-testid": 'user-item-name' }, renderName()),
|
|
23
|
+
React.createElement("div", { className: 'str-chat__user-item-at' }, "@")));
|
|
24
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { TextareaHTMLAttributes } from 'react';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
export type TextComposerProps = Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'style' | 'defaultValue' | 'disabled'> & {
|
|
4
|
+
closeSuggestionsOnClickOutside?: boolean;
|
|
5
|
+
containerClassName?: string;
|
|
6
|
+
dropdownClassName?: string;
|
|
7
|
+
grow?: boolean;
|
|
8
|
+
itemClassName?: string;
|
|
9
|
+
listClassName?: string;
|
|
10
|
+
maxRows?: number;
|
|
11
|
+
shouldSubmit?: (event: React.KeyboardEvent<HTMLTextAreaElement>) => boolean;
|
|
12
|
+
};
|
|
13
|
+
export declare const TextareaComposer: ({ className, closeSuggestionsOnClickOutside, containerClassName, grow: growProp, listClassName, maxRows: maxRowsProp, onBlur, onChange, onKeyDown, onScroll, placeholder: placeholderProp, shouldSubmit: shouldSubmitProp, ...restProps }: TextComposerProps) => React.JSX.Element;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import clsx from 'clsx';
|
|
2
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
|
+
import Textarea from 'react-textarea-autosize';
|
|
4
|
+
import { useMessageComposer } from '../MessageInput';
|
|
5
|
+
import { useComponentContext, useMessageInputContext, useTranslationContext, } from '../../context';
|
|
6
|
+
import { useStateStore } from '../../store';
|
|
7
|
+
import { SuggestionList as DefaultSuggestionList } from './SuggestionList';
|
|
8
|
+
const textComposerStateSelector = (state) => ({
|
|
9
|
+
selection: state.selection,
|
|
10
|
+
suggestions: state.suggestions,
|
|
11
|
+
text: state.text,
|
|
12
|
+
});
|
|
13
|
+
const searchSourceStateSelector = (state) => ({
|
|
14
|
+
isLoadingItems: state.isLoading,
|
|
15
|
+
items: state.items,
|
|
16
|
+
});
|
|
17
|
+
const configStateSelector = (state) => ({
|
|
18
|
+
enabled: state.text.enabled,
|
|
19
|
+
});
|
|
20
|
+
/**
|
|
21
|
+
* isComposing prevents double submissions in Korean and other languages.
|
|
22
|
+
* starting point for a read:
|
|
23
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/isComposing
|
|
24
|
+
* In the long term, the fix should happen by handling keypress, but changing this has unknown implications.
|
|
25
|
+
*/
|
|
26
|
+
const defaultShouldSubmit = (event) => event.key === 'Enter' && !event.shiftKey && !event.nativeEvent.isComposing;
|
|
27
|
+
export const TextareaComposer = ({ className, closeSuggestionsOnClickOutside, containerClassName,
|
|
28
|
+
// dropdownClassName, // todo: X find a different way to prevent prop drilling
|
|
29
|
+
grow: growProp,
|
|
30
|
+
// itemClassName, // todo: X find a different way to prevent prop drilling
|
|
31
|
+
listClassName, maxRows: maxRowsProp = 1, onBlur, onChange, onKeyDown, onScroll, placeholder: placeholderProp, shouldSubmit: shouldSubmitProp, ...restProps }) => {
|
|
32
|
+
const { t } = useTranslationContext();
|
|
33
|
+
const { AutocompleteSuggestionList = DefaultSuggestionList } = useComponentContext();
|
|
34
|
+
const { additionalTextareaProps, cooldownRemaining, grow: growContext, handleSubmit, maxRows: maxRowsContext, onPaste, shouldSubmit: shouldSubmitContext, textareaRef, } = useMessageInputContext();
|
|
35
|
+
const grow = growProp ?? growContext;
|
|
36
|
+
const maxRows = maxRowsProp ?? maxRowsContext;
|
|
37
|
+
const placeholder = placeholderProp ?? additionalTextareaProps?.placeholder;
|
|
38
|
+
const shouldSubmit = shouldSubmitProp ?? shouldSubmitContext ?? defaultShouldSubmit;
|
|
39
|
+
const messageComposer = useMessageComposer();
|
|
40
|
+
const { textComposer } = messageComposer;
|
|
41
|
+
const { selection, suggestions, text } = useStateStore(textComposer.state, textComposerStateSelector);
|
|
42
|
+
const { enabled } = useStateStore(messageComposer.configState, configStateSelector);
|
|
43
|
+
const { isLoadingItems } = useStateStore(suggestions?.searchSource.state, searchSourceStateSelector) ?? {};
|
|
44
|
+
const containerRef = useRef(null);
|
|
45
|
+
const [focusedItemIndex, setFocusedItemIndex] = useState(0);
|
|
46
|
+
const [isComposing, setIsComposing] = useState(false);
|
|
47
|
+
const changeHandler = useCallback((e) => {
|
|
48
|
+
if (onChange) {
|
|
49
|
+
onChange(e);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (!textareaRef.current)
|
|
53
|
+
return;
|
|
54
|
+
textComposer.handleChange({
|
|
55
|
+
selection: {
|
|
56
|
+
end: textareaRef.current.selectionEnd,
|
|
57
|
+
start: textareaRef.current.selectionStart,
|
|
58
|
+
},
|
|
59
|
+
text: e.target.value,
|
|
60
|
+
});
|
|
61
|
+
}, [onChange, textComposer, textareaRef]);
|
|
62
|
+
const onCompositionEnd = useCallback(() => {
|
|
63
|
+
setIsComposing(false);
|
|
64
|
+
}, []);
|
|
65
|
+
const onCompositionStart = useCallback(() => {
|
|
66
|
+
setIsComposing(true);
|
|
67
|
+
}, []);
|
|
68
|
+
const keyDownHandler = useCallback((event) => {
|
|
69
|
+
if (onKeyDown) {
|
|
70
|
+
onKeyDown(event);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (event.key === 'Enter') {
|
|
74
|
+
// allow next line only on Shift + Enter. Enter is reserved for submission.
|
|
75
|
+
event.preventDefault();
|
|
76
|
+
}
|
|
77
|
+
if (textComposer.suggestions &&
|
|
78
|
+
textComposer.suggestions.searchSource.items?.length) {
|
|
79
|
+
if (event.key === 'Escape')
|
|
80
|
+
return textComposer.closeSuggestions();
|
|
81
|
+
const loadedItems = textComposer.suggestions.searchSource.items;
|
|
82
|
+
if (event.key === 'Enter') {
|
|
83
|
+
textComposer.handleSelect(loadedItems[focusedItemIndex]);
|
|
84
|
+
}
|
|
85
|
+
if (event.key === 'ArrowUp') {
|
|
86
|
+
event.preventDefault();
|
|
87
|
+
setFocusedItemIndex((prev) => {
|
|
88
|
+
let nextIndex = prev - 1;
|
|
89
|
+
if (suggestions?.searchSource.hasNext) {
|
|
90
|
+
nextIndex = prev;
|
|
91
|
+
}
|
|
92
|
+
else if (nextIndex < 0) {
|
|
93
|
+
nextIndex = loadedItems.length - 1;
|
|
94
|
+
}
|
|
95
|
+
return nextIndex;
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
if (event.key === 'ArrowDown') {
|
|
99
|
+
event.preventDefault();
|
|
100
|
+
setFocusedItemIndex((prev) => {
|
|
101
|
+
let nextIndex = prev + 1;
|
|
102
|
+
if (suggestions?.searchSource.hasNext) {
|
|
103
|
+
nextIndex = prev;
|
|
104
|
+
}
|
|
105
|
+
else if (nextIndex >= loadedItems.length) {
|
|
106
|
+
nextIndex = 0;
|
|
107
|
+
}
|
|
108
|
+
return nextIndex;
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else if (shouldSubmit(event) && textareaRef.current) {
|
|
113
|
+
handleSubmit();
|
|
114
|
+
textareaRef.current.selectionEnd = 0;
|
|
115
|
+
}
|
|
116
|
+
}, [
|
|
117
|
+
focusedItemIndex,
|
|
118
|
+
handleSubmit,
|
|
119
|
+
onKeyDown,
|
|
120
|
+
shouldSubmit,
|
|
121
|
+
suggestions,
|
|
122
|
+
textComposer,
|
|
123
|
+
textareaRef,
|
|
124
|
+
]);
|
|
125
|
+
const scrollHandler = useCallback((event) => {
|
|
126
|
+
if (onScroll) {
|
|
127
|
+
onScroll(event);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
textComposer.closeSuggestions();
|
|
131
|
+
}
|
|
132
|
+
}, [onScroll, textComposer]);
|
|
133
|
+
useEffect(() => {
|
|
134
|
+
// FIXME: find the real reason for cursor being set to the end on each change
|
|
135
|
+
// This is a workaround to prevent the cursor from jumping
|
|
136
|
+
// to the end of the textarea when the user is typing
|
|
137
|
+
// at the position that is not at the end of the textarea value.
|
|
138
|
+
if (textareaRef.current && !isComposing) {
|
|
139
|
+
textareaRef.current.selectionStart = selection.start;
|
|
140
|
+
textareaRef.current.selectionEnd = selection.end;
|
|
141
|
+
}
|
|
142
|
+
}, [text, textareaRef, selection.start, selection.end, isComposing]);
|
|
143
|
+
useEffect(() => {
|
|
144
|
+
if (textComposer.suggestions) {
|
|
145
|
+
setFocusedItemIndex(0);
|
|
146
|
+
}
|
|
147
|
+
}, [textComposer.suggestions]);
|
|
148
|
+
return (React.createElement("div", { className: clsx('rta', 'str-chat__textarea str-chat__message-textarea-react-host', containerClassName, {
|
|
149
|
+
['rta--loading']: isLoadingItems,
|
|
150
|
+
}), ref: containerRef },
|
|
151
|
+
React.createElement(Textarea, { ...restProps, "aria-label": cooldownRemaining ? t('Slow Mode ON') : placeholder, className: clsx('rta__textarea', 'str-chat__textarea__textarea str-chat__message-textarea', className), "data-testid": 'message-input', disabled: !enabled || !!cooldownRemaining, maxRows: grow ? maxRows : 1, onBlur: onBlur, onChange: changeHandler, onCompositionEnd: onCompositionEnd, onCompositionStart: onCompositionStart, onKeyDown: keyDownHandler, onPaste: onPaste, onScroll: scrollHandler, placeholder: placeholder || t('Type your message'), ref: (ref) => {
|
|
152
|
+
textareaRef.current = ref;
|
|
153
|
+
}, value: text }),
|
|
154
|
+
!isComposing && (React.createElement(AutocompleteSuggestionList, { className: listClassName, closeOnClickOutside: closeSuggestionsOnClickOutside, focusedItemIndex: focusedItemIndex, setFocusedItemIndex: setFocusedItemIndex }))));
|
|
155
|
+
};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { MessageInputProps } from '../MessageInput';
|
|
3
|
-
import { MessageListProps, VirtualizedMessageListProps } from '../MessageList';
|
|
2
|
+
import type { MessageInputProps } from '../MessageInput';
|
|
3
|
+
import type { MessageListProps, VirtualizedMessageListProps } from '../MessageList';
|
|
4
4
|
import type { MessageProps, MessageUIComponentProps } from '../Message/types';
|
|
5
5
|
import type { MessageActionsArray } from '../Message/utils';
|
|
6
|
-
import type {
|
|
7
|
-
export type ThreadProps
|
|
6
|
+
import type { LocalMessage } from 'stream-chat';
|
|
7
|
+
export type ThreadProps = {
|
|
8
8
|
/** Additional props for `MessageInput` component: [available props](https://getstream.io/chat/docs/sdk/react/message-input-components/message_input/#props) */
|
|
9
|
-
additionalMessageInputProps?: MessageInputProps
|
|
9
|
+
additionalMessageInputProps?: MessageInputProps;
|
|
10
10
|
/** Additional props for `MessageList` component: [available props](https://getstream.io/chat/docs/sdk/react/core-components/message_list/#props) */
|
|
11
|
-
additionalMessageListProps?: MessageListProps
|
|
11
|
+
additionalMessageListProps?: MessageListProps;
|
|
12
12
|
/** Additional props for `Message` component of the parent message: [available props](https://getstream.io/chat/docs/sdk/react/message-components/message/#props) */
|
|
13
|
-
additionalParentMessageProps?: Partial<MessageProps
|
|
13
|
+
additionalParentMessageProps?: Partial<MessageProps>;
|
|
14
14
|
/** Additional props for `VirtualizedMessageList` component: [available props](https://getstream.io/chat/docs/sdk/react/core-components/virtualized_list/#props) */
|
|
15
|
-
additionalVirtualizedMessageListProps?: VirtualizedMessageListProps
|
|
15
|
+
additionalVirtualizedMessageListProps?: VirtualizedMessageListProps;
|
|
16
16
|
/** If true, focuses the `MessageInput` component on opening a thread */
|
|
17
17
|
autoFocus?: boolean;
|
|
18
18
|
/** Injects date separator components into `Thread`, defaults to `false`. To be passed to the underlying `MessageList` or `VirtualizedMessageList` components */
|
|
@@ -20,13 +20,16 @@ export type ThreadProps<StreamChatGenerics extends DefaultStreamChatGenerics = D
|
|
|
20
20
|
/** Custom thread input UI component used to override the default `Input` value stored in `ComponentContext` or the [MessageInputSmall](https://github.com/GetStream/stream-chat-react/blob/master/src/components/MessageInput/MessageInputSmall.tsx) default */
|
|
21
21
|
Input?: React.ComponentType;
|
|
22
22
|
/** Custom thread message UI component used to override the default `Message` value stored in `ComponentContext` */
|
|
23
|
-
Message?: React.ComponentType<MessageUIComponentProps
|
|
23
|
+
Message?: React.ComponentType<MessageUIComponentProps>;
|
|
24
24
|
/** Array of allowed message actions (ex: ['edit', 'delete', 'flag', 'mute', 'pin', 'quote', 'react', 'reply']). To disable all actions, provide an empty array. */
|
|
25
25
|
messageActions?: MessageActionsArray;
|
|
26
26
|
/** If true, render the `VirtualizedMessageList` instead of the standard `MessageList` component */
|
|
27
27
|
virtualized?: boolean;
|
|
28
28
|
};
|
|
29
|
+
export declare const useLegacyThreadContext: () => {
|
|
30
|
+
legacyThread: LocalMessage | undefined;
|
|
31
|
+
};
|
|
29
32
|
/**
|
|
30
33
|
* The Thread component renders a parent Message with a list of replies
|
|
31
34
|
*/
|
|
32
|
-
export declare const Thread:
|
|
35
|
+
export declare const Thread: (props: ThreadProps) => React.JSX.Element | null;
|
|
@@ -1,20 +1,24 @@
|
|
|
1
|
-
import React, { useEffect } from 'react';
|
|
1
|
+
import React, { useContext, useEffect } from 'react';
|
|
2
2
|
import clsx from 'clsx';
|
|
3
3
|
import { MESSAGE_ACTIONS } from '../Message';
|
|
4
4
|
import { MessageInput, MessageInputFlat } from '../MessageInput';
|
|
5
|
-
import { MessageList, VirtualizedMessageList
|
|
5
|
+
import { MessageList, VirtualizedMessageList } from '../MessageList';
|
|
6
6
|
import { ThreadHeader as DefaultThreadHeader } from './ThreadHeader';
|
|
7
7
|
import { ThreadHead as DefaultThreadHead } from '../Thread/ThreadHead';
|
|
8
8
|
import { useChannelActionContext, useChannelStateContext, useChatContext, useComponentContext, } from '../../context';
|
|
9
9
|
import { useThreadContext } from '../Threads';
|
|
10
10
|
import { useStateStore } from '../../store';
|
|
11
|
+
const LegacyThreadContext = React.createContext({ legacyThread: undefined });
|
|
12
|
+
export const useLegacyThreadContext = () => useContext(LegacyThreadContext);
|
|
11
13
|
/**
|
|
12
14
|
* The Thread component renders a parent Message with a list of replies
|
|
13
15
|
*/
|
|
14
16
|
export const Thread = (props) => {
|
|
15
17
|
const { channel, channelConfig, thread } = useChannelStateContext('Thread');
|
|
16
18
|
const threadInstance = useThreadContext();
|
|
17
|
-
if (
|
|
19
|
+
if (!thread && !threadInstance)
|
|
20
|
+
return null;
|
|
21
|
+
if (channelConfig?.replies === false)
|
|
18
22
|
return null;
|
|
19
23
|
// the wrapper ensures a key variable is set and the component recreates on thread switch
|
|
20
24
|
return (
|
|
@@ -30,22 +34,24 @@ const selector = (nextValue) => ({
|
|
|
30
34
|
const ThreadInner = (props) => {
|
|
31
35
|
const { additionalMessageInputProps, additionalMessageListProps, additionalParentMessageProps, additionalVirtualizedMessageListProps, autoFocus = true, enableDateSeparator = false, Input: PropInput, Message: PropMessage, messageActions = Object.keys(MESSAGE_ACTIONS), virtualized, } = props;
|
|
32
36
|
const threadInstance = useThreadContext();
|
|
33
|
-
const { isLoadingNext, isLoadingPrev, parentMessage, replies } = useStateStore(threadInstance?.state, selector) ?? {};
|
|
34
37
|
const { thread, threadHasMore, threadLoadingMore, threadMessages = [], threadSuppressAutoscroll, } = useChannelStateContext('Thread');
|
|
35
38
|
const { closeThread, loadMoreThread } = useChannelActionContext('Thread');
|
|
36
39
|
const { customClasses } = useChatContext('Thread');
|
|
37
40
|
const { Message: ContextMessage, ThreadHead = DefaultThreadHead, ThreadHeader = DefaultThreadHeader, ThreadInput: ContextInput, VirtualMessage, } = useComponentContext('Thread');
|
|
41
|
+
const { isLoadingNext, isLoadingPrev, parentMessage, replies } = useStateStore(threadInstance?.state, selector) ?? {};
|
|
38
42
|
const ThreadInput = PropInput ?? additionalMessageInputProps?.Input ?? ContextInput ?? MessageInputFlat;
|
|
39
43
|
const ThreadMessage = PropMessage || additionalMessageListProps?.Message;
|
|
40
44
|
const FallbackMessage = virtualized && VirtualMessage ? VirtualMessage : ContextMessage;
|
|
41
45
|
const MessageUIComponent = ThreadMessage || FallbackMessage;
|
|
42
46
|
const ThreadMessageList = virtualized ? VirtualizedMessageList : MessageList;
|
|
43
47
|
useEffect(() => {
|
|
44
|
-
if (
|
|
48
|
+
if (threadInstance)
|
|
49
|
+
return;
|
|
50
|
+
if ((thread?.reply_count ?? 0) > 0) {
|
|
45
51
|
// FIXME: integrators can customize channel query options but cannot customize channel.getReplies() options
|
|
46
52
|
loadMoreThread();
|
|
47
53
|
}
|
|
48
|
-
}, [thread, loadMoreThread]);
|
|
54
|
+
}, [thread, loadMoreThread, threadInstance]);
|
|
49
55
|
const threadProps = threadInstance
|
|
50
56
|
? {
|
|
51
57
|
loadingMore: isLoadingPrev,
|
|
@@ -68,10 +74,15 @@ const ThreadInner = (props) => {
|
|
|
68
74
|
'str-chat__thread--virtualized': virtualized,
|
|
69
75
|
});
|
|
70
76
|
const head = (React.createElement(ThreadHead, { key: messageAsThread.id, message: messageAsThread, Message: MessageUIComponent, ...additionalParentMessageProps }));
|
|
71
|
-
return (
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
React.createElement(
|
|
77
|
+
return (
|
|
78
|
+
// Thread component needs a context which we can use for message composer
|
|
79
|
+
React.createElement(LegacyThreadContext.Provider, { value: {
|
|
80
|
+
legacyThread: thread ?? undefined,
|
|
81
|
+
} },
|
|
82
|
+
React.createElement("div", { className: threadClass },
|
|
83
|
+
React.createElement(ThreadHeader, { closeThread: closeThread, thread: messageAsThread }),
|
|
84
|
+
React.createElement(ThreadMessageList, { disableDateSeparator: !enableDateSeparator, head: head, Message: MessageUIComponent, messageActions: messageActions, suppressAutoscroll: threadSuppressAutoscroll, threadList: true, ...threadProps, ...(virtualized
|
|
85
|
+
? additionalVirtualizedMessageListProps
|
|
86
|
+
: additionalMessageListProps) }),
|
|
87
|
+
React.createElement(MessageInput, { focus: autoFocus, Input: ThreadInput, isThreadInput: true, parent: thread ?? parentMessage, ...additionalMessageInputProps }))));
|
|
77
88
|
};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { MessageProps } from '../Message';
|
|
3
|
-
|
|
4
|
-
export declare const ThreadHead: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: MessageProps<StreamChatGenerics>) => React.JSX.Element;
|
|
2
|
+
import type { MessageProps } from '../Message';
|
|
3
|
+
export declare const ThreadHead: (props: MessageProps) => React.JSX.Element;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { ChannelPreviewInfoParams } from '../ChannelPreview/hooks/useChannelPreviewInfo';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
export type ThreadHeaderProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
2
|
+
import type { ChannelPreviewInfoParams } from '../ChannelPreview/hooks/useChannelPreviewInfo';
|
|
3
|
+
import type { LocalMessage } from 'stream-chat';
|
|
4
|
+
export type ThreadHeaderProps = {
|
|
6
5
|
/** Callback for closing the thread */
|
|
7
6
|
closeThread: (event?: React.BaseSyntheticEvent) => void;
|
|
8
7
|
/** The thread parent message */
|
|
9
|
-
thread:
|
|
8
|
+
thread: LocalMessage;
|
|
10
9
|
};
|
|
11
|
-
export declare const ThreadHeader:
|
|
10
|
+
export declare const ThreadHeader: (props: ThreadHeaderProps & Pick<ChannelPreviewInfoParams, 'overrideImage' | 'overrideTitle'>) => React.JSX.Element;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { useChannelPreviewInfo
|
|
2
|
+
import { useChannelPreviewInfo } from '../ChannelPreview/hooks/useChannelPreviewInfo';
|
|
3
3
|
import { CloseIcon } from './icons';
|
|
4
4
|
import { useChannelStateContext } from '../../context/ChannelStateContext';
|
|
5
5
|
import { useTranslationContext } from '../../context/TranslationContext';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { PropsWithChildren } from 'react';
|
|
3
|
-
import { Thread } from 'stream-chat';
|
|
3
|
+
import type { Thread } from 'stream-chat';
|
|
4
4
|
export type ThreadContextValue = Thread | undefined;
|
|
5
5
|
export declare const ThreadContext: React.Context<ThreadContextValue>;
|
|
6
|
-
export declare const useThreadContext: () =>
|
|
6
|
+
export declare const useThreadContext: () => ThreadContextValue;
|
|
7
7
|
export declare const ThreadProvider: ({ children, thread, }: PropsWithChildren<{
|
|
8
8
|
thread?: Thread;
|
|
9
9
|
}>) => React.JSX.Element;
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import React, { createContext, useContext } from 'react';
|
|
2
2
|
import { Channel } from '../../components';
|
|
3
3
|
export const ThreadContext = createContext(undefined);
|
|
4
|
-
export const useThreadContext = () =>
|
|
5
|
-
const thread = useContext(ThreadContext);
|
|
6
|
-
return thread ?? undefined;
|
|
7
|
-
};
|
|
4
|
+
export const useThreadContext = () => useContext(ThreadContext);
|
|
8
5
|
export const ThreadProvider = ({ children, thread, }) => (React.createElement(ThreadContext.Provider, { value: thread },
|
|
9
6
|
React.createElement(Channel, { channel: thread?.channel }, children)));
|
|
@@ -5,5 +5,5 @@ export type ThreadListItemProps = {
|
|
|
5
5
|
thread: Thread;
|
|
6
6
|
threadListItemUIProps?: ThreadListItemUIProps;
|
|
7
7
|
};
|
|
8
|
-
export declare const useThreadListItemContext: () => Thread
|
|
8
|
+
export declare const useThreadListItemContext: () => Thread | undefined;
|
|
9
9
|
export declare const ThreadListItem: ({ thread, threadListItemUIProps, }: ThreadListItemProps) => React.JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ThreadManagerState } from 'stream-chat';
|
|
1
|
+
import type { ThreadManagerState } from 'stream-chat';
|
|
2
2
|
export declare const useThreadManagerState: <T extends readonly unknown[]>(selector: (nextValue: ThreadManagerState) => T) => T;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
import type { ComponentPropsWithoutRef } from 'react';
|
|
3
3
|
export declare const Icon: {
|
|
4
4
|
MessageBubble: (props: ComponentPropsWithoutRef<'svg'>) => React.JSX.Element;
|
|
5
5
|
MessageBubbleEmpty: (props: ComponentPropsWithoutRef<'svg'>) => React.JSX.Element;
|