stream-chat-react-native-core 3.10.2 → 4.0.0-beta.4
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/lib/commonjs/components/Attachment/Attachment.js +2 -2
- package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
- package/lib/commonjs/components/Attachment/AttachmentActions.js.map +1 -1
- package/lib/commonjs/components/Attachment/Card.js +18 -15
- package/lib/commonjs/components/Attachment/Card.js.map +1 -1
- package/lib/commonjs/components/Attachment/FileAttachment.js +8 -8
- package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
- package/lib/commonjs/components/Attachment/FileIcon.js.map +1 -1
- package/lib/commonjs/components/Attachment/Gallery.js +97 -113
- package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
- package/lib/commonjs/components/Attachment/Giphy.js +112 -148
- package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildGallery.js +46 -0
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -0
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js +88 -0
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js.map +1 -0
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js +75 -0
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js.map +1 -0
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js +43 -0
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js.map +1 -0
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js +30 -0
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -0
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnailGrid.js +49 -0
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnailGrid.js.map +1 -0
- package/lib/commonjs/components/Attachment/utils/buildGallery/types.js +4 -0
- package/lib/commonjs/components/Attachment/utils/buildGallery/types.js.map +1 -0
- package/lib/commonjs/components/Attachment/utils/getAspectRatio.js +14 -0
- package/lib/commonjs/components/Attachment/utils/getAspectRatio.js.map +1 -0
- package/lib/commonjs/components/Attachment/utils/getGalleryImageBorderRadius.js +36 -0
- package/lib/commonjs/components/Attachment/utils/getGalleryImageBorderRadius.js.map +1 -0
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +9 -8
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +21 -45
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
- package/lib/commonjs/components/AutoCompleteInput/{CommandsItem.js → AutoCompleteSuggestionCommandIcon.js} +21 -94
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js.map +1 -0
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +145 -0
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -0
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +248 -0
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -0
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +223 -0
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -0
- package/lib/commonjs/components/Avatar/Avatar.js +13 -7
- package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
- package/lib/commonjs/components/Avatar/GroupAvatar.js +10 -10
- package/lib/commonjs/components/Avatar/GroupAvatar.js.map +1 -1
- package/lib/commonjs/components/Channel/Channel.js +332 -247
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js +5 -5
- package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +7 -5
- package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +9 -31
- package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateOwnCapabilitiesContext.js +35 -0
- package/lib/commonjs/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -0
- package/lib/commonjs/components/ChannelList/ChannelList.js +6 -6
- package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js +5 -4
- package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelListHeaderErrorIndicator.js +6 -7
- package/lib/commonjs/components/ChannelList/ChannelListHeaderErrorIndicator.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +4 -3
- package/lib/commonjs/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelListMessenger.js +17 -17
- package/lib/commonjs/components/ChannelList/ChannelListMessenger.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js +2 -2
- package/lib/commonjs/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelDeleted.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelHidden.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelTruncated.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelUpdated.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelVisible.js +2 -2
- package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelVisible.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js +2 -2
- package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js +3 -3
- package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/listeners/useUserPresence.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js +2 -2
- package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +89 -64
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/commonjs/components/ChannelList/utils.js +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js +2 -2
- package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +2 -2
- package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js +49 -20
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js +51 -0
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js.map +1 -0
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js +4 -4
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewTitle.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewUnreadCount.js +2 -2
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewUnreadCount.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js +16 -7
- package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js +2 -1
- package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
- package/lib/commonjs/components/Chat/Chat.js.map +1 -1
- package/lib/commonjs/components/Chat/hooks/useIsOnline.js +12 -5
- package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/ImageGallery.js +90 -58
- package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +2 -2
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +12 -12
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +14 -16
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +7 -7
- package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js +5 -5
- package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
- package/lib/commonjs/components/Indicators/LoadingErrorIndicator.js.map +1 -1
- package/lib/commonjs/components/Indicators/LoadingIndicator.js +9 -9
- package/lib/commonjs/components/Indicators/LoadingIndicator.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js +151 -860
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js +6 -6
- package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +39 -38
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js +8 -6
- package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +33 -21
- package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js +122 -0
- package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -0
- package/lib/commonjs/components/Message/MessageSimple/MessageReplies.js +5 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageReplies.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js +5 -5
- package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +27 -13
- package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js +25 -24
- package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js +7 -3
- package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +52 -80
- package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js +89 -0
- package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js.map +1 -0
- package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.test.js +46 -0
- package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -0
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +170 -73
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js +240 -0
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js.map +1 -0
- package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +1 -5
- package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
- package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js +307 -0
- package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -0
- package/lib/commonjs/components/Message/hooks/useMessageActions.js +563 -0
- package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -0
- package/lib/commonjs/components/Message/utils/messageActions.js +17 -15
- package/lib/commonjs/components/Message/utils/messageActions.js.map +1 -1
- package/lib/commonjs/components/Message/utils/removeReservedFields.js.map +1 -1
- package/lib/commonjs/components/MessageInput/AttachButton.js +3 -3
- package/lib/commonjs/components/MessageInput/AttachButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/CommandsButton.js +3 -3
- package/lib/commonjs/components/MessageInput/CommandsButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/CooldownTimer.js +78 -0
- package/lib/commonjs/components/MessageInput/CooldownTimer.js.map +1 -0
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js +4 -4
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +9 -9
- package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
- package/lib/commonjs/components/MessageInput/InputButtons.js +17 -22
- package/lib/commonjs/components/MessageInput/InputButtons.js.map +1 -1
- package/lib/commonjs/components/MessageInput/MessageInput.js +93 -65
- package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/commonjs/components/MessageInput/MoreOptionsButton.js +3 -3
- package/lib/commonjs/components/MessageInput/MoreOptionsButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js +71 -0
- package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js.map +1 -0
- package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js +4 -3
- package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/hooks/useCooldown.js +63 -0
- package/lib/commonjs/components/MessageInput/hooks/useCooldown.js.map +1 -0
- package/lib/commonjs/components/MessageInput/hooks/useCountdown.js +57 -0
- package/lib/commonjs/components/MessageInput/hooks/useCountdown.js.map +1 -0
- package/lib/commonjs/components/MessageList/DateHeader.js +2 -2
- package/lib/commonjs/components/MessageList/DateHeader.js.map +1 -1
- package/lib/commonjs/components/MessageList/InlineDateSeparator.js +2 -2
- package/lib/commonjs/components/MessageList/InlineDateSeparator.js.map +1 -1
- package/lib/commonjs/components/MessageList/InlineLoadingMoreIndicator.js +1 -1
- package/lib/commonjs/components/MessageList/InlineLoadingMoreRecentIndicator.js +1 -1
- package/lib/commonjs/components/MessageList/InlineLoadingMoreThreadIndicator.js +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +77 -44
- package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageSystem.js.map +1 -1
- package/lib/commonjs/components/MessageList/TypingIndicator.js +5 -5
- package/lib/commonjs/components/MessageList/TypingIndicator.js.map +1 -1
- package/lib/commonjs/components/MessageList/hooks/useMessageList.js +23 -10
- package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/hooks/useTypingString.js +2 -2
- package/lib/commonjs/components/MessageList/hooks/useTypingString.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getDateSeparators.js +2 -1
- package/lib/commonjs/components/MessageList/utils/getDateSeparators.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getGroupStyles.js +10 -5
- package/lib/commonjs/components/MessageList/utils/getGroupStyles.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js +3 -1
- package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
- package/lib/{module/components/MessageOverlay/MessageActions.js → commonjs/components/MessageOverlay/MessageActionList.js} +33 -85
- package/lib/commonjs/components/MessageOverlay/MessageActionList.js.map +1 -0
- package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js +131 -0
- package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js.map +1 -0
- package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +97 -78
- package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js +38 -0
- package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js.map +1 -0
- package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js +12 -11
- package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/OverlayReactions.js +31 -34
- package/lib/commonjs/components/MessageOverlay/OverlayReactions.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/OverlayReactionsAvatar.js +41 -0
- package/lib/commonjs/components/MessageOverlay/OverlayReactionsAvatar.js.map +1 -0
- package/lib/commonjs/components/MessageOverlay/hooks/useMessageActionAnimation.js +37 -0
- package/lib/commonjs/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +1 -0
- package/lib/commonjs/components/Reply/Reply.js +25 -19
- package/lib/commonjs/components/Reply/Reply.js.map +1 -1
- package/lib/commonjs/components/Thread/Thread.js +11 -2
- package/lib/commonjs/components/Thread/Thread.js.map +1 -1
- package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +20 -12
- package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
- package/lib/commonjs/components/docs/ListProps.md +1 -1
- package/lib/commonjs/components/docs/data.js +1 -1
- package/lib/commonjs/components/index.js +133 -55
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +68 -0
- package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -0
- package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js +2 -2
- package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
- package/lib/commonjs/contexts/channelContext/ChannelContext.js +2 -2
- package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
- package/lib/commonjs/contexts/channelsContext/ChannelsContext.js +2 -2
- package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
- package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js +155 -0
- package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -0
- package/lib/commonjs/contexts/channelsStateContext/useChannelState.js +144 -0
- package/lib/commonjs/contexts/channelsStateContext/useChannelState.js.map +1 -0
- package/lib/commonjs/contexts/chatContext/ChatContext.js +2 -2
- package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
- package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js +2 -2
- package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
- package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js +2 -2
- package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js.map +1 -1
- package/lib/commonjs/contexts/messageContext/MessageContext.js +2 -2
- package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +122 -84
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +9 -5
- package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +10 -3
- package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
- package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js +5 -19
- package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
- package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.js +36 -0
- package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.js.map +1 -0
- package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js +105 -0
- package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +1 -0
- package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
- package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayContext.js +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +55 -46
- package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
- package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +61 -0
- package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js.map +1 -0
- package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +2 -2
- package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
- package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +20 -33
- package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/ThemeContext.js +2 -2
- package/lib/commonjs/contexts/themeContext/ThemeContext.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js +45 -20
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/contexts/threadContext/ThreadContext.js +2 -2
- package/lib/commonjs/contexts/threadContext/ThreadContext.js.map +1 -1
- package/lib/commonjs/contexts/translationContext/TranslationContext.js +1 -1
- package/lib/commonjs/contexts/translationContext/TranslationContext.js.map +1 -1
- package/lib/commonjs/contexts/typingContext/TypingContext.js +2 -2
- package/lib/commonjs/contexts/typingContext/TypingContext.js.map +1 -1
- package/lib/commonjs/contexts/utils/getDisplayName.js.map +1 -1
- package/lib/commonjs/emoji-data/compiled.js +0 -315
- package/lib/commonjs/emoji-data/compiled.js.map +1 -1
- package/lib/commonjs/emoji-data/emojiNames.js +0 -105
- package/lib/commonjs/emoji-data/emojiNames.js.map +1 -1
- package/lib/commonjs/emoji-data/emojis.js +0 -175
- package/lib/commonjs/emoji-data/emojis.js.map +1 -1
- package/lib/commonjs/emoji-data/index.js +2 -2
- package/lib/commonjs/emoji-data/index.js.map +1 -1
- package/lib/commonjs/hooks/useStreami18n.js.map +1 -1
- package/lib/commonjs/i18n/en.json +9 -3
- package/lib/commonjs/i18n/fr.json +9 -3
- package/lib/commonjs/i18n/hi.json +9 -3
- package/lib/commonjs/i18n/it.json +9 -3
- package/lib/commonjs/i18n/ja.json +9 -0
- package/lib/commonjs/i18n/ko.json +9 -0
- package/lib/commonjs/i18n/nl.json +9 -3
- package/lib/commonjs/i18n/ru.json +9 -3
- package/lib/commonjs/i18n/tr.json +10 -4
- package/lib/commonjs/icons/Pin.js +42 -0
- package/lib/commonjs/icons/Pin.js.map +1 -0
- package/lib/commonjs/icons/PinHeader.js +38 -0
- package/lib/commonjs/icons/PinHeader.js.map +1 -0
- package/lib/commonjs/icons/Unpin.js +38 -0
- package/lib/commonjs/icons/Unpin.js.map +1 -0
- package/lib/commonjs/icons/index.js +39 -26
- package/lib/commonjs/icons/index.js.map +1 -1
- package/lib/commonjs/icons/utils/base.js +1 -1
- package/lib/commonjs/index.js +6 -6
- package/lib/commonjs/mock-builders/api/error.js +1 -1
- package/lib/commonjs/mock-builders/api/sendMessage.js +4 -1
- package/lib/commonjs/mock-builders/api/sendMessage.js.map +1 -1
- package/lib/commonjs/mock-builders/generator/attachment.js +1 -3
- package/lib/commonjs/mock-builders/generator/attachment.js.map +1 -1
- package/lib/commonjs/mock-builders/generator/channel.js +101 -50
- package/lib/commonjs/mock-builders/generator/channel.js.map +1 -1
- package/lib/commonjs/mock-builders/generator/user.js +32 -33
- package/lib/commonjs/mock-builders/generator/user.js.map +1 -1
- package/lib/commonjs/mock-builders/mock.js +3 -3
- package/lib/commonjs/mock-builders/mock.js.map +1 -1
- package/lib/commonjs/native.js +1 -7
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/styleguideComponents/ArgumentsRenderer.js +7 -7
- package/lib/commonjs/styleguideComponents/ArgumentsRenderer.js.map +1 -1
- package/lib/commonjs/styleguideComponents/JsDoc.js +4 -4
- package/lib/commonjs/styleguideComponents/JsDoc.js.map +1 -1
- package/lib/commonjs/styleguideComponents/PathlineRenderer.js +7 -7
- package/lib/commonjs/styleguideComponents/PathlineRenderer.js.map +1 -1
- package/lib/commonjs/styleguideComponents/PropsRenderer.js +25 -25
- package/lib/commonjs/styleguideComponents/PropsRenderer.js.map +1 -1
- package/lib/commonjs/styleguideComponents/Wrapper.js +1 -1
- package/lib/commonjs/styleguideComponents/Wrapper.js.map +1 -1
- package/lib/commonjs/utils/Streami18n.js.map +1 -1
- package/lib/commonjs/utils/date.js +13 -0
- package/lib/commonjs/utils/date.js.map +1 -0
- package/lib/commonjs/utils/getResizedImageUrl.js +26 -0
- package/lib/commonjs/utils/getResizedImageUrl.js.map +1 -0
- package/lib/commonjs/utils/getUrlOfImageAttachment.js +9 -0
- package/lib/commonjs/utils/getUrlOfImageAttachment.js.map +1 -0
- package/lib/commonjs/utils/utils.js +17 -9
- package/lib/commonjs/utils/utils.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Attachment.js +2 -2
- package/lib/module/components/Attachment/Attachment.js.map +1 -1
- package/lib/module/components/Attachment/AttachmentActions.js.map +1 -1
- package/lib/module/components/Attachment/Card.js +18 -15
- package/lib/module/components/Attachment/Card.js.map +1 -1
- package/lib/module/components/Attachment/FileAttachment.js +8 -8
- package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
- package/lib/module/components/Attachment/FileIcon.js.map +1 -1
- package/lib/module/components/Attachment/Gallery.js +97 -113
- package/lib/module/components/Attachment/Gallery.js.map +1 -1
- package/lib/module/components/Attachment/Giphy.js +112 -148
- package/lib/module/components/Attachment/Giphy.js.map +1 -1
- package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js +46 -0
- package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -0
- package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js +88 -0
- package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js.map +1 -0
- package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js +75 -0
- package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js.map +1 -0
- package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js +43 -0
- package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js.map +1 -0
- package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js +30 -0
- package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -0
- package/lib/module/components/Attachment/utils/buildGallery/buildThumbnailGrid.js +49 -0
- package/lib/module/components/Attachment/utils/buildGallery/buildThumbnailGrid.js.map +1 -0
- package/lib/module/components/Attachment/utils/buildGallery/types.js +4 -0
- package/lib/module/components/Attachment/utils/buildGallery/types.js.map +1 -0
- package/lib/module/components/Attachment/utils/getAspectRatio.js +14 -0
- package/lib/module/components/Attachment/utils/getAspectRatio.js.map +1 -0
- package/lib/module/components/Attachment/utils/getGalleryImageBorderRadius.js +36 -0
- package/lib/module/components/Attachment/utils/getGalleryImageBorderRadius.js.map +1 -0
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js +9 -8
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +21 -45
- package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
- package/lib/module/components/AutoCompleteInput/{CommandsItem.js → AutoCompleteSuggestionCommandIcon.js} +21 -94
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js.map +1 -0
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +145 -0
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -0
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +248 -0
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -0
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +223 -0
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -0
- package/lib/module/components/Avatar/Avatar.js +13 -7
- package/lib/module/components/Avatar/Avatar.js.map +1 -1
- package/lib/module/components/Avatar/GroupAvatar.js +10 -10
- package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
- package/lib/module/components/Channel/Channel.js +332 -247
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateChannelContext.js +5 -5
- package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +7 -5
- package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +9 -31
- package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateOwnCapabilitiesContext.js +35 -0
- package/lib/module/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -0
- package/lib/module/components/ChannelList/ChannelList.js +6 -6
- package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js +5 -4
- package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelListHeaderErrorIndicator.js +6 -7
- package/lib/module/components/ChannelList/ChannelListHeaderErrorIndicator.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +4 -3
- package/lib/module/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelListMessenger.js +17 -17
- package/lib/module/components/ChannelList/ChannelListMessenger.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js +2 -2
- package/lib/module/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/listeners/useChannelDeleted.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/listeners/useChannelHidden.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/listeners/useChannelTruncated.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/listeners/useChannelUpdated.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/listeners/useChannelVisible.js +2 -2
- package/lib/module/components/ChannelList/hooks/listeners/useChannelVisible.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js +2 -2
- package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js +3 -3
- package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/listeners/useUserPresence.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js +2 -2
- package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +89 -64
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/module/components/ChannelList/utils.js +1 -1
- package/lib/module/components/ChannelPreview/ChannelAvatar.js +2 -2
- package/lib/module/components/ChannelPreview/ChannelAvatar.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreview.js +2 -2
- package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +49 -20
- package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js +51 -0
- package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js.map +1 -0
- package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js +4 -4
- package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreviewTitle.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreviewUnreadCount.js +2 -2
- package/lib/module/components/ChannelPreview/ChannelPreviewUnreadCount.js.map +1 -1
- package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js +16 -7
- package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js.map +1 -1
- package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
- package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.js.map +1 -1
- package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js +2 -1
- package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
- package/lib/module/components/Chat/Chat.js.map +1 -1
- package/lib/module/components/Chat/hooks/useIsOnline.js +12 -5
- package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
- package/lib/module/components/ImageGallery/ImageGallery.js +90 -58
- package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +2 -2
- package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +12 -12
- package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +14 -16
- package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGrid.js +7 -7
- package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGridHandle.js +5 -5
- package/lib/module/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
- package/lib/module/components/Indicators/LoadingErrorIndicator.js.map +1 -1
- package/lib/module/components/Indicators/LoadingIndicator.js +9 -9
- package/lib/module/components/Indicators/LoadingIndicator.js.map +1 -1
- package/lib/module/components/Message/Message.js +151 -860
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageAvatar.js +6 -6
- package/lib/module/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageContent.js +39 -38
- package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageDeleted.js +8 -6
- package/lib/module/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageFooter.js +33 -21
- package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js +122 -0
- package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -0
- package/lib/module/components/Message/MessageSimple/MessageReplies.js +5 -1
- package/lib/module/components/Message/MessageSimple/MessageReplies.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js +5 -5
- package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageSimple.js +27 -13
- package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageStatus.js +25 -24
- package/lib/module/components/Message/MessageSimple/MessageStatus.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +7 -3
- package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/ReactionList.js +52 -80
- package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.js +89 -0
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.js.map +1 -0
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js +46 -0
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -0
- package/lib/module/components/Message/MessageSimple/utils/renderText.js +170 -73
- package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/renderText.test.js +240 -0
- package/lib/module/components/Message/MessageSimple/utils/renderText.test.js.map +1 -0
- package/lib/module/components/Message/hooks/useCreateMessageContext.js +1 -5
- package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
- package/lib/module/components/Message/hooks/useMessageActionHandlers.js +307 -0
- package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -0
- package/lib/module/components/Message/hooks/useMessageActions.js +563 -0
- package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -0
- package/lib/module/components/Message/utils/messageActions.js +17 -15
- package/lib/module/components/Message/utils/messageActions.js.map +1 -1
- package/lib/module/components/Message/utils/removeReservedFields.js.map +1 -1
- package/lib/module/components/MessageInput/AttachButton.js +3 -3
- package/lib/module/components/MessageInput/AttachButton.js.map +1 -1
- package/lib/module/components/MessageInput/CommandsButton.js +3 -3
- package/lib/module/components/MessageInput/CommandsButton.js.map +1 -1
- package/lib/module/components/MessageInput/CooldownTimer.js +78 -0
- package/lib/module/components/MessageInput/CooldownTimer.js.map +1 -0
- package/lib/module/components/MessageInput/FileUploadPreview.js +4 -4
- package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/module/components/MessageInput/ImageUploadPreview.js +9 -9
- package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
- package/lib/module/components/MessageInput/InputButtons.js +17 -22
- package/lib/module/components/MessageInput/InputButtons.js.map +1 -1
- package/lib/module/components/MessageInput/MessageInput.js +93 -65
- package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/module/components/MessageInput/MoreOptionsButton.js +3 -3
- package/lib/module/components/MessageInput/MoreOptionsButton.js.map +1 -1
- package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js +71 -0
- package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js.map +1 -0
- package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js +4 -3
- package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js.map +1 -1
- package/lib/module/components/MessageInput/hooks/useCooldown.js +63 -0
- package/lib/module/components/MessageInput/hooks/useCooldown.js.map +1 -0
- package/lib/module/components/MessageInput/hooks/useCountdown.js +57 -0
- package/lib/module/components/MessageInput/hooks/useCountdown.js.map +1 -0
- package/lib/module/components/MessageList/DateHeader.js +2 -2
- package/lib/module/components/MessageList/DateHeader.js.map +1 -1
- package/lib/module/components/MessageList/InlineDateSeparator.js +2 -2
- package/lib/module/components/MessageList/InlineDateSeparator.js.map +1 -1
- package/lib/module/components/MessageList/InlineLoadingMoreIndicator.js +1 -1
- package/lib/module/components/MessageList/InlineLoadingMoreRecentIndicator.js +1 -1
- package/lib/module/components/MessageList/InlineLoadingMoreThreadIndicator.js +1 -1
- package/lib/module/components/MessageList/MessageList.js +77 -44
- package/lib/module/components/MessageList/MessageList.js.map +1 -1
- package/lib/module/components/MessageList/MessageSystem.js.map +1 -1
- package/lib/module/components/MessageList/TypingIndicator.js +5 -5
- package/lib/module/components/MessageList/TypingIndicator.js.map +1 -1
- package/lib/module/components/MessageList/hooks/useMessageList.js +23 -10
- package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/module/components/MessageList/hooks/useTypingString.js +2 -2
- package/lib/module/components/MessageList/hooks/useTypingString.js.map +1 -1
- package/lib/module/components/MessageList/utils/getDateSeparators.js +2 -1
- package/lib/module/components/MessageList/utils/getDateSeparators.js.map +1 -1
- package/lib/module/components/MessageList/utils/getGroupStyles.js +10 -5
- package/lib/module/components/MessageList/utils/getGroupStyles.js.map +1 -1
- package/lib/module/components/MessageList/utils/getLastReceivedMessage.js +3 -1
- package/lib/module/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
- package/lib/{commonjs/components/MessageOverlay/MessageActions.js → module/components/MessageOverlay/MessageActionList.js} +33 -85
- package/lib/module/components/MessageOverlay/MessageActionList.js.map +1 -0
- package/lib/module/components/MessageOverlay/MessageActionListItem.js +131 -0
- package/lib/module/components/MessageOverlay/MessageActionListItem.js.map +1 -0
- package/lib/module/components/MessageOverlay/MessageOverlay.js +97 -78
- package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
- package/lib/module/components/MessageOverlay/OverlayBackdrop.js +38 -0
- package/lib/module/components/MessageOverlay/OverlayBackdrop.js.map +1 -0
- package/lib/module/components/MessageOverlay/OverlayReactionList.js +12 -11
- package/lib/module/components/MessageOverlay/OverlayReactionList.js.map +1 -1
- package/lib/module/components/MessageOverlay/OverlayReactions.js +31 -34
- package/lib/module/components/MessageOverlay/OverlayReactions.js.map +1 -1
- package/lib/module/components/MessageOverlay/OverlayReactionsAvatar.js +41 -0
- package/lib/module/components/MessageOverlay/OverlayReactionsAvatar.js.map +1 -0
- package/lib/module/components/MessageOverlay/hooks/useMessageActionAnimation.js +37 -0
- package/lib/module/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +1 -0
- package/lib/module/components/Reply/Reply.js +25 -19
- package/lib/module/components/Reply/Reply.js.map +1 -1
- package/lib/module/components/Thread/Thread.js +11 -2
- package/lib/module/components/Thread/Thread.js.map +1 -1
- package/lib/module/components/Thread/components/ThreadFooterComponent.js +20 -12
- package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
- package/lib/module/components/docs/ListProps.md +1 -1
- package/lib/module/components/docs/data.js +1 -1
- package/lib/module/components/index.js +133 -55
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +68 -0
- package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -0
- package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js +2 -2
- package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
- package/lib/module/contexts/channelContext/ChannelContext.js +2 -2
- package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
- package/lib/module/contexts/channelsContext/ChannelsContext.js +2 -2
- package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
- package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js +155 -0
- package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -0
- package/lib/module/contexts/channelsStateContext/useChannelState.js +144 -0
- package/lib/module/contexts/channelsStateContext/useChannelState.js.map +1 -0
- package/lib/module/contexts/chatContext/ChatContext.js +2 -2
- package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
- package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js +2 -2
- package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
- package/lib/module/contexts/keyboardContext/KeyboardContext.js +2 -2
- package/lib/module/contexts/keyboardContext/KeyboardContext.js.map +1 -1
- package/lib/module/contexts/messageContext/MessageContext.js +2 -2
- package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +122 -84
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +9 -5
- package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +10 -3
- package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
- package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js +5 -19
- package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
- package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.js +36 -0
- package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.js.map +1 -0
- package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js +105 -0
- package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +1 -0
- package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
- package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/module/contexts/overlayContext/OverlayContext.js +1 -1
- package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
- package/lib/module/contexts/overlayContext/OverlayProvider.js +55 -46
- package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
- package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +61 -0
- package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js.map +1 -0
- package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +2 -2
- package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
- package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +20 -33
- package/lib/module/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
- package/lib/module/contexts/themeContext/ThemeContext.js +2 -2
- package/lib/module/contexts/themeContext/ThemeContext.js.map +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js +45 -20
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/contexts/threadContext/ThreadContext.js +2 -2
- package/lib/module/contexts/threadContext/ThreadContext.js.map +1 -1
- package/lib/module/contexts/translationContext/TranslationContext.js +1 -1
- package/lib/module/contexts/translationContext/TranslationContext.js.map +1 -1
- package/lib/module/contexts/typingContext/TypingContext.js +2 -2
- package/lib/module/contexts/typingContext/TypingContext.js.map +1 -1
- package/lib/module/contexts/utils/getDisplayName.js.map +1 -1
- package/lib/module/emoji-data/compiled.js +0 -315
- package/lib/module/emoji-data/compiled.js.map +1 -1
- package/lib/module/emoji-data/emojiNames.js +0 -105
- package/lib/module/emoji-data/emojiNames.js.map +1 -1
- package/lib/module/emoji-data/emojis.js +0 -175
- package/lib/module/emoji-data/emojis.js.map +1 -1
- package/lib/module/emoji-data/index.js +2 -2
- package/lib/module/emoji-data/index.js.map +1 -1
- package/lib/module/hooks/useStreami18n.js.map +1 -1
- package/lib/module/i18n/en.json +9 -3
- package/lib/module/i18n/fr.json +9 -3
- package/lib/module/i18n/hi.json +9 -3
- package/lib/module/i18n/it.json +9 -3
- package/lib/module/i18n/ja.json +9 -0
- package/lib/module/i18n/ko.json +9 -0
- package/lib/module/i18n/nl.json +9 -3
- package/lib/module/i18n/ru.json +9 -3
- package/lib/module/i18n/tr.json +10 -4
- package/lib/module/icons/Pin.js +42 -0
- package/lib/module/icons/Pin.js.map +1 -0
- package/lib/module/icons/PinHeader.js +38 -0
- package/lib/module/icons/PinHeader.js.map +1 -0
- package/lib/module/icons/Unpin.js +38 -0
- package/lib/module/icons/Unpin.js.map +1 -0
- package/lib/module/icons/index.js +39 -26
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/icons/utils/base.js +1 -1
- package/lib/module/index.js +6 -6
- package/lib/module/mock-builders/api/error.js +1 -1
- package/lib/module/mock-builders/api/sendMessage.js +4 -1
- package/lib/module/mock-builders/api/sendMessage.js.map +1 -1
- package/lib/module/mock-builders/generator/attachment.js +1 -3
- package/lib/module/mock-builders/generator/attachment.js.map +1 -1
- package/lib/module/mock-builders/generator/channel.js +101 -50
- package/lib/module/mock-builders/generator/channel.js.map +1 -1
- package/lib/module/mock-builders/generator/user.js +32 -33
- package/lib/module/mock-builders/generator/user.js.map +1 -1
- package/lib/module/mock-builders/mock.js +3 -3
- package/lib/module/mock-builders/mock.js.map +1 -1
- package/lib/module/native.js +1 -7
- package/lib/module/native.js.map +1 -1
- package/lib/module/styleguideComponents/ArgumentsRenderer.js +7 -7
- package/lib/module/styleguideComponents/ArgumentsRenderer.js.map +1 -1
- package/lib/module/styleguideComponents/JsDoc.js +4 -4
- package/lib/module/styleguideComponents/JsDoc.js.map +1 -1
- package/lib/module/styleguideComponents/PathlineRenderer.js +7 -7
- package/lib/module/styleguideComponents/PathlineRenderer.js.map +1 -1
- package/lib/module/styleguideComponents/PropsRenderer.js +25 -25
- package/lib/module/styleguideComponents/PropsRenderer.js.map +1 -1
- package/lib/module/styleguideComponents/Wrapper.js +1 -1
- package/lib/module/styleguideComponents/Wrapper.js.map +1 -1
- package/lib/module/utils/Streami18n.js.map +1 -1
- package/lib/module/utils/date.js +13 -0
- package/lib/module/utils/date.js.map +1 -0
- package/lib/module/utils/getResizedImageUrl.js +26 -0
- package/lib/module/utils/getResizedImageUrl.js.map +1 -0
- package/lib/module/utils/getUrlOfImageAttachment.js +9 -0
- package/lib/module/utils/getUrlOfImageAttachment.js.map +1 -0
- package/lib/module/utils/utils.js +17 -9
- package/lib/module/utils/utils.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Attachment/Attachment.d.ts +1 -1
- package/lib/typescript/components/Attachment/AttachmentActions.d.ts +1 -1
- package/lib/typescript/components/Attachment/Card.d.ts +3 -1
- package/lib/typescript/components/Attachment/FileAttachment.d.ts +1 -1
- package/lib/typescript/components/Attachment/Gallery.d.ts +4 -6
- package/lib/typescript/components/Attachment/Giphy.d.ts +1 -1
- package/lib/typescript/components/Attachment/utils/buildGallery/buildGallery.d.ts +23 -0
- package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.d.ts +7 -0
- package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.d.ts +7 -0
- package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.d.ts +7 -0
- package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnail.d.ts +10 -0
- package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnailGrid.d.ts +137 -0
- package/lib/typescript/components/Attachment/utils/buildGallery/types.d.ts +23 -0
- package/lib/typescript/components/Attachment/utils/getAspectRatio.d.ts +9 -0
- package/lib/typescript/components/Attachment/utils/getGalleryImageBorderRadius.d.ts +22 -0
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteInput.d.ts +7 -1
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.d.ts +4 -0
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionHeader.d.ts +8 -0
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionItem.d.ts +10 -0
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts +21 -0
- package/lib/typescript/components/Channel/Channel.d.ts +13 -12
- package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +1 -1
- package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -68
- package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -126
- package/lib/typescript/components/Channel/hooks/useCreateOwnCapabilitiesContext.d.ts +7 -0
- package/lib/typescript/components/ChannelList/ChannelList.d.ts +1 -1
- package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts +4 -2
- package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts +2 -2
- package/lib/typescript/components/ChannelPreview/ChannelPreviewMessenger.d.ts +2 -2
- package/lib/typescript/components/ChannelPreview/ChannelPreviewMutedStatus.d.ts +9 -0
- package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.d.ts +12 -0
- package/lib/typescript/components/Chat/Chat.d.ts +1 -1
- package/lib/typescript/components/ImageGallery/ImageGallery.d.ts +4 -1
- package/lib/typescript/components/ImageGallery/components/AnimatedGalleryImage.d.ts +1 -1
- package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +1 -1
- package/lib/typescript/components/ImageGallery/components/ImageGalleryHeader.d.ts +1 -1
- package/lib/typescript/components/ImageGallery/components/ImageGrid.d.ts +1 -1
- package/lib/typescript/components/Indicators/LoadingErrorIndicator.d.ts +1 -1
- package/lib/typescript/components/Message/Message.d.ts +4 -3
- package/lib/typescript/components/Message/MessageSimple/MessageAvatar.d.ts +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageDeleted.d.ts +2 -2
- package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts +2 -2
- package/lib/typescript/components/Message/MessageSimple/MessagePinnedHeader.d.ts +8 -0
- package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageStatus.d.ts +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts +1 -0
- package/lib/typescript/components/Message/MessageSimple/ReactionList.d.ts +2 -1
- package/lib/typescript/components/Message/MessageSimple/utils/parseLinks.d.ts +7 -0
- package/lib/typescript/components/Message/MessageSimple/utils/parseLinks.test.d.ts +1 -0
- package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +18 -3
- package/lib/typescript/components/Message/MessageSimple/utils/renderText.test.d.ts +1 -0
- package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
- package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +15 -0
- package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +26 -0
- package/lib/typescript/components/Message/utils/messageActions.d.ts +22 -21
- package/lib/typescript/components/Message/utils/removeReservedFields.d.ts +1 -1
- package/lib/typescript/components/MessageInput/AttachButton.d.ts +1 -1
- package/lib/typescript/components/MessageInput/CommandsButton.d.ts +1 -1
- package/lib/typescript/components/MessageInput/CooldownTimer.d.ts +10 -0
- package/lib/typescript/components/MessageInput/InputButtons.d.ts +1 -1
- package/lib/typescript/components/MessageInput/MessageInput.d.ts +1 -1
- package/lib/typescript/components/MessageInput/MoreOptionsButton.d.ts +1 -1
- package/lib/typescript/components/MessageInput/SendMessageDisallowedIndicator.d.ts +1 -0
- package/lib/typescript/components/MessageInput/hooks/useCooldown.d.ts +9 -0
- package/lib/typescript/components/MessageInput/hooks/useCountdown.d.ts +8 -0
- package/lib/typescript/components/MessageList/MessageList.d.ts +2 -1
- package/lib/typescript/components/MessageList/MessageSystem.d.ts +1 -1
- package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +1 -0
- package/lib/typescript/components/MessageList/utils/getGroupStyles.d.ts +1 -1
- package/lib/typescript/components/MessageOverlay/MessageActionList.d.ts +12 -0
- package/lib/typescript/components/MessageOverlay/MessageActionListItem.d.ts +20 -0
- package/lib/typescript/components/MessageOverlay/MessageOverlay.d.ts +4 -4
- package/lib/typescript/components/MessageOverlay/OverlayBackdrop.d.ts +6 -0
- package/lib/typescript/components/MessageOverlay/OverlayReactions.d.ts +3 -1
- package/lib/typescript/components/MessageOverlay/OverlayReactionsAvatar.d.ts +7 -0
- package/lib/typescript/components/MessageOverlay/hooks/useMessageActionAnimation.d.ts +12 -0
- package/lib/typescript/components/Reply/Reply.d.ts +1 -1
- package/lib/typescript/components/Thread/Thread.d.ts +2 -2
- package/lib/typescript/components/index.d.ts +13 -7
- package/lib/typescript/contexts/activeChannelsRefContext/ActiveChannelsRefContext.d.ts +9 -0
- package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +28 -30
- package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts +13 -5
- package/lib/typescript/contexts/channelsStateContext/ChannelsStateContext.d.ts +41 -0
- package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts +20 -0
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts +2 -6
- package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +21 -10
- package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +3 -3
- package/lib/typescript/contexts/messageInputContext/hooks/useMessageDetailsForState.d.ts +1 -1
- package/lib/typescript/contexts/messageOverlayContext/MessageOverlayContext.d.ts +12 -13
- package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.d.ts +12 -0
- package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.test.d.ts +1 -0
- package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +23 -114
- package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +14 -7
- package/lib/typescript/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.d.ts +25 -0
- package/lib/typescript/contexts/suggestionsContext/SuggestionsContext.d.ts +14 -13
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts +41 -16
- package/lib/typescript/contexts/utils/getDisplayName.d.ts +2 -2
- package/lib/typescript/hooks/useStreami18n.d.ts +1 -1
- package/lib/typescript/i18n/en.json +9 -3
- package/lib/typescript/i18n/fr.json +9 -3
- package/lib/typescript/i18n/hi.json +9 -3
- package/lib/typescript/i18n/it.json +9 -3
- package/lib/typescript/i18n/ja.json +9 -0
- package/lib/typescript/i18n/ko.json +9 -0
- package/lib/typescript/i18n/nl.json +9 -3
- package/lib/typescript/i18n/ru.json +9 -3
- package/lib/typescript/i18n/tr.json +10 -4
- package/lib/typescript/icons/{Left.d.ts → Pin.d.ts} +1 -1
- package/lib/typescript/icons/PinHeader.d.ts +3 -0
- package/lib/typescript/icons/{Right.d.ts → Unpin.d.ts} +1 -1
- package/lib/typescript/icons/index.d.ts +3 -2
- package/lib/typescript/native.d.ts +1 -9
- package/lib/typescript/utils/Streami18n.d.ts +11 -8
- package/lib/typescript/utils/date.d.ts +2 -0
- package/lib/typescript/utils/getResizedImageUrl.d.ts +19 -0
- package/lib/typescript/utils/getUrlOfImageAttachment.d.ts +7 -0
- package/lib/typescript/utils/utils.d.ts +14 -11
- package/package.json +12 -14
- package/src/components/Attachment/Attachment.tsx +3 -3
- package/src/components/Attachment/AttachmentActions.tsx +2 -2
- package/src/components/Attachment/Card.tsx +8 -5
- package/src/components/Attachment/FileAttachment.tsx +3 -4
- package/src/components/Attachment/FileIcon.tsx +2 -2
- package/src/components/Attachment/Gallery.tsx +164 -193
- package/src/components/Attachment/Giphy.tsx +67 -70
- package/src/components/Attachment/__tests__/Attachment.test.js +22 -14
- package/src/components/Attachment/__tests__/Gallery.test.js +233 -0
- package/src/components/Attachment/__tests__/buildGallery.test.js +131 -0
- package/src/components/Attachment/utils/buildGallery/buildGallery.ts +75 -0
- package/src/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.ts +95 -0
- package/src/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.ts +99 -0
- package/src/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.ts +64 -0
- package/src/components/Attachment/utils/buildGallery/buildThumbnail.ts +46 -0
- package/src/components/Attachment/utils/buildGallery/buildThumbnailGrid.ts +186 -0
- package/src/components/Attachment/utils/buildGallery/types.ts +27 -0
- package/src/components/Attachment/utils/getAspectRatio.ts +21 -0
- package/src/components/Attachment/utils/getGalleryImageBorderRadius.ts +71 -0
- package/src/components/AttachmentPicker/AttachmentPicker.tsx +4 -2
- package/src/components/AutoCompleteInput/AutoCompleteInput.tsx +43 -28
- package/src/components/AutoCompleteInput/{CommandsItem.tsx → AutoCompleteSuggestionCommandIcon.tsx} +3 -57
- package/src/components/AutoCompleteInput/AutoCompleteSuggestionHeader.tsx +109 -0
- package/src/components/AutoCompleteInput/AutoCompleteSuggestionItem.tsx +156 -0
- package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +212 -0
- package/src/components/AutoCompleteInput/__tests__/AutoCompleteInput.test.js +6 -12
- package/src/components/Avatar/Avatar.tsx +7 -10
- package/src/components/Avatar/GroupAvatar.tsx +7 -21
- package/src/components/Avatar/__tests__/Avatar.test.js +2 -30
- package/src/components/Channel/Channel.tsx +288 -232
- package/src/components/Channel/__tests__/Channel.test.js +34 -29
- package/src/components/Channel/__tests__/ownCapabilities.test.js +376 -0
- package/src/components/Channel/hooks/useCreateChannelContext.ts +6 -6
- package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +4 -3
- package/src/components/Channel/hooks/useCreateMessagesContext.ts +9 -30
- package/src/components/Channel/hooks/useCreateOwnCapabilitiesContext.ts +54 -0
- package/src/components/ChannelList/ChannelList.tsx +8 -9
- package/src/components/ChannelList/ChannelListFooterLoadingIndicator.tsx +2 -3
- package/src/components/ChannelList/ChannelListHeaderErrorIndicator.tsx +3 -7
- package/src/components/ChannelList/ChannelListHeaderNetworkDownIndicator.tsx +5 -2
- package/src/components/ChannelList/ChannelListMessenger.tsx +3 -4
- package/src/components/ChannelList/__tests__/ChannelList.test.js +73 -13
- package/src/components/ChannelList/__tests__/ChannelListMessenger.test.js +11 -12
- package/src/components/ChannelList/hooks/listeners/useAddedToChannelNotification.ts +3 -3
- package/src/components/ChannelList/hooks/listeners/useChannelDeleted.ts +2 -2
- package/src/components/ChannelList/hooks/listeners/useChannelHidden.ts +2 -2
- package/src/components/ChannelList/hooks/listeners/useChannelTruncated.ts +2 -2
- package/src/components/ChannelList/hooks/listeners/useChannelUpdated.ts +2 -2
- package/src/components/ChannelList/hooks/listeners/useChannelVisible.ts +3 -3
- package/src/components/ChannelList/hooks/listeners/useNewMessage.ts +2 -3
- package/src/components/ChannelList/hooks/listeners/useNewMessageNotification.ts +4 -4
- package/src/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.ts +2 -2
- package/src/components/ChannelList/hooks/listeners/useUserPresence.ts +2 -2
- package/src/components/ChannelList/hooks/useCreateChannelsContext.ts +1 -2
- package/src/components/ChannelList/hooks/usePaginatedChannels.ts +86 -44
- package/src/components/ChannelPreview/ChannelAvatar.tsx +3 -5
- package/src/components/ChannelPreview/ChannelPreview.tsx +3 -3
- package/src/components/ChannelPreview/ChannelPreviewMessage.tsx +2 -2
- package/src/components/ChannelPreview/ChannelPreviewMessenger.tsx +27 -11
- package/src/components/ChannelPreview/ChannelPreviewMutedStatus.tsx +71 -0
- package/src/components/ChannelPreview/ChannelPreviewStatus.tsx +4 -3
- package/src/components/ChannelPreview/ChannelPreviewTitle.tsx +2 -2
- package/src/components/ChannelPreview/ChannelPreviewUnreadCount.tsx +2 -1
- package/src/components/ChannelPreview/__tests__/ChannelPreview.test.js +8 -9
- package/src/components/ChannelPreview/__tests__/ChannelPreviewMessenger.test.js +8 -9
- package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.ts +8 -2
- package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayName.ts +3 -4
- package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.ts +2 -2
- package/src/components/ChannelPreview/hooks/useLatestMessagePreview.ts +4 -3
- package/src/components/Chat/Chat.tsx +6 -6
- package/src/components/Chat/__tests__/Chat.test.js +10 -6
- package/src/components/Chat/hooks/useIsOnline.ts +12 -8
- package/src/components/ImageGallery/ImageGallery.tsx +83 -49
- package/src/components/ImageGallery/components/AnimatedGalleryImage.tsx +1 -2
- package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +2 -5
- package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +5 -7
- package/src/components/ImageGallery/components/ImageGrid.tsx +4 -5
- package/src/components/ImageGallery/components/ImageGridHandle.tsx +1 -0
- package/src/components/Indicators/LoadingErrorIndicator.tsx +1 -1
- package/src/components/Indicators/LoadingIndicator.tsx +1 -2
- package/src/components/Message/Message.tsx +155 -594
- package/src/components/Message/MessageSimple/MessageAvatar.tsx +1 -2
- package/src/components/Message/MessageSimple/MessageContent.tsx +23 -25
- package/src/components/Message/MessageSimple/MessageDeleted.tsx +8 -6
- package/src/components/Message/MessageSimple/MessageFooter.tsx +45 -27
- package/src/components/Message/MessageSimple/MessagePinnedHeader.tsx +150 -0
- package/src/components/Message/MessageSimple/MessageReplies.tsx +5 -0
- package/src/components/Message/MessageSimple/MessageRepliesAvatars.tsx +2 -3
- package/src/components/Message/MessageSimple/MessageSimple.tsx +47 -26
- package/src/components/Message/MessageSimple/MessageStatus.tsx +19 -34
- package/src/components/Message/MessageSimple/MessageTextContainer.tsx +5 -0
- package/src/components/Message/MessageSimple/ReactionList.tsx +64 -77
- package/src/components/Message/MessageSimple/__tests__/Message.test.js +9 -10
- package/src/components/Message/MessageSimple/__tests__/MessageAvatar.test.js +2 -2
- package/src/components/Message/MessageSimple/__tests__/MessageContent.test.js +40 -47
- package/src/components/Message/MessageSimple/__tests__/MessagePinnedHeader.test.js +53 -0
- package/src/components/Message/MessageSimple/__tests__/MessageReplies.test.js +2 -2
- package/src/components/Message/MessageSimple/__tests__/MessageStatus.test.js +4 -5
- package/src/components/Message/MessageSimple/__tests__/MessageTextContainer.test.js +2 -2
- package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessageAvatar.test.js.snap +1 -1
- package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessagePinnedHeader.test.js.snap +80 -0
- package/src/components/Message/MessageSimple/utils/parseLinks.test.ts +100 -0
- package/src/components/Message/MessageSimple/utils/parseLinks.ts +95 -0
- package/src/components/Message/MessageSimple/utils/renderText.test.tsx +70 -0
- package/src/components/Message/MessageSimple/utils/renderText.tsx +98 -58
- package/src/components/Message/hooks/useCreateMessageContext.ts +1 -7
- package/src/components/Message/hooks/useMessageActionHandlers.ts +172 -0
- package/src/components/Message/hooks/useMessageActions.tsx +386 -0
- package/src/components/Message/utils/messageActions.ts +64 -38
- package/src/components/Message/utils/removeReservedFields.ts +1 -1
- package/src/components/MessageInput/AttachButton.tsx +1 -2
- package/src/components/MessageInput/CommandsButton.tsx +1 -2
- package/src/components/MessageInput/CooldownTimer.tsx +67 -0
- package/src/components/MessageInput/FileUploadPreview.tsx +5 -5
- package/src/components/MessageInput/ImageUploadPreview.tsx +3 -4
- package/src/components/MessageInput/InputButtons.tsx +4 -10
- package/src/components/MessageInput/MessageInput.tsx +62 -35
- package/src/components/MessageInput/MoreOptionsButton.tsx +1 -2
- package/src/components/MessageInput/SendMessageDisallowedIndicator.tsx +47 -0
- package/src/components/MessageInput/ShowThreadMessageInChannelButton.tsx +2 -2
- package/src/components/MessageInput/__tests__/AttachButton.test.js +2 -2
- package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +43 -45
- package/src/components/MessageInput/__tests__/ImageUploadPreview.test.js +15 -15
- package/src/components/MessageInput/__tests__/MessageInput.test.js +15 -23
- package/src/components/MessageInput/__tests__/SendButton.test.js +2 -2
- package/src/components/MessageInput/__tests__/UploadProgressIndicator.test.js +2 -2
- package/src/components/MessageInput/__tests__/__snapshots__/FileUploadPreview.test.js.snap +3593 -2889
- package/src/components/MessageInput/__tests__/__snapshots__/ImageUploadPreview.test.js.snap +1912 -1572
- package/src/components/MessageInput/__tests__/__snapshots__/MessageInput.test.js.snap +539 -296
- package/src/components/MessageInput/__tests__/__snapshots__/UploadProgressIndicator.test.js.snap +4 -4
- package/src/components/MessageInput/hooks/useCooldown.ts +62 -0
- package/src/components/MessageInput/hooks/useCountdown.ts +48 -0
- package/src/components/MessageList/DateHeader.tsx +2 -2
- package/src/components/MessageList/InlineDateSeparator.tsx +2 -2
- package/src/components/MessageList/MessageList.tsx +63 -39
- package/src/components/MessageList/MessageSystem.tsx +2 -2
- package/src/components/MessageList/TypingIndicator.tsx +1 -2
- package/src/components/MessageList/__tests__/MessageList.test.js +241 -116
- package/src/components/MessageList/__tests__/MessageSystem.test.js +3 -3
- package/src/components/MessageList/__tests__/ScrollToBottomButton.test.js +3 -3
- package/src/components/MessageList/__tests__/TypingIndicator.test.js +5 -6
- package/src/components/MessageList/__tests__/__snapshots__/TypingIndicator.test.js.snap +1 -1
- package/src/components/MessageList/hooks/useMessageList.ts +19 -9
- package/src/components/MessageList/hooks/useTypingString.ts +1 -2
- package/src/components/MessageList/utils/getDateSeparators.ts +4 -3
- package/src/components/MessageList/utils/getGroupStyles.ts +14 -9
- package/src/components/MessageList/utils/getLastReceivedMessage.ts +6 -1
- package/src/components/MessageOverlay/{MessageActions.tsx → MessageActionList.tsx} +59 -91
- package/src/components/MessageOverlay/MessageActionListItem.tsx +113 -0
- package/src/components/MessageOverlay/MessageOverlay.tsx +258 -217
- package/src/components/MessageOverlay/OverlayBackdrop.tsx +18 -0
- package/src/components/MessageOverlay/OverlayReactionList.tsx +3 -5
- package/src/components/MessageOverlay/OverlayReactions.tsx +27 -8
- package/src/components/MessageOverlay/OverlayReactionsAvatar.tsx +27 -0
- package/src/components/MessageOverlay/hooks/useMessageActionAnimation.tsx +44 -0
- package/src/components/Reply/Reply.tsx +25 -15
- package/src/components/Thread/Thread.tsx +13 -6
- package/src/components/Thread/__tests__/Thread.test.js +38 -113
- package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +1085 -1018
- package/src/components/Thread/components/ThreadFooterComponent.tsx +14 -3
- package/src/components/docs/ListProps.md +1 -1
- package/src/components/index.ts +13 -7
- package/src/contexts/activeChannelsRefContext/ActiveChannelsRefContext.tsx +32 -0
- package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +1 -2
- package/src/contexts/channelContext/ChannelContext.tsx +28 -32
- package/src/contexts/channelsContext/ChannelsContext.tsx +18 -7
- package/src/contexts/channelsStateContext/ChannelsStateContext.tsx +286 -0
- package/src/contexts/channelsStateContext/useChannelState.ts +207 -0
- package/src/contexts/chatContext/ChatContext.tsx +1 -2
- package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +1 -2
- package/src/contexts/keyboardContext/KeyboardContext.tsx +1 -2
- package/src/contexts/messageContext/MessageContext.tsx +2 -10
- package/src/contexts/messageInputContext/MessageInputContext.tsx +77 -36
- package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +9 -7
- package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +15 -10
- package/src/contexts/messageOverlayContext/MessageOverlayContext.tsx +19 -28
- package/src/contexts/messageOverlayContext/hooks/useResettableState.test.tsx +46 -0
- package/src/contexts/messageOverlayContext/hooks/useResettableState.ts +22 -0
- package/src/contexts/messagesContext/MessagesContext.tsx +39 -140
- package/src/contexts/overlayContext/OverlayContext.tsx +19 -11
- package/src/contexts/overlayContext/OverlayProvider.tsx +48 -42
- package/src/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.tsx +38 -0
- package/src/contexts/paginatedMessageListContext/PaginatedMessageListContext.tsx +1 -2
- package/src/contexts/suggestionsContext/SuggestionsContext.tsx +26 -46
- package/src/contexts/suggestionsContext/__tests__/Suggestions.test.js +1 -1
- package/src/contexts/themeContext/ThemeContext.tsx +1 -0
- package/src/contexts/themeContext/utils/theme.ts +84 -35
- package/src/contexts/threadContext/ThreadContext.tsx +1 -2
- package/src/contexts/translationContext/TranslationContext.tsx +3 -3
- package/src/contexts/typingContext/TypingContext.tsx +1 -2
- package/src/contexts/utils/getDisplayName.ts +3 -1
- package/src/emoji-data/compiled.ts +1830 -9609
- package/src/emoji-data/emojiNames.ts +0 -140
- package/src/emoji-data/emojis.ts +0 -210
- package/src/emoji-data/index.js +1 -1
- package/src/hooks/useStreami18n.ts +1 -1
- package/src/i18n/en.json +9 -3
- package/src/i18n/fr.json +9 -3
- package/src/i18n/hi.json +9 -3
- package/src/i18n/it.json +9 -3
- package/src/i18n/ja.json +9 -0
- package/src/i18n/ko.json +9 -0
- package/src/i18n/nl.json +9 -3
- package/src/i18n/ru.json +9 -3
- package/src/i18n/tr.json +10 -4
- package/src/icons/Pin.tsx +17 -0
- package/src/icons/PinHeader.tsx +12 -0
- package/src/icons/Unpin.tsx +12 -0
- package/src/icons/index.ts +3 -2
- package/src/mock-builders/api/sendMessage.js +3 -1
- package/src/mock-builders/generator/attachment.js +0 -2
- package/src/mock-builders/generator/channel.js +101 -46
- package/src/mock-builders/generator/user.js +33 -26
- package/src/mock-builders/mock.js +2 -2
- package/src/native.ts +2 -13
- package/src/styleguideComponents/ArgumentsRenderer.tsx +2 -1
- package/src/styleguideComponents/JsDoc.tsx +3 -1
- package/src/styleguideComponents/PathlineRenderer.tsx +2 -1
- package/src/styleguideComponents/PropsRenderer.tsx +7 -4
- package/src/styleguideComponents/Wrapper.tsx +1 -0
- package/src/utils/Streami18n.ts +3 -3
- package/src/utils/__tests__/Streami18n.test.js +1 -2
- package/src/utils/date.ts +4 -0
- package/src/utils/getResizedImageUrl.ts +43 -0
- package/src/utils/getUrlOfImageAttachment.ts +10 -0
- package/src/utils/utils.ts +23 -16
- package/src/version.json +1 -1
- package/lib/commonjs/components/AutoCompleteInput/CommandsHeader.js +0 -78
- package/lib/commonjs/components/AutoCompleteInput/CommandsHeader.js.map +0 -1
- package/lib/commonjs/components/AutoCompleteInput/CommandsItem.js.map +0 -1
- package/lib/commonjs/components/AutoCompleteInput/EmojisHeader.js +0 -81
- package/lib/commonjs/components/AutoCompleteInput/EmojisHeader.js.map +0 -1
- package/lib/commonjs/components/AutoCompleteInput/EmojisItem.js +0 -75
- package/lib/commonjs/components/AutoCompleteInput/EmojisItem.js.map +0 -1
- package/lib/commonjs/components/AutoCompleteInput/MentionsItem.js +0 -125
- package/lib/commonjs/components/AutoCompleteInput/MentionsItem.js.map +0 -1
- package/lib/commonjs/components/AutoCompleteInput/SuggestionsList.js +0 -199
- package/lib/commonjs/components/AutoCompleteInput/SuggestionsList.js.map +0 -1
- package/lib/commonjs/components/MessageOverlay/MessageActions.js.map +0 -1
- package/lib/commonjs/icons/Left.js +0 -38
- package/lib/commonjs/icons/Left.js.map +0 -1
- package/lib/commonjs/icons/Right.js +0 -38
- package/lib/commonjs/icons/Right.js.map +0 -1
- package/lib/module/components/AutoCompleteInput/CommandsHeader.js +0 -78
- package/lib/module/components/AutoCompleteInput/CommandsHeader.js.map +0 -1
- package/lib/module/components/AutoCompleteInput/CommandsItem.js.map +0 -1
- package/lib/module/components/AutoCompleteInput/EmojisHeader.js +0 -81
- package/lib/module/components/AutoCompleteInput/EmojisHeader.js.map +0 -1
- package/lib/module/components/AutoCompleteInput/EmojisItem.js +0 -75
- package/lib/module/components/AutoCompleteInput/EmojisItem.js.map +0 -1
- package/lib/module/components/AutoCompleteInput/MentionsItem.js +0 -125
- package/lib/module/components/AutoCompleteInput/MentionsItem.js.map +0 -1
- package/lib/module/components/AutoCompleteInput/SuggestionsList.js +0 -199
- package/lib/module/components/AutoCompleteInput/SuggestionsList.js.map +0 -1
- package/lib/module/components/MessageOverlay/MessageActions.js.map +0 -1
- package/lib/module/icons/Left.js +0 -38
- package/lib/module/icons/Left.js.map +0 -1
- package/lib/module/icons/Right.js +0 -38
- package/lib/module/icons/Right.js.map +0 -1
- package/lib/typescript/components/AutoCompleteInput/CommandsHeader.d.ts +0 -2
- package/lib/typescript/components/AutoCompleteInput/CommandsItem.d.ts +0 -15
- package/lib/typescript/components/AutoCompleteInput/EmojisHeader.d.ts +0 -5
- package/lib/typescript/components/AutoCompleteInput/EmojisItem.d.ts +0 -12
- package/lib/typescript/components/AutoCompleteInput/MentionsItem.d.ts +0 -16
- package/lib/typescript/components/AutoCompleteInput/SuggestionsList.d.ts +0 -13
- package/lib/typescript/components/MessageOverlay/MessageActions.d.ts +0 -11
- package/src/components/AutoCompleteInput/CommandsHeader.tsx +0 -43
- package/src/components/AutoCompleteInput/EmojisHeader.tsx +0 -45
- package/src/components/AutoCompleteInput/EmojisItem.tsx +0 -52
- package/src/components/AutoCompleteInput/MentionsItem.tsx +0 -74
- package/src/components/AutoCompleteInput/SuggestionsList.tsx +0 -138
- package/src/components/AutoCompleteInput/__tests__/CommandsItem.test.js +0 -26
- package/src/components/AutoCompleteInput/__tests__/MentionsItem.test.js +0 -62
- package/src/components/MessageList/__tests__/__snapshots__/MessageList.test.js.snap +0 -936
- package/src/icons/Left.tsx +0 -12
- package/src/icons/Right.tsx +0 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Channel.tsx"],"names":["styles","StyleSheet","create","selectChannel","fontWeight","padding","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","scrollToFirstUnreadThreshold","defaultThrottleInterval","defaultDebounceInterval","throttleOptions","leading","trailing","debounceOptions","unreadMessagesOnInitialLoadLimit","ChannelWithContext","props","additionalKeyboardAvoidingViewProps","additionalTextInputProps","animatedLongPress","additionalTouchableProps","allowThreadMessagesInChannel","AttachButton","AttachButtonDefault","Attachment","AttachmentDefault","AttachmentActions","AttachmentActionsDefault","autoCompleteSuggestionsLimit","autoCompleteTriggerSettings","blockUser","Card","CardDefault","CardCover","CardFooter","CardHeader","channel","children","client","closeSuggestions","CommandsButton","CommandsButtonDefault","compressImageQuality","copyMessage","DateHeader","DateHeaderDefault","deleteMessage","disableIfFrozenChannel","disableKeyboardCompatibleView","disableTypingIndicator","dismissKeyboardOnMessageTouch","doDocUploadRequest","doImageUploadRequest","doMarkReadRequest","doSendMessageRequest","doUpdateMessageRequest","editMessageProp","editMessage","EmptyStateIndicator","EmptyStateIndicatorDefault","enableMessageGroupingByUser","enforceUniqueReaction","FileAttachment","FileAttachmentDefault","FileAttachmentIcon","FileIconDefault","FileAttachmentGroup","FileAttachmentGroupDefault","FileUploadPreview","FileUploadPreviewDefault","flagMessage","FlatList","FlatListDefault","forceAlignMessages","formatDate","Gallery","GalleryDefault","Giphy","GiphyDefault","giphyEnabled","globalUnreadCountLimit","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","hasCommands","hasFilePicker","hasImagePicker","hideDateSeparators","hideStickyDateHeader","ImageUploadPreview","ImageUploadPreviewDefault","initialScrollToFirstUnreadMessage","initialValue","InlineDateSeparator","InlineDateSeparatorDefault","InlineUnreadIndicator","InlineUnreadIndicatorDefault","Input","InputButtons","InputButtonsDefault","keyboardBehavior","KeyboardCompatibleView","KeyboardCompatibleViewDefault","keyboardVerticalOffset","legacyImageViewerSwipeBehaviour","LoadingErrorIndicator","LoadingErrorIndicatorDefault","LoadingIndicator","LoadingIndicatorDefault","loadingMoreProp","loadingMore","loadingMoreRecentProp","loadingMoreRecent","markdownRules","messageId","maxMessageLengthProp","maxMessageLength","maxNumberOfFiles","maxTimeBetweenGroupedMessages","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","Message","MessageDefault","messageActions","MessageAvatar","MessageAvatarDefault","MessageContent","MessageContentDefault","messageContentOrder","MessageDeleted","MessageDeletedDefault","MessageFooter","MessageFooterDefault","MessageHeader","MessageList","MessageListDefault","MessageReplies","MessageRepliesDefault","MessageRepliesAvatars","MessageRepliesAvatarsDefault","messagesProp","messages","MessageSimple","MessageSimpleDefault","MessageStatus","MessageStatusDefault","MessageSystem","MessageSystemDefault","MessageText","MoreOptionsButton","MoreOptionsButtonDefault","mutesEnabledProp","mutesEnabled","muteUser","myMessageTheme","newMessageStateUpdateThrottleInterval","NetworkDownIndicator","NetworkDownIndicatorDefault","numberOfLines","onChangeText","onDoubleTapMessage","onLongPressMessage","onPressMessage","onPressInMessage","openSuggestions","OverlayReactionList","OverlayReactionListDefault","quotedRepliesEnabledProp","quotedRepliesEnabled","quotedReply","ReactionList","ReactionListDefault","reactionsEnabledProp","reactionsEnabled","readEventsEnabledProp","readEventsEnabled","Reply","ReplyDefault","retry","ScrollToBottomButton","ScrollToBottomButtonDefault","selectReaction","SendButton","SendButtonDefault","sendImageAsync","setInputRef","ShowThreadMessageInChannelButton","ShowThreadMessageInChannelButtonDefault","stateUpdateThrottleInterval","StickyHeader","supportedReactions","t","threadProps","thread","threadRepliesEnabledProp","threadRepliesEnabled","threadReply","typingEventsEnabledProp","typingEventsEnabled","TypingIndicator","TypingIndicatorDefault","TypingIndicatorContainer","TypingIndicatorContainerDefault","updateSuggestions","UploadProgressIndicator","UploadProgressIndicatorDefault","uploadsEnabledProp","uploadsEnabled","UrlPreview","theme","black","colors","deleted","setDeleted","editing","setEditing","error","setError","hasMore","setHasMore","lastRead","setLastRead","loading","setLoading","setLoadingMore","setLoadingMoreRecent","setMessages","members","setMembers","quotedMessage","setQuotedMessage","read","setRead","setThread","threadHasMore","setThreadHasMore","threadLoadingMore","setThreadLoadingMore","id","state","threads","threadMessages","setThreadMessages","typing","setTyping","watcherCount","setWatcherCount","watchers","setWatchers","setTargetedMessage","targetedMessage","channelId","initChannel","initialized","loadChannel","loadChannelAtMessage","countUnread","loadChannelAtFirstUnreadMessage","copyChannelState","cancel","copyReadState","copyTypingState","loadMoreFinished","loadMoreThreadFinished","threadPropsExists","handleAppBackground","sendEvent","parent_id","undefined","isAdmin","user","role","membership","isModerator","isOwner","markRead","disconnected","clientChannelConfig","read_events","current","copyMessagesState","watcher_count","connectionRecoveredHandler","connectionChangedHandler","event","online","resyncChannel","handleEvent","updatedThreadMessages","message","updatedThread","formatMessage","channelSubscriptions","clientSubscriptions","subscribe","push","on","cid","forEach","s","unsubscribe","channelQueryCall","queryCall","Date","unreadCount","clearMessages","setIsUpToDate","offset","query","length","isUpToDate","mostRecentMessage","queryAfterMessage","created_at_before_or_equal","limit","created_at_after","after","before","queryAtMessage","watch","reloadThread","parentID","getReplies","queryResponse","updatedHasMore","console","warn","oldListTopMessage","oldListTopMessageId","oldListBottomMessage","newListTopMessage","newListBottomMessage","addMessagesSorted","parseMessage","created_at","toString","pinned_at","updated_at","failedMessages","filter","status","map","failedThreadMessages","oldListTopMessageCreatedAt","oldListBottomMessageCreatedAt","newListTopMessageCreatedAt","newListBottomMessageCreatedAt","finalMessages","index","findIndex","slice","reloadChannel","queryBeforeMessage","id_lt","id_gte","getChannelConfigSafely","getConfig","_","messagesConfig","mutes","reactions","replies","channelConfig","typing_events","inputConfig","max_message_length","uploads","updateMessage","updatedMessage","extraState","addMessageSorted","replaceMessage","oldMessage","newMessage","removeMessage","createMessagePreview","attachments","mentioned_users","text","extraFields","preview","__html","html","userID","userId","quoted_message_id","find","quoted_message","sendMessageRequest","retrying","messageData","mentionedUser","messageResponse","sendMessage","log","filterErrorMessages","messagePreview","commands","messageInput","retrySendMessage","statusPendingMessage","newMessages","loadMore","oldestMessage","oldestID","loadMoreRecent","recentMessage","loadMoreRecentFinished","setEditingState","setQuotedMessageState","clearEditingState","clearQuotedMessageState","openThread","newThreadMessages","closeThread","newThreadHasMore","loadMoreThread","oldestMessageID","channelContext","disabled","data","frozen","some","command","name","messageInputContext","messageListContext","messagesContext","suggestionsContext","threadContext","typingContext","color","height","Channel"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, useCallback, useEffect, useRef, useState } from 'react';\nimport { KeyboardAvoidingViewProps, StyleSheet, Text, View } from 'react-native';\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\nimport {\n ChannelState,\n Channel as ChannelType,\n ConnectionChangeEvent,\n EventHandler,\n logChatPromiseExecution,\n MessageResponse,\n SendMessageAPIResponse,\n StreamChat,\n Event as StreamEvent,\n Message as StreamMessage,\n} from 'stream-chat';\n\nimport { useAppStateListener } from '../../hooks/useAppStateListener';\nimport { useCreateChannelContext } from './hooks/useCreateChannelContext';\nimport { useCreateInputMessageInputContext } from './hooks/useCreateInputMessageInputContext';\nimport { useCreateMessagesContext } from './hooks/useCreateMessagesContext';\nimport { useCreatePaginatedMessageListContext } from './hooks/useCreatePaginatedMessageListContext';\nimport { useCreateThreadContext } from './hooks/useCreateThreadContext';\nimport { useCreateTypingContext } from './hooks/useCreateTypingContext';\nimport { useTargetedMessage } from './hooks/useTargetedMessage';\n\nimport { Attachment as AttachmentDefault } from '../Attachment/Attachment';\nimport { AttachmentActions as AttachmentActionsDefault } from '../Attachment/AttachmentActions';\nimport { Card as CardDefault } from '../Attachment/Card';\nimport { FileAttachment as FileAttachmentDefault } from '../Attachment/FileAttachment';\nimport { FileAttachmentGroup as FileAttachmentGroupDefault } from '../Attachment/FileAttachmentGroup';\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { Gallery as GalleryDefault } from '../Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../Attachment/Giphy';\nimport { EmptyStateIndicator as EmptyStateIndicatorDefault } from '../Indicators/EmptyStateIndicator';\nimport {\n LoadingErrorIndicator as LoadingErrorIndicatorDefault,\n LoadingErrorProps,\n} from '../Indicators/LoadingErrorIndicator';\nimport { LoadingIndicator as LoadingIndicatorDefault } from '../Indicators/LoadingIndicator';\nimport { NetworkDownIndicator as NetworkDownIndicatorDefault } from '../MessageList/NetworkDownIndicator';\nimport { KeyboardCompatibleView as KeyboardCompatibleViewDefault } from '../KeyboardCompatibleView/KeyboardCompatibleView';\nimport { Message as MessageDefault } from '../Message/Message';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageContent as MessageContentDefault } from '../Message/MessageSimple/MessageContent';\nimport { MessageDeleted as MessageDeletedDefault } from '../Message/MessageSimple/MessageDeleted';\nimport { MessageFooter as MessageFooterDefault } from '../Message/MessageSimple/MessageFooter';\nimport { MessageReplies as MessageRepliesDefault } from '../Message/MessageSimple/MessageReplies';\nimport { MessageRepliesAvatars as MessageRepliesAvatarsDefault } from '../Message/MessageSimple/MessageRepliesAvatars';\nimport { MessageSimple as MessageSimpleDefault } from '../Message/MessageSimple/MessageSimple';\nimport { MessageStatus as MessageStatusDefault } from '../Message/MessageSimple/MessageStatus';\nimport { ReactionList as ReactionListDefault } from '../Message/MessageSimple/ReactionList';\nimport { AttachButton as AttachButtonDefault } from '../MessageInput/AttachButton';\nimport { CommandsButton as CommandsButtonDefault } from '../MessageInput/CommandsButton';\nimport { FileUploadPreview as FileUploadPreviewDefault } from '../MessageInput/FileUploadPreview';\nimport { ImageUploadPreview as ImageUploadPreviewDefault } from '../MessageInput/ImageUploadPreview';\nimport { InputButtons as InputButtonsDefault } from '../MessageInput/InputButtons';\nimport { MoreOptionsButton as MoreOptionsButtonDefault } from '../MessageInput/MoreOptionsButton';\nimport { SendButton as SendButtonDefault } from '../MessageInput/SendButton';\nimport { ShowThreadMessageInChannelButton as ShowThreadMessageInChannelButtonDefault } from '../MessageInput/ShowThreadMessageInChannelButton';\nimport { UploadProgressIndicator as UploadProgressIndicatorDefault } from '../MessageInput/UploadProgressIndicator';\nimport { DateHeader as DateHeaderDefault } from '../MessageList/DateHeader';\nimport { InlineDateSeparator as InlineDateSeparatorDefault } from '../MessageList/InlineDateSeparator';\nimport { InlineUnreadIndicator as InlineUnreadIndicatorDefault } from '../MessageList/InlineUnreadIndicator';\nimport { MessageList as MessageListDefault } from '../MessageList/MessageList';\nimport { MessageSystem as MessageSystemDefault } from '../MessageList/MessageSystem';\nimport { ScrollToBottomButton as ScrollToBottomButtonDefault } from '../MessageList/ScrollToBottomButton';\nimport { TypingIndicator as TypingIndicatorDefault } from '../MessageList/TypingIndicator';\nimport { TypingIndicatorContainer as TypingIndicatorContainerDefault } from '../MessageList/TypingIndicatorContainer';\nimport { OverlayReactionList as OverlayReactionListDefault } from '../MessageOverlay/OverlayReactionList';\nimport { Reply as ReplyDefault } from '../Reply/Reply';\n\nimport {\n ChannelConfig,\n ChannelContextValue,\n ChannelProvider,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n InputConfig,\n InputMessageInputContextValue,\n MessageInputProvider,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesConfig,\n MessagesContextValue,\n MessagesProvider,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n PaginatedMessageListContextValue,\n PaginatedMessageListProvider,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport {\n SuggestionsContextValue,\n SuggestionsProvider,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, ThreadProvider } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport { TypingContextValue, TypingProvider } from '../../contexts/typingContext/TypingContext';\nimport {\n LOLReaction,\n LoveReaction,\n ThumbsDownReaction,\n ThumbsUpReaction,\n WutReaction,\n} from '../../icons';\nimport { FlatList as FlatListDefault } from '../../native';\nimport { generateRandomId, ReactionData } from '../../utils/utils';\n\nimport type { MessageType } from '../MessageList/hooks/useMessageList';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\n\nconst styles = StyleSheet.create({\n selectChannel: { fontWeight: 'bold', padding: 16 },\n});\n\nexport const reactionData: ReactionData[] = [\n {\n Icon: LoveReaction,\n type: 'love',\n },\n {\n Icon: ThumbsUpReaction,\n type: 'like',\n },\n {\n Icon: ThumbsDownReaction,\n type: 'sad',\n },\n {\n Icon: LOLReaction,\n type: 'haha',\n },\n {\n Icon: WutReaction,\n type: 'wow',\n },\n];\n\n/**\n * If count of unread messages is less than 4, then no need to scroll to first unread message,\n * since first unread message will be in visible frame anyways.\n */\nconst scrollToFirstUnreadThreshold = 4;\n\nconst defaultThrottleInterval = 500;\nconst defaultDebounceInterval = 500;\nconst throttleOptions = {\n leading: true,\n trailing: true,\n};\nconst debounceOptions = {\n leading: true,\n trailing: true,\n};\n\n/**\n * Number of unread messages to show in first frame, when channel loads at first\n * unread message. Only applicable if unread count > scrollToFirstUnreadThreshold.\n */\nconst unreadMessagesOnInitialLoadLimit = 2;\n\nexport type ChannelPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<\n Pick<\n ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'channel'\n | 'EmptyStateIndicator'\n | 'enableMessageGroupingByUser'\n | 'enforceUniqueReaction'\n | 'giphyEnabled'\n | 'hideStickyDateHeader'\n | 'hideDateSeparators'\n | 'LoadingIndicator'\n | 'maxTimeBetweenGroupedMessages'\n | 'NetworkDownIndicator'\n | 'StickyHeader'\n >\n> &\n Pick<ChatContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'client'> &\n Partial<\n Omit<\n InputMessageInputContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'quotedMessage' | 'editing' | 'clearEditingState' | 'clearQuotedMessageState' | 'sendMessage'\n >\n > &\n Partial<SuggestionsContextValue<Co, Us>> &\n Pick<TranslationContextValue, 't'> &\n Partial<\n Pick<\n PaginatedMessageListContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'messages' | 'loadingMore' | 'loadingMoreRecent'\n >\n > &\n Partial<\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'additionalTouchableProps'\n | 'animatedLongPress'\n | 'Attachment'\n | 'AttachmentActions'\n | 'blockUser'\n | 'Card'\n | 'CardCover'\n | 'CardFooter'\n | 'CardHeader'\n | 'copyMessage'\n | 'DateHeader'\n | 'deleteMessage'\n | 'disableTypingIndicator'\n | 'dismissKeyboardOnMessageTouch'\n | 'editMessage'\n | 'FileAttachment'\n | 'FileAttachmentIcon'\n | 'FileAttachmentGroup'\n | 'flagMessage'\n | 'FlatList'\n | 'forceAlignMessages'\n | 'formatDate'\n | 'Gallery'\n | 'Giphy'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handleReaction'\n | 'handleQuotedReply'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'InlineDateSeparator'\n | 'InlineUnreadIndicator'\n | 'legacyImageViewerSwipeBehaviour'\n | 'markdownRules'\n | 'Message'\n | 'messageActions'\n | 'MessageAvatar'\n | 'MessageContent'\n | 'messageContentOrder'\n | 'MessageDeleted'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageList'\n | 'MessageReplies'\n | 'MessageRepliesAvatars'\n | 'MessageSimple'\n | 'MessageStatus'\n | 'MessageSystem'\n | 'MessageText'\n | 'muteUser'\n | 'myMessageTheme'\n | 'onDoubleTapMessage'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'quotedReply'\n | 'ReactionList'\n | 'Reply'\n | 'retry'\n | 'ScrollToBottomButton'\n | 'selectReaction'\n | 'supportedReactions'\n | 'threadReply'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n | 'UrlPreview'\n >\n > &\n Partial<\n Pick<ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'allowThreadMessagesInChannel' | 'thread'>\n > & {\n /**\n * Additional props passed to keyboard avoiding view\n */\n additionalKeyboardAvoidingViewProps?: Partial<KeyboardAvoidingViewProps>;\n /**\n * Disables the channel UI if the channel is frozen\n */\n disableIfFrozenChannel?: boolean;\n /**\n * When true, disables the KeyboardCompatibleView wrapper\n *\n * Channel internally uses the [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/master/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n * component to adjust the height of Channel when the keyboard is opened or dismissed. This prop provides the ability to disable this functionality in case you\n * want to use [KeyboardAvoidingView](https://facebook.github.io/react-native/docs/keyboardavoidingview) or handle dismissal yourself.\n * KeyboardAvoidingView works well when your component occupies 100% of screen height, otherwise it may raise some issues.\n */\n disableKeyboardCompatibleView?: boolean;\n /**\n * Overrides the Stream default mark channel read request (Advanced usage only)\n * @param channel Channel object\n */\n doMarkReadRequest?: (channel: ChannelType<At, Ch, Co, Ev, Me, Re, Us>) => void;\n /**\n * Overrides the Stream default send message request (Advanced usage only)\n * @param channelId\n * @param messageData Message object\n */\n doSendMessageRequest?: (\n channelId: string,\n messageData: StreamMessage<At, Me, Us>,\n ) => Promise<SendMessageAPIResponse<At, Ch, Co, Me, Re, Us>>;\n /**\n * Overrides the Stream default update message request (Advanced usage only)\n * @param channelId\n * @param updatedMessage UpdatedMessage object\n */\n doUpdateMessageRequest?: (\n channelId: string,\n updatedMessage: Parameters<StreamChat<At, Ch, Co, Ev, Me, Re, Us>['updateMessage']>[0],\n ) => ReturnType<StreamChat<At, Ch, Co, Ev, Me, Re, Us>['updateMessage']>;\n /**\n * E.g. Once unread count exceeds 255, display unread count as 255+ instead of actual count.\n * Also 255 is the limit per Stream chat channel for unread count.\n */\n globalUnreadCountLimit?: number;\n /**\n * When true, messageList will be scrolled at first unread message, when opened.\n */\n initialScrollToFirstUnreadMessage?: boolean;\n keyboardBehavior?: KeyboardAvoidingViewProps['behavior'];\n /**\n * Custom wrapper component that handles height adjustment of Channel component when keyboard is opened or dismissed\n * Default component (accepts the same props): [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/master/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n *\n * **Example:**\n *\n * ```\n * <Channel\n * channel={channel}\n * KeyboardCompatibleView={(props) => {\n * return (\n * <KeyboardCompatibleView>\n * {props.children}\n * </KeyboardCompatibleView>\n * )\n * }}\n * />\n * ```\n */\n KeyboardCompatibleView?: React.ComponentType<KeyboardAvoidingViewProps>;\n keyboardVerticalOffset?: number;\n /**\n * Custom loading error indicator to override the Stream default\n */\n LoadingErrorIndicator?: React.ComponentType<LoadingErrorProps>;\n maxMessageLength?: number;\n messageId?: string;\n mutesEnabled?: boolean;\n newMessageStateUpdateThrottleInterval?: number;\n quotedRepliesEnabled?: boolean;\n reactionsEnabled?: boolean;\n readEventsEnabled?: boolean;\n stateUpdateThrottleInterval?: number;\n threadRepliesEnabled?: boolean;\n typingEventsEnabled?: boolean;\n uploadsEnabled?: boolean;\n };\n\nconst ChannelWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: PropsWithChildren<ChannelPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>>,\n) => {\n const {\n additionalKeyboardAvoidingViewProps,\n additionalTextInputProps,\n animatedLongPress,\n additionalTouchableProps,\n allowThreadMessagesInChannel = true,\n AttachButton = AttachButtonDefault,\n Attachment = AttachmentDefault,\n AttachmentActions = AttachmentActionsDefault,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n blockUser,\n Card = CardDefault,\n CardCover,\n CardFooter,\n CardHeader,\n channel,\n children,\n client,\n closeSuggestions,\n CommandsButton = CommandsButtonDefault,\n compressImageQuality,\n copyMessage,\n DateHeader = DateHeaderDefault,\n deleteMessage,\n disableIfFrozenChannel = true,\n disableKeyboardCompatibleView = false,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch = true,\n doDocUploadRequest,\n doImageUploadRequest,\n doMarkReadRequest,\n doSendMessageRequest,\n doUpdateMessageRequest,\n editMessage: editMessageProp,\n EmptyStateIndicator = EmptyStateIndicatorDefault,\n enableMessageGroupingByUser = true,\n enforceUniqueReaction = false,\n FileAttachment = FileAttachmentDefault,\n FileAttachmentIcon = FileIconDefault,\n FileAttachmentGroup = FileAttachmentGroupDefault,\n FileUploadPreview = FileUploadPreviewDefault,\n flagMessage,\n FlatList = FlatListDefault,\n forceAlignMessages,\n formatDate,\n Gallery = GalleryDefault,\n Giphy = GiphyDefault,\n giphyEnabled,\n globalUnreadCountLimit = 255,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n hasCommands = true,\n hasFilePicker = true,\n hasImagePicker = true,\n hideDateSeparators = false,\n hideStickyDateHeader = false,\n ImageUploadPreview = ImageUploadPreviewDefault,\n initialScrollToFirstUnreadMessage = false,\n initialValue,\n InlineDateSeparator = InlineDateSeparatorDefault,\n InlineUnreadIndicator = InlineUnreadIndicatorDefault,\n Input,\n InputButtons = InputButtonsDefault,\n keyboardBehavior,\n KeyboardCompatibleView = KeyboardCompatibleViewDefault,\n keyboardVerticalOffset,\n // TODO[major]: switch to false.\n legacyImageViewerSwipeBehaviour = true,\n LoadingErrorIndicator = LoadingErrorIndicatorDefault,\n LoadingIndicator = LoadingIndicatorDefault,\n loadingMore: loadingMoreProp,\n loadingMoreRecent: loadingMoreRecentProp,\n markdownRules,\n messageId,\n maxMessageLength: maxMessageLengthProp,\n maxNumberOfFiles = 10,\n maxTimeBetweenGroupedMessages,\n mentionAllAppUsersEnabled = false,\n mentionAllAppUsersQuery,\n Message = MessageDefault,\n messageActions,\n MessageAvatar = MessageAvatarDefault,\n MessageContent = MessageContentDefault,\n messageContentOrder = ['quoted_reply', 'gallery', 'files', 'text', 'attachments'],\n MessageDeleted = MessageDeletedDefault,\n MessageFooter = MessageFooterDefault,\n MessageHeader,\n MessageList = MessageListDefault,\n MessageReplies = MessageRepliesDefault,\n MessageRepliesAvatars = MessageRepliesAvatarsDefault,\n messages: messagesProp,\n MessageSimple = MessageSimpleDefault,\n MessageStatus = MessageStatusDefault,\n MessageSystem = MessageSystemDefault,\n MessageText,\n MoreOptionsButton = MoreOptionsButtonDefault,\n mutesEnabled: mutesEnabledProp,\n muteUser,\n myMessageTheme,\n newMessageStateUpdateThrottleInterval = defaultThrottleInterval,\n NetworkDownIndicator = NetworkDownIndicatorDefault,\n numberOfLines = 5,\n onChangeText,\n onDoubleTapMessage,\n onLongPressMessage,\n onPressMessage,\n onPressInMessage,\n openSuggestions,\n OverlayReactionList = OverlayReactionListDefault,\n quotedRepliesEnabled: quotedRepliesEnabledProp,\n quotedReply,\n ReactionList = ReactionListDefault,\n reactionsEnabled: reactionsEnabledProp,\n readEventsEnabled: readEventsEnabledProp,\n Reply = ReplyDefault,\n retry,\n ScrollToBottomButton = ScrollToBottomButtonDefault,\n selectReaction,\n SendButton = SendButtonDefault,\n sendImageAsync = false,\n setInputRef,\n ShowThreadMessageInChannelButton = ShowThreadMessageInChannelButtonDefault,\n stateUpdateThrottleInterval = defaultThrottleInterval,\n StickyHeader,\n supportedReactions = reactionData,\n t,\n thread: threadProps,\n threadRepliesEnabled: threadRepliesEnabledProp,\n threadReply,\n typingEventsEnabled: typingEventsEnabledProp,\n TypingIndicator = TypingIndicatorDefault,\n TypingIndicatorContainer = TypingIndicatorContainerDefault,\n updateSuggestions,\n UploadProgressIndicator = UploadProgressIndicatorDefault,\n uploadsEnabled: uploadsEnabledProp,\n UrlPreview = CardDefault,\n } = props;\n\n const {\n theme: {\n channel: { selectChannel },\n colors: { black },\n },\n } = useTheme();\n const [deleted, setDeleted] = useState(false);\n const [editing, setEditing] = useState<boolean | MessageType<At, Ch, Co, Ev, Me, Re, Us>>(false);\n const [error, setError] = useState(false);\n const [hasMore, setHasMore] = useState(true);\n const [lastRead, setLastRead] =\n useState<ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>['lastRead']>();\n const [loading, setLoading] = useState(true);\n const [loadingMore, setLoadingMore] = useState(false);\n\n const [loadingMoreRecent, setLoadingMoreRecent] = useState(false);\n const [messages, setMessages] = useState<\n PaginatedMessageListContextValue<At, Ch, Co, Ev, Me, Re, Us>['messages']\n >([]);\n\n const [members, setMembers] = useState<\n ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>['members']\n >({});\n const [quotedMessage, setQuotedMessage] =\n useState<boolean | MessageType<At, Ch, Co, Ev, Me, Re, Us>>(false);\n const [read, setRead] = useState<ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>['read']>({});\n const [thread, setThread] = useState<ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>['thread']>(\n threadProps || null,\n );\n const [threadHasMore, setThreadHasMore] = useState(true);\n const [threadLoadingMore, setThreadLoadingMore] = useState(false);\n const [threadMessages, setThreadMessages] = useState<\n ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>['threadMessages']\n >((threadProps?.id && channel?.state?.threads?.[threadProps.id]) || []);\n const [typing, setTyping] = useState<TypingContextValue<At, Ch, Co, Ev, Me, Re, Us>['typing']>(\n {},\n );\n const [watcherCount, setWatcherCount] =\n useState<ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>['watcherCount']>();\n const [watchers, setWatchers] = useState<\n ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>['watchers']\n >({});\n\n const { setTargetedMessage, targetedMessage } = useTargetedMessage(messageId);\n\n const channelId = channel?.id || '';\n useEffect(() => {\n const initChannel = () => {\n if (!channel) return;\n\n /**\n * Loading channel at first unread message requires channel to be initialized in the first place,\n * since we use read state on channel to decide what offset to load channel at.\n * Also there is no use case from UX perspective, why one would need loading uninitialized channel at particular message.\n * If the channel is not initiated, then we need to do channel.watch, which is more expensive for backend than channel.query.\n */\n if (!channel.initialized) {\n loadChannel();\n return;\n }\n\n if (messageId) {\n loadChannelAtMessage({ messageId });\n return;\n }\n\n if (\n initialScrollToFirstUnreadMessage &&\n channel.countUnread() > scrollToFirstUnreadThreshold\n ) {\n loadChannelAtFirstUnreadMessage();\n } else {\n loadChannel();\n }\n };\n\n initChannel();\n\n return () => {\n copyChannelState.cancel();\n copyReadState.cancel();\n copyTypingState.cancel();\n loadMoreFinished.cancel();\n loadMoreThreadFinished.cancel();\n };\n }, [channelId, messageId]);\n\n const threadPropsExists = !!threadProps;\n useEffect(() => {\n if (threadProps) {\n setThread(threadProps);\n if (channel && threadProps?.id) {\n setThreadMessages(channel.state.threads?.[threadProps.id] || []);\n }\n } else {\n setThread(null);\n }\n }, [threadPropsExists]);\n\n const handleAppBackground = useCallback(() => {\n if (channel) {\n channel.sendEvent({ parent_id: thread?.id, type: 'typing.stop' } as StreamEvent<\n At,\n Ch,\n Co,\n Ev,\n Me,\n Re,\n Us\n >);\n }\n }, [thread?.id, channelId]);\n\n useAppStateListener(undefined, handleAppBackground);\n\n /**\n * CHANNEL CONSTANTS\n */\n const isAdmin = client?.user?.role === 'admin' || channel?.state.membership.role === 'admin';\n\n const isModerator =\n channel?.state.membership.role === 'channel_moderator' ||\n channel?.state.membership.role === 'moderator';\n\n const isOwner = channel?.state.membership.role === 'owner';\n\n /**\n * CHANNEL METHODS\n */\n const markRead: ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>['markRead'] = useRef(\n throttle(\n () => {\n if (!channel || channel?.disconnected || !clientChannelConfig?.read_events) {\n return;\n }\n\n if (doMarkReadRequest) {\n doMarkReadRequest(channel);\n } else {\n logChatPromiseExecution(channel.markRead(), 'mark read');\n }\n },\n defaultThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyMessagesState = useRef(\n throttle(\n () => {\n if (channel) {\n setMessages([...channel.state.messages]);\n }\n },\n newMessageStateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyTypingState = useRef(\n throttle(\n () => {\n if (channel) {\n setTyping({ ...channel.state.typing });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyReadState = useRef(\n throttle(\n () => {\n if (channel) {\n setRead({ ...channel.state.read });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyChannelState = useRef(\n throttle(\n () => {\n setLoading(false);\n if (channel) {\n setMembers({ ...channel.state.members });\n setMessages([...channel.state.messages]);\n setRead({ ...channel.state.read });\n setTyping({ ...channel.state.typing });\n setWatcherCount(channel.state.watcher_count);\n setWatchers({ ...channel.state.watchers });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const connectionRecoveredHandler = () => {\n if (channel) {\n copyChannelState();\n if (thread) {\n setThreadMessages([...channel.state.threads[thread.id]]);\n }\n }\n };\n\n const connectionChangedHandler = (event: ConnectionChangeEvent) => {\n if (event.online) {\n resyncChannel();\n }\n };\n\n const handleEvent: EventHandler<At, Ch, Co, Ev, Me, Re, Us> = (event) => {\n if (thread) {\n const updatedThreadMessages =\n (thread.id && channel && channel.state.threads[thread.id]) || threadMessages;\n setThreadMessages(updatedThreadMessages);\n }\n\n if (channel && thread && event.message?.id === thread.id) {\n const updatedThread = channel.state.formatMessage(event.message);\n setThread(updatedThread);\n }\n\n if (event.type === 'typing.start' || event.type === 'typing.stop') {\n copyTypingState();\n } else if (event.type === 'message.read') {\n copyReadState();\n } else if (event.type === 'message.new') {\n copyMessagesState();\n } else if (channel) {\n copyChannelState();\n }\n };\n\n useEffect(() => {\n const channelSubscriptions: Array<ReturnType<ChannelType['on']>> = [];\n const clientSubscriptions: Array<ReturnType<StreamChat['on']>> = [];\n\n const subscribe = () => {\n if (!channel) return;\n\n /**\n * The more complex sync logic around internet connectivity (NetInfo) is part of Chat.tsx\n * listen to client.connection.recovered and all channel events\n */\n clientSubscriptions.push(client.on('connection.recovered', connectionRecoveredHandler));\n clientSubscriptions.push(client.on('connection.changed', connectionChangedHandler));\n clientSubscriptions.push(\n client.on('channel.deleted', (event) => {\n if (event.cid === channel.cid) {\n setDeleted(true);\n }\n }),\n );\n channelSubscriptions.push(channel.on(handleEvent));\n };\n\n subscribe();\n\n return () => {\n clientSubscriptions.forEach((s) => s.unsubscribe());\n channelSubscriptions.forEach((s) => s.unsubscribe());\n };\n }, [channelId, connectionRecoveredHandler, handleEvent]);\n\n const channelQueryCall = async (queryCall: () => void = () => null) => {\n setError(false);\n setLoading(true);\n\n try {\n await queryCall();\n setLastRead(new Date());\n setHasMore(true);\n copyChannelState();\n } catch (err) {\n setError(err);\n setLoading(false);\n setLastRead(new Date());\n }\n };\n\n /**\n * Loads channel at first unread channel.\n */\n const loadChannelAtFirstUnreadMessage = () => {\n if (!channel) return;\n const unreadCount = channel.countUnread();\n if (unreadCount <= scrollToFirstUnreadThreshold) return;\n\n channel.state.clearMessages();\n channel.state.setIsUpToDate(false);\n\n return channelQueryCall(async () => {\n /**\n * Stream only keeps unread count of channel upto 255. So once the count of unread messages reaches 255, we stop counting.\n * Thus we need to handle these two cases separately.\n */\n if (unreadCount < globalUnreadCountLimit) {\n /**\n * We want to ensure that first unread message appears in the first window frame, when message list loads.\n * If we assume that we have a exact count of unread messages, then first unread message is at offset = channel.countUnread().\n * So we will query 2 messages after (and including) first unread message, and 30 messages before first unread\n * message. So 2nd message in list is the first unread message. We can safely assume that 2nd message in list\n * will be visible to user when list loads.\n */\n const offset = unreadCount - unreadMessagesOnInitialLoadLimit;\n await query(offset, 30);\n\n /**\n * If the number of messages are not enough to fill the screen (we are making an assumption here that on overage 4 messages\n * are enough to fill the screen), then we need to fetch some more messages on recent side.\n */\n if (\n channel.state.messages.length &&\n channel.state.messages.length <= scrollToFirstUnreadThreshold &&\n !channel.state.isUpToDate\n ) {\n const mostRecentMessage = channel.state.messages[channel.state.messages.length - 1];\n await queryAfterMessage(mostRecentMessage.id, 10 - channel.state.messages.length);\n }\n } else {\n /**\n * If the unread count is 255, then we don't have exact unread count anymore, to determine the offset for querying messages.\n * In this case we are going to query messages using date params instead of offset-limit e.g., created_at_before_or_equal\n * So we query 30 messages before the last time user read the channel - channel.lastRead()\n */\n await channel.query({\n messages: {\n created_at_before_or_equal: channel.lastRead() || new Date(0),\n limit: 30,\n },\n });\n\n /**\n * If the number of messages are not enough to fill the screen (we are making an assumption here that on overage 4 messages\n * are enough to fill the screen), then we need to fetch some more messages on recent side.\n */\n if (\n channel.state.messages.length <= unreadMessagesOnInitialLoadLimit &&\n !channel.state.isUpToDate\n ) {\n if (channel.state.messages.length > 0) {\n const mostRecentMessage = channel.state.messages[channel.state.messages.length - 1];\n await queryAfterMessage(mostRecentMessage.id, 5);\n } else {\n /**\n * If we didn't get any messages, which means first unread message is the first ever message in channel.\n * So simply fetch some messages after the lastRead datetime.\n * We are keeping the limit as 10 here, as opposed to 30 in cases above. The reason being, we want the list\n * to be scrolled upto first unread message. So in this case we will need the scroll to start at top of the list.\n * React native provides a prop `initialScrollIndex` on FlatList, but it doesn't really work well\n * especially for dynamic sized content. So when the list loads, we are just going to manually scroll\n * to top of the list - flRef.current.scrollToEnd(). This autoscroll behavior is not great in general, but its less\n * bad for scrolling up 10 messages than scrolling up 30 messages.\n */\n await channel.query({\n messages: {\n created_at_after: channel.lastRead() || new Date(0),\n limit: 10,\n },\n });\n }\n }\n }\n });\n };\n\n /**\n * Loads channel at specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n * @param before Number of message to query before messageId\n * @param after Number of message to query after messageId\n */\n const loadChannelAtMessage: ChannelContextValue<\n At,\n Ch,\n Co,\n Ev,\n Me,\n Re,\n Us\n >['loadChannelAtMessage'] = ({ after = 2, before = 30, messageId }) =>\n channelQueryCall(async () => {\n await queryAtMessage({ after, before, messageId });\n\n if (messageId) {\n setTargetedMessage(messageId);\n }\n });\n\n const loadChannel = () =>\n channelQueryCall(async () => {\n if (!channel?.initialized || !channel.state.isUpToDate) {\n await channel?.watch();\n channel?.state.setIsUpToDate(true);\n }\n\n return;\n });\n\n const reloadThread = async () => {\n if (!channel || !thread?.id) return;\n\n setThreadLoadingMore(true);\n try {\n const parentID = thread.id;\n\n const limit = 50;\n channel.state.threads[parentID] = [];\n const queryResponse = await channel.getReplies(parentID, {\n limit: 50,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n } catch (err) {\n console.warn('Thread loading request failed with error', err);\n setError(err);\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const resyncChannel = async () => {\n if (!channel) return;\n\n setError(false);\n try {\n /**\n * Allow a buffer of 30 new messages, so that MessageList won't move its scroll position,\n * giving smooth user experience.\n */\n const state = await channel.watch({\n messages: {\n limit: messages.length + 30,\n },\n });\n\n const oldListTopMessage = messages[0];\n const oldListTopMessageId = messages[0]?.id;\n const oldListBottomMessage = messages[messages.length - 1];\n\n const newListTopMessage = state.messages[0];\n const newListBottomMessage = state.messages[state.messages.length - 1];\n\n if (\n !oldListTopMessage || // previous list was empty\n !oldListBottomMessage || // previous list was empty\n !newListTopMessage || // new list is truncated\n !newListBottomMessage // new list is truncated\n ) {\n /** Channel was truncated */\n channel.state.clearMessages();\n channel.state.setIsUpToDate(true);\n channel.state.addMessagesSorted(state.messages);\n copyChannelState();\n return;\n }\n\n const parseMessage = (message: typeof oldListTopMessage) =>\n ({\n ...message,\n created_at: message.created_at.toString(),\n pinned_at: message.pinned_at?.toString(),\n updated_at: message.updated_at?.toString(),\n } as unknown as MessageResponse<At, Ch, Co, Me, Re, Us>);\n\n const failedMessages = messages\n .filter((message) => message.status === 'failed')\n .map(parseMessage);\n\n const failedThreadMessages = thread\n ? threadMessages.filter((message) => message.status === 'failed').map(parseMessage)\n : [];\n\n const oldListTopMessageCreatedAt = oldListTopMessage.created_at;\n const oldListBottomMessageCreatedAt = oldListBottomMessage.created_at;\n const newListTopMessageCreatedAt = newListTopMessage.created_at\n ? new Date(newListTopMessage.created_at)\n : new Date();\n const newListBottomMessageCreatedAt = newListBottomMessage?.created_at\n ? new Date(newListBottomMessage.created_at)\n : new Date();\n\n let finalMessages = [];\n\n if (\n oldListTopMessage &&\n oldListTopMessageCreatedAt &&\n oldListBottomMessageCreatedAt &&\n newListTopMessageCreatedAt < oldListTopMessageCreatedAt &&\n newListBottomMessageCreatedAt >= oldListBottomMessageCreatedAt\n ) {\n const index = state.messages.findIndex((message) => message.id === oldListTopMessageId);\n finalMessages = state.messages.slice(index);\n } else {\n finalMessages = state.messages;\n }\n\n channel.state.setIsUpToDate(true);\n\n channel.state.clearMessages();\n channel.state.addMessagesSorted(finalMessages);\n\n setHasMore(true);\n copyChannelState();\n\n if (failedMessages.length) {\n channel.state.addMessagesSorted(failedMessages);\n copyChannelState();\n }\n\n await reloadThread();\n\n if (thread && failedThreadMessages.length) {\n channel.state.addMessagesSorted(failedThreadMessages);\n setThreadMessages([...channel.state.threads[thread.id]]);\n }\n } catch (err) {\n setError(err);\n setLoading(false);\n }\n };\n\n const reloadChannel = () =>\n channelQueryCall(async () => {\n await channel?.watch();\n channel?.state.setIsUpToDate(true);\n });\n\n /**\n * Makes a query to load messages in channel.\n */\n const query = async (offset = 0, limit = 30) => {\n if (!channel) return;\n channel.state.clearMessages();\n\n await channel.query({\n messages: {\n limit,\n offset,\n },\n watch: true,\n });\n channel.state.setIsUpToDate(offset === 0);\n };\n\n /**\n * Makes a query to load messages at particular message id.\n *\n * @param messageId Targeted message id\n * @param before Number of messages to load before messageId\n * @param after Number of messages to load after messageId\n */\n const queryAtMessage = async ({\n after = 10,\n before = 10,\n messageId,\n }: Parameters<ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>['loadChannelAtMessage']>[0]) => {\n if (!channel) return;\n channel.state.setIsUpToDate(false);\n channel.state.clearMessages();\n setMessages([...channel.state.messages]);\n if (!messageId) {\n await channel.query({\n messages: {\n limit: before,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(true);\n return;\n }\n\n await queryBeforeMessage(messageId, before);\n await queryAfterMessage(messageId, after);\n };\n\n /**\n * Makes a query to load messages before particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load\n */\n const queryBeforeMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n\n await channel.query({\n messages: {\n id_lt: messageId,\n limit,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(false);\n };\n\n /**\n * Makes a query to load messages later than particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load.\n */\n const queryAfterMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n const state = await channel.query({\n messages: {\n id_gte: messageId,\n limit,\n },\n watch: true,\n });\n\n if (state.messages.length < limit) {\n channel.state.setIsUpToDate(true);\n } else {\n channel.state.setIsUpToDate(false);\n }\n };\n\n // In case the channel is disconnected which may happen when channel is deleted,\n // underlying js client throws an error. Following function ensures that Channel component\n // won't result in error in such a case.\n const getChannelConfigSafely = () => {\n try {\n return channel?.getConfig();\n } catch (_) {\n return null;\n }\n };\n\n /**\n * Channel configs for use in disabling local functionality.\n * Nullish coalescing is used to give first priority to props to override\n * the server settings. Then priority to server settings to override defaults.\n */\n const clientChannelConfig = getChannelConfigSafely();\n\n const messagesConfig: MessagesConfig = {\n /**\n * Replace with backend flag once its ready\n */\n mutesEnabled: mutesEnabledProp ?? clientChannelConfig?.mutes ?? true,\n quotedRepliesEnabled: quotedRepliesEnabledProp ?? true,\n reactionsEnabled: reactionsEnabledProp ?? clientChannelConfig?.reactions ?? true,\n threadRepliesEnabled: threadRepliesEnabledProp ?? clientChannelConfig?.replies ?? true,\n };\n const channelConfig: ChannelConfig = {\n readEventsEnabled: readEventsEnabledProp ?? clientChannelConfig?.read_events ?? true,\n typingEventsEnabled: typingEventsEnabledProp ?? clientChannelConfig?.typing_events ?? true,\n };\n const inputConfig: InputConfig = {\n maxMessageLength: maxMessageLengthProp ?? clientChannelConfig?.max_message_length ?? undefined,\n uploadsEnabled: uploadsEnabledProp ?? clientChannelConfig?.uploads ?? true,\n };\n\n /**\n * MESSAGE METHODS\n */\n\n const updateMessage: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>['updateMessage'] = (\n updatedMessage,\n extraState = {},\n ) => {\n if (channel) {\n channel.state.addMessageSorted(updatedMessage, true);\n if (thread && updatedMessage.parent_id) {\n extraState.threadMessages = channel.state.threads[updatedMessage.parent_id] || [];\n setThreadMessages(extraState.threadMessages);\n }\n\n setMessages([...channel.state.messages]);\n }\n };\n\n const replaceMessage = (\n oldMessage: MessageResponse<At, Ch, Co, Me, Re, Us>,\n newMessage: MessageResponse<At, Ch, Co, Me, Re, Us>,\n ) => {\n if (channel) {\n channel.state.removeMessage(oldMessage);\n channel.state.addMessageSorted(newMessage, true);\n if (thread && newMessage.parent_id) {\n const threadMessages = channel.state.threads[newMessage.parent_id] || [];\n setThreadMessages(threadMessages);\n }\n setMessages(channel.state.messages);\n }\n };\n\n const createMessagePreview = ({\n attachments,\n mentioned_users,\n parent_id,\n text,\n ...extraFields\n }: Partial<StreamMessage<At, Me, Us>>) => {\n const preview = {\n __html: text,\n attachments,\n created_at: new Date(),\n html: text,\n id: `${client.userID}-${generateRandomId()}`,\n mentioned_users:\n mentioned_users?.map((userId) => ({\n id: userId,\n })) || [],\n parent_id,\n reactions: [],\n status: 'sending',\n text,\n type: 'regular',\n user: {\n id: client.userID,\n ...client.user,\n },\n ...extraFields,\n } as unknown as MessageResponse<At, Ch, Co, Me, Re, Us>;\n\n /**\n * This is added to the message for local rendering prior to the message\n * being returned from the backend, it is removed when the message is sent\n * as quoted_message is a reserved field.\n */\n if (preview.quoted_message_id) {\n const quotedMessage = messages.find((message) => message.id === preview.quoted_message_id);\n\n preview.quoted_message = quotedMessage as MessageResponse<\n At,\n Ch,\n Co,\n Me,\n Re,\n Us\n >['quoted_message'];\n }\n return preview;\n };\n\n const sendMessageRequest = async (\n message: MessageResponse<At, Ch, Co, Me, Re, Us>,\n retrying?: boolean,\n ) => {\n const {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n __html,\n attachments,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n created_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n html,\n id,\n mentioned_users,\n parent_id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n quoted_message,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n reactions,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n status,\n text,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n type,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n updated_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n user,\n ...extraFields\n } = message;\n\n const messageData = {\n attachments,\n id: retrying ? undefined : id,\n mentioned_users: mentioned_users?.map((mentionedUser) => mentionedUser.id) || [],\n parent_id,\n text,\n ...extraFields,\n } as StreamMessage<At, Me, Us>;\n\n try {\n let messageResponse = {} as SendMessageAPIResponse<At, Ch, Co, Me, Re, Us>;\n\n if (doSendMessageRequest) {\n messageResponse = await doSendMessageRequest(channel?.cid || '', messageData);\n } else if (channel) {\n messageResponse = await channel.sendMessage(messageData);\n }\n\n if (messageResponse.message) {\n messageResponse.message.status = 'received';\n if (retrying) {\n replaceMessage(message, messageResponse.message);\n } else {\n updateMessage(messageResponse.message);\n }\n }\n } catch (err) {\n console.log(err);\n message.status = 'failed';\n updateMessage(message);\n }\n };\n\n const sendMessage: InputMessageInputContextValue<At, Ch, Co, Ev, Me, Re, Us>['sendMessage'] =\n async (message) => {\n if (channel?.state?.filterErrorMessages) {\n channel.state.filterErrorMessages();\n }\n\n const messagePreview = createMessagePreview({\n ...message,\n attachments: message.attachments || [],\n });\n\n if (!channel?.state.isUpToDate) {\n await reloadChannel();\n }\n\n updateMessage(messagePreview, {\n commands: [],\n messageInput: '',\n });\n\n await sendMessageRequest(messagePreview);\n };\n\n const retrySendMessage: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>['retrySendMessage'] =\n async (message) => {\n const statusPendingMessage = {\n ...message,\n status: 'sending',\n };\n\n updateMessage(statusPendingMessage);\n await sendMessageRequest(statusPendingMessage, true);\n };\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreFinished = useRef(\n debounce(\n (\n updatedHasMore: boolean,\n newMessages: ChannelState<At, Ch, Co, Ev, Me, Re, Us>['messages'],\n ) => {\n setLoadingMore(false);\n setError(false);\n setHasMore(updatedHasMore);\n setMessages(newMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const loadMore: PaginatedMessageListContextValue<At, Ch, Co, Ev, Me, Re, Us>['loadMore'] = async (\n limit = 20,\n ) => {\n if (loadingMore || hasMore === false) {\n return;\n }\n setLoadingMore(true);\n\n if (!messages.length) {\n return setLoadingMore(false);\n }\n\n const oldestMessage = messages && messages[0];\n\n if (oldestMessage && oldestMessage.status !== 'received') {\n return setLoadingMore(false);\n }\n\n const oldestID = oldestMessage && oldestMessage.id;\n\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: { id_lt: oldestID, limit },\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n loadMoreFinished(updatedHasMore, channel.state.messages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n setError(err);\n setLoadingMore(false);\n throw err;\n }\n };\n\n const loadMoreRecent: PaginatedMessageListContextValue<\n At,\n Ch,\n Co,\n Ev,\n Me,\n Re,\n Us\n >['loadMoreRecent'] = async (limit = 5) => {\n if (channel?.state.isUpToDate) {\n return;\n }\n\n setLoadingMoreRecent(true);\n\n const recentMessage = messages[messages.length - 1];\n\n if (recentMessage?.status !== 'received') {\n setLoadingMoreRecent(false);\n return;\n }\n\n try {\n if (channel) {\n await queryAfterMessage(recentMessage.id, limit);\n loadMoreRecentFinished(channel.state.messages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n setError(err);\n setLoadingMoreRecent(false);\n throw err;\n }\n };\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreRecentFinished = useRef(\n debounce(\n (newMessages: ChannelState<At, Ch, Co, Ev, Me, Re, Us>['messages']) => {\n setLoadingMoreRecent(false);\n setMessages(newMessages);\n setError(false);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const editMessage: InputMessageInputContextValue<At, Ch, Co, Ev, Me, Re, Us>['editMessage'] = (\n updatedMessage,\n ) =>\n doUpdateMessageRequest\n ? doUpdateMessageRequest(channel?.cid || '', updatedMessage)\n : client.updateMessage(updatedMessage);\n\n const setEditingState: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>['setEditingState'] = (\n message,\n ) => {\n setEditing(message);\n };\n\n const setQuotedMessageState: MessagesContextValue<\n At,\n Ch,\n Co,\n Ev,\n Me,\n Re,\n Us\n >['setQuotedMessageState'] = (message) => {\n setQuotedMessage(message);\n };\n\n const clearEditingState: InputMessageInputContextValue<\n At,\n Ch,\n Co,\n Ev,\n Me,\n Re,\n Us\n >['clearEditingState'] = () => setEditing(false);\n\n const clearQuotedMessageState: InputMessageInputContextValue<\n At,\n Ch,\n Co,\n Ev,\n Me,\n Re,\n Us\n >['clearQuotedMessageState'] = () => setQuotedMessage(false);\n\n const removeMessage: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>['removeMessage'] = (\n message,\n ) => {\n if (channel) {\n channel.state.removeMessage(message);\n setMessages(channel.state.messages);\n if (thread) {\n setThreadMessages(channel.state.threads[thread.id] || []);\n }\n }\n };\n\n /**\n * THREAD METHODS\n */\n const openThread: ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>['openThread'] = (message) => {\n const newThreadMessages = message?.id ? channel?.state?.threads[message.id] || [] : [];\n setThread(message);\n setThreadMessages(newThreadMessages);\n };\n\n const closeThread: ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>['closeThread'] =\n useCallback(() => {\n setThread(null);\n setThreadMessages([]);\n }, [setThread, setThreadMessages]);\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreThreadFinished = useRef(\n debounce(\n (\n newThreadHasMore: boolean,\n updatedThreadMessages: ChannelState<At, Ch, Co, Ev, Me, Re, Us>['threads'][string],\n ) => {\n setThreadHasMore(newThreadHasMore);\n setThreadLoadingMore(false);\n setThreadMessages(updatedThreadMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const loadMoreThread: ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>['loadMoreThread'] =\n async () => {\n if (threadLoadingMore || !thread?.id) {\n return;\n }\n setThreadLoadingMore(true);\n\n try {\n if (channel) {\n const parentID = thread.id;\n\n /**\n * In the channel is re-initializing, then threads may get wiped out during the process\n * (check `addMessagesSorted` method on channel.state). In those cases, we still want to\n * preserve the messages on active thread, so lets simply copy messages from UI state to\n * `channel.state`.\n */\n channel.state.threads[parentID] = threadMessages;\n const oldestMessageID = threadMessages?.[0]?.id;\n\n const limit = 50;\n const queryResponse = await channel.getReplies(parentID, {\n id_lt: oldestMessageID,\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n setError(err);\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const channelContext = useCreateChannelContext({\n ...channelConfig,\n channel,\n disabled: !!channel?.data?.frozen && disableIfFrozenChannel,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n enforceUniqueReaction,\n error,\n giphyEnabled:\n giphyEnabled ??\n !!(clientChannelConfig?.commands || [])?.some((command) => command.name === 'giphy'),\n hideDateSeparators,\n hideStickyDateHeader,\n isAdmin,\n isModerator,\n isOwner,\n lastRead,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n maxTimeBetweenGroupedMessages,\n members,\n NetworkDownIndicator,\n read,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setLastRead,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n watcherCount,\n watchers,\n });\n\n const messageInputContext = useCreateInputMessageInputContext({\n ...inputConfig,\n additionalTextInputProps,\n AttachButton,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n channelId,\n clearEditingState,\n clearQuotedMessageState,\n CommandsButton,\n compressImageQuality,\n doDocUploadRequest,\n doImageUploadRequest,\n editing,\n editMessage,\n FileUploadPreview,\n hasCommands,\n hasFilePicker,\n hasImagePicker,\n ImageUploadPreview,\n initialValue,\n Input,\n InputButtons,\n maxNumberOfFiles,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n MoreOptionsButton,\n numberOfLines,\n onChangeText,\n quotedMessage,\n SendButton,\n sendImageAsync,\n sendMessage,\n setInputRef,\n setQuotedMessageState,\n ShowThreadMessageInChannelButton,\n UploadProgressIndicator,\n });\n\n const messageListContext = useCreatePaginatedMessageListContext({\n channelId,\n hasMore,\n loadingMore: loadingMoreProp !== undefined ? loadingMoreProp : loadingMore,\n loadingMoreRecent:\n loadingMoreRecentProp !== undefined ? loadingMoreRecentProp : loadingMoreRecent,\n loadMore,\n loadMoreRecent,\n messages: messagesProp || messages,\n setLoadingMore,\n setLoadingMoreRecent,\n });\n\n const messagesContext = useCreateMessagesContext({\n ...messagesConfig,\n additionalTouchableProps,\n animatedLongPress,\n Attachment,\n AttachmentActions,\n blockUser,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n channelId,\n copyMessage,\n DateHeader,\n deleteMessage,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n editMessage: editMessageProp,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n flagMessage,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n Giphy,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n muteUser,\n myMessageTheme,\n onDoubleTapMessage,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n quotedReply,\n ReactionList,\n removeMessage,\n Reply,\n retry,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n threadReply,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n });\n\n const suggestionsContext: Partial<SuggestionsContextValue<Co, Us>> = {\n closeSuggestions,\n openSuggestions,\n updateSuggestions,\n };\n\n const threadContext = useCreateThreadContext({\n allowThreadMessagesInChannel,\n closeThread,\n loadMoreThread,\n openThread,\n reloadThread,\n setThreadLoadingMore,\n thread,\n threadHasMore,\n threadLoadingMore,\n threadMessages,\n });\n\n const typingContext = useCreateTypingContext({\n typing,\n });\n\n // TODO: replace the null view with appropriate message. Currently this is waiting a design decision.\n if (deleted) return null;\n\n if (!channel || (error && messages.length === 0)) {\n return <LoadingErrorIndicator error={error} listType='message' retry={reloadChannel} />;\n }\n\n if (!channel?.cid || !channel.watch) {\n return (\n <Text style={[styles.selectChannel, { color: black }, selectChannel]} testID='no-channel'>\n {t('Please select a channel first')}\n </Text>\n );\n }\n\n return (\n <KeyboardCompatibleView\n behavior={keyboardBehavior}\n enabled={!disableKeyboardCompatibleView}\n keyboardVerticalOffset={keyboardVerticalOffset}\n {...additionalKeyboardAvoidingViewProps}\n >\n <ChannelProvider<At, Ch, Co, Ev, Me, Re, Us> value={channelContext}>\n <TypingProvider<At, Ch, Co, Ev, Me, Re, Us> value={typingContext}>\n <PaginatedMessageListProvider<At, Ch, Co, Ev, Me, Re, Us> value={messageListContext}>\n <MessagesProvider<At, Ch, Co, Ev, Me, Re, Us> value={messagesContext}>\n <ThreadProvider<At, Ch, Co, Ev, Me, Re, Us> value={threadContext}>\n <SuggestionsProvider<Co, Us> value={suggestionsContext}>\n <MessageInputProvider<At, Ch, Co, Ev, Me, Re, Us> value={messageInputContext}>\n <View style={{ height: '100%' }}>{children}</View>\n </MessageInputProvider>\n </SuggestionsProvider>\n </ThreadProvider>\n </MessagesProvider>\n </PaginatedMessageListProvider>\n </TypingProvider>\n </ChannelProvider>\n </KeyboardCompatibleView>\n );\n};\n\nexport type ChannelProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<ChannelPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>>;\n\n/**\n *\n * The wrapper component for a chat channel. Channel needs to be placed inside a Chat component\n * to receive the StreamChat client instance. MessageList, Thread, and MessageInput must be\n * children of the Channel component to receive the ChannelContext.\n *\n * @example ./Channel.md\n */\nexport const Channel = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: PropsWithChildren<ChannelProps<At, Ch, Co, Ev, Me, Re, Us>>,\n) => {\n const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { t } = useTranslationContext();\n\n return (\n <ChannelWithContext<At, Ch, Co, Ev, Me, Re, Us>\n {...{\n client,\n t,\n }}\n {...props}\n />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["Channel.tsx"],"names":["styles","StyleSheet","create","selectChannel","fontWeight","padding","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","scrollToFirstUnreadThreshold","defaultThrottleInterval","defaultDebounceInterval","throttleOptions","leading","trailing","debounceOptions","unreadMessagesOnInitialLoadLimit","ChannelWithContext","props","additionalKeyboardAvoidingViewProps","additionalTextInputProps","additionalTouchableProps","allowThreadMessagesInChannel","AttachButton","AttachButtonDefault","Attachment","AttachmentDefault","AttachmentActions","AttachmentActionsDefault","AutoCompleteSuggestionHeader","AutoCompleteSuggestionHeaderDefault","AutoCompleteSuggestionItem","AutoCompleteSuggestionItemDefault","AutoCompleteSuggestionList","AutoCompleteSuggestionListDefault","autoCompleteSuggestionsLimit","autoCompleteTriggerSettings","Card","CardDefault","CardCover","CardFooter","CardHeader","channel","children","client","CommandsButton","CommandsButtonDefault","compressImageQuality","CooldownTimer","CooldownTimerDefault","DateHeader","DateHeaderDefault","deletedMessagesVisibilityType","disableIfFrozenChannel","disableKeyboardCompatibleView","disableTypingIndicator","dismissKeyboardOnMessageTouch","doDocUploadRequest","doImageUploadRequest","doMarkReadRequest","doSendMessageRequest","doUpdateMessageRequest","EmptyStateIndicator","EmptyStateIndicatorDefault","enableMessageGroupingByUser","enforceUniqueReaction","FileAttachment","FileAttachmentDefault","FileAttachmentGroup","FileAttachmentGroupDefault","FileAttachmentIcon","FileIconDefault","FileUploadPreview","FileUploadPreviewDefault","FlatList","FlatListDefault","forceAlignMessages","formatDate","Gallery","GalleryDefault","Giphy","GiphyDefault","giphyEnabled","globalUnreadCountLimit","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","hasCommands","hasFilePicker","hasImagePicker","hideDateSeparators","hideStickyDateHeader","ImageUploadPreview","ImageUploadPreviewDefault","initialScrollToFirstUnreadMessage","initialValue","InlineDateSeparator","InlineDateSeparatorDefault","InlineUnreadIndicator","InlineUnreadIndicatorDefault","Input","InputButtons","InputButtonsDefault","keyboardBehavior","KeyboardCompatibleView","KeyboardCompatibleViewDefault","keyboardVerticalOffset","legacyImageViewerSwipeBehaviour","LoadingErrorIndicator","LoadingErrorIndicatorDefault","LoadingIndicator","LoadingIndicatorDefault","loadingMoreProp","loadingMore","loadingMoreRecentProp","loadingMoreRecent","markdownRules","maxMessageLengthProp","maxMessageLength","maxNumberOfFiles","maxTimeBetweenGroupedMessages","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","members","Message","MessageDefault","messageActions","MessageAvatar","MessageAvatarDefault","MessageContent","MessageContentDefault","messageContentOrder","MessageDeleted","MessageDeletedDefault","MessageFooter","MessageFooterDefault","MessageHeader","messageId","MessageList","MessageListDefault","MessagePinnedHeader","MessagePinnedHeaderDefault","MessageReplies","MessageRepliesDefault","MessageRepliesAvatars","MessageRepliesAvatarsDefault","messages","MessageSimple","MessageSimpleDefault","MessageStatus","MessageStatusDefault","MessageSystem","MessageSystemDefault","MessageText","MoreOptionsButton","MoreOptionsButtonDefault","myMessageTheme","newMessageStateUpdateThrottleInterval","NetworkDownIndicator","NetworkDownIndicatorDefault","numberOfLines","onChangeText","onLongPressMessage","overrideOwnCapabilities","onPressInMessage","onPressMessage","OverlayReactionList","OverlayReactionListDefault","ReactionList","ReactionListDefault","read","Reply","ReplyDefault","ScrollToBottomButton","ScrollToBottomButtonDefault","selectReaction","SendButton","SendButtonDefault","SendMessageDisallowedIndicator","SendMessageDisallowedIndicatorDefault","sendImageAsync","setInputRef","setMembers","setMessages","setRead","setThreadMessages","setTyping","setWatcherCount","setWatchers","shouldSyncChannel","ShowThreadMessageInChannelButton","ShowThreadMessageInChannelButtonDefault","stateUpdateThrottleInterval","StickyHeader","supportedReactions","t","threadProps","thread","threadList","threadMessages","typing","TypingIndicator","TypingIndicatorDefault","TypingIndicatorContainer","TypingIndicatorContainerDefault","UploadProgressIndicator","UploadProgressIndicatorDefault","UrlPreview","watcherCount","watchers","theme","black","colors","deleted","setDeleted","editing","setEditing","error","setError","hasMore","setHasMore","lastRead","setLastRead","state","length","loading","setLoading","setLoadingMore","setLoadingMoreRecent","quotedMessage","setQuotedMessage","setThread","threadHasMore","setThreadHasMore","threadLoadingMore","setThreadLoadingMore","syncingChannel","setSyncingChannel","setTargetedMessage","targetedMessage","channelId","id","initChannel","initialized","loadChannel","loadChannelAtMessage","countUnread","loadChannelAtFirstUnreadMessage","copyChannelState","cancel","copyReadState","copyTypingState","loadMoreFinished","loadMoreThreadFinished","threadPropsExists","threads","handleAppBackground","sendEvent","parent_id","undefined","isAdmin","user","role","membership","isModerator","isOwner","markRead","disconnected","clientChannelConfig","read_events","current","copyMessagesState","watcher_count","connectionRecoveredHandler","connectionChangedHandler","event","online","resyncChannel","handleEvent","updatedThreadMessages","message","updatedThread","formatMessage","channelSubscriptions","clientSubscriptions","subscribe","push","on","cid","forEach","s","unsubscribe","channelQueryCall","queryCall","Date","Error","unreadCount","clearMessages","setIsUpToDate","offset","query","isUpToDate","mostRecentMessage","queryAfterMessage","created_at_before_or_equal","limit","created_at_after","after","before","queryAtMessage","watch","reloadThread","parentID","getReplies","queryResponse","updatedHasMore","getMessagesById","threadMessage","formattedMessage","console","warn","oldListTopMessage","oldListTopMessageId","oldListBottomMessage","newListTopMessage","newListBottomMessage","addMessagesSorted","parseMessage","created_at","toString","pinned_at","updated_at","failedMessages","filter","status","MessageStatusTypes","FAILED","map","failedThreadMessages","oldListTopMessageCreatedAt","oldListBottomMessageCreatedAt","newListTopMessageCreatedAt","newListBottomMessageCreatedAt","finalMessages","index","findIndex","slice","reloadChannel","queryBeforeMessage","id_lt","id_gte","getChannelConfigSafely","getConfig","_","updateMessage","updatedMessage","extraState","addMessageSorted","replaceMessage","oldMessage","newMessage","removeMessage","createMessagePreview","attachments","mentioned_users","text","extraFields","preview","__html","html","userID","userId","reactions","SENDING","quoted_message_id","find","quoted_message","sendMessageRequest","retrying","messageData","mentionedUser","messageResponse","sendMessage","RECEIVED","log","filterErrorMessages","messagePreview","commands","messageInput","retrySendMessage","statusPendingMessage","newMessages","loadMore","oldestMessage","oldestID","loadMoreRecent","recentMessage","loadMoreRecentFinished","editMessage","setEditingState","setQuotedMessageState","clearEditingState","clearQuotedMessageState","openThread","newThreadMessages","closeThread","newThreadHasMore","loadMoreThread","oldestMessageID","ownCapabilitiesContext","overrideCapabilities","channelContext","disabled","data","frozen","some","command","name","isChannelActive","inputMessageInputContext","max_message_length","messageListContext","messagesContext","suggestionsContext","threadContext","typingContext","color","height","Channel"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AAaA;;AAEA;;AAEA;;AAEA;;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AACA;;AAEA;;AACA;;AAIA;;AAIA;;AAIA;;AAIA;;AAIA;;AACA;;AACA;;AAIA;;AACA;;AAEA;;AAOA;;AAWA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;AAEA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,aAAa,EAAE;AAAEC,IAAAA,UAAU,EAAE,MAAd;AAAsBC,IAAAA,OAAO,EAAE;AAA/B;AADgB,CAAlB,CAAf;;AAIO,IAAMC,YAA4B,GAAG,CAC1C;AACEC,EAAAA,IAAI,EAAEC,mBADR;AAEEC,EAAAA,IAAI,EAAE;AAFR,CAD0C,EAK1C;AACEF,EAAAA,IAAI,EAAEG,uBADR;AAEED,EAAAA,IAAI,EAAE;AAFR,CAL0C,EAS1C;AACEF,EAAAA,IAAI,EAAEI,yBADR;AAEEF,EAAAA,IAAI,EAAE;AAFR,CAT0C,EAa1C;AACEF,EAAAA,IAAI,EAAEK,kBADR;AAEEH,EAAAA,IAAI,EAAE;AAFR,CAb0C,EAiB1C;AACEF,EAAAA,IAAI,EAAEM,kBADR;AAEEJ,EAAAA,IAAI,EAAE;AAFR,CAjB0C,CAArC;;AA2BP,IAAMK,4BAA4B,GAAG,CAArC;AAEA,IAAMC,uBAAuB,GAAG,GAAhC;AACA,IAAMC,uBAAuB,GAAG,GAAhC;AACA,IAAMC,eAAe,GAAG;AACtBC,EAAAA,OAAO,EAAE,IADa;AAEtBC,EAAAA,QAAQ,EAAE;AAFY,CAAxB;AAIA,IAAMC,eAAe,GAAG;AACtBF,EAAAA,OAAO,EAAE,IADa;AAEtBC,EAAAA,QAAQ,EAAE;AAFY,CAAxB;AASA,IAAME,gCAAgC,GAAG,CAAzC;;AA6MA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CASzBC,KATyB,EAUtB;AAAA;;AACH,MACEC,mCADF,GAmJID,KAnJJ,CACEC,mCADF;AAAA,MAEEC,wBAFF,GAmJIF,KAnJJ,CAEEE,wBAFF;AAAA,MAGEC,wBAHF,GAmJIH,KAnJJ,CAGEG,wBAHF;AAAA,8BAmJIH,KAnJJ,CAIEI,4BAJF;AAAA,MAIEA,4BAJF,sCAIiC,IAJjC;AAAA,4BAmJIJ,KAnJJ,CAKEK,YALF;AAAA,MAKEA,YALF,oCAKiBC,0BALjB;AAAA,0BAmJIN,KAnJJ,CAMEO,UANF;AAAA,MAMEA,UANF,kCAMeC,sBANf;AAAA,8BAmJIR,KAnJJ,CAOES,iBAPF;AAAA,MAOEA,iBAPF,sCAOsBC,oCAPtB;AAAA,8BAmJIV,KAnJJ,CAQEW,4BARF;AAAA,MAQEA,4BARF,sCAQiCC,0DARjC;AAAA,+BAmJIZ,KAnJJ,CASEa,0BATF;AAAA,MASEA,0BATF,uCAS+BC,sDAT/B;AAAA,+BAmJId,KAnJJ,CAUEe,0BAVF;AAAA,MAUEA,0BAVF,uCAU+BC,sDAV/B;AAAA,MAWEC,4BAXF,GAmJIjB,KAnJJ,CAWEiB,4BAXF;AAAA,MAYEC,2BAZF,GAmJIlB,KAnJJ,CAYEkB,2BAZF;AAAA,oBAmJIlB,KAnJJ,CAaEmB,IAbF;AAAA,MAaEA,IAbF,4BAaSC,UAbT;AAAA,MAcEC,SAdF,GAmJIrB,KAnJJ,CAcEqB,SAdF;AAAA,MAeEC,UAfF,GAmJItB,KAnJJ,CAeEsB,UAfF;AAAA,MAgBEC,UAhBF,GAmJIvB,KAnJJ,CAgBEuB,UAhBF;AAAA,MAiBEC,OAjBF,GAmJIxB,KAnJJ,CAiBEwB,OAjBF;AAAA,MAkBEC,QAlBF,GAmJIzB,KAnJJ,CAkBEyB,QAlBF;AAAA,MAmBEC,MAnBF,GAmJI1B,KAnJJ,CAmBE0B,MAnBF;AAAA,8BAmJI1B,KAnJJ,CAoBE2B,cApBF;AAAA,MAoBEA,cApBF,sCAoBmBC,8BApBnB;AAAA,MAqBEC,oBArBF,GAmJI7B,KAnJJ,CAqBE6B,oBArBF;AAAA,6BAmJI7B,KAnJJ,CAsBE8B,aAtBF;AAAA,MAsBEA,aAtBF,qCAsBkBC,4BAtBlB;AAAA,0BAmJI/B,KAnJJ,CAuBEgC,UAvBF;AAAA,MAuBEA,UAvBF,kCAuBeC,sBAvBf;AAAA,8BAmJIjC,KAnJJ,CAwBEkC,6BAxBF;AAAA,MAwBEA,6BAxBF,sCAwBkC,QAxBlC;AAAA,8BAmJIlC,KAnJJ,CAyBEmC,sBAzBF;AAAA,MAyBEA,sBAzBF,sCAyB2B,IAzB3B;AAAA,8BAmJInC,KAnJJ,CA0BEoC,6BA1BF;AAAA,MA0BEA,6BA1BF,sCA0BkC,KA1BlC;AAAA,MA2BEC,sBA3BF,GAmJIrC,KAnJJ,CA2BEqC,sBA3BF;AAAA,8BAmJIrC,KAnJJ,CA4BEsC,6BA5BF;AAAA,MA4BEA,6BA5BF,sCA4BkC,IA5BlC;AAAA,MA6BEC,kBA7BF,GAmJIvC,KAnJJ,CA6BEuC,kBA7BF;AAAA,MA8BEC,oBA9BF,GAmJIxC,KAnJJ,CA8BEwC,oBA9BF;AAAA,MA+BEC,iBA/BF,GAmJIzC,KAnJJ,CA+BEyC,iBA/BF;AAAA,MAgCEC,oBAhCF,GAmJI1C,KAnJJ,CAgCE0C,oBAhCF;AAAA,MAiCEC,sBAjCF,GAmJI3C,KAnJJ,CAiCE2C,sBAjCF;AAAA,8BAmJI3C,KAnJJ,CAkCE4C,mBAlCF;AAAA,MAkCEA,mBAlCF,sCAkCwBC,wCAlCxB;AAAA,8BAmJI7C,KAnJJ,CAmCE8C,2BAnCF;AAAA,MAmCEA,2BAnCF,sCAmCgC,IAnChC;AAAA,8BAmJI9C,KAnJJ,CAoCE+C,qBApCF;AAAA,MAoCEA,qBApCF,sCAoC0B,KApC1B;AAAA,8BAmJI/C,KAnJJ,CAqCEgD,cArCF;AAAA,MAqCEA,cArCF,sCAqCmBC,8BArCnB;AAAA,+BAmJIjD,KAnJJ,CAsCEkD,mBAtCF;AAAA,MAsCEA,mBAtCF,uCAsCwBC,wCAtCxB;AAAA,+BAmJInD,KAnJJ,CAuCEoD,kBAvCF;AAAA,MAuCEA,kBAvCF,uCAuCuBC,kBAvCvB;AAAA,8BAmJIrD,KAnJJ,CAwCEsD,iBAxCF;AAAA,MAwCEA,iBAxCF,sCAwCsBC,oCAxCtB;AAAA,wBAmJIvD,KAnJJ,CAyCEwD,QAzCF;AAAA,MAyCEA,QAzCF,gCAyCaC,gBAzCb;AAAA,MA0CEC,kBA1CF,GAmJI1D,KAnJJ,CA0CE0D,kBA1CF;AAAA,MA2CEC,UA3CF,GAmJI3D,KAnJJ,CA2CE2D,UA3CF;AAAA,uBAmJI3D,KAnJJ,CA4CE4D,OA5CF;AAAA,MA4CEA,OA5CF,+BA4CYC,gBA5CZ;AAAA,qBAmJI7D,KAnJJ,CA6CE8D,KA7CF;AAAA,MA6CEA,KA7CF,6BA6CUC,YA7CV;AAAA,MA8CEC,YA9CF,GAmJIhE,KAnJJ,CA8CEgE,YA9CF;AAAA,8BAmJIhE,KAnJJ,CA+CEiE,sBA/CF;AAAA,MA+CEA,sBA/CF,sCA+C2B,GA/C3B;AAAA,MAgDEC,WAhDF,GAmJIlE,KAnJJ,CAgDEkE,WAhDF;AAAA,MAiDEC,UAjDF,GAmJInE,KAnJJ,CAiDEmE,UAjDF;AAAA,MAkDEC,YAlDF,GAmJIpE,KAnJJ,CAkDEoE,YAlDF;AAAA,MAmDEC,UAnDF,GAmJIrE,KAnJJ,CAmDEqE,UAnDF;AAAA,MAoDEC,UApDF,GAmJItE,KAnJJ,CAoDEsE,UApDF;AAAA,MAqDEC,UArDF,GAmJIvE,KAnJJ,CAqDEuE,UArDF;AAAA,MAsDEC,gBAtDF,GAmJIxE,KAnJJ,CAsDEwE,gBAtDF;AAAA,MAuDEC,iBAvDF,GAmJIzE,KAnJJ,CAuDEyE,iBAvDF;AAAA,MAwDEC,cAxDF,GAmJI1E,KAnJJ,CAwDE0E,cAxDF;AAAA,MAyDEC,WAzDF,GAmJI3E,KAnJJ,CAyDE2E,WAzDF;AAAA,MA0DEC,iBA1DF,GAmJI5E,KAnJJ,CA0DE4E,iBA1DF;AAAA,2BAmJI5E,KAnJJ,CA2DE6E,WA3DF;AAAA,MA2DEA,WA3DF,mCA2DgB,IA3DhB;AAAA,6BAmJI7E,KAnJJ,CA4DE8E,aA5DF;AAAA,MA4DEA,aA5DF,qCA4DkB,IA5DlB;AAAA,8BAmJI9E,KAnJJ,CA6DE+E,cA7DF;AAAA,MA6DEA,cA7DF,sCA6DmB,IA7DnB;AAAA,8BAmJI/E,KAnJJ,CA8DEgF,kBA9DF;AAAA,MA8DEA,kBA9DF,sCA8DuB,KA9DvB;AAAA,8BAmJIhF,KAnJJ,CA+DEiF,oBA/DF;AAAA,MA+DEA,oBA/DF,sCA+DyB,KA/DzB;AAAA,8BAmJIjF,KAnJJ,CAgEEkF,kBAhEF;AAAA,MAgEEA,kBAhEF,sCAgEuBC,sCAhEvB;AAAA,8BAmJInF,KAnJJ,CAiEEoF,iCAjEF;AAAA,MAiEEA,iCAjEF,sCAiEsC,KAjEtC;AAAA,MAkEEC,YAlEF,GAmJIrF,KAnJJ,CAkEEqF,YAlEF;AAAA,8BAmJIrF,KAnJJ,CAmEEsF,mBAnEF;AAAA,MAmEEA,mBAnEF,sCAmEwBC,wCAnExB;AAAA,8BAmJIvF,KAnJJ,CAoEEwF,qBApEF;AAAA,MAoEEA,qBApEF,sCAoE0BC,4CApE1B;AAAA,MAqEEC,KArEF,GAmJI1F,KAnJJ,CAqEE0F,KArEF;AAAA,4BAmJI1F,KAnJJ,CAsEE2F,YAtEF;AAAA,MAsEEA,YAtEF,oCAsEiBC,0BAtEjB;AAAA,MAuEEC,gBAvEF,GAmJI7F,KAnJJ,CAuEE6F,gBAvEF;AAAA,8BAmJI7F,KAnJJ,CAwEE8F,sBAxEF;AAAA,MAwEEA,sBAxEF,sCAwE2BC,8CAxE3B;AAAA,MAyEEC,sBAzEF,GAmJIhG,KAnJJ,CAyEEgG,sBAzEF;AAAA,8BAmJIhG,KAnJJ,CA0EEiG,+BA1EF;AAAA,MA0EEA,+BA1EF,sCA0EoC,KA1EpC;AAAA,8BAmJIjG,KAnJJ,CA2EEkG,qBA3EF;AAAA,MA2EEA,qBA3EF,sCA2E0BC,4CA3E1B;AAAA,8BAmJInG,KAnJJ,CA4EEoG,gBA5EF;AAAA,MA4EEA,gBA5EF,sCA4EqBC,kCA5ErB;AAAA,MA6EeC,eA7Ef,GAmJItG,KAnJJ,CA6EEuG,WA7EF;AAAA,MA8EqBC,qBA9ErB,GAmJIxG,KAnJJ,CA8EEyG,iBA9EF;AAAA,MA+EEC,aA/EF,GAmJI1G,KAnJJ,CA+EE0G,aA/EF;AAAA,MAgFoBC,oBAhFpB,GAmJI3G,KAnJJ,CAgFE4G,gBAhFF;AAAA,8BAmJI5G,KAnJJ,CAiFE6G,gBAjFF;AAAA,MAiFEA,gBAjFF,sCAiFqB,EAjFrB;AAAA,MAkFEC,6BAlFF,GAmJI9G,KAnJJ,CAkFE8G,6BAlFF;AAAA,8BAmJI9G,KAnJJ,CAmFE+G,yBAnFF;AAAA,MAmFEA,yBAnFF,sCAmF8B,KAnF9B;AAAA,MAoFEC,uBApFF,GAmJIhH,KAnJJ,CAoFEgH,uBApFF;AAAA,MAqFEC,OArFF,GAmJIjH,KAnJJ,CAqFEiH,OArFF;AAAA,uBAmJIjH,KAnJJ,CAsFEkH,OAtFF;AAAA,MAsFEA,OAtFF,+BAsFYC,gBAtFZ;AAAA,MAuFEC,cAvFF,GAmJIpH,KAnJJ,CAuFEoH,cAvFF;AAAA,6BAmJIpH,KAnJJ,CAwFEqH,aAxFF;AAAA,MAwFEA,aAxFF,qCAwFkBC,4BAxFlB;AAAA,8BAmJItH,KAnJJ,CAyFEuH,cAzFF;AAAA,MAyFEA,cAzFF,sCAyFmBC,8BAzFnB;AAAA,8BAmJIxH,KAnJJ,CA0FEyH,mBA1FF;AAAA,MA0FEA,mBA1FF,sCA0FwB,CAAC,cAAD,EAAiB,SAAjB,EAA4B,OAA5B,EAAqC,MAArC,EAA6C,aAA7C,CA1FxB;AAAA,8BAmJIzH,KAnJJ,CA2FE0H,cA3FF;AAAA,MA2FEA,cA3FF,sCA2FmBC,8BA3FnB;AAAA,6BAmJI3H,KAnJJ,CA4FE4H,aA5FF;AAAA,MA4FEA,aA5FF,qCA4FkBC,4BA5FlB;AAAA,MA6FEC,aA7FF,GAmJI9H,KAnJJ,CA6FE8H,aA7FF;AAAA,MA8FEC,SA9FF,GAmJI/H,KAnJJ,CA8FE+H,SA9FF;AAAA,2BAmJI/H,KAnJJ,CA+FEgI,WA/FF;AAAA,MA+FEA,WA/FF,mCA+FgBC,wBA/FhB;AAAA,8BAmJIjI,KAnJJ,CAgGEkI,mBAhGF;AAAA,MAgGEA,mBAhGF,sCAgGwBC,wCAhGxB;AAAA,8BAmJInI,KAnJJ,CAiGEoI,cAjGF;AAAA,MAiGEA,cAjGF,sCAiGmBC,8BAjGnB;AAAA,+BAmJIrI,KAnJJ,CAkGEsI,qBAlGF;AAAA,MAkGEA,qBAlGF,uCAkG0BC,4CAlG1B;AAAA,MAmGEC,QAnGF,GAmJIxI,KAnJJ,CAmGEwI,QAnGF;AAAA,6BAmJIxI,KAnJJ,CAoGEyI,aApGF;AAAA,MAoGEA,aApGF,qCAoGkBC,4BApGlB;AAAA,6BAmJI1I,KAnJJ,CAqGE2I,aArGF;AAAA,MAqGEA,aArGF,qCAqGkBC,4BArGlB;AAAA,6BAmJI5I,KAnJJ,CAsGE6I,aAtGF;AAAA,MAsGEA,aAtGF,qCAsGkBC,4BAtGlB;AAAA,MAuGEC,WAvGF,GAmJI/I,KAnJJ,CAuGE+I,WAvGF;AAAA,8BAmJI/I,KAnJJ,CAwGEgJ,iBAxGF;AAAA,MAwGEA,iBAxGF,sCAwGsBC,oCAxGtB;AAAA,MAyGEC,cAzGF,GAmJIlJ,KAnJJ,CAyGEkJ,cAzGF;AAAA,8BAmJIlJ,KAnJJ,CA0GEmJ,qCA1GF;AAAA,MA0GEA,qCA1GF,sCA0G0C3J,uBA1G1C;AAAA,8BAmJIQ,KAnJJ,CA2GEoJ,oBA3GF;AAAA,MA2GEA,oBA3GF,sCA2GyBC,0CA3GzB;AAAA,6BAmJIrJ,KAnJJ,CA4GEsJ,aA5GF;AAAA,MA4GEA,aA5GF,qCA4GkB,CA5GlB;AAAA,MA6GEC,YA7GF,GAmJIvJ,KAnJJ,CA6GEuJ,YA7GF;AAAA,MA8GEC,kBA9GF,GAmJIxJ,KAnJJ,CA8GEwJ,kBA9GF;AAAA,MA+GEC,uBA/GF,GAmJIzJ,KAnJJ,CA+GEyJ,uBA/GF;AAAA,MAgHEC,gBAhHF,GAmJI1J,KAnJJ,CAgHE0J,gBAhHF;AAAA,MAiHEC,cAjHF,GAmJI3J,KAnJJ,CAiHE2J,cAjHF;AAAA,8BAmJI3J,KAnJJ,CAkHE4J,mBAlHF;AAAA,MAkHEA,mBAlHF,sCAkHwBC,wCAlHxB;AAAA,4BAmJI7J,KAnJJ,CAmHE8J,YAnHF;AAAA,MAmHEA,YAnHF,oCAmHiBC,0BAnHjB;AAAA,MAoHEC,IApHF,GAmJIhK,KAnJJ,CAoHEgK,IApHF;AAAA,qBAmJIhK,KAnJJ,CAqHEiK,KArHF;AAAA,MAqHEA,KArHF,6BAqHUC,YArHV;AAAA,8BAmJIlK,KAnJJ,CAsHEmK,oBAtHF;AAAA,MAsHEA,oBAtHF,sCAsHyBC,0CAtHzB;AAAA,MAuHEC,cAvHF,GAmJIrK,KAnJJ,CAuHEqK,cAvHF;AAAA,0BAmJIrK,KAnJJ,CAwHEsK,UAxHF;AAAA,MAwHEA,UAxHF,kCAwHeC,sBAxHf;AAAA,8BAmJIvK,KAnJJ,CAyHEwK,8BAzHF;AAAA,MAyHEA,8BAzHF,sCAyHmCC,8DAzHnC;AAAA,8BAmJIzK,KAnJJ,CA0HE0K,cA1HF;AAAA,MA0HEA,cA1HF,sCA0HmB,KA1HnB;AAAA,MA2HEC,WA3HF,GAmJI3K,KAnJJ,CA2HE2K,WA3HF;AAAA,MA4HEC,UA5HF,GAmJI5K,KAnJJ,CA4HE4K,UA5HF;AAAA,MA6HEC,WA7HF,GAmJI7K,KAnJJ,CA6HE6K,WA7HF;AAAA,MA8HEC,OA9HF,GAmJI9K,KAnJJ,CA8HE8K,OA9HF;AAAA,MA+HEC,iBA/HF,GAmJI/K,KAnJJ,CA+HE+K,iBA/HF;AAAA,MAgIEC,SAhIF,GAmJIhL,KAnJJ,CAgIEgL,SAhIF;AAAA,MAiIEC,eAjIF,GAmJIjL,KAnJJ,CAiIEiL,eAjIF;AAAA,MAkIEC,WAlIF,GAmJIlL,KAnJJ,CAkIEkL,WAlIF;AAAA,MAmIEC,iBAnIF,GAmJInL,KAnJJ,CAmIEmL,iBAnIF;AAAA,8BAmJInL,KAnJJ,CAoIEoL,gCApIF;AAAA,MAoIEA,gCApIF,sCAoIqCC,kEApIrC;AAAA,8BAmJIrL,KAnJJ,CAqIEsL,2BArIF;AAAA,MAqIEA,2BArIF,sCAqIgC9L,uBArIhC;AAAA,MAsIE+L,YAtIF,GAmJIvL,KAnJJ,CAsIEuL,YAtIF;AAAA,8BAmJIvL,KAnJJ,CAuIEwL,kBAvIF;AAAA,MAuIEA,kBAvIF,sCAuIuBzM,YAvIvB;AAAA,MAwIE0M,CAxIF,GAmJIzL,KAnJJ,CAwIEyL,CAxIF;AAAA,MAyIUC,WAzIV,GAmJI1L,KAnJJ,CAyIE2L,MAzIF;AAAA,MA0IEC,UA1IF,GAmJI5L,KAnJJ,CA0IE4L,UA1IF;AAAA,MA2IEC,cA3IF,GAmJI7L,KAnJJ,CA2IE6L,cA3IF;AAAA,MA4IEC,MA5IF,GAmJI9L,KAnJJ,CA4IE8L,MA5IF;AAAA,8BAmJI9L,KAnJJ,CA6IE+L,eA7IF;AAAA,MA6IEA,eA7IF,sCA6IoBC,gCA7IpB;AAAA,+BAmJIhM,KAnJJ,CA8IEiM,wBA9IF;AAAA,MA8IEA,wBA9IF,uCA8I6BC,kDA9I7B;AAAA,8BAmJIlM,KAnJJ,CA+IEmM,uBA/IF;AAAA,MA+IEA,uBA/IF,sCA+I4BC,gDA/I5B;AAAA,0BAmJIpM,KAnJJ,CAgJEqM,UAhJF;AAAA,MAgJEA,UAhJF,kCAgJejL,UAhJf;AAAA,MAiJEkL,YAjJF,GAmJItM,KAnJJ,CAiJEsM,YAjJF;AAAA,MAkJEC,QAlJF,GAmJIvM,KAnJJ,CAkJEuM,QAlJF;;AAqJA,kBAKI,6BALJ;AAAA,kCACEC,KADF;AAAA,MAEe5N,aAFf,mBAEI4C,OAFJ,CAEe5C,aAFf;AAAA,MAGc6N,KAHd,mBAGIC,MAHJ,CAGcD,KAHd;;AAMA,kBAA8B,qBAAS,KAAT,CAA9B;AAAA;AAAA,MAAOE,OAAP;AAAA,MAAgBC,UAAhB;;AACA,mBAA8B,qBAA4D,KAA5D,CAA9B;AAAA;AAAA,MAAOC,OAAP;AAAA,MAAgBC,UAAhB;;AACA,mBAA0B,qBAA0B,KAA1B,CAA1B;AAAA;AAAA,MAAOC,KAAP;AAAA,MAAcC,QAAd;;AACA,mBAA8B,qBAAS,IAAT,CAA9B;AAAA;AAAA,MAAOC,OAAP;AAAA,MAAgBC,UAAhB;;AACA,mBACE,sBADF;AAAA;AAAA,MAAOC,QAAP;AAAA,MAAiBC,WAAjB;;AAEA,oBAA8B,qBAAS,EAAC5L,OAAD,YAACA,OAAO,CAAE6L,KAAT,CAAe7E,QAAf,CAAwB8E,MAAzB,CAAT,CAA9B;AAAA;AAAA,MAAOC,OAAP;AAAA,MAAgBC,UAAhB;;AACA,oBAAsC,qBAAS,KAAT,CAAtC;AAAA;AAAA,MAAOjH,WAAP;AAAA,MAAoBkH,cAApB;;AAEA,oBAAkD,qBAAS,KAAT,CAAlD;AAAA;AAAA,MAAOhH,iBAAP;AAAA,MAA0BiH,oBAA1B;;AACA,oBACE,qBAA4D,KAA5D,CADF;AAAA;AAAA,MAAOC,aAAP;AAAA,MAAsBC,gBAAtB;;AAEA,oBAA4B,qBAC1BlC,WAAW,IAAI,IADW,CAA5B;AAAA;AAAA,MAAOC,MAAP;AAAA,MAAekC,SAAf;;AAGA,oBAA0C,qBAAS,IAAT,CAA1C;AAAA;AAAA,MAAOC,aAAP;AAAA,MAAsBC,gBAAtB;;AACA,oBAAkD,qBAAS,KAAT,CAAlD;AAAA;AAAA,MAAOC,iBAAP;AAAA,MAA0BC,oBAA1B;;AAEA,oBAA4C,qBAAS,KAAT,CAA5C;AAAA;AAAA,MAAOC,cAAP;AAAA,MAAuBC,iBAAvB;;AAEA,4BAAgD,6CAAmBpG,SAAnB,CAAhD;AAAA,MAAQqG,kBAAR,uBAAQA,kBAAR;AAAA,MAA4BC,eAA5B,uBAA4BA,eAA5B;;AAEA,MAAMC,SAAS,GAAG,CAAA9M,OAAO,QAAP,YAAAA,OAAO,CAAE+M,EAAT,KAAe,EAAjC;AACA,wBAAU,YAAM;AACd,QAAMC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxB,UAAI,CAAChN,OAAD,IAAY,CAAC2J,iBAAjB,EAAoC;;AAOpC,UAAI,CAAC3J,OAAO,CAACiN,WAAb,EAA0B;AACxBC,QAAAA,WAAW;AACX;AACD;;AAED,UAAI3G,SAAJ,EAAe;AACb4G,QAAAA,oBAAoB,CAAC;AAAE5G,UAAAA,SAAS,EAATA;AAAF,SAAD,CAApB;AACA;AACD;;AAED,UACE3C,iCAAiC,IACjC5D,OAAO,CAACoN,WAAR,KAAwBrP,4BAF1B,EAGE;AACAsP,QAAAA,+BAA+B;AAChC,OALD,MAKO;AACLH,QAAAA,WAAW;AACZ;AACF,KA1BD;;AA4BAF,IAAAA,WAAW;AAEX,WAAO,YAAM;AACXM,MAAAA,gBAAgB,CAACC,MAAjB;AACAC,MAAAA,aAAa,CAACD,MAAd;AACAE,MAAAA,eAAe,CAACF,MAAhB;AACAG,MAAAA,gBAAgB,CAACH,MAAjB;AACAI,MAAAA,sBAAsB,CAACJ,MAAvB;AACD,KAND;AAOD,GAtCD,EAsCG,CAACT,SAAD,EAAYvG,SAAZ,CAtCH;AAwCA,MAAMqH,iBAAiB,GAAG,CAAC,CAAC1D,WAA5B;AACA,wBAAU,YAAM;AACd,QAAIA,WAAW,IAAIP,iBAAnB,EAAsC;AACpC0C,MAAAA,SAAS,CAACnC,WAAD,CAAT;;AACA,UAAIlK,OAAO,IAAIkK,WAAJ,YAAIA,WAAW,CAAE6C,EAA5B,EAAgC;AAAA;;AAC9BxD,QAAAA,iBAAiB,CAAC,0BAAAvJ,OAAO,CAAC6L,KAAR,CAAcgC,OAAd,2CAAwB3D,WAAW,CAAC6C,EAApC,MAA2C,EAA5C,CAAjB;AACD;AACF,KALD,MAKO;AACLV,MAAAA,SAAS,CAAC,IAAD,CAAT;AACD;AACF,GATD,EASG,CAACuB,iBAAD,CATH;AAWA,MAAME,mBAAmB,GAAG,wBAAY,YAAM;AAC5C,QAAI9N,OAAJ,EAAa;AACXA,MAAAA,OAAO,CAAC+N,SAAR,CAAkB;AAAEC,QAAAA,SAAS,EAAE7D,MAAF,oBAAEA,MAAM,CAAE4C,EAArB;AAAyBrP,QAAAA,IAAI,EAAE;AAA/B,OAAlB;AASD;AACF,GAZ2B,EAYzB,CAACyM,MAAD,oBAACA,MAAM,CAAE4C,EAAT,EAAaD,SAAb,CAZyB,CAA5B;AAcA,gDAAoBmB,SAApB,EAA+BH,mBAA/B;AAKA,MAAMI,OAAO,GAAG,CAAAhO,MAAM,QAAN,4BAAAA,MAAM,CAAEiO,IAAR,kCAAcC,IAAd,MAAuB,OAAvB,IAAkC,CAAApO,OAAO,QAAP,YAAAA,OAAO,CAAE6L,KAAT,CAAewC,UAAf,CAA0BD,IAA1B,MAAmC,OAArF;AAEA,MAAME,WAAW,GACf,CAAAtO,OAAO,QAAP,YAAAA,OAAO,CAAE6L,KAAT,CAAewC,UAAf,CAA0BD,IAA1B,MAAmC,mBAAnC,IACA,CAAApO,OAAO,QAAP,YAAAA,OAAO,CAAE6L,KAAT,CAAewC,UAAf,CAA0BD,IAA1B,MAAmC,WAFrC;AAIA,MAAMG,OAAO,GAAG,CAAAvO,OAAO,QAAP,YAAAA,OAAO,CAAE6L,KAAT,CAAewC,UAAf,CAA0BD,IAA1B,MAAmC,OAAnD;AAKA,MAAMI,QAAqE,GAAG,mBAC5E,0BACE,YAAM;AACJ,QAAI,CAACxO,OAAD,IAAYA,OAAZ,YAAYA,OAAO,CAAEyO,YAArB,IAAqC,EAACC,mBAAD,YAACA,mBAAmB,CAAEC,WAAtB,CAAzC,EAA4E;AAC1E;AACD;;AAED,QAAI1N,iBAAJ,EAAuB;AACrBA,MAAAA,iBAAiB,CAACjB,OAAD,CAAjB;AACD,KAFD,MAEO;AACL,+CAAwBA,OAAO,CAACwO,QAAR,EAAxB,EAA4C,WAA5C;AACD;AACF,GAXH,EAYExQ,uBAZF,EAaEE,eAbF,CAD4E,EAgB5E0Q,OAhBF;AAkBA,MAAMC,iBAAiB,GAAG,mBACxB,0BACE,YAAM;AACJ,QAAI7O,OAAJ,EAAa;AACXqJ,MAAAA,WAAW,qCAAKrJ,OAAO,CAAC6L,KAAR,CAAc7E,QAAnB,EAAX;AACD;AACF,GALH,EAMEW,qCANF,EAOEzJ,eAPF,CADwB,EAUxB0Q,OAVF;AAYA,MAAMnB,eAAe,GAAG,mBACtB,0BACE,YAAM;AACJ,QAAIzN,OAAJ,EAAa;AACXwJ,MAAAA,SAAS,+BAAMxJ,OAAO,CAAC6L,KAAR,CAAcvB,MAApB,EAAT;AACD;AACF,GALH,EAMER,2BANF,EAOE5L,eAPF,CADsB,EAUtB0Q,OAVF;AAYA,MAAMpB,aAAa,GAAG,mBACpB,0BACE,YAAM;AACJ,QAAIxN,OAAJ,EAAa;AACXsJ,MAAAA,OAAO,+BAAMtJ,OAAO,CAAC6L,KAAR,CAAcrD,IAApB,EAAP;AACD;AACF,GALH,EAMEsB,2BANF,EAOE5L,eAPF,CADoB,EAUpB0Q,OAVF;AAYA,MAAMtB,gBAAgB,GAAG,mBACvB,0BACE,YAAM;AACJtB,IAAAA,UAAU,CAAC,KAAD,CAAV;;AACA,QAAIhM,OAAJ,EAAa;AACXoJ,MAAAA,UAAU,+BAAMpJ,OAAO,CAAC6L,KAAR,CAAcpG,OAApB,EAAV;AACA4D,MAAAA,WAAW,qCAAKrJ,OAAO,CAAC6L,KAAR,CAAc7E,QAAnB,EAAX;AACAsC,MAAAA,OAAO,+BAAMtJ,OAAO,CAAC6L,KAAR,CAAcrD,IAApB,EAAP;AACAgB,MAAAA,SAAS,+BAAMxJ,OAAO,CAAC6L,KAAR,CAAcvB,MAApB,EAAT;AACAb,MAAAA,eAAe,CAACzJ,OAAO,CAAC6L,KAAR,CAAciD,aAAf,CAAf;AACApF,MAAAA,WAAW,+BAAM1J,OAAO,CAAC6L,KAAR,CAAcd,QAApB,EAAX;AACD;AACF,GAXH,EAYEjB,2BAZF,EAaE5L,eAbF,CADuB,EAgBvB0Q,OAhBF;;AAkBA,MAAMG,0BAA0B,GAAG,SAA7BA,0BAA6B,GAAM;AACvC,QAAI/O,OAAO,IAAI2J,iBAAf,EAAkC;AAChC2D,MAAAA,gBAAgB;;AAChB,UAAInD,MAAJ,EAAY;AACVZ,QAAAA,iBAAiB,qCAAKvJ,OAAO,CAAC6L,KAAR,CAAcgC,OAAd,CAAsB1D,MAAM,CAAC4C,EAA7B,CAAL,EAAjB;AACD;AACF;AACF,GAPD;;AASA,MAAMiC,wBAAwB,GAAG,SAA3BA,wBAA2B,CAACC,KAAD,EAAkC;AACjE,QAAIA,KAAK,CAACC,MAAN,IAAgBvF,iBAApB,EAAuC;AACrCwF,MAAAA,aAAa;AACd;AACF,GAJD;;AAMA,MAAMC,WAAqD,GAAG,SAAxDA,WAAwD,CAACH,KAAD,EAAW;AACvE,QAAItF,iBAAJ,EAAuB;AAAA;;AACrB,UAAIQ,MAAJ,EAAY;AACV,YAAMkF,qBAAqB,GACxBlF,MAAM,CAAC4C,EAAP,IAAa/M,OAAb,IAAwBA,OAAO,CAAC6L,KAAR,CAAcgC,OAAd,CAAsB1D,MAAM,CAAC4C,EAA7B,CAAzB,IAA8D1C,cADhE;AAEAd,QAAAA,iBAAiB,CAAC8F,qBAAD,CAAjB;AACD;;AAED,UAAIrP,OAAO,IAAImK,MAAX,IAAqB,mBAAA8E,KAAK,CAACK,OAAN,oCAAevC,EAAf,MAAsB5C,MAAM,CAAC4C,EAAtD,EAA0D;AACxD,YAAMwC,aAAa,GAAGvP,OAAO,CAAC6L,KAAR,CAAc2D,aAAd,CAA4BP,KAAK,CAACK,OAAlC,CAAtB;AACAjD,QAAAA,SAAS,CAACkD,aAAD,CAAT;AACD;;AAED,UAAIN,KAAK,CAACvR,IAAN,KAAe,cAAf,IAAiCuR,KAAK,CAACvR,IAAN,KAAe,aAApD,EAAmE;AACjE+P,QAAAA,eAAe;AAChB,OAFD,MAEO,IAAIwB,KAAK,CAACvR,IAAN,KAAe,cAAnB,EAAmC;AACxC8P,QAAAA,aAAa;AACd,OAFM,MAEA,IAAIyB,KAAK,CAACvR,IAAN,KAAe,aAAnB,EAAkC;AACvCmR,QAAAA,iBAAiB;AAClB,OAFM,MAEA,IAAI7O,OAAJ,EAAa;AAClBsN,QAAAA,gBAAgB;AACjB;AACF;AACF,GAvBD;;AAyBA,wBAAU,YAAM;AACd,QAAMmC,oBAA0D,GAAG,EAAnE;AACA,QAAMC,mBAAwD,GAAG,EAAjE;;AAEA,QAAMC,SAAS,GAAG,SAAZA,SAAY,GAAM;AACtB,UAAI,CAAC3P,OAAL,EAAc;AAMd0P,MAAAA,mBAAmB,CAACE,IAApB,CAAyB1P,MAAM,CAAC2P,EAAP,CAAU,sBAAV,EAAkCd,0BAAlC,CAAzB;AACAW,MAAAA,mBAAmB,CAACE,IAApB,CAAyB1P,MAAM,CAAC2P,EAAP,CAAU,oBAAV,EAAgCb,wBAAhC,CAAzB;AACAU,MAAAA,mBAAmB,CAACE,IAApB,CACE1P,MAAM,CAAC2P,EAAP,CAAU,iBAAV,EAA6B,UAACZ,KAAD,EAAW;AACtC,YAAIA,KAAK,CAACa,GAAN,KAAc9P,OAAO,CAAC8P,GAA1B,EAA+B;AAC7B1E,UAAAA,UAAU,CAAC,IAAD,CAAV;AACD;AACF,OAJD,CADF;AAOAqE,MAAAA,oBAAoB,CAACG,IAArB,CAA0B5P,OAAO,CAAC6P,EAAR,CAAWT,WAAX,CAA1B;AACD,KAjBD;;AAmBAO,IAAAA,SAAS;AAET,WAAO,YAAM;AACXD,MAAAA,mBAAmB,CAACK,OAApB,CAA4B,UAACC,CAAD;AAAA,eAAOA,CAAC,CAACC,WAAF,EAAP;AAAA,OAA5B;AACAR,MAAAA,oBAAoB,CAACM,OAArB,CAA6B,UAACC,CAAD;AAAA,eAAOA,CAAC,CAACC,WAAF,EAAP;AAAA,OAA7B;AACD,KAHD;AAID,GA7BD,EA6BG,CAACnD,SAAD,EAAYkC,wBAAZ,EAAsCD,0BAAtC,EAAkEK,WAAlE,CA7BH;;AA+BA,MAAMc,gBAAgB;AAAA,+EAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAOC,cAAAA,SAAP,2DAA+B;AAAA,uBAAM,IAAN;AAAA,eAA/B;AACvB3E,cAAAA,QAAQ,CAAC,KAAD,CAAR;AAEAQ,cAAAA,UAAU,CAAC,EAAChM,OAAD,YAACA,OAAO,CAAE6L,KAAT,CAAe7E,QAAf,CAAwB8E,MAAzB,CAAD,CAAV;AAHuB;AAAA;AAAA,qBAMfqE,SAAS,EANM;;AAAA;AAOrBvE,cAAAA,WAAW,CAAC,IAAIwE,IAAJ,EAAD,CAAX;AACA1E,cAAAA,UAAU,CAAC,IAAD,CAAV;AACA4B,cAAAA,gBAAgB;AATK;AAAA;;AAAA;AAAA;AAAA;;AAWrB,kBAAI,uBAAe+C,KAAnB,EAA0B;AACxB7E,gBAAAA,QAAQ,aAAR;AACD,eAFD,MAEO;AACLA,gBAAAA,QAAQ,CAAC,IAAD,CAAR;AACD;;AACDQ,cAAAA,UAAU,CAAC,KAAD,CAAV;AACAJ,cAAAA,WAAW,CAAC,IAAIwE,IAAJ,EAAD,CAAX;;AAjBqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAhBF,gBAAgB;AAAA;AAAA;AAAA,KAAtB;;AAwBA,MAAM7C,+BAA+B,GAAG,SAAlCA,+BAAkC,GAAM;AAC5C,QAAI,CAACrN,OAAL,EAAc;AACd,QAAMsQ,WAAW,GAAGtQ,OAAO,CAACoN,WAAR,EAApB;AACA,QAAIkD,WAAW,IAAIvS,4BAAnB,EAAiD;AAEjDiC,IAAAA,OAAO,CAAC6L,KAAR,CAAc0E,aAAd;AACAvQ,IAAAA,OAAO,CAAC6L,KAAR,CAAc2E,aAAd,CAA4B,KAA5B;AAEA,WAAON,gBAAgB,iEAAC;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKlBI,WAAW,GAAG7N,sBALI;AAAA;AAAA;AAAA;;AAadgO,cAAAA,MAbc,GAaLH,WAAW,GAAGhS,gCAbT;AAAA;AAAA,qBAcdoS,KAAK,CAACD,MAAD,EAAS,EAAT,CAdS;;AAAA;AAAA,oBAqBlBzQ,OAAO,CAAC6L,KAAR,CAAc7E,QAAd,CAAuB8E,MAAvB,IACA9L,OAAO,CAAC6L,KAAR,CAAc7E,QAAd,CAAuB8E,MAAvB,IAAiC/N,4BADjC,IAEA,CAACiC,OAAO,CAAC6L,KAAR,CAAc8E,UAvBG;AAAA;AAAA;AAAA;;AAyBZC,cAAAA,iBAzBY,GAyBQ5Q,OAAO,CAAC6L,KAAR,CAAc7E,QAAd,CAAuBhH,OAAO,CAAC6L,KAAR,CAAc7E,QAAd,CAAuB8E,MAAvB,GAAgC,CAAvD,CAzBR;AAAA;AAAA,qBA0BZ+E,iBAAiB,CAACD,iBAAiB,CAAC7D,EAAnB,EAAuB,KAAK/M,OAAO,CAAC6L,KAAR,CAAc7E,QAAd,CAAuB8E,MAAnD,CA1BL;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,qBAkCd9L,OAAO,CAAC0Q,KAAR,CAAc;AAClB1J,gBAAAA,QAAQ,EAAE;AACR8J,kBAAAA,0BAA0B,EAAE9Q,OAAO,CAAC2L,QAAR,MAAsB,IAAIyE,IAAJ,CAAS,CAAT,CAD1C;AAERW,kBAAAA,KAAK,EAAE;AAFC;AADQ,eAAd,CAlCc;;AAAA;AAAA,oBA8ClB/Q,OAAO,CAAC6L,KAAR,CAAc7E,QAAd,CAAuB8E,MAAvB,IAAiCxN,gCAAjC,IACA,CAAC0B,OAAO,CAAC6L,KAAR,CAAc8E,UA/CG;AAAA;AAAA;AAAA;;AAAA,oBAiDd3Q,OAAO,CAAC6L,KAAR,CAAc7E,QAAd,CAAuB8E,MAAvB,GAAgC,CAjDlB;AAAA;AAAA;AAAA;;AAkDV8E,cAAAA,kBAlDU,GAkDU5Q,OAAO,CAAC6L,KAAR,CAAc7E,QAAd,CAAuBhH,OAAO,CAAC6L,KAAR,CAAc7E,QAAd,CAAuB8E,MAAvB,GAAgC,CAAvD,CAlDV;AAAA;AAAA,qBAmDV+E,iBAAiB,CAACD,kBAAiB,CAAC7D,EAAnB,EAAuB,CAAvB,CAnDP;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,qBA+DV/M,OAAO,CAAC0Q,KAAR,CAAc;AAClB1J,gBAAAA,QAAQ,EAAE;AACRgK,kBAAAA,gBAAgB,EAAEhR,OAAO,CAAC2L,QAAR,MAAsB,IAAIyE,IAAJ,CAAS,CAAT,CADhC;AAERW,kBAAAA,KAAK,EAAE;AAFC;AADQ,eAAd,CA/DU;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAD,GAAvB;AAyED,GAjFD;;AA0FA,MAAM5D,oBAQmB,GAAG,SARtBA,oBAQsB;AAAA,4BAAG8D,KAAH;AAAA,QAAGA,KAAH,4BAAW,CAAX;AAAA,6BAAcC,MAAd;AAAA,QAAcA,MAAd,6BAAuB,EAAvB;AAAA,QAA2B3K,SAA3B,SAA2BA,SAA3B;AAAA,WAC1B2J,gBAAgB,iEAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBACTiB,cAAc,CAAC;AAAEF,gBAAAA,KAAK,EAALA,KAAF;AAASC,gBAAAA,MAAM,EAANA,MAAT;AAAiB3K,gBAAAA,SAAS,EAATA;AAAjB,eAAD,CADL;;AAAA;AAGf,kBAAIA,SAAJ,EAAe;AACbqG,gBAAAA,kBAAkB,CAACrG,SAAD,CAAlB;AACD;;AALc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAD,GADU;AAAA,GAR5B;;AAiBA,MAAM2G,WAAW,GAAG,SAAdA,WAAc;AAAA,WAClBgD,gBAAgB,iEAAC;AAAA;AAAA;AAAA;AAAA;AAAA,oBACX,EAAClQ,OAAD,YAACA,OAAO,CAAEiN,WAAV,KAAyB,CAACjN,OAAO,CAAC6L,KAAR,CAAc8E,UAD7B;AAAA;AAAA;AAAA;;AAAA;AAAA,qBAEP3Q,OAFO,oBAEPA,OAAO,CAAEoR,KAAT,EAFO;;AAAA;AAGbpR,cAAAA,OAAO,QAAP,YAAAA,OAAO,CAAE6L,KAAT,CAAe2E,aAAf,CAA6B,IAA7B;;AAHa;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAD,GADE;AAAA,GAApB;;AAUA,MAAMa,YAAY;AAAA,gFAAG;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,oBACf,CAACrR,OAAD,IAAY,EAACmK,MAAD,YAACA,MAAM,CAAE4C,EAAT,CADG;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAGnBN,cAAAA,oBAAoB,CAAC,IAAD,CAApB;AAHmB;AAKX6E,cAAAA,QALW,GAKAnH,MAAM,CAAC4C,EALP;AAOXgE,cAAAA,KAPW,GAOH,EAPG;AAQjB/Q,cAAAA,OAAO,CAAC6L,KAAR,CAAcgC,OAAd,CAAsByD,QAAtB,IAAkC,EAAlC;AARiB;AAAA,qBASWtR,OAAO,CAACuR,UAAR,CAAmBD,QAAnB,EAA6B;AACvDP,gBAAAA,KAAK,EAALA;AADuD,eAA7B,CATX;;AAAA;AASXS,cAAAA,aATW;AAaXC,cAAAA,cAbW,GAaMD,aAAa,CAACxK,QAAd,CAAuB8E,MAAvB,KAAkCiF,KAbxC;AAcX1B,cAAAA,qBAdW,GAcarP,OAAO,CAAC6L,KAAR,CAAcgC,OAAd,CAAsByD,QAAtB,KAAmC,EAdhD;AAejB3D,cAAAA,sBAAsB,CAAC8D,cAAD,EAAiBpC,qBAAjB,CAAtB;AAfiB;AAAA,qBAgBUrP,OAAO,CAAC0R,eAAR,CAAwB,CAACJ,QAAD,CAAxB,CAhBV;;AAAA;AAAA;AAgBTtK,cAAAA,SAhBS,yBAgBTA,QAhBS;AAAA,2DAiBOA,SAjBP,MAiBV2K,aAjBU;;AAkBjB,kBAAIA,aAAJ,EAAmB;AACXC,gBAAAA,gBADW,GACQ5R,OAAO,CAAC6L,KAAR,CAAc2D,aAAd,CAA4BmC,aAA5B,CADR;AAEjBtF,gBAAAA,SAAS,CAACuF,gBAAD,CAAT;AACD;;AArBgB;AAAA;;AAAA;AAAA;AAAA;AAuBjBC,cAAAA,OAAO,CAACC,IAAR,CAAa,0CAAb;;AACA,kBAAI,wBAAezB,KAAnB,EAA0B;AACxB7E,gBAAAA,QAAQ,cAAR;AACD,eAFD,MAEO;AACLA,gBAAAA,QAAQ,CAAC,IAAD,CAAR;AACD;;AACDiB,cAAAA,oBAAoB,CAAC,KAAD,CAApB;AA7BiB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAZ4E,YAAY;AAAA;AAAA;AAAA,KAAlB;;AAkCA,MAAMlC,aAAa;AAAA,gFAAG;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,oBAChB,CAACnP,OAAD,IAAY0M,cADI;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAEpBC,cAAAA,iBAAiB,CAAC,IAAD,CAAjB;AAEAnB,cAAAA,QAAQ,CAAC,KAAD,CAAR;AAJoB;AAAA;AAAA,qBAUExL,OAAO,CAACoR,KAAR,CAAc;AAChCpK,gBAAAA,QAAQ,EAAE;AACR+J,kBAAAA,KAAK,EAAE/J,QAAQ,CAAC8E,MAAT,GAAkB;AADjB;AADsB,eAAd,CAVF;;AAAA;AAUZD,cAAAA,KAVY;AAgBZkG,cAAAA,iBAhBY,GAgBQ/K,QAAQ,CAAC,CAAD,CAhBhB;AAiBZgL,cAAAA,mBAjBY,iBAiBUhL,QAAQ,CAAC,CAAD,CAjBlB,qBAiBU,WAAa+F,EAjBvB;AAkBZkF,cAAAA,oBAlBY,GAkBWjL,QAAQ,CAACA,QAAQ,CAAC8E,MAAT,GAAkB,CAAnB,CAlBnB;AAoBZoG,cAAAA,iBApBY,GAoBQrG,KAAK,CAAC7E,QAAN,CAAe,CAAf,CApBR;AAqBZmL,cAAAA,oBArBY,GAqBWtG,KAAK,CAAC7E,QAAN,CAAe6E,KAAK,CAAC7E,QAAN,CAAe8E,MAAf,GAAwB,CAAvC,CArBX;;AAAA,oBAwBhB,CAACiG,iBAAD,IACA,CAACE,oBADD,IAEA,CAACC,iBAFD,IAGA,CAACC,oBA3Be;AAAA;AAAA;AAAA;;AA8BhBnS,cAAAA,OAAO,CAAC6L,KAAR,CAAc0E,aAAd;AACAvQ,cAAAA,OAAO,CAAC6L,KAAR,CAAc2E,aAAd,CAA4B,IAA5B;AACAxQ,cAAAA,OAAO,CAAC6L,KAAR,CAAcuG,iBAAd,CAAgCvG,KAAK,CAAC7E,QAAtC;AACAsG,cAAAA,gBAAgB;AAjCA;;AAAA;AAqCZ+E,cAAAA,YArCY,GAqCG,SAAfA,YAAe,CAAC/C,OAAD;AAAA;;AAAA,qDAEdA,OAFc;AAGjBgD,kBAAAA,UAAU,EAAEhD,OAAO,CAACgD,UAAR,CAAmBC,QAAnB,EAHK;AAIjBC,kBAAAA,SAAS,wBAAElD,OAAO,CAACkD,SAAV,qBAAE,mBAAmBD,QAAnB,EAJM;AAKjBE,kBAAAA,UAAU,yBAAEnD,OAAO,CAACmD,UAAV,qBAAE,oBAAoBF,QAApB;AALK;AAAA,eArCH;;AA6CZG,cAAAA,cA7CY,GA6CK1L,QAAQ,CAC5B2L,MADoB,CACb,UAACrD,OAAD;AAAA,uBAAaA,OAAO,CAACsD,MAAR,KAAmBC,0BAAmBC,MAAnD;AAAA,eADa,EAEpBC,GAFoB,CAEhBV,YAFgB,CA7CL;AAiDZW,cAAAA,oBAjDY,GAiDW7I,MAAM,GAC/BE,cAAc,CACXsI,MADH,CACU,UAACrD,OAAD;AAAA,uBAAaA,OAAO,CAACsD,MAAR,KAAmBC,0BAAmBC,MAAnD;AAAA,eADV,EAEGC,GAFH,CAEOV,YAFP,CAD+B,GAI/B,EArDc;AAuDZY,cAAAA,0BAvDY,GAuDiBlB,iBAAiB,CAACO,UAvDnC;AAwDZY,cAAAA,6BAxDY,GAwDoBjB,oBAAoB,CAACK,UAxDzC;AAyDZa,cAAAA,0BAzDY,GAyDiBjB,iBAAiB,CAACI,UAAlB,GAC/B,IAAIlC,IAAJ,CAAS8B,iBAAiB,CAACI,UAA3B,CAD+B,GAE/B,IAAIlC,IAAJ,EA3Dc;AA4DZgD,cAAAA,6BA5DY,GA4DoBjB,oBAAoB,QAApB,IAAAA,oBAAoB,CAAEG,UAAtB,GAClC,IAAIlC,IAAJ,CAAS+B,oBAAoB,CAACG,UAA9B,CADkC,GAElC,IAAIlC,IAAJ,EA9Dc;AAgEdiD,cAAAA,aAhEc,GAgEE,EAhEF;;AAkElB,kBACEtB,iBAAiB,IACjBkB,0BADA,IAEAC,6BAFA,IAGAC,0BAA0B,GAAGF,0BAH7B,IAIAG,6BAA6B,IAAIF,6BALnC,EAME;AACMI,gBAAAA,KADN,GACczH,KAAK,CAAC7E,QAAN,CAAeuM,SAAf,CAAyB,UAACjE,OAAD;AAAA,yBAAaA,OAAO,CAACvC,EAAR,KAAeiF,mBAA5B;AAAA,iBAAzB,CADd;AAEAqB,gBAAAA,aAAa,GAAGxH,KAAK,CAAC7E,QAAN,CAAewM,KAAf,CAAqBF,KAArB,CAAhB;AACD,eATD,MASO;AACLD,gBAAAA,aAAa,GAAGxH,KAAK,CAAC7E,QAAtB;AACD;;AAEDhH,cAAAA,OAAO,CAAC6L,KAAR,CAAc2E,aAAd,CAA4B,IAA5B;AAEAxQ,cAAAA,OAAO,CAAC6L,KAAR,CAAc0E,aAAd;AACAvQ,cAAAA,OAAO,CAAC6L,KAAR,CAAcuG,iBAAd,CAAgCiB,aAAhC;AAEA3H,cAAAA,UAAU,CAAC,IAAD,CAAV;AACA4B,cAAAA,gBAAgB;;AAEhB,kBAAIoF,cAAc,CAAC5G,MAAnB,EAA2B;AACzB9L,gBAAAA,OAAO,CAAC6L,KAAR,CAAcuG,iBAAd,CAAgCM,cAAhC;AACApF,gBAAAA,gBAAgB;AACjB;;AA1FiB;AAAA,qBA4FZ+D,YAAY,EA5FA;;AAAA;AA8FlB,kBAAIlH,MAAM,IAAI6I,oBAAoB,CAAClH,MAAnC,EAA2C;AACzC9L,gBAAAA,OAAO,CAAC6L,KAAR,CAAcuG,iBAAd,CAAgCY,oBAAhC;AACAzJ,gBAAAA,iBAAiB,qCAAKvJ,OAAO,CAAC6L,KAAR,CAAcgC,OAAd,CAAsB1D,MAAM,CAAC4C,EAA7B,CAAL,EAAjB;AACD;;AAjGiB;AAAA;;AAAA;AAAA;AAAA;;AAmGlB,kBAAI,wBAAesD,KAAnB,EAA0B;AACxB7E,gBAAAA,QAAQ,cAAR;AACD,eAFD,MAEO;AACLA,gBAAAA,QAAQ,CAAC,IAAD,CAAR;AACD;;AACDQ,cAAAA,UAAU,CAAC,KAAD,CAAV;;AAxGkB;AA2GpBW,cAAAA,iBAAiB,CAAC,KAAD,CAAjB;;AA3GoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAbwC,aAAa;AAAA;AAAA;AAAA,KAAnB;;AA8GA,MAAMsE,aAAa,GAAG,SAAhBA,aAAgB;AAAA,WACpBvD,gBAAgB,iEAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBACTlQ,OADS,oBACTA,OAAO,CAAEoR,KAAT,EADS;;AAAA;AAEfpR,cAAAA,OAAO,QAAP,YAAAA,OAAO,CAAE6L,KAAT,CAAe2E,aAAf,CAA6B,IAA7B;;AAFe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAD,GADI;AAAA,GAAtB;;AASA,MAAME,KAAK;AAAA,gFAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAOD,cAAAA,MAAP,8DAAgB,CAAhB;AAAmBM,cAAAA,KAAnB,8DAA2B,EAA3B;;AAAA,kBACP/Q,OADO;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAEZA,cAAAA,OAAO,CAAC6L,KAAR,CAAc0E,aAAd;AAFY;AAAA,qBAINvQ,OAAO,CAAC0Q,KAAR,CAAc;AAClB1J,gBAAAA,QAAQ,EAAE;AACR+J,kBAAAA,KAAK,EAALA,KADQ;AAERN,kBAAAA,MAAM,EAANA;AAFQ,iBADQ;AAKlBW,gBAAAA,KAAK,EAAE;AALW,eAAd,CAJM;;AAAA;AAWZpR,cAAAA,OAAO,CAAC6L,KAAR,CAAc2E,aAAd,CAA4BC,MAAM,KAAK,CAAvC;;AAXY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAALC,KAAK;AAAA;AAAA;AAAA,KAAX;;AAqBA,MAAMS,cAAc;AAAA,iFAAG;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,oCACrBF,KADqB,EACrBA,KADqB,6BACb,EADa,wCAErBC,MAFqB,EAErBA,MAFqB,8BAEZ,EAFY,kBAGrB3K,SAHqB,UAGrBA,SAHqB;;AAAA,kBAKhBvG,OALgB;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAMrBA,cAAAA,OAAO,CAAC6L,KAAR,CAAc2E,aAAd,CAA4B,KAA5B;AACAxQ,cAAAA,OAAO,CAAC6L,KAAR,CAAc0E,aAAd;AACAlH,cAAAA,WAAW,qCAAKrJ,OAAO,CAAC6L,KAAR,CAAc7E,QAAnB,EAAX;;AARqB,kBAShBT,SATgB;AAAA;AAAA;AAAA;;AAAA;AAAA,qBAUbvG,OAAO,CAAC0Q,KAAR,CAAc;AAClB1J,gBAAAA,QAAQ,EAAE;AACR+J,kBAAAA,KAAK,EAAEG;AADC,iBADQ;AAIlBE,gBAAAA,KAAK,EAAE;AAJW,eAAd,CAVa;;AAAA;AAiBnBpR,cAAAA,OAAO,CAAC6L,KAAR,CAAc2E,aAAd,CAA4B,IAA5B;AAjBmB;;AAAA;AAAA;AAAA,qBAqBfkD,kBAAkB,CAACnN,SAAD,EAAY2K,MAAZ,CArBH;;AAAA;AAAA;AAAA,qBAsBfL,iBAAiB,CAACtK,SAAD,EAAY0K,KAAZ,CAtBF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAdE,cAAc;AAAA;AAAA;AAAA,KAApB;;AA+BA,MAAMuC,kBAAkB;AAAA,iFAAG,mBAAOnN,SAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0BwK,cAAAA,KAA1B,iEAAkC,CAAlC;;AAAA,kBACpB/Q,OADoB;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA,qBAGnBA,OAAO,CAAC0Q,KAAR,CAAc;AAClB1J,gBAAAA,QAAQ,EAAE;AACR2M,kBAAAA,KAAK,EAAEpN,SADC;AAERwK,kBAAAA,KAAK,EAALA;AAFQ,iBADQ;AAKlBK,gBAAAA,KAAK,EAAE;AALW,eAAd,CAHmB;;AAAA;AAWzBpR,cAAAA,OAAO,CAAC6L,KAAR,CAAc2E,aAAd,CAA4B,KAA5B;;AAXyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAlBkD,kBAAkB;AAAA;AAAA;AAAA,KAAxB;;AAoBA,MAAM7C,iBAAiB;AAAA,iFAAG,mBAAOtK,SAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0BwK,cAAAA,KAA1B,iEAAkC,CAAlC;;AAAA,kBACnB/Q,OADmB;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA,qBAEJA,OAAO,CAAC0Q,KAAR,CAAc;AAChC1J,gBAAAA,QAAQ,EAAE;AACR4M,kBAAAA,MAAM,EAAErN,SADA;AAERwK,kBAAAA,KAAK,EAALA;AAFQ,iBADsB;AAKhCK,gBAAAA,KAAK,EAAE;AALyB,eAAd,CAFI;;AAAA;AAElBvF,cAAAA,KAFkB;;AAUxB,kBAAIA,KAAK,CAAC7E,QAAN,CAAe8E,MAAf,GAAwBiF,KAA5B,EAAmC;AACjC/Q,gBAAAA,OAAO,CAAC6L,KAAR,CAAc2E,aAAd,CAA4B,IAA5B;AACD,eAFD,MAEO;AACLxQ,gBAAAA,OAAO,CAAC6L,KAAR,CAAc2E,aAAd,CAA4B,KAA5B;AACD;;AAduB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAjBK,iBAAiB;AAAA;AAAA;AAAA,KAAvB;;AAoBA,MAAMgD,sBAAsB,GAAG,SAAzBA,sBAAyB,GAAM;AACnC,QAAI;AACF,aAAO7T,OAAP,oBAAOA,OAAO,CAAE8T,SAAT,EAAP;AACD,KAFD,CAEE,OAAOC,CAAP,EAAU;AACV,aAAO,IAAP;AACD;AACF,GAND;;AAaA,MAAMrF,mBAAmB,GAAGmF,sBAAsB,EAAlD;;AAMA,MAAMG,aAAgF,GAAG,SAAnFA,aAAmF,CACvFC,cADuF,EAGpF;AAAA,QADHC,UACG,uEADU,EACV;;AACH,QAAIlU,OAAJ,EAAa;AACXA,MAAAA,OAAO,CAAC6L,KAAR,CAAcsI,gBAAd,CAA+BF,cAA/B,EAA+C,IAA/C;;AACA,UAAI9J,MAAM,IAAI8J,cAAc,CAACjG,SAA7B,EAAwC;AACtCkG,QAAAA,UAAU,CAAC7J,cAAX,GAA4BrK,OAAO,CAAC6L,KAAR,CAAcgC,OAAd,CAAsBoG,cAAc,CAACjG,SAArC,KAAmD,EAA/E;AACAzE,QAAAA,iBAAiB,CAAC2K,UAAU,CAAC7J,cAAZ,CAAjB;AACD;;AAEDhB,MAAAA,WAAW,qCAAKrJ,OAAO,CAAC6L,KAAR,CAAc7E,QAAnB,EAAX;AACD;AACF,GAbD;;AAeA,MAAMoN,cAAc,GAAG,SAAjBA,cAAiB,CACrBC,UADqB,EAErBC,UAFqB,EAGlB;AACH,QAAItU,OAAJ,EAAa;AACXA,MAAAA,OAAO,CAAC6L,KAAR,CAAc0I,aAAd,CAA4BF,UAA5B;AACArU,MAAAA,OAAO,CAAC6L,KAAR,CAAcsI,gBAAd,CAA+BG,UAA/B,EAA2C,IAA3C;;AACA,UAAInK,MAAM,IAAImK,UAAU,CAACtG,SAAzB,EAAoC;AAClC,YAAM3D,eAAc,GAAGrK,OAAO,CAAC6L,KAAR,CAAcgC,OAAd,CAAsByG,UAAU,CAACtG,SAAjC,KAA+C,EAAtE;;AACAzE,QAAAA,iBAAiB,CAACc,eAAD,CAAjB;AACD;;AACDhB,MAAAA,WAAW,CAACrJ,OAAO,CAAC6L,KAAR,CAAc7E,QAAf,CAAX;AACD;AACF,GAbD;;AAeA,MAAMwN,oBAAoB,GAAG,SAAvBA,oBAAuB,SAMa;AAAA,QALxCC,WAKwC,UALxCA,WAKwC;AAAA,QAJxCC,eAIwC,UAJxCA,eAIwC;AAAA,QAHxC1G,SAGwC,UAHxCA,SAGwC;AAAA,QAFxC2G,IAEwC,UAFxCA,IAEwC;AAAA,QADrCC,WACqC;AACxC,QAAMC,OAAO;AACXC,MAAAA,MAAM,EAAEH,IADG;AAEXF,MAAAA,WAAW,EAAXA,WAFW;AAGXnC,MAAAA,UAAU,EAAE,IAAIlC,IAAJ,EAHD;AAIX2E,MAAAA,IAAI,EAAEJ,IAJK;AAKX5H,MAAAA,EAAE,EAAK7M,MAAM,CAAC8U,MAAZ,SAAsB,8BALb;AAMXN,MAAAA,eAAe,EACb,CAAAA,eAAe,QAAf,YAAAA,eAAe,CAAE3B,GAAjB,CAAqB,UAACkC,MAAD;AAAA,eAAa;AAChClI,UAAAA,EAAE,EAAEkI;AAD4B,SAAb;AAAA,OAArB,MAEO,EATE;AAUXjH,MAAAA,SAAS,EAATA,SAVW;AAWXkH,MAAAA,SAAS,EAAE,EAXA;AAYXtC,MAAAA,MAAM,EAAEC,0BAAmBsC,OAZhB;AAaXR,MAAAA,IAAI,EAAJA,IAbW;AAcXjX,MAAAA,IAAI,EAAE,SAdK;AAeXyQ,MAAAA,IAAI;AACFpB,QAAAA,EAAE,EAAE7M,MAAM,CAAC8U;AADT,SAEC9U,MAAM,CAACiO,IAFR;AAfO,OAmBRyG,WAnBQ,CAAb;;AA2BA,QAAIC,OAAO,CAACO,iBAAZ,EAA+B;AAC7B,UAAMjJ,cAAa,GAAGnF,QAAQ,CAACqO,IAAT,CAAc,UAAC/F,OAAD;AAAA,eAAaA,OAAO,CAACvC,EAAR,KAAe8H,OAAO,CAACO,iBAApC;AAAA,OAAd,CAAtB;;AAEAP,MAAAA,OAAO,CAACS,cAAR,GAAyBnJ,cAAzB;AAQD;;AACD,WAAO0I,OAAP;AACD,GA/CD;;AAiDA,MAAMU,kBAAkB;AAAA,iFAAG,mBACzBjG,OADyB,EAEzBkG,QAFyB;AAAA;;AAAA;AAAA;AAAA;AAAA;AAMvBV,cAAAA,MANuB,GA6BrBxF,OA7BqB,CAMvBwF,MANuB,EAOvBL,WAPuB,GA6BrBnF,OA7BqB,CAOvBmF,WAPuB,EASvBnC,UATuB,GA6BrBhD,OA7BqB,CASvBgD,UATuB,EAWvByC,IAXuB,GA6BrBzF,OA7BqB,CAWvByF,IAXuB,EAYvBhI,EAZuB,GA6BrBuC,OA7BqB,CAYvBvC,EAZuB,EAavB2H,eAbuB,GA6BrBpF,OA7BqB,CAavBoF,eAbuB,EAcvB1G,SAduB,GA6BrBsB,OA7BqB,CAcvBtB,SAduB,EAgBvBsH,cAhBuB,GA6BrBhG,OA7BqB,CAgBvBgG,cAhBuB,EAkBvBJ,SAlBuB,GA6BrB5F,OA7BqB,CAkBvB4F,SAlBuB,EAoBvBtC,MApBuB,GA6BrBtD,OA7BqB,CAoBvBsD,MApBuB,EAqBvB+B,IArBuB,GA6BrBrF,OA7BqB,CAqBvBqF,IArBuB,EAuBvBjX,IAvBuB,GA6BrB4R,OA7BqB,CAuBvB5R,IAvBuB,EAyBvB+U,UAzBuB,GA6BrBnD,OA7BqB,CAyBvBmD,UAzBuB,EA2BvBtE,IA3BuB,GA6BrBmB,OA7BqB,CA2BvBnB,IA3BuB,EA4BpByG,WA5BoB,6CA6BrBtF,OA7BqB;AA+BnBmG,cAAAA,WA/BmB;AAgCvBhB,gBAAAA,WAAW,EAAXA,WAhCuB;AAiCvB1H,gBAAAA,EAAE,EAAEyI,QAAQ,GAAGvH,SAAH,GAAelB,EAjCJ;AAkCvB2H,gBAAAA,eAAe,EAAE,CAAAA,eAAe,QAAf,YAAAA,eAAe,CAAE3B,GAAjB,CAAqB,UAAC2C,aAAD;AAAA,yBAAmBA,aAAa,CAAC3I,EAAjC;AAAA,iBAArB,MAA6D,EAlCvD;AAmCvBiB,gBAAAA,SAAS,EAATA,SAnCuB;AAoCvB2G,gBAAAA,IAAI,EAAJA;AApCuB,iBAqCpBC,WArCoB;AAAA;AAyCnBe,cAAAA,eAzCmB,GAyCD,EAzCC;;AAAA,mBA2CnBzU,oBA3CmB;AAAA;AAAA;AAAA;;AAAA;AAAA,qBA4CGA,oBAAoB,CAAC,CAAAlB,OAAO,QAAP,YAAAA,OAAO,CAAE8P,GAAT,KAAgB,EAAjB,EAAqB2F,WAArB,CA5CvB;;AAAA;AA4CrBE,cAAAA,eA5CqB;AAAA;AAAA;;AAAA;AAAA,mBA6CZ3V,OA7CY;AAAA;AAAA;AAAA;;AAAA;AAAA,qBA8CGA,OAAO,CAAC4V,WAAR,CAAoBH,WAApB,CA9CH;;AAAA;AA8CrBE,cAAAA,eA9CqB;;AAAA;AAgDvB,kBAAIA,eAAe,CAACrG,OAApB,EAA6B;AAC3BqG,gBAAAA,eAAe,CAACrG,OAAhB,CAAwBsD,MAAxB,GAAiCC,0BAAmBgD,QAApD;;AACA,oBAAIL,QAAJ,EAAc;AACZpB,kBAAAA,cAAc,CAAC9E,OAAD,EAAUqG,eAAe,CAACrG,OAA1B,CAAd;AACD,iBAFD,MAEO;AACL0E,kBAAAA,aAAa,CAAC2B,eAAe,CAACrG,OAAjB,CAAb;AACD;AACF;;AAvDsB;AAAA;;AAAA;AAAA;AAAA;AAyDvBuC,cAAAA,OAAO,CAACiE,GAAR;AACAxG,cAAAA,OAAO,CAACsD,MAAR,GAAiBC,0BAAmBC,MAApC;AACAkB,cAAAA,aAAa,CAAC1E,OAAD,CAAb;;AA3DuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAlBiG,kBAAkB;AAAA;AAAA;AAAA,KAAxB;;AA+DA,MAAMK,WAAqF;AAAA,iFACzF,mBAAOtG,OAAP;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AACE,kBAAItP,OAAJ,8BAAIA,OAAO,CAAE6L,KAAb,aAAI,eAAgBkK,mBAApB,EAAyC;AACvC/V,gBAAAA,OAAO,CAAC6L,KAAR,CAAckK,mBAAd;AACD;;AAEKC,cAAAA,cALR,GAKyBxB,oBAAoB,+BACtClF,OADsC;AAEzCmF,gBAAAA,WAAW,EAAEnF,OAAO,CAACmF,WAAR,IAAuB;AAFK,iBAL7C;;AAAA,kBAUOzU,OAVP,YAUOA,OAAO,CAAE6L,KAAT,CAAe8E,UAVtB;AAAA;AAAA;AAAA;;AAAA;AAAA,qBAWU8C,aAAa,EAXvB;;AAAA;AAcEO,cAAAA,aAAa,CAACgC,cAAD,EAAiB;AAC5BC,gBAAAA,QAAQ,EAAE,EADkB;AAE5BC,gBAAAA,YAAY,EAAE;AAFc,eAAjB,CAAb;AAdF;AAAA,qBAmBQX,kBAAkB,CAACS,cAAD,CAnB1B;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADyF;;AAAA,oBAArFJ,WAAqF;AAAA;AAAA;AAAA,KAA3F;;AAuBA,MAAMO,gBAAsF;AAAA,iFAC1F,mBAAO7G,OAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AACQ8G,cAAAA,oBADR,iCAEO9G,OAFP;AAGIsD,gBAAAA,MAAM,EAAEC,0BAAmBsC;AAH/B;AAMEnB,cAAAA,aAAa,CAACoC,oBAAD,CAAb;AANF;AAAA,qBAOQb,kBAAkB,CAACa,oBAAD,EAAuB,IAAvB,CAP1B;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAD0F;;AAAA,oBAAtFD,gBAAsF;AAAA;AAAA;AAAA,KAA5F;;AAYA,MAAMzI,gBAAgB,GAAG,mBACvB,0BACE,UACE+D,cADF,EAEE4E,WAFF,EAGK;AACHpK,IAAAA,cAAc,CAAC,KAAD,CAAd;AACAT,IAAAA,QAAQ,CAAC,KAAD,CAAR;AACAE,IAAAA,UAAU,CAAC+F,cAAD,CAAV;AACApI,IAAAA,WAAW,CAACgN,WAAD,CAAX;AACD,GATH,EAUEpY,uBAVF,EAWEI,eAXF,CADuB,EAcvBuQ,OAdF;;AAgBA,MAAM0H,QAAkF;AAAA,iFAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACzFvF,cAAAA,KADyF,iEACjF,EADiF;;AAAA,oBAGrFhM,WAAW,IAAI0G,OAAO,KAAK,KAH0D;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAMzFQ,cAAAA,cAAc,CAAC,IAAD,CAAd;;AANyF,kBAQpFjF,QAAQ,CAAC8E,MAR2E;AAAA;AAAA;AAAA;;AAAA,iDAShFG,cAAc,CAAC,KAAD,CATkE;;AAAA;AAYnFsK,cAAAA,aAZmF,GAYnEvP,QAAQ,IAAIA,QAAQ,CAAC,CAAD,CAZ+C;;AAAA,oBAcrFuP,aAAa,IAAIA,aAAa,CAAC3D,MAAd,KAAyBC,0BAAmBgD,QAdwB;AAAA;AAAA;AAAA;;AAAA,iDAehF5J,cAAc,CAAC,KAAD,CAfkE;;AAAA;AAkBnFuK,cAAAA,QAlBmF,GAkBxED,aAAa,IAAIA,aAAa,CAACxJ,EAlByC;AAAA;;AAAA,mBAqBnF/M,OArBmF;AAAA;AAAA;AAAA;;AAAA;AAAA,qBAsBzDA,OAAO,CAAC0Q,KAAR,CAAc;AACxC1J,gBAAAA,QAAQ,EAAE;AAAE2M,kBAAAA,KAAK,EAAE6C,QAAT;AAAmBzF,kBAAAA,KAAK,EAALA;AAAnB;AAD8B,eAAd,CAtByD;;AAAA;AAsB/ES,cAAAA,aAtB+E;AA0B/EC,cAAAA,cA1B+E,GA0B9DD,aAAa,CAACxK,QAAd,CAAuB8E,MAAvB,KAAkCiF,KA1B4B;AA2BrFrD,cAAAA,gBAAgB,CAAC+D,cAAD,EAAiBzR,OAAO,CAAC6L,KAAR,CAAc7E,QAA/B,CAAhB;;AA3BqF;AAAA;AAAA;;AAAA;AAAA;AAAA;AA8BvF6K,cAAAA,OAAO,CAACC,IAAR,CAAa,8CAAb;;AACA,kBAAI,yBAAezB,KAAnB,EAA0B;AACxB7E,gBAAAA,QAAQ,eAAR;AACD,eAFD,MAEO;AACLA,gBAAAA,QAAQ,CAAC,IAAD,CAAR;AACD;;AACDS,cAAAA,cAAc,CAAC,KAAD,CAAd;AApCuF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAlFqK,QAAkF;AAAA;AAAA;AAAA,KAAxF;;AAyCA,MAAMG,cAQa;AAAA,iFAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO1F,cAAAA,KAAP,iEAAe,CAAf;;AAAA,oBAChB/Q,OADgB,YAChBA,OAAO,CAAE6L,KAAT,CAAe8E,UADC;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAKpBzE,cAAAA,oBAAoB,CAAC,IAAD,CAApB;AAEMwK,cAAAA,aAPc,GAOE1P,QAAQ,CAACA,QAAQ,CAAC8E,MAAT,GAAkB,CAAnB,CAPV;;AAAA,oBAShB,CAAA4K,aAAa,QAAb,YAAAA,aAAa,CAAE9D,MAAf,MAA0BC,0BAAmBgD,QAT7B;AAAA;AAAA;AAAA;;AAUlB3J,cAAAA,oBAAoB,CAAC,KAAD,CAApB;AAVkB;;AAAA;AAAA;;AAAA,mBAedlM,OAfc;AAAA;AAAA;AAAA;;AAAA;AAAA,qBAgBV6Q,iBAAiB,CAAC6F,aAAa,CAAC3J,EAAf,EAAmBgE,KAAnB,CAhBP;;AAAA;AAiBhB4F,cAAAA,sBAAsB,CAAC3W,OAAO,CAAC6L,KAAR,CAAc7E,QAAf,CAAtB;;AAjBgB;AAAA;AAAA;;AAAA;AAAA;AAAA;AAoBlB6K,cAAAA,OAAO,CAACC,IAAR,CAAa,8CAAb;;AACA,kBAAI,yBAAezB,KAAnB,EAA0B;AACxB7E,gBAAAA,QAAQ,eAAR;AACD,eAFD,MAEO;AACLA,gBAAAA,QAAQ,CAAC,IAAD,CAAR;AACD;;AACDU,cAAAA,oBAAoB,CAAC,KAAD,CAApB;AA1BkB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBARbuK,cAQa;AAAA;AAAA;AAAA,KARnB;;AAwCA,MAAME,sBAAsB,GAAG,mBAC7B,0BACE,UAACN,WAAD,EAAuE;AACrEnK,IAAAA,oBAAoB,CAAC,KAAD,CAApB;AACA7C,IAAAA,WAAW,CAACgN,WAAD,CAAX;AACA7K,IAAAA,QAAQ,CAAC,KAAD,CAAR;AACD,GALH,EAMEvN,uBANF,EAOEI,eAPF,CAD6B,EAU7BuQ,OAVF;;AAYA,MAAMgI,WAAqF,GAAG,SAAxFA,WAAwF,CAC5F3C,cAD4F;AAAA,WAG5F9S,sBAAsB,GAClBA,sBAAsB,CAAC,CAAAnB,OAAO,QAAP,YAAAA,OAAO,CAAE8P,GAAT,KAAgB,EAAjB,EAAqBmE,cAArB,CADJ,GAElB/T,MAAM,CAAC8T,aAAP,CAAqBC,cAArB,CALwF;AAAA,GAA9F;;AAOA,MAAM4C,eAAoF,GAAG,SAAvFA,eAAuF,CAC3FvH,OAD2F,EAExF;AACHhE,IAAAA,UAAU,CAACgE,OAAD,CAAV;AACD,GAJD;;AAMA,MAAMwH,qBAQoB,GAAG,SARvBA,qBAQuB,CAACxH,OAAD,EAAa;AACxClD,IAAAA,gBAAgB,CAACkD,OAAD,CAAhB;AACD,GAVD;;AAYA,MAAMyH,iBAQgB,GAAG,SARnBA,iBAQmB;AAAA,WAAMzL,UAAU,CAAC,KAAD,CAAhB;AAAA,GARzB;;AAUA,MAAM0L,uBAQsB,GAAG,SARzBA,uBAQyB;AAAA,WAAM5K,gBAAgB,CAAC,KAAD,CAAtB;AAAA,GAR/B;;AAUA,MAAMmI,aAAgF,GAAG,SAAnFA,aAAmF,CACvFjF,OADuF,EAEpF;AACH,QAAItP,OAAJ,EAAa;AACXA,MAAAA,OAAO,CAAC6L,KAAR,CAAc0I,aAAd,CAA4BjF,OAA5B;AACAjG,MAAAA,WAAW,CAACrJ,OAAO,CAAC6L,KAAR,CAAc7E,QAAf,CAAX;;AACA,UAAImD,MAAJ,EAAY;AACVZ,QAAAA,iBAAiB,CAACvJ,OAAO,CAAC6L,KAAR,CAAcgC,OAAd,CAAsB1D,MAAM,CAAC4C,EAA7B,KAAoC,EAArC,CAAjB;AACD;AACF;AACF,GAVD;;AAeA,MAAMkK,UAAwE,GAAG,SAA3EA,UAA2E,CAAC3H,OAAD,EAAa;AAAA;;AAC5F,QAAM4H,iBAAiB,GAAG5H,OAAO,QAAP,IAAAA,OAAO,CAAEvC,EAAT,GAAc,CAAA/M,OAAO,QAAP,+BAAAA,OAAO,CAAE6L,KAAT,qCAAgBgC,OAAhB,CAAwByB,OAAO,CAACvC,EAAhC,MAAuC,EAArD,GAA0D,EAApF;AACAV,IAAAA,SAAS,CAACiD,OAAD,CAAT;AACA/F,IAAAA,iBAAiB,CAAC2N,iBAAD,CAAjB;AACD,GAJD;;AAMA,MAAMC,WAA0E,GAC9E,wBAAY,YAAM;AAChB9K,IAAAA,SAAS,CAAC,IAAD,CAAT;AACA9C,IAAAA,iBAAiB,CAAC,EAAD,CAAjB;AACD,GAHD,EAGG,CAAC8C,SAAD,EAAY9C,iBAAZ,CAHH,CADF;AAOA,MAAMoE,sBAAsB,GAAG,mBAC7B,0BACE,UACEyJ,gBADF,EAEE/H,qBAFF,EAGK;AACH9C,IAAAA,gBAAgB,CAAC6K,gBAAD,CAAhB;AACA3K,IAAAA,oBAAoB,CAAC,KAAD,CAApB;AACAlD,IAAAA,iBAAiB,CAAC8F,qBAAD,CAAjB;AACD,GARH,EASEpR,uBATF,EAUEI,eAVF,CAD6B,EAa7BuQ,OAbF;;AAeA,MAAMyI,cAAgF;AAAA,iFACpF;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,oBACM7K,iBAAiB,IAAI,EAACrC,MAAD,YAACA,MAAM,CAAE4C,EAAT,CAD3B;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAIEN,cAAAA,oBAAoB,CAAC,IAAD,CAApB;AAJF;;AAAA,mBAOQzM,OAPR;AAAA;AAAA;AAAA;;AAQYsR,cAAAA,QARZ,GAQuBnH,MAAM,CAAC4C,EAR9B;AAgBM/M,cAAAA,OAAO,CAAC6L,KAAR,CAAcgC,OAAd,CAAsByD,QAAtB,IAAkCjH,cAAlC;AACMiN,cAAAA,eAjBZ,GAiB8BjN,cAjB9B,wCAiB8BA,cAAc,CAAG,CAAH,CAjB5C,qBAiB8B,iBAAqB0C,EAjBnD;AAmBYgE,cAAAA,KAnBZ,GAmBoB,EAnBpB;AAAA;AAAA,qBAoBkC/Q,OAAO,CAACuR,UAAR,CAAmBD,QAAnB,EAA6B;AACvDqC,gBAAAA,KAAK,EAAE2D,eADgD;AAEvDvG,gBAAAA,KAAK,EAALA;AAFuD,eAA7B,CApBlC;;AAAA;AAoBYS,cAAAA,aApBZ;AAyBYC,cAAAA,cAzBZ,GAyB6BD,aAAa,CAACxK,QAAd,CAAuB8E,MAAvB,KAAkCiF,KAzB/D;AA0BY1B,cAAAA,qBA1BZ,GA0BoCrP,OAAO,CAAC6L,KAAR,CAAcgC,OAAd,CAAsByD,QAAtB,KAAmC,EA1BvE;AA2BM3D,cAAAA,sBAAsB,CAAC8D,cAAD,EAAiBpC,qBAAjB,CAAtB;;AA3BN;AAAA;AAAA;;AAAA;AAAA;AAAA;AA8BIwC,cAAAA,OAAO,CAACC,IAAR,CAAa,8CAAb;;AACA,kBAAI,yBAAezB,KAAnB,EAA0B;AACxB7E,gBAAAA,QAAQ,eAAR;AACD,eAFD,MAEO;AACLA,gBAAAA,QAAQ,CAAC,IAAD,CAAR;AACD;;AACDiB,cAAAA,oBAAoB,CAAC,KAAD,CAApB;AApCJ;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADoF;;AAAA,oBAAhF4K,cAAgF;AAAA;AAAA;AAAA,KAAtF;;AA0CA,MAAME,sBAAsB,GAAG,sEAAgC;AAC7DvX,IAAAA,OAAO,EAAPA,OAD6D;AAE7DwX,IAAAA,oBAAoB,EAAEvP;AAFuC,GAAhC,CAA/B;AAKA,MAAMwP,cAAc,GAAG,sDAAwB;AAC7CzX,IAAAA,OAAO,EAAPA,OAD6C;AAE7C0X,IAAAA,QAAQ,EAAE,CAAC,EAAC1X,OAAD,6BAACA,OAAO,CAAE2X,IAAV,aAAC,cAAeC,MAAhB,CAAD,IAA2BjX,sBAFQ;AAG7CS,IAAAA,mBAAmB,EAAnBA,mBAH6C;AAI7CE,IAAAA,2BAA2B,EAA3BA,2BAJ6C;AAK7CC,IAAAA,qBAAqB,EAArBA,qBAL6C;AAM7CgK,IAAAA,KAAK,EAALA,KAN6C;AAO7C/I,IAAAA,YAAY,EACVA,YADU,WACVA,YADU,GAEV,CAAC,YAAE,CAAAkM,mBAAmB,QAAnB,YAAAA,mBAAmB,CAAEuH,QAArB,KAAiC,EAAnC,aAAC,OAAuC4B,IAAvC,CAA4C,UAACC,OAAD;AAAA,aAAaA,OAAO,CAACC,IAAR,KAAiB,OAA9B;AAAA,KAA5C,CAAD,CAT0C;AAU7CvU,IAAAA,kBAAkB,EAAlBA,kBAV6C;AAW7CC,IAAAA,oBAAoB,EAApBA,oBAX6C;AAY7CyK,IAAAA,OAAO,EAAPA,OAZ6C;AAa7C8J,IAAAA,eAAe,EAAErO,iBAb4B;AAc7C2E,IAAAA,WAAW,EAAXA,WAd6C;AAe7CC,IAAAA,OAAO,EAAPA,OAf6C;AAgB7C5C,IAAAA,QAAQ,EAARA,QAhB6C;AAiB7CwB,IAAAA,oBAAoB,EAApBA,oBAjB6C;AAkB7CpB,IAAAA,OAAO,EAAPA,OAlB6C;AAmB7CnH,IAAAA,gBAAgB,EAAhBA,gBAnB6C;AAoB7C4J,IAAAA,QAAQ,EAARA,QApB6C;AAqB7ClJ,IAAAA,6BAA6B,EAA7BA,6BArB6C;AAsB7CG,IAAAA,OAAO,EAAPA,OAtB6C;AAuB7CmC,IAAAA,oBAAoB,EAApBA,oBAvB6C;AAwB7CY,IAAAA,IAAI,EAAJA,IAxB6C;AAyB7CiL,IAAAA,aAAa,EAAbA,aAzB6C;AA0B7C1V,IAAAA,4BAA4B,EAA5BA,4BA1B6C;AA2B7C6N,IAAAA,WAAW,EAAXA,WA3B6C;AA4B7CgB,IAAAA,kBAAkB,EAAlBA,kBA5B6C;AA6B7C7C,IAAAA,YAAY,EAAZA,YA7B6C;AA8B7C8C,IAAAA,eAAe,EAAfA,eA9B6C;AA+B7CzC,IAAAA,UAAU,EAAVA,UA/B6C;AAgC7CU,IAAAA,YAAY,EAAZA,YAhC6C;AAiC7CC,IAAAA,QAAQ,EAARA;AAjC6C,GAAxB,CAAvB;AAoCA,MAAMkN,wBAAwB,GAAG,0EAAkC;AACjEvZ,IAAAA,wBAAwB,EAAxBA,wBADiE;AAEjEG,IAAAA,YAAY,EAAZA,YAFiE;AAGjEY,IAAAA,4BAA4B,EAA5BA,4BAHiE;AAIjEC,IAAAA,2BAA2B,EAA3BA,2BAJiE;AAKjEoN,IAAAA,SAAS,EAATA,SALiE;AAMjEiK,IAAAA,iBAAiB,EAAjBA,iBANiE;AAOjEC,IAAAA,uBAAuB,EAAvBA,uBAPiE;AAQjE7W,IAAAA,cAAc,EAAdA,cARiE;AASjEE,IAAAA,oBAAoB,EAApBA,oBATiE;AAUjEC,IAAAA,aAAa,EAAbA,aAViE;AAWjES,IAAAA,kBAAkB,EAAlBA,kBAXiE;AAYjEC,IAAAA,oBAAoB,EAApBA,oBAZiE;AAajEqK,IAAAA,OAAO,EAAPA,OAbiE;AAcjEuL,IAAAA,WAAW,EAAXA,WAdiE;AAejE9U,IAAAA,iBAAiB,EAAjBA,iBAfiE;AAgBjEuB,IAAAA,WAAW,EAAXA,WAhBiE;AAiBjEC,IAAAA,aAAa,EAAbA,aAjBiE;AAkBjEC,IAAAA,cAAc,EAAdA,cAlBiE;AAmBjEG,IAAAA,kBAAkB,EAAlBA,kBAnBiE;AAoBjEG,IAAAA,YAAY,EAAZA,YApBiE;AAqBjEK,IAAAA,KAAK,EAALA,KArBiE;AAsBjEC,IAAAA,YAAY,EAAZA,YAtBiE;AAuBjEiB,IAAAA,gBAAgB,YAAED,oBAAF,WAAEA,oBAAF,GAA0BuJ,mBAA1B,oBAA0BA,mBAAmB,CAAEwJ,kBAA/C,qBAAqEjK,SAvBpB;AAwBjE5I,IAAAA,gBAAgB,EAAhBA,gBAxBiE;AAyBjEE,IAAAA,yBAAyB,EAAzBA,yBAzBiE;AA0BjEC,IAAAA,uBAAuB,EAAvBA,uBA1BiE;AA2BjEgC,IAAAA,iBAAiB,EAAjBA,iBA3BiE;AA4BjEM,IAAAA,aAAa,EAAbA,aA5BiE;AA6BjEC,IAAAA,YAAY,EAAZA,YA7BiE;AA8BjEoE,IAAAA,aAAa,EAAbA,aA9BiE;AA+BjErD,IAAAA,UAAU,EAAVA,UA/BiE;AAgCjEI,IAAAA,cAAc,EAAdA,cAhCiE;AAiCjE0M,IAAAA,WAAW,EAAXA,WAjCiE;AAkCjE5M,IAAAA,8BAA8B,EAA9BA,8BAlCiE;AAmCjEG,IAAAA,WAAW,EAAXA,WAnCiE;AAoCjE2N,IAAAA,qBAAqB,EAArBA,qBApCiE;AAqCjElN,IAAAA,gCAAgC,EAAhCA,gCArCiE;AAsCjEe,IAAAA,uBAAuB,EAAvBA;AAtCiE,GAAlC,CAAjC;AAyCA,MAAMwN,kBAAkB,GAAG,gFAAqC;AAC9DrL,IAAAA,SAAS,EAATA,SAD8D;AAE9DrB,IAAAA,OAAO,EAAPA,OAF8D;AAG9D1G,IAAAA,WAAW,EAAED,eAAe,KAAKmJ,SAApB,GAAgCnJ,eAAhC,GAAkDC,WAHD;AAI9DE,IAAAA,iBAAiB,EACfD,qBAAqB,KAAKiJ,SAA1B,GAAsCjJ,qBAAtC,GAA8DC,iBALF;AAM9DqR,IAAAA,QAAQ,EAARA,QAN8D;AAO9DG,IAAAA,cAAc,EAAdA,cAP8D;AAQ9DzP,IAAAA,QAAQ,EAARA,QAR8D;AAS9DiF,IAAAA,cAAc,EAAdA,cAT8D;AAU9DC,IAAAA,oBAAoB,EAApBA;AAV8D,GAArC,CAA3B;AAaA,MAAMkM,eAAe,GAAG,wDAAyB;AAC/CzZ,IAAAA,wBAAwB,EAAxBA,wBAD+C;AAE/CI,IAAAA,UAAU,EAAVA,UAF+C;AAG/CE,IAAAA,iBAAiB,EAAjBA,iBAH+C;AAI/CU,IAAAA,IAAI,EAAJA,IAJ+C;AAK/CE,IAAAA,SAAS,EAATA,SAL+C;AAM/CC,IAAAA,UAAU,EAAVA,UAN+C;AAO/CC,IAAAA,UAAU,EAAVA,UAP+C;AAQ/C+M,IAAAA,SAAS,EAATA,SAR+C;AAS/CtM,IAAAA,UAAU,EAAVA,UAT+C;AAU/CE,IAAAA,6BAA6B,EAA7BA,6BAV+C;AAW/CG,IAAAA,sBAAsB,EAAtBA,sBAX+C;AAY/CC,IAAAA,6BAA6B,EAA7BA,6BAZ+C;AAa/CQ,IAAAA,2BAA2B,EAA3BA,2BAb+C;AAc/CE,IAAAA,cAAc,EAAdA,cAd+C;AAe/CE,IAAAA,mBAAmB,EAAnBA,mBAf+C;AAgB/CE,IAAAA,kBAAkB,EAAlBA,kBAhB+C;AAiB/CI,IAAAA,QAAQ,EAARA,QAjB+C;AAkB/CE,IAAAA,kBAAkB,EAAlBA,kBAlB+C;AAmB/CC,IAAAA,UAAU,EAAVA,UAnB+C;AAoB/CC,IAAAA,OAAO,EAAPA,OApB+C;AAqB/CE,IAAAA,KAAK,EAALA,KArB+C;AAsB/CI,IAAAA,WAAW,EAAXA,WAtB+C;AAuB/CC,IAAAA,UAAU,EAAVA,UAvB+C;AAwB/CC,IAAAA,YAAY,EAAZA,YAxB+C;AAyB/CC,IAAAA,UAAU,EAAVA,UAzB+C;AA0B/CC,IAAAA,UAAU,EAAVA,UA1B+C;AA2B/CC,IAAAA,UAAU,EAAVA,UA3B+C;AA4B/CC,IAAAA,gBAAgB,EAAhBA,gBA5B+C;AA6B/CC,IAAAA,iBAAiB,EAAjBA,iBA7B+C;AA8B/CC,IAAAA,cAAc,EAAdA,cA9B+C;AA+B/CC,IAAAA,WAAW,EAAXA,WA/B+C;AAgC/CC,IAAAA,iBAAiB,EAAjBA,iBAhC+C;AAiC/CQ,IAAAA,iCAAiC,EAAjCA,iCAjC+C;AAkC/CE,IAAAA,mBAAmB,EAAnBA,mBAlC+C;AAmC/CE,IAAAA,qBAAqB,EAArBA,qBAnC+C;AAoC/CS,IAAAA,+BAA+B,EAA/BA,+BApC+C;AAqC/CS,IAAAA,aAAa,EAAbA,aArC+C;AAsC/CQ,IAAAA,OAAO,EAAPA,OAtC+C;AAuC/CE,IAAAA,cAAc,EAAdA,cAvC+C;AAwC/CC,IAAAA,aAAa,EAAbA,aAxC+C;AAyC/CE,IAAAA,cAAc,EAAdA,cAzC+C;AA0C/CE,IAAAA,mBAAmB,EAAnBA,mBA1C+C;AA2C/CC,IAAAA,cAAc,EAAdA,cA3C+C;AA4C/CE,IAAAA,aAAa,EAAbA,aA5C+C;AA6C/CE,IAAAA,aAAa,EAAbA,aA7C+C;AA8C/CE,IAAAA,WAAW,EAAXA,WA9C+C;AA+C/CE,IAAAA,mBAAmB,EAAnBA,mBA/C+C;AAgD/CE,IAAAA,cAAc,EAAdA,cAhD+C;AAiD/CE,IAAAA,qBAAqB,EAArBA,qBAjD+C;AAkD/CG,IAAAA,aAAa,EAAbA,aAlD+C;AAmD/CE,IAAAA,aAAa,EAAbA,aAnD+C;AAoD/CE,IAAAA,aAAa,EAAbA,aApD+C;AAqD/CE,IAAAA,WAAW,EAAXA,WArD+C;AAsD/CG,IAAAA,cAAc,EAAdA,cAtD+C;AAuD/CM,IAAAA,kBAAkB,EAAlBA,kBAvD+C;AAwD/CE,IAAAA,gBAAgB,EAAhBA,gBAxD+C;AAyD/CC,IAAAA,cAAc,EAAdA,cAzD+C;AA0D/CC,IAAAA,mBAAmB,EAAnBA,mBA1D+C;AA2D/CE,IAAAA,YAAY,EAAZA,YA3D+C;AA4D/CiM,IAAAA,aAAa,EAAbA,aA5D+C;AA6D/C9L,IAAAA,KAAK,EAALA,KA7D+C;AA8D/C0N,IAAAA,gBAAgB,EAAhBA,gBA9D+C;AA+D/CxN,IAAAA,oBAAoB,EAApBA,oBA/D+C;AAgE/CE,IAAAA,cAAc,EAAdA,cAhE+C;AAiE/CgO,IAAAA,eAAe,EAAfA,eAjE+C;AAkE/CC,IAAAA,qBAAqB,EAArBA,qBAlE+C;AAmE/C9M,IAAAA,kBAAkB,EAAlBA,kBAnE+C;AAoE/C6C,IAAAA,eAAe,EAAfA,eApE+C;AAqE/CtC,IAAAA,eAAe,EAAfA,eArE+C;AAsE/CE,IAAAA,wBAAwB,EAAxBA,wBAtE+C;AAuE/CuJ,IAAAA,aAAa,EAAbA,aAvE+C;AAwE/CnJ,IAAAA,UAAU,EAAVA;AAxE+C,GAAzB,CAAxB;AA2EA,MAAMwN,kBAAkB,GAAG;AACzBlZ,IAAAA,4BAA4B,EAA5BA,4BADyB;AAEzBE,IAAAA,0BAA0B,EAA1BA,0BAFyB;AAGzBE,IAAAA,0BAA0B,EAA1BA;AAHyB,GAA3B;AAMA,MAAM+Y,aAAa,GAAG,oDAAuB;AAC3C1Z,IAAAA,4BAA4B,EAA5BA,4BAD2C;AAE3CuY,IAAAA,WAAW,EAAXA,WAF2C;AAG3CE,IAAAA,cAAc,EAAdA,cAH2C;AAI3CJ,IAAAA,UAAU,EAAVA,UAJ2C;AAK3C5F,IAAAA,YAAY,EAAZA,YAL2C;AAM3C5E,IAAAA,oBAAoB,EAApBA,oBAN2C;AAO3CtC,IAAAA,MAAM,EAANA,MAP2C;AAQ3CmC,IAAAA,aAAa,EAAbA,aAR2C;AAS3CE,IAAAA,iBAAiB,EAAjBA,iBAT2C;AAU3CnC,IAAAA,cAAc,EAAdA;AAV2C,GAAvB,CAAtB;AAaA,MAAMkO,aAAa,GAAG,oDAAuB;AAC3CjO,IAAAA,MAAM,EAANA;AAD2C,GAAvB,CAAtB;AAKA,MAAIa,OAAJ,EAAa,OAAO,IAAP;;AAEb,MAAI,CAACnL,OAAD,IAAauL,KAAK,IAAIvE,QAAQ,CAAC8E,MAAT,KAAoB,CAA9C,EAAkD;AAChD,WAAO,gCAAC,qBAAD;AAAuB,MAAA,KAAK,EAAEP,KAA9B;AAAqC,MAAA,QAAQ,EAAC,SAA9C;AAAwD,MAAA,KAAK,EAAEkI,aAA/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAP;AACD;;AAED,MAAI,EAACzT,OAAD,YAACA,OAAO,CAAE8P,GAAV,KAAiB,CAAC9P,OAAO,CAACoR,KAA9B,EAAqC;AACnC,WACE,gCAAC,iBAAD;AAAM,MAAA,KAAK,EAAE,CAACnU,MAAM,CAACG,aAAR,EAAuB;AAAEob,QAAAA,KAAK,EAAEvN;AAAT,OAAvB,EAAyC7N,aAAzC,CAAb;AAAsE,MAAA,MAAM,EAAC,YAA7E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OACG6M,CAAC,CAAC,+BAAD,CADJ,CADF;AAKD;;AAED,SACE,gCAAC,sBAAD;AACE,IAAA,QAAQ,EAAE5F,gBADZ;AAEE,IAAA,OAAO,EAAE,CAACzD,6BAFZ;AAGE,IAAA,sBAAsB,EAAE4D;AAH1B,KAIM/F,mCAJN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAME,gCAAC,+BAAD;AAA6C,IAAA,KAAK,EAAEgZ,cAApD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,+CAAD;AAAyB,IAAA,KAAK,EAAEF,sBAAhC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,6BAAD;AAA4C,IAAA,KAAK,EAAEgB,aAAnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,yDAAD;AAA0D,IAAA,KAAK,EAAEJ,kBAAjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,iCAAD;AAA8C,IAAA,KAAK,EAAEC,eAArD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,6BAAD;AAA4C,IAAA,KAAK,EAAEE,aAAnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,uCAAD;AAA6B,IAAA,KAAK,EAAED,kBAApC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,yCAAD;AACE,IAAA,KAAK,EAAEJ,wBADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAGE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE;AAAEQ,MAAAA,MAAM,EAAE;AAAV,KAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAkCxY,QAAlC,CAHF,CADF,CADF,CADF,CADF,CADF,CADF,CADF,CANF,CADF;AA4BD,CA/7CD;;AAo9CO,IAAMyY,OAAO,GAAG,SAAVA,OAAU,CASrBla,KATqB,EAUlB;AAAA;;AACH,wBAAmB,kCAAnB;AAAA,MAAQ0B,MAAR,mBAAQA,MAAR;;AACA,8BAAc,gDAAd;AAAA,MAAQ+J,CAAR,yBAAQA,CAAR;;AAEA,MAAMN,iBAAiB,GAAG,iBAAAnL,KAAK,CAAC2L,MAAN,2BAAc4C,EAAd,GAAmB,CAAC,CAACvO,KAAK,CAAC4L,UAA3B,GAAwC,IAAlE;;AAEA,yBAeI,uCACF5L,KAAK,CAACwB,OADJ,EAEFxB,KAAK,CAAC4L,UAAN,qBAAmB5L,KAAK,CAAC2L,MAAzB,qBAAmB,eAAc4C,EAAjC,GAAsCkB,SAFpC,CAfJ;AAAA,MACExI,OADF,oBACEA,OADF;AAAA,MAEEuB,QAFF,oBAEEA,QAFF;AAAA,MAGEwB,IAHF,oBAGEA,IAHF;AAAA,MAIEY,UAJF,oBAIEA,UAJF;AAAA,MAKEC,WALF,oBAKEA,WALF;AAAA,MAMEC,OANF,oBAMEA,OANF;AAAA,MAOEC,iBAPF,oBAOEA,iBAPF;AAAA,MAQEC,SARF,oBAQEA,SARF;AAAA,MASEC,eATF,oBASEA,eATF;AAAA,MAUEC,WAVF,oBAUEA,WAVF;AAAA,MAWEW,cAXF,oBAWEA,cAXF;AAAA,MAYEC,MAZF,oBAYEA,MAZF;AAAA,MAaEQ,YAbF,oBAaEA,YAbF;AAAA,MAcEC,QAdF,oBAcEA,QAdF;;AAoBA,SACE,gCAAC,kBAAD;AAEI7K,IAAAA,MAAM,EAANA,MAFJ;AAGI+J,IAAAA,CAAC,EAADA;AAHJ,KAKMzL,KALN;AAME,IAAA,iBAAiB,EAAEmL,iBANrB;AAQIlE,IAAAA,OAAO,EAAPA,OARJ;AASIuB,IAAAA,QAAQ,EAAExI,KAAK,CAACwI,QAAN,IAAkBA,QAThC;AAUIwB,IAAAA,IAAI,EAAJA,IAVJ;AAWIY,IAAAA,UAAU,EAAVA,UAXJ;AAYIC,IAAAA,WAAW,EAAXA,WAZJ;AAaIC,IAAAA,OAAO,EAAPA,OAbJ;AAcIC,IAAAA,iBAAiB,EAAjBA,iBAdJ;AAeIC,IAAAA,SAAS,EAATA,SAfJ;AAgBIC,IAAAA,eAAe,EAAfA,eAhBJ;AAiBIC,IAAAA,WAAW,EAAXA,WAjBJ;AAkBIW,IAAAA,cAAc,EAAdA,cAlBJ;AAmBIC,IAAAA,MAAM,EAANA,MAnBJ;AAoBIQ,IAAAA,YAAY,EAAZA,YApBJ;AAqBIC,IAAAA,QAAQ,EAARA,QArBJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AA0BD,CA9DM","sourcesContent":["import React, { PropsWithChildren, useCallback, useEffect, useRef, useState } from 'react';\nimport { KeyboardAvoidingViewProps, StyleSheet, Text, View } from 'react-native';\n\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\nimport {\n ChannelState,\n Channel as ChannelType,\n ConnectionChangeEvent,\n EventHandler,\n logChatPromiseExecution,\n MessageResponse,\n SendMessageAPIResponse,\n StreamChat,\n Event as StreamEvent,\n Message as StreamMessage,\n} from 'stream-chat';\n\nimport { useCreateChannelContext } from './hooks/useCreateChannelContext';\n\nimport { useCreateInputMessageInputContext } from './hooks/useCreateInputMessageInputContext';\n\nimport { useCreateMessagesContext } from './hooks/useCreateMessagesContext';\n\nimport { useCreateOwnCapabilitiesContext } from './hooks/useCreateOwnCapabilitiesContext';\nimport { useCreatePaginatedMessageListContext } from './hooks/useCreatePaginatedMessageListContext';\n\nimport { useCreateThreadContext } from './hooks/useCreateThreadContext';\n\nimport { useCreateTypingContext } from './hooks/useCreateTypingContext';\n\nimport { useTargetedMessage } from './hooks/useTargetedMessage';\n\nimport { ChannelContextValue, ChannelProvider } from '../../contexts/channelContext/ChannelContext';\nimport { useChannelState } from '../../contexts/channelsStateContext/useChannelState';\nimport type { UseChannelStateValue } from '../../contexts/channelsStateContext/useChannelState';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n InputMessageInputContextValue,\n MessageInputProvider,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n MessagesProvider,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OwnCapabilitiesContextValue,\n OwnCapabilitiesProvider,\n} from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n PaginatedMessageListContextValue,\n PaginatedMessageListProvider,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport {\n SuggestionsContextValue,\n SuggestionsProvider,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, ThreadProvider } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport { TypingProvider } from '../../contexts/typingContext/TypingContext';\nimport { useAppStateListener } from '../../hooks/useAppStateListener';\n\nimport {\n LOLReaction,\n LoveReaction,\n ThumbsDownReaction,\n ThumbsUpReaction,\n WutReaction,\n} from '../../icons';\nimport { FlatList as FlatListDefault } from '../../native';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\nimport { generateRandomId, MessageStatusTypes, ReactionData } from '../../utils/utils';\nimport { Attachment as AttachmentDefault } from '../Attachment/Attachment';\nimport { AttachmentActions as AttachmentActionsDefault } from '../Attachment/AttachmentActions';\nimport { Card as CardDefault } from '../Attachment/Card';\nimport { FileAttachment as FileAttachmentDefault } from '../Attachment/FileAttachment';\nimport { FileAttachmentGroup as FileAttachmentGroupDefault } from '../Attachment/FileAttachmentGroup';\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { Gallery as GalleryDefault } from '../Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../Attachment/Giphy';\nimport { AutoCompleteSuggestionHeader as AutoCompleteSuggestionHeaderDefault } from '../AutoCompleteInput/AutoCompleteSuggestionHeader';\nimport { AutoCompleteSuggestionItem as AutoCompleteSuggestionItemDefault } from '../AutoCompleteInput/AutoCompleteSuggestionItem';\nimport { AutoCompleteSuggestionList as AutoCompleteSuggestionListDefault } from '../AutoCompleteInput/AutoCompleteSuggestionList';\nimport { EmptyStateIndicator as EmptyStateIndicatorDefault } from '../Indicators/EmptyStateIndicator';\nimport {\n LoadingErrorIndicator as LoadingErrorIndicatorDefault,\n LoadingErrorProps,\n} from '../Indicators/LoadingErrorIndicator';\nimport { LoadingIndicator as LoadingIndicatorDefault } from '../Indicators/LoadingIndicator';\nimport { KeyboardCompatibleView as KeyboardCompatibleViewDefault } from '../KeyboardCompatibleView/KeyboardCompatibleView';\nimport { Message as MessageDefault } from '../Message/Message';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageContent as MessageContentDefault } from '../Message/MessageSimple/MessageContent';\nimport { MessageDeleted as MessageDeletedDefault } from '../Message/MessageSimple/MessageDeleted';\nimport { MessageFooter as MessageFooterDefault } from '../Message/MessageSimple/MessageFooter';\nimport { MessagePinnedHeader as MessagePinnedHeaderDefault } from '../Message/MessageSimple/MessagePinnedHeader';\nimport { MessageReplies as MessageRepliesDefault } from '../Message/MessageSimple/MessageReplies';\nimport { MessageRepliesAvatars as MessageRepliesAvatarsDefault } from '../Message/MessageSimple/MessageRepliesAvatars';\nimport { MessageSimple as MessageSimpleDefault } from '../Message/MessageSimple/MessageSimple';\nimport { MessageStatus as MessageStatusDefault } from '../Message/MessageSimple/MessageStatus';\nimport { ReactionList as ReactionListDefault } from '../Message/MessageSimple/ReactionList';\nimport { AttachButton as AttachButtonDefault } from '../MessageInput/AttachButton';\nimport { CommandsButton as CommandsButtonDefault } from '../MessageInput/CommandsButton';\nimport { CooldownTimer as CooldownTimerDefault } from '../MessageInput/CooldownTimer';\nimport { FileUploadPreview as FileUploadPreviewDefault } from '../MessageInput/FileUploadPreview';\nimport { ImageUploadPreview as ImageUploadPreviewDefault } from '../MessageInput/ImageUploadPreview';\nimport { InputButtons as InputButtonsDefault } from '../MessageInput/InputButtons';\nimport { MoreOptionsButton as MoreOptionsButtonDefault } from '../MessageInput/MoreOptionsButton';\nimport { SendButton as SendButtonDefault } from '../MessageInput/SendButton';\nimport { SendMessageDisallowedIndicator as SendMessageDisallowedIndicatorDefault } from '../MessageInput/SendMessageDisallowedIndicator';\nimport { ShowThreadMessageInChannelButton as ShowThreadMessageInChannelButtonDefault } from '../MessageInput/ShowThreadMessageInChannelButton';\nimport { UploadProgressIndicator as UploadProgressIndicatorDefault } from '../MessageInput/UploadProgressIndicator';\nimport { DateHeader as DateHeaderDefault } from '../MessageList/DateHeader';\nimport type { MessageType } from '../MessageList/hooks/useMessageList';\nimport { InlineDateSeparator as InlineDateSeparatorDefault } from '../MessageList/InlineDateSeparator';\nimport { InlineUnreadIndicator as InlineUnreadIndicatorDefault } from '../MessageList/InlineUnreadIndicator';\nimport { MessageList as MessageListDefault } from '../MessageList/MessageList';\nimport { MessageSystem as MessageSystemDefault } from '../MessageList/MessageSystem';\nimport { NetworkDownIndicator as NetworkDownIndicatorDefault } from '../MessageList/NetworkDownIndicator';\nimport { ScrollToBottomButton as ScrollToBottomButtonDefault } from '../MessageList/ScrollToBottomButton';\nimport { TypingIndicator as TypingIndicatorDefault } from '../MessageList/TypingIndicator';\nimport { TypingIndicatorContainer as TypingIndicatorContainerDefault } from '../MessageList/TypingIndicatorContainer';\nimport { OverlayReactionList as OverlayReactionListDefault } from '../MessageOverlay/OverlayReactionList';\nimport { Reply as ReplyDefault } from '../Reply/Reply';\n\nconst styles = StyleSheet.create({\n selectChannel: { fontWeight: 'bold', padding: 16 },\n});\n\nexport const reactionData: ReactionData[] = [\n {\n Icon: LoveReaction,\n type: 'love',\n },\n {\n Icon: ThumbsUpReaction,\n type: 'like',\n },\n {\n Icon: ThumbsDownReaction,\n type: 'sad',\n },\n {\n Icon: LOLReaction,\n type: 'haha',\n },\n {\n Icon: WutReaction,\n type: 'wow',\n },\n];\n\n/**\n * If count of unread messages is less than 4, then no need to scroll to first unread message,\n * since first unread message will be in visible frame anyways.\n */\nconst scrollToFirstUnreadThreshold = 4;\n\nconst defaultThrottleInterval = 500;\nconst defaultDebounceInterval = 500;\nconst throttleOptions = {\n leading: true,\n trailing: true,\n};\nconst debounceOptions = {\n leading: true,\n trailing: true,\n};\n\n/**\n * Number of unread messages to show in first frame, when channel loads at first\n * unread message. Only applicable if unread count > scrollToFirstUnreadThreshold.\n */\nconst unreadMessagesOnInitialLoadLimit = 2;\n\nexport type ChannelPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'channel'> &\n Partial<\n Pick<\n ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'EmptyStateIndicator'\n | 'enableMessageGroupingByUser'\n | 'enforceUniqueReaction'\n | 'giphyEnabled'\n | 'hideStickyDateHeader'\n | 'hideDateSeparators'\n | 'LoadingIndicator'\n | 'maxTimeBetweenGroupedMessages'\n | 'NetworkDownIndicator'\n | 'StickyHeader'\n >\n > &\n Pick<ChatContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'client'> &\n Partial<\n Omit<\n InputMessageInputContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'quotedMessage' | 'editing' | 'clearEditingState' | 'clearQuotedMessageState' | 'sendMessage'\n >\n > &\n Partial<\n Pick<\n SuggestionsContextValue<Co, Us>,\n 'AutoCompleteSuggestionHeader' | 'AutoCompleteSuggestionItem' | 'AutoCompleteSuggestionList'\n >\n > &\n Pick<TranslationContextValue, 't'> &\n Partial<\n Pick<\n PaginatedMessageListContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'messages' | 'loadingMore' | 'loadingMoreRecent'\n >\n > &\n UseChannelStateValue<At, Ch, Co, Ev, Me, Re, Us> &\n Partial<\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'AttachmentActions'\n | 'Card'\n | 'CardCover'\n | 'CardFooter'\n | 'CardHeader'\n | 'DateHeader'\n | 'deletedMessagesVisibilityType'\n | 'disableTypingIndicator'\n | 'dismissKeyboardOnMessageTouch'\n | 'FileAttachment'\n | 'FileAttachmentIcon'\n | 'FileAttachmentGroup'\n | 'FlatList'\n | 'forceAlignMessages'\n | 'formatDate'\n | 'Gallery'\n | 'Giphy'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleReaction'\n | 'handleQuotedReply'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'InlineDateSeparator'\n | 'InlineUnreadIndicator'\n | 'legacyImageViewerSwipeBehaviour'\n | 'markdownRules'\n | 'Message'\n | 'messageActions'\n | 'MessageAvatar'\n | 'MessageContent'\n | 'messageContentOrder'\n | 'MessageDeleted'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageList'\n | 'MessagePinnedHeader'\n | 'MessageReplies'\n | 'MessageRepliesAvatars'\n | 'MessageSimple'\n | 'MessageStatus'\n | 'MessageSystem'\n | 'MessageText'\n | 'myMessageTheme'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'ReactionList'\n | 'Reply'\n | 'ScrollToBottomButton'\n | 'selectReaction'\n | 'supportedReactions'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n | 'UrlPreview'\n >\n > &\n Partial<\n Pick<ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'allowThreadMessagesInChannel' | 'thread'>\n > & {\n shouldSyncChannel: boolean;\n /**\n * Additional props passed to keyboard avoiding view\n */\n additionalKeyboardAvoidingViewProps?: Partial<KeyboardAvoidingViewProps>;\n /**\n * Disables the channel UI if the channel is frozen\n */\n disableIfFrozenChannel?: boolean;\n /**\n * When true, disables the KeyboardCompatibleView wrapper\n *\n * Channel internally uses the [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/master/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n * component to adjust the height of Channel when the keyboard is opened or dismissed. This prop provides the ability to disable this functionality in case you\n * want to use [KeyboardAvoidingView](https://facebook.github.io/react-native/docs/keyboardavoidingview) or handle dismissal yourself.\n * KeyboardAvoidingView works well when your component occupies 100% of screen height, otherwise it may raise some issues.\n */\n disableKeyboardCompatibleView?: boolean;\n /**\n * Overrides the Stream default mark channel read request (Advanced usage only)\n * @param channel Channel object\n */\n doMarkReadRequest?: (channel: ChannelType<At, Ch, Co, Ev, Me, Re, Us>) => void;\n /**\n * Overrides the Stream default send message request (Advanced usage only)\n * @param channelId\n * @param messageData Message object\n */\n doSendMessageRequest?: (\n channelId: string,\n messageData: StreamMessage<At, Me, Us>,\n ) => Promise<SendMessageAPIResponse<At, Ch, Co, Me, Re, Us>>;\n /**\n * Overrides the Stream default update message request (Advanced usage only)\n * @param channelId\n * @param updatedMessage UpdatedMessage object\n */\n doUpdateMessageRequest?: (\n channelId: string,\n updatedMessage: Parameters<StreamChat<At, Ch, Co, Ev, Me, Re, Us>['updateMessage']>[0],\n ) => ReturnType<StreamChat<At, Ch, Co, Ev, Me, Re, Us>['updateMessage']>;\n /**\n * E.g. Once unread count exceeds 255, display unread count as 255+ instead of actual count.\n * Also 255 is the limit per Stream chat channel for unread count.\n */\n globalUnreadCountLimit?: number;\n /**\n * When true, messageList will be scrolled at first unread message, when opened.\n */\n initialScrollToFirstUnreadMessage?: boolean;\n keyboardBehavior?: KeyboardAvoidingViewProps['behavior'];\n /**\n * Custom wrapper component that handles height adjustment of Channel component when keyboard is opened or dismissed\n * Default component (accepts the same props): [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/master/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n *\n * **Example:**\n *\n * ```\n * <Channel\n * channel={channel}\n * KeyboardCompatibleView={(props) => {\n * return (\n * <KeyboardCompatibleView>\n * {props.children}\n * </KeyboardCompatibleView>\n * )\n * }}\n * />\n * ```\n */\n KeyboardCompatibleView?: React.ComponentType<KeyboardAvoidingViewProps>;\n keyboardVerticalOffset?: number;\n /**\n * Custom loading error indicator to override the Stream default\n */\n LoadingErrorIndicator?: React.ComponentType<LoadingErrorProps>;\n maxMessageLength?: number;\n messageId?: string;\n newMessageStateUpdateThrottleInterval?: number;\n overrideOwnCapabilities?: OwnCapabilitiesContextValue;\n stateUpdateThrottleInterval?: number;\n /**\n * Tells if channel is rendering a thread list\n */\n threadList?: boolean;\n };\n\nconst ChannelWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: PropsWithChildren<ChannelPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>>,\n) => {\n const {\n additionalKeyboardAvoidingViewProps,\n additionalTextInputProps,\n additionalTouchableProps,\n allowThreadMessagesInChannel = true,\n AttachButton = AttachButtonDefault,\n Attachment = AttachmentDefault,\n AttachmentActions = AttachmentActionsDefault,\n AutoCompleteSuggestionHeader = AutoCompleteSuggestionHeaderDefault,\n AutoCompleteSuggestionItem = AutoCompleteSuggestionItemDefault,\n AutoCompleteSuggestionList = AutoCompleteSuggestionListDefault,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n Card = CardDefault,\n CardCover,\n CardFooter,\n CardHeader,\n channel,\n children,\n client,\n CommandsButton = CommandsButtonDefault,\n compressImageQuality,\n CooldownTimer = CooldownTimerDefault,\n DateHeader = DateHeaderDefault,\n deletedMessagesVisibilityType = 'always',\n disableIfFrozenChannel = true,\n disableKeyboardCompatibleView = false,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch = true,\n doDocUploadRequest,\n doImageUploadRequest,\n doMarkReadRequest,\n doSendMessageRequest,\n doUpdateMessageRequest,\n EmptyStateIndicator = EmptyStateIndicatorDefault,\n enableMessageGroupingByUser = true,\n enforceUniqueReaction = false,\n FileAttachment = FileAttachmentDefault,\n FileAttachmentGroup = FileAttachmentGroupDefault,\n FileAttachmentIcon = FileIconDefault,\n FileUploadPreview = FileUploadPreviewDefault,\n FlatList = FlatListDefault,\n forceAlignMessages,\n formatDate,\n Gallery = GalleryDefault,\n Giphy = GiphyDefault,\n giphyEnabled,\n globalUnreadCountLimit = 255,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n hasCommands = true,\n hasFilePicker = true,\n hasImagePicker = true,\n hideDateSeparators = false,\n hideStickyDateHeader = false,\n ImageUploadPreview = ImageUploadPreviewDefault,\n initialScrollToFirstUnreadMessage = false,\n initialValue,\n InlineDateSeparator = InlineDateSeparatorDefault,\n InlineUnreadIndicator = InlineUnreadIndicatorDefault,\n Input,\n InputButtons = InputButtonsDefault,\n keyboardBehavior,\n KeyboardCompatibleView = KeyboardCompatibleViewDefault,\n keyboardVerticalOffset,\n legacyImageViewerSwipeBehaviour = false,\n LoadingErrorIndicator = LoadingErrorIndicatorDefault,\n LoadingIndicator = LoadingIndicatorDefault,\n loadingMore: loadingMoreProp,\n loadingMoreRecent: loadingMoreRecentProp,\n markdownRules,\n maxMessageLength: maxMessageLengthProp,\n maxNumberOfFiles = 10,\n maxTimeBetweenGroupedMessages,\n mentionAllAppUsersEnabled = false,\n mentionAllAppUsersQuery,\n members,\n Message = MessageDefault,\n messageActions,\n MessageAvatar = MessageAvatarDefault,\n MessageContent = MessageContentDefault,\n messageContentOrder = ['quoted_reply', 'gallery', 'files', 'text', 'attachments'],\n MessageDeleted = MessageDeletedDefault,\n MessageFooter = MessageFooterDefault,\n MessageHeader,\n messageId,\n MessageList = MessageListDefault,\n MessagePinnedHeader = MessagePinnedHeaderDefault,\n MessageReplies = MessageRepliesDefault,\n MessageRepliesAvatars = MessageRepliesAvatarsDefault,\n messages,\n MessageSimple = MessageSimpleDefault,\n MessageStatus = MessageStatusDefault,\n MessageSystem = MessageSystemDefault,\n MessageText,\n MoreOptionsButton = MoreOptionsButtonDefault,\n myMessageTheme,\n newMessageStateUpdateThrottleInterval = defaultThrottleInterval,\n NetworkDownIndicator = NetworkDownIndicatorDefault,\n numberOfLines = 5,\n onChangeText,\n onLongPressMessage,\n overrideOwnCapabilities,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList = OverlayReactionListDefault,\n ReactionList = ReactionListDefault,\n read,\n Reply = ReplyDefault,\n ScrollToBottomButton = ScrollToBottomButtonDefault,\n selectReaction,\n SendButton = SendButtonDefault,\n SendMessageDisallowedIndicator = SendMessageDisallowedIndicatorDefault,\n sendImageAsync = false,\n setInputRef,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n shouldSyncChannel,\n ShowThreadMessageInChannelButton = ShowThreadMessageInChannelButtonDefault,\n stateUpdateThrottleInterval = defaultThrottleInterval,\n StickyHeader,\n supportedReactions = reactionData,\n t,\n thread: threadProps,\n threadList,\n threadMessages,\n typing,\n TypingIndicator = TypingIndicatorDefault,\n TypingIndicatorContainer = TypingIndicatorContainerDefault,\n UploadProgressIndicator = UploadProgressIndicatorDefault,\n UrlPreview = CardDefault,\n watcherCount,\n watchers,\n } = props;\n\n const {\n theme: {\n channel: { selectChannel },\n colors: { black },\n },\n } = useTheme();\n const [deleted, setDeleted] = useState(false);\n const [editing, setEditing] = useState<boolean | MessageType<At, Ch, Co, Ev, Me, Re, Us>>(false);\n const [error, setError] = useState<Error | boolean>(false);\n const [hasMore, setHasMore] = useState(true);\n const [lastRead, setLastRead] =\n useState<ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>['lastRead']>();\n const [loading, setLoading] = useState(!channel?.state.messages.length);\n const [loadingMore, setLoadingMore] = useState(false);\n\n const [loadingMoreRecent, setLoadingMoreRecent] = useState(false);\n const [quotedMessage, setQuotedMessage] =\n useState<boolean | MessageType<At, Ch, Co, Ev, Me, Re, Us>>(false);\n const [thread, setThread] = useState<ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>['thread']>(\n threadProps || null,\n );\n const [threadHasMore, setThreadHasMore] = useState(true);\n const [threadLoadingMore, setThreadLoadingMore] = useState(false);\n\n const [syncingChannel, setSyncingChannel] = useState(false);\n\n const { setTargetedMessage, targetedMessage } = useTargetedMessage(messageId);\n\n const channelId = channel?.id || '';\n useEffect(() => {\n const initChannel = () => {\n if (!channel || !shouldSyncChannel) return;\n /**\n * Loading channel at first unread message requires channel to be initialized in the first place,\n * since we use read state on channel to decide what offset to load channel at.\n * Also there is no use case from UX perspective, why one would need loading uninitialized channel at particular message.\n * If the channel is not initiated, then we need to do channel.watch, which is more expensive for backend than channel.query.\n */\n if (!channel.initialized) {\n loadChannel();\n return;\n }\n\n if (messageId) {\n loadChannelAtMessage({ messageId });\n return;\n }\n\n if (\n initialScrollToFirstUnreadMessage &&\n channel.countUnread() > scrollToFirstUnreadThreshold\n ) {\n loadChannelAtFirstUnreadMessage();\n } else {\n loadChannel();\n }\n };\n\n initChannel();\n\n return () => {\n copyChannelState.cancel();\n copyReadState.cancel();\n copyTypingState.cancel();\n loadMoreFinished.cancel();\n loadMoreThreadFinished.cancel();\n };\n }, [channelId, messageId]);\n\n const threadPropsExists = !!threadProps;\n useEffect(() => {\n if (threadProps && shouldSyncChannel) {\n setThread(threadProps);\n if (channel && threadProps?.id) {\n setThreadMessages(channel.state.threads?.[threadProps.id] || []);\n }\n } else {\n setThread(null);\n }\n }, [threadPropsExists]);\n\n const handleAppBackground = useCallback(() => {\n if (channel) {\n channel.sendEvent({ parent_id: thread?.id, type: 'typing.stop' } as StreamEvent<\n At,\n Ch,\n Co,\n Ev,\n Me,\n Re,\n Us\n >);\n }\n }, [thread?.id, channelId]);\n\n useAppStateListener(undefined, handleAppBackground);\n\n /**\n * CHANNEL CONSTANTS\n */\n const isAdmin = client?.user?.role === 'admin' || channel?.state.membership.role === 'admin';\n\n const isModerator =\n channel?.state.membership.role === 'channel_moderator' ||\n channel?.state.membership.role === 'moderator';\n\n const isOwner = channel?.state.membership.role === 'owner';\n\n /**\n * CHANNEL METHODS\n */\n const markRead: ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>['markRead'] = useRef(\n throttle(\n () => {\n if (!channel || channel?.disconnected || !clientChannelConfig?.read_events) {\n return;\n }\n\n if (doMarkReadRequest) {\n doMarkReadRequest(channel);\n } else {\n logChatPromiseExecution(channel.markRead(), 'mark read');\n }\n },\n defaultThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyMessagesState = useRef(\n throttle(\n () => {\n if (channel) {\n setMessages([...channel.state.messages]);\n }\n },\n newMessageStateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyTypingState = useRef(\n throttle(\n () => {\n if (channel) {\n setTyping({ ...channel.state.typing });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyReadState = useRef(\n throttle(\n () => {\n if (channel) {\n setRead({ ...channel.state.read });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyChannelState = useRef(\n throttle(\n () => {\n setLoading(false);\n if (channel) {\n setMembers({ ...channel.state.members });\n setMessages([...channel.state.messages]);\n setRead({ ...channel.state.read });\n setTyping({ ...channel.state.typing });\n setWatcherCount(channel.state.watcher_count);\n setWatchers({ ...channel.state.watchers });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const connectionRecoveredHandler = () => {\n if (channel && shouldSyncChannel) {\n copyChannelState();\n if (thread) {\n setThreadMessages([...channel.state.threads[thread.id]]);\n }\n }\n };\n\n const connectionChangedHandler = (event: ConnectionChangeEvent) => {\n if (event.online && shouldSyncChannel) {\n resyncChannel();\n }\n };\n\n const handleEvent: EventHandler<At, Ch, Co, Ev, Me, Re, Us> = (event) => {\n if (shouldSyncChannel) {\n if (thread) {\n const updatedThreadMessages =\n (thread.id && channel && channel.state.threads[thread.id]) || threadMessages;\n setThreadMessages(updatedThreadMessages);\n }\n\n if (channel && thread && event.message?.id === thread.id) {\n const updatedThread = channel.state.formatMessage(event.message);\n setThread(updatedThread);\n }\n\n if (event.type === 'typing.start' || event.type === 'typing.stop') {\n copyTypingState();\n } else if (event.type === 'message.read') {\n copyReadState();\n } else if (event.type === 'message.new') {\n copyMessagesState();\n } else if (channel) {\n copyChannelState();\n }\n }\n };\n\n useEffect(() => {\n const channelSubscriptions: Array<ReturnType<ChannelType['on']>> = [];\n const clientSubscriptions: Array<ReturnType<StreamChat['on']>> = [];\n\n const subscribe = () => {\n if (!channel) return;\n\n /**\n * The more complex sync logic around internet connectivity (NetInfo) is part of Chat.tsx\n * listen to client.connection.recovered and all channel events\n */\n clientSubscriptions.push(client.on('connection.recovered', connectionRecoveredHandler));\n clientSubscriptions.push(client.on('connection.changed', connectionChangedHandler));\n clientSubscriptions.push(\n client.on('channel.deleted', (event) => {\n if (event.cid === channel.cid) {\n setDeleted(true);\n }\n }),\n );\n channelSubscriptions.push(channel.on(handleEvent));\n };\n\n subscribe();\n\n return () => {\n clientSubscriptions.forEach((s) => s.unsubscribe());\n channelSubscriptions.forEach((s) => s.unsubscribe());\n };\n }, [channelId, connectionChangedHandler, connectionRecoveredHandler, handleEvent]);\n\n const channelQueryCall = async (queryCall: () => void = () => null) => {\n setError(false);\n // Skips setting loading state when there are messages in the channel\n setLoading(!channel?.state.messages.length);\n\n try {\n await queryCall();\n setLastRead(new Date());\n setHasMore(true);\n copyChannelState();\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n setLastRead(new Date());\n }\n };\n\n /**\n * Loads channel at first unread channel.\n */\n const loadChannelAtFirstUnreadMessage = () => {\n if (!channel) return;\n const unreadCount = channel.countUnread();\n if (unreadCount <= scrollToFirstUnreadThreshold) return;\n\n channel.state.clearMessages();\n channel.state.setIsUpToDate(false);\n\n return channelQueryCall(async () => {\n /**\n * Stream only keeps unread count of channel upto 255. So once the count of unread messages reaches 255, we stop counting.\n * Thus we need to handle these two cases separately.\n */\n if (unreadCount < globalUnreadCountLimit) {\n /**\n * We want to ensure that first unread message appears in the first window frame, when message list loads.\n * If we assume that we have a exact count of unread messages, then first unread message is at offset = channel.countUnread().\n * So we will query 2 messages after (and including) first unread message, and 30 messages before first unread\n * message. So 2nd message in list is the first unread message. We can safely assume that 2nd message in list\n * will be visible to user when list loads.\n */\n const offset = unreadCount - unreadMessagesOnInitialLoadLimit;\n await query(offset, 30);\n\n /**\n * If the number of messages are not enough to fill the screen (we are making an assumption here that on overage 4 messages\n * are enough to fill the screen), then we need to fetch some more messages on recent side.\n */\n if (\n channel.state.messages.length &&\n channel.state.messages.length <= scrollToFirstUnreadThreshold &&\n !channel.state.isUpToDate\n ) {\n const mostRecentMessage = channel.state.messages[channel.state.messages.length - 1];\n await queryAfterMessage(mostRecentMessage.id, 10 - channel.state.messages.length);\n }\n } else {\n /**\n * If the unread count is 255, then we don't have exact unread count anymore, to determine the offset for querying messages.\n * In this case we are going to query messages using date params instead of offset-limit e.g., created_at_before_or_equal\n * So we query 30 messages before the last time user read the channel - channel.lastRead()\n */\n await channel.query({\n messages: {\n created_at_before_or_equal: channel.lastRead() || new Date(0),\n limit: 30,\n },\n });\n\n /**\n * If the number of messages are not enough to fill the screen (we are making an assumption here that on overage 4 messages\n * are enough to fill the screen), then we need to fetch some more messages on recent side.\n */\n if (\n channel.state.messages.length <= unreadMessagesOnInitialLoadLimit &&\n !channel.state.isUpToDate\n ) {\n if (channel.state.messages.length > 0) {\n const mostRecentMessage = channel.state.messages[channel.state.messages.length - 1];\n await queryAfterMessage(mostRecentMessage.id, 5);\n } else {\n /**\n * If we didn't get any messages, which means first unread message is the first ever message in channel.\n * So simply fetch some messages after the lastRead datetime.\n * We are keeping the limit as 10 here, as opposed to 30 in cases above. The reason being, we want the list\n * to be scrolled upto first unread message. So in this case we will need the scroll to start at top of the list.\n * React native provides a prop `initialScrollIndex` on FlatList, but it doesn't really work well\n * especially for dynamic sized content. So when the list loads, we are just going to manually scroll\n * to top of the list - flRef.current.scrollToEnd(). This autoscroll behavior is not great in general, but its less\n * bad for scrolling up 10 messages than scrolling up 30 messages.\n */\n await channel.query({\n messages: {\n created_at_after: channel.lastRead() || new Date(0),\n limit: 10,\n },\n });\n }\n }\n }\n });\n };\n\n /**\n * Loads channel at specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n * @param before Number of message to query before messageId\n * @param after Number of message to query after messageId\n */\n const loadChannelAtMessage: ChannelContextValue<\n At,\n Ch,\n Co,\n Ev,\n Me,\n Re,\n Us\n >['loadChannelAtMessage'] = ({ after = 2, before = 30, messageId }) =>\n channelQueryCall(async () => {\n await queryAtMessage({ after, before, messageId });\n\n if (messageId) {\n setTargetedMessage(messageId);\n }\n });\n\n const loadChannel = () =>\n channelQueryCall(async () => {\n if (!channel?.initialized || !channel.state.isUpToDate) {\n await channel?.watch();\n channel?.state.setIsUpToDate(true);\n }\n\n return;\n });\n\n const reloadThread = async () => {\n if (!channel || !thread?.id) return;\n\n setThreadLoadingMore(true);\n try {\n const parentID = thread.id;\n\n const limit = 50;\n channel.state.threads[parentID] = [];\n const queryResponse = await channel.getReplies(parentID, {\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n const { messages } = await channel.getMessagesById([parentID]);\n const [threadMessage] = messages;\n if (threadMessage) {\n const formattedMessage = channel.state.formatMessage(threadMessage);\n setThread(formattedMessage);\n }\n } catch (err) {\n console.warn('Thread loading request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const resyncChannel = async () => {\n if (!channel || syncingChannel) return;\n setSyncingChannel(true);\n\n setError(false);\n try {\n /**\n * Allow a buffer of 30 new messages, so that MessageList won't move its scroll position,\n * giving smooth user experience.\n */\n const state = await channel.watch({\n messages: {\n limit: messages.length + 30,\n },\n });\n\n const oldListTopMessage = messages[0];\n const oldListTopMessageId = messages[0]?.id;\n const oldListBottomMessage = messages[messages.length - 1];\n\n const newListTopMessage = state.messages[0];\n const newListBottomMessage = state.messages[state.messages.length - 1];\n\n if (\n !oldListTopMessage || // previous list was empty\n !oldListBottomMessage || // previous list was empty\n !newListTopMessage || // new list is truncated\n !newListBottomMessage // new list is truncated\n ) {\n /** Channel was truncated */\n channel.state.clearMessages();\n channel.state.setIsUpToDate(true);\n channel.state.addMessagesSorted(state.messages);\n copyChannelState();\n return;\n }\n\n const parseMessage = (message: typeof oldListTopMessage) =>\n ({\n ...message,\n created_at: message.created_at.toString(),\n pinned_at: message.pinned_at?.toString(),\n updated_at: message.updated_at?.toString(),\n } as unknown as MessageResponse<At, Ch, Co, Me, Re, Us>);\n\n const failedMessages = messages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage);\n\n const failedThreadMessages = thread\n ? threadMessages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage)\n : [];\n\n const oldListTopMessageCreatedAt = oldListTopMessage.created_at;\n const oldListBottomMessageCreatedAt = oldListBottomMessage.created_at;\n const newListTopMessageCreatedAt = newListTopMessage.created_at\n ? new Date(newListTopMessage.created_at)\n : new Date();\n const newListBottomMessageCreatedAt = newListBottomMessage?.created_at\n ? new Date(newListBottomMessage.created_at)\n : new Date();\n\n let finalMessages = [];\n\n if (\n oldListTopMessage &&\n oldListTopMessageCreatedAt &&\n oldListBottomMessageCreatedAt &&\n newListTopMessageCreatedAt < oldListTopMessageCreatedAt &&\n newListBottomMessageCreatedAt >= oldListBottomMessageCreatedAt\n ) {\n const index = state.messages.findIndex((message) => message.id === oldListTopMessageId);\n finalMessages = state.messages.slice(index);\n } else {\n finalMessages = state.messages;\n }\n\n channel.state.setIsUpToDate(true);\n\n channel.state.clearMessages();\n channel.state.addMessagesSorted(finalMessages);\n\n setHasMore(true);\n copyChannelState();\n\n if (failedMessages.length) {\n channel.state.addMessagesSorted(failedMessages);\n copyChannelState();\n }\n\n await reloadThread();\n\n if (thread && failedThreadMessages.length) {\n channel.state.addMessagesSorted(failedThreadMessages);\n setThreadMessages([...channel.state.threads[thread.id]]);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n }\n\n setSyncingChannel(false);\n };\n\n const reloadChannel = () =>\n channelQueryCall(async () => {\n await channel?.watch();\n channel?.state.setIsUpToDate(true);\n });\n\n /**\n * Makes a query to load messages in channel.\n */\n const query = async (offset = 0, limit = 30) => {\n if (!channel) return;\n channel.state.clearMessages();\n\n await channel.query({\n messages: {\n limit,\n offset,\n },\n watch: true,\n });\n channel.state.setIsUpToDate(offset === 0);\n };\n\n /**\n * Makes a query to load messages at particular message id.\n *\n * @param messageId Targeted message id\n * @param before Number of messages to load before messageId\n * @param after Number of messages to load after messageId\n */\n const queryAtMessage = async ({\n after = 10,\n before = 10,\n messageId,\n }: Parameters<ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>['loadChannelAtMessage']>[0]) => {\n if (!channel) return;\n channel.state.setIsUpToDate(false);\n channel.state.clearMessages();\n setMessages([...channel.state.messages]);\n if (!messageId) {\n await channel.query({\n messages: {\n limit: before,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(true);\n return;\n }\n\n await queryBeforeMessage(messageId, before);\n await queryAfterMessage(messageId, after);\n };\n\n /**\n * Makes a query to load messages before particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load\n */\n const queryBeforeMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n\n await channel.query({\n messages: {\n id_lt: messageId,\n limit,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(false);\n };\n\n /**\n * Makes a query to load messages later than particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load.\n */\n const queryAfterMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n const state = await channel.query({\n messages: {\n id_gte: messageId,\n limit,\n },\n watch: true,\n });\n\n if (state.messages.length < limit) {\n channel.state.setIsUpToDate(true);\n } else {\n channel.state.setIsUpToDate(false);\n }\n };\n\n // In case the channel is disconnected which may happen when channel is deleted,\n // underlying js client throws an error. Following function ensures that Channel component\n // won't result in error in such a case.\n const getChannelConfigSafely = () => {\n try {\n return channel?.getConfig();\n } catch (_) {\n return null;\n }\n };\n\n /**\n * Channel configs for use in disabling local functionality.\n * Nullish coalescing is used to give first priority to props to override\n * the server settings. Then priority to server settings to override defaults.\n */\n const clientChannelConfig = getChannelConfigSafely();\n\n /**\n * MESSAGE METHODS\n */\n\n const updateMessage: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>['updateMessage'] = (\n updatedMessage,\n extraState = {},\n ) => {\n if (channel) {\n channel.state.addMessageSorted(updatedMessage, true);\n if (thread && updatedMessage.parent_id) {\n extraState.threadMessages = channel.state.threads[updatedMessage.parent_id] || [];\n setThreadMessages(extraState.threadMessages);\n }\n\n setMessages([...channel.state.messages]);\n }\n };\n\n const replaceMessage = (\n oldMessage: MessageResponse<At, Ch, Co, Me, Re, Us>,\n newMessage: MessageResponse<At, Ch, Co, Me, Re, Us>,\n ) => {\n if (channel) {\n channel.state.removeMessage(oldMessage);\n channel.state.addMessageSorted(newMessage, true);\n if (thread && newMessage.parent_id) {\n const threadMessages = channel.state.threads[newMessage.parent_id] || [];\n setThreadMessages(threadMessages);\n }\n setMessages(channel.state.messages);\n }\n };\n\n const createMessagePreview = ({\n attachments,\n mentioned_users,\n parent_id,\n text,\n ...extraFields\n }: Partial<StreamMessage<At, Me, Us>>) => {\n const preview = {\n __html: text,\n attachments,\n created_at: new Date(),\n html: text,\n id: `${client.userID}-${generateRandomId()}`,\n mentioned_users:\n mentioned_users?.map((userId) => ({\n id: userId,\n })) || [],\n parent_id,\n reactions: [],\n status: MessageStatusTypes.SENDING,\n text,\n type: 'regular',\n user: {\n id: client.userID,\n ...client.user,\n },\n ...extraFields,\n } as unknown as MessageResponse<At, Ch, Co, Me, Re, Us>;\n\n /**\n * This is added to the message for local rendering prior to the message\n * being returned from the backend, it is removed when the message is sent\n * as quoted_message is a reserved field.\n */\n if (preview.quoted_message_id) {\n const quotedMessage = messages.find((message) => message.id === preview.quoted_message_id);\n\n preview.quoted_message = quotedMessage as MessageResponse<\n At,\n Ch,\n Co,\n Me,\n Re,\n Us\n >['quoted_message'];\n }\n return preview;\n };\n\n const sendMessageRequest = async (\n message: MessageResponse<At, Ch, Co, Me, Re, Us>,\n retrying?: boolean,\n ) => {\n const {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n __html,\n attachments,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n created_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n html,\n id,\n mentioned_users,\n parent_id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n quoted_message,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n reactions,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n status,\n text,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n type,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n updated_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n user,\n ...extraFields\n } = message;\n\n const messageData = {\n attachments,\n id: retrying ? undefined : id,\n mentioned_users: mentioned_users?.map((mentionedUser) => mentionedUser.id) || [],\n parent_id,\n text,\n ...extraFields,\n } as StreamMessage<At, Me, Us>;\n\n try {\n let messageResponse = {} as SendMessageAPIResponse<At, Ch, Co, Me, Re, Us>;\n\n if (doSendMessageRequest) {\n messageResponse = await doSendMessageRequest(channel?.cid || '', messageData);\n } else if (channel) {\n messageResponse = await channel.sendMessage(messageData);\n }\n if (messageResponse.message) {\n messageResponse.message.status = MessageStatusTypes.RECEIVED;\n if (retrying) {\n replaceMessage(message, messageResponse.message);\n } else {\n updateMessage(messageResponse.message);\n }\n }\n } catch (err) {\n console.log(err);\n message.status = MessageStatusTypes.FAILED;\n updateMessage(message);\n }\n };\n\n const sendMessage: InputMessageInputContextValue<At, Ch, Co, Ev, Me, Re, Us>['sendMessage'] =\n async (message) => {\n if (channel?.state?.filterErrorMessages) {\n channel.state.filterErrorMessages();\n }\n\n const messagePreview = createMessagePreview({\n ...message,\n attachments: message.attachments || [],\n });\n\n if (!channel?.state.isUpToDate) {\n await reloadChannel();\n }\n\n updateMessage(messagePreview, {\n commands: [],\n messageInput: '',\n });\n\n await sendMessageRequest(messagePreview);\n };\n\n const retrySendMessage: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>['retrySendMessage'] =\n async (message) => {\n const statusPendingMessage = {\n ...message,\n status: MessageStatusTypes.SENDING,\n };\n\n updateMessage(statusPendingMessage);\n await sendMessageRequest(statusPendingMessage, true);\n };\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreFinished = useRef(\n debounce(\n (\n updatedHasMore: boolean,\n newMessages: ChannelState<At, Ch, Co, Ev, Me, Re, Us>['messages'],\n ) => {\n setLoadingMore(false);\n setError(false);\n setHasMore(updatedHasMore);\n setMessages(newMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const loadMore: PaginatedMessageListContextValue<At, Ch, Co, Ev, Me, Re, Us>['loadMore'] = async (\n limit = 20,\n ) => {\n if (loadingMore || hasMore === false) {\n return;\n }\n setLoadingMore(true);\n\n if (!messages.length) {\n return setLoadingMore(false);\n }\n\n const oldestMessage = messages && messages[0];\n\n if (oldestMessage && oldestMessage.status !== MessageStatusTypes.RECEIVED) {\n return setLoadingMore(false);\n }\n\n const oldestID = oldestMessage && oldestMessage.id;\n\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: { id_lt: oldestID, limit },\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n loadMoreFinished(updatedHasMore, channel.state.messages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMore(false);\n throw err;\n }\n };\n\n const loadMoreRecent: PaginatedMessageListContextValue<\n At,\n Ch,\n Co,\n Ev,\n Me,\n Re,\n Us\n >['loadMoreRecent'] = async (limit = 5) => {\n if (channel?.state.isUpToDate) {\n return;\n }\n\n setLoadingMoreRecent(true);\n\n const recentMessage = messages[messages.length - 1];\n\n if (recentMessage?.status !== MessageStatusTypes.RECEIVED) {\n setLoadingMoreRecent(false);\n return;\n }\n\n try {\n if (channel) {\n await queryAfterMessage(recentMessage.id, limit);\n loadMoreRecentFinished(channel.state.messages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMoreRecent(false);\n throw err;\n }\n };\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreRecentFinished = useRef(\n debounce(\n (newMessages: ChannelState<At, Ch, Co, Ev, Me, Re, Us>['messages']) => {\n setLoadingMoreRecent(false);\n setMessages(newMessages);\n setError(false);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const editMessage: InputMessageInputContextValue<At, Ch, Co, Ev, Me, Re, Us>['editMessage'] = (\n updatedMessage,\n ) =>\n doUpdateMessageRequest\n ? doUpdateMessageRequest(channel?.cid || '', updatedMessage)\n : client.updateMessage(updatedMessage);\n\n const setEditingState: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>['setEditingState'] = (\n message,\n ) => {\n setEditing(message);\n };\n\n const setQuotedMessageState: MessagesContextValue<\n At,\n Ch,\n Co,\n Ev,\n Me,\n Re,\n Us\n >['setQuotedMessageState'] = (message) => {\n setQuotedMessage(message);\n };\n\n const clearEditingState: InputMessageInputContextValue<\n At,\n Ch,\n Co,\n Ev,\n Me,\n Re,\n Us\n >['clearEditingState'] = () => setEditing(false);\n\n const clearQuotedMessageState: InputMessageInputContextValue<\n At,\n Ch,\n Co,\n Ev,\n Me,\n Re,\n Us\n >['clearQuotedMessageState'] = () => setQuotedMessage(false);\n\n const removeMessage: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>['removeMessage'] = (\n message,\n ) => {\n if (channel) {\n channel.state.removeMessage(message);\n setMessages(channel.state.messages);\n if (thread) {\n setThreadMessages(channel.state.threads[thread.id] || []);\n }\n }\n };\n\n /**\n * THREAD METHODS\n */\n const openThread: ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>['openThread'] = (message) => {\n const newThreadMessages = message?.id ? channel?.state?.threads[message.id] || [] : [];\n setThread(message);\n setThreadMessages(newThreadMessages);\n };\n\n const closeThread: ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>['closeThread'] =\n useCallback(() => {\n setThread(null);\n setThreadMessages([]);\n }, [setThread, setThreadMessages]);\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreThreadFinished = useRef(\n debounce(\n (\n newThreadHasMore: boolean,\n updatedThreadMessages: ChannelState<At, Ch, Co, Ev, Me, Re, Us>['threads'][string],\n ) => {\n setThreadHasMore(newThreadHasMore);\n setThreadLoadingMore(false);\n setThreadMessages(updatedThreadMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const loadMoreThread: ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>['loadMoreThread'] =\n async () => {\n if (threadLoadingMore || !thread?.id) {\n return;\n }\n setThreadLoadingMore(true);\n\n try {\n if (channel) {\n const parentID = thread.id;\n\n /**\n * In the channel is re-initializing, then threads may get wiped out during the process\n * (check `addMessagesSorted` method on channel.state). In those cases, we still want to\n * preserve the messages on active thread, so lets simply copy messages from UI state to\n * `channel.state`.\n */\n channel.state.threads[parentID] = threadMessages;\n const oldestMessageID = threadMessages?.[0]?.id;\n\n const limit = 50;\n const queryResponse = await channel.getReplies(parentID, {\n id_lt: oldestMessageID,\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const ownCapabilitiesContext = useCreateOwnCapabilitiesContext({\n channel,\n overrideCapabilities: overrideOwnCapabilities,\n });\n\n const channelContext = useCreateChannelContext({\n channel,\n disabled: !!channel?.data?.frozen && disableIfFrozenChannel,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n enforceUniqueReaction,\n error,\n giphyEnabled:\n giphyEnabled ??\n !!(clientChannelConfig?.commands || [])?.some((command) => command.name === 'giphy'),\n hideDateSeparators,\n hideStickyDateHeader,\n isAdmin,\n isChannelActive: shouldSyncChannel,\n isModerator,\n isOwner,\n lastRead,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n maxTimeBetweenGroupedMessages,\n members,\n NetworkDownIndicator,\n read,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setLastRead,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n threadList,\n watcherCount,\n watchers,\n });\n\n const inputMessageInputContext = useCreateInputMessageInputContext({\n additionalTextInputProps,\n AttachButton,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n channelId,\n clearEditingState,\n clearQuotedMessageState,\n CommandsButton,\n compressImageQuality,\n CooldownTimer,\n doDocUploadRequest,\n doImageUploadRequest,\n editing,\n editMessage,\n FileUploadPreview,\n hasCommands,\n hasFilePicker,\n hasImagePicker,\n ImageUploadPreview,\n initialValue,\n Input,\n InputButtons,\n maxMessageLength: maxMessageLengthProp ?? clientChannelConfig?.max_message_length ?? undefined,\n maxNumberOfFiles,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n MoreOptionsButton,\n numberOfLines,\n onChangeText,\n quotedMessage,\n SendButton,\n sendImageAsync,\n sendMessage,\n SendMessageDisallowedIndicator,\n setInputRef,\n setQuotedMessageState,\n ShowThreadMessageInChannelButton,\n UploadProgressIndicator,\n });\n\n const messageListContext = useCreatePaginatedMessageListContext({\n channelId,\n hasMore,\n loadingMore: loadingMoreProp !== undefined ? loadingMoreProp : loadingMore,\n loadingMoreRecent:\n loadingMoreRecentProp !== undefined ? loadingMoreRecentProp : loadingMoreRecent,\n loadMore,\n loadMoreRecent,\n messages,\n setLoadingMore,\n setLoadingMoreRecent,\n });\n\n const messagesContext = useCreateMessagesContext({\n additionalTouchableProps,\n Attachment,\n AttachmentActions,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n channelId,\n DateHeader,\n deletedMessagesVisibilityType,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n Giphy,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessagePinnedHeader,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n myMessageTheme,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n ReactionList,\n removeMessage,\n Reply,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n targetedMessage,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n });\n\n const suggestionsContext = {\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n };\n\n const threadContext = useCreateThreadContext({\n allowThreadMessagesInChannel,\n closeThread,\n loadMoreThread,\n openThread,\n reloadThread,\n setThreadLoadingMore,\n thread,\n threadHasMore,\n threadLoadingMore,\n threadMessages,\n });\n\n const typingContext = useCreateTypingContext({\n typing,\n });\n\n // TODO: replace the null view with appropriate message. Currently this is waiting a design decision.\n if (deleted) return null;\n\n if (!channel || (error && messages.length === 0)) {\n return <LoadingErrorIndicator error={error} listType='message' retry={reloadChannel} />;\n }\n\n if (!channel?.cid || !channel.watch) {\n return (\n <Text style={[styles.selectChannel, { color: black }, selectChannel]} testID='no-channel'>\n {t('Please select a channel first')}\n </Text>\n );\n }\n\n return (\n <KeyboardCompatibleView\n behavior={keyboardBehavior}\n enabled={!disableKeyboardCompatibleView}\n keyboardVerticalOffset={keyboardVerticalOffset}\n {...additionalKeyboardAvoidingViewProps}\n >\n <ChannelProvider<At, Ch, Co, Ev, Me, Re, Us> value={channelContext}>\n <OwnCapabilitiesProvider value={ownCapabilitiesContext}>\n <TypingProvider<At, Ch, Co, Ev, Me, Re, Us> value={typingContext}>\n <PaginatedMessageListProvider<At, Ch, Co, Ev, Me, Re, Us> value={messageListContext}>\n <MessagesProvider<At, Ch, Co, Ev, Me, Re, Us> value={messagesContext}>\n <ThreadProvider<At, Ch, Co, Ev, Me, Re, Us> value={threadContext}>\n <SuggestionsProvider<Co, Us> value={suggestionsContext}>\n <MessageInputProvider<At, Ch, Co, Ev, Me, Re, Us>\n value={inputMessageInputContext}\n >\n <View style={{ height: '100%' }}>{children}</View>\n </MessageInputProvider>\n </SuggestionsProvider>\n </ThreadProvider>\n </MessagesProvider>\n </PaginatedMessageListProvider>\n </TypingProvider>\n </OwnCapabilitiesProvider>\n </ChannelProvider>\n </KeyboardCompatibleView>\n );\n};\n\nexport type ChannelProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<Omit<ChannelPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'channel'>> &\n Pick<ChannelPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'channel'>;\n\n/**\n *\n * The wrapper component for a chat channel. Channel needs to be placed inside a Chat component\n * to receive the StreamChat client instance. MessageList, Thread, and MessageInput must be\n * children of the Channel component to receive the ChannelContext.\n *\n * @example ./Channel.md\n */\nexport const Channel = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: PropsWithChildren<ChannelProps<At, Ch, Co, Ev, Me, Re, Us>>,\n) => {\n const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { t } = useTranslationContext();\n\n const shouldSyncChannel = props.thread?.id ? !!props.threadList : true;\n\n const {\n members,\n messages,\n read,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n threadMessages,\n typing,\n watcherCount,\n watchers,\n } = useChannelState<At, Ch, Co, Ev, Me, Re, Us>(\n props.channel,\n props.threadList ? props.thread?.id : undefined,\n );\n\n return (\n <ChannelWithContext<At, Ch, Co, Ev, Me, Re, Us>\n {...{\n client,\n t,\n }}\n {...props}\n shouldSyncChannel={shouldSyncChannel}\n {...{\n members,\n messages: props.messages || messages,\n read,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n threadMessages,\n typing,\n watcherCount,\n watchers,\n }}\n />\n );\n};\n"]}
|