stream-chat-react-native-core 5.11.3-beta.1 → 5.11.3-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Attachment/Attachment.js +3 -21
- 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/AudioAttachment.js.map +1 -1
- package/lib/commonjs/components/Attachment/Card.js.map +1 -1
- package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
- package/lib/commonjs/components/Attachment/FileAttachmentGroup.js.map +1 -1
- package/lib/commonjs/components/Attachment/FileIcon.js.map +1 -1
- package/lib/commonjs/components/Attachment/Gallery.js +1 -7
- package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
- package/lib/commonjs/components/Attachment/GalleryImage.js.map +1 -1
- package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
- package/lib/commonjs/components/Attachment/ImageLoadingFailedIndicator.js.map +1 -1
- package/lib/commonjs/components/Attachment/ImageLoadingIndicator.js.map +1 -1
- package/lib/commonjs/components/Attachment/VideoThumbnail.js.map +1 -1
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -1
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js.map +1 -1
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js.map +1 -1
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js.map +1 -1
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -1
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnailGrid.js.map +1 -1
- package/lib/commonjs/components/Attachment/utils/getAspectRatio.js.map +1 -1
- package/lib/commonjs/components/Attachment/utils/getGalleryImageBorderRadius.js.map +1 -1
- package/lib/commonjs/components/Attachment/utils/getGiphyMimeType.js.map +1 -1
- package/lib/commonjs/components/Attachment/utils/openUrlSafely.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +1 -7
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerError.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerErrorImage.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentSelectionBar.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/CameraSelectorIcon.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/FileSelectorIcon.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/ImageOverlaySelectedComponent.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/ImageSelectorIcon.js.map +1 -1
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js.map +1 -1
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -1
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -1
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
- package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
- package/lib/commonjs/components/Avatar/GroupAvatar.js.map +1 -1
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateThreadContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateTypingContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useTargetedMessage.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelListHeaderErrorIndicator.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelListLoadingIndicator.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelListMessenger.js +1 -7
- package/lib/commonjs/components/ChannelList/ChannelListMessenger.js.map +1 -1
- package/lib/commonjs/components/ChannelList/Skeleton.js.map +1 -1
- 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.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
- 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.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/commonjs/components/ChannelList/utils.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js.map +1 -1
- 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.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/lib/commonjs/components/Chat/Chat.js.map +1 -1
- package/lib/commonjs/components/Chat/hooks/handleEventToSyncDB.js.map +1 -1
- package/lib/commonjs/components/Chat/hooks/useAppSettings.js.map +1 -1
- package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
- package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
- package/lib/commonjs/components/Chat/hooks/useMutedUsers.js.map +1 -1
- package/lib/commonjs/components/Chat/hooks/useSyncDatabase.js.map +1 -1
- package/lib/commonjs/components/ImageBackground.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryOverlay.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/hooks/useImageGalleryGestures.js.map +1 -1
- package/lib/commonjs/components/Indicators/EmptyStateIndicator.js.map +1 -1
- package/lib/commonjs/components/Indicators/LoadingDot.js.map +1 -1
- package/lib/commonjs/components/Indicators/LoadingDots.js.map +1 -1
- package/lib/commonjs/components/Indicators/LoadingErrorIndicator.js.map +1 -1
- package/lib/commonjs/components/Indicators/LoadingIndicator.js.map +1 -1
- package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
- package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleViewFC.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +2 -14
- package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageReplies.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +1 -7
- package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js +1 -7
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js.map +1 -1
- package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
- package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
- package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
- package/lib/commonjs/components/Message/utils/messageActions.js.map +1 -1
- package/lib/commonjs/components/MessageInput/AttachButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/CommandsButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/CooldownTimer.js.map +1 -1
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js +1 -7
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
- package/lib/commonjs/components/MessageInput/InputButtons.js +1 -7
- package/lib/commonjs/components/MessageInput/InputButtons.js.map +1 -1
- package/lib/commonjs/components/MessageInput/MessageInput.js +2 -14
- package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/commonjs/components/MessageInput/MoreOptionsButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/SendButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js.map +1 -1
- package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/UploadProgressIndicator.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/InputEditingStateHeader.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/InputGiphySearch.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/InputReplyStateHeader.js.map +1 -1
- package/lib/commonjs/components/MessageInput/hooks/useCooldown.js.map +1 -1
- package/lib/commonjs/components/MessageInput/hooks/useCountdown.js.map +1 -1
- package/lib/commonjs/components/MessageList/DateHeader.js.map +1 -1
- package/lib/commonjs/components/MessageList/InlineDateSeparator.js.map +1 -1
- package/lib/commonjs/components/MessageList/InlineLoadingMoreIndicator.js.map +1 -1
- package/lib/commonjs/components/MessageList/InlineLoadingMoreRecentIndicator.js.map +1 -1
- package/lib/commonjs/components/MessageList/InlineLoadingMoreThreadIndicator.js.map +1 -1
- package/lib/commonjs/components/MessageList/InlineUnreadIndicator.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +4 -28
- 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/NetworkDownIndicator.js.map +1 -1
- package/lib/commonjs/components/MessageList/ScrollToBottomButton.js.map +1 -1
- package/lib/commonjs/components/MessageList/TypingIndicator.js.map +1 -1
- package/lib/commonjs/components/MessageList/TypingIndicatorContainer.js.map +1 -1
- package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/hooks/useTypingString.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/filterTypingUsers.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getDateSeparators.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getGroupStyles.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getReadStates.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/MessageActionList.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/OverlayReactions.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/OverlayReactionsAvatar.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +1 -1
- package/lib/commonjs/components/ProgressControl/ProgressControl.js.map +1 -1
- package/lib/commonjs/components/RTLComponents/WritingDirectionAwareText.js.map +1 -1
- package/lib/commonjs/components/Reply/Reply.js.map +1 -1
- package/lib/commonjs/components/Spinner/Spinner.js.map +1 -1
- package/lib/commonjs/components/Thread/Thread.js.map +1 -1
- package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
- package/lib/commonjs/components/docs/data.js.map +1 -1
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -1
- package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
- package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
- package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
- package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
- package/lib/commonjs/contexts/channelsStateContext/useChannelState.js.map +1 -1
- package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
- package/lib/commonjs/contexts/debugContext/DebugContext.js.map +1 -1
- package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
- package/lib/commonjs/contexts/index.js.map +1 -1
- package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js.map +1 -1
- package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +8 -8
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
- package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
- package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.js.map +1 -1
- package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js +1 -7
- package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +1 -1
- package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
- package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js.map +1 -1
- package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
- package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/ThemeContext.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/contexts/threadContext/ThreadContext.js.map +1 -1
- package/lib/commonjs/contexts/translationContext/TranslationContext.js.map +1 -1
- package/lib/commonjs/contexts/typingContext/TypingContext.js.map +1 -1
- package/lib/commonjs/contexts/utils/defaultBaseContextValue.js.map +1 -1
- package/lib/commonjs/contexts/utils/getDisplayName.js.map +1 -1
- package/lib/commonjs/contexts/utils/isTestEnvironment.js.map +1 -1
- package/lib/commonjs/emoji-data/compile.js.map +1 -1
- package/lib/commonjs/emoji-data/compiled.js.map +1 -1
- package/lib/commonjs/emoji-data/index.js.map +1 -1
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/hooks/useAppStateListener.js.map +1 -1
- package/lib/commonjs/hooks/useIsMountedRef.js.map +1 -1
- package/lib/commonjs/hooks/useLoadingImage.js.map +1 -1
- package/lib/commonjs/hooks/useStreami18n.js.map +1 -1
- package/lib/commonjs/hooks/useTranslatedMessage.js.map +1 -1
- package/lib/commonjs/icons/ArrowRight.js.map +1 -1
- package/lib/commonjs/icons/AtMentions.js.map +1 -1
- package/lib/commonjs/icons/Attach.js.map +1 -1
- package/lib/commonjs/icons/Audio.js.map +1 -1
- package/lib/commonjs/icons/CSV.js.map +1 -1
- package/lib/commonjs/icons/Camera.js.map +1 -1
- package/lib/commonjs/icons/Check.js.map +1 -1
- package/lib/commonjs/icons/CheckAll.js.map +1 -1
- package/lib/commonjs/icons/CheckSend.js.map +1 -1
- package/lib/commonjs/icons/CircleClose.js.map +1 -1
- package/lib/commonjs/icons/CirclePlus.js.map +1 -1
- package/lib/commonjs/icons/CircleRight.js.map +1 -1
- package/lib/commonjs/icons/Close.js.map +1 -1
- package/lib/commonjs/icons/Copy.js.map +1 -1
- package/lib/commonjs/icons/CurveLineLeftUp.js.map +1 -1
- package/lib/commonjs/icons/DOC.js.map +1 -1
- package/lib/commonjs/icons/DOCX.js.map +1 -1
- package/lib/commonjs/icons/Delete.js.map +1 -1
- package/lib/commonjs/icons/Down.js.map +1 -1
- package/lib/commonjs/icons/DownloadArrow.js.map +1 -1
- package/lib/commonjs/icons/DownloadCloud.js.map +1 -1
- package/lib/commonjs/icons/Edit.js.map +1 -1
- package/lib/commonjs/icons/Error.js.map +1 -1
- package/lib/commonjs/icons/Eye.js.map +1 -1
- package/lib/commonjs/icons/Flag.js.map +1 -1
- package/lib/commonjs/icons/Folder.js.map +1 -1
- package/lib/commonjs/icons/GenericFile.js.map +1 -1
- package/lib/commonjs/icons/GiphyIcon.js.map +1 -1
- package/lib/commonjs/icons/Grid.js.map +1 -1
- package/lib/commonjs/icons/Group.js.map +1 -1
- package/lib/commonjs/icons/HTML.js.map +1 -1
- package/lib/commonjs/icons/Imgur.js.map +1 -1
- package/lib/commonjs/icons/LOLReaction.js.map +1 -1
- package/lib/commonjs/icons/Lightning.js.map +1 -1
- package/lib/commonjs/icons/Link.js.map +1 -1
- package/lib/commonjs/icons/Loading.js.map +1 -1
- package/lib/commonjs/icons/Logo.js.map +1 -1
- package/lib/commonjs/icons/LoveReaction.js.map +1 -1
- package/lib/commonjs/icons/MD.js.map +1 -1
- package/lib/commonjs/icons/MailOpen.js.map +1 -1
- package/lib/commonjs/icons/MenuPointHorizontal.js.map +1 -1
- package/lib/commonjs/icons/MenuPointVertical.js.map +1 -1
- package/lib/commonjs/icons/MessageFlag.js.map +1 -1
- package/lib/commonjs/icons/MessageIcon.js.map +1 -1
- package/lib/commonjs/icons/Mute.js.map +1 -1
- package/lib/commonjs/icons/Notification.js.map +1 -1
- package/lib/commonjs/icons/ODT.js.map +1 -1
- package/lib/commonjs/icons/PDF.js.map +1 -1
- package/lib/commonjs/icons/PPT.js.map +1 -1
- package/lib/commonjs/icons/PPTX.js.map +1 -1
- package/lib/commonjs/icons/Pause.js.map +1 -1
- package/lib/commonjs/icons/Picture.js.map +1 -1
- package/lib/commonjs/icons/Pin.js.map +1 -1
- package/lib/commonjs/icons/PinHeader.js.map +1 -1
- package/lib/commonjs/icons/Play.js.map +1 -1
- package/lib/commonjs/icons/RAR.js.map +1 -1
- package/lib/commonjs/icons/RTF.js.map +1 -1
- package/lib/commonjs/icons/Recorder.js.map +1 -1
- package/lib/commonjs/icons/Refresh.js.map +1 -1
- package/lib/commonjs/icons/SEVEN_Z.js.map +1 -1
- package/lib/commonjs/icons/Search.js.map +1 -1
- package/lib/commonjs/icons/SendRight.js.map +1 -1
- package/lib/commonjs/icons/SendUp.js.map +1 -1
- package/lib/commonjs/icons/Share.js.map +1 -1
- package/lib/commonjs/icons/ShareRightArrow.js.map +1 -1
- package/lib/commonjs/icons/Smile.js.map +1 -1
- package/lib/commonjs/icons/Sound.js.map +1 -1
- package/lib/commonjs/icons/TAR.js.map +1 -1
- package/lib/commonjs/icons/TXT.js.map +1 -1
- package/lib/commonjs/icons/ThreadReply.js.map +1 -1
- package/lib/commonjs/icons/ThumbsDownReaction.js.map +1 -1
- package/lib/commonjs/icons/ThumbsUpReaction.js.map +1 -1
- package/lib/commonjs/icons/Time.js.map +1 -1
- package/lib/commonjs/icons/Unknown.js.map +1 -1
- package/lib/commonjs/icons/Unpin.js.map +1 -1
- package/lib/commonjs/icons/User.js.map +1 -1
- package/lib/commonjs/icons/UserAdd.js.map +1 -1
- package/lib/commonjs/icons/UserAdmin.js.map +1 -1
- package/lib/commonjs/icons/UserDelete.js.map +1 -1
- package/lib/commonjs/icons/UserMinus.js.map +1 -1
- package/lib/commonjs/icons/Video.js.map +1 -1
- package/lib/commonjs/icons/Warning.js.map +1 -1
- package/lib/commonjs/icons/WutReaction.js.map +1 -1
- package/lib/commonjs/icons/XLS.js.map +1 -1
- package/lib/commonjs/icons/XLSX.js.map +1 -1
- package/lib/commonjs/icons/ZIP.js.map +1 -1
- package/lib/commonjs/icons/index.js.map +1 -1
- package/lib/commonjs/icons/utils/base.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/init.js.map +1 -1
- package/lib/commonjs/mock-builders/DB/consts.js.map +1 -1
- package/lib/commonjs/mock-builders/DB/mock.js.map +1 -1
- package/lib/commonjs/mock-builders/api/channelMocks.js.map +1 -1
- package/lib/commonjs/mock-builders/api/deleteMessage.js.map +1 -1
- package/lib/commonjs/mock-builders/api/deleteReaction.js.map +1 -1
- package/lib/commonjs/mock-builders/api/error.js.map +1 -1
- package/lib/commonjs/mock-builders/api/getOrCreateChannel.js.map +1 -1
- package/lib/commonjs/mock-builders/api/queryChannels.js.map +1 -1
- package/lib/commonjs/mock-builders/api/queryMembers.js.map +1 -1
- package/lib/commonjs/mock-builders/api/sendMessage.js.map +1 -1
- package/lib/commonjs/mock-builders/api/sendReaction.js.map +1 -1
- package/lib/commonjs/mock-builders/api/threadReplies.js.map +1 -1
- package/lib/commonjs/mock-builders/api/useMockedApis.js.map +1 -1
- package/lib/commonjs/mock-builders/api/utils.js.map +1 -1
- package/lib/commonjs/mock-builders/event/channelDeleted.js.map +1 -1
- package/lib/commonjs/mock-builders/event/channelHidden.js.map +1 -1
- package/lib/commonjs/mock-builders/event/channelTruncated.js.map +1 -1
- package/lib/commonjs/mock-builders/event/channelUpdated.js.map +1 -1
- package/lib/commonjs/mock-builders/event/connectionChanged.js.map +1 -1
- package/lib/commonjs/mock-builders/event/connectionRecovered.js.map +1 -1
- package/lib/commonjs/mock-builders/event/memberAdded.js.map +1 -1
- package/lib/commonjs/mock-builders/event/memberRemoved.js.map +1 -1
- package/lib/commonjs/mock-builders/event/memberUpdated.js.map +1 -1
- package/lib/commonjs/mock-builders/event/messageDeleted.js.map +1 -1
- package/lib/commonjs/mock-builders/event/messageNew.js.map +1 -1
- package/lib/commonjs/mock-builders/event/messageRead.js.map +1 -1
- package/lib/commonjs/mock-builders/event/messageUpdated.js.map +1 -1
- package/lib/commonjs/mock-builders/event/notificationAddedToChannel.js.map +1 -1
- package/lib/commonjs/mock-builders/event/notificationMessageNew.js.map +1 -1
- package/lib/commonjs/mock-builders/event/notificationMutesUpdated.js.map +1 -1
- package/lib/commonjs/mock-builders/event/notificationRemovedFromChannel.js.map +1 -1
- package/lib/commonjs/mock-builders/event/reactionDeleted.js.map +1 -1
- package/lib/commonjs/mock-builders/event/reactionNew.js.map +1 -1
- package/lib/commonjs/mock-builders/event/reactionUpdated.js.map +1 -1
- package/lib/commonjs/mock-builders/event/typing.js.map +1 -1
- package/lib/commonjs/mock-builders/event/userPresence.js.map +1 -1
- package/lib/commonjs/mock-builders/event/userUpdated.js.map +1 -1
- package/lib/commonjs/mock-builders/generator/attachment.js.map +1 -1
- package/lib/commonjs/mock-builders/generator/channel.js.map +1 -1
- package/lib/commonjs/mock-builders/generator/member.js.map +1 -1
- package/lib/commonjs/mock-builders/generator/message.js.map +1 -1
- package/lib/commonjs/mock-builders/generator/reaction.js.map +1 -1
- package/lib/commonjs/mock-builders/generator/user.js.map +1 -1
- package/lib/commonjs/mock-builders/mock.js.map +1 -1
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/store/QuickSqliteClient.js.map +1 -1
- package/lib/commonjs/store/QuickSqliteClient_v4.js.map +1 -1
- package/lib/commonjs/store/apis/addPendingTask.js.map +1 -1
- package/lib/commonjs/store/apis/deleteChannel.js.map +1 -1
- package/lib/commonjs/store/apis/deleteMember.js.map +1 -1
- package/lib/commonjs/store/apis/deleteMessage.js.map +1 -1
- package/lib/commonjs/store/apis/deleteMessagesForChannel.js.map +1 -1
- package/lib/commonjs/store/apis/deletePendingTask.js.map +1 -1
- package/lib/commonjs/store/apis/deleteReaction.js.map +1 -1
- package/lib/commonjs/store/apis/deleteReactions.js.map +1 -1
- package/lib/commonjs/store/apis/getAllChannelIds.js.map +1 -1
- package/lib/commonjs/store/apis/getAppSettings.js.map +1 -1
- package/lib/commonjs/store/apis/getChannelMessages.js.map +1 -1
- package/lib/commonjs/store/apis/getChannels.js.map +1 -1
- package/lib/commonjs/store/apis/getChannelsForFilterSort.js.map +1 -1
- package/lib/commonjs/store/apis/getLastSyncedAt.js.map +1 -1
- package/lib/commonjs/store/apis/getMembers.js.map +1 -1
- package/lib/commonjs/store/apis/getPendingTasks.js.map +1 -1
- package/lib/commonjs/store/apis/getReads.js.map +1 -1
- package/lib/commonjs/store/apis/index.js.map +1 -1
- package/lib/commonjs/store/apis/insertReaction.js.map +1 -1
- package/lib/commonjs/store/apis/queries/selectChannelIdsForFilterSort.js.map +1 -1
- package/lib/commonjs/store/apis/queries/selectChannels.js.map +1 -1
- package/lib/commonjs/store/apis/queries/selectMembersForChannels.js.map +1 -1
- package/lib/commonjs/store/apis/queries/selectMessagesForChannels.js.map +1 -1
- package/lib/commonjs/store/apis/queries/selectReactionsForMessages.js.map +1 -1
- package/lib/commonjs/store/apis/queries/selectReadsForChannels.js.map +1 -1
- package/lib/commonjs/store/apis/updateMessage.js.map +1 -1
- package/lib/commonjs/store/apis/updateReaction.js.map +1 -1
- package/lib/commonjs/store/apis/upsertAppSettings.js.map +1 -1
- package/lib/commonjs/store/apis/upsertChannelData.js.map +1 -1
- package/lib/commonjs/store/apis/upsertChannels.js.map +1 -1
- package/lib/commonjs/store/apis/upsertCidsForQuery.js.map +1 -1
- package/lib/commonjs/store/apis/upsertLastSyncedAt.js.map +1 -1
- package/lib/commonjs/store/apis/upsertMembers.js.map +1 -1
- package/lib/commonjs/store/apis/upsertMessages.js.map +1 -1
- package/lib/commonjs/store/apis/upsertReads.js.map +1 -1
- package/lib/commonjs/store/apis/utils/convertFilterSortToQuery.js.map +1 -1
- package/lib/commonjs/store/constants.js.map +1 -1
- package/lib/commonjs/store/mappers/mapChannelDataToStorable.js.map +1 -1
- package/lib/commonjs/store/mappers/mapDateTimeToStorable.js.map +1 -1
- package/lib/commonjs/store/mappers/mapMemberToStorable.js.map +1 -1
- package/lib/commonjs/store/mappers/mapMessageToStorable.js.map +1 -1
- package/lib/commonjs/store/mappers/mapReactionToStorable.js.map +1 -1
- package/lib/commonjs/store/mappers/mapReadToStorable.js.map +1 -1
- package/lib/commonjs/store/mappers/mapStorableToChannel.js.map +1 -1
- package/lib/commonjs/store/mappers/mapStorableToMember.js.map +1 -1
- package/lib/commonjs/store/mappers/mapStorableToMessage.js.map +1 -1
- package/lib/commonjs/store/mappers/mapStorableToReaction.js.map +1 -1
- package/lib/commonjs/store/mappers/mapStorableToRead.js.map +1 -1
- package/lib/commonjs/store/mappers/mapStorableToTask.js.map +1 -1
- package/lib/commonjs/store/mappers/mapStorableToUser.js.map +1 -1
- package/lib/commonjs/store/mappers/mapTaskToStorable.js.map +1 -1
- package/lib/commonjs/store/mappers/mapUserToStorable.js.map +1 -1
- package/lib/commonjs/store/schema.js.map +1 -1
- package/lib/commonjs/store/sqlite-utils/appendOrderByClause.js.map +1 -1
- package/lib/commonjs/store/sqlite-utils/appendWhereCluase.js.map +1 -1
- package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
- package/lib/commonjs/store/sqlite-utils/createDeleteQuery.js.map +1 -1
- package/lib/commonjs/store/sqlite-utils/createSelectQuery.js.map +1 -1
- package/lib/commonjs/store/sqlite-utils/createUpdateQuery.js.map +1 -1
- package/lib/commonjs/store/sqlite-utils/createUpsertQuery.js.map +1 -1
- package/lib/commonjs/store/sqlite-utils/printRow.js.map +1 -1
- package/lib/commonjs/test-utils/BetterSqlite.js.map +1 -1
- package/lib/commonjs/utils/DBSyncManager.js.map +1 -1
- package/lib/commonjs/utils/Streami18n.js.map +1 -1
- package/lib/commonjs/utils/addReactionToLocalState.js.map +1 -1
- package/lib/commonjs/utils/date.js.map +1 -1
- package/lib/commonjs/utils/getResizedImageUrl.js.map +1 -1
- package/lib/commonjs/utils/getUrlOfImageAttachment.js.map +1 -1
- package/lib/commonjs/utils/patchMessageTextCommand.js.map +1 -1
- package/lib/commonjs/utils/removeReactionFromLocalState.js.map +1 -1
- package/lib/commonjs/utils/removeReservedFields.js.map +1 -1
- package/lib/commonjs/utils/utils.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Attachment.js +3 -21
- 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/AudioAttachment.js.map +1 -1
- package/lib/module/components/Attachment/Card.js.map +1 -1
- package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
- package/lib/module/components/Attachment/FileAttachmentGroup.js.map +1 -1
- package/lib/module/components/Attachment/FileIcon.js.map +1 -1
- package/lib/module/components/Attachment/Gallery.js +1 -7
- package/lib/module/components/Attachment/Gallery.js.map +1 -1
- package/lib/module/components/Attachment/GalleryImage.js.map +1 -1
- package/lib/module/components/Attachment/Giphy.js.map +1 -1
- package/lib/module/components/Attachment/ImageLoadingFailedIndicator.js.map +1 -1
- package/lib/module/components/Attachment/ImageLoadingIndicator.js.map +1 -1
- package/lib/module/components/Attachment/VideoThumbnail.js.map +1 -1
- package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -1
- package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js.map +1 -1
- package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js.map +1 -1
- package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js.map +1 -1
- package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -1
- package/lib/module/components/Attachment/utils/buildGallery/buildThumbnailGrid.js.map +1 -1
- package/lib/module/components/Attachment/utils/getAspectRatio.js.map +1 -1
- package/lib/module/components/Attachment/utils/getGalleryImageBorderRadius.js.map +1 -1
- package/lib/module/components/Attachment/utils/getGiphyMimeType.js.map +1 -1
- package/lib/module/components/Attachment/utils/openUrlSafely.js.map +1 -1
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js +1 -7
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentPickerError.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentPickerErrorImage.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentSelectionBar.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/CameraSelectorIcon.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/FileSelectorIcon.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/ImageOverlaySelectedComponent.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/ImageSelectorIcon.js.map +1 -1
- package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js.map +1 -1
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -1
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -1
- package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
- package/lib/module/components/Avatar/Avatar.js.map +1 -1
- package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateThreadContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateTypingContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useTargetedMessage.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelListHeaderErrorIndicator.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelListLoadingIndicator.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelListMessenger.js +1 -7
- package/lib/module/components/ChannelList/ChannelListMessenger.js.map +1 -1
- package/lib/module/components/ChannelList/Skeleton.js.map +1 -1
- 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.map +1 -1
- package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
- 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.map +1 -1
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/module/components/ChannelList/utils.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelAvatar.js.map +1 -1
- 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.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/lib/module/components/Chat/Chat.js.map +1 -1
- package/lib/module/components/Chat/hooks/handleEventToSyncDB.js.map +1 -1
- package/lib/module/components/Chat/hooks/useAppSettings.js.map +1 -1
- package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
- package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
- package/lib/module/components/Chat/hooks/useMutedUsers.js.map +1 -1
- package/lib/module/components/Chat/hooks/useSyncDatabase.js.map +1 -1
- package/lib/module/components/ImageBackground.js.map +1 -1
- package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
- package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryOverlay.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
- package/lib/module/components/ImageGallery/hooks/useImageGalleryGestures.js.map +1 -1
- package/lib/module/components/Indicators/EmptyStateIndicator.js.map +1 -1
- package/lib/module/components/Indicators/LoadingDot.js.map +1 -1
- package/lib/module/components/Indicators/LoadingDots.js.map +1 -1
- package/lib/module/components/Indicators/LoadingErrorIndicator.js.map +1 -1
- package/lib/module/components/Indicators/LoadingIndicator.js.map +1 -1
- package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
- package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleViewFC.js.map +1 -1
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageFooter.js +2 -14
- package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageReplies.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageSimple.js +1 -7
- package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageStatus.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/renderText.test.js +1 -7
- package/lib/module/components/Message/MessageSimple/utils/renderText.test.js.map +1 -1
- package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
- package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
- package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
- package/lib/module/components/Message/utils/messageActions.js.map +1 -1
- package/lib/module/components/MessageInput/AttachButton.js.map +1 -1
- package/lib/module/components/MessageInput/CommandsButton.js.map +1 -1
- package/lib/module/components/MessageInput/CooldownTimer.js.map +1 -1
- package/lib/module/components/MessageInput/FileUploadPreview.js +1 -7
- package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
- package/lib/module/components/MessageInput/InputButtons.js +1 -7
- package/lib/module/components/MessageInput/InputButtons.js.map +1 -1
- package/lib/module/components/MessageInput/MessageInput.js +2 -14
- package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/module/components/MessageInput/MoreOptionsButton.js.map +1 -1
- package/lib/module/components/MessageInput/SendButton.js.map +1 -1
- package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js.map +1 -1
- package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js.map +1 -1
- package/lib/module/components/MessageInput/UploadProgressIndicator.js.map +1 -1
- package/lib/module/components/MessageInput/components/InputEditingStateHeader.js.map +1 -1
- package/lib/module/components/MessageInput/components/InputGiphySearch.js.map +1 -1
- package/lib/module/components/MessageInput/components/InputReplyStateHeader.js.map +1 -1
- package/lib/module/components/MessageInput/hooks/useCooldown.js.map +1 -1
- package/lib/module/components/MessageInput/hooks/useCountdown.js.map +1 -1
- package/lib/module/components/MessageList/DateHeader.js.map +1 -1
- package/lib/module/components/MessageList/InlineDateSeparator.js.map +1 -1
- package/lib/module/components/MessageList/InlineLoadingMoreIndicator.js.map +1 -1
- package/lib/module/components/MessageList/InlineLoadingMoreRecentIndicator.js.map +1 -1
- package/lib/module/components/MessageList/InlineLoadingMoreThreadIndicator.js.map +1 -1
- package/lib/module/components/MessageList/InlineUnreadIndicator.js.map +1 -1
- package/lib/module/components/MessageList/MessageList.js +4 -28
- 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/NetworkDownIndicator.js.map +1 -1
- package/lib/module/components/MessageList/ScrollToBottomButton.js.map +1 -1
- package/lib/module/components/MessageList/TypingIndicator.js.map +1 -1
- package/lib/module/components/MessageList/TypingIndicatorContainer.js.map +1 -1
- package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/module/components/MessageList/hooks/useTypingString.js.map +1 -1
- package/lib/module/components/MessageList/utils/filterTypingUsers.js.map +1 -1
- package/lib/module/components/MessageList/utils/getDateSeparators.js.map +1 -1
- package/lib/module/components/MessageList/utils/getGroupStyles.js.map +1 -1
- package/lib/module/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
- package/lib/module/components/MessageList/utils/getReadStates.js.map +1 -1
- package/lib/module/components/MessageOverlay/MessageActionList.js.map +1 -1
- package/lib/module/components/MessageOverlay/MessageActionListItem.js.map +1 -1
- package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
- package/lib/module/components/MessageOverlay/OverlayBackdrop.js.map +1 -1
- package/lib/module/components/MessageOverlay/OverlayReactionList.js.map +1 -1
- package/lib/module/components/MessageOverlay/OverlayReactions.js.map +1 -1
- package/lib/module/components/MessageOverlay/OverlayReactionsAvatar.js.map +1 -1
- package/lib/module/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +1 -1
- package/lib/module/components/ProgressControl/ProgressControl.js.map +1 -1
- package/lib/module/components/RTLComponents/WritingDirectionAwareText.js.map +1 -1
- package/lib/module/components/Reply/Reply.js.map +1 -1
- package/lib/module/components/Spinner/Spinner.js.map +1 -1
- package/lib/module/components/Thread/Thread.js.map +1 -1
- package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
- package/lib/module/components/docs/data.js.map +1 -1
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -1
- package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
- package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
- package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
- package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
- package/lib/module/contexts/channelsStateContext/useChannelState.js.map +1 -1
- package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
- package/lib/module/contexts/debugContext/DebugContext.js.map +1 -1
- package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
- package/lib/module/contexts/index.js.map +1 -1
- package/lib/module/contexts/keyboardContext/KeyboardContext.js.map +1 -1
- package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +8 -8
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
- package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
- package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.js.map +1 -1
- package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js +1 -7
- package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +1 -1
- package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
- package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
- package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js.map +1 -1
- package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
- package/lib/module/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
- package/lib/module/contexts/themeContext/ThemeContext.js.map +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/contexts/threadContext/ThreadContext.js.map +1 -1
- package/lib/module/contexts/translationContext/TranslationContext.js.map +1 -1
- package/lib/module/contexts/typingContext/TypingContext.js.map +1 -1
- package/lib/module/contexts/utils/defaultBaseContextValue.js.map +1 -1
- package/lib/module/contexts/utils/getDisplayName.js.map +1 -1
- package/lib/module/contexts/utils/isTestEnvironment.js.map +1 -1
- package/lib/module/emoji-data/compile.js.map +1 -1
- package/lib/module/emoji-data/compiled.js.map +1 -1
- package/lib/module/emoji-data/index.js.map +1 -1
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/hooks/useAppStateListener.js.map +1 -1
- package/lib/module/hooks/useIsMountedRef.js.map +1 -1
- package/lib/module/hooks/useLoadingImage.js.map +1 -1
- package/lib/module/hooks/useStreami18n.js.map +1 -1
- package/lib/module/hooks/useTranslatedMessage.js.map +1 -1
- package/lib/module/icons/ArrowRight.js.map +1 -1
- package/lib/module/icons/AtMentions.js.map +1 -1
- package/lib/module/icons/Attach.js.map +1 -1
- package/lib/module/icons/Audio.js.map +1 -1
- package/lib/module/icons/CSV.js.map +1 -1
- package/lib/module/icons/Camera.js.map +1 -1
- package/lib/module/icons/Check.js.map +1 -1
- package/lib/module/icons/CheckAll.js.map +1 -1
- package/lib/module/icons/CheckSend.js.map +1 -1
- package/lib/module/icons/CircleClose.js.map +1 -1
- package/lib/module/icons/CirclePlus.js.map +1 -1
- package/lib/module/icons/CircleRight.js.map +1 -1
- package/lib/module/icons/Close.js.map +1 -1
- package/lib/module/icons/Copy.js.map +1 -1
- package/lib/module/icons/CurveLineLeftUp.js.map +1 -1
- package/lib/module/icons/DOC.js.map +1 -1
- package/lib/module/icons/DOCX.js.map +1 -1
- package/lib/module/icons/Delete.js.map +1 -1
- package/lib/module/icons/Down.js.map +1 -1
- package/lib/module/icons/DownloadArrow.js.map +1 -1
- package/lib/module/icons/DownloadCloud.js.map +1 -1
- package/lib/module/icons/Edit.js.map +1 -1
- package/lib/module/icons/Error.js.map +1 -1
- package/lib/module/icons/Eye.js.map +1 -1
- package/lib/module/icons/Flag.js.map +1 -1
- package/lib/module/icons/Folder.js.map +1 -1
- package/lib/module/icons/GenericFile.js.map +1 -1
- package/lib/module/icons/GiphyIcon.js.map +1 -1
- package/lib/module/icons/Grid.js.map +1 -1
- package/lib/module/icons/Group.js.map +1 -1
- package/lib/module/icons/HTML.js.map +1 -1
- package/lib/module/icons/Imgur.js.map +1 -1
- package/lib/module/icons/LOLReaction.js.map +1 -1
- package/lib/module/icons/Lightning.js.map +1 -1
- package/lib/module/icons/Link.js.map +1 -1
- package/lib/module/icons/Loading.js.map +1 -1
- package/lib/module/icons/Logo.js.map +1 -1
- package/lib/module/icons/LoveReaction.js.map +1 -1
- package/lib/module/icons/MD.js.map +1 -1
- package/lib/module/icons/MailOpen.js.map +1 -1
- package/lib/module/icons/MenuPointHorizontal.js.map +1 -1
- package/lib/module/icons/MenuPointVertical.js.map +1 -1
- package/lib/module/icons/MessageFlag.js.map +1 -1
- package/lib/module/icons/MessageIcon.js.map +1 -1
- package/lib/module/icons/Mute.js.map +1 -1
- package/lib/module/icons/Notification.js.map +1 -1
- package/lib/module/icons/ODT.js.map +1 -1
- package/lib/module/icons/PDF.js.map +1 -1
- package/lib/module/icons/PPT.js.map +1 -1
- package/lib/module/icons/PPTX.js.map +1 -1
- package/lib/module/icons/Pause.js.map +1 -1
- package/lib/module/icons/Picture.js.map +1 -1
- package/lib/module/icons/Pin.js.map +1 -1
- package/lib/module/icons/PinHeader.js.map +1 -1
- package/lib/module/icons/Play.js.map +1 -1
- package/lib/module/icons/RAR.js.map +1 -1
- package/lib/module/icons/RTF.js.map +1 -1
- package/lib/module/icons/Recorder.js.map +1 -1
- package/lib/module/icons/Refresh.js.map +1 -1
- package/lib/module/icons/SEVEN_Z.js.map +1 -1
- package/lib/module/icons/Search.js.map +1 -1
- package/lib/module/icons/SendRight.js.map +1 -1
- package/lib/module/icons/SendUp.js.map +1 -1
- package/lib/module/icons/Share.js.map +1 -1
- package/lib/module/icons/ShareRightArrow.js.map +1 -1
- package/lib/module/icons/Smile.js.map +1 -1
- package/lib/module/icons/Sound.js.map +1 -1
- package/lib/module/icons/TAR.js.map +1 -1
- package/lib/module/icons/TXT.js.map +1 -1
- package/lib/module/icons/ThreadReply.js.map +1 -1
- package/lib/module/icons/ThumbsDownReaction.js.map +1 -1
- package/lib/module/icons/ThumbsUpReaction.js.map +1 -1
- package/lib/module/icons/Time.js.map +1 -1
- package/lib/module/icons/Unknown.js.map +1 -1
- package/lib/module/icons/Unpin.js.map +1 -1
- package/lib/module/icons/User.js.map +1 -1
- package/lib/module/icons/UserAdd.js.map +1 -1
- package/lib/module/icons/UserAdmin.js.map +1 -1
- package/lib/module/icons/UserDelete.js.map +1 -1
- package/lib/module/icons/UserMinus.js.map +1 -1
- package/lib/module/icons/Video.js.map +1 -1
- package/lib/module/icons/Warning.js.map +1 -1
- package/lib/module/icons/WutReaction.js.map +1 -1
- package/lib/module/icons/XLS.js.map +1 -1
- package/lib/module/icons/XLSX.js.map +1 -1
- package/lib/module/icons/ZIP.js.map +1 -1
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/icons/utils/base.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/init.js.map +1 -1
- package/lib/module/mock-builders/DB/consts.js.map +1 -1
- package/lib/module/mock-builders/DB/mock.js.map +1 -1
- package/lib/module/mock-builders/api/channelMocks.js.map +1 -1
- package/lib/module/mock-builders/api/deleteMessage.js.map +1 -1
- package/lib/module/mock-builders/api/deleteReaction.js.map +1 -1
- package/lib/module/mock-builders/api/error.js.map +1 -1
- package/lib/module/mock-builders/api/getOrCreateChannel.js.map +1 -1
- package/lib/module/mock-builders/api/queryChannels.js.map +1 -1
- package/lib/module/mock-builders/api/queryMembers.js.map +1 -1
- package/lib/module/mock-builders/api/sendMessage.js.map +1 -1
- package/lib/module/mock-builders/api/sendReaction.js.map +1 -1
- package/lib/module/mock-builders/api/threadReplies.js.map +1 -1
- package/lib/module/mock-builders/api/useMockedApis.js.map +1 -1
- package/lib/module/mock-builders/api/utils.js.map +1 -1
- package/lib/module/mock-builders/event/channelDeleted.js.map +1 -1
- package/lib/module/mock-builders/event/channelHidden.js.map +1 -1
- package/lib/module/mock-builders/event/channelTruncated.js.map +1 -1
- package/lib/module/mock-builders/event/channelUpdated.js.map +1 -1
- package/lib/module/mock-builders/event/connectionChanged.js.map +1 -1
- package/lib/module/mock-builders/event/connectionRecovered.js.map +1 -1
- package/lib/module/mock-builders/event/memberAdded.js.map +1 -1
- package/lib/module/mock-builders/event/memberRemoved.js.map +1 -1
- package/lib/module/mock-builders/event/memberUpdated.js.map +1 -1
- package/lib/module/mock-builders/event/messageDeleted.js.map +1 -1
- package/lib/module/mock-builders/event/messageNew.js.map +1 -1
- package/lib/module/mock-builders/event/messageRead.js.map +1 -1
- package/lib/module/mock-builders/event/messageUpdated.js.map +1 -1
- package/lib/module/mock-builders/event/notificationAddedToChannel.js.map +1 -1
- package/lib/module/mock-builders/event/notificationMessageNew.js.map +1 -1
- package/lib/module/mock-builders/event/notificationMutesUpdated.js.map +1 -1
- package/lib/module/mock-builders/event/notificationRemovedFromChannel.js.map +1 -1
- package/lib/module/mock-builders/event/reactionDeleted.js.map +1 -1
- package/lib/module/mock-builders/event/reactionNew.js.map +1 -1
- package/lib/module/mock-builders/event/reactionUpdated.js.map +1 -1
- package/lib/module/mock-builders/event/typing.js.map +1 -1
- package/lib/module/mock-builders/event/userPresence.js.map +1 -1
- package/lib/module/mock-builders/event/userUpdated.js.map +1 -1
- package/lib/module/mock-builders/generator/attachment.js.map +1 -1
- package/lib/module/mock-builders/generator/channel.js.map +1 -1
- package/lib/module/mock-builders/generator/member.js.map +1 -1
- package/lib/module/mock-builders/generator/message.js.map +1 -1
- package/lib/module/mock-builders/generator/reaction.js.map +1 -1
- package/lib/module/mock-builders/generator/user.js.map +1 -1
- package/lib/module/mock-builders/mock.js.map +1 -1
- package/lib/module/native.js.map +1 -1
- package/lib/module/store/QuickSqliteClient.js.map +1 -1
- package/lib/module/store/QuickSqliteClient_v4.js.map +1 -1
- package/lib/module/store/apis/addPendingTask.js.map +1 -1
- package/lib/module/store/apis/deleteChannel.js.map +1 -1
- package/lib/module/store/apis/deleteMember.js.map +1 -1
- package/lib/module/store/apis/deleteMessage.js.map +1 -1
- package/lib/module/store/apis/deleteMessagesForChannel.js.map +1 -1
- package/lib/module/store/apis/deletePendingTask.js.map +1 -1
- package/lib/module/store/apis/deleteReaction.js.map +1 -1
- package/lib/module/store/apis/deleteReactions.js.map +1 -1
- package/lib/module/store/apis/getAllChannelIds.js.map +1 -1
- package/lib/module/store/apis/getAppSettings.js.map +1 -1
- package/lib/module/store/apis/getChannelMessages.js.map +1 -1
- package/lib/module/store/apis/getChannels.js.map +1 -1
- package/lib/module/store/apis/getChannelsForFilterSort.js.map +1 -1
- package/lib/module/store/apis/getLastSyncedAt.js.map +1 -1
- package/lib/module/store/apis/getMembers.js.map +1 -1
- package/lib/module/store/apis/getPendingTasks.js.map +1 -1
- package/lib/module/store/apis/getReads.js.map +1 -1
- package/lib/module/store/apis/index.js.map +1 -1
- package/lib/module/store/apis/insertReaction.js.map +1 -1
- package/lib/module/store/apis/queries/selectChannelIdsForFilterSort.js.map +1 -1
- package/lib/module/store/apis/queries/selectChannels.js.map +1 -1
- package/lib/module/store/apis/queries/selectMembersForChannels.js.map +1 -1
- package/lib/module/store/apis/queries/selectMessagesForChannels.js.map +1 -1
- package/lib/module/store/apis/queries/selectReactionsForMessages.js.map +1 -1
- package/lib/module/store/apis/queries/selectReadsForChannels.js.map +1 -1
- package/lib/module/store/apis/updateMessage.js.map +1 -1
- package/lib/module/store/apis/updateReaction.js.map +1 -1
- package/lib/module/store/apis/upsertAppSettings.js.map +1 -1
- package/lib/module/store/apis/upsertChannelData.js.map +1 -1
- package/lib/module/store/apis/upsertChannels.js.map +1 -1
- package/lib/module/store/apis/upsertCidsForQuery.js.map +1 -1
- package/lib/module/store/apis/upsertLastSyncedAt.js.map +1 -1
- package/lib/module/store/apis/upsertMembers.js.map +1 -1
- package/lib/module/store/apis/upsertMessages.js.map +1 -1
- package/lib/module/store/apis/upsertReads.js.map +1 -1
- package/lib/module/store/apis/utils/convertFilterSortToQuery.js.map +1 -1
- package/lib/module/store/constants.js.map +1 -1
- package/lib/module/store/mappers/mapChannelDataToStorable.js.map +1 -1
- package/lib/module/store/mappers/mapDateTimeToStorable.js.map +1 -1
- package/lib/module/store/mappers/mapMemberToStorable.js.map +1 -1
- package/lib/module/store/mappers/mapMessageToStorable.js.map +1 -1
- package/lib/module/store/mappers/mapReactionToStorable.js.map +1 -1
- package/lib/module/store/mappers/mapReadToStorable.js.map +1 -1
- package/lib/module/store/mappers/mapStorableToChannel.js.map +1 -1
- package/lib/module/store/mappers/mapStorableToMember.js.map +1 -1
- package/lib/module/store/mappers/mapStorableToMessage.js.map +1 -1
- package/lib/module/store/mappers/mapStorableToReaction.js.map +1 -1
- package/lib/module/store/mappers/mapStorableToRead.js.map +1 -1
- package/lib/module/store/mappers/mapStorableToTask.js.map +1 -1
- package/lib/module/store/mappers/mapStorableToUser.js.map +1 -1
- package/lib/module/store/mappers/mapTaskToStorable.js.map +1 -1
- package/lib/module/store/mappers/mapUserToStorable.js.map +1 -1
- package/lib/module/store/schema.js.map +1 -1
- package/lib/module/store/sqlite-utils/appendOrderByClause.js.map +1 -1
- package/lib/module/store/sqlite-utils/appendWhereCluase.js.map +1 -1
- package/lib/module/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
- package/lib/module/store/sqlite-utils/createDeleteQuery.js.map +1 -1
- package/lib/module/store/sqlite-utils/createSelectQuery.js.map +1 -1
- package/lib/module/store/sqlite-utils/createUpdateQuery.js.map +1 -1
- package/lib/module/store/sqlite-utils/createUpsertQuery.js.map +1 -1
- package/lib/module/store/sqlite-utils/printRow.js.map +1 -1
- package/lib/module/test-utils/BetterSqlite.js.map +1 -1
- package/lib/module/utils/DBSyncManager.js.map +1 -1
- package/lib/module/utils/Streami18n.js.map +1 -1
- package/lib/module/utils/addReactionToLocalState.js.map +1 -1
- package/lib/module/utils/date.js.map +1 -1
- package/lib/module/utils/getResizedImageUrl.js.map +1 -1
- package/lib/module/utils/getUrlOfImageAttachment.js.map +1 -1
- package/lib/module/utils/patchMessageTextCommand.js.map +1 -1
- package/lib/module/utils/removeReactionFromLocalState.js.map +1 -1
- package/lib/module/utils/removeReservedFields.js.map +1 -1
- package/lib/module/utils/utils.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/package.json +1 -1
- package/src/version.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["styles","StyleSheet","create","container","alignItems","flex","width","contentContainer","flexGrow","paddingBottom","invert","transform","scaleY","invertAndroid","scaleX","listContainer","messagePadding","paddingHorizontal","stickyHeader","position","top","InvertedCellRendererComponent","props","keyExtractor","item","id","created_at","toISOString","Date","now","toString","flatListViewabilityConfig","viewAreaCoveragePercentThreshold","MessageListWithContext","LoadingMoreIndicator","threadList","InlineLoadingMoreThreadIndicator","InlineLoadingMoreIndicator","additionalFlatListProps","channel","client","closePicker","DateHeader","disabled","disableTypingIndicator","EmptyStateIndicator","FlatList","FooterComponent","hasNoMoreRecentMessagesToLoad","HeaderComponent","InlineLoadingMoreRecentIndicator","hideStickyDateHeader","initialScrollToFirstUnreadMessage","InlineDateSeparator","InlineUnreadIndicator","inverted","isListActive","legacyImageViewerSwipeBehaviour","loadChannelAroundMessage","loading","LoadingIndicator","loadMore","loadMoreRecent","loadMoreThread","markRead","Message","MessageSystem","myMessageTheme","NetworkDownIndicator","noGroupByUser","onListScroll","onThreadSelect","overlay","reloadChannel","ScrollToBottomButton","scrollToFirstUnreadThreshold","selectedPicker","setFlatListRef","setMessages","setSelectedPicker","setTargetedMessage","StickyHeader","targetedMessage","tDateTimeParser","thread","TypingIndicator","TypingIndicatorContainer","useTheme","theme","white_snow","colors","messageList","modifiedTheme","useMemo","mergeThemes","style","useMessageList","messageListLengthBeforeUpdate","useRef","messageListLengthAfterUpdate","length","topMessageBeforeUpdate","topMessageAfterUpdate","useState","autoscrollToTop","setAutoscrollToTop","onStartReachedTracker","onEndReachedTracker","onStartReachedInPromise","onEndReachedInPromise","flatListRef","initialScrollSet","channelResyncScrollSet","scrollToDebounceTimeoutRef","messageIdToScrollToRef","messageIdLastScrolledToRef","hasMoved","setHasMoved","getLastReceivedMessage","lastReceivedId","setLastReceivedId","scrollToBottomButtonVisible","setScrollToBottomButtonVisible","stickyHeaderDate","setStickyHeaderDate","stickyHeaderDateRef","isUnreadMessageRef","message","lastRead","channelLastReadRef","initialized","undefined","useEffect","current","updateStickyHeaderDateIfNeeded","viewableItems","lastItem","pop","isMessageTypeDeleted","type","toDateString","onViewableItemsChanged","Platform","OS","resetPaginationTrackersRef","shouldMarkReadOnFirstLoad","countUnread","lastReceivedMessage","hasNewMessage","isMyMessage","user","userID","scrollToBottomIfNeeded","setTimeout","scrollToOffset","offset","maybeCallOnStartReached","shouldApplyAndroidWorkaround","renderItem","index","offlineMode","lastMessage","showUnreadUnderlay","insertInlineUnreadIndicator","wrapMessageInTheme","isMessageWithStylesReadByAndDateSeparator","dateSeparator","goToMessage","groupStyles","quoted_message_id","limit","callback","Promise","resolve","onError","then","maybeCallOnEndReached","handleScroll","event","nativeEvent","contentOffset","y","visibleLength","layoutMeasurement","height","contentLength","contentSize","isScrollAtStart","isScrollAtEnd","isScrollAtBottom","showScrollToBottomButton","shouldMarkRead","goToNewMessages","onScrollToIndexFailedRef","info","animated","averageItemLength","scrollToIndex","viewPosition","useCallback","messageId","indexOfParentInMessageList","findIndex","clearTimeout","messageIdToScroll","messagesWithImages","filter","attachments","some","attachment","title_link","og_scrape_url","image_url","thumb_url","imageString","map","join","numberOfMessagesWithImages","threadExists","stickyHeaderFormatDate","getFullYear","tStickyHeaderDate","stickyHeaderDateString","isDayOrMoment","format","dismissImagePicker","onScrollBeginDrag","onScrollEndDrag","refCallback","ref","debugRef","useDebugContext","isDebugModeEnabled","__DEV__","setEventType","setSendEventParams","action","data","renderListEmptyComponent","ListFooterComponent","ListHeaderComponent","StickyHeaderComponent","backgroundColor","autoscrollToTopThreshold","minIndexForVisible","MessageList","useAttachmentPickerContext","useChannelContext","enableMessageGroupingByUser","error","isChannelActive","useChatContext","useImageGalleryContext","useMessagesContext","usePaginatedMessageListContext","useOverlayContext","useThreadContext","useTranslationContext","t"],"sources":["MessageList.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n FlatListProps,\n FlatList as FlatListType,\n Platform,\n ScrollViewProps,\n StyleSheet,\n View,\n ViewToken,\n} from 'react-native';\n\nimport type { Channel as StreamChannel } from 'stream-chat';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n useMessageList,\n} from './hooks/useMessageList';\nimport { InlineLoadingMoreIndicator } from './InlineLoadingMoreIndicator';\nimport { InlineLoadingMoreRecentIndicator } from './InlineLoadingMoreRecentIndicator';\nimport { InlineLoadingMoreThreadIndicator } from './InlineLoadingMoreThreadIndicator';\nimport { getLastReceivedMessage } from './utils/getLastReceivedMessage';\n\nimport {\n AttachmentPickerContextValue,\n useAttachmentPickerContext,\n} from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport { useDebugContext } from '../../contexts/debugContext/DebugContext';\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport {\n PaginatedMessageListContextValue,\n usePaginatedMessageListContext,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport { mergeThemes, ThemeProvider, useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n isDayOrMoment,\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n flex: 1,\n width: '100%',\n },\n contentContainer: {\n flexGrow: 1,\n /**\n * paddingBottom is set to 4 to account for the default date\n * header and inline indicator alignment. The top margin is 8\n * on the header but 4 on the inline date, this adjusts the spacing\n * to allow the \"first\" inline date to align with the date header.\n */\n paddingBottom: 4,\n },\n flex: { flex: 1 },\n invert: { transform: [{ scaleY: -1 }] },\n invertAndroid: {\n // Invert the Y AND X axis to prevent a react native issue that can lead to ANRs on android 13\n // details: https://github.com/Expensify/App/pull/12820\n transform: [{ scaleX: -1 }, { scaleY: -1 }],\n },\n listContainer: {\n flex: 1,\n width: '100%',\n },\n messagePadding: {\n paddingHorizontal: 8,\n },\n stickyHeader: {\n position: 'absolute',\n top: 0,\n },\n});\n\nconst InvertedCellRendererComponent = (props: React.PropsWithChildren<unknown>) => (\n <View {...props} style={styles.invertAndroid} />\n);\n\nconst keyExtractor = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n item: MessageType<StreamChatGenerics>,\n) => {\n if (item.id) return item.id;\n if (item.created_at)\n return typeof item.created_at === 'string' ? item.created_at : item.created_at.toISOString();\n return Date.now().toString();\n};\n\nconst flatListViewabilityConfig = {\n viewAreaCoveragePercentThreshold: 1,\n};\n\ntype MessageListPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<AttachmentPickerContextValue, 'closePicker' | 'selectedPicker' | 'setSelectedPicker'> &\n Pick<\n ChannelContextValue<StreamChatGenerics>,\n | 'channel'\n | 'disabled'\n | 'EmptyStateIndicator'\n | 'hideStickyDateHeader'\n | 'loadChannelAroundMessage'\n | 'loading'\n | 'LoadingIndicator'\n | 'markRead'\n | 'NetworkDownIndicator'\n | 'reloadChannel'\n | 'scrollToFirstUnreadThreshold'\n | 'setTargetedMessage'\n | 'StickyHeader'\n | 'targetedMessage'\n > &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setMessages'> &\n Pick<\n PaginatedMessageListContextValue<StreamChatGenerics>,\n 'hasNoMoreRecentMessagesToLoad' | 'loadMore' | 'loadMoreRecent'\n > &\n Pick<OverlayContextValue, 'overlay'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'DateHeader'\n | 'disableTypingIndicator'\n | 'FlatList'\n | 'initialScrollToFirstUnreadMessage'\n | 'InlineDateSeparator'\n | 'InlineUnreadIndicator'\n | 'legacyImageViewerSwipeBehaviour'\n | 'Message'\n | 'ScrollToBottomButton'\n | 'MessageSystem'\n | 'myMessageTheme'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n > &\n Pick<ThreadContextValue<StreamChatGenerics>, 'loadMoreThread' | 'thread'> &\n Pick<TranslationContextValue, 't' | 'tDateTimeParser'> & {\n /**\n * Besides existing (default) UX behavior of underlying FlatList of MessageList component, if you want\n * to attach some additional props to underlying FlatList, you can add it to following prop.\n *\n * You can find list of all the available FlatList props here - https://facebook.github.io/react-native/docs/flatlist#props\n *\n * **NOTE** Don't use `additionalFlatListProps` to get access to ref of flatlist. Use `setFlatListRef` instead.\n *\n * e.g.\n * ```js\n * <MessageList\n * additionalFlatListProps={{ bounces: true, keyboardDismissMode: true }} />\n * ```\n */\n additionalFlatListProps?: Partial<FlatListProps<MessageType<StreamChatGenerics>>>;\n /**\n * UI component for footer of message list. By default message list will use `InlineLoadingMoreIndicator`\n * as FooterComponent. If you want to implement your own inline loading indicator, you can access `loadingMore`\n * from context.\n *\n * This is a [ListHeaderComponent](https://facebook.github.io/react-native/docs/flatlist#listheadercomponent) of FlatList\n * used in MessageList. Should be used for header by default if inverted is true or defaulted\n */\n FooterComponent?: React.ComponentType;\n /**\n * UI component for header of message list. By default message list will use `InlineLoadingMoreRecentIndicator`\n * as HeaderComponent. If you want to implement your own inline loading indicator, you can access `loadingMoreRecent`\n * from context.\n *\n * This is a [ListFooterComponent](https://facebook.github.io/react-native/docs/flatlist#listheadercomponent) of FlatList\n * used in MessageList. Should be used for header if inverted is false\n */\n HeaderComponent?: React.ComponentType;\n /** Whether or not the FlatList is inverted. Defaults to true */\n inverted?: boolean;\n isListActive?: boolean;\n /** Turn off grouping of messages by user */\n noGroupByUser?: boolean;\n onListScroll?: ScrollViewProps['onScroll'];\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: ThreadContextValue<StreamChatGenerics>['thread']) => void;\n /**\n * Use `setFlatListRef` to get access to ref to inner FlatList.\n *\n * e.g.\n * ```js\n * <MessageList\n * setFlatListRef={(ref) => {\n * // Use ref for your own good\n * }}\n * ```\n */\n setFlatListRef?: (ref: FlatListType<MessageType<StreamChatGenerics>> | null) => void;\n /**\n * Boolean whether or not the Messages in the MessageList are part of a Thread\n **/\n threadList?: boolean;\n };\n\n/**\n * The message list component renders a list of messages. It consumes the following contexts:\n *\n * [ChannelContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/channel-context/)\n * [ChatContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/chat-context/)\n * [MessagesContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/messages-context/)\n * [ThreadContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/thread-context/)\n * [TranslationContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/translation-context/)\n */\nconst MessageListWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageListPropsWithContext<StreamChatGenerics>,\n) => {\n const LoadingMoreIndicator = props.threadList\n ? InlineLoadingMoreThreadIndicator\n : InlineLoadingMoreIndicator;\n const {\n additionalFlatListProps,\n channel,\n client,\n closePicker,\n DateHeader,\n disabled,\n disableTypingIndicator,\n EmptyStateIndicator,\n FlatList,\n FooterComponent = LoadingMoreIndicator,\n hasNoMoreRecentMessagesToLoad,\n HeaderComponent = InlineLoadingMoreRecentIndicator,\n hideStickyDateHeader,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n inverted = true,\n isListActive = false,\n legacyImageViewerSwipeBehaviour,\n loadChannelAroundMessage,\n loading,\n LoadingIndicator,\n loadMore,\n loadMoreRecent,\n loadMoreThread,\n markRead,\n Message,\n MessageSystem,\n myMessageTheme,\n NetworkDownIndicator,\n noGroupByUser,\n onListScroll,\n onThreadSelect,\n overlay,\n reloadChannel,\n ScrollToBottomButton,\n scrollToFirstUnreadThreshold,\n selectedPicker,\n setFlatListRef,\n setMessages,\n setSelectedPicker,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n tDateTimeParser,\n thread,\n threadList = false,\n TypingIndicator,\n TypingIndicatorContainer,\n } = props;\n\n const { theme } = useTheme();\n\n const {\n colors: { white_snow },\n messageList: { container, contentContainer, listContainer },\n } = theme;\n\n const modifiedTheme = useMemo(\n () => mergeThemes({ style: myMessageTheme, theme }),\n [myMessageTheme, theme],\n );\n\n const messageList = useMessageList<StreamChatGenerics>({\n noGroupByUser,\n threadList,\n });\n const messageListLengthBeforeUpdate = useRef(0);\n const messageListLengthAfterUpdate = messageList.length;\n\n /**\n * We need topMessage and channelLastRead values to set the initial scroll position.\n * So these values only get used if `initialScrollToFirstUnreadMessage` prop is true.\n */\n const topMessageBeforeUpdate = useRef<MessageType<StreamChatGenerics>>();\n const topMessageAfterUpdate = messageList[messageList.length - 1];\n\n const [autoscrollToTop, setAutoscrollToTop] = useState(false);\n\n /**\n * We want to call onEndReached and onStartReached only once, per content length.\n * We keep track of calls to these functions per content length, with following trackers.\n */\n const onStartReachedTracker = useRef<Record<number, boolean>>({});\n const onEndReachedTracker = useRef<Record<number, boolean>>({});\n\n const onStartReachedInPromise = useRef<Promise<void> | null>(null);\n const onEndReachedInPromise = useRef<Promise<void> | null>(null);\n\n const flatListRef = useRef<FlatListType<MessageType<StreamChatGenerics>> | null>(null);\n\n /**\n * Flag to track if the initial scroll has been set\n * If the prop `initialScrollToFirstUnreadMessage` was enabled, then we scroll to the unread msg and set it to true\n * If not, the default offset of 0 for flatList means that it has been set already\n */\n const initialScrollSet = useRef<boolean>(!initialScrollToFirstUnreadMessage);\n\n const channelResyncScrollSet = useRef<boolean>(true);\n\n /**\n * The timeout id used to debounce our scrollToIndex calls on messageList updates\n */\n const scrollToDebounceTimeoutRef = useRef<NodeJS.Timeout>();\n\n /**\n * If a messageId was requested to scroll to but was unloaded,\n * this flag keeps track of it to scroll to it after loading the message\n */\n const messageIdToScrollToRef = useRef<string>();\n /**\n * Last messageID that was scrolled to after loading a new message list,\n * this flag keeps track of it so that we dont scroll to it again on target message set\n */\n const messageIdLastScrolledToRef = useRef<string>();\n const [hasMoved, setHasMoved] = useState(false);\n const [lastReceivedId, setLastReceivedId] = useState(getLastReceivedMessage(messageList)?.id);\n const [scrollToBottomButtonVisible, setScrollToBottomButtonVisible] = useState(false);\n\n const [stickyHeaderDate, setStickyHeaderDate] = useState<Date | undefined>();\n const stickyHeaderDateRef = useRef<Date | undefined>();\n\n const isUnreadMessageRef = useRef(\n (\n message: MessageType<StreamChatGenerics> | undefined,\n lastRead?: ReturnType<StreamChannel<StreamChatGenerics>['lastRead']>,\n ) => message && lastRead && message.created_at && lastRead < message.created_at,\n );\n\n const channelLastReadRef = useRef(channel?.initialized ? channel.lastRead() : undefined);\n\n useEffect(() => {\n channelLastReadRef.current = channel?.initialized ? channel.lastRead() : undefined;\n }, [channel]);\n\n const updateStickyHeaderDateIfNeeded = (viewableItems: ViewToken[]) => {\n if (viewableItems.length) {\n const lastItem = viewableItems.pop() as {\n item: MessageType<StreamChatGenerics>;\n };\n\n const isMessageTypeDeleted = lastItem.item.type === 'deleted';\n\n if (\n lastItem?.item?.created_at &&\n !isMessageTypeDeleted &&\n typeof lastItem.item.created_at !== 'string' &&\n lastItem.item.created_at.toDateString() !== stickyHeaderDateRef.current?.toDateString()\n ) {\n stickyHeaderDateRef.current = lastItem.item.created_at;\n setStickyHeaderDate(lastItem.item.created_at);\n }\n }\n };\n\n /**\n * FlatList doesn't accept changeable function for onViewableItemsChanged prop.\n * Thus useRef.\n */\n const onViewableItemsChanged = useRef(\n ({ viewableItems }: { viewableItems: ViewToken[] | undefined }) => {\n /**\n * When a new message comes in, list scrolls down to the bottom automatically (using prop `maintainVisibleContentPosition`)\n * and we mark the channel as read from handleScroll function.\n * Although this logic is dependent on the fact that `onScroll` event gets triggered during this process.\n * But for Android, this event is not triggered when messages length is lesser than visible screen height.\n *\n * And thus we need to check if the message list length is lesser than visible screen height and mark the channel as read.\n */\n if (\n Platform.OS === 'android' &&\n viewableItems?.length &&\n viewableItems?.length >= messageListLengthBeforeUpdate.current\n ) {\n channel.markRead();\n }\n\n if (viewableItems && !hideStickyDateHeader) {\n updateStickyHeaderDateIfNeeded(viewableItems);\n }\n },\n );\n\n /**\n * Resets the pagination trackers, doing so cancels currently scheduled loading more calls\n */\n const resetPaginationTrackersRef = useRef(() => {\n onStartReachedTracker.current = {};\n onEndReachedTracker.current = {};\n });\n\n useEffect(() => {\n setScrollToBottomButtonVisible(false);\n }, [disabled]);\n\n useEffect(() => {\n /**\n * 1. !initialScrollToFirstUnreadMessage && channel.countUnread() > 0\n *\n * In this case MessageList won't scroll to first unread message when opened, so we can mark\n * the channel as read right after opening.\n *\n * 2. initialScrollToFirstUnreadMessage && channel.countUnread() <= scrollToFirstUnreadThreshold\n *\n * In this case MessageList will be opened to first unread message.\n * But if there are not enough (scrollToFirstUnreadThreshold) unread messages, then MessageList\n * won't need to scroll up. So we can safely mark the channel as read right after opening.\n */\n const shouldMarkReadOnFirstLoad =\n !loading &&\n channel &&\n ((!initialScrollToFirstUnreadMessage && channel.countUnread() > 0) ||\n (initialScrollToFirstUnreadMessage &&\n channel.countUnread() <= scrollToFirstUnreadThreshold));\n\n if (shouldMarkReadOnFirstLoad) {\n markRead();\n }\n }, [loading]);\n\n useEffect(() => {\n const lastReceivedMessage = getLastReceivedMessage(messageList);\n\n const hasNewMessage = lastReceivedId !== lastReceivedMessage?.id;\n const isMyMessage = lastReceivedMessage?.user?.id === client.userID;\n\n setLastReceivedId(lastReceivedMessage?.id);\n\n /**\n * Scroll down when\n * 1. you send a new message to channel\n * 2. new message list is small than the one before update - channel has resynced\n * 3. created_at timestamp of top message before update is lesser than created_at timestamp of top message after update - channel has resynced\n */\n const scrollToBottomIfNeeded = () => {\n if (!client || !channel || messageList.length === 0) {\n return;\n }\n if (\n (hasNewMessage && isMyMessage) ||\n messageListLengthAfterUpdate < messageListLengthBeforeUpdate.current ||\n (topMessageBeforeUpdate.current?.created_at &&\n topMessageAfterUpdate?.created_at &&\n topMessageBeforeUpdate.current.created_at < topMessageAfterUpdate.created_at)\n ) {\n channelResyncScrollSet.current = false;\n setScrollToBottomButtonVisible(false);\n resetPaginationTrackersRef.current();\n\n setTimeout(() => {\n flatListRef.current?.scrollToOffset({\n offset: 0,\n });\n }, 50);\n setTimeout(() => {\n channelResyncScrollSet.current = true;\n if (channel.countUnread() > 0) {\n markRead();\n }\n }, 500);\n }\n };\n\n if (threadList || hasNoMoreRecentMessagesToLoad) {\n scrollToBottomIfNeeded();\n } else if (!scrollToBottomButtonVisible) {\n setScrollToBottomButtonVisible(true);\n }\n\n if (\n !hasNoMoreRecentMessagesToLoad &&\n flatListRef.current &&\n messageListLengthBeforeUpdate.current === 0 &&\n messageListLengthAfterUpdate < 10\n ) {\n /**\n * Trigger onStartReached on first load, if messages are not enough to fill the screen.\n * This is important especially for android, where you can't overscroll.\n */\n maybeCallOnStartReached(10);\n }\n\n messageListLengthBeforeUpdate.current = messageListLengthAfterUpdate;\n topMessageBeforeUpdate.current = topMessageAfterUpdate;\n }, [messageListLengthAfterUpdate, topMessageAfterUpdate?.id]);\n\n useEffect(() => {\n setAutoscrollToTop(hasNoMoreRecentMessagesToLoad);\n }, [messageList, hasNoMoreRecentMessagesToLoad]);\n\n const shouldApplyAndroidWorkaround = inverted && Platform.OS === 'android';\n\n const renderItem = ({\n index,\n item: message,\n }: {\n index: number;\n item: MessageType<StreamChatGenerics>;\n }) => {\n if (!channel || (!channel.initialized && !channel.offlineMode)) return null;\n\n const lastRead = channel.lastRead();\n\n const lastMessage = messageList?.[index + 1];\n\n const showUnreadUnderlay =\n !!isUnreadMessageRef.current(message, lastRead) && scrollToBottomButtonVisible;\n const insertInlineUnreadIndicator =\n showUnreadUnderlay && !isUnreadMessageRef.current(lastMessage, lastRead);\n\n if (message.type === 'system') {\n return (\n <>\n <View testID={`message-list-item-${index}`}>\n <MessageSystem message={message} style={styles.messagePadding} />\n </View>\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n );\n }\n\n const wrapMessageInTheme = client.userID === message.user?.id && !!myMessageTheme;\n return wrapMessageInTheme ? (\n <>\n {shouldApplyAndroidWorkaround &&\n isMessageWithStylesReadByAndDateSeparator(message) &&\n message.dateSeparator && <InlineDateSeparator date={message.dateSeparator} />}\n <ThemeProvider mergedStyle={modifiedTheme}>\n <View testID={`message-list-item-${index}`}>\n <Message\n goToMessage={goToMessage}\n groupStyles={\n isMessageWithStylesReadByAndDateSeparator(message) ? message.groupStyles : []\n }\n isTargetedMessage={targetedMessage === message.id}\n lastReceivedId={lastReceivedId === message.id ? lastReceivedId : undefined}\n message={message}\n onThreadSelect={onThreadSelect}\n showUnreadUnderlay={showUnreadUnderlay}\n style={styles.messagePadding}\n threadList={threadList}\n />\n </View>\n </ThemeProvider>\n {!shouldApplyAndroidWorkaround &&\n isMessageWithStylesReadByAndDateSeparator(message) &&\n message.dateSeparator && <InlineDateSeparator date={message.dateSeparator} />}\n {/* Adding indicator below the messages, since the list is inverted */}\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n ) : (\n <>\n <View testID={`message-list-item-${index}`}>\n {shouldApplyAndroidWorkaround &&\n isMessageWithStylesReadByAndDateSeparator(message) &&\n message.dateSeparator && <InlineDateSeparator date={message.dateSeparator} />}\n <Message\n goToMessage={goToMessage}\n groupStyles={\n isMessageWithStylesReadByAndDateSeparator(message) ? message.groupStyles : []\n }\n isTargetedMessage={targetedMessage === message.id}\n lastReceivedId={\n lastReceivedId === message.id || message.quoted_message_id\n ? lastReceivedId\n : undefined\n }\n message={message}\n onThreadSelect={onThreadSelect}\n showUnreadUnderlay={showUnreadUnderlay}\n style={styles.messagePadding}\n threadList={threadList}\n />\n </View>\n {!shouldApplyAndroidWorkaround &&\n isMessageWithStylesReadByAndDateSeparator(message) &&\n message.dateSeparator && <InlineDateSeparator date={message.dateSeparator} />}\n {/* Adding indicator below the messages, since the list is inverted */}\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n );\n };\n\n /**\n * We are keeping full control on message pagination, and not relying on react-native for it.\n * The reasons being,\n * 1. FlatList doesn't support onStartReached prop\n * 2. `onEndReached` function prop available on react-native, gets executed\n * once per content length (and thats actually a nice optimization strategy).\n * But it also means, we always need to prioritize onEndReached above our\n * logic for `onStartReached`.\n * 3. `onEndReachedThreshold` prop decides - at which scroll position to call `onEndReached`.\n * Its a factor of content length (which is necessary for \"real\" infinite scroll). But on\n * the other hand, it also makes calls to `onEndReached` (and this `channel.query`) way\n * too early during scroll, which we don't really need. So we are going to instead\n * keep some fixed offset distance, to decide when to call `loadMore` or `loadMoreRecent`.\n *\n * We are still gonna keep the optimization, which react-native does - only call onEndReached\n * once per content length.\n */\n\n /**\n * 1. Makes a call to `loadMoreRecent` function, which queries more recent messages.\n * 2. Ensures that we call `loadMoreRecent`, once per content length\n * 3. If the call to `loadMore` is in progress, we wait for it to finish to make sure scroll doesn't jump.\n */\n const maybeCallOnStartReached = async (limit?: number) => {\n // If onStartReached has already been called for given data length, then ignore.\n if (messageList?.length && onStartReachedTracker.current[messageList.length]) {\n return;\n }\n\n if (messageList?.length) {\n onStartReachedTracker.current[messageList.length] = true;\n }\n\n const callback = () => {\n onStartReachedInPromise.current = null;\n\n return Promise.resolve();\n };\n\n const onError = () => {\n /** Release the onStartReached trigger after 2 seconds, to try again */\n setTimeout(() => {\n onStartReachedTracker.current = {};\n }, 2000);\n };\n\n // If onEndReached is in progress, better to wait for it to finish for smooth UX\n if (onEndReachedInPromise.current) {\n await onEndReachedInPromise.current;\n onStartReachedInPromise.current = loadMoreRecent(limit).then(callback).catch(onError);\n } else {\n onStartReachedInPromise.current = loadMoreRecent(limit).then(callback).catch(onError);\n }\n };\n\n /**\n * 1. Makes a call to `loadMore` function, which queries more older messages.\n * 2. Ensures that we call `loadMore`, once per content length\n * 3. If the call to `loadMoreRecent` is in progress, we wait for it to finish to make sure scroll doesn't jump.\n */\n const maybeCallOnEndReached = async () => {\n // If onEndReached has already been called for given messageList length, then ignore.\n if (messageList?.length && onEndReachedTracker.current[messageList.length]) {\n return;\n }\n\n if (messageList?.length) {\n onEndReachedTracker.current[messageList.length] = true;\n }\n\n const callback = () => {\n onEndReachedInPromise.current = null;\n return Promise.resolve();\n };\n\n const onError = () => {\n /** Release the onEndReachedTracker trigger after 2 seconds, to try again */\n setTimeout(() => {\n onEndReachedTracker.current = {};\n }, 2000);\n };\n\n // If onStartReached is in progress, better to wait for it to finish for smooth UX\n if (onStartReachedInPromise.current) {\n await onStartReachedInPromise.current;\n onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore())\n .then(callback)\n .catch(onError);\n } else {\n onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore())\n .then(callback)\n .catch(onError);\n }\n };\n\n /**\n * Following if condition covers following cases:\n * 1. If I scroll up -> show scrollToBottom button.\n * 2. If I scroll to bottom of screen\n * |-> hide scrollToBottom button.\n * |-> if channel is unread, call markRead().\n */\n const handleScroll: ScrollViewProps['onScroll'] = (event) => {\n if (!channel || !channelResyncScrollSet.current) {\n return;\n }\n\n const offset = event.nativeEvent.contentOffset.y;\n const visibleLength = event.nativeEvent.layoutMeasurement.height;\n const contentLength = event.nativeEvent.contentSize.height;\n // Check if scroll has reached either start of end of list.\n const isScrollAtStart = offset < 100;\n const isScrollAtEnd = contentLength - visibleLength - offset < 100;\n\n if (isScrollAtStart) {\n maybeCallOnStartReached();\n }\n\n if (isScrollAtEnd) {\n maybeCallOnEndReached();\n }\n\n // Show scrollToBottom button once scroll position goes beyond 300.\n const isScrollAtBottom = offset <= 300;\n const showScrollToBottomButton = !isScrollAtBottom || !hasNoMoreRecentMessagesToLoad;\n\n const shouldMarkRead =\n !threadList && offset <= 0 && hasNoMoreRecentMessagesToLoad && channel.countUnread() > 0;\n\n if (shouldMarkRead) {\n markRead();\n }\n\n setScrollToBottomButtonVisible(showScrollToBottomButton);\n\n if (onListScroll) {\n onListScroll(event);\n }\n };\n\n const goToNewMessages = async () => {\n if (!hasNoMoreRecentMessagesToLoad) {\n resetPaginationTrackersRef.current();\n await reloadChannel();\n } else if (flatListRef.current) {\n flatListRef.current.scrollToOffset({\n offset: 0,\n });\n }\n\n setScrollToBottomButtonVisible(false);\n if (!threadList) {\n markRead();\n }\n };\n\n const onScrollToIndexFailedRef = useRef<\n FlatListProps<MessageType<StreamChatGenerics>>['onScrollToIndexFailed']\n >((info) => {\n // We got a failure as we tried to scroll to an item that was outside the render length\n if (flatListRef.current) {\n // we dont know the actual size of all items but we can see the average, so scroll to the closest offset\n flatListRef.current.scrollToOffset({\n animated: false,\n offset: info.averageItemLength * info.index,\n });\n // since we used only an average offset.. we wont go to the center of the item yet\n // with a little delay to wait for scroll to offset to complete, we can then scroll to the index\n setTimeout(() => {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: info.index,\n viewPosition: 0.5, // try to place message in the center of the screen\n });\n if (messageIdLastScrolledToRef.current) {\n setTargetedMessage(messageIdLastScrolledToRef.current);\n }\n }, 150);\n }\n });\n\n const goToMessage = useCallback(\n (messageId: string) => {\n const indexOfParentInMessageList = messageList.findIndex(\n (message) => message?.id === messageId,\n );\n if (indexOfParentInMessageList !== -1 && flatListRef.current) {\n flatListRef.current.scrollToIndex({\n animated: true,\n index: indexOfParentInMessageList,\n viewPosition: 0.5, // try to place message in the center of the screen\n });\n // keep track of this messageId, so that we dont scroll to again in useEffect for targeted message change\n messageIdLastScrolledToRef.current = messageId;\n setTargetedMessage(messageId);\n return;\n }\n messageIdToScrollToRef.current = messageId; // keep track of the id to scroll afterwards\n loadChannelAroundMessage({ messageId }); // now try to load the message and whats around it\n resetPaginationTrackersRef.current();\n },\n [messageList],\n );\n\n /**\n * Check if a messageId needs to be scrolled to after list loads, and scroll to it\n * Note: This effect fires on every list change with a small debounce so that scrolling isnt abrupted by an immediate rerender\n */\n useEffect(() => {\n if (scrollToDebounceTimeoutRef.current) clearTimeout(scrollToDebounceTimeoutRef.current);\n scrollToDebounceTimeoutRef.current = setTimeout(() => {\n // goToMessage method might have requested to scroll to a message\n let messageIdToScroll: string | undefined = messageIdToScrollToRef.current;\n if (!initialScrollSet.current && initialScrollToFirstUnreadMessage) {\n // find the first unread message, if we have to initially scroll to an unread message\n for (let index = messageList.length - 1; index >= 0; index--) {\n if (isUnreadMessageRef.current(messageList[index], channelLastReadRef.current)) {\n messageIdToScroll = messageList[index].id;\n break;\n }\n }\n } else if (targetedMessage && messageIdLastScrolledToRef.current !== targetedMessage) {\n // if some messageId was targeted but not scrolledTo yet\n // we have scroll to there after loading completes\n messageIdToScroll = targetedMessage;\n }\n if (!messageIdToScroll) return;\n const indexOfParentInMessageList = messageList.findIndex(\n (message) => message?.id === messageIdToScroll,\n );\n if (indexOfParentInMessageList !== -1 && flatListRef.current) {\n flatListRef.current.scrollToIndex({\n animated: false,\n index: indexOfParentInMessageList,\n viewPosition: 0.5, // try to place message in the center of the screen\n });\n // reset the messageId tracker to not scroll to that again\n messageIdToScrollToRef.current = undefined;\n // keep track of this messageId, so that we dont scroll to again for targeted message change\n messageIdLastScrolledToRef.current = messageIdToScroll;\n if (!initialScrollSet.current && initialScrollToFirstUnreadMessage) {\n initialScrollSet.current = true;\n } else {\n setTargetedMessage(messageIdToScroll);\n }\n }\n }, 150);\n }, [messageList, targetedMessage, initialScrollToFirstUnreadMessage]);\n\n const messagesWithImages =\n legacyImageViewerSwipeBehaviour &&\n messageList.filter((message) => {\n const isMessageTypeDeleted = message.type === 'deleted';\n if (!isMessageTypeDeleted && message.attachments) {\n return message.attachments.some(\n (attachment) =>\n attachment.type === 'image' &&\n !attachment.title_link &&\n !attachment.og_scrape_url &&\n (attachment.image_url || attachment.thumb_url),\n );\n }\n return false;\n });\n\n /**\n * This is for the useEffect to run again in the case that a message\n * gets edited with more or the same number of images\n */\n const imageString =\n legacyImageViewerSwipeBehaviour &&\n messagesWithImages &&\n messagesWithImages\n .map((message) =>\n message.attachments\n ?.map((attachment) => attachment.image_url || attachment.thumb_url || '')\n .join(),\n )\n .join();\n\n const numberOfMessagesWithImages =\n legacyImageViewerSwipeBehaviour && messagesWithImages && messagesWithImages.length;\n const threadExists = !!thread;\n\n useEffect(() => {\n if (\n legacyImageViewerSwipeBehaviour &&\n isListActive &&\n ((threadList && thread) || (!threadList && !thread))\n ) {\n setMessages(messagesWithImages as MessageType<StreamChatGenerics>[]);\n }\n }, [\n imageString,\n isListActive,\n legacyImageViewerSwipeBehaviour,\n numberOfMessagesWithImages,\n threadExists,\n threadList,\n ]);\n\n const stickyHeaderFormatDate =\n stickyHeaderDate?.getFullYear() === new Date().getFullYear() ? 'MMM D' : 'MMM D, YYYY';\n const tStickyHeaderDate =\n stickyHeaderDate && !hideStickyDateHeader ? tDateTimeParser(stickyHeaderDate) : null;\n\n const stickyHeaderDateString = useMemo(() => {\n if (tStickyHeaderDate === null || hideStickyDateHeader) return null;\n if (isDayOrMoment(tStickyHeaderDate)) return tStickyHeaderDate.format(stickyHeaderFormatDate);\n\n return new Date(tStickyHeaderDate).toDateString();\n }, [tStickyHeaderDate, stickyHeaderFormatDate, hideStickyDateHeader]);\n\n const dismissImagePicker = () => {\n if (!hasMoved && selectedPicker) {\n setSelectedPicker(undefined);\n closePicker();\n }\n };\n const onScrollBeginDrag = () => !hasMoved && selectedPicker && setHasMoved(true);\n const onScrollEndDrag = () => hasMoved && selectedPicker && setHasMoved(false);\n\n const refCallback = (ref: FlatListType<MessageType<StreamChatGenerics>>) => {\n flatListRef.current = ref;\n\n if (setFlatListRef) {\n setFlatListRef(ref);\n }\n };\n\n const debugRef = useDebugContext();\n\n const isDebugModeEnabled = __DEV__ && debugRef && debugRef.current;\n\n if (isDebugModeEnabled) {\n if (debugRef.current.setEventType) debugRef.current.setEventType('send');\n if (debugRef.current.setSendEventParams)\n debugRef.current.setSendEventParams({\n action: thread ? 'ThreadList' : 'Messages',\n data: messageList,\n });\n }\n\n const renderListEmptyComponent = useCallback(\n () => (\n <View\n style={[styles.flex, shouldApplyAndroidWorkaround ? styles.invertAndroid : styles.invert]}\n testID='empty-state'\n >\n <EmptyStateIndicator listType='message' />\n </View>\n ),\n [EmptyStateIndicator, shouldApplyAndroidWorkaround],\n );\n\n const ListFooterComponent = useCallback(\n () => (\n <View style={shouldApplyAndroidWorkaround ? styles.invertAndroid : undefined}>\n <FooterComponent />\n </View>\n ),\n [shouldApplyAndroidWorkaround, FooterComponent],\n );\n\n const ListHeaderComponent = useCallback(\n () => (\n <View style={shouldApplyAndroidWorkaround ? styles.invertAndroid : undefined}>\n <HeaderComponent />\n </View>\n ),\n [shouldApplyAndroidWorkaround, HeaderComponent],\n );\n\n if (!FlatList) return null;\n\n if (loading) {\n return (\n <View style={styles.flex}>\n <LoadingIndicator listType='message' />\n </View>\n );\n }\n\n const StickyHeaderComponent = () => {\n if (!stickyHeaderDateString) return null;\n if (StickyHeader) return <StickyHeader dateString={stickyHeaderDateString} />;\n if (messageListLengthAfterUpdate) return <DateHeader dateString={stickyHeaderDateString} />;\n return null;\n };\n\n return (\n <View\n style={[styles.container, { backgroundColor: white_snow }, container]}\n testID='message-flat-list-wrapper'\n >\n <FlatList\n CellRendererComponent={\n shouldApplyAndroidWorkaround ? InvertedCellRendererComponent : undefined\n }\n contentContainerStyle={[styles.contentContainer, contentContainer]}\n data={messageList}\n /** Disables the MessageList UI. Which means, message actions, reactions won't work. */\n extraData={disabled || !hasNoMoreRecentMessagesToLoad}\n inverted={shouldApplyAndroidWorkaround ? false : inverted}\n keyboardShouldPersistTaps='handled'\n keyExtractor={keyExtractor}\n ListEmptyComponent={renderListEmptyComponent}\n ListFooterComponent={ListFooterComponent}\n ListHeaderComponent={ListHeaderComponent}\n maintainVisibleContentPosition={{\n autoscrollToTopThreshold: autoscrollToTop ? 10 : undefined,\n minIndexForVisible: 1,\n }}\n maxToRenderPerBatch={30}\n onScroll={handleScroll}\n onScrollBeginDrag={onScrollBeginDrag}\n onScrollEndDrag={onScrollEndDrag}\n onScrollToIndexFailed={onScrollToIndexFailedRef.current}\n onTouchEnd={dismissImagePicker}\n onViewableItemsChanged={onViewableItemsChanged.current}\n ref={refCallback}\n renderItem={renderItem}\n scrollEnabled={overlay === 'none'}\n showsVerticalScrollIndicator={!shouldApplyAndroidWorkaround}\n style={[\n styles.listContainer,\n listContainer,\n shouldApplyAndroidWorkaround ? styles.invertAndroid : undefined,\n ]}\n testID='message-flat-list'\n viewabilityConfig={flatListViewabilityConfig}\n {...additionalFlatListProps}\n />\n {!loading && (\n <>\n <View style={styles.stickyHeader}>\n <StickyHeaderComponent />\n </View>\n {!disableTypingIndicator && TypingIndicator && (\n <TypingIndicatorContainer>\n <TypingIndicator />\n </TypingIndicatorContainer>\n )}\n <ScrollToBottomButton\n onPress={goToNewMessages}\n showNotification={scrollToBottomButtonVisible}\n unreadCount={threadList ? 0 : channel?.countUnread()}\n />\n </>\n )}\n <NetworkDownIndicator />\n </View>\n );\n};\n\nexport type MessageListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageListPropsWithContext<StreamChatGenerics>>;\n\nexport const MessageList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageListProps<StreamChatGenerics>,\n) => {\n const { closePicker, selectedPicker, setSelectedPicker } = useAttachmentPickerContext();\n const {\n channel,\n disabled,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n error,\n hideStickyDateHeader,\n isChannelActive,\n loadChannelAroundMessage,\n loading,\n LoadingIndicator,\n markRead,\n NetworkDownIndicator,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n } = useChannelContext<StreamChatGenerics>();\n const { client } = useChatContext<StreamChatGenerics>();\n const { setMessages } = useImageGalleryContext<StreamChatGenerics>();\n const {\n DateHeader,\n disableTypingIndicator,\n FlatList,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n legacyImageViewerSwipeBehaviour,\n Message,\n MessageSystem,\n myMessageTheme,\n ScrollToBottomButton,\n TypingIndicator,\n TypingIndicatorContainer,\n } = useMessagesContext<StreamChatGenerics>();\n const { hasNoMoreRecentMessagesToLoad, loadMore, loadMoreRecent } =\n usePaginatedMessageListContext<StreamChatGenerics>();\n const { overlay } = useOverlayContext();\n const { loadMoreThread, thread } = useThreadContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n return (\n <MessageListWithContext\n {...{\n channel,\n client,\n closePicker,\n DateHeader,\n disabled,\n disableTypingIndicator,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n error,\n FlatList,\n hasNoMoreRecentMessagesToLoad,\n hideStickyDateHeader,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n isListActive: isChannelActive,\n legacyImageViewerSwipeBehaviour,\n loadChannelAroundMessage,\n loading,\n LoadingIndicator,\n loadMore,\n loadMoreRecent,\n loadMoreThread,\n markRead,\n Message,\n MessageSystem,\n myMessageTheme,\n NetworkDownIndicator,\n overlay,\n reloadChannel,\n ScrollToBottomButton,\n scrollToFirstUnreadThreshold,\n selectedPicker,\n setMessages,\n setSelectedPicker,\n setTargetedMessage,\n StickyHeader,\n t,\n targetedMessage,\n tDateTimeParser,\n thread,\n TypingIndicator,\n TypingIndicatorContainer,\n }}\n {...props}\n noGroupByUser={!enableMessageGroupingByUser || props.noGroupByUser}\n />\n );\n};\n"],"mappings":";;;;;;;;;;AAAA;AACA;AAYA;AAKA;AACA;AACA;AACA;AAEA;AAIA;AAIA;AACA;AACA;AAIA;AAIA;AAIA;AAIA;AACA;AACA;AAI8D;EAAA;AAAA;AAAA;AAI9D,IAAMA,MAAM,GAAGC,uBAAU,CAACC,MAAM,CAAC;EAC/BC,SAAS,EAAE;IACTC,UAAU,EAAE,QAAQ;IACpBC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE;EACT,CAAC;EACDC,gBAAgB,EAAE;IAChBC,QAAQ,EAAE,CAAC;IAOXC,aAAa,EAAE;EACjB,CAAC;EACDJ,IAAI,EAAE;IAAEA,IAAI,EAAE;EAAE,CAAC;EACjBK,MAAM,EAAE;IAAEC,SAAS,EAAE,CAAC;MAAEC,MAAM,EAAE,CAAC;IAAE,CAAC;EAAE,CAAC;EACvCC,aAAa,EAAE;IAGbF,SAAS,EAAE,CAAC;MAAEG,MAAM,EAAE,CAAC;IAAE,CAAC,EAAE;MAAEF,MAAM,EAAE,CAAC;IAAE,CAAC;EAC5C,CAAC;EACDG,aAAa,EAAE;IACbV,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE;EACT,CAAC;EACDU,cAAc,EAAE;IACdC,iBAAiB,EAAE;EACrB,CAAC;EACDC,YAAY,EAAE;IACZC,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE;EACP;AACF,CAAC,CAAC;AAEF,IAAMC,6BAA6B,GAAG,SAAhCA,6BAA6B,CAAIC,KAAuC;EAAA,OAC5E,gCAAC,iBAAI,gCAAKA,KAAK;IAAE,KAAK,EAAEtB,MAAM,CAACa,aAAc;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,GAAG;AAAA,CACjD;AAED,IAAMU,YAAY,GAAG,SAAfA,YAAY,CAGhBC,IAAqC,EAClC;EACH,IAAIA,IAAI,CAACC,EAAE,EAAE,OAAOD,IAAI,CAACC,EAAE;EAC3B,IAAID,IAAI,CAACE,UAAU,EACjB,OAAO,OAAOF,IAAI,CAACE,UAAU,KAAK,QAAQ,GAAGF,IAAI,CAACE,UAAU,GAAGF,IAAI,CAACE,UAAU,CAACC,WAAW,EAAE;EAC9F,OAAOC,IAAI,CAACC,GAAG,EAAE,CAACC,QAAQ,EAAE;AAC9B,CAAC;AAED,IAAMC,yBAAyB,GAAG;EAChCC,gCAAgC,EAAE;AACpC,CAAC;AAuHD,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAsB,CAG1BX,KAAsD,EACnD;EAAA;EACH,IAAMY,oBAAoB,GAAGZ,KAAK,CAACa,UAAU,GACzCC,kEAAgC,GAChCC,sDAA0B;EAC9B,IACEC,uBAAuB,GAiDrBhB,KAAK,CAjDPgB,uBAAuB;IACvBC,OAAO,GAgDLjB,KAAK,CAhDPiB,OAAO;IACPC,MAAM,GA+CJlB,KAAK,CA/CPkB,MAAM;IACNC,WAAW,GA8CTnB,KAAK,CA9CPmB,WAAW;IACXC,UAAU,GA6CRpB,KAAK,CA7CPoB,UAAU;IACVC,QAAQ,GA4CNrB,KAAK,CA5CPqB,QAAQ;IACRC,sBAAsB,GA2CpBtB,KAAK,CA3CPsB,sBAAsB;IACtBC,mBAAmB,GA0CjBvB,KAAK,CA1CPuB,mBAAmB;IACnBC,QAAQ,GAyCNxB,KAAK,CAzCPwB,QAAQ;IAAA,wBAyCNxB,KAAK,CAxCPyB,eAAe;IAAfA,eAAe,sCAAGb,oBAAoB;IACtCc,6BAA6B,GAuC3B1B,KAAK,CAvCP0B,6BAA6B;IAAA,wBAuC3B1B,KAAK,CAtCP2B,eAAe;IAAfA,eAAe,sCAAGC,kEAAgC;IAClDC,oBAAoB,GAqClB7B,KAAK,CArCP6B,oBAAoB;IACpBC,iCAAiC,GAoC/B9B,KAAK,CApCP8B,iCAAiC;IACjCC,mBAAmB,GAmCjB/B,KAAK,CAnCP+B,mBAAmB;IACnBC,qBAAqB,GAkCnBhC,KAAK,CAlCPgC,qBAAqB;IAAA,kBAkCnBhC,KAAK,CAjCPiC,QAAQ;IAARA,QAAQ,gCAAG,IAAI;IAAA,sBAiCbjC,KAAK,CAhCPkC,YAAY;IAAZA,YAAY,oCAAG,KAAK;IACpBC,+BAA+B,GA+B7BnC,KAAK,CA/BPmC,+BAA+B;IAC/BC,wBAAwB,GA8BtBpC,KAAK,CA9BPoC,wBAAwB;IACxBC,OAAO,GA6BLrC,KAAK,CA7BPqC,OAAO;IACPC,gBAAgB,GA4BdtC,KAAK,CA5BPsC,gBAAgB;IAChBC,QAAQ,GA2BNvC,KAAK,CA3BPuC,QAAQ;IACRC,cAAc,GA0BZxC,KAAK,CA1BPwC,cAAc;IACdC,cAAc,GAyBZzC,KAAK,CAzBPyC,cAAc;IACdC,QAAQ,GAwBN1C,KAAK,CAxBP0C,QAAQ;IACRC,OAAO,GAuBL3C,KAAK,CAvBP2C,OAAO;IACPC,aAAa,GAsBX5C,KAAK,CAtBP4C,aAAa;IACbC,cAAc,GAqBZ7C,KAAK,CArBP6C,cAAc;IACdC,oBAAoB,GAoBlB9C,KAAK,CApBP8C,oBAAoB;IACpBC,aAAa,GAmBX/C,KAAK,CAnBP+C,aAAa;IACbC,YAAY,GAkBVhD,KAAK,CAlBPgD,YAAY;IACZC,cAAc,GAiBZjD,KAAK,CAjBPiD,cAAc;IACdC,OAAO,GAgBLlD,KAAK,CAhBPkD,OAAO;IACPC,aAAa,GAeXnD,KAAK,CAfPmD,aAAa;IACbC,oBAAoB,GAclBpD,KAAK,CAdPoD,oBAAoB;IACpBC,4BAA4B,GAa1BrD,KAAK,CAbPqD,4BAA4B;IAC5BC,cAAc,GAYZtD,KAAK,CAZPsD,cAAc;IACdC,cAAc,GAWZvD,KAAK,CAXPuD,cAAc;IACdC,WAAW,GAUTxD,KAAK,CAVPwD,WAAW;IACXC,iBAAiB,GASfzD,KAAK,CATPyD,iBAAiB;IACjBC,kBAAkB,GAQhB1D,KAAK,CARP0D,kBAAkB;IAClBC,YAAY,GAOV3D,KAAK,CAPP2D,YAAY;IACZC,eAAe,GAMb5D,KAAK,CANP4D,eAAe;IACfC,eAAe,GAKb7D,KAAK,CALP6D,eAAe;IACfC,MAAM,GAIJ9D,KAAK,CAJP8D,MAAM;IAAA,oBAIJ9D,KAAK,CAHPa,UAAU;IAAVA,UAAU,kCAAG,KAAK;IAClBkD,eAAe,GAEb/D,KAAK,CAFP+D,eAAe;IACfC,wBAAwB,GACtBhE,KAAK,CADPgE,wBAAwB;EAG1B,gBAAkB,IAAAC,sBAAQ,GAAE;IAApBC,KAAK,aAALA,KAAK;EAEb,IACYC,UAAU,GAElBD,KAAK,CAFPE,MAAM,CAAID,UAAU;IAAA,qBAElBD,KAAK,CADPG,WAAW;IAAIxF,SAAS,sBAATA,SAAS;IAAEI,gBAAgB,sBAAhBA,gBAAgB;IAAEQ,aAAa,sBAAbA,aAAa;EAG3D,IAAM6E,aAAa,GAAG,IAAAC,cAAO,EAC3B;IAAA,OAAM,IAAAC,yBAAW,EAAC;MAAEC,KAAK,EAAE5B,cAAc;MAAEqB,KAAK,EAALA;IAAM,CAAC,CAAC;EAAA,GACnD,CAACrB,cAAc,EAAEqB,KAAK,CAAC,CACxB;EAED,IAAMG,WAAW,GAAG,IAAAK,8BAAc,EAAqB;IACrD3B,aAAa,EAAbA,aAAa;IACblC,UAAU,EAAVA;EACF,CAAC,CAAC;EACF,IAAM8D,6BAA6B,GAAG,IAAAC,aAAM,EAAC,CAAC,CAAC;EAC/C,IAAMC,4BAA4B,GAAGR,WAAW,CAACS,MAAM;EAMvD,IAAMC,sBAAsB,GAAG,IAAAH,aAAM,GAAmC;EACxE,IAAMI,qBAAqB,GAAGX,WAAW,CAACA,WAAW,CAACS,MAAM,GAAG,CAAC,CAAC;EAEjE,gBAA8C,IAAAG,eAAQ,EAAC,KAAK,CAAC;IAAA;IAAtDC,eAAe;IAAEC,kBAAkB;EAM1C,IAAMC,qBAAqB,GAAG,IAAAR,aAAM,EAA0B,CAAC,CAAC,CAAC;EACjE,IAAMS,mBAAmB,GAAG,IAAAT,aAAM,EAA0B,CAAC,CAAC,CAAC;EAE/D,IAAMU,uBAAuB,GAAG,IAAAV,aAAM,EAAuB,IAAI,CAAC;EAClE,IAAMW,qBAAqB,GAAG,IAAAX,aAAM,EAAuB,IAAI,CAAC;EAEhE,IAAMY,WAAW,GAAG,IAAAZ,aAAM,EAAuD,IAAI,CAAC;EAOtF,IAAMa,gBAAgB,GAAG,IAAAb,aAAM,EAAU,CAAC9C,iCAAiC,CAAC;EAE5E,IAAM4D,sBAAsB,GAAG,IAAAd,aAAM,EAAU,IAAI,CAAC;EAKpD,IAAMe,0BAA0B,GAAG,IAAAf,aAAM,GAAkB;EAM3D,IAAMgB,sBAAsB,GAAG,IAAAhB,aAAM,GAAU;EAK/C,IAAMiB,0BAA0B,GAAG,IAAAjB,aAAM,GAAU;EACnD,iBAAgC,IAAAK,eAAQ,EAAC,KAAK,CAAC;IAAA;IAAxCa,QAAQ;IAAEC,WAAW;EAC5B,iBAA4C,IAAAd,eAAQ,2BAAC,IAAAe,8CAAsB,EAAC3B,WAAW,CAAC,qBAAnC,sBAAqClE,EAAE,CAAC;IAAA;IAAtF8F,cAAc;IAAEC,iBAAiB;EACxC,iBAAsE,IAAAjB,eAAQ,EAAC,KAAK,CAAC;IAAA;IAA9EkB,2BAA2B;IAAEC,8BAA8B;EAElE,iBAAgD,IAAAnB,eAAQ,GAAoB;IAAA;IAArEoB,gBAAgB;IAAEC,mBAAmB;EAC5C,IAAMC,mBAAmB,GAAG,IAAA3B,aAAM,GAAoB;EAEtD,IAAM4B,kBAAkB,GAAG,IAAA5B,aAAM,EAC/B,UACE6B,OAAoD,EACpDC,QAAoE;IAAA,OACjED,OAAO,IAAIC,QAAQ,IAAID,OAAO,CAACrG,UAAU,IAAIsG,QAAQ,GAAGD,OAAO,CAACrG,UAAU;EAAA,EAChF;EAED,IAAMuG,kBAAkB,GAAG,IAAA/B,aAAM,EAAC3D,OAAO,YAAPA,OAAO,CAAE2F,WAAW,GAAG3F,OAAO,CAACyF,QAAQ,EAAE,GAAGG,SAAS,CAAC;EAExF,IAAAC,gBAAS,EAAC,YAAM;IACdH,kBAAkB,CAACI,OAAO,GAAG9F,OAAO,YAAPA,OAAO,CAAE2F,WAAW,GAAG3F,OAAO,CAACyF,QAAQ,EAAE,GAAGG,SAAS;EACpF,CAAC,EAAE,CAAC5F,OAAO,CAAC,CAAC;EAEb,IAAM+F,8BAA8B,GAAG,SAAjCA,8BAA8B,CAAIC,aAA0B,EAAK;IACrE,IAAIA,aAAa,CAACnC,MAAM,EAAE;MAAA;MACxB,IAAMoC,QAAQ,GAAGD,aAAa,CAACE,GAAG,EAEjC;MAED,IAAMC,oBAAoB,GAAGF,QAAQ,CAAChH,IAAI,CAACmH,IAAI,KAAK,SAAS;MAE7D,IACEH,QAAQ,8BAARA,QAAQ,CAAEhH,IAAI,aAAd,eAAgBE,UAAU,IAC1B,CAACgH,oBAAoB,IACrB,OAAOF,QAAQ,CAAChH,IAAI,CAACE,UAAU,KAAK,QAAQ,IAC5C8G,QAAQ,CAAChH,IAAI,CAACE,UAAU,CAACkH,YAAY,EAAE,+BAAKf,mBAAmB,CAACQ,OAAO,qBAA3B,sBAA6BO,YAAY,EAAE,GACvF;QACAf,mBAAmB,CAACQ,OAAO,GAAGG,QAAQ,CAAChH,IAAI,CAACE,UAAU;QACtDkG,mBAAmB,CAACY,QAAQ,CAAChH,IAAI,CAACE,UAAU,CAAC;MAC/C;IACF;EACF,CAAC;EAMD,IAAMmH,sBAAsB,GAAG,IAAA3C,aAAM,EACnC,gBAAmE;IAAA,IAAhEqC,aAAa,QAAbA,aAAa;IASd,IACEO,qBAAQ,CAACC,EAAE,KAAK,SAAS,IACzBR,aAAa,YAAbA,aAAa,CAAEnC,MAAM,IACrB,CAAAmC,aAAa,oBAAbA,aAAa,CAAEnC,MAAM,KAAIH,6BAA6B,CAACoC,OAAO,EAC9D;MACA9F,OAAO,CAACyB,QAAQ,EAAE;IACpB;IAEA,IAAIuE,aAAa,IAAI,CAACpF,oBAAoB,EAAE;MAC1CmF,8BAA8B,CAACC,aAAa,CAAC;IAC/C;EACF,CAAC,CACF;EAKD,IAAMS,0BAA0B,GAAG,IAAA9C,aAAM,EAAC,YAAM;IAC9CQ,qBAAqB,CAAC2B,OAAO,GAAG,CAAC,CAAC;IAClC1B,mBAAmB,CAAC0B,OAAO,GAAG,CAAC,CAAC;EAClC,CAAC,CAAC;EAEF,IAAAD,gBAAS,EAAC,YAAM;IACdV,8BAA8B,CAAC,KAAK,CAAC;EACvC,CAAC,EAAE,CAAC/E,QAAQ,CAAC,CAAC;EAEd,IAAAyF,gBAAS,EAAC,YAAM;IAad,IAAMa,yBAAyB,GAC7B,CAACtF,OAAO,IACRpB,OAAO,KACL,CAACa,iCAAiC,IAAIb,OAAO,CAAC2G,WAAW,EAAE,GAAG,CAAC,IAC9D9F,iCAAiC,IAChCb,OAAO,CAAC2G,WAAW,EAAE,IAAIvE,4BAA6B,CAAC;IAE7D,IAAIsE,yBAAyB,EAAE;MAC7BjF,QAAQ,EAAE;IACZ;EACF,CAAC,EAAE,CAACL,OAAO,CAAC,CAAC;EAEb,IAAAyE,gBAAS,EAAC,YAAM;IAAA;IACd,IAAMe,mBAAmB,GAAG,IAAA7B,8CAAsB,EAAC3B,WAAW,CAAC;IAE/D,IAAMyD,aAAa,GAAG7B,cAAc,MAAK4B,mBAAmB,oBAAnBA,mBAAmB,CAAE1H,EAAE;IAChE,IAAM4H,WAAW,GAAG,CAAAF,mBAAmB,6CAAnBA,mBAAmB,CAAEG,IAAI,qBAAzB,sBAA2B7H,EAAE,MAAKe,MAAM,CAAC+G,MAAM;IAEnE/B,iBAAiB,CAAC2B,mBAAmB,oBAAnBA,mBAAmB,CAAE1H,EAAE,CAAC;IAQ1C,IAAM+H,sBAAsB,GAAG,SAAzBA,sBAAsB,GAAS;MAAA;MACnC,IAAI,CAAChH,MAAM,IAAI,CAACD,OAAO,IAAIoD,WAAW,CAACS,MAAM,KAAK,CAAC,EAAE;QACnD;MACF;MACA,IACGgD,aAAa,IAAIC,WAAW,IAC7BlD,4BAA4B,GAAGF,6BAA6B,CAACoC,OAAO,IACnE,yBAAAhC,sBAAsB,CAACgC,OAAO,aAA9B,sBAAgC3G,UAAU,IACzC4E,qBAAqB,YAArBA,qBAAqB,CAAE5E,UAAU,IACjC2E,sBAAsB,CAACgC,OAAO,CAAC3G,UAAU,GAAG4E,qBAAqB,CAAC5E,UAAW,EAC/E;QACAsF,sBAAsB,CAACqB,OAAO,GAAG,KAAK;QACtCX,8BAA8B,CAAC,KAAK,CAAC;QACrCsB,0BAA0B,CAACX,OAAO,EAAE;QAEpCoB,UAAU,CAAC,YAAM;UAAA;UACf,wBAAA3C,WAAW,CAACuB,OAAO,qBAAnB,qBAAqBqB,cAAc,CAAC;YAClCC,MAAM,EAAE;UACV,CAAC,CAAC;QACJ,CAAC,EAAE,EAAE,CAAC;QACNF,UAAU,CAAC,YAAM;UACfzC,sBAAsB,CAACqB,OAAO,GAAG,IAAI;UACrC,IAAI9F,OAAO,CAAC2G,WAAW,EAAE,GAAG,CAAC,EAAE;YAC7BlF,QAAQ,EAAE;UACZ;QACF,CAAC,EAAE,GAAG,CAAC;MACT;IACF,CAAC;IAED,IAAI7B,UAAU,IAAIa,6BAA6B,EAAE;MAC/CwG,sBAAsB,EAAE;IAC1B,CAAC,MAAM,IAAI,CAAC/B,2BAA2B,EAAE;MACvCC,8BAA8B,CAAC,IAAI,CAAC;IACtC;IAEA,IACE,CAAC1E,6BAA6B,IAC9B8D,WAAW,CAACuB,OAAO,IACnBpC,6BAA6B,CAACoC,OAAO,KAAK,CAAC,IAC3ClC,4BAA4B,GAAG,EAAE,EACjC;MAKAyD,uBAAuB,CAAC,EAAE,CAAC;IAC7B;IAEA3D,6BAA6B,CAACoC,OAAO,GAAGlC,4BAA4B;IACpEE,sBAAsB,CAACgC,OAAO,GAAG/B,qBAAqB;EACxD,CAAC,EAAE,CAACH,4BAA4B,EAAEG,qBAAqB,oBAArBA,qBAAqB,CAAE7E,EAAE,CAAC,CAAC;EAE7D,IAAA2G,gBAAS,EAAC,YAAM;IACd3B,kBAAkB,CAACzD,6BAA6B,CAAC;EACnD,CAAC,EAAE,CAAC2C,WAAW,EAAE3C,6BAA6B,CAAC,CAAC;EAEhD,IAAM6G,4BAA4B,GAAGtG,QAAQ,IAAIuF,qBAAQ,CAACC,EAAE,KAAK,SAAS;EAE1E,IAAMe,UAAU,GAAG,SAAbA,UAAU,QAMV;IAAA;IAAA,IALJC,KAAK,SAALA,KAAK;MACChC,OAAO,SAAbvG,IAAI;IAKJ,IAAI,CAACe,OAAO,IAAK,CAACA,OAAO,CAAC2F,WAAW,IAAI,CAAC3F,OAAO,CAACyH,WAAY,EAAE,OAAO,IAAI;IAE3E,IAAMhC,QAAQ,GAAGzF,OAAO,CAACyF,QAAQ,EAAE;IAEnC,IAAMiC,WAAW,GAAGtE,WAAW,oBAAXA,WAAW,CAAGoE,KAAK,GAAG,CAAC,CAAC;IAE5C,IAAMG,kBAAkB,GACtB,CAAC,CAACpC,kBAAkB,CAACO,OAAO,CAACN,OAAO,EAAEC,QAAQ,CAAC,IAAIP,2BAA2B;IAChF,IAAM0C,2BAA2B,GAC/BD,kBAAkB,IAAI,CAACpC,kBAAkB,CAACO,OAAO,CAAC4B,WAAW,EAAEjC,QAAQ,CAAC;IAE1E,IAAID,OAAO,CAACY,IAAI,KAAK,QAAQ,EAAE;MAC7B,OACE;QAAA;UAAA;UAAA;UAAA;QAAA;MAAA,GACE,gCAAC,iBAAI;QAAC,MAAM,yBAAuBoB,KAAQ;QAAA;QAAA;UAAA;UAAA;UAAA;QAAA;MAAA,GACzC,gCAAC,aAAa;QAAC,OAAO,EAAEhC,OAAQ;QAAC,KAAK,EAAE/H,MAAM,CAACgB,cAAe;QAAA;QAAA;UAAA;UAAA;UAAA;QAAA;MAAA,EAAG,CAC5D,EACNmJ,2BAA2B,IAAI,gCAAC,qBAAqB;QAAA;QAAA;UAAA;UAAA;UAAA;QAAA;MAAA,EAAG,CACxD;IAEP;IAEA,IAAMC,kBAAkB,GAAG5H,MAAM,CAAC+G,MAAM,uBAAKxB,OAAO,CAACuB,IAAI,qBAAZ,cAAc7H,EAAE,KAAI,CAAC,CAAC0C,cAAc;IACjF,OAAOiG,kBAAkB,GACvB;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GACGP,4BAA4B,IAC3B,IAAAQ,yDAAyC,EAACtC,OAAO,CAAC,IAClDA,OAAO,CAACuC,aAAa,IAAI,gCAAC,mBAAmB;MAAC,IAAI,EAAEvC,OAAO,CAACuC,aAAc;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EAAG,EAC/E,gCAAC,2BAAa;MAAC,WAAW,EAAE1E,aAAc;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GACxC,gCAAC,iBAAI;MAAC,MAAM,yBAAuBmE,KAAQ;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GACzC,gCAAC,OAAO;MACN,WAAW,EAAEQ,WAAY;MACzB,WAAW,EACT,IAAAF,yDAAyC,EAACtC,OAAO,CAAC,GAAGA,OAAO,CAACyC,WAAW,GAAG,EAC5E;MACD,iBAAiB,EAAEtF,eAAe,KAAK6C,OAAO,CAACtG,EAAG;MAClD,cAAc,EAAE8F,cAAc,KAAKQ,OAAO,CAACtG,EAAE,GAAG8F,cAAc,GAAGY,SAAU;MAC3E,OAAO,EAAEJ,OAAQ;MACjB,cAAc,EAAExD,cAAe;MAC/B,kBAAkB,EAAE2F,kBAAmB;MACvC,KAAK,EAAElK,MAAM,CAACgB,cAAe;MAC7B,UAAU,EAAEmB,UAAW;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EACvB,CACG,CACO,EACf,CAAC0H,4BAA4B,IAC5B,IAAAQ,yDAAyC,EAACtC,OAAO,CAAC,IAClDA,OAAO,CAACuC,aAAa,IAAI,gCAAC,mBAAmB;MAAC,IAAI,EAAEvC,OAAO,CAACuC,aAAc;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EAAG,EAE9EH,2BAA2B,IAAI,gCAAC,qBAAqB;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EAAG,CACxD,GAEH;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GACE,gCAAC,iBAAI;MAAC,MAAM,yBAAuBJ,KAAQ;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GACxCF,4BAA4B,IAC3B,IAAAQ,yDAAyC,EAACtC,OAAO,CAAC,IAClDA,OAAO,CAACuC,aAAa,IAAI,gCAAC,mBAAmB;MAAC,IAAI,EAAEvC,OAAO,CAACuC,aAAc;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EAAG,EAC/E,gCAAC,OAAO;MACN,WAAW,EAAEC,WAAY;MACzB,WAAW,EACT,IAAAF,yDAAyC,EAACtC,OAAO,CAAC,GAAGA,OAAO,CAACyC,WAAW,GAAG,EAC5E;MACD,iBAAiB,EAAEtF,eAAe,KAAK6C,OAAO,CAACtG,EAAG;MAClD,cAAc,EACZ8F,cAAc,KAAKQ,OAAO,CAACtG,EAAE,IAAIsG,OAAO,CAAC0C,iBAAiB,GACtDlD,cAAc,GACdY,SACL;MACD,OAAO,EAAEJ,OAAQ;MACjB,cAAc,EAAExD,cAAe;MAC/B,kBAAkB,EAAE2F,kBAAmB;MACvC,KAAK,EAAElK,MAAM,CAACgB,cAAe;MAC7B,UAAU,EAAEmB,UAAW;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EACvB,CACG,EACN,CAAC0H,4BAA4B,IAC5B,IAAAQ,yDAAyC,EAACtC,OAAO,CAAC,IAClDA,OAAO,CAACuC,aAAa,IAAI,gCAAC,mBAAmB;MAAC,IAAI,EAAEvC,OAAO,CAACuC,aAAc;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EAAG,EAE9EH,2BAA2B,IAAI,gCAAC,qBAAqB;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EAAG,CAE5D;EACH,CAAC;EAyBD,IAAMP,uBAAuB;IAAA,4EAAG,iBAAOc,KAAc;MAAA;MAAA;QAAA;UAAA;YAAA,MAE/C/E,WAAW,YAAXA,WAAW,CAAES,MAAM,IAAIM,qBAAqB,CAAC2B,OAAO,CAAC1C,WAAW,CAACS,MAAM,CAAC;cAAA;cAAA;YAAA;YAAA;UAAA;YAI5E,IAAIT,WAAW,YAAXA,WAAW,CAAES,MAAM,EAAE;cACvBM,qBAAqB,CAAC2B,OAAO,CAAC1C,WAAW,CAACS,MAAM,CAAC,GAAG,IAAI;YAC1D;YAEMuE,QAAQ,GAAG,SAAXA,QAAQ,GAAS;cACrB/D,uBAAuB,CAACyB,OAAO,GAAG,IAAI;cAEtC,OAAOuC,OAAO,CAACC,OAAO,EAAE;YAC1B,CAAC;YAEKC,OAAO,GAAG,SAAVA,OAAO,GAAS;cAEpBrB,UAAU,CAAC,YAAM;gBACf/C,qBAAqB,CAAC2B,OAAO,GAAG,CAAC,CAAC;cACpC,CAAC,EAAE,IAAI,CAAC;YACV,CAAC;YAAA,KAGGxB,qBAAqB,CAACwB,OAAO;cAAA;cAAA;YAAA;YAAA;YAAA,OACzBxB,qBAAqB,CAACwB,OAAO;UAAA;YACnCzB,uBAAuB,CAACyB,OAAO,GAAGvE,cAAc,CAAC4G,KAAK,CAAC,CAACK,IAAI,CAACJ,QAAQ,CAAC,SAAM,CAACG,OAAO,CAAC;YAAC;YAAA;UAAA;YAEtFlE,uBAAuB,CAACyB,OAAO,GAAGvE,cAAc,CAAC4G,KAAK,CAAC,CAACK,IAAI,CAACJ,QAAQ,CAAC,SAAM,CAACG,OAAO,CAAC;UAAC;UAAA;YAAA;QAAA;MAAA;IAAA,CAEzF;IAAA,gBA9BKlB,uBAAuB;MAAA;IAAA;EAAA,GA8B5B;EAOD,IAAMoB,qBAAqB;IAAA,4EAAG;MAAA;MAAA;QAAA;UAAA;YAAA,MAExBrF,WAAW,YAAXA,WAAW,CAAES,MAAM,IAAIO,mBAAmB,CAAC0B,OAAO,CAAC1C,WAAW,CAACS,MAAM,CAAC;cAAA;cAAA;YAAA;YAAA;UAAA;YAI1E,IAAIT,WAAW,YAAXA,WAAW,CAAES,MAAM,EAAE;cACvBO,mBAAmB,CAAC0B,OAAO,CAAC1C,WAAW,CAACS,MAAM,CAAC,GAAG,IAAI;YACxD;YAEMuE,QAAQ,GAAG,SAAXA,QAAQ,GAAS;cACrB9D,qBAAqB,CAACwB,OAAO,GAAG,IAAI;cACpC,OAAOuC,OAAO,CAACC,OAAO,EAAE;YAC1B,CAAC;YAEKC,OAAO,GAAG,SAAVA,OAAO,GAAS;cAEpBrB,UAAU,CAAC,YAAM;gBACf9C,mBAAmB,CAAC0B,OAAO,GAAG,CAAC,CAAC;cAClC,CAAC,EAAE,IAAI,CAAC;YACV,CAAC;YAAA,KAGGzB,uBAAuB,CAACyB,OAAO;cAAA;cAAA;YAAA;YAAA;YAAA,OAC3BzB,uBAAuB,CAACyB,OAAO;UAAA;YACrCxB,qBAAqB,CAACwB,OAAO,GAAG,CAAClG,UAAU,GAAG4B,cAAc,EAAE,GAAGF,QAAQ,EAAE,EACxEkH,IAAI,CAACJ,QAAQ,CAAC,SACT,CAACG,OAAO,CAAC;YAAC;YAAA;UAAA;YAElBjE,qBAAqB,CAACwB,OAAO,GAAG,CAAClG,UAAU,GAAG4B,cAAc,EAAE,GAAGF,QAAQ,EAAE,EACxEkH,IAAI,CAACJ,QAAQ,CAAC,SACT,CAACG,OAAO,CAAC;UAAC;UAAA;YAAA;QAAA;MAAA;IAAA,CAErB;IAAA,gBAjCKE,qBAAqB;MAAA;IAAA;EAAA,GAiC1B;EASD,IAAMC,YAAyC,GAAG,SAA5CA,YAAyC,CAAIC,KAAK,EAAK;IAC3D,IAAI,CAAC3I,OAAO,IAAI,CAACyE,sBAAsB,CAACqB,OAAO,EAAE;MAC/C;IACF;IAEA,IAAMsB,MAAM,GAAGuB,KAAK,CAACC,WAAW,CAACC,aAAa,CAACC,CAAC;IAChD,IAAMC,aAAa,GAAGJ,KAAK,CAACC,WAAW,CAACI,iBAAiB,CAACC,MAAM;IAChE,IAAMC,aAAa,GAAGP,KAAK,CAACC,WAAW,CAACO,WAAW,CAACF,MAAM;IAE1D,IAAMG,eAAe,GAAGhC,MAAM,GAAG,GAAG;IACpC,IAAMiC,aAAa,GAAGH,aAAa,GAAGH,aAAa,GAAG3B,MAAM,GAAG,GAAG;IAElE,IAAIgC,eAAe,EAAE;MACnB/B,uBAAuB,EAAE;IAC3B;IAEA,IAAIgC,aAAa,EAAE;MACjBZ,qBAAqB,EAAE;IACzB;IAGA,IAAMa,gBAAgB,GAAGlC,MAAM,IAAI,GAAG;IACtC,IAAMmC,wBAAwB,GAAG,CAACD,gBAAgB,IAAI,CAAC7I,6BAA6B;IAEpF,IAAM+I,cAAc,GAClB,CAAC5J,UAAU,IAAIwH,MAAM,IAAI,CAAC,IAAI3G,6BAA6B,IAAIT,OAAO,CAAC2G,WAAW,EAAE,GAAG,CAAC;IAE1F,IAAI6C,cAAc,EAAE;MAClB/H,QAAQ,EAAE;IACZ;IAEA0D,8BAA8B,CAACoE,wBAAwB,CAAC;IAExD,IAAIxH,YAAY,EAAE;MAChBA,YAAY,CAAC4G,KAAK,CAAC;IACrB;EACF,CAAC;EAED,IAAMc,eAAe;IAAA,4EAAG;MAAA;QAAA;UAAA;YAAA,IACjBhJ,6BAA6B;cAAA;cAAA;YAAA;YAChCgG,0BAA0B,CAACX,OAAO,EAAE;YAAC;YAAA,OAC/B5D,aAAa,EAAE;UAAA;YAAA;YAAA;UAAA;YAChB,IAAIqC,WAAW,CAACuB,OAAO,EAAE;cAC9BvB,WAAW,CAACuB,OAAO,CAACqB,cAAc,CAAC;gBACjCC,MAAM,EAAE;cACV,CAAC,CAAC;YACJ;UAAC;YAEDjC,8BAA8B,CAAC,KAAK,CAAC;YACrC,IAAI,CAACvF,UAAU,EAAE;cACf6B,QAAQ,EAAE;YACZ;UAAC;UAAA;YAAA;QAAA;MAAA;IAAA,CACF;IAAA,gBAdKgI,eAAe;MAAA;IAAA;EAAA,GAcpB;EAED,IAAMC,wBAAwB,GAAG,IAAA/F,aAAM,EAErC,UAACgG,IAAI,EAAK;IAEV,IAAIpF,WAAW,CAACuB,OAAO,EAAE;MAEvBvB,WAAW,CAACuB,OAAO,CAACqB,cAAc,CAAC;QACjCyC,QAAQ,EAAE,KAAK;QACfxC,MAAM,EAAEuC,IAAI,CAACE,iBAAiB,GAAGF,IAAI,CAACnC;MACxC,CAAC,CAAC;MAGFN,UAAU,CAAC,YAAM;QAAA;QACf,yBAAA3C,WAAW,CAACuB,OAAO,qBAAnB,sBAAqBgE,aAAa,CAAC;UACjCF,QAAQ,EAAE,KAAK;UACfpC,KAAK,EAAEmC,IAAI,CAACnC,KAAK;UACjBuC,YAAY,EAAE;QAChB,CAAC,CAAC;QACF,IAAInF,0BAA0B,CAACkB,OAAO,EAAE;UACtCrD,kBAAkB,CAACmC,0BAA0B,CAACkB,OAAO,CAAC;QACxD;MACF,CAAC,EAAE,GAAG,CAAC;IACT;EACF,CAAC,CAAC;EAEF,IAAMkC,WAAW,GAAG,IAAAgC,kBAAW,EAC7B,UAACC,SAAiB,EAAK;IACrB,IAAMC,0BAA0B,GAAG9G,WAAW,CAAC+G,SAAS,CACtD,UAAC3E,OAAO;MAAA,OAAK,CAAAA,OAAO,oBAAPA,OAAO,CAAEtG,EAAE,MAAK+K,SAAS;IAAA,EACvC;IACD,IAAIC,0BAA0B,KAAK,CAAC,CAAC,IAAI3F,WAAW,CAACuB,OAAO,EAAE;MAC5DvB,WAAW,CAACuB,OAAO,CAACgE,aAAa,CAAC;QAChCF,QAAQ,EAAE,IAAI;QACdpC,KAAK,EAAE0C,0BAA0B;QACjCH,YAAY,EAAE;MAChB,CAAC,CAAC;MAEFnF,0BAA0B,CAACkB,OAAO,GAAGmE,SAAS;MAC9CxH,kBAAkB,CAACwH,SAAS,CAAC;MAC7B;IACF;IACAtF,sBAAsB,CAACmB,OAAO,GAAGmE,SAAS;IAC1C9I,wBAAwB,CAAC;MAAE8I,SAAS,EAATA;IAAU,CAAC,CAAC;IACvCxD,0BAA0B,CAACX,OAAO,EAAE;EACtC,CAAC,EACD,CAAC1C,WAAW,CAAC,CACd;EAMD,IAAAyC,gBAAS,EAAC,YAAM;IACd,IAAInB,0BAA0B,CAACoB,OAAO,EAAEsE,YAAY,CAAC1F,0BAA0B,CAACoB,OAAO,CAAC;IACxFpB,0BAA0B,CAACoB,OAAO,GAAGoB,UAAU,CAAC,YAAM;MAEpD,IAAImD,iBAAqC,GAAG1F,sBAAsB,CAACmB,OAAO;MAC1E,IAAI,CAACtB,gBAAgB,CAACsB,OAAO,IAAIjF,iCAAiC,EAAE;QAElE,KAAK,IAAI2G,KAAK,GAAGpE,WAAW,CAACS,MAAM,GAAG,CAAC,EAAE2D,KAAK,IAAI,CAAC,EAAEA,KAAK,EAAE,EAAE;UAC5D,IAAIjC,kBAAkB,CAACO,OAAO,CAAC1C,WAAW,CAACoE,KAAK,CAAC,EAAE9B,kBAAkB,CAACI,OAAO,CAAC,EAAE;YAC9EuE,iBAAiB,GAAGjH,WAAW,CAACoE,KAAK,CAAC,CAACtI,EAAE;YACzC;UACF;QACF;MACF,CAAC,MAAM,IAAIyD,eAAe,IAAIiC,0BAA0B,CAACkB,OAAO,KAAKnD,eAAe,EAAE;QAGpF0H,iBAAiB,GAAG1H,eAAe;MACrC;MACA,IAAI,CAAC0H,iBAAiB,EAAE;MACxB,IAAMH,0BAA0B,GAAG9G,WAAW,CAAC+G,SAAS,CACtD,UAAC3E,OAAO;QAAA,OAAK,CAAAA,OAAO,oBAAPA,OAAO,CAAEtG,EAAE,MAAKmL,iBAAiB;MAAA,EAC/C;MACD,IAAIH,0BAA0B,KAAK,CAAC,CAAC,IAAI3F,WAAW,CAACuB,OAAO,EAAE;QAC5DvB,WAAW,CAACuB,OAAO,CAACgE,aAAa,CAAC;UAChCF,QAAQ,EAAE,KAAK;UACfpC,KAAK,EAAE0C,0BAA0B;UACjCH,YAAY,EAAE;QAChB,CAAC,CAAC;QAEFpF,sBAAsB,CAACmB,OAAO,GAAGF,SAAS;QAE1ChB,0BAA0B,CAACkB,OAAO,GAAGuE,iBAAiB;QACtD,IAAI,CAAC7F,gBAAgB,CAACsB,OAAO,IAAIjF,iCAAiC,EAAE;UAClE2D,gBAAgB,CAACsB,OAAO,GAAG,IAAI;QACjC,CAAC,MAAM;UACLrD,kBAAkB,CAAC4H,iBAAiB,CAAC;QACvC;MACF;IACF,CAAC,EAAE,GAAG,CAAC;EACT,CAAC,EAAE,CAACjH,WAAW,EAAET,eAAe,EAAE9B,iCAAiC,CAAC,CAAC;EAErE,IAAMyJ,kBAAkB,GACtBpJ,+BAA+B,IAC/BkC,WAAW,CAACmH,MAAM,CAAC,UAAC/E,OAAO,EAAK;IAC9B,IAAMW,oBAAoB,GAAGX,OAAO,CAACY,IAAI,KAAK,SAAS;IACvD,IAAI,CAACD,oBAAoB,IAAIX,OAAO,CAACgF,WAAW,EAAE;MAChD,OAAOhF,OAAO,CAACgF,WAAW,CAACC,IAAI,CAC7B,UAACC,UAAU;QAAA,OACTA,UAAU,CAACtE,IAAI,KAAK,OAAO,IAC3B,CAACsE,UAAU,CAACC,UAAU,IACtB,CAACD,UAAU,CAACE,aAAa,KACxBF,UAAU,CAACG,SAAS,IAAIH,UAAU,CAACI,SAAS,CAAC;MAAA,EACjD;IACH;IACA,OAAO,KAAK;EACd,CAAC,CAAC;EAMJ,IAAMC,WAAW,GACf7J,+BAA+B,IAC/BoJ,kBAAkB,IAClBA,kBAAkB,CACfU,GAAG,CAAC,UAACxF,OAAO;IAAA;IAAA,+BACXA,OAAO,CAACgF,WAAW,qBAAnB,qBACIQ,GAAG,CAAC,UAACN,UAAU;MAAA,OAAKA,UAAU,CAACG,SAAS,IAAIH,UAAU,CAACI,SAAS,IAAI,EAAE;IAAA,EAAC,CACxEG,IAAI,EAAE;EAAA,EACV,CACAA,IAAI,EAAE;EAEX,IAAMC,0BAA0B,GAC9BhK,+BAA+B,IAAIoJ,kBAAkB,IAAIA,kBAAkB,CAACzG,MAAM;EACpF,IAAMsH,YAAY,GAAG,CAAC,CAACtI,MAAM;EAE7B,IAAAgD,gBAAS,EAAC,YAAM;IACd,IACE3E,+BAA+B,IAC/BD,YAAY,KACVrB,UAAU,IAAIiD,MAAM,IAAM,CAACjD,UAAU,IAAI,CAACiD,MAAO,CAAC,EACpD;MACAN,WAAW,CAAC+H,kBAAkB,CAAsC;IACtE;EACF,CAAC,EAAE,CACDS,WAAW,EACX9J,YAAY,EACZC,+BAA+B,EAC/BgK,0BAA0B,EAC1BC,YAAY,EACZvL,UAAU,CACX,CAAC;EAEF,IAAMwL,sBAAsB,GAC1B,CAAAhG,gBAAgB,oBAAhBA,gBAAgB,CAAEiG,WAAW,EAAE,MAAK,IAAIhM,IAAI,EAAE,CAACgM,WAAW,EAAE,GAAG,OAAO,GAAG,aAAa;EACxF,IAAMC,iBAAiB,GACrBlG,gBAAgB,IAAI,CAACxE,oBAAoB,GAAGgC,eAAe,CAACwC,gBAAgB,CAAC,GAAG,IAAI;EAEtF,IAAMmG,sBAAsB,GAAG,IAAAjI,cAAO,EAAC,YAAM;IAC3C,IAAIgI,iBAAiB,KAAK,IAAI,IAAI1K,oBAAoB,EAAE,OAAO,IAAI;IACnE,IAAI,IAAA4K,iCAAa,EAACF,iBAAiB,CAAC,EAAE,OAAOA,iBAAiB,CAACG,MAAM,CAACL,sBAAsB,CAAC;IAE7F,OAAO,IAAI/L,IAAI,CAACiM,iBAAiB,CAAC,CAACjF,YAAY,EAAE;EACnD,CAAC,EAAE,CAACiF,iBAAiB,EAAEF,sBAAsB,EAAExK,oBAAoB,CAAC,CAAC;EAErE,IAAM8K,kBAAkB,GAAG,SAArBA,kBAAkB,GAAS;IAC/B,IAAI,CAAC7G,QAAQ,IAAIxC,cAAc,EAAE;MAC/BG,iBAAiB,CAACoD,SAAS,CAAC;MAC5B1F,WAAW,EAAE;IACf;EACF,CAAC;EACD,IAAMyL,iBAAiB,GAAG,SAApBA,iBAAiB;IAAA,OAAS,CAAC9G,QAAQ,IAAIxC,cAAc,IAAIyC,WAAW,CAAC,IAAI,CAAC;EAAA;EAChF,IAAM8G,eAAe,GAAG,SAAlBA,eAAe;IAAA,OAAS/G,QAAQ,IAAIxC,cAAc,IAAIyC,WAAW,CAAC,KAAK,CAAC;EAAA;EAE9E,IAAM+G,WAAW,GAAG,SAAdA,WAAW,CAAIC,GAAkD,EAAK;IAC1EvH,WAAW,CAACuB,OAAO,GAAGgG,GAAG;IAEzB,IAAIxJ,cAAc,EAAE;MAClBA,cAAc,CAACwJ,GAAG,CAAC;IACrB;EACF,CAAC;EAED,IAAMC,QAAQ,GAAG,IAAAC,6BAAe,GAAE;EAElC,IAAMC,kBAAkB,GAAGC,OAAO,IAAIH,QAAQ,IAAIA,QAAQ,CAACjG,OAAO;EAElE,IAAImG,kBAAkB,EAAE;IACtB,IAAIF,QAAQ,CAACjG,OAAO,CAACqG,YAAY,EAAEJ,QAAQ,CAACjG,OAAO,CAACqG,YAAY,CAAC,MAAM,CAAC;IACxE,IAAIJ,QAAQ,CAACjG,OAAO,CAACsG,kBAAkB,EACrCL,QAAQ,CAACjG,OAAO,CAACsG,kBAAkB,CAAC;MAClCC,MAAM,EAAExJ,MAAM,GAAG,YAAY,GAAG,UAAU;MAC1CyJ,IAAI,EAAElJ;IACR,CAAC,CAAC;EACN;EAEA,IAAMmJ,wBAAwB,GAAG,IAAAvC,kBAAW,EAC1C;IAAA,OACE,gCAAC,iBAAI;MACH,KAAK,EAAE,CAACvM,MAAM,CAACK,IAAI,EAAEwJ,4BAA4B,GAAG7J,MAAM,CAACa,aAAa,GAAGb,MAAM,CAACU,MAAM,CAAE;MAC1F,MAAM,EAAC,aAAa;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAEpB,gCAAC,mBAAmB;MAAC,QAAQ,EAAC,SAAS;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EAAG,CACrC;EAAA,CACR,EACD,CAACmC,mBAAmB,EAAEgH,4BAA4B,CAAC,CACpD;EAED,IAAMkF,mBAAmB,GAAG,IAAAxC,kBAAW,EACrC;IAAA,OACE,gCAAC,iBAAI;MAAC,KAAK,EAAE1C,4BAA4B,GAAG7J,MAAM,CAACa,aAAa,GAAGsH,SAAU;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAC3E,gCAAC,eAAe;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EAAG,CACd;EAAA,CACR,EACD,CAAC0B,4BAA4B,EAAE9G,eAAe,CAAC,CAChD;EAED,IAAMiM,mBAAmB,GAAG,IAAAzC,kBAAW,EACrC;IAAA,OACE,gCAAC,iBAAI;MAAC,KAAK,EAAE1C,4BAA4B,GAAG7J,MAAM,CAACa,aAAa,GAAGsH,SAAU;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAC3E,gCAAC,eAAe;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EAAG,CACd;EAAA,CACR,EACD,CAAC0B,4BAA4B,EAAE5G,eAAe,CAAC,CAChD;EAED,IAAI,CAACH,QAAQ,EAAE,OAAO,IAAI;EAE1B,IAAIa,OAAO,EAAE;IACX,OACE,gCAAC,iBAAI;MAAC,KAAK,EAAE3D,MAAM,CAACK,IAAK;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GACvB,gCAAC,gBAAgB;MAAC,QAAQ,EAAC,SAAS;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EAAG,CAClC;EAEX;EAEA,IAAM4O,qBAAqB,GAAG,SAAxBA,qBAAqB,GAAS;IAClC,IAAI,CAACnB,sBAAsB,EAAE,OAAO,IAAI;IACxC,IAAI7I,YAAY,EAAE,OAAO,gCAAC,YAAY;MAAC,UAAU,EAAE6I,sBAAuB;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EAAG;IAC7E,IAAI3H,4BAA4B,EAAE,OAAO,gCAAC,UAAU;MAAC,UAAU,EAAE2H,sBAAuB;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EAAG;IAC3F,OAAO,IAAI;EACb,CAAC;EAED,OACE,gCAAC,iBAAI;IACH,KAAK,EAAE,CAAC9N,MAAM,CAACG,SAAS,EAAE;MAAE+O,eAAe,EAAEzJ;IAAW,CAAC,EAAEtF,SAAS,CAAE;IACtE,MAAM,EAAC,2BAA2B;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,GAElC,gCAAC,QAAQ;IACP,qBAAqB,EACnB0J,4BAA4B,GAAGxI,6BAA6B,GAAG8G,SAChE;IACD,qBAAqB,EAAE,CAACnI,MAAM,CAACO,gBAAgB,EAAEA,gBAAgB,CAAE;IACnE,IAAI,EAAEoF,WAAY;IAElB,SAAS,EAAEhD,QAAQ,IAAI,CAACK,6BAA8B;IACtD,QAAQ,EAAE6G,4BAA4B,GAAG,KAAK,GAAGtG,QAAS;IAC1D,yBAAyB,EAAC,SAAS;IACnC,YAAY,EAAEhC,YAAa;IAC3B,kBAAkB,EAAEuN,wBAAyB;IAC7C,mBAAmB,EAAEC,mBAAoB;IACzC,mBAAmB,EAAEC,mBAAoB;IACzC,8BAA8B,EAAE;MAC9BG,wBAAwB,EAAE3I,eAAe,GAAG,EAAE,GAAG2B,SAAS;MAC1DiH,kBAAkB,EAAE;IACtB,CAAE;IACF,mBAAmB,EAAE,EAAG;IACxB,QAAQ,EAAEnE,YAAa;IACvB,iBAAiB,EAAEiD,iBAAkB;IACrC,eAAe,EAAEC,eAAgB;IACjC,qBAAqB,EAAElC,wBAAwB,CAAC5D,OAAQ;IACxD,UAAU,EAAE4F,kBAAmB;IAC/B,sBAAsB,EAAEpF,sBAAsB,CAACR,OAAQ;IACvD,GAAG,EAAE+F,WAAY;IACjB,UAAU,EAAEtE,UAAW;IACvB,aAAa,EAAEtF,OAAO,KAAK,MAAO;IAClC,4BAA4B,EAAE,CAACqF,4BAA6B;IAC5D,KAAK,EAAE,CACL7J,MAAM,CAACe,aAAa,EACpBA,aAAa,EACb8I,4BAA4B,GAAG7J,MAAM,CAACa,aAAa,GAAGsH,SAAS,CAC/D;IACF,MAAM,EAAC,mBAAmB;IAC1B,iBAAiB,EAAEpG;EAA0B,GACzCO,uBAAuB;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,GAC3B,EACD,CAACqB,OAAO,IACP;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,GACE,gCAAC,iBAAI;IAAC,KAAK,EAAE3D,MAAM,CAACkB,YAAa;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,GAC/B,gCAAC,qBAAqB;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,EAAG,CACpB,EACN,CAAC0B,sBAAsB,IAAIyC,eAAe,IACzC,gCAAC,wBAAwB;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,GACvB,gCAAC,eAAe;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,EAAG,CAEtB,EACD,gCAAC,oBAAoB;IACnB,OAAO,EAAE2G,eAAgB;IACzB,gBAAgB,EAAEvE,2BAA4B;IAC9C,WAAW,EAAEtF,UAAU,GAAG,CAAC,GAAGI,OAAO,oBAAPA,OAAO,CAAE2G,WAAW,EAAG;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,EACrD,CAEL,EACD,gCAAC,oBAAoB;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,EAAG,CACnB;AAEX,CAAC;AAMM,IAAMmG,WAAW,GAAG,SAAdA,WAAW,CAGtB/N,KAA2C,EACxC;EACH,4BAA2D,IAAAgO,mDAA0B,GAAE;IAA/E7M,WAAW,yBAAXA,WAAW;IAAEmC,cAAc,yBAAdA,cAAc;IAAEG,iBAAiB,yBAAjBA,iBAAiB;EACtD,yBAkBI,IAAAwK,iCAAiB,GAAsB;IAjBzChN,OAAO,sBAAPA,OAAO;IACPI,QAAQ,sBAARA,QAAQ;IACRE,mBAAmB,sBAAnBA,mBAAmB;IACnB2M,2BAA2B,sBAA3BA,2BAA2B;IAC3BC,KAAK,sBAALA,KAAK;IACLtM,oBAAoB,sBAApBA,oBAAoB;IACpBuM,eAAe,sBAAfA,eAAe;IACfhM,wBAAwB,sBAAxBA,wBAAwB;IACxBC,OAAO,sBAAPA,OAAO;IACPC,gBAAgB,sBAAhBA,gBAAgB;IAChBI,QAAQ,sBAARA,QAAQ;IACRI,oBAAoB,sBAApBA,oBAAoB;IACpBK,aAAa,sBAAbA,aAAa;IACbE,4BAA4B,sBAA5BA,4BAA4B;IAC5BK,kBAAkB,sBAAlBA,kBAAkB;IAClBC,YAAY,sBAAZA,YAAY;IACZC,eAAe,sBAAfA,eAAe;EAEjB,sBAAmB,IAAAyK,2BAAc,GAAsB;IAA/CnN,MAAM,mBAANA,MAAM;EACd,4BAAwB,IAAAoN,2CAAsB,GAAsB;IAA5D9K,WAAW,yBAAXA,WAAW;EACnB,0BAcI,IAAA+K,mCAAkB,GAAsB;IAb1CnN,UAAU,uBAAVA,UAAU;IACVE,sBAAsB,uBAAtBA,sBAAsB;IACtBE,QAAQ,uBAARA,QAAQ;IACRM,iCAAiC,uBAAjCA,iCAAiC;IACjCC,mBAAmB,uBAAnBA,mBAAmB;IACnBC,qBAAqB,uBAArBA,qBAAqB;IACrBG,+BAA+B,uBAA/BA,+BAA+B;IAC/BQ,OAAO,uBAAPA,OAAO;IACPC,aAAa,uBAAbA,aAAa;IACbC,cAAc,uBAAdA,cAAc;IACdO,oBAAoB,uBAApBA,oBAAoB;IACpBW,eAAe,uBAAfA,eAAe;IACfC,wBAAwB,uBAAxBA,wBAAwB;EAE1B,4BACE,IAAAwK,2DAA8B,GAAsB;IAD9C9M,6BAA6B,yBAA7BA,6BAA6B;IAAEa,QAAQ,yBAARA,QAAQ;IAAEC,cAAc,yBAAdA,cAAc;EAE/D,yBAAoB,IAAAiM,iCAAiB,GAAE;IAA/BvL,OAAO,sBAAPA,OAAO;EACf,wBAAmC,IAAAwL,+BAAgB,GAAsB;IAAjEjM,cAAc,qBAAdA,cAAc;IAAEqB,MAAM,qBAANA,MAAM;EAC9B,4BAA+B,IAAA6K,yCAAqB,GAAE;IAA9CC,CAAC,yBAADA,CAAC;IAAE/K,eAAe,yBAAfA,eAAe;EAE1B,OACE,gCAAC,sBAAsB;IAEnB5C,OAAO,EAAPA,OAAO;IACPC,MAAM,EAANA,MAAM;IACNC,WAAW,EAAXA,WAAW;IACXC,UAAU,EAAVA,UAAU;IACVC,QAAQ,EAARA,QAAQ;IACRC,sBAAsB,EAAtBA,sBAAsB;IACtBC,mBAAmB,EAAnBA,mBAAmB;IACnB2M,2BAA2B,EAA3BA,2BAA2B;IAC3BC,KAAK,EAALA,KAAK;IACL3M,QAAQ,EAARA,QAAQ;IACRE,6BAA6B,EAA7BA,6BAA6B;IAC7BG,oBAAoB,EAApBA,oBAAoB;IACpBC,iCAAiC,EAAjCA,iCAAiC;IACjCC,mBAAmB,EAAnBA,mBAAmB;IACnBC,qBAAqB,EAArBA,qBAAqB;IACrBE,YAAY,EAAEkM,eAAe;IAC7BjM,+BAA+B,EAA/BA,+BAA+B;IAC/BC,wBAAwB,EAAxBA,wBAAwB;IACxBC,OAAO,EAAPA,OAAO;IACPC,gBAAgB,EAAhBA,gBAAgB;IAChBC,QAAQ,EAARA,QAAQ;IACRC,cAAc,EAAdA,cAAc;IACdC,cAAc,EAAdA,cAAc;IACdC,QAAQ,EAARA,QAAQ;IACRC,OAAO,EAAPA,OAAO;IACPC,aAAa,EAAbA,aAAa;IACbC,cAAc,EAAdA,cAAc;IACdC,oBAAoB,EAApBA,oBAAoB;IACpBI,OAAO,EAAPA,OAAO;IACPC,aAAa,EAAbA,aAAa;IACbC,oBAAoB,EAApBA,oBAAoB;IACpBC,4BAA4B,EAA5BA,4BAA4B;IAC5BC,cAAc,EAAdA,cAAc;IACdE,WAAW,EAAXA,WAAW;IACXC,iBAAiB,EAAjBA,iBAAiB;IACjBC,kBAAkB,EAAlBA,kBAAkB;IAClBC,YAAY,EAAZA,YAAY;IACZiL,CAAC,EAADA,CAAC;IACDhL,eAAe,EAAfA,eAAe;IACfC,eAAe,EAAfA,eAAe;IACfC,MAAM,EAANA,MAAM;IACNC,eAAe,EAAfA,eAAe;IACfC,wBAAwB,EAAxBA;EAAwB,GAEtBhE,KAAK;IACT,aAAa,EAAE,CAACkO,2BAA2B,IAAIlO,KAAK,CAAC+C,aAAc;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,GACnE;AAEN,CAAC;AAAC"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useMessageList","_InlineLoadingMoreIndicator","_InlineLoadingMoreRecentIndicator","_InlineLoadingMoreThreadIndicator","_getLastReceivedMessage","_AttachmentPickerContext","_ChannelContext","_ChatContext","_DebugContext","_ImageGalleryContext","_MessagesContext","_OverlayContext","_PaginatedMessageListContext","_ThemeContext","_ThreadContext","_TranslationContext","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","container","alignItems","flex","width","contentContainer","flexGrow","paddingBottom","invert","transform","scaleY","invertAndroid","scaleX","listContainer","messagePadding","paddingHorizontal","stickyHeader","position","top","InvertedCellRendererComponent","props","createElement","View","_extends2","style","__self","__source","fileName","lineNumber","columnNumber","keyExtractor","item","id","created_at","toISOString","Date","now","toString","flatListViewabilityConfig","viewAreaCoveragePercentThreshold","MessageListWithContext","_getLastReceivedMessa","LoadingMoreIndicator","threadList","InlineLoadingMoreThreadIndicator","InlineLoadingMoreIndicator","additionalFlatListProps","channel","client","closePicker","DateHeader","disabled","disableTypingIndicator","EmptyStateIndicator","FlatList","_props$FooterComponen","FooterComponent","hasNoMoreRecentMessagesToLoad","_props$HeaderComponen","HeaderComponent","InlineLoadingMoreRecentIndicator","hideStickyDateHeader","initialScrollToFirstUnreadMessage","InlineDateSeparator","InlineUnreadIndicator","_props$inverted","inverted","_props$isListActive","isListActive","legacyImageViewerSwipeBehaviour","loadChannelAroundMessage","loading","LoadingIndicator","loadMore","loadMoreRecent","loadMoreThread","markRead","Message","MessageSystem","myMessageTheme","NetworkDownIndicator","noGroupByUser","onListScroll","onThreadSelect","overlay","reloadChannel","ScrollToBottomButton","scrollToFirstUnreadThreshold","selectedPicker","setFlatListRef","setMessages","setSelectedPicker","setTargetedMessage","StickyHeader","targetedMessage","tDateTimeParser","thread","_props$threadList","TypingIndicator","TypingIndicatorContainer","_useTheme","useTheme","theme","white_snow","colors","_theme$messageList","messageList","modifiedTheme","useMemo","mergeThemes","useMessageList","messageListLengthBeforeUpdate","useRef","messageListLengthAfterUpdate","length","topMessageBeforeUpdate","topMessageAfterUpdate","_useState","useState","_useState2","_slicedToArray2","autoscrollToTop","setAutoscrollToTop","onStartReachedTracker","onEndReachedTracker","onStartReachedInPromise","onEndReachedInPromise","flatListRef","initialScrollSet","channelResyncScrollSet","scrollToDebounceTimeoutRef","messageIdToScrollToRef","messageIdLastScrolledToRef","_useState3","_useState4","hasMoved","setHasMoved","_useState5","getLastReceivedMessage","_useState6","lastReceivedId","setLastReceivedId","_useState7","_useState8","scrollToBottomButtonVisible","setScrollToBottomButtonVisible","_useState9","_useState10","stickyHeaderDate","setStickyHeaderDate","stickyHeaderDateRef","isUnreadMessageRef","message","lastRead","channelLastReadRef","initialized","undefined","useEffect","current","updateStickyHeaderDateIfNeeded","viewableItems","_lastItem$item","_stickyHeaderDateRef$","lastItem","pop","isMessageTypeDeleted","type","toDateString","onViewableItemsChanged","_ref","Platform","OS","resetPaginationTrackersRef","shouldMarkReadOnFirstLoad","countUnread","_lastReceivedMessage$","lastReceivedMessage","hasNewMessage","isMyMessage","user","userID","scrollToBottomIfNeeded","_topMessageBeforeUpda","setTimeout","_flatListRef$current","scrollToOffset","offset","maybeCallOnStartReached","shouldApplyAndroidWorkaround","renderItem","_ref2","_message$user","index","offlineMode","lastMessage","showUnreadUnderlay","insertInlineUnreadIndicator","Fragment","testID","wrapMessageInTheme","isMessageWithStylesReadByAndDateSeparator","dateSeparator","date","ThemeProvider","mergedStyle","goToMessage","groupStyles","isTargetedMessage","quoted_message_id","_ref3","_asyncToGenerator2","_regenerator","mark","_callee","limit","callback","onError","wrap","_callee$","_context","prev","next","abrupt","Promise","resolve","then","stop","_x","apply","arguments","maybeCallOnEndReached","_ref4","_callee2","_callee2$","_context2","handleScroll","event","nativeEvent","contentOffset","y","visibleLength","layoutMeasurement","height","contentLength","contentSize","isScrollAtStart","isScrollAtEnd","isScrollAtBottom","showScrollToBottomButton","shouldMarkRead","goToNewMessages","_ref5","_callee3","_callee3$","_context3","onScrollToIndexFailedRef","info","animated","averageItemLength","_flatListRef$current2","scrollToIndex","viewPosition","useCallback","messageId","indexOfParentInMessageList","findIndex","clearTimeout","messageIdToScroll","messagesWithImages","filter","attachments","some","attachment","title_link","og_scrape_url","image_url","thumb_url","imageString","map","_message$attachments","join","numberOfMessagesWithImages","threadExists","stickyHeaderFormatDate","getFullYear","tStickyHeaderDate","stickyHeaderDateString","isDayOrMoment","format","dismissImagePicker","onScrollBeginDrag","onScrollEndDrag","refCallback","ref","debugRef","useDebugContext","isDebugModeEnabled","__DEV__","setEventType","setSendEventParams","action","data","renderListEmptyComponent","listType","ListFooterComponent","ListHeaderComponent","StickyHeaderComponent","dateString","backgroundColor","CellRendererComponent","contentContainerStyle","extraData","keyboardShouldPersistTaps","ListEmptyComponent","maintainVisibleContentPosition","autoscrollToTopThreshold","minIndexForVisible","maxToRenderPerBatch","onScroll","onScrollToIndexFailed","onTouchEnd","scrollEnabled","showsVerticalScrollIndicator","viewabilityConfig","onPress","showNotification","unreadCount","MessageList","_useAttachmentPickerC","useAttachmentPickerContext","_useChannelContext","useChannelContext","enableMessageGroupingByUser","error","isChannelActive","_useChatContext","useChatContext","_useImageGalleryConte","useImageGalleryContext","_useMessagesContext","useMessagesContext","_usePaginatedMessageL","usePaginatedMessageListContext","_useOverlayContext","useOverlayContext","_useThreadContext","useThreadContext","_useTranslationContex","useTranslationContext","t","exports"],"sources":["MessageList.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n FlatListProps,\n FlatList as FlatListType,\n Platform,\n ScrollViewProps,\n StyleSheet,\n View,\n ViewToken,\n} from 'react-native';\n\nimport type { Channel as StreamChannel } from 'stream-chat';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n useMessageList,\n} from './hooks/useMessageList';\nimport { InlineLoadingMoreIndicator } from './InlineLoadingMoreIndicator';\nimport { InlineLoadingMoreRecentIndicator } from './InlineLoadingMoreRecentIndicator';\nimport { InlineLoadingMoreThreadIndicator } from './InlineLoadingMoreThreadIndicator';\nimport { getLastReceivedMessage } from './utils/getLastReceivedMessage';\n\nimport {\n AttachmentPickerContextValue,\n useAttachmentPickerContext,\n} from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport { useDebugContext } from '../../contexts/debugContext/DebugContext';\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport {\n PaginatedMessageListContextValue,\n usePaginatedMessageListContext,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport { mergeThemes, ThemeProvider, useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n isDayOrMoment,\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n flex: 1,\n width: '100%',\n },\n contentContainer: {\n flexGrow: 1,\n /**\n * paddingBottom is set to 4 to account for the default date\n * header and inline indicator alignment. The top margin is 8\n * on the header but 4 on the inline date, this adjusts the spacing\n * to allow the \"first\" inline date to align with the date header.\n */\n paddingBottom: 4,\n },\n flex: { flex: 1 },\n invert: { transform: [{ scaleY: -1 }] },\n invertAndroid: {\n // Invert the Y AND X axis to prevent a react native issue that can lead to ANRs on android 13\n // details: https://github.com/Expensify/App/pull/12820\n transform: [{ scaleX: -1 }, { scaleY: -1 }],\n },\n listContainer: {\n flex: 1,\n width: '100%',\n },\n messagePadding: {\n paddingHorizontal: 8,\n },\n stickyHeader: {\n position: 'absolute',\n top: 0,\n },\n});\n\nconst InvertedCellRendererComponent = (props: React.PropsWithChildren<unknown>) => (\n <View {...props} style={styles.invertAndroid} />\n);\n\nconst keyExtractor = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n item: MessageType<StreamChatGenerics>,\n) => {\n if (item.id) return item.id;\n if (item.created_at)\n return typeof item.created_at === 'string' ? item.created_at : item.created_at.toISOString();\n return Date.now().toString();\n};\n\nconst flatListViewabilityConfig = {\n viewAreaCoveragePercentThreshold: 1,\n};\n\ntype MessageListPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<AttachmentPickerContextValue, 'closePicker' | 'selectedPicker' | 'setSelectedPicker'> &\n Pick<\n ChannelContextValue<StreamChatGenerics>,\n | 'channel'\n | 'disabled'\n | 'EmptyStateIndicator'\n | 'hideStickyDateHeader'\n | 'loadChannelAroundMessage'\n | 'loading'\n | 'LoadingIndicator'\n | 'markRead'\n | 'NetworkDownIndicator'\n | 'reloadChannel'\n | 'scrollToFirstUnreadThreshold'\n | 'setTargetedMessage'\n | 'StickyHeader'\n | 'targetedMessage'\n > &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setMessages'> &\n Pick<\n PaginatedMessageListContextValue<StreamChatGenerics>,\n 'hasNoMoreRecentMessagesToLoad' | 'loadMore' | 'loadMoreRecent'\n > &\n Pick<OverlayContextValue, 'overlay'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'DateHeader'\n | 'disableTypingIndicator'\n | 'FlatList'\n | 'initialScrollToFirstUnreadMessage'\n | 'InlineDateSeparator'\n | 'InlineUnreadIndicator'\n | 'legacyImageViewerSwipeBehaviour'\n | 'Message'\n | 'ScrollToBottomButton'\n | 'MessageSystem'\n | 'myMessageTheme'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n > &\n Pick<ThreadContextValue<StreamChatGenerics>, 'loadMoreThread' | 'thread'> &\n Pick<TranslationContextValue, 't' | 'tDateTimeParser'> & {\n /**\n * Besides existing (default) UX behavior of underlying FlatList of MessageList component, if you want\n * to attach some additional props to underlying FlatList, you can add it to following prop.\n *\n * You can find list of all the available FlatList props here - https://facebook.github.io/react-native/docs/flatlist#props\n *\n * **NOTE** Don't use `additionalFlatListProps` to get access to ref of flatlist. Use `setFlatListRef` instead.\n *\n * e.g.\n * ```js\n * <MessageList\n * additionalFlatListProps={{ bounces: true, keyboardDismissMode: true }} />\n * ```\n */\n additionalFlatListProps?: Partial<FlatListProps<MessageType<StreamChatGenerics>>>;\n /**\n * UI component for footer of message list. By default message list will use `InlineLoadingMoreIndicator`\n * as FooterComponent. If you want to implement your own inline loading indicator, you can access `loadingMore`\n * from context.\n *\n * This is a [ListHeaderComponent](https://facebook.github.io/react-native/docs/flatlist#listheadercomponent) of FlatList\n * used in MessageList. Should be used for header by default if inverted is true or defaulted\n */\n FooterComponent?: React.ComponentType;\n /**\n * UI component for header of message list. By default message list will use `InlineLoadingMoreRecentIndicator`\n * as HeaderComponent. If you want to implement your own inline loading indicator, you can access `loadingMoreRecent`\n * from context.\n *\n * This is a [ListFooterComponent](https://facebook.github.io/react-native/docs/flatlist#listheadercomponent) of FlatList\n * used in MessageList. Should be used for header if inverted is false\n */\n HeaderComponent?: React.ComponentType;\n /** Whether or not the FlatList is inverted. Defaults to true */\n inverted?: boolean;\n isListActive?: boolean;\n /** Turn off grouping of messages by user */\n noGroupByUser?: boolean;\n onListScroll?: ScrollViewProps['onScroll'];\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: ThreadContextValue<StreamChatGenerics>['thread']) => void;\n /**\n * Use `setFlatListRef` to get access to ref to inner FlatList.\n *\n * e.g.\n * ```js\n * <MessageList\n * setFlatListRef={(ref) => {\n * // Use ref for your own good\n * }}\n * ```\n */\n setFlatListRef?: (ref: FlatListType<MessageType<StreamChatGenerics>> | null) => void;\n /**\n * Boolean whether or not the Messages in the MessageList are part of a Thread\n **/\n threadList?: boolean;\n };\n\n/**\n * The message list component renders a list of messages. It consumes the following contexts:\n *\n * [ChannelContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/channel-context/)\n * [ChatContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/chat-context/)\n * [MessagesContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/messages-context/)\n * [ThreadContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/thread-context/)\n * [TranslationContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/translation-context/)\n */\nconst MessageListWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageListPropsWithContext<StreamChatGenerics>,\n) => {\n const LoadingMoreIndicator = props.threadList\n ? InlineLoadingMoreThreadIndicator\n : InlineLoadingMoreIndicator;\n const {\n additionalFlatListProps,\n channel,\n client,\n closePicker,\n DateHeader,\n disabled,\n disableTypingIndicator,\n EmptyStateIndicator,\n FlatList,\n FooterComponent = LoadingMoreIndicator,\n hasNoMoreRecentMessagesToLoad,\n HeaderComponent = InlineLoadingMoreRecentIndicator,\n hideStickyDateHeader,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n inverted = true,\n isListActive = false,\n legacyImageViewerSwipeBehaviour,\n loadChannelAroundMessage,\n loading,\n LoadingIndicator,\n loadMore,\n loadMoreRecent,\n loadMoreThread,\n markRead,\n Message,\n MessageSystem,\n myMessageTheme,\n NetworkDownIndicator,\n noGroupByUser,\n onListScroll,\n onThreadSelect,\n overlay,\n reloadChannel,\n ScrollToBottomButton,\n scrollToFirstUnreadThreshold,\n selectedPicker,\n setFlatListRef,\n setMessages,\n setSelectedPicker,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n tDateTimeParser,\n thread,\n threadList = false,\n TypingIndicator,\n TypingIndicatorContainer,\n } = props;\n\n const { theme } = useTheme();\n\n const {\n colors: { white_snow },\n messageList: { container, contentContainer, listContainer },\n } = theme;\n\n const modifiedTheme = useMemo(\n () => mergeThemes({ style: myMessageTheme, theme }),\n [myMessageTheme, theme],\n );\n\n const messageList = useMessageList<StreamChatGenerics>({\n noGroupByUser,\n threadList,\n });\n const messageListLengthBeforeUpdate = useRef(0);\n const messageListLengthAfterUpdate = messageList.length;\n\n /**\n * We need topMessage and channelLastRead values to set the initial scroll position.\n * So these values only get used if `initialScrollToFirstUnreadMessage` prop is true.\n */\n const topMessageBeforeUpdate = useRef<MessageType<StreamChatGenerics>>();\n const topMessageAfterUpdate = messageList[messageList.length - 1];\n\n const [autoscrollToTop, setAutoscrollToTop] = useState(false);\n\n /**\n * We want to call onEndReached and onStartReached only once, per content length.\n * We keep track of calls to these functions per content length, with following trackers.\n */\n const onStartReachedTracker = useRef<Record<number, boolean>>({});\n const onEndReachedTracker = useRef<Record<number, boolean>>({});\n\n const onStartReachedInPromise = useRef<Promise<void> | null>(null);\n const onEndReachedInPromise = useRef<Promise<void> | null>(null);\n\n const flatListRef = useRef<FlatListType<MessageType<StreamChatGenerics>> | null>(null);\n\n /**\n * Flag to track if the initial scroll has been set\n * If the prop `initialScrollToFirstUnreadMessage` was enabled, then we scroll to the unread msg and set it to true\n * If not, the default offset of 0 for flatList means that it has been set already\n */\n const initialScrollSet = useRef<boolean>(!initialScrollToFirstUnreadMessage);\n\n const channelResyncScrollSet = useRef<boolean>(true);\n\n /**\n * The timeout id used to debounce our scrollToIndex calls on messageList updates\n */\n const scrollToDebounceTimeoutRef = useRef<NodeJS.Timeout>();\n\n /**\n * If a messageId was requested to scroll to but was unloaded,\n * this flag keeps track of it to scroll to it after loading the message\n */\n const messageIdToScrollToRef = useRef<string>();\n /**\n * Last messageID that was scrolled to after loading a new message list,\n * this flag keeps track of it so that we dont scroll to it again on target message set\n */\n const messageIdLastScrolledToRef = useRef<string>();\n const [hasMoved, setHasMoved] = useState(false);\n const [lastReceivedId, setLastReceivedId] = useState(getLastReceivedMessage(messageList)?.id);\n const [scrollToBottomButtonVisible, setScrollToBottomButtonVisible] = useState(false);\n\n const [stickyHeaderDate, setStickyHeaderDate] = useState<Date | undefined>();\n const stickyHeaderDateRef = useRef<Date | undefined>();\n\n const isUnreadMessageRef = useRef(\n (\n message: MessageType<StreamChatGenerics> | undefined,\n lastRead?: ReturnType<StreamChannel<StreamChatGenerics>['lastRead']>,\n ) => message && lastRead && message.created_at && lastRead < message.created_at,\n );\n\n const channelLastReadRef = useRef(channel?.initialized ? channel.lastRead() : undefined);\n\n useEffect(() => {\n channelLastReadRef.current = channel?.initialized ? channel.lastRead() : undefined;\n }, [channel]);\n\n const updateStickyHeaderDateIfNeeded = (viewableItems: ViewToken[]) => {\n if (viewableItems.length) {\n const lastItem = viewableItems.pop() as {\n item: MessageType<StreamChatGenerics>;\n };\n\n const isMessageTypeDeleted = lastItem.item.type === 'deleted';\n\n if (\n lastItem?.item?.created_at &&\n !isMessageTypeDeleted &&\n typeof lastItem.item.created_at !== 'string' &&\n lastItem.item.created_at.toDateString() !== stickyHeaderDateRef.current?.toDateString()\n ) {\n stickyHeaderDateRef.current = lastItem.item.created_at;\n setStickyHeaderDate(lastItem.item.created_at);\n }\n }\n };\n\n /**\n * FlatList doesn't accept changeable function for onViewableItemsChanged prop.\n * Thus useRef.\n */\n const onViewableItemsChanged = useRef(\n ({ viewableItems }: { viewableItems: ViewToken[] | undefined }) => {\n /**\n * When a new message comes in, list scrolls down to the bottom automatically (using prop `maintainVisibleContentPosition`)\n * and we mark the channel as read from handleScroll function.\n * Although this logic is dependent on the fact that `onScroll` event gets triggered during this process.\n * But for Android, this event is not triggered when messages length is lesser than visible screen height.\n *\n * And thus we need to check if the message list length is lesser than visible screen height and mark the channel as read.\n */\n if (\n Platform.OS === 'android' &&\n viewableItems?.length &&\n viewableItems?.length >= messageListLengthBeforeUpdate.current\n ) {\n channel.markRead();\n }\n\n if (viewableItems && !hideStickyDateHeader) {\n updateStickyHeaderDateIfNeeded(viewableItems);\n }\n },\n );\n\n /**\n * Resets the pagination trackers, doing so cancels currently scheduled loading more calls\n */\n const resetPaginationTrackersRef = useRef(() => {\n onStartReachedTracker.current = {};\n onEndReachedTracker.current = {};\n });\n\n useEffect(() => {\n setScrollToBottomButtonVisible(false);\n }, [disabled]);\n\n useEffect(() => {\n /**\n * 1. !initialScrollToFirstUnreadMessage && channel.countUnread() > 0\n *\n * In this case MessageList won't scroll to first unread message when opened, so we can mark\n * the channel as read right after opening.\n *\n * 2. initialScrollToFirstUnreadMessage && channel.countUnread() <= scrollToFirstUnreadThreshold\n *\n * In this case MessageList will be opened to first unread message.\n * But if there are not enough (scrollToFirstUnreadThreshold) unread messages, then MessageList\n * won't need to scroll up. So we can safely mark the channel as read right after opening.\n */\n const shouldMarkReadOnFirstLoad =\n !loading &&\n channel &&\n ((!initialScrollToFirstUnreadMessage && channel.countUnread() > 0) ||\n (initialScrollToFirstUnreadMessage &&\n channel.countUnread() <= scrollToFirstUnreadThreshold));\n\n if (shouldMarkReadOnFirstLoad) {\n markRead();\n }\n }, [loading]);\n\n useEffect(() => {\n const lastReceivedMessage = getLastReceivedMessage(messageList);\n\n const hasNewMessage = lastReceivedId !== lastReceivedMessage?.id;\n const isMyMessage = lastReceivedMessage?.user?.id === client.userID;\n\n setLastReceivedId(lastReceivedMessage?.id);\n\n /**\n * Scroll down when\n * 1. you send a new message to channel\n * 2. new message list is small than the one before update - channel has resynced\n * 3. created_at timestamp of top message before update is lesser than created_at timestamp of top message after update - channel has resynced\n */\n const scrollToBottomIfNeeded = () => {\n if (!client || !channel || messageList.length === 0) {\n return;\n }\n if (\n (hasNewMessage && isMyMessage) ||\n messageListLengthAfterUpdate < messageListLengthBeforeUpdate.current ||\n (topMessageBeforeUpdate.current?.created_at &&\n topMessageAfterUpdate?.created_at &&\n topMessageBeforeUpdate.current.created_at < topMessageAfterUpdate.created_at)\n ) {\n channelResyncScrollSet.current = false;\n setScrollToBottomButtonVisible(false);\n resetPaginationTrackersRef.current();\n\n setTimeout(() => {\n flatListRef.current?.scrollToOffset({\n offset: 0,\n });\n }, 50);\n setTimeout(() => {\n channelResyncScrollSet.current = true;\n if (channel.countUnread() > 0) {\n markRead();\n }\n }, 500);\n }\n };\n\n if (threadList || hasNoMoreRecentMessagesToLoad) {\n scrollToBottomIfNeeded();\n } else if (!scrollToBottomButtonVisible) {\n setScrollToBottomButtonVisible(true);\n }\n\n if (\n !hasNoMoreRecentMessagesToLoad &&\n flatListRef.current &&\n messageListLengthBeforeUpdate.current === 0 &&\n messageListLengthAfterUpdate < 10\n ) {\n /**\n * Trigger onStartReached on first load, if messages are not enough to fill the screen.\n * This is important especially for android, where you can't overscroll.\n */\n maybeCallOnStartReached(10);\n }\n\n messageListLengthBeforeUpdate.current = messageListLengthAfterUpdate;\n topMessageBeforeUpdate.current = topMessageAfterUpdate;\n }, [messageListLengthAfterUpdate, topMessageAfterUpdate?.id]);\n\n useEffect(() => {\n setAutoscrollToTop(hasNoMoreRecentMessagesToLoad);\n }, [messageList, hasNoMoreRecentMessagesToLoad]);\n\n const shouldApplyAndroidWorkaround = inverted && Platform.OS === 'android';\n\n const renderItem = ({\n index,\n item: message,\n }: {\n index: number;\n item: MessageType<StreamChatGenerics>;\n }) => {\n if (!channel || (!channel.initialized && !channel.offlineMode)) return null;\n\n const lastRead = channel.lastRead();\n\n const lastMessage = messageList?.[index + 1];\n\n const showUnreadUnderlay =\n !!isUnreadMessageRef.current(message, lastRead) && scrollToBottomButtonVisible;\n const insertInlineUnreadIndicator =\n showUnreadUnderlay && !isUnreadMessageRef.current(lastMessage, lastRead);\n\n if (message.type === 'system') {\n return (\n <>\n <View testID={`message-list-item-${index}`}>\n <MessageSystem message={message} style={styles.messagePadding} />\n </View>\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n );\n }\n\n const wrapMessageInTheme = client.userID === message.user?.id && !!myMessageTheme;\n return wrapMessageInTheme ? (\n <>\n {shouldApplyAndroidWorkaround &&\n isMessageWithStylesReadByAndDateSeparator(message) &&\n message.dateSeparator && <InlineDateSeparator date={message.dateSeparator} />}\n <ThemeProvider mergedStyle={modifiedTheme}>\n <View testID={`message-list-item-${index}`}>\n <Message\n goToMessage={goToMessage}\n groupStyles={\n isMessageWithStylesReadByAndDateSeparator(message) ? message.groupStyles : []\n }\n isTargetedMessage={targetedMessage === message.id}\n lastReceivedId={lastReceivedId === message.id ? lastReceivedId : undefined}\n message={message}\n onThreadSelect={onThreadSelect}\n showUnreadUnderlay={showUnreadUnderlay}\n style={styles.messagePadding}\n threadList={threadList}\n />\n </View>\n </ThemeProvider>\n {!shouldApplyAndroidWorkaround &&\n isMessageWithStylesReadByAndDateSeparator(message) &&\n message.dateSeparator && <InlineDateSeparator date={message.dateSeparator} />}\n {/* Adding indicator below the messages, since the list is inverted */}\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n ) : (\n <>\n <View testID={`message-list-item-${index}`}>\n {shouldApplyAndroidWorkaround &&\n isMessageWithStylesReadByAndDateSeparator(message) &&\n message.dateSeparator && <InlineDateSeparator date={message.dateSeparator} />}\n <Message\n goToMessage={goToMessage}\n groupStyles={\n isMessageWithStylesReadByAndDateSeparator(message) ? message.groupStyles : []\n }\n isTargetedMessage={targetedMessage === message.id}\n lastReceivedId={\n lastReceivedId === message.id || message.quoted_message_id\n ? lastReceivedId\n : undefined\n }\n message={message}\n onThreadSelect={onThreadSelect}\n showUnreadUnderlay={showUnreadUnderlay}\n style={styles.messagePadding}\n threadList={threadList}\n />\n </View>\n {!shouldApplyAndroidWorkaround &&\n isMessageWithStylesReadByAndDateSeparator(message) &&\n message.dateSeparator && <InlineDateSeparator date={message.dateSeparator} />}\n {/* Adding indicator below the messages, since the list is inverted */}\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n );\n };\n\n /**\n * We are keeping full control on message pagination, and not relying on react-native for it.\n * The reasons being,\n * 1. FlatList doesn't support onStartReached prop\n * 2. `onEndReached` function prop available on react-native, gets executed\n * once per content length (and thats actually a nice optimization strategy).\n * But it also means, we always need to prioritize onEndReached above our\n * logic for `onStartReached`.\n * 3. `onEndReachedThreshold` prop decides - at which scroll position to call `onEndReached`.\n * Its a factor of content length (which is necessary for \"real\" infinite scroll). But on\n * the other hand, it also makes calls to `onEndReached` (and this `channel.query`) way\n * too early during scroll, which we don't really need. So we are going to instead\n * keep some fixed offset distance, to decide when to call `loadMore` or `loadMoreRecent`.\n *\n * We are still gonna keep the optimization, which react-native does - only call onEndReached\n * once per content length.\n */\n\n /**\n * 1. Makes a call to `loadMoreRecent` function, which queries more recent messages.\n * 2. Ensures that we call `loadMoreRecent`, once per content length\n * 3. If the call to `loadMore` is in progress, we wait for it to finish to make sure scroll doesn't jump.\n */\n const maybeCallOnStartReached = async (limit?: number) => {\n // If onStartReached has already been called for given data length, then ignore.\n if (messageList?.length && onStartReachedTracker.current[messageList.length]) {\n return;\n }\n\n if (messageList?.length) {\n onStartReachedTracker.current[messageList.length] = true;\n }\n\n const callback = () => {\n onStartReachedInPromise.current = null;\n\n return Promise.resolve();\n };\n\n const onError = () => {\n /** Release the onStartReached trigger after 2 seconds, to try again */\n setTimeout(() => {\n onStartReachedTracker.current = {};\n }, 2000);\n };\n\n // If onEndReached is in progress, better to wait for it to finish for smooth UX\n if (onEndReachedInPromise.current) {\n await onEndReachedInPromise.current;\n onStartReachedInPromise.current = loadMoreRecent(limit).then(callback).catch(onError);\n } else {\n onStartReachedInPromise.current = loadMoreRecent(limit).then(callback).catch(onError);\n }\n };\n\n /**\n * 1. Makes a call to `loadMore` function, which queries more older messages.\n * 2. Ensures that we call `loadMore`, once per content length\n * 3. If the call to `loadMoreRecent` is in progress, we wait for it to finish to make sure scroll doesn't jump.\n */\n const maybeCallOnEndReached = async () => {\n // If onEndReached has already been called for given messageList length, then ignore.\n if (messageList?.length && onEndReachedTracker.current[messageList.length]) {\n return;\n }\n\n if (messageList?.length) {\n onEndReachedTracker.current[messageList.length] = true;\n }\n\n const callback = () => {\n onEndReachedInPromise.current = null;\n return Promise.resolve();\n };\n\n const onError = () => {\n /** Release the onEndReachedTracker trigger after 2 seconds, to try again */\n setTimeout(() => {\n onEndReachedTracker.current = {};\n }, 2000);\n };\n\n // If onStartReached is in progress, better to wait for it to finish for smooth UX\n if (onStartReachedInPromise.current) {\n await onStartReachedInPromise.current;\n onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore())\n .then(callback)\n .catch(onError);\n } else {\n onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore())\n .then(callback)\n .catch(onError);\n }\n };\n\n /**\n * Following if condition covers following cases:\n * 1. If I scroll up -> show scrollToBottom button.\n * 2. If I scroll to bottom of screen\n * |-> hide scrollToBottom button.\n * |-> if channel is unread, call markRead().\n */\n const handleScroll: ScrollViewProps['onScroll'] = (event) => {\n if (!channel || !channelResyncScrollSet.current) {\n return;\n }\n\n const offset = event.nativeEvent.contentOffset.y;\n const visibleLength = event.nativeEvent.layoutMeasurement.height;\n const contentLength = event.nativeEvent.contentSize.height;\n // Check if scroll has reached either start of end of list.\n const isScrollAtStart = offset < 100;\n const isScrollAtEnd = contentLength - visibleLength - offset < 100;\n\n if (isScrollAtStart) {\n maybeCallOnStartReached();\n }\n\n if (isScrollAtEnd) {\n maybeCallOnEndReached();\n }\n\n // Show scrollToBottom button once scroll position goes beyond 300.\n const isScrollAtBottom = offset <= 300;\n const showScrollToBottomButton = !isScrollAtBottom || !hasNoMoreRecentMessagesToLoad;\n\n const shouldMarkRead =\n !threadList && offset <= 0 && hasNoMoreRecentMessagesToLoad && channel.countUnread() > 0;\n\n if (shouldMarkRead) {\n markRead();\n }\n\n setScrollToBottomButtonVisible(showScrollToBottomButton);\n\n if (onListScroll) {\n onListScroll(event);\n }\n };\n\n const goToNewMessages = async () => {\n if (!hasNoMoreRecentMessagesToLoad) {\n resetPaginationTrackersRef.current();\n await reloadChannel();\n } else if (flatListRef.current) {\n flatListRef.current.scrollToOffset({\n offset: 0,\n });\n }\n\n setScrollToBottomButtonVisible(false);\n if (!threadList) {\n markRead();\n }\n };\n\n const onScrollToIndexFailedRef = useRef<\n FlatListProps<MessageType<StreamChatGenerics>>['onScrollToIndexFailed']\n >((info) => {\n // We got a failure as we tried to scroll to an item that was outside the render length\n if (flatListRef.current) {\n // we dont know the actual size of all items but we can see the average, so scroll to the closest offset\n flatListRef.current.scrollToOffset({\n animated: false,\n offset: info.averageItemLength * info.index,\n });\n // since we used only an average offset.. we wont go to the center of the item yet\n // with a little delay to wait for scroll to offset to complete, we can then scroll to the index\n setTimeout(() => {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: info.index,\n viewPosition: 0.5, // try to place message in the center of the screen\n });\n if (messageIdLastScrolledToRef.current) {\n setTargetedMessage(messageIdLastScrolledToRef.current);\n }\n }, 150);\n }\n });\n\n const goToMessage = useCallback(\n (messageId: string) => {\n const indexOfParentInMessageList = messageList.findIndex(\n (message) => message?.id === messageId,\n );\n if (indexOfParentInMessageList !== -1 && flatListRef.current) {\n flatListRef.current.scrollToIndex({\n animated: true,\n index: indexOfParentInMessageList,\n viewPosition: 0.5, // try to place message in the center of the screen\n });\n // keep track of this messageId, so that we dont scroll to again in useEffect for targeted message change\n messageIdLastScrolledToRef.current = messageId;\n setTargetedMessage(messageId);\n return;\n }\n messageIdToScrollToRef.current = messageId; // keep track of the id to scroll afterwards\n loadChannelAroundMessage({ messageId }); // now try to load the message and whats around it\n resetPaginationTrackersRef.current();\n },\n [messageList],\n );\n\n /**\n * Check if a messageId needs to be scrolled to after list loads, and scroll to it\n * Note: This effect fires on every list change with a small debounce so that scrolling isnt abrupted by an immediate rerender\n */\n useEffect(() => {\n if (scrollToDebounceTimeoutRef.current) clearTimeout(scrollToDebounceTimeoutRef.current);\n scrollToDebounceTimeoutRef.current = setTimeout(() => {\n // goToMessage method might have requested to scroll to a message\n let messageIdToScroll: string | undefined = messageIdToScrollToRef.current;\n if (!initialScrollSet.current && initialScrollToFirstUnreadMessage) {\n // find the first unread message, if we have to initially scroll to an unread message\n for (let index = messageList.length - 1; index >= 0; index--) {\n if (isUnreadMessageRef.current(messageList[index], channelLastReadRef.current)) {\n messageIdToScroll = messageList[index].id;\n break;\n }\n }\n } else if (targetedMessage && messageIdLastScrolledToRef.current !== targetedMessage) {\n // if some messageId was targeted but not scrolledTo yet\n // we have scroll to there after loading completes\n messageIdToScroll = targetedMessage;\n }\n if (!messageIdToScroll) return;\n const indexOfParentInMessageList = messageList.findIndex(\n (message) => message?.id === messageIdToScroll,\n );\n if (indexOfParentInMessageList !== -1 && flatListRef.current) {\n flatListRef.current.scrollToIndex({\n animated: false,\n index: indexOfParentInMessageList,\n viewPosition: 0.5, // try to place message in the center of the screen\n });\n // reset the messageId tracker to not scroll to that again\n messageIdToScrollToRef.current = undefined;\n // keep track of this messageId, so that we dont scroll to again for targeted message change\n messageIdLastScrolledToRef.current = messageIdToScroll;\n if (!initialScrollSet.current && initialScrollToFirstUnreadMessage) {\n initialScrollSet.current = true;\n } else {\n setTargetedMessage(messageIdToScroll);\n }\n }\n }, 150);\n }, [messageList, targetedMessage, initialScrollToFirstUnreadMessage]);\n\n const messagesWithImages =\n legacyImageViewerSwipeBehaviour &&\n messageList.filter((message) => {\n const isMessageTypeDeleted = message.type === 'deleted';\n if (!isMessageTypeDeleted && message.attachments) {\n return message.attachments.some(\n (attachment) =>\n attachment.type === 'image' &&\n !attachment.title_link &&\n !attachment.og_scrape_url &&\n (attachment.image_url || attachment.thumb_url),\n );\n }\n return false;\n });\n\n /**\n * This is for the useEffect to run again in the case that a message\n * gets edited with more or the same number of images\n */\n const imageString =\n legacyImageViewerSwipeBehaviour &&\n messagesWithImages &&\n messagesWithImages\n .map((message) =>\n message.attachments\n ?.map((attachment) => attachment.image_url || attachment.thumb_url || '')\n .join(),\n )\n .join();\n\n const numberOfMessagesWithImages =\n legacyImageViewerSwipeBehaviour && messagesWithImages && messagesWithImages.length;\n const threadExists = !!thread;\n\n useEffect(() => {\n if (\n legacyImageViewerSwipeBehaviour &&\n isListActive &&\n ((threadList && thread) || (!threadList && !thread))\n ) {\n setMessages(messagesWithImages as MessageType<StreamChatGenerics>[]);\n }\n }, [\n imageString,\n isListActive,\n legacyImageViewerSwipeBehaviour,\n numberOfMessagesWithImages,\n threadExists,\n threadList,\n ]);\n\n const stickyHeaderFormatDate =\n stickyHeaderDate?.getFullYear() === new Date().getFullYear() ? 'MMM D' : 'MMM D, YYYY';\n const tStickyHeaderDate =\n stickyHeaderDate && !hideStickyDateHeader ? tDateTimeParser(stickyHeaderDate) : null;\n\n const stickyHeaderDateString = useMemo(() => {\n if (tStickyHeaderDate === null || hideStickyDateHeader) return null;\n if (isDayOrMoment(tStickyHeaderDate)) return tStickyHeaderDate.format(stickyHeaderFormatDate);\n\n return new Date(tStickyHeaderDate).toDateString();\n }, [tStickyHeaderDate, stickyHeaderFormatDate, hideStickyDateHeader]);\n\n const dismissImagePicker = () => {\n if (!hasMoved && selectedPicker) {\n setSelectedPicker(undefined);\n closePicker();\n }\n };\n const onScrollBeginDrag = () => !hasMoved && selectedPicker && setHasMoved(true);\n const onScrollEndDrag = () => hasMoved && selectedPicker && setHasMoved(false);\n\n const refCallback = (ref: FlatListType<MessageType<StreamChatGenerics>>) => {\n flatListRef.current = ref;\n\n if (setFlatListRef) {\n setFlatListRef(ref);\n }\n };\n\n const debugRef = useDebugContext();\n\n const isDebugModeEnabled = __DEV__ && debugRef && debugRef.current;\n\n if (isDebugModeEnabled) {\n if (debugRef.current.setEventType) debugRef.current.setEventType('send');\n if (debugRef.current.setSendEventParams)\n debugRef.current.setSendEventParams({\n action: thread ? 'ThreadList' : 'Messages',\n data: messageList,\n });\n }\n\n const renderListEmptyComponent = useCallback(\n () => (\n <View\n style={[styles.flex, shouldApplyAndroidWorkaround ? styles.invertAndroid : styles.invert]}\n testID='empty-state'\n >\n <EmptyStateIndicator listType='message' />\n </View>\n ),\n [EmptyStateIndicator, shouldApplyAndroidWorkaround],\n );\n\n const ListFooterComponent = useCallback(\n () => (\n <View style={shouldApplyAndroidWorkaround ? styles.invertAndroid : undefined}>\n <FooterComponent />\n </View>\n ),\n [shouldApplyAndroidWorkaround, FooterComponent],\n );\n\n const ListHeaderComponent = useCallback(\n () => (\n <View style={shouldApplyAndroidWorkaround ? styles.invertAndroid : undefined}>\n <HeaderComponent />\n </View>\n ),\n [shouldApplyAndroidWorkaround, HeaderComponent],\n );\n\n if (!FlatList) return null;\n\n if (loading) {\n return (\n <View style={styles.flex}>\n <LoadingIndicator listType='message' />\n </View>\n );\n }\n\n const StickyHeaderComponent = () => {\n if (!stickyHeaderDateString) return null;\n if (StickyHeader) return <StickyHeader dateString={stickyHeaderDateString} />;\n if (messageListLengthAfterUpdate) return <DateHeader dateString={stickyHeaderDateString} />;\n return null;\n };\n\n return (\n <View\n style={[styles.container, { backgroundColor: white_snow }, container]}\n testID='message-flat-list-wrapper'\n >\n <FlatList\n CellRendererComponent={\n shouldApplyAndroidWorkaround ? InvertedCellRendererComponent : undefined\n }\n contentContainerStyle={[styles.contentContainer, contentContainer]}\n data={messageList}\n /** Disables the MessageList UI. Which means, message actions, reactions won't work. */\n extraData={disabled || !hasNoMoreRecentMessagesToLoad}\n inverted={shouldApplyAndroidWorkaround ? false : inverted}\n keyboardShouldPersistTaps='handled'\n keyExtractor={keyExtractor}\n ListEmptyComponent={renderListEmptyComponent}\n ListFooterComponent={ListFooterComponent}\n ListHeaderComponent={ListHeaderComponent}\n maintainVisibleContentPosition={{\n autoscrollToTopThreshold: autoscrollToTop ? 10 : undefined,\n minIndexForVisible: 1,\n }}\n maxToRenderPerBatch={30}\n onScroll={handleScroll}\n onScrollBeginDrag={onScrollBeginDrag}\n onScrollEndDrag={onScrollEndDrag}\n onScrollToIndexFailed={onScrollToIndexFailedRef.current}\n onTouchEnd={dismissImagePicker}\n onViewableItemsChanged={onViewableItemsChanged.current}\n ref={refCallback}\n renderItem={renderItem}\n scrollEnabled={overlay === 'none'}\n showsVerticalScrollIndicator={!shouldApplyAndroidWorkaround}\n style={[\n styles.listContainer,\n listContainer,\n shouldApplyAndroidWorkaround ? styles.invertAndroid : undefined,\n ]}\n testID='message-flat-list'\n viewabilityConfig={flatListViewabilityConfig}\n {...additionalFlatListProps}\n />\n {!loading && (\n <>\n <View style={styles.stickyHeader}>\n <StickyHeaderComponent />\n </View>\n {!disableTypingIndicator && TypingIndicator && (\n <TypingIndicatorContainer>\n <TypingIndicator />\n </TypingIndicatorContainer>\n )}\n <ScrollToBottomButton\n onPress={goToNewMessages}\n showNotification={scrollToBottomButtonVisible}\n unreadCount={threadList ? 0 : channel?.countUnread()}\n />\n </>\n )}\n <NetworkDownIndicator />\n </View>\n );\n};\n\nexport type MessageListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageListPropsWithContext<StreamChatGenerics>>;\n\nexport const MessageList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageListProps<StreamChatGenerics>,\n) => {\n const { closePicker, selectedPicker, setSelectedPicker } = useAttachmentPickerContext();\n const {\n channel,\n disabled,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n error,\n hideStickyDateHeader,\n isChannelActive,\n loadChannelAroundMessage,\n loading,\n LoadingIndicator,\n markRead,\n NetworkDownIndicator,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n } = useChannelContext<StreamChatGenerics>();\n const { client } = useChatContext<StreamChatGenerics>();\n const { setMessages } = useImageGalleryContext<StreamChatGenerics>();\n const {\n DateHeader,\n disableTypingIndicator,\n FlatList,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n legacyImageViewerSwipeBehaviour,\n Message,\n MessageSystem,\n myMessageTheme,\n ScrollToBottomButton,\n TypingIndicator,\n TypingIndicatorContainer,\n } = useMessagesContext<StreamChatGenerics>();\n const { hasNoMoreRecentMessagesToLoad, loadMore, loadMoreRecent } =\n usePaginatedMessageListContext<StreamChatGenerics>();\n const { overlay } = useOverlayContext();\n const { loadMoreThread, thread } = useThreadContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n return (\n <MessageListWithContext\n {...{\n channel,\n client,\n closePicker,\n DateHeader,\n disabled,\n disableTypingIndicator,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n error,\n FlatList,\n hasNoMoreRecentMessagesToLoad,\n hideStickyDateHeader,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n isListActive: isChannelActive,\n legacyImageViewerSwipeBehaviour,\n loadChannelAroundMessage,\n loading,\n LoadingIndicator,\n loadMore,\n loadMoreRecent,\n loadMoreThread,\n markRead,\n Message,\n MessageSystem,\n myMessageTheme,\n NetworkDownIndicator,\n overlay,\n reloadChannel,\n ScrollToBottomButton,\n scrollToFirstUnreadThreshold,\n selectedPicker,\n setMessages,\n setSelectedPicker,\n setTargetedMessage,\n StickyHeader,\n t,\n targetedMessage,\n tDateTimeParser,\n thread,\n TypingIndicator,\n TypingIndicatorContainer,\n }}\n {...props}\n noGroupByUser={!enableMessageGroupingByUser || props.noGroupByUser}\n />\n );\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["styles","StyleSheet","create","container","alignItems","flexDirection","justifyContent","marginBottom","line","flex","height","text","fontSize","fontWeight","textAlign","textContainer","marginTop","MessageSystem","props","formatDate","message","style","useTheme","theme","colors","grey","grey_whisper","messageList","messageSystem","dateText","useTranslationContext","tDateTimeParser","createdAt","created_at","parsedDate","date","isDayOrMoment","calendar","toUpperCase","backgroundColor","color","displayName"],"sources":["MessageSystem.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, StyleSheet, Text, View, ViewStyle } from 'react-native';\n\nimport type { MessageType } from './hooks/useMessageList';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n TDateTimeParserInput,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'center',\n marginBottom: 10,\n },\n line: {\n flex: 1,\n height: 0.5,\n },\n text: {\n fontSize: 10,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n textContainer: {\n flex: 3,\n marginTop: 10,\n },\n});\n\nexport type MessageSystemProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /** Current [message object](https://getstream.io/chat/docs/#message_format) */\n message: MessageType<StreamChatGenerics>;\n /**\n * Formatter function for date object.\n *\n * @param date TDateTimeParserInput object of message\n * @returns string\n */\n formatDate?: (date: TDateTimeParserInput) => string;\n style?: StyleProp<ViewStyle>;\n};\n\n/**\n * A component to display system message. e.g, when someone updates the channel,\n * they can attach a message with that update. That message will be available\n * in message list as (type) system message.\n */\nexport const MessageSystem = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageSystemProps<StreamChatGenerics>,\n) => {\n const { formatDate, message, style } = props;\n\n const {\n theme: {\n colors: { grey, grey_whisper },\n messageList: {\n messageSystem: { container, dateText, line, text, textContainer },\n },\n },\n } = useTheme();\n const { tDateTimeParser } = useTranslationContext();\n\n const createdAt = message.created_at;\n const parsedDate = tDateTimeParser(createdAt);\n const date =\n formatDate && createdAt\n ? formatDate(createdAt)\n : parsedDate && isDayOrMoment(parsedDate)\n ? parsedDate.calendar().toUpperCase()\n : parsedDate;\n\n return (\n <View style={[styles.container, style, container]} testID='message-system'>\n <View style={[styles.line, { backgroundColor: grey_whisper }, line]} />\n <View style={[styles.textContainer, textContainer]}>\n <Text style={[styles.text, { color: grey }, text]}>\n {message.text?.toUpperCase() || ''}\n </Text>\n <Text style={[styles.text, { color: grey }, dateText]}>{date}</Text>\n </View>\n <View style={[styles.line, { backgroundColor: grey_whisper }, line]} />\n </View>\n );\n};\n\nMessageSystem.displayName = 'MessageSystem{messageList{messageSystem}}';\n"],"mappings":";;;;;AAAA;AACA;AAIA;AACA;AAI8D;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_ThemeContext","_TranslationContext","_this","_jsxFileName","styles","StyleSheet","create","container","alignItems","flexDirection","justifyContent","marginBottom","line","flex","height","text","fontSize","fontWeight","textAlign","textContainer","marginTop","MessageSystem","props","_message$text","formatDate","message","style","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","grey","grey_whisper","_useTheme$theme$messa","messageList","messageSystem","dateText","_useTranslationContex","useTranslationContext","tDateTimeParser","createdAt","created_at","parsedDate","date","isDayOrMoment","calendar","toUpperCase","createElement","View","testID","__self","__source","fileName","lineNumber","columnNumber","backgroundColor","Text","color","exports","displayName"],"sources":["MessageSystem.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, StyleSheet, Text, View, ViewStyle } from 'react-native';\n\nimport type { MessageType } from './hooks/useMessageList';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n TDateTimeParserInput,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'center',\n marginBottom: 10,\n },\n line: {\n flex: 1,\n height: 0.5,\n },\n text: {\n fontSize: 10,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n textContainer: {\n flex: 3,\n marginTop: 10,\n },\n});\n\nexport type MessageSystemProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /** Current [message object](https://getstream.io/chat/docs/#message_format) */\n message: MessageType<StreamChatGenerics>;\n /**\n * Formatter function for date object.\n *\n * @param date TDateTimeParserInput object of message\n * @returns string\n */\n formatDate?: (date: TDateTimeParserInput) => string;\n style?: StyleProp<ViewStyle>;\n};\n\n/**\n * A component to display system message. e.g, when someone updates the channel,\n * they can attach a message with that update. That message will be available\n * in message list as (type) system message.\n */\nexport const MessageSystem = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageSystemProps<StreamChatGenerics>,\n) => {\n const { formatDate, message, style } = props;\n\n const {\n theme: {\n colors: { grey, grey_whisper },\n messageList: {\n messageSystem: { container, dateText, line, text, textContainer },\n },\n },\n } = useTheme();\n const { tDateTimeParser } = useTranslationContext();\n\n const createdAt = message.created_at;\n const parsedDate = tDateTimeParser(createdAt);\n const date =\n formatDate && createdAt\n ? formatDate(createdAt)\n : parsedDate && isDayOrMoment(parsedDate)\n ? parsedDate.calendar().toUpperCase()\n : parsedDate;\n\n return (\n <View style={[styles.container, style, container]} testID='message-system'>\n <View style={[styles.line, { backgroundColor: grey_whisper }, line]} />\n <View style={[styles.textContainer, textContainer]}>\n <Text style={[styles.text, { color: grey }, text]}>\n {message.text?.toUpperCase() || ''}\n </Text>\n <Text style={[styles.text, { color: grey }, dateText]}>{date}</Text>\n </View>\n <View style={[styles.line, { backgroundColor: grey_whisper }, line]} />\n </View>\n );\n};\n\nMessageSystem.displayName = 'MessageSystem{messageList{messageSystem}}';\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["styles","StyleSheet","create","errorNotification","alignItems","left","paddingVertical","position","right","top","errorNotificationText","color","fontSize","NetworkDownIndicator","useChannelContext","error","useChatContext","isOnline","useTheme","theme","grey","colors","messageList","useTranslationContext","t","getText","indicatorText","backgroundColor"],"sources":["NetworkDownIndicator.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\n\nimport { useChannelContext } from '../../contexts/channelContext/ChannelContext';\nimport { useChatContext } from '../../contexts/chatContext/ChatContext';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\n\nconst styles = StyleSheet.create({\n errorNotification: {\n alignItems: 'center',\n left: 0,\n paddingVertical: 4,\n position: 'absolute',\n right: 0,\n top: 0,\n },\n errorNotificationText: {\n color: '#FFFFFF',\n fontSize: 14,\n },\n});\n\nexport const NetworkDownIndicator = () => {\n const { error } = useChannelContext();\n const { isOnline } = useChatContext();\n const {\n theme: {\n colors: { grey },\n messageList: { errorNotification, errorNotificationText },\n },\n } = useTheme();\n const { t } = useTranslationContext();\n\n const getText = () => {\n if (!isOnline) {\n return t('Reconnecting...');\n } else if (error) {\n return t('Error loading messages for this channel...');\n }\n return '';\n };\n\n const indicatorText = getText();\n\n if (!indicatorText) return null;\n\n return (\n <View\n style={[styles.errorNotification, { backgroundColor: `${grey}E6` }, errorNotification]}\n testID='error-notification'\n >\n <Text style={[styles.errorNotificationText, errorNotificationText]}>{indicatorText}</Text>\n </View>\n );\n};\n"],"mappings":";;;;;AAAA;AACA;AAEA;AACA;AAEA;AACA;AAA6F;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_ChannelContext","_ChatContext","_ThemeContext","_TranslationContext","_this","_jsxFileName","styles","StyleSheet","create","errorNotification","alignItems","left","paddingVertical","position","right","top","errorNotificationText","color","fontSize","NetworkDownIndicator","_useChannelContext","useChannelContext","error","_useChatContext","useChatContext","isOnline","_useTheme","useTheme","_useTheme$theme","theme","grey","colors","_useTheme$theme$messa","messageList","_useTranslationContex","useTranslationContext","t","getText","indicatorText","createElement","View","style","backgroundColor","testID","__self","__source","fileName","lineNumber","columnNumber","Text","exports"],"sources":["NetworkDownIndicator.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\n\nimport { useChannelContext } from '../../contexts/channelContext/ChannelContext';\nimport { useChatContext } from '../../contexts/chatContext/ChatContext';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\n\nconst styles = StyleSheet.create({\n errorNotification: {\n alignItems: 'center',\n left: 0,\n paddingVertical: 4,\n position: 'absolute',\n right: 0,\n top: 0,\n },\n errorNotificationText: {\n color: '#FFFFFF',\n fontSize: 14,\n },\n});\n\nexport const NetworkDownIndicator = () => {\n const { error } = useChannelContext();\n const { isOnline } = useChatContext();\n const {\n theme: {\n colors: { grey },\n messageList: { errorNotification, errorNotificationText },\n },\n } = useTheme();\n const { t } = useTranslationContext();\n\n const getText = () => {\n if (!isOnline) {\n return t('Reconnecting...');\n } else if (error) {\n return t('Error loading messages for this channel...');\n }\n return '';\n };\n\n const indicatorText = getText();\n\n if (!indicatorText) return null;\n\n return (\n <View\n style={[styles.errorNotification, { backgroundColor: `${grey}E6` }, errorNotification]}\n testID='error-notification'\n >\n <Text style={[styles.errorNotificationText, errorNotificationText]}>{indicatorText}</Text>\n </View>\n );\n};\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAEA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,mBAAA,GAAAL,OAAA;AAA6F,IAAAM,KAAA;EAAAC,YAAA;AAE7F,IAAMC,MAAM,GAAGC,uBAAU,CAACC,MAAM,CAAC;EAC/BC,iBAAiB,EAAE;IACjBC,UAAU,EAAE,QAAQ;IACpBC,IAAI,EAAE,CAAC;IACPC,eAAe,EAAE,CAAC;IAClBC,QAAQ,EAAE,UAAU;IACpBC,KAAK,EAAE,CAAC;IACRC,GAAG,EAAE;EACP,CAAC;EACDC,qBAAqB,EAAE;IACrBC,KAAK,EAAE,SAAS;IAChBC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEK,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAA,EAAS;EACxC,IAAAC,kBAAA,GAAkB,IAAAC,iCAAiB,GAAE;IAA7BC,KAAK,GAAAF,kBAAA,CAALE,KAAK;EACb,IAAAC,eAAA,GAAqB,IAAAC,2BAAc,GAAE;IAA7BC,QAAQ,GAAAF,eAAA,CAARE,QAAQ;EAChB,IAAAC,SAAA,GAKI,IAAAC,sBAAQ,GAAE;IAAAC,eAAA,GAAAF,SAAA,CAJZG,KAAK;IACOC,IAAI,GAAAF,eAAA,CAAdG,MAAM,CAAID,IAAI;IAAAE,qBAAA,GAAAJ,eAAA,CACdK,WAAW;IAAIxB,iBAAiB,GAAAuB,qBAAA,CAAjBvB,iBAAiB;IAAEO,qBAAqB,GAAAgB,qBAAA,CAArBhB,qBAAqB;EAG3D,IAAAkB,qBAAA,GAAc,IAAAC,yCAAqB,GAAE;IAA7BC,CAAC,GAAAF,qBAAA,CAADE,CAAC;EAET,IAAMC,OAAO,GAAG,SAAVA,OAAOA,CAAA,EAAS;IACpB,IAAI,CAACZ,QAAQ,EAAE;MACb,OAAOW,CAAC,CAAC,iBAAiB,CAAC;IAC7B,CAAC,MAAM,IAAId,KAAK,EAAE;MAChB,OAAOc,CAAC,CAAC,4CAA4C,CAAC;IACxD;IACA,OAAO,EAAE;EACX,CAAC;EAED,IAAME,aAAa,GAAGD,OAAO,EAAE;EAE/B,IAAI,CAACC,aAAa,EAAE,OAAO,IAAI;EAE/B,OACE1C,MAAA,YAAA2C,aAAA,CAACxC,YAAA,CAAAyC,IAAI;IACHC,KAAK,EAAE,CAACnC,MAAM,CAACG,iBAAiB,EAAE;MAAEiC,eAAe,EAAKZ,IAAI;IAAK,CAAC,EAAErB,iBAAiB,CAAE;IACvFkC,MAAM,EAAC,oBAAoB;IAAAC,MAAA,EAAAxC,KAAA;IAAAyC,QAAA;MAAAC,QAAA,EAAAzC,YAAA;MAAA0C,UAAA;MAAAC,YAAA;IAAA;EAAA,GAE3BpD,MAAA,YAAA2C,aAAA,CAACxC,YAAA,CAAAkD,IAAI;IAACR,KAAK,EAAE,CAACnC,MAAM,CAACU,qBAAqB,EAAEA,qBAAqB,CAAE;IAAA4B,MAAA,EAAAxC,KAAA;IAAAyC,QAAA;MAAAC,QAAA,EAAAzC,YAAA;MAAA0C,UAAA;MAAAC,YAAA;IAAA;EAAA,GAAEV,aAAa,CAAQ,CACrF;AAEX,CAAC;AAACY,OAAA,CAAA/B,oBAAA,GAAAA,oBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["styles","StyleSheet","create","container","alignItems","borderRadius","elevation","height","justifyContent","shadowOffset","width","shadowOpacity","shadowRadius","touchable","bottom","position","right","unreadCountNotificationContainer","minWidth","paddingHorizontal","top","unreadCountNotificationText","fontSize","textAlign","textAlignVertical","wrapper","ScrollToBottomButton","props","onPress","showNotification","unreadCount","useTheme","theme","colors","accent_blue","black","white","messageList","scrollToBottomButton","chevronColor","backgroundColor","shadowColor","color","displayName"],"sources":["ScrollToBottomButton.tsx"],"sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { Down } from '../../icons';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n borderRadius: 20,\n elevation: 5,\n height: 40,\n justifyContent: 'center',\n shadowOffset: {\n height: 2,\n width: 0,\n },\n shadowOpacity: 0.25,\n shadowRadius: 4,\n width: 40,\n },\n touchable: {\n bottom: 20,\n position: 'absolute',\n right: 20,\n },\n unreadCountNotificationContainer: {\n alignItems: 'center',\n borderRadius: 10,\n elevation: 6,\n height: 20,\n justifyContent: 'center',\n minWidth: 20,\n paddingHorizontal: 4,\n position: 'absolute',\n top: 0,\n },\n unreadCountNotificationText: {\n fontSize: 11,\n textAlign: 'center',\n textAlignVertical: 'center',\n },\n wrapper: {\n alignItems: 'center',\n height: 50,\n justifyContent: 'flex-end',\n },\n});\n\nexport type ScrollToBottomButtonProps = {\n /** onPress handler */\n onPress: (event: GestureResponderEvent) => void;\n /** If we should show the notification or not */\n showNotification?: boolean;\n unreadCount?: number;\n};\n\nexport const ScrollToBottomButton: React.FC<ScrollToBottomButtonProps> = (props) => {\n const { onPress, showNotification = true, unreadCount } = props;\n\n const {\n theme: {\n colors: { accent_blue, black, white },\n messageList: {\n scrollToBottomButton: {\n chevronColor,\n container,\n touchable,\n unreadCountNotificationContainer,\n unreadCountNotificationText,\n wrapper,\n },\n },\n },\n } = useTheme();\n\n if (!showNotification) return null;\n\n return (\n <TouchableOpacity\n onPress={onPress}\n style={[styles.touchable, touchable]}\n testID='message-notification'\n >\n <View style={[styles.wrapper, wrapper]}>\n <View style={[styles.container, { backgroundColor: white, shadowColor: black }, container]}>\n <Down pathFill={chevronColor ? chevronColor : black} />\n </View>\n {!!unreadCount && (\n <View\n style={[\n styles.unreadCountNotificationContainer,\n { backgroundColor: accent_blue },\n unreadCountNotificationContainer,\n ]}\n >\n <Text\n style={[\n styles.unreadCountNotificationText,\n { color: white },\n unreadCountNotificationText,\n ]}\n testID='unread-count'\n >\n {unreadCount}\n </Text>\n </View>\n )}\n </View>\n </TouchableOpacity>\n );\n};\n\nScrollToBottomButton.displayName = 'ScrollToBottomButton{messageList{scrollToBottomButton}}';\n"],"mappings":";;;;;AAAA;AACA;AAEA;AACA;AAAmC;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_ThemeContext","_icons","_this","_jsxFileName","styles","StyleSheet","create","container","alignItems","borderRadius","elevation","height","justifyContent","shadowOffset","width","shadowOpacity","shadowRadius","touchable","bottom","position","right","unreadCountNotificationContainer","minWidth","paddingHorizontal","top","unreadCountNotificationText","fontSize","textAlign","textAlignVertical","wrapper","ScrollToBottomButton","props","onPress","_props$showNotificati","showNotification","unreadCount","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","accent_blue","black","white","_useTheme$theme$messa","messageList","scrollToBottomButton","chevronColor","createElement","TouchableOpacity","style","testID","__self","__source","fileName","lineNumber","columnNumber","View","backgroundColor","shadowColor","Down","pathFill","Text","color","exports","displayName"],"sources":["ScrollToBottomButton.tsx"],"sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { Down } from '../../icons';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n borderRadius: 20,\n elevation: 5,\n height: 40,\n justifyContent: 'center',\n shadowOffset: {\n height: 2,\n width: 0,\n },\n shadowOpacity: 0.25,\n shadowRadius: 4,\n width: 40,\n },\n touchable: {\n bottom: 20,\n position: 'absolute',\n right: 20,\n },\n unreadCountNotificationContainer: {\n alignItems: 'center',\n borderRadius: 10,\n elevation: 6,\n height: 20,\n justifyContent: 'center',\n minWidth: 20,\n paddingHorizontal: 4,\n position: 'absolute',\n top: 0,\n },\n unreadCountNotificationText: {\n fontSize: 11,\n textAlign: 'center',\n textAlignVertical: 'center',\n },\n wrapper: {\n alignItems: 'center',\n height: 50,\n justifyContent: 'flex-end',\n },\n});\n\nexport type ScrollToBottomButtonProps = {\n /** onPress handler */\n onPress: (event: GestureResponderEvent) => void;\n /** If we should show the notification or not */\n showNotification?: boolean;\n unreadCount?: number;\n};\n\nexport const ScrollToBottomButton: React.FC<ScrollToBottomButtonProps> = (props) => {\n const { onPress, showNotification = true, unreadCount } = props;\n\n const {\n theme: {\n colors: { accent_blue, black, white },\n messageList: {\n scrollToBottomButton: {\n chevronColor,\n container,\n touchable,\n unreadCountNotificationContainer,\n unreadCountNotificationText,\n wrapper,\n },\n },\n },\n } = useTheme();\n\n if (!showNotification) return null;\n\n return (\n <TouchableOpacity\n onPress={onPress}\n style={[styles.touchable, touchable]}\n testID='message-notification'\n >\n <View style={[styles.wrapper, wrapper]}>\n <View style={[styles.container, { backgroundColor: white, shadowColor: black }, container]}>\n <Down pathFill={chevronColor ? chevronColor : black} />\n </View>\n {!!unreadCount && (\n <View\n style={[\n styles.unreadCountNotificationContainer,\n { backgroundColor: accent_blue },\n unreadCountNotificationContainer,\n ]}\n >\n <Text\n style={[\n styles.unreadCountNotificationText,\n { color: white },\n unreadCountNotificationText,\n ]}\n testID='unread-count'\n >\n {unreadCount}\n </Text>\n </View>\n )}\n </View>\n </TouchableOpacity>\n );\n};\n\nScrollToBottomButton.displayName = 'ScrollToBottomButton{messageList{scrollToBottomButton}}';\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAAmC,IAAAI,KAAA;EAAAC,YAAA;AAEnC,IAAMC,MAAM,GAAGC,uBAAU,CAACC,MAAM,CAAC;EAC/BC,SAAS,EAAE;IACTC,UAAU,EAAE,QAAQ;IACpBC,YAAY,EAAE,EAAE;IAChBC,SAAS,EAAE,CAAC;IACZC,MAAM,EAAE,EAAE;IACVC,cAAc,EAAE,QAAQ;IACxBC,YAAY,EAAE;MACZF,MAAM,EAAE,CAAC;MACTG,KAAK,EAAE;IACT,CAAC;IACDC,aAAa,EAAE,IAAI;IACnBC,YAAY,EAAE,CAAC;IACfF,KAAK,EAAE;EACT,CAAC;EACDG,SAAS,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,QAAQ,EAAE,UAAU;IACpBC,KAAK,EAAE;EACT,CAAC;EACDC,gCAAgC,EAAE;IAChCb,UAAU,EAAE,QAAQ;IACpBC,YAAY,EAAE,EAAE;IAChBC,SAAS,EAAE,CAAC;IACZC,MAAM,EAAE,EAAE;IACVC,cAAc,EAAE,QAAQ;IACxBU,QAAQ,EAAE,EAAE;IACZC,iBAAiB,EAAE,CAAC;IACpBJ,QAAQ,EAAE,UAAU;IACpBK,GAAG,EAAE;EACP,CAAC;EACDC,2BAA2B,EAAE;IAC3BC,QAAQ,EAAE,EAAE;IACZC,SAAS,EAAE,QAAQ;IACnBC,iBAAiB,EAAE;EACrB,CAAC;EACDC,OAAO,EAAE;IACPrB,UAAU,EAAE,QAAQ;IACpBG,MAAM,EAAE,EAAE;IACVC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC;AAUK,IAAMkB,oBAAyD,GAAG,SAA5DA,oBAAyDA,CAAIC,KAAK,EAAK;EAClF,IAAQC,OAAO,GAA2CD,KAAK,CAAvDC,OAAO;IAAAC,qBAAA,GAA2CF,KAAK,CAA9CG,gBAAgB;IAAhBA,gBAAgB,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IAAEE,WAAW,GAAKJ,KAAK,CAArBI,WAAW;EAErD,IAAAC,SAAA,GAcI,IAAAC,sBAAQ,GAAE;IAAAC,eAAA,GAAAF,SAAA,CAbZG,KAAK;IAAAC,qBAAA,GAAAF,eAAA,CACHG,MAAM;IAAIC,WAAW,GAAAF,qBAAA,CAAXE,WAAW;IAAEC,KAAK,GAAAH,qBAAA,CAALG,KAAK;IAAEC,KAAK,GAAAJ,qBAAA,CAALI,KAAK;IAAAC,qBAAA,GAAAP,eAAA,CACnCQ,WAAW,CACTC,oBAAoB;IAClBC,YAAY,GAAAH,qBAAA,CAAZG,YAAY;IACZzC,SAAS,GAAAsC,qBAAA,CAATtC,SAAS;IACTU,SAAS,GAAA4B,qBAAA,CAAT5B,SAAS;IACTI,gCAAgC,GAAAwB,qBAAA,CAAhCxB,gCAAgC;IAChCI,2BAA2B,GAAAoB,qBAAA,CAA3BpB,2BAA2B;IAC3BI,OAAO,GAAAgB,qBAAA,CAAPhB,OAAO;EAMf,IAAI,CAACK,gBAAgB,EAAE,OAAO,IAAI;EAElC,OACEtC,MAAA,YAAAqD,aAAA,CAAClD,YAAA,CAAAmD,gBAAgB;IACflB,OAAO,EAAEA,OAAQ;IACjBmB,KAAK,EAAE,CAAC/C,MAAM,CAACa,SAAS,EAAEA,SAAS,CAAE;IACrCmC,MAAM,EAAC,sBAAsB;IAAAC,MAAA,EAAAnD,KAAA;IAAAoD,QAAA;MAAAC,QAAA,EAAApD,YAAA;MAAAqD,UAAA;MAAAC,YAAA;IAAA;EAAA,GAE7B7D,MAAA,YAAAqD,aAAA,CAAClD,YAAA,CAAA2D,IAAI;IAACP,KAAK,EAAE,CAAC/C,MAAM,CAACyB,OAAO,EAAEA,OAAO,CAAE;IAAAwB,MAAA,EAAAnD,KAAA;IAAAoD,QAAA;MAAAC,QAAA,EAAApD,YAAA;MAAAqD,UAAA;MAAAC,YAAA;IAAA;EAAA,GACrC7D,MAAA,YAAAqD,aAAA,CAAClD,YAAA,CAAA2D,IAAI;IAACP,KAAK,EAAE,CAAC/C,MAAM,CAACG,SAAS,EAAE;MAAEoD,eAAe,EAAEf,KAAK;MAAEgB,WAAW,EAAEjB;IAAM,CAAC,EAAEpC,SAAS,CAAE;IAAA8C,MAAA,EAAAnD,KAAA;IAAAoD,QAAA;MAAAC,QAAA,EAAApD,YAAA;MAAAqD,UAAA;MAAAC,YAAA;IAAA;EAAA,GACzF7D,MAAA,YAAAqD,aAAA,CAAChD,MAAA,CAAA4D,IAAI;IAACC,QAAQ,EAAEd,YAAY,GAAGA,YAAY,GAAGL,KAAM;IAAAU,MAAA,EAAAnD,KAAA;IAAAoD,QAAA;MAAAC,QAAA,EAAApD,YAAA;MAAAqD,UAAA;MAAAC,YAAA;IAAA;EAAA,EAAG,CAClD,EACN,CAAC,CAACtB,WAAW,IACZvC,MAAA,YAAAqD,aAAA,CAAClD,YAAA,CAAA2D,IAAI;IACHP,KAAK,EAAE,CACL/C,MAAM,CAACiB,gCAAgC,EACvC;MAAEsC,eAAe,EAAEjB;IAAY,CAAC,EAChCrB,gCAAgC,CAChC;IAAAgC,MAAA,EAAAnD,KAAA;IAAAoD,QAAA;MAAAC,QAAA,EAAApD,YAAA;MAAAqD,UAAA;MAAAC,YAAA;IAAA;EAAA,GAEF7D,MAAA,YAAAqD,aAAA,CAAClD,YAAA,CAAAgE,IAAI;IACHZ,KAAK,EAAE,CACL/C,MAAM,CAACqB,2BAA2B,EAClC;MAAEuC,KAAK,EAAEpB;IAAM,CAAC,EAChBnB,2BAA2B,CAC3B;IACF2B,MAAM,EAAC,cAAc;IAAAC,MAAA,EAAAnD,KAAA;IAAAoD,QAAA;MAAAC,QAAA,EAAApD,YAAA;MAAAqD,UAAA;MAAAC,YAAA;IAAA;EAAA,GAEpBtB,WAAW,CACP,CAEV,CACI,CACU;AAEvB,CAAC;AAAC8B,OAAA,CAAAnC,oBAAA,GAAAA,oBAAA;AAEFA,oBAAoB,CAACoC,WAAW,GAAG,yDAAyD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["styles","StyleSheet","create","container","alignItems","flexDirection","height","justifyContent","loadingDots","marginLeft","typingText","TypingIndicator","useTheme","theme","colors","grey","white_snow","typingIndicator","text","typingString","useTypingString","backgroundColor","color","displayName"],"sources":["TypingIndicator.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\n\nimport { useTypingString } from './hooks/useTypingString';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { LoadingDots } from '../Indicators/LoadingDots';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n height: 24,\n justifyContent: 'flex-start',\n },\n loadingDots: {\n marginLeft: 8,\n },\n typingText: {\n marginLeft: 8,\n },\n});\n\nexport const TypingIndicator = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const {\n theme: {\n colors: { grey, white_snow },\n typingIndicator: { container, text },\n },\n } = useTheme();\n const typingString = useTypingString<StreamChatGenerics>();\n\n return (\n <View\n style={[styles.container, { backgroundColor: `${white_snow}E6` }, container]}\n testID='typing-indicator'\n >\n <LoadingDots style={styles.loadingDots} />\n <Text style={[styles.typingText, { color: grey }, text]}>{typingString}</Text>\n </View>\n );\n};\n\nTypingIndicator.displayName = 'TypingIndicator{typingIndicator}';\n"],"mappings":";;;;;AAAA;AACA;AAEA;AAEA;AAGA;AAAwD;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_useTypingString","_ThemeContext","_LoadingDots","_this","_jsxFileName","styles","StyleSheet","create","container","alignItems","flexDirection","height","justifyContent","loadingDots","marginLeft","typingText","TypingIndicator","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","grey","white_snow","_useTheme$theme$typin","typingIndicator","text","typingString","useTypingString","createElement","View","style","backgroundColor","testID","__self","__source","fileName","lineNumber","columnNumber","LoadingDots","Text","color","exports","displayName"],"sources":["TypingIndicator.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\n\nimport { useTypingString } from './hooks/useTypingString';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { LoadingDots } from '../Indicators/LoadingDots';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n height: 24,\n justifyContent: 'flex-start',\n },\n loadingDots: {\n marginLeft: 8,\n },\n typingText: {\n marginLeft: 8,\n },\n});\n\nexport const TypingIndicator = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const {\n theme: {\n colors: { grey, white_snow },\n typingIndicator: { container, text },\n },\n } = useTheme();\n const typingString = useTypingString<StreamChatGenerics>();\n\n return (\n <View\n style={[styles.container, { backgroundColor: `${white_snow}E6` }, container]}\n testID='typing-indicator'\n >\n <LoadingDots style={styles.loadingDots} />\n <Text style={[styles.typingText, { color: grey }, text]}>{typingString}</Text>\n </View>\n );\n};\n\nTypingIndicator.displayName = 'TypingIndicator{typingIndicator}';\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,gBAAA,GAAAF,OAAA;AAEA,IAAAG,aAAA,GAAAH,OAAA;AAGA,IAAAI,YAAA,GAAAJ,OAAA;AAAwD,IAAAK,KAAA;EAAAC,YAAA;AAExD,IAAMC,MAAM,GAAGC,uBAAU,CAACC,MAAM,CAAC;EAC/BC,SAAS,EAAE;IACTC,UAAU,EAAE,QAAQ;IACpBC,aAAa,EAAE,KAAK;IACpBC,MAAM,EAAE,EAAE;IACVC,cAAc,EAAE;EAClB,CAAC;EACDC,WAAW,EAAE;IACXC,UAAU,EAAE;EACd,CAAC;EACDC,UAAU,EAAE;IACVD,UAAU,EAAE;EACd;AACF,CAAC,CAAC;AAEK,IAAME,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAErB;EACL,IAAAC,SAAA,GAKI,IAAAC,sBAAQ,GAAE;IAAAC,eAAA,GAAAF,SAAA,CAJZG,KAAK;IAAAC,qBAAA,GAAAF,eAAA,CACHG,MAAM;IAAIC,IAAI,GAAAF,qBAAA,CAAJE,IAAI;IAAEC,UAAU,GAAAH,qBAAA,CAAVG,UAAU;IAAAC,qBAAA,GAAAN,eAAA,CAC1BO,eAAe;IAAIlB,SAAS,GAAAiB,qBAAA,CAATjB,SAAS;IAAEmB,IAAI,GAAAF,qBAAA,CAAJE,IAAI;EAGtC,IAAMC,YAAY,GAAG,IAAAC,gCAAe,GAAsB;EAE1D,OACEjC,MAAA,YAAAkC,aAAA,CAAC/B,YAAA,CAAAgC,IAAI;IACHC,KAAK,EAAE,CAAC3B,MAAM,CAACG,SAAS,EAAE;MAAEyB,eAAe,EAAKT,UAAU;IAAK,CAAC,EAAEhB,SAAS,CAAE;IAC7E0B,MAAM,EAAC,kBAAkB;IAAAC,MAAA,EAAAhC,KAAA;IAAAiC,QAAA;MAAAC,QAAA,EAAAjC,YAAA;MAAAkC,UAAA;MAAAC,YAAA;IAAA;EAAA,GAEzB3C,MAAA,YAAAkC,aAAA,CAAC5B,YAAA,CAAAsC,WAAW;IAACR,KAAK,EAAE3B,MAAM,CAACQ,WAAY;IAAAsB,MAAA,EAAAhC,KAAA;IAAAiC,QAAA;MAAAC,QAAA,EAAAjC,YAAA;MAAAkC,UAAA;MAAAC,YAAA;IAAA;EAAA,EAAG,EAC1C3C,MAAA,YAAAkC,aAAA,CAAC/B,YAAA,CAAA0C,IAAI;IAACT,KAAK,EAAE,CAAC3B,MAAM,CAACU,UAAU,EAAE;MAAE2B,KAAK,EAAEnB;IAAK,CAAC,EAAEI,IAAI,CAAE;IAAAQ,MAAA,EAAAhC,KAAA;IAAAiC,QAAA;MAAAC,QAAA,EAAAjC,YAAA;MAAAkC,UAAA;MAAAC,YAAA;IAAA;EAAA,GAAEX,YAAY,CAAQ,CACzE;AAEX,CAAC;AAACe,OAAA,CAAA3B,eAAA,GAAAA,eAAA;AAEFA,eAAe,CAAC4B,WAAW,GAAG,kCAAkC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["styles","StyleSheet","create","container","bottom","position","width","TypingIndicatorContainerWithContext","props","children","client","thread","typing","useTheme","typingIndicatorContainer","theme","messageList","typingUsers","filterTypingUsers","length","TypingIndicatorContainer","useTypingContext","useChatContext","useThreadContext","displayName"],"sources":["TypingIndicatorContainer.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { filterTypingUsers } from './utils/filterTypingUsers';\n\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport { TypingContextValue, useTypingContext } from '../../contexts/typingContext/TypingContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nconst styles = StyleSheet.create({\n container: {\n bottom: 0,\n position: 'absolute',\n width: '100%',\n },\n});\n\ntype TypingIndicatorContainerPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<TypingContextValue<StreamChatGenerics>, 'typing'> &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'thread'>;\n\nconst TypingIndicatorContainerWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<TypingIndicatorContainerPropsWithContext<StreamChatGenerics>>,\n) => {\n const { children, client, thread, typing } = props;\n\n const {\n theme: {\n messageList: { typingIndicatorContainer },\n },\n } = useTheme();\n const typingUsers = filterTypingUsers({ client, thread, typing });\n\n if (!typingUsers.length) {\n return null;\n }\n\n return (\n <View style={[styles.container, typingIndicatorContainer]} testID='typing-indicator-container'>\n {children}\n </View>\n );\n};\n\nexport type TypingIndicatorContainerProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<TypingIndicatorContainerPropsWithContext<StreamChatGenerics>>;\n\nexport const TypingIndicatorContainer = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<TypingIndicatorContainerProps<StreamChatGenerics>>,\n) => {\n const { typing } = useTypingContext<StreamChatGenerics>();\n const { client } = useChatContext<StreamChatGenerics>();\n const { thread } = useThreadContext<StreamChatGenerics>();\n\n return <TypingIndicatorContainerWithContext {...{ client, thread, typing }} {...props} />;\n};\n\nTypingIndicatorContainer.displayName =\n 'TypingIndicatorContainer{messageList{typingIndicatorContainer}}';\n"],"mappings":";;;;;;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAkG;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_filterTypingUsers","_ChatContext","_ThemeContext","_ThreadContext","_TypingContext","_this","_jsxFileName","styles","StyleSheet","create","container","bottom","position","width","TypingIndicatorContainerWithContext","props","children","client","thread","typing","_useTheme","useTheme","typingIndicatorContainer","theme","messageList","typingUsers","filterTypingUsers","length","createElement","View","style","testID","__self","__source","fileName","lineNumber","columnNumber","TypingIndicatorContainer","_useTypingContext","useTypingContext","_useChatContext","useChatContext","_useThreadContext","useThreadContext","_extends2","exports","displayName"],"sources":["TypingIndicatorContainer.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { filterTypingUsers } from './utils/filterTypingUsers';\n\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport { TypingContextValue, useTypingContext } from '../../contexts/typingContext/TypingContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nconst styles = StyleSheet.create({\n container: {\n bottom: 0,\n position: 'absolute',\n width: '100%',\n },\n});\n\ntype TypingIndicatorContainerPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<TypingContextValue<StreamChatGenerics>, 'typing'> &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'thread'>;\n\nconst TypingIndicatorContainerWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<TypingIndicatorContainerPropsWithContext<StreamChatGenerics>>,\n) => {\n const { children, client, thread, typing } = props;\n\n const {\n theme: {\n messageList: { typingIndicatorContainer },\n },\n } = useTheme();\n const typingUsers = filterTypingUsers({ client, thread, typing });\n\n if (!typingUsers.length) {\n return null;\n }\n\n return (\n <View style={[styles.container, typingIndicatorContainer]} testID='typing-indicator-container'>\n {children}\n </View>\n );\n};\n\nexport type TypingIndicatorContainerProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<TypingIndicatorContainerPropsWithContext<StreamChatGenerics>>;\n\nexport const TypingIndicatorContainer = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<TypingIndicatorContainerProps<StreamChatGenerics>>,\n) => {\n const { typing } = useTypingContext<StreamChatGenerics>();\n const { client } = useChatContext<StreamChatGenerics>();\n const { thread } = useThreadContext<StreamChatGenerics>();\n\n return <TypingIndicatorContainerWithContext {...{ client, thread, typing }} {...props} />;\n};\n\nTypingIndicatorContainer.displayName =\n 'TypingIndicatorContainer{messageList{typingIndicatorContainer}}';\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,kBAAA,GAAAF,OAAA;AAEA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,cAAA,GAAAN,OAAA;AAAkG,IAAAO,KAAA;EAAAC,YAAA;AAIlG,IAAMC,MAAM,GAAGC,uBAAU,CAACC,MAAM,CAAC;EAC/BC,SAAS,EAAE;IACTC,MAAM,EAAE,CAAC;IACTC,QAAQ,EAAE,UAAU;IACpBC,KAAK,EAAE;EACT;AACF,CAAC,CAAC;AAQF,IAAMC,mCAAmC,GAAG,SAAtCA,mCAAmCA,CAGvCC,KAAsF,EACnF;EACH,IAAQC,QAAQ,GAA6BD,KAAK,CAA1CC,QAAQ;IAAEC,MAAM,GAAqBF,KAAK,CAAhCE,MAAM;IAAEC,MAAM,GAAaH,KAAK,CAAxBG,MAAM;IAAEC,MAAM,GAAKJ,KAAK,CAAhBI,MAAM;EAExC,IAAAC,SAAA,GAII,IAAAC,sBAAQ,GAAE;IAFKC,wBAAwB,GAAAF,SAAA,CADzCG,KAAK,CACHC,WAAW,CAAIF,wBAAwB;EAG3C,IAAMG,WAAW,GAAG,IAAAC,oCAAiB,EAAC;IAAET,MAAM,EAANA,MAAM;IAAEC,MAAM,EAANA,MAAM;IAAEC,MAAM,EAANA;EAAO,CAAC,CAAC;EAEjE,IAAI,CAACM,WAAW,CAACE,MAAM,EAAE;IACvB,OAAO,IAAI;EACb;EAEA,OACE/B,MAAA,YAAAgC,aAAA,CAAC7B,YAAA,CAAA8B,IAAI;IAACC,KAAK,EAAE,CAACvB,MAAM,CAACG,SAAS,EAAEY,wBAAwB,CAAE;IAACS,MAAM,EAAC,4BAA4B;IAAAC,MAAA,EAAA3B,KAAA;IAAA4B,QAAA;MAAAC,QAAA,EAAA5B,YAAA;MAAA6B,UAAA;MAAAC,YAAA;IAAA;EAAA,GAC3FpB,QAAQ,CACJ;AAEX,CAAC;AAMM,IAAMqB,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAGnCtB,KAA2E,EACxE;EACH,IAAAuB,iBAAA,GAAmB,IAAAC,+BAAgB,GAAsB;IAAjDpB,MAAM,GAAAmB,iBAAA,CAANnB,MAAM;EACd,IAAAqB,eAAA,GAAmB,IAAAC,2BAAc,GAAsB;IAA/CxB,MAAM,GAAAuB,eAAA,CAANvB,MAAM;EACd,IAAAyB,iBAAA,GAAmB,IAAAC,+BAAgB,GAAsB;IAAjDzB,MAAM,GAAAwB,iBAAA,CAANxB,MAAM;EAEd,OAAOtB,MAAA,YAAAgC,aAAA,CAACd,mCAAmC,MAAA8B,SAAA;IAAO3B,MAAM,EAANA,MAAM;IAAEC,MAAM,EAANA,MAAM;IAAEC,MAAM,EAANA;EAAM,GAAQJ,KAAK;IAAAiB,MAAA,EAAA3B,KAAA;IAAA4B,QAAA;MAAAC,QAAA,EAAA5B,YAAA;MAAA6B,UAAA;MAAAC,YAAA;IAAA;EAAA,GAAI;AAC3F,CAAC;AAACS,OAAA,CAAAR,wBAAA,GAAAA,wBAAA;AAEFA,wBAAwB,CAACS,WAAW,GAClC,iEAAiE"}
|