stream-chat-react 9.4.0 → 10.0.0-theming-v2.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/browser.full-bundle.js +16760 -13355
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +20 -5
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/Attachment/Attachment.d.ts +1 -0
- package/dist/components/Attachment/Attachment.d.ts.map +1 -1
- package/dist/components/Attachment/Attachment.js +80 -35
- package/dist/components/Attachment/AttachmentActions.d.ts.map +1 -1
- package/dist/components/Attachment/AttachmentActions.js +2 -6
- package/dist/components/Attachment/AttachmentContainer.d.ts +12 -0
- package/dist/components/Attachment/AttachmentContainer.d.ts.map +1 -0
- package/dist/components/Attachment/AttachmentContainer.js +107 -0
- package/dist/components/Attachment/Audio.d.ts +11 -0
- package/dist/components/Attachment/Audio.d.ts.map +1 -1
- package/dist/components/Attachment/Audio.js +59 -32
- package/dist/components/Attachment/Card.d.ts +5 -20
- package/dist/components/Attachment/Card.d.ts.map +1 -1
- package/dist/components/Attachment/Card.js +93 -15
- package/dist/components/Attachment/DownloadButton.d.ts +6 -0
- package/dist/components/Attachment/DownloadButton.d.ts.map +1 -0
- package/dist/components/Attachment/DownloadButton.js +8 -0
- package/dist/components/Attachment/FileAttachment.d.ts +1 -1
- package/dist/components/Attachment/FileAttachment.d.ts.map +1 -1
- package/dist/components/Attachment/FileAttachment.js +23 -6
- package/dist/components/Attachment/FileSizeIndicator.d.ts +6 -0
- package/dist/components/Attachment/FileSizeIndicator.d.ts.map +1 -0
- package/dist/components/Attachment/FileSizeIndicator.js +8 -0
- package/dist/components/Attachment/hooks/useAudioController.d.ts +9 -0
- package/dist/components/Attachment/hooks/useAudioController.d.ts.map +1 -0
- package/dist/components/Attachment/hooks/useAudioController.js +45 -0
- package/dist/components/Attachment/icons.d.ts +5 -0
- package/dist/components/Attachment/icons.d.ts.map +1 -0
- package/dist/components/Attachment/icons.js +10 -0
- package/dist/components/Attachment/index.d.ts +1 -0
- package/dist/components/Attachment/index.d.ts.map +1 -1
- package/dist/components/Attachment/index.js +1 -0
- package/dist/components/Attachment/utils.d.ts +41 -4
- package/dist/components/Attachment/utils.d.ts.map +1 -1
- package/dist/components/Attachment/utils.js +63 -18
- package/dist/components/AutoCompleteTextarea/Item.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/Item.js +11 -4
- package/dist/components/AutoCompleteTextarea/List.d.ts +17 -1
- package/dist/components/AutoCompleteTextarea/List.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/List.js +19 -17
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts +16 -2
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/Textarea.js +19 -16
- package/dist/components/AutoCompleteTextarea/utils.js +1 -1
- package/dist/components/Avatar/Avatar.js +10 -10
- package/dist/components/Channel/Channel.d.ts +7 -2
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +78 -69
- package/dist/components/Channel/LoadingChannel.d.ts +2 -0
- package/dist/components/Channel/LoadingChannel.d.ts.map +1 -0
- package/dist/components/Channel/LoadingChannel.js +20 -0
- package/dist/components/Channel/channelState.d.ts +1 -0
- package/dist/components/Channel/channelState.d.ts.map +1 -1
- package/dist/components/Channel/channelState.js +14 -9
- package/dist/components/Channel/hooks/useChannelContainerClasses.d.ts +9 -0
- package/dist/components/Channel/hooks/useChannelContainerClasses.d.ts.map +1 -0
- package/dist/components/Channel/hooks/useChannelContainerClasses.js +14 -0
- package/dist/components/Channel/hooks/useCreateChannelStateContext.js +6 -6
- package/dist/components/Channel/utils.d.ts +3 -0
- package/dist/components/Channel/utils.d.ts.map +1 -1
- package/dist/components/Channel/utils.js +9 -5
- package/dist/components/ChannelHeader/ChannelHeader.d.ts.map +1 -1
- package/dist/components/ChannelHeader/ChannelHeader.js +14 -9
- package/dist/components/ChannelList/ChannelList.d.ts +10 -4
- package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
- package/dist/components/ChannelList/ChannelList.js +32 -14
- package/dist/components/ChannelList/hooks/useChannelDeletedListener.js +10 -6
- package/dist/components/ChannelList/hooks/useChannelHiddenListener.js +10 -6
- package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts +1 -1
- package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelTruncatedListener.js +9 -5
- package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts +1 -1
- package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelUpdatedListener.js +9 -5
- package/dist/components/ChannelList/hooks/useChannelVisibleListener.js +9 -5
- package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts +1 -1
- package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useMessageNewListener.js +9 -5
- package/dist/components/ChannelList/hooks/useMobileNavigation.d.ts +1 -1
- package/dist/components/ChannelList/hooks/useMobileNavigation.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js +9 -5
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.js +9 -5
- package/dist/components/ChannelList/hooks/usePaginatedChannels.js +9 -5
- package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.js +9 -5
- package/dist/components/ChannelList/utils.js +9 -5
- package/dist/components/ChannelPreview/ChannelPreview.d.ts +6 -0
- package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreview.js +5 -21
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.js +13 -9
- package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts +14 -0
- package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts.map +1 -0
- package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.js +29 -0
- package/dist/components/ChannelPreview/utils.js +2 -2
- package/dist/components/ChannelSearch/ChannelSearch.d.ts +6 -42
- package/dist/components/ChannelSearch/ChannelSearch.d.ts.map +1 -1
- package/dist/components/ChannelSearch/ChannelSearch.js +4 -160
- package/dist/components/ChannelSearch/SearchBar.d.ts +29 -0
- package/dist/components/ChannelSearch/SearchBar.d.ts.map +1 -0
- package/dist/components/ChannelSearch/SearchBar.js +93 -0
- package/dist/components/ChannelSearch/SearchInput.d.ts +9 -17
- package/dist/components/ChannelSearch/SearchInput.d.ts.map +1 -1
- package/dist/components/ChannelSearch/SearchInput.js +2 -4
- package/dist/components/ChannelSearch/SearchResults.d.ts +14 -8
- package/dist/components/ChannelSearch/SearchResults.d.ts.map +1 -1
- package/dist/components/ChannelSearch/SearchResults.js +44 -27
- package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts +50 -0
- package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts.map +1 -0
- package/dist/components/ChannelSearch/hooks/useChannelSearch.js +232 -0
- package/dist/components/ChannelSearch/icons.d.ts +6 -0
- package/dist/components/ChannelSearch/icons.d.ts.map +1 -0
- package/dist/components/ChannelSearch/icons.js +12 -0
- package/dist/components/Chat/Chat.d.ts.map +1 -1
- package/dist/components/Chat/Chat.js +4 -0
- package/dist/components/Chat/hooks/useChat.d.ts +1 -1
- package/dist/components/Chat/hooks/useChat.d.ts.map +1 -1
- package/dist/components/Chat/hooks/useChat.js +1 -1
- package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
- package/dist/components/Chat/hooks/useCreateChatContext.js +3 -2
- package/dist/components/Chat/hooks/useCustomStyles.d.ts +1 -1
- package/dist/components/Chat/hooks/useCustomStyles.d.ts.map +1 -1
- package/dist/components/ChatAutoComplete/ChatAutoComplete.js +1 -1
- package/dist/components/DateSeparator/DateSeparator.js +1 -1
- package/dist/components/EmoticonItem/EmoticonItem.js +1 -1
- package/dist/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +1 -1
- package/dist/components/EmptyStateIndicator/EmptyStateIndicator.d.ts.map +1 -1
- package/dist/components/EmptyStateIndicator/EmptyStateIndicator.js +16 -3
- package/dist/components/EmptyStateIndicator/icons.d.ts +2 -0
- package/dist/components/EmptyStateIndicator/icons.d.ts.map +1 -0
- package/dist/components/EmptyStateIndicator/icons.js +3 -0
- package/dist/components/EventComponent/EventComponent.js +1 -1
- package/dist/components/Gallery/Gallery.d.ts.map +1 -1
- package/dist/components/Gallery/Gallery.js +16 -14
- package/dist/components/Gallery/Image.d.ts +7 -3
- package/dist/components/Gallery/Image.d.ts.map +1 -1
- package/dist/components/Gallery/Image.js +21 -9
- package/dist/components/Gallery/ModalGallery.d.ts +10 -0
- package/dist/components/Gallery/ModalGallery.d.ts.map +1 -0
- package/dist/components/Gallery/ModalGallery.js +16 -0
- package/dist/components/Gallery/index.d.ts +1 -1
- package/dist/components/Gallery/index.js +1 -1
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts +2 -0
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +4 -1
- package/dist/components/LoadMore/LoadMoreButton.js +2 -2
- package/dist/components/Loading/LoadingChannels.js +2 -2
- package/dist/components/Loading/LoadingIndicator.js +1 -1
- package/dist/components/MML/MML.js +1 -1
- package/dist/components/Message/FixedHeightMessage.js +3 -3
- package/dist/components/Message/MessageDeleted.js +2 -2
- package/dist/components/Message/MessageOptions.d.ts +1 -0
- package/dist/components/Message/MessageOptions.d.ts.map +1 -1
- package/dist/components/Message/MessageOptions.js +9 -16
- package/dist/components/Message/MessageRepliesCountButton.d.ts.map +1 -1
- package/dist/components/Message/MessageRepliesCountButton.js +8 -5
- package/dist/components/Message/MessageSimple.d.ts.map +1 -1
- package/dist/components/Message/MessageSimple.js +41 -21
- package/dist/components/Message/MessageStatus.d.ts.map +1 -1
- package/dist/components/Message/MessageStatus.js +17 -8
- package/dist/components/Message/MessageText.d.ts +1 -1
- package/dist/components/Message/MessageText.d.ts.map +1 -1
- package/dist/components/Message/MessageText.js +10 -14
- package/dist/components/Message/QuotedMessage.d.ts.map +1 -1
- package/dist/components/Message/QuotedMessage.js +8 -3
- package/dist/components/Message/hooks/index.d.ts +0 -2
- package/dist/components/Message/hooks/index.d.ts.map +1 -1
- package/dist/components/Message/hooks/index.js +0 -2
- package/dist/components/Message/hooks/useEditHandler.d.ts +1 -1
- package/dist/components/Message/hooks/useEditHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useReactionHandler.d.ts +3 -3
- package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useReactionHandler.js +11 -7
- package/dist/components/Message/hooks/useUserRole.d.ts +1 -1
- package/dist/components/Message/hooks/useUserRole.d.ts.map +1 -1
- package/dist/components/Message/icons.d.ts +6 -4
- package/dist/components/Message/icons.d.ts.map +1 -1
- package/dist/components/Message/icons.js +25 -10
- package/dist/components/Message/index.d.ts +0 -3
- package/dist/components/Message/index.d.ts.map +1 -1
- package/dist/components/Message/index.js +0 -3
- package/dist/components/Message/utils.js +10 -6
- package/dist/components/MessageActions/MessageActions.d.ts.map +1 -1
- package/dist/components/MessageActions/MessageActions.js +3 -3
- package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
- package/dist/components/MessageActions/MessageActionsBox.js +14 -7
- package/dist/components/MessageInput/AttachmentPreviewList.d.ts +2 -0
- package/dist/components/MessageInput/AttachmentPreviewList.d.ts.map +1 -0
- package/dist/components/MessageInput/AttachmentPreviewList.js +60 -0
- package/dist/components/MessageInput/EditMessageForm.d.ts.map +1 -1
- package/dist/components/MessageInput/EditMessageForm.js +11 -6
- package/dist/components/MessageInput/EmojiPicker.d.ts +1 -1
- package/dist/components/MessageInput/EmojiPicker.d.ts.map +1 -1
- package/dist/components/MessageInput/EmojiPicker.js +14 -17
- package/dist/components/MessageInput/MessageInput.d.ts +1 -1
- package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputFlat.js +84 -10
- package/dist/components/MessageInput/MessageInputSmall.d.ts +9 -0
- package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputSmall.js +10 -1
- package/dist/components/MessageInput/QuotedMessagePreview.d.ts +2 -1
- package/dist/components/MessageInput/QuotedMessagePreview.d.ts.map +1 -1
- package/dist/components/MessageInput/QuotedMessagePreview.js +29 -22
- package/dist/components/MessageInput/UploadsPreview.d.ts +7 -0
- package/dist/components/MessageInput/UploadsPreview.d.ts.map +1 -1
- package/dist/components/MessageInput/UploadsPreview.js +17 -6
- package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useAttachments.js +8 -1
- package/dist/components/MessageInput/hooks/useCommandTrigger.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useCommandTrigger.js +6 -4
- package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts +1 -1
- package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useCooldownTimer.js +4 -4
- package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts +1 -1
- package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useEmojiTrigger.d.ts +1 -1
- package/dist/components/MessageInput/hooks/useEmojiTrigger.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useEmojiTrigger.js +23 -19
- package/dist/components/MessageInput/hooks/useFileState.d.ts +7 -0
- package/dist/components/MessageInput/hooks/useFileState.d.ts.map +1 -0
- package/dist/components/MessageInput/hooks/useFileState.js +8 -0
- package/dist/components/MessageInput/hooks/useImageUploads.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useImageUploads.js +17 -36
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +2 -6
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useSubmitHandler.js +10 -6
- package/dist/components/MessageInput/hooks/useUserTrigger.d.ts +1 -1
- package/dist/components/MessageInput/hooks/useUserTrigger.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useUserTrigger.js +13 -9
- package/dist/components/MessageInput/hooks/utils.d.ts +1 -1
- package/dist/components/MessageInput/hooks/utils.d.ts.map +1 -1
- package/dist/components/MessageInput/icons.d.ts +12 -2
- package/dist/components/MessageInput/icons.d.ts.map +1 -1
- package/dist/components/MessageInput/icons.js +67 -7
- package/dist/components/MessageList/CustomNotification.js +1 -1
- package/dist/components/MessageList/MessageList.d.ts +3 -0
- package/dist/components/MessageList/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.js +17 -14
- package/dist/components/MessageList/MessageListMainPanel.d.ts +3 -0
- package/dist/components/MessageList/MessageListMainPanel.d.ts.map +1 -0
- package/dist/components/MessageList/MessageListMainPanel.js +9 -0
- package/dist/components/MessageList/MessageListNotifications.d.ts +2 -0
- package/dist/components/MessageList/MessageListNotifications.d.ts.map +1 -1
- package/dist/components/MessageList/MessageListNotifications.js +2 -2
- package/dist/components/MessageList/MessageNotification.d.ts +9 -6
- package/dist/components/MessageList/MessageNotification.d.ts.map +1 -1
- package/dist/components/MessageList/MessageNotification.js +1 -1
- package/dist/components/MessageList/ScrollToBottomButton.d.ts +3 -0
- package/dist/components/MessageList/ScrollToBottomButton.d.ts.map +1 -0
- package/dist/components/MessageList/ScrollToBottomButton.js +53 -0
- package/dist/components/MessageList/VirtualizedMessageList.d.ts +5 -0
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +41 -14
- package/dist/components/MessageList/hooks/useMessageListElements.d.ts +1 -1
- package/dist/components/MessageList/hooks/useMessageListElements.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/useMessageListElements.js +4 -3
- package/dist/components/MessageList/hooks/useMessageListScrollManager.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/useMessageListScrollManager.js +3 -1
- package/dist/components/MessageList/hooks/useNewMessageNotification.d.ts +2 -0
- package/dist/components/MessageList/hooks/useNewMessageNotification.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/useNewMessageNotification.js +8 -1
- package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts +1 -2
- package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/useScrollLocationLogic.js +12 -30
- package/dist/components/MessageList/icons.d.ts +8 -0
- package/dist/components/MessageList/icons.d.ts.map +1 -0
- package/dist/components/MessageList/icons.js +11 -0
- package/dist/components/MessageList/index.d.ts +1 -0
- package/dist/components/MessageList/index.d.ts.map +1 -1
- package/dist/components/MessageList/index.js +1 -0
- package/dist/components/MessageList/utils.d.ts +4 -2
- package/dist/components/MessageList/utils.d.ts.map +1 -1
- package/dist/components/MessageList/utils.js +16 -3
- package/dist/components/Modal/Modal.d.ts +2 -2
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +18 -15
- package/dist/components/Modal/icons.d.ts +2 -0
- package/dist/components/Modal/icons.d.ts.map +1 -0
- package/dist/components/Modal/icons.js +5 -0
- package/dist/components/Reactions/ReactionSelector.d.ts +2 -0
- package/dist/components/Reactions/ReactionSelector.d.ts.map +1 -1
- package/dist/components/Reactions/ReactionSelector.js +18 -9
- package/dist/components/Reactions/ReactionsList.d.ts +3 -1
- package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
- package/dist/components/Reactions/ReactionsList.js +33 -47
- package/dist/components/Reactions/SimpleReactionsList.d.ts +3 -1
- package/dist/components/Reactions/SimpleReactionsList.d.ts.map +1 -1
- package/dist/components/Reactions/SimpleReactionsList.js +41 -58
- package/dist/components/Reactions/hooks/useProcessReactions.d.ts +21 -0
- package/dist/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -0
- package/dist/components/Reactions/hooks/useProcessReactions.js +51 -0
- package/dist/components/Thread/Thread.d.ts +2 -6
- package/dist/components/Thread/Thread.d.ts.map +1 -1
- package/dist/components/Thread/Thread.js +21 -89
- package/dist/components/Thread/ThreadHead.d.ts +4 -0
- package/dist/components/Thread/ThreadHead.d.ts.map +1 -0
- package/dist/components/Thread/ThreadHead.js +21 -0
- package/dist/components/Thread/ThreadHeader.d.ts +12 -0
- package/dist/components/Thread/ThreadHeader.d.ts.map +1 -0
- package/dist/components/Thread/ThreadHeader.js +21 -0
- package/dist/components/Thread/ThreadStart.d.ts +2 -0
- package/dist/components/Thread/ThreadStart.d.ts.map +1 -0
- package/dist/components/Thread/ThreadStart.js +10 -0
- package/dist/components/Thread/icons.d.ts +4 -0
- package/dist/components/Thread/icons.d.ts.map +1 -0
- package/dist/components/Thread/icons.js +9 -0
- package/dist/components/Thread/index.d.ts +2 -0
- package/dist/components/Thread/index.d.ts.map +1 -1
- package/dist/components/Thread/index.js +2 -0
- package/dist/components/TypingIndicator/TypingIndicator.d.ts.map +1 -1
- package/dist/components/TypingIndicator/TypingIndicator.js +52 -9
- package/dist/components/UserItem/UserItem.d.ts +1 -1
- package/dist/components/UserItem/UserItem.d.ts.map +1 -1
- package/dist/components/UserItem/UserItem.js +15 -8
- package/dist/components/Window/Window.js +1 -1
- package/dist/constants/limits.d.ts +4 -0
- package/dist/constants/limits.d.ts.map +1 -0
- package/dist/constants/limits.js +3 -0
- package/dist/context/ChannelActionContext.d.ts +1 -1
- package/dist/context/ChannelActionContext.d.ts.map +1 -1
- package/dist/context/ChannelActionContext.js +1 -1
- package/dist/context/ChannelStateContext.d.ts +3 -2
- package/dist/context/ChannelStateContext.d.ts.map +1 -1
- package/dist/context/ChannelStateContext.js +1 -1
- package/dist/context/ChatContext.d.ts +5 -4
- package/dist/context/ChatContext.d.ts.map +1 -1
- package/dist/context/ChatContext.js +2 -2
- package/dist/context/ComponentContext.d.ts +6 -2
- package/dist/context/ComponentContext.d.ts.map +1 -1
- package/dist/context/ComponentContext.js +1 -1
- package/dist/context/EmojiContext.d.ts +1 -1
- package/dist/context/EmojiContext.d.ts.map +1 -1
- package/dist/context/EmojiContext.js +1 -1
- package/dist/context/MessageContext.d.ts +1 -1
- package/dist/context/MessageContext.d.ts.map +1 -1
- package/dist/context/MessageContext.js +1 -1
- package/dist/context/MessageInputContext.d.ts +1 -1
- package/dist/context/MessageInputContext.d.ts.map +1 -1
- package/dist/context/MessageInputContext.js +1 -1
- package/dist/context/TranslationContext.d.ts +2 -2
- package/dist/context/TranslationContext.d.ts.map +1 -1
- package/dist/context/TranslationContext.js +8 -4
- package/dist/context/TypingContext.d.ts +1 -1
- package/dist/context/TypingContext.d.ts.map +1 -1
- package/dist/context/TypingContext.js +1 -1
- package/dist/css/index.css +1 -1
- package/dist/css/index.css.map +1 -0
- package/dist/css/v2/index.css +1 -0
- package/dist/css/v2/index.css.map +1 -0
- package/dist/css/v2/index.layout.css +1 -0
- package/dist/css/v2/index.layout.css.map +1 -0
- package/dist/i18n/Streami18n.d.ts +8 -2
- package/dist/i18n/Streami18n.d.ts.map +1 -1
- package/dist/i18n/Streami18n.js +12 -12
- package/dist/i18n/de.json +8 -2
- package/dist/i18n/en.json +8 -2
- package/dist/i18n/es.json +9 -2
- package/dist/i18n/fr.json +9 -2
- package/dist/i18n/hi.json +8 -2
- package/dist/i18n/it.json +9 -2
- package/dist/i18n/ja.json +8 -2
- package/dist/i18n/ko.json +8 -2
- package/dist/i18n/nl.json +8 -2
- package/dist/i18n/pt.json +9 -2
- package/dist/i18n/ru.json +10 -2
- package/dist/i18n/tr.json +8 -2
- package/dist/index.cjs.js +9535 -4005
- package/dist/index.cjs.js.map +1 -1
- package/dist/scss/Attachment.scss +52 -22
- package/dist/scss/Audio.scss +1 -1
- package/dist/scss/Avatar.scss +1 -1
- package/dist/scss/ChannelList.scss +5 -1
- package/dist/scss/ChannelPreview.scss +25 -0
- package/dist/scss/ChannelSearch.scss +5 -3
- package/dist/scss/Gallery.scss +0 -20
- package/dist/scss/ImageCarousel.scss +39 -0
- package/dist/scss/LoadingChannels.scss +1 -1
- package/dist/scss/Message.scss +84 -86
- package/dist/scss/MessageActions.scss +15 -0
- package/dist/scss/MessageCommerce.scss +57 -13
- package/dist/scss/MessageInputFlat.scss +21 -9
- package/dist/scss/MessageList.scss +35 -3
- package/dist/scss/MessageLivestream.scss +23 -10
- package/dist/scss/MessageNotification.scss +7 -1
- package/dist/scss/MessageTeam.scss +37 -10
- package/dist/scss/Modal.scss +2 -0
- package/dist/scss/ReactionList.scss +14 -0
- package/dist/scss/ReactionSelector.scss +6 -0
- package/dist/scss/SendButton.scss +6 -0
- package/dist/scss/SmallMessageInput.scss +0 -1
- package/dist/scss/Thread.scss +21 -2
- package/dist/scss/Tooltip.scss +6 -3
- package/dist/scss/TypingIndicator.scss +5 -0
- package/dist/scss/_base.scss +26 -0
- package/dist/scss/_variables.scss +2 -1
- package/dist/scss/index.scss +5 -4
- package/dist/scss/v2/AttachmentList/AttachmentList-layout.scss +392 -0
- package/dist/scss/v2/AttachmentList/AttachmentList-theme.scss +400 -0
- package/dist/scss/v2/AttachmentPreviewList/AttachmentPreviewList-layout.scss +118 -0
- package/dist/scss/v2/AttachmentPreviewList/AttachmentPreviewList-theme.scss +150 -0
- package/dist/scss/v2/Autocomplete/Autocomplete-layout.scss +62 -0
- package/dist/scss/v2/Autocomplete/Autocomplete-theme.scss +207 -0
- package/dist/scss/v2/Avatar/Avatar-layout.scss +13 -0
- package/dist/scss/v2/Avatar/Avatar-theme.scss +42 -0
- package/dist/scss/v2/Channel/Channel-layout.scss +139 -0
- package/dist/scss/v2/Channel/Channel-theme.scss +99 -0
- package/dist/scss/v2/ChannelHeader/ChannelHeader-layout.scss +23 -0
- package/dist/scss/v2/ChannelHeader/ChannelHeader-theme.scss +43 -0
- package/dist/scss/v2/ChannelList/ChannelList-layout.scss +41 -0
- package/dist/scss/v2/ChannelList/ChannelList-theme.scss +87 -0
- package/dist/scss/v2/ChannelPreview/ChannelPreview-layout.scss +82 -0
- package/dist/scss/v2/ChannelPreview/ChannelPreview-theme.scss +108 -0
- package/dist/scss/v2/ChannelSearch/ChannelSearch-layout.scss +71 -0
- package/dist/scss/v2/ChannelSearch/ChannelSearch-theme.scss +190 -0
- package/dist/scss/v2/EditMessageForm/EditMessageForm-layout.scss +53 -0
- package/dist/scss/v2/EditMessageForm/EditMessageForm-theme.scss +50 -0
- package/dist/scss/v2/ImageCarousel/ImageCarousel-layout.scss +41 -0
- package/dist/scss/v2/ImageCarousel/ImageCarousel-theme.scss +15 -0
- package/dist/scss/v2/LoadingIndicator/LoadingIndicator-layout.scss +39 -0
- package/dist/scss/v2/LoadingIndicator/LoadingIndicator-theme.scss +12 -0
- package/dist/scss/v2/Message/Message-layout.scss +373 -0
- package/dist/scss/v2/Message/Message-theme.scss +353 -0
- package/dist/scss/v2/MessageActionsBox/MessageActionsBox-layout.scss +48 -0
- package/dist/scss/v2/MessageActionsBox/MessageActionsBox-theme.scss +69 -0
- package/dist/scss/v2/MessageInput/MessageInput-layout.scss +186 -0
- package/dist/scss/v2/MessageInput/MessageInput-theme.scss +221 -0
- package/dist/scss/v2/MessageList/MessageList-layout.scss +61 -0
- package/dist/scss/v2/MessageList/MessageList-theme.scss +105 -0
- package/dist/scss/v2/MessageList/VirtualizedMessageList-layout.scss +44 -0
- package/dist/scss/v2/MessageList/VirtualizedMessageList-theme.scss +32 -0
- package/dist/scss/v2/MessageReactions/MessageReactions-layout.scss +64 -0
- package/dist/scss/v2/MessageReactions/MessageReactions-theme.scss +75 -0
- package/dist/scss/v2/MessageReactions/MessageReactionsSelector-layout.scss +52 -0
- package/dist/scss/v2/MessageReactions/MessageReactionsSelector-theme.scss +83 -0
- package/dist/scss/v2/Modal/Modal-layout.scss +40 -0
- package/dist/scss/v2/Modal/Modal-theme.scss +82 -0
- package/dist/scss/v2/Notification/MessageNotification-layout.scss +12 -0
- package/dist/scss/v2/Notification/MessageNotification-theme.scss +34 -0
- package/dist/scss/v2/Notification/Notification-layout.scss +3 -0
- package/dist/scss/v2/Notification/Notification-theme.scss +32 -0
- package/dist/scss/v2/Notification/NotificationList-layout.scss +11 -0
- package/dist/scss/v2/Notification/NotificationList-theme.scss +31 -0
- package/dist/scss/v2/Thread/Thread-layout.scss +47 -0
- package/dist/scss/v2/Thread/Thread-theme.scss +82 -0
- package/dist/scss/v2/Tooltip/Tooltip-layout.scss +30 -0
- package/dist/scss/v2/Tooltip/Tooltip-theme.scss +36 -0
- package/dist/scss/v2/TypingIndicator/TypingIndicator-layout.scss +27 -0
- package/dist/scss/v2/TypingIndicator/TypingIndicator-theme.scss +68 -0
- package/dist/scss/v2/_base.scss +29 -0
- package/dist/scss/v2/_global-layout-variables.scss +65 -0
- package/dist/scss/v2/_global-theme-variables.scss +166 -0
- package/dist/scss/v2/_palette-variables.scss +55 -0
- package/dist/scss/v2/_utils.scss +188 -0
- package/dist/scss/v2/common/CTAButton/CTAButton-layout.scss +4 -0
- package/dist/scss/v2/common/CTAButton/CTAButton-theme.scss +42 -0
- package/dist/scss/v2/common/CircleFAButton/CircleFAButton-layout.scss +14 -0
- package/dist/scss/v2/common/CircleFAButton/CircleFAButton-theme.scss +35 -0
- package/dist/scss/v2/index.layout.scss +31 -0
- package/dist/scss/v2/index.scss +36 -0
- package/dist/scss/{vendor → v2/vendor}/emoji-mart.scss +27 -8
- package/dist/stories/add-message.stories.d.ts +0 -1
- package/dist/stories/add-message.stories.d.ts.map +1 -1
- package/dist/stories/add-message.stories.js +0 -1
- package/dist/stories/edit-message.stories.d.ts +0 -1
- package/dist/stories/edit-message.stories.d.ts.map +1 -1
- package/dist/stories/edit-message.stories.js +0 -1
- package/dist/stories/hello.stories.d.ts +0 -1
- package/dist/stories/hello.stories.d.ts.map +1 -1
- package/dist/stories/hello.stories.js +0 -1
- package/dist/stories/jump-to-message.stories.d.ts +0 -1
- package/dist/stories/jump-to-message.stories.d.ts.map +1 -1
- package/dist/stories/jump-to-message.stories.js +0 -1
- package/dist/stories/mark-read.stories.d.ts +0 -1
- package/dist/stories/mark-read.stories.d.ts.map +1 -1
- package/dist/stories/mark-read.stories.js +0 -1
- package/dist/stories/message-status-readby-tooltip.stories.d.ts +0 -1
- package/dist/stories/message-status-readby-tooltip.stories.d.ts.map +1 -1
- package/dist/stories/message-status-readby-tooltip.stories.js +0 -1
- package/dist/stories/navigate-long-message-lists.stories.d.ts +0 -2
- package/dist/stories/navigate-long-message-lists.stories.d.ts.map +1 -1
- package/dist/stories/navigate-long-message-lists.stories.js +1 -11
- package/dist/stories/toggle-message-actions.stories.d.ts +0 -1
- package/dist/stories/toggle-message-actions.stories.d.ts.map +1 -1
- package/dist/stories/toggle-message-actions.stories.js +0 -1
- package/dist/stories/utils.d.ts.map +1 -1
- package/dist/stories/utils.js +2 -1
- package/dist/types/types.d.ts +7 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/utils.d.ts +2 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +4 -4
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +12 -7
- package/dist/components/Gallery/ModalWrapper.d.ts +0 -14
- package/dist/components/Gallery/ModalWrapper.d.ts.map +0 -1
- package/dist/components/Gallery/ModalWrapper.js +0 -8
- package/dist/components/Message/MessageCommerce.d.ts +0 -10
- package/dist/components/Message/MessageCommerce.d.ts.map +0 -1
- package/dist/components/Message/MessageCommerce.js +0 -64
- package/dist/components/Message/MessageLivestream.d.ts +0 -16
- package/dist/components/Message/MessageLivestream.d.ts.map +0 -1
- package/dist/components/Message/MessageLivestream.js +0 -164
- package/dist/components/Message/MessageTeam.d.ts +0 -11
- package/dist/components/Message/MessageTeam.d.ts.map +0 -1
- package/dist/components/Message/MessageTeam.js +0 -110
- package/dist/components/Message/hooks/useBreakpoint.d.ts +0 -6
- package/dist/components/Message/hooks/useBreakpoint.d.ts.map +0 -1
- package/dist/components/Message/hooks/useBreakpoint.js +0 -18
- package/dist/components/Message/hooks/useMobilePress.d.ts +0 -5
- package/dist/components/Message/hooks/useMobilePress.d.ts.map +0 -1
- package/dist/components/Message/hooks/useMobilePress.js +0 -33
- package/dist/scss/vendor/mml-react.scss +0 -1749
- package/dist/scss/vendor/react-file-utils.scss +0 -378
- package/dist/scss/vendor/react-image-gallery.scss +0 -224
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchBar.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelSearch/SearchBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AASf,OAAO,EAAqC,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAqBpF,oBAAY,mBAAmB,GAAG;IAChC,mCAAmC;IACnC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,mEAAmE;IACnE,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,2DAA2D;IAC3D,cAAc,EAAE,OAAO,CAAC;IACxB,wDAAwD;IACxD,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;CAC/C,CAAC;AAEF,oBAAY,wBAAwB,GAAG;IACrC,iEAAiE;IACjE,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC9B,+GAA+G;IAC/G,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,8EAA8E;IAC9E,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC/B,2DAA2D;IAC3D,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACpD,iDAAiD;IACjD,eAAe,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACvC,CAAC;AAEF,oBAAY,cAAc,GAAG,wBAAwB,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AAG/F,eAAO,MAAM,SAAS,UAAW,cAAc,gBAiH9C,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
+
t[p] = s[p];
|
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
+
t[p[i]] = s[p[i]];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
import React, { useCallback, useEffect, useRef, useState, } from 'react';
|
|
24
|
+
import clsx from 'clsx';
|
|
25
|
+
import { MenuIcon as DefaultMenuIcon, SearchIcon as DefaultSearchInputIcon, ReturnIcon, XIcon, } from './icons';
|
|
26
|
+
import { SearchInput as DefaultSearchInput } from './SearchInput';
|
|
27
|
+
var SearchBarButton = function (_a) {
|
|
28
|
+
var children = _a.children, className = _a.className, onClick = _a.onClick;
|
|
29
|
+
return (React.createElement("button", { className: clsx('str-chat__channel-search-bar-button', className), "data-testid": 'search-bar-button', onClick: onClick }, children));
|
|
30
|
+
};
|
|
31
|
+
// todo: add context menu control logic
|
|
32
|
+
export var SearchBar = function (props) {
|
|
33
|
+
var activateSearch = props.activateSearch, AppMenu = props.AppMenu, _a = props.ClearInputIcon, ClearInputIcon = _a === void 0 ? XIcon : _a, exitSearch = props.exitSearch, _b = props.ExitSearchIcon, ExitSearchIcon = _b === void 0 ? ReturnIcon : _b, inputIsFocused = props.inputIsFocused, _c = props.MenuIcon, MenuIcon = _c === void 0 ? DefaultMenuIcon : _c, searchBarRef = props.searchBarRef, _d = props.SearchInput, SearchInput = _d === void 0 ? DefaultSearchInput : _d, _e = props.SearchInputIcon, SearchInputIcon = _e === void 0 ? DefaultSearchInputIcon : _e, inputProps = __rest(props, ["activateSearch", "AppMenu", "ClearInputIcon", "exitSearch", "ExitSearchIcon", "inputIsFocused", "MenuIcon", "searchBarRef", "SearchInput", "SearchInputIcon"]);
|
|
34
|
+
var _f = useState(false), menuIsOpen = _f[0], setMenuIsOpen = _f[1];
|
|
35
|
+
var appMenuRef = useRef(null);
|
|
36
|
+
useEffect(function () {
|
|
37
|
+
if (!appMenuRef.current)
|
|
38
|
+
return;
|
|
39
|
+
var handleKeyDown = function (event) {
|
|
40
|
+
if (menuIsOpen && event.key === 'Escape') {
|
|
41
|
+
setMenuIsOpen(false);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
var clickListener = function (e) {
|
|
45
|
+
var _a;
|
|
46
|
+
if (!(e.target instanceof HTMLElement) ||
|
|
47
|
+
!menuIsOpen ||
|
|
48
|
+
((_a = appMenuRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)))
|
|
49
|
+
return;
|
|
50
|
+
setMenuIsOpen(false);
|
|
51
|
+
};
|
|
52
|
+
document.addEventListener('keydown', handleKeyDown);
|
|
53
|
+
document.addEventListener('click', clickListener);
|
|
54
|
+
return function () {
|
|
55
|
+
document.removeEventListener('keydown', handleKeyDown);
|
|
56
|
+
document.removeEventListener('click', clickListener);
|
|
57
|
+
};
|
|
58
|
+
}, [menuIsOpen]);
|
|
59
|
+
useEffect(function () {
|
|
60
|
+
if (!props.inputRef.current)
|
|
61
|
+
return;
|
|
62
|
+
var handleFocus = function () {
|
|
63
|
+
activateSearch();
|
|
64
|
+
};
|
|
65
|
+
var handleBlur = function (e) {
|
|
66
|
+
e.stopPropagation(); // handle blur/focus state with React state
|
|
67
|
+
};
|
|
68
|
+
props.inputRef.current.addEventListener('focus', handleFocus);
|
|
69
|
+
props.inputRef.current.addEventListener('blur', handleBlur);
|
|
70
|
+
return function () {
|
|
71
|
+
var _a, _b;
|
|
72
|
+
(_a = props.inputRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('focus', handleFocus);
|
|
73
|
+
(_b = props.inputRef.current) === null || _b === void 0 ? void 0 : _b.addEventListener('blur', handleBlur);
|
|
74
|
+
};
|
|
75
|
+
}, []);
|
|
76
|
+
var handleClearClick = useCallback(function () {
|
|
77
|
+
var _a;
|
|
78
|
+
inputProps.clearState();
|
|
79
|
+
(_a = inputProps.inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
80
|
+
}, []);
|
|
81
|
+
return (React.createElement("div", { className: 'str-chat__channel-search-bar', "data-testid": 'search-bar', ref: searchBarRef },
|
|
82
|
+
inputIsFocused ? (React.createElement(SearchBarButton, { className: 'str-chat__channel-search-bar-button--exit-search', onClick: exitSearch },
|
|
83
|
+
React.createElement(ExitSearchIcon, null))) : AppMenu ? (React.createElement(SearchBarButton, { className: 'str-chat__channel-search-bar-button--menu', onClick: function () { return setMenuIsOpen(function (prev) { return !prev; }); } },
|
|
84
|
+
React.createElement(MenuIcon, null))) : null,
|
|
85
|
+
React.createElement("div", { className: clsx('str-chat__channel-search-input--wrapper', inputProps.query && 'str-chat__channel-search-input--wrapper-active') },
|
|
86
|
+
React.createElement("div", { className: 'str-chat__channel-search-input--icon' },
|
|
87
|
+
React.createElement(SearchInputIcon, null)),
|
|
88
|
+
React.createElement(SearchInput, __assign({}, inputProps)),
|
|
89
|
+
React.createElement("button", { className: 'str-chat__channel-search-input--clear-button', "data-testid": 'clear-input-button', disabled: !inputProps.query, onClick: handleClearClick },
|
|
90
|
+
React.createElement(ClearInputIcon, null))),
|
|
91
|
+
menuIsOpen && AppMenu && (React.createElement("div", { ref: appMenuRef },
|
|
92
|
+
React.createElement(AppMenu, null)))));
|
|
93
|
+
};
|
|
@@ -1,25 +1,17 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
setQuery: React.Dispatch<React.SetStateAction<string>>;
|
|
6
|
-
setResults: React.Dispatch<React.SetStateAction<Array<ChannelOrUserResponse<StreamChatGenerics>>>>;
|
|
7
|
-
setResultsOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
8
|
-
setSearching: React.Dispatch<React.SetStateAction<boolean>>;
|
|
9
|
-
};
|
|
10
|
-
export declare type SearchInputProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
11
|
-
channelSearchParams: {
|
|
12
|
-
setQuery: React.Dispatch<React.SetStateAction<string>>;
|
|
13
|
-
setResults: React.Dispatch<React.SetStateAction<ChannelOrUserResponse<StreamChatGenerics>[]>>;
|
|
14
|
-
setResultsOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
15
|
-
setSearching: React.Dispatch<React.SetStateAction<boolean>>;
|
|
16
|
-
};
|
|
2
|
+
export declare type SearchInputController = {
|
|
3
|
+
/** Clears the channel search state */
|
|
4
|
+
clearState: () => void;
|
|
17
5
|
inputRef: React.RefObject<HTMLInputElement>;
|
|
6
|
+
/** Search input change handler */
|
|
18
7
|
onSearch: (event: React.BaseSyntheticEvent) => void;
|
|
8
|
+
/** Current search string */
|
|
19
9
|
query: string;
|
|
10
|
+
};
|
|
11
|
+
export declare type AdditionalSearchInputProps = {
|
|
20
12
|
/** Custom placeholder text to be displayed in the search input */
|
|
21
13
|
placeholder?: string;
|
|
22
|
-
searchFunction?: (params: ChannelSearchFunctionParams<StreamChatGenerics>, event: React.BaseSyntheticEvent) => Promise<void> | void;
|
|
23
14
|
};
|
|
24
|
-
export declare
|
|
15
|
+
export declare type SearchInputProps = AdditionalSearchInputProps & SearchInputController;
|
|
16
|
+
export declare const SearchInput: (props: SearchInputProps) => JSX.Element;
|
|
25
17
|
//# sourceMappingURL=SearchInput.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchInput.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelSearch/SearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,
|
|
1
|
+
{"version":3,"file":"SearchInput.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelSearch/SearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,oBAAY,qBAAqB,GAAG;IAClC,sCAAsC;IACtC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,kCAAkC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;IACpD,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,oBAAY,0BAA0B,GAAG;IACvC,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,oBAAY,gBAAgB,GAAG,0BAA0B,GAAG,qBAAqB,CAAC;AAElF,eAAO,MAAM,WAAW,UAAW,gBAAgB,gBAgBlD,CAAC"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { useTranslationContext } from '../../context/TranslationContext';
|
|
3
3
|
export var SearchInput = function (props) {
|
|
4
|
-
var
|
|
4
|
+
var inputRef = props.inputRef, onSearch = props.onSearch, placeholder = props.placeholder, query = props.query;
|
|
5
5
|
var t = useTranslationContext('SearchInput').t;
|
|
6
|
-
return (React.createElement("input", { className: 'str-chat__channel-search-input', onChange:
|
|
7
|
-
return searchFunction ? searchFunction(channelSearchParams, event) : onSearch(event);
|
|
8
|
-
}, placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : t('Search'), ref: inputRef, type: 'text', value: query }));
|
|
6
|
+
return (React.createElement("input", { className: 'str-chat__channel-search-input', "data-testid": 'search-input', onChange: onSearch, placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : t('Search'), ref: inputRef, type: 'text', value: query }));
|
|
9
7
|
};
|
|
@@ -1,28 +1,34 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ChannelOrUserResponse } from './utils';
|
|
3
3
|
import type { DefaultStreamChatGenerics } from '../../types/types';
|
|
4
|
-
export declare type
|
|
5
|
-
|
|
6
|
-
SearchResultItem: React.ComponentType<SearchResultItemProps<StreamChatGenerics>>;
|
|
7
|
-
selectResult: (result: ChannelOrUserResponse<StreamChatGenerics>) => Promise<void> | void;
|
|
4
|
+
export declare type SearchResultsHeaderProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Pick<SearchResultsProps<StreamChatGenerics>, 'results'>;
|
|
5
|
+
export declare type SearchResultsListProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Pick<SearchResultsProps<StreamChatGenerics>, 'results' | 'SearchResultItem' | 'selectResult'> & {
|
|
8
6
|
focusedUser?: number;
|
|
9
7
|
};
|
|
10
|
-
export declare type SearchResultItemProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
8
|
+
export declare type SearchResultItemProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Pick<SearchResultsProps<StreamChatGenerics>, 'selectResult'> & {
|
|
11
9
|
index: number;
|
|
12
10
|
result: ChannelOrUserResponse<StreamChatGenerics>;
|
|
13
|
-
selectResult: (result: ChannelOrUserResponse<StreamChatGenerics>) => Promise<void> | void;
|
|
14
11
|
focusedUser?: number;
|
|
15
12
|
};
|
|
16
|
-
export declare type
|
|
13
|
+
export declare type SearchResultsController<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
17
14
|
results: Array<ChannelOrUserResponse<StreamChatGenerics>> | [];
|
|
18
15
|
searching: boolean;
|
|
19
16
|
selectResult: (result: ChannelOrUserResponse<StreamChatGenerics>) => Promise<void> | void;
|
|
20
|
-
|
|
17
|
+
};
|
|
18
|
+
export declare type AdditionalSearchResultsProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
19
|
+
/** Display search results as an absolutely positioned popup, defaults to false and shows inline */
|
|
21
20
|
popupResults?: boolean;
|
|
21
|
+
/** Custom UI component to display empty search results */
|
|
22
22
|
SearchEmpty?: React.ComponentType;
|
|
23
|
+
/** Custom UI component to display the search loading state */
|
|
23
24
|
SearchLoading?: React.ComponentType;
|
|
25
|
+
/** Custom UI component to display a search result list item, defaults to and accepts the same props as: [DefaultSearchResultItem](https://github.com/GetStream/stream-chat-react/blob/master/src/components/ChannelSearch/SearchResults.tsx) */
|
|
24
26
|
SearchResultItem?: React.ComponentType<SearchResultItemProps<StreamChatGenerics>>;
|
|
27
|
+
/** Custom UI component to display the search results header */
|
|
25
28
|
SearchResultsHeader?: React.ComponentType;
|
|
29
|
+
/** Custom UI component to display all the search results, defaults to and accepts the same props as: [DefaultSearchResultsList](https://github.com/GetStream/stream-chat-react/blob/master/src/components/ChannelSearch/SearchResults.tsx) */
|
|
30
|
+
SearchResultsList?: React.ComponentType<SearchResultsListProps<StreamChatGenerics>>;
|
|
26
31
|
};
|
|
32
|
+
export declare type SearchResultsProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = AdditionalSearchResultsProps<StreamChatGenerics> & SearchResultsController<StreamChatGenerics>;
|
|
27
33
|
export declare const SearchResults: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: SearchResultsProps<StreamChatGenerics>) => JSX.Element;
|
|
28
34
|
//# sourceMappingURL=SearchResults.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchResults.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelSearch/SearchResults.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SearchResults.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelSearch/SearchResults.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8D,MAAM,OAAO,CAAC;AAKnF,OAAO,EAAE,qBAAqB,EAAa,MAAM,SAAS,CAAC;AAK3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAYnE,oBAAY,wBAAwB,CAClC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,SAAS,CAAC,CAAC;AAoB5D,oBAAY,sBAAsB,CAChC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,IAAI,CACN,kBAAkB,CAAC,kBAAkB,CAAC,EACtC,SAAS,GAAG,kBAAkB,GAAG,cAAc,CAChD,GAAG;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAwBF,oBAAY,qBAAqB,CAC/B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,cAAc,CAAC,GAAG;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA2EF,oBAAY,uBAAuB,CACjC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,OAAO,EAAE,KAAK,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/D,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,CAAC,MAAM,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3F,CAAC;AAEF,oBAAY,4BAA4B,CACtC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,mGAAmG;IACnG,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAClC,8DAA8D;IAC9D,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,gPAAgP;IAChP,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAClF,+DAA+D;IAC/D,mBAAmB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC1C,+OAA+O;IAC/O,iBAAiB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,CAAC,CAAC;CACrF,CAAC;AAEF,oBAAY,kBAAkB,CAC5B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,4BAA4B,CAAC,kBAAkB,CAAC,GAAG,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;AAEnG,eAAO,MAAM,aAAa,kJAwFzB,CAAC"}
|
|
@@ -1,9 +1,24 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useState } from 'react';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import { SearchIcon } from './icons';
|
|
4
|
+
import { ChannelPreview } from '../ChannelPreview';
|
|
2
5
|
import { isChannel } from './utils';
|
|
3
|
-
import { Avatar } from '../Avatar
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
var
|
|
6
|
+
import { Avatar } from '../Avatar';
|
|
7
|
+
import { useChatContext, useTranslationContext } from '../../context';
|
|
8
|
+
var DefaultSearchEmpty = function () {
|
|
9
|
+
var t = useTranslationContext('SearchResults').t;
|
|
10
|
+
return (React.createElement("div", { "aria-live": 'polite', className: 'str-chat__channel-search-container-empty' },
|
|
11
|
+
React.createElement(SearchIcon, null),
|
|
12
|
+
t('No results found')));
|
|
13
|
+
};
|
|
14
|
+
var DefaultSearchResultsHeader = function (_a) {
|
|
15
|
+
var results = _a.results;
|
|
16
|
+
var t = useTranslationContext('SearchResultsHeader').t;
|
|
17
|
+
return (React.createElement("div", { className: 'str-chat__channel-search-results-header', "data-testid": 'channel-search-results-header' }, t('searchResultsCount', {
|
|
18
|
+
count: results.length,
|
|
19
|
+
})));
|
|
20
|
+
};
|
|
21
|
+
var DefaultSearchResultsList = function (props) {
|
|
7
22
|
var focusedUser = props.focusedUser, results = props.results, _a = props.SearchResultItem, SearchResultItem = _a === void 0 ? DefaultSearchResultItem : _a, selectResult = props.selectResult;
|
|
8
23
|
return (React.createElement(React.Fragment, null, results.map(function (result, index) { return (React.createElement(SearchResultItem, { focusedUser: focusedUser, index: index, key: index, result: result, selectResult: selectResult })); })));
|
|
9
24
|
};
|
|
@@ -11,38 +26,39 @@ var DefaultSearchResultItem = function (props) {
|
|
|
11
26
|
var _a, _b;
|
|
12
27
|
var focusedUser = props.focusedUser, index = props.index, result = props.result, selectResult = props.selectResult;
|
|
13
28
|
var focused = focusedUser === index;
|
|
29
|
+
var themeVersion = useChatContext().themeVersion;
|
|
30
|
+
var className = clsx('str-chat__channel-search-result', focused && 'str-chat__channel-search-result--focused focused');
|
|
14
31
|
if (isChannel(result)) {
|
|
15
32
|
var channel_1 = result;
|
|
16
|
-
return (React.createElement("button", { "aria-label": "Select Channel: "
|
|
33
|
+
return themeVersion === '2' ? (React.createElement(ChannelPreview, { channel: channel_1, className: className, onSelect: function () { return selectResult(channel_1); } })) : (React.createElement("button", { "aria-label": "Select Channel: ".concat(((_a = channel_1.data) === null || _a === void 0 ? void 0 : _a.name) || ''), className: className, "data-testid": 'channel-search-result-channel', onClick: function () { return selectResult(channel_1); }, role: 'option' },
|
|
17
34
|
React.createElement("div", { className: 'result-hashtag' }, "#"),
|
|
18
35
|
React.createElement("p", { className: 'channel-search__result-text' }, (_b = channel_1.data) === null || _b === void 0 ? void 0 : _b.name)));
|
|
19
36
|
}
|
|
20
37
|
else {
|
|
21
|
-
return (React.createElement("button", { "aria-label": "Select User Channel: "
|
|
22
|
-
React.createElement(Avatar, { image: result.image, user: result }),
|
|
23
|
-
result.name || result.id));
|
|
38
|
+
return (React.createElement("button", { "aria-label": "Select User Channel: ".concat(result.name || ''), className: className, "data-testid": 'channel-search-result-user', onClick: function () { return selectResult(result); }, role: 'option' },
|
|
39
|
+
React.createElement(Avatar, { image: result.image, name: result.name || result.id, size: themeVersion === '2' ? 40 : undefined, user: result }),
|
|
40
|
+
React.createElement("div", { className: 'str-chat__channel-search-result--display-name' }, result.name || result.id)));
|
|
24
41
|
}
|
|
25
42
|
};
|
|
43
|
+
var ResultsContainer = function (_a) {
|
|
44
|
+
var children = _a.children, popupResults = _a.popupResults;
|
|
45
|
+
var containerStyle = popupResults ? 'popup' : 'inline';
|
|
46
|
+
return (React.createElement("div", { "aria-label": 'Channel search results', className: "str-chat__channel-search-container str-chat__channel-search-result-list ".concat(containerStyle) }, children));
|
|
47
|
+
};
|
|
26
48
|
export var SearchResults = function (props) {
|
|
27
|
-
var _a = props.
|
|
49
|
+
var popupResults = props.popupResults, results = props.results, searching = props.searching, _a = props.SearchEmpty, SearchEmpty = _a === void 0 ? DefaultSearchEmpty : _a, _b = props.SearchResultsHeader, SearchResultsHeader = _b === void 0 ? DefaultSearchResultsHeader : _b, SearchLoading = props.SearchLoading, _c = props.SearchResultItem, SearchResultItem = _c === void 0 ? DefaultSearchResultItem : _c, _d = props.SearchResultsList, SearchResultsList = _d === void 0 ? DefaultSearchResultsList : _d, selectResult = props.selectResult;
|
|
28
50
|
var t = useTranslationContext('SearchResults').t;
|
|
29
|
-
var
|
|
30
|
-
var device = useBreakpoint().device;
|
|
31
|
-
var containerStyle = popupResults && device === 'full' ? 'popup' : 'inline';
|
|
32
|
-
var ResultsContainer = function (_a) {
|
|
33
|
-
var children = _a.children;
|
|
34
|
-
return (React.createElement("div", { className: "str-chat__channel-search-container " + containerStyle }, children));
|
|
35
|
-
};
|
|
51
|
+
var _e = useState(), focusedResult = _e[0], setFocusedResult = _e[1];
|
|
36
52
|
var handleKeyDown = useCallback(function (event) {
|
|
37
53
|
if (event.key === 'ArrowUp') {
|
|
38
|
-
|
|
54
|
+
setFocusedResult(function (prevFocused) {
|
|
39
55
|
if (prevFocused === undefined)
|
|
40
56
|
return 0;
|
|
41
57
|
return prevFocused === 0 ? results.length - 1 : prevFocused - 1;
|
|
42
58
|
});
|
|
43
59
|
}
|
|
44
60
|
if (event.key === 'ArrowDown') {
|
|
45
|
-
|
|
61
|
+
setFocusedResult(function (prevFocused) {
|
|
46
62
|
if (prevFocused === undefined)
|
|
47
63
|
return 0;
|
|
48
64
|
return prevFocused === results.length - 1 ? 0 : prevFocused + 1;
|
|
@@ -50,23 +66,24 @@ export var SearchResults = function (props) {
|
|
|
50
66
|
}
|
|
51
67
|
if (event.key === 'Enter') {
|
|
52
68
|
event.preventDefault();
|
|
53
|
-
if (
|
|
54
|
-
selectResult(results[
|
|
55
|
-
return
|
|
69
|
+
if (focusedResult !== undefined) {
|
|
70
|
+
selectResult(results[focusedResult]);
|
|
71
|
+
return setFocusedResult(undefined);
|
|
56
72
|
}
|
|
57
73
|
}
|
|
58
|
-
}, [
|
|
74
|
+
}, [focusedResult]);
|
|
59
75
|
useEffect(function () {
|
|
60
76
|
document.addEventListener('keydown', handleKeyDown, false);
|
|
61
77
|
return function () { return document.removeEventListener('keydown', handleKeyDown); };
|
|
62
78
|
}, [handleKeyDown]);
|
|
63
79
|
if (searching) {
|
|
64
|
-
return (React.createElement(ResultsContainer,
|
|
80
|
+
return (React.createElement(ResultsContainer, { popupResults: popupResults }, SearchLoading ? (React.createElement(SearchLoading, null)) : (React.createElement("div", { className: 'str-chat__channel-search-container-searching', "data-testid": 'search-in-progress-indicator' }, t('Searching...')))));
|
|
65
81
|
}
|
|
66
82
|
if (!results.length) {
|
|
67
|
-
return (React.createElement(ResultsContainer,
|
|
83
|
+
return (React.createElement(ResultsContainer, { popupResults: popupResults },
|
|
84
|
+
React.createElement(SearchEmpty, null)));
|
|
68
85
|
}
|
|
69
|
-
return (React.createElement(ResultsContainer,
|
|
70
|
-
|
|
71
|
-
React.createElement(
|
|
86
|
+
return (React.createElement(ResultsContainer, { popupResults: popupResults },
|
|
87
|
+
React.createElement(SearchResultsHeader, { results: results }),
|
|
88
|
+
React.createElement(SearchResultsList, { focusedUser: focusedResult, results: results, SearchResultItem: SearchResultItem, selectResult: selectResult })));
|
|
72
89
|
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ChannelOrUserResponse } from '../utils';
|
|
3
|
+
import type { ChannelFilters, ChannelOptions, ChannelSort, UserFilters, UserOptions, UserSort } from 'stream-chat';
|
|
4
|
+
import type { Channel } from 'stream-chat';
|
|
5
|
+
import type { SearchBarController } from '../SearchBar';
|
|
6
|
+
import type { SearchInputController } from '../SearchInput';
|
|
7
|
+
import type { SearchResultsController } from '../SearchResults';
|
|
8
|
+
import type { DefaultStreamChatGenerics } from '../../../types/types';
|
|
9
|
+
export declare type ChannelSearchFunctionParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
10
|
+
setQuery: React.Dispatch<React.SetStateAction<string>>;
|
|
11
|
+
setResults: React.Dispatch<React.SetStateAction<ChannelOrUserResponse<StreamChatGenerics>[]>>;
|
|
12
|
+
setResultsOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
13
|
+
setSearching: React.Dispatch<React.SetStateAction<boolean>>;
|
|
14
|
+
};
|
|
15
|
+
export declare type SearchController<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = SearchInputController & SearchBarController & SearchResultsController<StreamChatGenerics>;
|
|
16
|
+
export declare type SearchQueryParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
17
|
+
channelFilters?: {
|
|
18
|
+
filters?: ChannelFilters<StreamChatGenerics>;
|
|
19
|
+
options?: ChannelOptions;
|
|
20
|
+
sort?: ChannelSort<StreamChatGenerics>;
|
|
21
|
+
};
|
|
22
|
+
userFilters?: {
|
|
23
|
+
filters?: UserFilters<StreamChatGenerics>;
|
|
24
|
+
options?: UserOptions;
|
|
25
|
+
sort?: UserSort<StreamChatGenerics>;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export declare type ChannelSearchParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
29
|
+
/** The type of channel to create on user result select, defaults to `messaging` */
|
|
30
|
+
channelType?: string;
|
|
31
|
+
/** Clear search state / results on every click outside the search input, defaults to true */
|
|
32
|
+
clearSearchOnClickOutside?: boolean;
|
|
33
|
+
/** Search can be enabled, defaults to false */
|
|
34
|
+
enabled?: boolean;
|
|
35
|
+
/** Custom handler function to run on search result item selection */
|
|
36
|
+
onSelectResult?: (params: ChannelSearchFunctionParams<StreamChatGenerics>, result: ChannelOrUserResponse<StreamChatGenerics>) => Promise<void> | void;
|
|
37
|
+
/** Boolean to search for channels as well as users in the server query, default is false and just searches for users */
|
|
38
|
+
searchForChannels?: boolean;
|
|
39
|
+
/** Custom search function to override the default implementation */
|
|
40
|
+
searchFunction?: (params: ChannelSearchFunctionParams<StreamChatGenerics>, event: React.BaseSyntheticEvent) => Promise<void> | void;
|
|
41
|
+
/** Object containing filters/sort/options overrides for user search */
|
|
42
|
+
searchQueryParams?: SearchQueryParams<StreamChatGenerics>;
|
|
43
|
+
};
|
|
44
|
+
declare type ChannelSearchControllerParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = ChannelSearchParams<StreamChatGenerics> & {
|
|
45
|
+
/** Set the array of channels displayed in the ChannelList */
|
|
46
|
+
setChannels: React.Dispatch<React.SetStateAction<Array<Channel<StreamChatGenerics>>>>;
|
|
47
|
+
};
|
|
48
|
+
export declare const useChannelSearch: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channelType, clearSearchOnClickOutside, enabled, onSelectResult, searchForChannels, searchFunction, searchQueryParams, setChannels, }: ChannelSearchControllerParams<StreamChatGenerics>) => SearchController<StreamChatGenerics>;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=useChannelSearch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChannelSearch.d.ts","sourceRoot":"","sources":["../../../../src/components/ChannelSearch/hooks/useChannelSearch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D,OAAO,EAAE,qBAAqB,EAAa,MAAM,UAAU,CAAC;AAI5D,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,WAAW,EACX,QAAQ,EACT,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,oBAAY,2BAA2B,CACrC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9F,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;CAC7D,CAAC;AAEF,oBAAY,gBAAgB,CAC1B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,qBAAqB,GAAG,mBAAmB,GAAG,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;AAE9F,oBAAY,iBAAiB,CAC3B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,cAAc,CAAC,EAAE;QACf,OAAO,CAAC,EAAE,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC7C,OAAO,CAAC,EAAE,cAAc,CAAC;QACzB,IAAI,CAAC,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;KACxC,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;QAC1C,OAAO,CAAC,EAAE,WAAW,CAAC;QACtB,IAAI,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;KACrC,CAAC;CACH,CAAC;AAEF,oBAAY,mBAAmB,CAC7B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6FAA6F;IAC7F,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qEAAqE;IACrE,cAAc,CAAC,EAAE,CACf,MAAM,EAAE,2BAA2B,CAAC,kBAAkB,CAAC,EACvD,MAAM,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,KAC9C,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,wHAAwH;IACxH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oEAAoE;IACpE,cAAc,CAAC,EAAE,CACf,MAAM,EAAE,2BAA2B,CAAC,kBAAkB,CAAC,EACvD,KAAK,EAAE,KAAK,CAAC,kBAAkB,KAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;CAC3D,CAAC;AAEF,aAAK,6BAA6B,CAChC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,mBAAmB,CAAC,kBAAkB,CAAC,GAAG;IAC5C,6DAA6D;IAC7D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;CACvF,CAAC;AAEF,eAAO,MAAM,gBAAgB,wTAiM5B,CAAC"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
23
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
+
function step(op) {
|
|
26
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
+
while (_) try {
|
|
28
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
29
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
+
switch (op[0]) {
|
|
31
|
+
case 0: case 1: t = op; break;
|
|
32
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
+
default:
|
|
36
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
+
if (t[2]) _.ops.pop();
|
|
41
|
+
_.trys.pop(); continue;
|
|
42
|
+
}
|
|
43
|
+
op = body.call(thisArg, _);
|
|
44
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
49
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
50
|
+
if (ar || !(i in from)) {
|
|
51
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
52
|
+
ar[i] = from[i];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
56
|
+
};
|
|
57
|
+
import { useEffect, useRef, useState } from 'react';
|
|
58
|
+
import throttle from 'lodash.throttle';
|
|
59
|
+
import uniqBy from 'lodash.uniqby';
|
|
60
|
+
import { isChannel } from '../utils';
|
|
61
|
+
import { useChatContext } from '../../../context/ChatContext';
|
|
62
|
+
export var useChannelSearch = function (_a) {
|
|
63
|
+
var _b = _a.channelType, channelType = _b === void 0 ? 'messaging' : _b, _c = _a.clearSearchOnClickOutside, clearSearchOnClickOutside = _c === void 0 ? true : _c, _d = _a.enabled, enabled = _d === void 0 ? false : _d, onSelectResult = _a.onSelectResult, _e = _a.searchForChannels, searchForChannels = _e === void 0 ? false : _e, searchFunction = _a.searchFunction, searchQueryParams = _a.searchQueryParams, setChannels = _a.setChannels;
|
|
64
|
+
var _f = useChatContext('useChannelSearch'), client = _f.client, navOpen = _f.navOpen, setActiveChannel = _f.setActiveChannel, themeVersion = _f.themeVersion;
|
|
65
|
+
var _g = useState(false), inputIsFocused = _g[0], setInputIsFocused = _g[1];
|
|
66
|
+
var _h = useState(''), query = _h[0], setQuery = _h[1];
|
|
67
|
+
var _j = useState([]), results = _j[0], setResults = _j[1];
|
|
68
|
+
var _k = useState(false), resultsOpen = _k[0], setResultsOpen = _k[1];
|
|
69
|
+
var _l = useState(false), searching = _l[0], setSearching = _l[1];
|
|
70
|
+
var inputRef = useRef(null);
|
|
71
|
+
var searchBarRef = useRef(null);
|
|
72
|
+
var clearState = function () {
|
|
73
|
+
setQuery('');
|
|
74
|
+
setResults([]);
|
|
75
|
+
setResultsOpen(false);
|
|
76
|
+
setSearching(false);
|
|
77
|
+
};
|
|
78
|
+
var activateSearch = function () {
|
|
79
|
+
setInputIsFocused(true);
|
|
80
|
+
};
|
|
81
|
+
var exitSearch = function () {
|
|
82
|
+
var _a;
|
|
83
|
+
setInputIsFocused(false);
|
|
84
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.blur();
|
|
85
|
+
clearState();
|
|
86
|
+
};
|
|
87
|
+
useEffect(function () {
|
|
88
|
+
if (!enabled)
|
|
89
|
+
return;
|
|
90
|
+
var clickListener = function (event) {
|
|
91
|
+
var _a, _b;
|
|
92
|
+
if (!(event.target instanceof HTMLElement))
|
|
93
|
+
return;
|
|
94
|
+
var isInputClick = themeVersion === '2'
|
|
95
|
+
? (_a = searchBarRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target)
|
|
96
|
+
: (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.contains(event.target);
|
|
97
|
+
if (isInputClick)
|
|
98
|
+
return;
|
|
99
|
+
if ((navOpen && inputIsFocused) ||
|
|
100
|
+
(resultsOpen && clearSearchOnClickOutside) ||
|
|
101
|
+
(inputIsFocused && !query)) {
|
|
102
|
+
exitSearch();
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
document.addEventListener('click', clickListener);
|
|
106
|
+
return function () { return document.removeEventListener('click', clickListener); };
|
|
107
|
+
}, [enabled, inputIsFocused, resultsOpen]);
|
|
108
|
+
useEffect(function () {
|
|
109
|
+
if (!(inputRef.current && enabled))
|
|
110
|
+
return;
|
|
111
|
+
var handleKeyDown = function (event) {
|
|
112
|
+
if (event.key === 'Escape')
|
|
113
|
+
return exitSearch();
|
|
114
|
+
};
|
|
115
|
+
inputRef.current.addEventListener('keydown', handleKeyDown);
|
|
116
|
+
return function () {
|
|
117
|
+
var _a;
|
|
118
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('keydown', handleKeyDown);
|
|
119
|
+
};
|
|
120
|
+
}, []);
|
|
121
|
+
var selectResult = function (result) { return __awaiter(void 0, void 0, void 0, function () {
|
|
122
|
+
var selectedChannel, newChannel;
|
|
123
|
+
return __generator(this, function (_a) {
|
|
124
|
+
switch (_a.label) {
|
|
125
|
+
case 0:
|
|
126
|
+
if (!client.userID)
|
|
127
|
+
return [2 /*return*/];
|
|
128
|
+
if (!onSelectResult) return [3 /*break*/, 2];
|
|
129
|
+
return [4 /*yield*/, onSelectResult({
|
|
130
|
+
setQuery: setQuery,
|
|
131
|
+
setResults: setResults,
|
|
132
|
+
setResultsOpen: setResultsOpen,
|
|
133
|
+
setSearching: setSearching,
|
|
134
|
+
}, result)];
|
|
135
|
+
case 1:
|
|
136
|
+
_a.sent();
|
|
137
|
+
return [2 /*return*/];
|
|
138
|
+
case 2:
|
|
139
|
+
if (!isChannel(result)) return [3 /*break*/, 3];
|
|
140
|
+
setActiveChannel(result);
|
|
141
|
+
selectedChannel = result;
|
|
142
|
+
return [3 /*break*/, 5];
|
|
143
|
+
case 3:
|
|
144
|
+
newChannel = client.channel(channelType, { members: [client.userID, result.id] });
|
|
145
|
+
return [4 /*yield*/, newChannel.watch()];
|
|
146
|
+
case 4:
|
|
147
|
+
_a.sent();
|
|
148
|
+
setActiveChannel(newChannel);
|
|
149
|
+
selectedChannel = newChannel;
|
|
150
|
+
_a.label = 5;
|
|
151
|
+
case 5:
|
|
152
|
+
setChannels(function (channels) { return uniqBy(__spreadArray([selectedChannel], channels, true), 'cid'); });
|
|
153
|
+
if (clearSearchOnClickOutside) {
|
|
154
|
+
clearState();
|
|
155
|
+
}
|
|
156
|
+
return [2 /*return*/];
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}); };
|
|
160
|
+
var getChannels = function (text) { return __awaiter(void 0, void 0, void 0, function () {
|
|
161
|
+
var userResponse, channelResponse, _a, channels, users_1, users, error_1;
|
|
162
|
+
var _b, _c, _d, _e, _f, _g;
|
|
163
|
+
return __generator(this, function (_h) {
|
|
164
|
+
switch (_h.label) {
|
|
165
|
+
case 0:
|
|
166
|
+
if (!text || searching)
|
|
167
|
+
return [2 /*return*/];
|
|
168
|
+
setSearching(true);
|
|
169
|
+
_h.label = 1;
|
|
170
|
+
case 1:
|
|
171
|
+
_h.trys.push([1, 6, , 7]);
|
|
172
|
+
return [4 /*yield*/, client.queryUsers(__assign({ $or: [{ id: { $autocomplete: text } }, { name: { $autocomplete: text } }], id: { $ne: client.userID } }, (_b = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _b === void 0 ? void 0 : _b.filters), __assign({ id: 1 }, (_c = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _c === void 0 ? void 0 : _c.sort), __assign({ limit: 8 }, (_d = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _d === void 0 ? void 0 : _d.options))];
|
|
173
|
+
case 2:
|
|
174
|
+
userResponse = _h.sent();
|
|
175
|
+
if (!searchForChannels) return [3 /*break*/, 4];
|
|
176
|
+
channelResponse = client.queryChannels(__assign({ name: { $autocomplete: text } }, (_e = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _e === void 0 ? void 0 : _e.filters), ((_f = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _f === void 0 ? void 0 : _f.sort) || {}, __assign({ limit: 5 }, (_g = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _g === void 0 ? void 0 : _g.options));
|
|
177
|
+
return [4 /*yield*/, Promise.all([channelResponse, userResponse])];
|
|
178
|
+
case 3:
|
|
179
|
+
_a = _h.sent(), channels = _a[0], users_1 = _a[1].users;
|
|
180
|
+
setResults(__spreadArray(__spreadArray([], channels, true), users_1, true));
|
|
181
|
+
setResultsOpen(true);
|
|
182
|
+
setSearching(false);
|
|
183
|
+
return [2 /*return*/];
|
|
184
|
+
case 4: return [4 /*yield*/, Promise.resolve(userResponse)];
|
|
185
|
+
case 5:
|
|
186
|
+
users = (_h.sent()).users;
|
|
187
|
+
setResults(users);
|
|
188
|
+
setResultsOpen(true);
|
|
189
|
+
return [3 /*break*/, 7];
|
|
190
|
+
case 6:
|
|
191
|
+
error_1 = _h.sent();
|
|
192
|
+
clearState();
|
|
193
|
+
console.error(error_1);
|
|
194
|
+
return [3 /*break*/, 7];
|
|
195
|
+
case 7:
|
|
196
|
+
setSearching(false);
|
|
197
|
+
return [2 /*return*/];
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
}); };
|
|
201
|
+
var getChannelsThrottled = throttle(getChannels, 200);
|
|
202
|
+
var onSearch = function (event) {
|
|
203
|
+
event.preventDefault();
|
|
204
|
+
if (!enabled)
|
|
205
|
+
return;
|
|
206
|
+
if (searchFunction) {
|
|
207
|
+
searchFunction({
|
|
208
|
+
setQuery: setQuery,
|
|
209
|
+
setResults: setResults,
|
|
210
|
+
setResultsOpen: setResultsOpen,
|
|
211
|
+
setSearching: setSearching,
|
|
212
|
+
}, event);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
setQuery(event.target.value);
|
|
216
|
+
getChannelsThrottled(event.target.value);
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
return {
|
|
220
|
+
activateSearch: activateSearch,
|
|
221
|
+
clearState: clearState,
|
|
222
|
+
exitSearch: exitSearch,
|
|
223
|
+
inputIsFocused: inputIsFocused,
|
|
224
|
+
inputRef: inputRef,
|
|
225
|
+
onSearch: onSearch,
|
|
226
|
+
query: query,
|
|
227
|
+
results: results,
|
|
228
|
+
searchBarRef: searchBarRef,
|
|
229
|
+
searching: searching,
|
|
230
|
+
selectResult: selectResult,
|
|
231
|
+
};
|
|
232
|
+
};
|