stream-chat-react-native-core 4.5.0 → 4.6.0
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/README.md +3 -3
- package/lib/commonjs/components/Attachment/FileIcon.js +9 -1
- package/lib/commonjs/components/Attachment/FileIcon.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +232 -48
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Chat/Chat.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +39 -21
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.md +1 -1
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js +1 -1
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/commonjs/components/MessageInput/MessageInput.js +129 -44
- package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/commonjs/components/Reply/Reply.js +25 -9
- package/lib/commonjs/components/Reply/Reply.js.map +1 -1
- package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js +15 -8
- package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
- package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
- package/lib/commonjs/contexts/channelContext/ChannelContext.md +1 -1
- package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
- package/lib/commonjs/contexts/channelsContext/ChannelsContext.md +1 -1
- package/lib/commonjs/contexts/chatContext/ChatContext.md +1 -1
- package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.md +1 -1
- package/lib/commonjs/contexts/keyboardContext/KeyboardContext.md +1 -1
- package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/commonjs/contexts/messageContext/MessageContext.md +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +10 -7
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.md +1 -1
- package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +16 -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/messagesContext/MessagesContext.js.map +1 -1
- package/lib/commonjs/contexts/messagesContext/MessagesContext.md +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayContext.md +1 -1
- package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.md +1 -1
- package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.md +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js +1 -0
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/contexts/typingContext/TypingContext.md +1 -1
- package/lib/commonjs/icons/Recorder.js +47 -0
- package/lib/commonjs/icons/Recorder.js.map +1 -0
- package/lib/commonjs/icons/Video.js +82 -0
- package/lib/commonjs/icons/Video.js.map +1 -0
- package/lib/commonjs/icons/index.js +26 -0
- package/lib/commonjs/icons/index.js.map +1 -1
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/FileIcon.js +9 -1
- package/lib/module/components/Attachment/FileIcon.js.map +1 -1
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js +232 -48
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Chat/Chat.js.map +1 -1
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageContent.js +39 -21
- package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/renderText.md +1 -1
- package/lib/module/components/MessageInput/FileUploadPreview.js +1 -1
- package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/module/components/MessageInput/MessageInput.js +129 -44
- package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/module/components/Reply/Reply.js +25 -9
- package/lib/module/components/Reply/Reply.js.map +1 -1
- package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js +15 -8
- package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
- package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
- package/lib/module/contexts/channelContext/ChannelContext.md +1 -1
- package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
- package/lib/module/contexts/channelsContext/ChannelsContext.md +1 -1
- package/lib/module/contexts/chatContext/ChatContext.md +1 -1
- package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.md +1 -1
- package/lib/module/contexts/keyboardContext/KeyboardContext.md +1 -1
- package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/module/contexts/messageContext/MessageContext.md +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +10 -7
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.md +1 -1
- package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +16 -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/messagesContext/MessagesContext.js.map +1 -1
- package/lib/module/contexts/messagesContext/MessagesContext.md +1 -1
- package/lib/module/contexts/overlayContext/OverlayContext.md +1 -1
- package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.md +1 -1
- package/lib/module/contexts/suggestionsContext/SuggestionsContext.md +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js +1 -0
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/contexts/typingContext/TypingContext.md +1 -1
- package/lib/module/icons/Recorder.js +47 -0
- package/lib/module/icons/Recorder.js.map +1 -0
- package/lib/module/icons/Video.js +82 -0
- package/lib/module/icons/Video.js.map +1 -0
- package/lib/module/icons/index.js +26 -0
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/native.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/AttachmentPicker/AttachmentPicker.d.ts +6 -6
- package/lib/typescript/components/Channel/Channel.d.ts +2 -2
- package/lib/typescript/components/Chat/Chat.d.ts +1 -1
- package/lib/typescript/components/Message/Message.d.ts +2 -2
- package/lib/typescript/components/MessageInput/MessageInput.d.ts +1 -1
- package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts +9 -8
- package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +2 -2
- package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts +6 -6
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts +2 -2
- package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +10 -21
- package/lib/typescript/contexts/messageOverlayContext/MessageOverlayContext.d.ts +6 -6
- package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +20 -20
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts +2 -1
- package/lib/typescript/icons/Recorder.d.ts +3 -0
- package/lib/typescript/icons/Video.d.ts +3 -0
- package/lib/typescript/icons/index.d.ts +2 -0
- package/lib/typescript/native.d.ts +3 -14
- package/lib/typescript/types/types.d.ts +24 -0
- package/package.json +1 -1
- package/src/components/Attachment/FileIcon.tsx +45 -0
- package/src/components/AttachmentPicker/AttachmentPicker.tsx +210 -60
- package/src/components/Channel/Channel.tsx +2 -2
- package/src/components/Chat/Chat.tsx +1 -1
- package/src/components/Message/Message.tsx +2 -2
- package/src/components/Message/MessageSimple/MessageContent.tsx +23 -12
- package/src/components/Message/MessageSimple/utils/renderText.md +1 -1
- package/src/components/MessageInput/FileUploadPreview.tsx +1 -1
- package/src/components/MessageInput/MessageInput.tsx +106 -19
- package/src/components/Reply/Reply.tsx +31 -14
- package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +12 -0
- package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +12 -8
- package/src/contexts/channelContext/ChannelContext.md +1 -1
- package/src/contexts/channelContext/ChannelContext.tsx +2 -2
- package/src/contexts/channelsContext/ChannelsContext.md +1 -1
- package/src/contexts/channelsContext/ChannelsContext.tsx +6 -6
- package/src/contexts/chatContext/ChatContext.md +1 -1
- package/src/contexts/imageGalleryContext/ImageGalleryContext.md +1 -1
- package/src/contexts/keyboardContext/KeyboardContext.md +1 -1
- package/src/contexts/messageContext/MessageContext.md +1 -1
- package/src/contexts/messageContext/MessageContext.tsx +2 -2
- package/src/contexts/messageInputContext/MessageInputContext.md +1 -1
- package/src/contexts/messageInputContext/MessageInputContext.tsx +23 -30
- package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +17 -1
- package/src/contexts/messageOverlayContext/MessageOverlayContext.tsx +6 -6
- package/src/contexts/messagesContext/MessagesContext.md +1 -1
- package/src/contexts/messagesContext/MessagesContext.tsx +20 -20
- package/src/contexts/overlayContext/OverlayContext.md +1 -1
- package/src/contexts/paginatedMessageListContext/PaginatedMessageListContext.md +1 -1
- package/src/contexts/suggestionsContext/SuggestionsContext.md +1 -1
- package/src/contexts/themeContext/utils/theme.ts +3 -1
- package/src/contexts/typingContext/TypingContext.md +1 -1
- package/src/icons/Recorder.tsx +16 -0
- package/src/icons/Video.tsx +37 -0
- package/src/icons/index.ts +2 -0
- package/src/native.ts +4 -14
- package/src/types/types.ts +27 -0
- package/src/version.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MessageInput.tsx"],"names":["styles","StyleSheet","create","attachmentSeparator","borderBottomWidth","marginBottom","autoCompleteInputContainer","alignItems","flexDirection","paddingLeft","paddingRight","composerContainer","container","borderTopWidth","padding","inputBoxContainer","borderRadius","borderWidth","flex","optionsContainer","paddingBottom","replyContainer","paddingHorizontal","sendButtonContainer","suggestionsListContainer","elevation","left","position","right","shadowOffset","height","width","shadowOpacity","MessageInputWithContext","props","additionalTextInputProps","asyncIds","asyncUploads","AutoCompleteSuggestionList","closeAttachmentPicker","cooldownEndsAt","CooldownTimer","disabled","editing","FileUploadPreview","fileUploads","giphyActive","ImageUploadPreview","imageUploads","Input","inputBoxRef","InputButtons","InputEditingStateHeader","InputGiphySearch","InputReplyStateHeader","isValidMessage","maxNumberOfFiles","members","mentionedUsers","numberOfUploads","quotedMessage","removeImage","Reply","resetInput","SendButton","sending","sendMessageAsync","ShowThreadMessageInChannelButton","suggestions","thread","threadList","triggerType","uploadNewImage","watchers","setHeight","theme","colors","border","grey_whisper","white","white_smoke","messageInput","attachmentSelectionBar","suggestionListContainer","attachmentPickerBottomSheetHeight","attachmentSelectionBarHeight","bottomInset","selectedImages","selectedPicker","setMaxNumberOfFiles","setSelectedImages","cooldownRemainingSeconds","seconds","hasResetImages","setHasResetImages","selectedImagesLength","length","imageUploadsLength","imagesForInput","forEach","image","id","imagesToUpload","filter","selectedImage","uploadedImage","find","imageUpload","file","uri","url","imagesToRemove","updatedSelectedImages","map","source","Boolean","editingExists","current","focus","asyncIdsString","join","asyncUploadsString","Object","values","state","keys","getMembers","result","member","user","push","getUsers","users","getWatchers","uniqueUsers","usersArray","additionalTextInputContainerProps","editable","undefined","newHeight","nativeEvent","layout","backgroundColor","borderColor","paddingVertical","quoted_message","borderBottomColor","marginHorizontal","bottom","data","onSelect","queryText","areEqual","prevProps","nextProps","prevAdditionalTextInputProps","prevAsyncUploads","prevDisabled","prevEditing","prevFileUploads","prevGiphyActive","prevImageUploads","prevIsValidMessage","prevMentionedUsers","prevQuotedMessage","prevSending","prevShowMoreOptions","showMoreOptions","prevSuggestions","prevT","t","prevThread","prevThreadList","nextAdditionalTextInputProps","nextAsyncUploads","nextDisabled","nextEditing","nextFileUploads","nextGiphyActive","nextImageUploads","nextIsValidMessage","nextMentionedUsers","nextQuotedMessage","nextSending","nextShowMoreOptions","nextSuggestions","nextT","nextThread","nextThreadList","tEqual","additionalTextInputPropsEven","disabledEqual","editingEqual","imageUploadsEqual","giphyActiveEqual","quotedMessageEqual","sendingEqual","showMoreOptionsEqual","isValidMessageEqual","asyncUploadsEqual","every","key","fileUploadsEqual","mentionedUsersEqual","suggestionsEqual","index","name","threadEqual","text","reply_count","threadListEqual","MemoizedMessageInput","React","memo","MessageInput","ownCapabilities","clearEditingState","clearQuotedMessageState","SendMessageDisallowedIndicator","setGiphyActive","setShowMoreOptions","AutoCompleteSuggestionHeader","AutoCompleteSuggestionItem","sendMessage","displayName"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AAIA;;AAEA;;AACA;;AAIA;;AAIA;;AAIA;;AACA;;AAIA;;AACA;;AACA;;AAOA;;AACA;;;;;;;;;;;;;;;AAEA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,mBAAmB,EAAE;AACnBC,IAAAA,iBAAiB,EAAE,CADA;AAEnBC,IAAAA,YAAY,EAAE;AAFK,GADU;AAK/BC,EAAAA,0BAA0B,EAAE;AAC1BC,IAAAA,UAAU,EAAE,QADc;AAE1BC,IAAAA,aAAa,EAAE,KAFW;AAG1BC,IAAAA,WAAW,EAAE,EAHa;AAI1BC,IAAAA,YAAY,EAAE;AAJY,GALG;AAW/BC,EAAAA,iBAAiB,EAAE;AACjBJ,IAAAA,UAAU,EAAE,UADK;AAEjBC,IAAAA,aAAa,EAAE;AAFE,GAXY;AAe/BI,EAAAA,SAAS,EAAE;AACTC,IAAAA,cAAc,EAAE,CADP;AAETC,IAAAA,OAAO,EAAE;AAFA,GAfoB;AAmB/BC,EAAAA,iBAAiB,EAAE;AACjBC,IAAAA,YAAY,EAAE,EADG;AAEjBC,IAAAA,WAAW,EAAE,CAFI;AAGjBC,IAAAA,IAAI,EAAE;AAHW,GAnBY;AAwB/BC,EAAAA,gBAAgB,EAAE;AAChBX,IAAAA,aAAa,EAAE,KADC;AAEhBY,IAAAA,aAAa,EAAE,EAFC;AAGhBV,IAAAA,YAAY,EAAE;AAHE,GAxBa;AA6B/BW,EAAAA,cAAc,EAAE;AAAED,IAAAA,aAAa,EAAE,EAAjB;AAAqBE,IAAAA,iBAAiB,EAAE;AAAxC,GA7Be;AA8B/BC,EAAAA,mBAAmB,EAAE;AAAEH,IAAAA,aAAa,EAAE,EAAjB;AAAqBX,IAAAA,WAAW,EAAE;AAAlC,GA9BU;AA+B/Be,EAAAA,wBAAwB,EAAE;AACxBR,IAAAA,YAAY,EAAE,EADU;AAExBS,IAAAA,SAAS,EAAE,CAFa;AAGxBC,IAAAA,IAAI,EAAE,CAHkB;AAIxBC,IAAAA,QAAQ,EAAE,UAJc;AAKxBC,IAAAA,KAAK,EAAE,CALiB;AAMxBC,IAAAA,YAAY,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAV;AAAaC,MAAAA,KAAK,EAAE;AAApB,KANU;AAOxBC,IAAAA,aAAa,EAAE;AAPS;AA/BK,CAAlB,CAAf;;AAiGA,IAAMC,uBAAuB,GAAG,SAA1BA,uBAA0B,CAG9BC,KAH8B,EAI3B;AACH,MACEC,wBADF,GAwCID,KAxCJ,CACEC,wBADF;AAAA,MAEEC,QAFF,GAwCIF,KAxCJ,CAEEE,QAFF;AAAA,MAGEC,YAHF,GAwCIH,KAxCJ,CAGEG,YAHF;AAAA,MAIEC,0BAJF,GAwCIJ,KAxCJ,CAIEI,0BAJF;AAAA,MAKEC,qBALF,GAwCIL,KAxCJ,CAKEK,qBALF;AAAA,MAMEC,cANF,GAwCIN,KAxCJ,CAMEM,cANF;AAAA,MAOEC,aAPF,GAwCIP,KAxCJ,CAOEO,aAPF;AAAA,MAQEC,QARF,GAwCIR,KAxCJ,CAQEQ,QARF;AAAA,MASEC,OATF,GAwCIT,KAxCJ,CASES,OATF;AAAA,MAUEC,iBAVF,GAwCIV,KAxCJ,CAUEU,iBAVF;AAAA,MAWEC,WAXF,GAwCIX,KAxCJ,CAWEW,WAXF;AAAA,MAYEC,WAZF,GAwCIZ,KAxCJ,CAYEY,WAZF;AAAA,MAaEC,kBAbF,GAwCIb,KAxCJ,CAaEa,kBAbF;AAAA,MAcEC,YAdF,GAwCId,KAxCJ,CAcEc,YAdF;AAAA,MAeEC,KAfF,GAwCIf,KAxCJ,CAeEe,KAfF;AAAA,MAgBEC,WAhBF,GAwCIhB,KAxCJ,CAgBEgB,WAhBF;AAAA,MAiBEC,YAjBF,GAwCIjB,KAxCJ,CAiBEiB,YAjBF;AAAA,MAkBEC,uBAlBF,GAwCIlB,KAxCJ,CAkBEkB,uBAlBF;AAAA,MAmBEC,gBAnBF,GAwCInB,KAxCJ,CAmBEmB,gBAnBF;AAAA,MAoBEC,qBApBF,GAwCIpB,KAxCJ,CAoBEoB,qBApBF;AAAA,MAqBEC,cArBF,GAwCIrB,KAxCJ,CAqBEqB,cArBF;AAAA,MAsBEC,gBAtBF,GAwCItB,KAxCJ,CAsBEsB,gBAtBF;AAAA,MAuBEC,OAvBF,GAwCIvB,KAxCJ,CAuBEuB,OAvBF;AAAA,MAwBEC,cAxBF,GAwCIxB,KAxCJ,CAwBEwB,cAxBF;AAAA,MAyBEC,eAzBF,GAwCIzB,KAxCJ,CAyBEyB,eAzBF;AAAA,MA0BEC,aA1BF,GAwCI1B,KAxCJ,CA0BE0B,aA1BF;AAAA,MA2BEC,WA3BF,GAwCI3B,KAxCJ,CA2BE2B,WA3BF;AAAA,MA4BEC,KA5BF,GAwCI5B,KAxCJ,CA4BE4B,KA5BF;AAAA,MA6BEC,UA7BF,GAwCI7B,KAxCJ,CA6BE6B,UA7BF;AAAA,MA8BEC,UA9BF,GAwCI9B,KAxCJ,CA8BE8B,UA9BF;AAAA,MA+BEC,OA/BF,GAwCI/B,KAxCJ,CA+BE+B,OA/BF;AAAA,MAgCEC,gBAhCF,GAwCIhC,KAxCJ,CAgCEgC,gBAhCF;AAAA,MAiCEC,gCAjCF,GAwCIjC,KAxCJ,CAiCEiC,gCAjCF;AAAA,MAkCEC,WAlCF,GAwCIlC,KAxCJ,CAkCEkC,WAlCF;AAAA,MAmCEC,MAnCF,GAwCInC,KAxCJ,CAmCEmC,MAnCF;AAAA,MAoCEC,UApCF,GAwCIpC,KAxCJ,CAoCEoC,UApCF;AAAA,MAqCEC,WArCF,GAwCIrC,KAxCJ,CAqCEqC,WArCF;AAAA,MAsCEC,cAtCF,GAwCItC,KAxCJ,CAsCEsC,cAtCF;AAAA,MAuCEC,QAvCF,GAwCIvC,KAxCJ,CAuCEuC,QAvCF;;AA0CA,kBAA4B,qBAAS,CAAT,CAA5B;AAAA;AAAA,MAAO3C,MAAP;AAAA,MAAe4C,SAAf;;AAEA,kBAeI,6BAfJ;AAAA,kCACEC,KADF;AAAA,8CAEIC,MAFJ;AAAA,MAEcC,MAFd,yBAEcA,MAFd;AAAA,MAEsBC,YAFtB,yBAEsBA,YAFtB;AAAA,MAEoCC,KAFpC,yBAEoCA,KAFpC;AAAA,MAE2CC,WAF3C,yBAE2CA,WAF3C;AAAA,8CAGIC,YAHJ;AAAA,MAIMC,sBAJN,yBAIMA,sBAJN;AAAA,MAKM5E,0BALN,yBAKMA,0BALN;AAAA,MAMMK,iBANN,yBAMMA,iBANN;AAAA,MAOMC,SAPN,yBAOMA,SAPN;AAAA,MAQMG,iBARN,yBAQMA,iBARN;AAAA,MASMI,gBATN,yBASMA,gBATN;AAAA,MAUME,cAVN,yBAUMA,cAVN;AAAA,MAWME,mBAXN,yBAWMA,mBAXN;AAAA,MAY6C4D,uBAZ7C,yBAYM3D,wBAZN,CAYkCZ,SAZlC;;AAiBA,8BAQI,0DARJ;AAAA,MACEwE,iCADF,yBACEA,iCADF;AAAA,MAEEC,4BAFF,yBAEEA,4BAFF;AAAA,MAGEC,WAHF,yBAGEA,WAHF;AAAA,MAIEC,cAJF,yBAIEA,cAJF;AAAA,MAKEC,cALF,yBAKEA,cALF;AAAA,MAMEC,mBANF,yBAMEA,mBANF;AAAA,MAOEC,iBAPF,yBAOEA,iBAPF;;AAUA,sBAA8C,iCAAalD,cAAb,CAA9C;AAAA,MAAiBmD,wBAAjB,iBAAQC,OAAR;;AASA,wBAAU,YAAM;AACdH,IAAAA,mBAAmB,CAACjC,gBAAD,WAACA,gBAAD,GAAqB,EAArB,CAAnB;AAEA,WAAOjB,qBAAP;AACD,GAJD,EAIG,EAJH;;AAMA,mBAA4C,qBAAS,KAAT,CAA5C;AAAA;AAAA,MAAOsD,cAAP;AAAA,MAAuBC,iBAAvB;;AACA,MAAMC,oBAAoB,GAAGF,cAAc,GAAGN,cAAc,CAACS,MAAlB,GAA2B,CAAtE;AACA,MAAMC,kBAAkB,GAAGJ,cAAc,GAAG7C,YAAY,CAACgD,MAAhB,GAAyB,CAAlE;AACA,MAAME,cAAc,GAAI,CAAC,CAAC7B,MAAF,IAAY,CAAC,CAACC,UAAf,IAA+B,CAACD,MAAD,IAAW,CAACC,UAAlE;AAEA,wBAAU,YAAM;AACdoB,IAAAA,iBAAiB,CAAC,EAAD,CAAjB;;AACA,QAAI1C,YAAY,CAACgD,MAAjB,EAAyB;AACvBhD,MAAAA,YAAY,CAACmD,OAAb,CAAqB,UAACC,KAAD;AAAA,eAAWvC,WAAW,CAACuC,KAAK,CAACC,EAAP,CAAtB;AAAA,OAArB;AACD;;AACD,WAAO;AAAA,aAAMX,iBAAiB,CAAC,EAAD,CAAvB;AAAA,KAAP;AACD,GAND,EAMG,EANH;AAQA,wBAAU,YAAM;AACd,QAAIG,cAAc,KAAK,KAAnB,IAA4BI,kBAAkB,KAAK,CAAnD,IAAwDF,oBAAoB,KAAK,CAArF,EAAwF;AACtFD,MAAAA,iBAAiB,CAAC,IAAD,CAAjB;AACD;AACF,GAJD,EAIG,CAACG,kBAAD,EAAqBF,oBAArB,CAJH;AAMA,wBAAU,YAAM;AACd,QAAIG,cAAc,KAAK,KAAnB,IAA4BlD,YAAY,CAACgD,MAA7C,EAAqD;AACnDhD,MAAAA,YAAY,CAACmD,OAAb,CAAqB,UAACC,KAAD;AAAA,eAAWvC,WAAW,CAACuC,KAAK,CAACC,EAAP,CAAtB;AAAA,OAArB;AACD;AACF,GAJD,EAIG,CAACH,cAAD,CAJH;AAMA,wBAAU,YAAM;AACd,QAAIA,cAAJ,EAAoB;AAClB,UAAIH,oBAAoB,GAAGE,kBAA3B,EAA+C;AAE7C,YAAMK,cAAc,GAAGf,cAAc,CAACgB,MAAf,CAAsB,UAACC,aAAD,EAAmB;AAC9D,cAAMC,aAAa,GAAGzD,YAAY,CAAC0D,IAAb,CACpB,UAACC,WAAD;AAAA,mBACEA,WAAW,CAACC,IAAZ,CAAiBC,GAAjB,KAAyBL,aAAa,CAACK,GAAvC,IAA8CF,WAAW,CAACG,GAAZ,KAAoBN,aAAa,CAACK,GADlF;AAAA,WADoB,CAAtB;AAIA,iBAAO,CAACJ,aAAR;AACD,SANsB,CAAvB;AAOAH,QAAAA,cAAc,CAACH,OAAf,CAAuB,UAACC,KAAD;AAAA,iBAAW5B,cAAc,CAAC4B,KAAD,CAAzB;AAAA,SAAvB;AACD,OAVD,MAUO,IAAIL,oBAAoB,GAAGE,kBAA3B,EAA+C;AAEpD,YAAMc,cAAc,GAAG/D,YAAY,CAACuD,MAAb,CACrB,UAACI,WAAD;AAAA,iBACE,CAACpB,cAAc,CAACmB,IAAf,CACC,UAACF,aAAD;AAAA,mBACEA,aAAa,CAACK,GAAd,KAAsBF,WAAW,CAACC,IAAZ,CAAiBC,GAAvC,IAA8CL,aAAa,CAACK,GAAd,KAAsBF,WAAW,CAACG,GADlF;AAAA,WADD,CADH;AAAA,SADqB,CAAvB;AAOAC,QAAAA,cAAc,CAACZ,OAAf,CAAuB,UAACC,KAAD;AAAA,iBAAWvC,WAAW,CAACuC,KAAK,CAACC,EAAP,CAAtB;AAAA,SAAvB;AACD;AACF;AACF,GAxBD,EAwBG,CAACN,oBAAD,CAxBH;AA0BA,wBAAU,YAAM;AACd,QAAIG,cAAJ,EAAoB;AAClB,UAAID,kBAAkB,GAAGF,oBAAzB,EAA+C;AAE7C,YAAMiB,qBAAqB,GAAGzB,cAAc,CAACgB,MAAf,CAAsB,UAACC,aAAD,EAAmB;AACrE,cAAMC,aAAa,GAAGzD,YAAY,CAAC0D,IAAb,CACpB,UAACC,WAAD;AAAA,mBACEA,WAAW,CAACC,IAAZ,CAAiBC,GAAjB,KAAyBL,aAAa,CAACK,GAAvC,IAA8CF,WAAW,CAACG,GAAZ,KAAoBN,aAAa,CAACK,GADlF;AAAA,WADoB,CAAtB;AAIA,iBAAOJ,aAAP;AACD,SAN6B,CAA9B;AAOAf,QAAAA,iBAAiB,CAACsB,qBAAD,CAAjB;AACD,OAVD,MAUO,IAAIf,kBAAkB,GAAGF,oBAAzB,EAA+C;AAMpDL,QAAAA,iBAAiB,CACf1C,YAAY,CACTiE,GADH,CACO,UAACN,WAAD;AAAA,iBAAkB;AACrB7E,YAAAA,MAAM,EAAE6E,WAAW,CAACC,IAAZ,CAAiB9E,MADJ;AAErBoF,YAAAA,MAAM,EAAEP,WAAW,CAACC,IAAZ,CAAiBM,MAFJ;AAGrBL,YAAAA,GAAG,EAAEF,WAAW,CAACG,GAAZ,IAAmBH,WAAW,CAACC,IAAZ,CAAiBC,GAHpB;AAIrB9E,YAAAA,KAAK,EAAE4E,WAAW,CAACC,IAAZ,CAAiB7E;AAJH,WAAlB;AAAA,SADP,EAOGwE,MAPH,CAOUY,OAPV,CADe,CAAjB;AAUD;AACF;AACF,GA9BD,EA8BG,CAAClB,kBAAD,CA9BH;AAgCA,MAAMmB,aAAa,GAAG,CAAC,CAACzE,OAAxB;AACA,wBAAU,YAAM;AACd,QAAIA,OAAO,IAAIO,WAAW,CAACmE,OAA3B,EAAoC;AAClCnE,MAAAA,WAAW,CAACmE,OAAZ,CAAoBC,KAApB;AACD;;AAWD,QACE,CAAC3E,OAAD,KACCG,WAAW,IACVD,WAAW,CAACmD,MAAZ,GAAqB,CADtB,IAECtC,cAAc,CAACsC,MAAf,GAAwB,CAFzB,IAGChD,YAAY,CAACgD,MAAb,GAAsB,CAHvB,IAICrC,eAAe,GAAG,CALpB,CADF,EAOE;AACAI,MAAAA,UAAU;AACX;AACF,GAxBD,EAwBG,CAACqD,aAAD,CAxBH;AA0BA,MAAMG,cAAc,GAAGnF,QAAQ,CAACoF,IAAT,EAAvB;AACA,MAAMC,kBAAkB,GAAGC,MAAM,CAACC,MAAP,CAActF,YAAd,EACxB4E,GADwB,CACpB;AAAA,QAAGW,KAAH,QAAGA,KAAH;AAAA,QAAUd,GAAV,QAAUA,GAAV;AAAA,gBAAuBc,KAAvB,GAA+Bd,GAA/B;AAAA,GADoB,EAExBU,IAFwB,EAA3B;AAGA,wBAAU,YAAM;AACd,QAAIE,MAAM,CAACG,IAAP,CAAYxF,YAAZ,EAA0B2D,MAA9B,EAAsC;AAKpC/B,MAAAA,OAAO,CAACoD,OAAR,GAAkB,IAAlB;AACAjF,MAAAA,QAAQ,CAAC+D,OAAT,CAAiB,UAACE,EAAD;AAAA,eAAQnC,gBAAgB,CAACmC,EAAD,CAAxB;AAAA,OAAjB;AACApC,MAAAA,OAAO,CAACoD,OAAR,GAAkB,KAAlB;AACD;AACF,GAVD,EAUG,CAACE,cAAD,EAAiBE,kBAAjB,EAAqCvD,gBAArC,CAVH;;AAYA,MAAM4D,UAAU,GAAG,SAAbA,UAAa,GAAM;AACvB,QAAMC,MAA0C,GAAG,EAAnD;;AACA,QAAItE,OAAO,IAAIiE,MAAM,CAACC,MAAP,CAAclE,OAAd,EAAuBuC,MAAtC,EAA8C;AAC5C0B,MAAAA,MAAM,CAACC,MAAP,CAAclE,OAAd,EAAuB0C,OAAvB,CAA+B,UAAC6B,MAAD,EAAY;AACzC,YAAIA,MAAM,CAACC,IAAX,EAAiB;AACfF,UAAAA,MAAM,CAACG,IAAP,CAAYF,MAAM,CAACC,IAAnB;AACD;AACF,OAJD;AAKD;;AAED,WAAOF,MAAP;AACD,GAXD;;AAaA,MAAMI,QAAQ,GAAG,SAAXA,QAAW,GAAM;AACrB,QAAMC,KAAK,iDAAON,UAAU,EAAjB,uCAAwBO,WAAW,EAAnC,EAAX;AAGA,QAAMC,WAAgE,GAAG,EAAzE;;AACA,yDAAmBF,KAAnB,wCAA0B;AAAA,UAAfH,IAAe;;AACxB,UAAIA,IAAI,IAAI,CAACK,WAAW,CAACL,IAAI,CAAC5B,EAAN,CAAxB,EAAmC;AACjCiC,QAAAA,WAAW,CAACL,IAAI,CAAC5B,EAAN,CAAX,GAAuB4B,IAAvB;AACD;AACF;;AACD,QAAMM,UAAU,GAAGb,MAAM,CAACC,MAAP,CAAcW,WAAd,CAAnB;AAEA,WAAOC,UAAP;AACD,GAbD;;AAeA,MAAMF,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxB,QAAMN,MAA0C,GAAG,EAAnD;;AACA,QAAItD,QAAQ,IAAIiD,MAAM,CAACC,MAAP,CAAclD,QAAd,EAAwBuB,MAAxC,EAAgD;AAC9C+B,MAAAA,MAAM,CAACG,IAAP,OAAAH,MAAM,sCAASL,MAAM,CAACC,MAAP,CAAclD,QAAd,CAAT,EAAN;AACD;;AAED,WAAOsD,MAAP;AACD,GAPD;;AASA,MAAMS,iCAAiC;AACrCC,IAAAA,QAAQ,EAAE/F,QAAQ,GAAG,KAAH,GAAWgG;AADQ,KAElCvG,wBAFkC,CAAvC;AAKA,SACE,kEACE,gCAAC,iBAAD;AACE,IAAA,QAAQ,EAAE;AAAA,UAEYwG,SAFZ,SACRC,WADQ,CAENC,MAFM,CAEI/G,MAFJ;AAAA,aAIJ4C,SAAS,CAACiE,SAAD,CAJL;AAAA,KADZ;AAME,IAAA,KAAK,EAAE,CAAC3I,MAAM,CAACY,SAAR,EAAmB;AAAEkI,MAAAA,eAAe,EAAE/D,KAAnB;AAA0BgE,MAAAA,WAAW,EAAElE;AAAvC,KAAnB,EAAoEjE,SAApE,CANT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQG+B,OAAO,IAAI,gCAAC,uBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IARd,EASGiB,aAAa,IAAI,gCAAC,qBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IATpB,EAUE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAAC5D,MAAM,CAACW,iBAAR,EAA2BA,iBAA3B,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGsC,KAAK,GACJ,gCAAC,KAAD;AACE,IAAA,wBAAwB,EAAEuF,iCAD5B;AAEE,IAAA,QAAQ,EAAEL,QAFZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADI,GAMJ,kEACE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACnI,MAAM,CAACmB,gBAAR,EAA0BA,gBAA1B,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGgC,YAAY,IAAI,gCAAC,YAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADnB,CADF,EAIE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLnD,MAAM,CAACe,iBADF,EAEL;AACEgI,MAAAA,WAAW,EAAEjE,YADf;AAEEkE,MAAAA,eAAe,EAAElG,WAAW,GAAG,CAAH,GAAO;AAFrC,KAFK,EAML/B,iBANK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAUG,CAAE,OAAO4B,OAAP,KAAmB,SAAnB,KAAgCA,OAAhC,oBAAgCA,OAAO,CAAEsG,cAAzC,CAAD,IAA6DrF,aAA9D,KACC,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAAC5D,MAAM,CAACqB,cAAR,EAAwBA,cAAxB,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,KAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,CAXJ,EAeG2B,YAAY,CAACgD,MAAb,GAAsB,gCAAC,kBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAtB,GAA+C,IAflD,EAgBGhD,YAAY,CAACgD,MAAb,IAAuBnD,WAAW,CAACmD,MAAnC,GACC,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLhG,MAAM,CAACG,mBADF,EAEL;AACE+I,MAAAA,iBAAiB,EAAEpE,YADrB;AAEEqE,MAAAA,gBAAgB,EAAErG,WAAW,GAAG,CAAH,GAAO;AAFtC,KAFK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADD,GAUG,IA1BN,EA2BGD,WAAW,CAACmD,MAAZ,GAAqB,gCAAC,iBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAArB,GAA6C,IA3BhD,EA4BGlD,WAAW,GACV,gCAAC,gBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADU,GAGV,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAAC9C,MAAM,CAACM,0BAAR,EAAoCA,0BAApC,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,oCAAD;AACE,IAAA,wBAAwB,EAAE6B,wBAD5B;AAEE,IAAA,cAAc,EAAE,CAAC,CAACwD,wBAFpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,CA/BJ,CAJF,EA2CE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAAC3F,MAAM,CAACuB,mBAAR,EAA6BA,mBAA7B,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGoE,wBAAwB,GACvB,gCAAC,aAAD;AAAe,IAAA,OAAO,EAAEA,wBAAxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADuB,GAGvB,gCAAC,UAAD;AAAY,IAAA,QAAQ,EAAEjD,QAAQ,IAAIuB,OAAO,CAACoD,OAApB,IAA+B,CAAC9D,cAAc,EAApE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAJJ,CA3CF,CAPJ,CAVF,EAsEE,gCAAC,gCAAD;AAAkC,IAAA,UAAU,EAAEe,UAA9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAtEF,CADF,EA0EGC,WAAW,IAAIH,WAAf,GACC,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLe,uBADK,EAELnF,MAAM,CAACwB,wBAFF,EAGL;AAAEsH,MAAAA,eAAe,EAAE/D,KAAnB;AAA0BqE,MAAAA,MAAM,EAAEtH;AAAlC,KAHK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOE,gCAAC,0BAAD;AACE,IAAA,MAAM,EAAE,CAAC,CAACsC,WADZ;AAEE,IAAA,IAAI,EAAEA,WAAW,CAACiF,IAFpB;AAGE,IAAA,QAAQ,EAAEjF,WAAW,CAACkF,QAHxB;AAIE,IAAA,SAAS,EAAElF,WAAW,CAACmF,SAJzB;AAKE,IAAA,WAAW,EAAEhF,WALf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAPF,CADD,GAgBG,IA1FN,EA2FGiB,cAAc,IACb,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACL;AACEsD,MAAAA,eAAe,EAAE9D,WADnB;AAEElD,MAAAA,MAAM,EACJ,CAACsD,iCAAiC,GAC9BA,iCAAiC,IAAIC,4BAAJ,WAAIA,4BAAJ,GAAoC,EAApC,CADH,GAE9B,GAFJ,IAEWC;AALf,KADK,EAQLJ,sBARK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAYE,gCAAC,8CAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAZF,CA5FJ,CADF;AA8GD,CAjXD;;AAmXA,IAAMsE,QAAQ,GAAG,SAAXA,QAAW,CACfC,SADe,EAEfC,SAFe,EAGZ;AACH,MAC4BC,4BAD5B,GAiBIF,SAjBJ,CACEtH,wBADF;AAAA,MAEgByH,gBAFhB,GAiBIH,SAjBJ,CAEEpH,YAFF;AAAA,MAGYwH,YAHZ,GAiBIJ,SAjBJ,CAGE/G,QAHF;AAAA,MAIWoH,WAJX,GAiBIL,SAjBJ,CAIE9G,OAJF;AAAA,MAKeoH,eALf,GAiBIN,SAjBJ,CAKE5G,WALF;AAAA,MAMemH,eANf,GAiBIP,SAjBJ,CAME3G,WANF;AAAA,MAOgBmH,gBAPhB,GAiBIR,SAjBJ,CAOEzG,YAPF;AAAA,MAQkBkH,kBARlB,GAiBIT,SAjBJ,CAQElG,cARF;AAAA,MASkB4G,kBATlB,GAiBIV,SAjBJ,CASE/F,cATF;AAAA,MAUiB0G,iBAVjB,GAiBIX,SAjBJ,CAUE7F,aAVF;AAAA,MAWWyG,WAXX,GAiBIZ,SAjBJ,CAWExF,OAXF;AAAA,MAYmBqG,mBAZnB,GAiBIb,SAjBJ,CAYEc,eAZF;AAAA,MAaeC,eAbf,GAiBIf,SAjBJ,CAaErF,WAbF;AAAA,MAcKqG,KAdL,GAiBIhB,SAjBJ,CAcEiB,CAdF;AAAA,MAeUC,UAfV,GAiBIlB,SAjBJ,CAeEpF,MAfF;AAAA,MAgBcuG,cAhBd,GAiBInB,SAjBJ,CAgBEnF,UAhBF;AAkBA,MAC4BuG,4BAD5B,GAiBInB,SAjBJ,CACEvH,wBADF;AAAA,MAEgB2I,gBAFhB,GAiBIpB,SAjBJ,CAEErH,YAFF;AAAA,MAGY0I,YAHZ,GAiBIrB,SAjBJ,CAGEhH,QAHF;AAAA,MAIWsI,WAJX,GAiBItB,SAjBJ,CAIE/G,OAJF;AAAA,MAKesI,eALf,GAiBIvB,SAjBJ,CAKE7G,WALF;AAAA,MAMeqI,eANf,GAiBIxB,SAjBJ,CAME5G,WANF;AAAA,MAOgBqI,gBAPhB,GAiBIzB,SAjBJ,CAOE1G,YAPF;AAAA,MAQkBoI,kBARlB,GAiBI1B,SAjBJ,CAQEnG,cARF;AAAA,MASkB8H,kBATlB,GAiBI3B,SAjBJ,CASEhG,cATF;AAAA,MAUiB4H,iBAVjB,GAiBI5B,SAjBJ,CAUE9F,aAVF;AAAA,MAWW2H,WAXX,GAiBI7B,SAjBJ,CAWEzF,OAXF;AAAA,MAYmBuH,mBAZnB,GAiBI9B,SAjBJ,CAYEa,eAZF;AAAA,MAaekB,eAbf,GAiBI/B,SAjBJ,CAaEtF,WAbF;AAAA,MAcKsH,KAdL,GAiBIhC,SAjBJ,CAcEgB,CAdF;AAAA,MAeUiB,UAfV,GAiBIjC,SAjBJ,CAeErF,MAfF;AAAA,MAgBcuH,cAhBd,GAiBIlC,SAjBJ,CAgBEpF,UAhBF;AAmBA,MAAMuH,MAAM,GAAGpB,KAAK,KAAKiB,KAAzB;AACA,MAAI,CAACG,MAAL,EAAa,OAAO,KAAP;AAEb,MAAMC,4BAA4B,GAChCnC,4BAA4B,KAAKkB,4BADnC;AAEA,MAAI,CAACiB,4BAAL,EAAmC,OAAO,KAAP;AAEnC,MAAMC,aAAa,GAAGlC,YAAY,KAAKkB,YAAvC;AACA,MAAI,CAACgB,aAAL,EAAoB,OAAO,KAAP;AAEpB,MAAMC,YAAY,GAAG,CAAC,CAAClC,WAAF,KAAkB,CAAC,CAACkB,WAAzC;AACA,MAAI,CAACgB,YAAL,EAAmB,OAAO,KAAP;AAEnB,MAAMC,iBAAiB,GAAGhC,gBAAgB,CAACjE,MAAjB,KAA4BmF,gBAAgB,CAACnF,MAAvE;AACA,MAAI,CAACiG,iBAAL,EAAwB,OAAO,KAAP;AAExB,MAAMC,gBAAgB,GAAGlC,eAAe,KAAKkB,eAA7C;AACA,MAAI,CAACgB,gBAAL,EAAuB,OAAO,KAAP;AAEvB,MAAMC,kBAAkB,GACtB,CAAC,CAAC/B,iBAAF,IACA,CAAC,CAACkB,iBADF,IAEA,OAAOlB,iBAAP,KAA6B,SAF7B,IAGA,OAAOkB,iBAAP,KAA6B,SAH7B,GAIIlB,iBAAiB,CAAC/D,EAAlB,KAAyBiF,iBAAiB,CAACjF,EAJ/C,GAKI,CAAC,CAAC+D,iBAAF,KAAwB,CAAC,CAACkB,iBANhC;AAOA,MAAI,CAACa,kBAAL,EAAyB,OAAO,KAAP;AAEzB,MAAMC,YAAY,GAAG/B,WAAW,CAAChD,OAAZ,KAAwBkE,WAAW,CAAClE,OAAzD;AACA,MAAI,CAAC+E,YAAL,EAAmB,OAAO,KAAP;AAEnB,MAAMC,oBAAoB,GAAG/B,mBAAmB,KAAKkB,mBAArD;AACA,MAAI,CAACa,oBAAL,EAA2B,OAAO,KAAP;AAE3B,MAAMC,mBAAmB,GAAGpC,kBAAkB,OAAOkB,kBAAkB,EAAvE;AACA,MAAI,CAACkB,mBAAL,EAA0B,OAAO,KAAP;AAE1B,MAAMC,iBAAiB,GAAG7E,MAAM,CAACG,IAAP,CAAY+B,gBAAZ,EAA8B4C,KAA9B,CACxB,UAACC,GAAD;AAAA,WACE7C,gBAAgB,CAAC6C,GAAD,CAAhB,CAAsB7E,KAAtB,KAAgCkD,gBAAgB,CAAC2B,GAAD,CAAhB,CAAsB7E,KAAtD,IACAgC,gBAAgB,CAAC6C,GAAD,CAAhB,CAAsB3F,GAAtB,KAA8BgE,gBAAgB,CAAC2B,GAAD,CAAhB,CAAsB3F,GAFtD;AAAA,GADwB,CAA1B;AAKA,MAAI,CAACyF,iBAAL,EAAwB,OAAO,KAAP;AAExB,MAAMG,gBAAgB,GAAG3C,eAAe,CAAC/D,MAAhB,KAA2BiF,eAAe,CAACjF,MAApE;AACA,MAAI,CAAC0G,gBAAL,EAAuB,OAAO,KAAP;AAEvB,MAAMC,mBAAmB,GAAGxC,kBAAkB,CAACnE,MAAnB,KAA8BqF,kBAAkB,CAACrF,MAA7E;AACA,MAAI,CAAC2G,mBAAL,EAA0B,OAAO,KAAP;AAE1B,MAAMC,gBAAgB,GACpB,CAAC,EAACpC,eAAD,YAACA,eAAe,CAAEnB,IAAlB,CAAD,IAA2B,CAAC,EAACoC,eAAD,YAACA,eAAe,CAAEpC,IAAlB,CAA5B,GACImB,eAAe,CAACnB,IAAhB,CAAqBrD,MAArB,KAAgCyF,eAAe,CAACpC,IAAhB,CAAqBrD,MAArD,IACAwE,eAAe,CAACnB,IAAhB,CAAqBmD,KAArB,CAA2B,iBAAWK,KAAX;AAAA,QAAGC,IAAH,SAAGA,IAAH;AAAA,WAAqBA,IAAI,KAAKrB,eAAe,CAACpC,IAAhB,CAAqBwD,KAArB,EAA4BC,IAA1D;AAAA,GAA3B,CAFJ,GAGI,CAAC,CAACtC,eAAF,KAAsB,CAAC,CAACiB,eAJ9B;AAKA,MAAI,CAACmB,gBAAL,EAAuB,OAAO,KAAP;AAEvB,MAAMG,WAAW,GACf,CAAApC,UAAU,QAAV,YAAAA,UAAU,CAAEtE,EAAZ,OAAmBsF,UAAnB,oBAAmBA,UAAU,CAAEtF,EAA/B,KACA,CAAAsE,UAAU,QAAV,YAAAA,UAAU,CAAEqC,IAAZ,OAAqBrB,UAArB,oBAAqBA,UAAU,CAAEqB,IAAjC,CADA,IAEA,CAAArC,UAAU,QAAV,YAAAA,UAAU,CAAEsC,WAAZ,OAA4BtB,UAA5B,oBAA4BA,UAAU,CAAEsB,WAAxC,CAHF;AAIA,MAAI,CAACF,WAAL,EAAkB,OAAO,KAAP;AAElB,MAAMG,eAAe,GAAGtC,cAAc,KAAKgB,cAA3C;AACA,MAAI,CAACsB,eAAL,EAAsB,OAAO,KAAP;AAEtB,SAAO,IAAP;AACD,CA5GD;;AA8GA,IAAMC,oBAAoB,GAAGC,kBAAMC,IAAN,CAC3BpL,uBAD2B,EAE3BuH,QAF2B,CAA7B;;AAkBO,IAAM8D,YAAY,GAAG,SAAfA,YAAe,CAG1BpL,KAH0B,EAIvB;AACH,MAAMqL,eAAe,GAAG,wDAAxB;;AAEA,2BAAgD,wCAAhD;AAAA,iDAAQ7K,QAAR;AAAA,MAAQA,QAAR,sCAAmB,KAAnB;AAAA,MAA0Be,OAA1B,sBAA0BA,OAA1B;AAAA,MAAmCgB,QAAnC,sBAAmCA,QAAnC;;AAEA,8BAqCI,kDArCJ;AAAA,MACEtC,wBADF,yBACEA,wBADF;AAAA,MAEEC,QAFF,yBAEEA,QAFF;AAAA,MAGEC,YAHF,yBAGEA,YAHF;AAAA,MAIEmL,iBAJF,yBAIEA,iBAJF;AAAA,MAKEC,uBALF,yBAKEA,uBALF;AAAA,MAMElL,qBANF,yBAMEA,qBANF;AAAA,MAOEC,cAPF,yBAOEA,cAPF;AAAA,MAQEC,aARF,yBAQEA,aARF;AAAA,MASEE,OATF,yBASEA,OATF;AAAA,MAUEC,iBAVF,yBAUEA,iBAVF;AAAA,MAWEC,WAXF,yBAWEA,WAXF;AAAA,MAYEC,WAZF,yBAYEA,WAZF;AAAA,MAaEC,kBAbF,yBAaEA,kBAbF;AAAA,MAcEC,YAdF,yBAcEA,YAdF;AAAA,MAeEC,KAfF,yBAeEA,KAfF;AAAA,MAgBEC,WAhBF,yBAgBEA,WAhBF;AAAA,MAiBEC,YAjBF,yBAiBEA,YAjBF;AAAA,MAkBEC,uBAlBF,yBAkBEA,uBAlBF;AAAA,MAmBEC,gBAnBF,yBAmBEA,gBAnBF;AAAA,MAoBEC,qBApBF,yBAoBEA,qBApBF;AAAA,MAqBEC,cArBF,yBAqBEA,cArBF;AAAA,MAsBEC,gBAtBF,yBAsBEA,gBAtBF;AAAA,MAuBEE,cAvBF,yBAuBEA,cAvBF;AAAA,MAwBEC,eAxBF,yBAwBEA,eAxBF;AAAA,MAyBEC,aAzBF,yBAyBEA,aAzBF;AAAA,MA0BEC,WA1BF,yBA0BEA,WA1BF;AAAA,MA2BEE,UA3BF,yBA2BEA,UA3BF;AAAA,MA4BEC,UA5BF,yBA4BEA,UA5BF;AAAA,MA6BEC,OA7BF,yBA6BEA,OA7BF;AAAA,MA8BEC,gBA9BF,yBA8BEA,gBA9BF;AAAA,MA+BEwJ,8BA/BF,yBA+BEA,8BA/BF;AAAA,MAgCEC,cAhCF,yBAgCEA,cAhCF;AAAA,MAiCEC,kBAjCF,yBAiCEA,kBAjCF;AAAA,MAkCErD,eAlCF,yBAkCEA,eAlCF;AAAA,MAmCEpG,gCAnCF,yBAmCEA,gCAnCF;AAAA,MAoCEK,cApCF,yBAoCEA,cApCF;;AAuCA,4BAAkB,0CAAlB;AAAA,MAAQV,KAAR,uBAAQA,KAAR;;AAEA,8BAMI,gDANJ;AAAA,MACE+J,4BADF,yBACEA,4BADF;AAAA,MAEEC,0BAFF,yBAEEA,0BAFF;AAAA,MAGExL,0BAHF,yBAGEA,0BAHF;AAAA,MAIE8B,WAJF,yBAIEA,WAJF;AAAA,MAKEG,WALF,yBAKEA,WALF;;AAQA,0BAAmB,sCAAnB;AAAA,MAAQF,MAAR,qBAAQA,MAAR;;AAEA,8BAAc,gDAAd;AAAA,MAAQqG,CAAR,yBAAQA,CAAR;;AAEA,MAAI,CAAC6C,eAAe,CAACQ,WAAjB,IAAgCL,8BAApC,EAAoE;AAClE,WAAO,gCAAC,8BAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAP;AACD;;AAED,SACE,gCAAC,oBAAD;AAEIvL,IAAAA,wBAAwB,EAAxBA,wBAFJ;AAGIC,IAAAA,QAAQ,EAARA,QAHJ;AAIIC,IAAAA,YAAY,EAAZA,YAJJ;AAKIwL,IAAAA,4BAA4B,EAA5BA,4BALJ;AAMIC,IAAAA,0BAA0B,EAA1BA,0BANJ;AAOIxL,IAAAA,0BAA0B,EAA1BA,0BAPJ;AAQIkL,IAAAA,iBAAiB,EAAjBA,iBARJ;AASIC,IAAAA,uBAAuB,EAAvBA,uBATJ;AAUIlL,IAAAA,qBAAqB,EAArBA,qBAVJ;AAWIC,IAAAA,cAAc,EAAdA,cAXJ;AAYIC,IAAAA,aAAa,EAAbA,aAZJ;AAaIC,IAAAA,QAAQ,EAARA,QAbJ;AAcIC,IAAAA,OAAO,EAAPA,OAdJ;AAeIC,IAAAA,iBAAiB,EAAjBA,iBAfJ;AAgBIC,IAAAA,WAAW,EAAXA,WAhBJ;AAiBIC,IAAAA,WAAW,EAAXA,WAjBJ;AAkBIC,IAAAA,kBAAkB,EAAlBA,kBAlBJ;AAmBIC,IAAAA,YAAY,EAAZA,YAnBJ;AAoBIC,IAAAA,KAAK,EAALA,KApBJ;AAqBIC,IAAAA,WAAW,EAAXA,WArBJ;AAsBIC,IAAAA,YAAY,EAAZA,YAtBJ;AAuBIC,IAAAA,uBAAuB,EAAvBA,uBAvBJ;AAwBIC,IAAAA,gBAAgB,EAAhBA,gBAxBJ;AAyBIC,IAAAA,qBAAqB,EAArBA,qBAzBJ;AA0BIC,IAAAA,cAAc,EAAdA,cA1BJ;AA2BIC,IAAAA,gBAAgB,EAAhBA,gBA3BJ;AA4BIC,IAAAA,OAAO,EAAPA,OA5BJ;AA6BIC,IAAAA,cAAc,EAAdA,cA7BJ;AA8BIC,IAAAA,eAAe,EAAfA,eA9BJ;AA+BIC,IAAAA,aAAa,EAAbA,aA/BJ;AAgCIC,IAAAA,WAAW,EAAXA,WAhCJ;AAiCIC,IAAAA,KAAK,EAALA,KAjCJ;AAkCIC,IAAAA,UAAU,EAAVA,UAlCJ;AAmCIC,IAAAA,UAAU,EAAVA,UAnCJ;AAoCIC,IAAAA,OAAO,EAAPA,OApCJ;AAqCIC,IAAAA,gBAAgB,EAAhBA,gBArCJ;AAsCIyJ,IAAAA,cAAc,EAAdA,cAtCJ;AAuCIC,IAAAA,kBAAkB,EAAlBA,kBAvCJ;AAwCIrD,IAAAA,eAAe,EAAfA,eAxCJ;AAyCIpG,IAAAA,gCAAgC,EAAhCA,gCAzCJ;AA0CIC,IAAAA,WAAW,EAAXA,WA1CJ;AA2CIsG,IAAAA,CAAC,EAADA,CA3CJ;AA4CIrG,IAAAA,MAAM,EAANA,MA5CJ;AA6CIE,IAAAA,WAAW,EAAXA,WA7CJ;AA8CIC,IAAAA,cAAc,EAAdA,cA9CJ;AA+CIC,IAAAA,QAAQ,EAARA;AA/CJ,KAiDMvC,KAjDN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AAqDD,CAvHM;;;AAyHPoL,YAAY,CAACU,WAAb,GAA2B,4BAA3B","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { useCountdown } from './hooks/useCountdown';\n\nimport { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n SuggestionsContextValue,\n useSuggestionsContext,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport type { Asset } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { AttachmentSelectionBar } from '../AttachmentPicker/components/AttachmentSelectionBar';\nimport { AutoCompleteInput } from '../AutoCompleteInput/AutoCompleteInput';\n\nconst styles = StyleSheet.create({\n attachmentSeparator: {\n borderBottomWidth: 1,\n marginBottom: 10,\n },\n autoCompleteInputContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n paddingLeft: 16,\n paddingRight: 16,\n },\n composerContainer: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n container: {\n borderTopWidth: 1,\n padding: 10,\n },\n inputBoxContainer: {\n borderRadius: 20,\n borderWidth: 1,\n flex: 1,\n },\n optionsContainer: {\n flexDirection: 'row',\n paddingBottom: 10,\n paddingRight: 10,\n },\n replyContainer: { paddingBottom: 12, paddingHorizontal: 8 },\n sendButtonContainer: { paddingBottom: 10, paddingLeft: 10 },\n suggestionsListContainer: {\n borderRadius: 10,\n elevation: 3,\n left: 8,\n position: 'absolute',\n right: 8,\n shadowOffset: { height: 1, width: 0 },\n shadowOpacity: 0.15,\n },\n});\n\ntype MessageInputPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelContextValue<StreamChatGenerics>, 'disabled' | 'members' | 'watchers'> &\n Pick<\n MessageInputContextValue<StreamChatGenerics>,\n | 'additionalTextInputProps'\n | 'asyncIds'\n | 'asyncUploads'\n | 'cooldownEndsAt'\n | 'CooldownTimer'\n | 'clearEditingState'\n | 'clearQuotedMessageState'\n | 'closeAttachmentPicker'\n | 'editing'\n | 'FileUploadPreview'\n | 'fileUploads'\n | 'giphyActive'\n | 'ImageUploadPreview'\n | 'imageUploads'\n | 'Input'\n | 'inputBoxRef'\n | 'InputButtons'\n | 'InputEditingStateHeader'\n | 'InputGiphySearch'\n | 'InputReplyStateHeader'\n | 'isValidMessage'\n | 'maxNumberOfFiles'\n | 'mentionedUsers'\n | 'numberOfUploads'\n | 'quotedMessage'\n | 'resetInput'\n | 'SendButton'\n | 'sending'\n | 'sendMessageAsync'\n | 'setShowMoreOptions'\n | 'setGiphyActive'\n | 'showMoreOptions'\n | 'ShowThreadMessageInChannelButton'\n | 'removeImage'\n | 'uploadNewImage'\n > &\n Pick<MessagesContextValue<StreamChatGenerics>, 'Reply'> &\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n | 'AutoCompleteSuggestionHeader'\n | 'AutoCompleteSuggestionItem'\n | 'AutoCompleteSuggestionList'\n | 'suggestions'\n | 'triggerType'\n > &\n Pick<ThreadContextValue<StreamChatGenerics>, 'thread'> &\n Pick<TranslationContextValue, 't'> & {\n threadList?: boolean;\n };\n\nconst MessageInputWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionList,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n ShowThreadMessageInChannelButton,\n suggestions,\n thread,\n threadList,\n triggerType,\n uploadNewImage,\n watchers,\n } = props;\n\n const [height, setHeight] = useState(0);\n\n const {\n theme: {\n colors: { border, grey_whisper, white, white_smoke },\n messageInput: {\n attachmentSelectionBar,\n autoCompleteInputContainer,\n composerContainer,\n container,\n inputBoxContainer,\n optionsContainer,\n replyContainer,\n sendButtonContainer,\n suggestionsListContainer: { container: suggestionListContainer },\n },\n },\n } = useTheme();\n\n const {\n attachmentPickerBottomSheetHeight,\n attachmentSelectionBarHeight,\n bottomInset,\n selectedImages,\n selectedPicker,\n setMaxNumberOfFiles,\n setSelectedImages,\n } = useAttachmentPickerContext();\n\n const { seconds: cooldownRemainingSeconds } = useCountdown(cooldownEndsAt);\n\n /**\n * Mounting and un-mounting logic are un-related in following useEffect.\n * While mounting we want to pass maxNumberOfFiles (which is prop on Channel component)\n * to AttachmentPicker (on OverlayProvider)\n *\n * While un-mounting, we want to close the picker e.g., while navigating away.\n */\n useEffect(() => {\n setMaxNumberOfFiles(maxNumberOfFiles ?? 10);\n\n return closeAttachmentPicker;\n }, []);\n\n const [hasResetImages, setHasResetImages] = useState(false);\n const selectedImagesLength = hasResetImages ? selectedImages.length : 0;\n const imageUploadsLength = hasResetImages ? imageUploads.length : 0;\n const imagesForInput = (!!thread && !!threadList) || (!thread && !threadList);\n\n useEffect(() => {\n setSelectedImages([]);\n if (imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n return () => setSelectedImages([]);\n }, []);\n\n useEffect(() => {\n if (hasResetImages === false && imageUploadsLength === 0 && selectedImagesLength === 0) {\n setHasResetImages(true);\n }\n }, [imageUploadsLength, selectedImagesLength]);\n\n useEffect(() => {\n if (imagesForInput === false && imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n }, [imagesForInput]);\n\n useEffect(() => {\n if (imagesForInput) {\n if (selectedImagesLength > imageUploadsLength) {\n /** User selected an image in bottom sheet attachment picker */\n const imagesToUpload = selectedImages.filter((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return !uploadedImage;\n });\n imagesToUpload.forEach((image) => uploadNewImage(image));\n } else if (selectedImagesLength < imageUploadsLength) {\n /** User de-selected an image in bottom sheet attachment picker */\n const imagesToRemove = imageUploads.filter(\n (imageUpload) =>\n !selectedImages.find(\n (selectedImage) =>\n selectedImage.uri === imageUpload.file.uri || selectedImage.uri === imageUpload.url,\n ),\n );\n imagesToRemove.forEach((image) => removeImage(image.id));\n }\n }\n }, [selectedImagesLength]);\n\n useEffect(() => {\n if (imagesForInput) {\n if (imageUploadsLength < selectedImagesLength) {\n /** User removed some image from seleted images within ImageUploadPreview. */\n const updatedSelectedImages = selectedImages.filter((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return uploadedImage;\n });\n setSelectedImages(updatedSelectedImages);\n } else if (imageUploadsLength > selectedImagesLength) {\n /**\n * User is editing some message which contains image attachments OR\n * image attachment is added from custom image picker (other than the default bottomsheet image picker)\n * using `uploadNewImage` function from `MessageInputContext`.\n **/\n setSelectedImages(\n imageUploads\n .map((imageUpload) => ({\n height: imageUpload.file.height,\n source: imageUpload.file.source,\n uri: imageUpload.url || imageUpload.file.uri,\n width: imageUpload.file.width,\n }))\n .filter(Boolean) as Asset[],\n );\n }\n }\n }, [imageUploadsLength]);\n\n const editingExists = !!editing;\n useEffect(() => {\n if (editing && inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n\n /**\n * Make sure to test `initialValue` functionality, if you are modifying following condition.\n *\n * We have the following condition, to make sure - when user comes out of \"editing message\" state,\n * we wipe out all the state around message input such as text, mentioned users, image uploads etc.\n * But it also means, this condition will be fired up on first render, which may result in clearing\n * the initial value set on input box, through the prop - `initialValue`.\n * This prop generally gets used for the case of draft message functionality.\n */\n if (\n !editing &&\n (giphyActive ||\n fileUploads.length > 0 ||\n mentionedUsers.length > 0 ||\n imageUploads.length > 0 ||\n numberOfUploads > 0)\n ) {\n resetInput();\n }\n }, [editingExists]);\n\n const asyncIdsString = asyncIds.join();\n const asyncUploadsString = Object.values(asyncUploads)\n .map(({ state, url }) => `${state}${url}`)\n .join();\n useEffect(() => {\n if (Object.keys(asyncUploads).length) {\n /**\n * When successful image upload response occurs after hitting send,\n * send a follow up message with the image\n */\n sending.current = true;\n asyncIds.forEach((id) => sendMessageAsync(id));\n sending.current = false;\n }\n }, [asyncIdsString, asyncUploadsString, sendMessageAsync]);\n\n const getMembers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (members && Object.values(members).length) {\n Object.values(members).forEach((member) => {\n if (member.user) {\n result.push(member.user);\n }\n });\n }\n\n return result;\n };\n\n const getUsers = () => {\n const users = [...getMembers(), ...getWatchers()];\n\n // make sure we don't list users twice\n const uniqueUsers: { [key: string]: UserResponse<StreamChatGenerics> } = {};\n for (const user of users) {\n if (user && !uniqueUsers[user.id]) {\n uniqueUsers[user.id] = user;\n }\n }\n const usersArray = Object.values(uniqueUsers);\n\n return usersArray;\n };\n\n const getWatchers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (watchers && Object.values(watchers).length) {\n result.push(...Object.values(watchers));\n }\n\n return result;\n };\n\n const additionalTextInputContainerProps = {\n editable: disabled ? false : undefined,\n ...additionalTextInputProps,\n };\n\n return (\n <>\n <View\n onLayout={({\n nativeEvent: {\n layout: { height: newHeight },\n },\n }) => setHeight(newHeight)}\n style={[styles.container, { backgroundColor: white, borderColor: border }, container]}\n >\n {editing && <InputEditingStateHeader />}\n {quotedMessage && <InputReplyStateHeader />}\n <View style={[styles.composerContainer, composerContainer]}>\n {Input ? (\n <Input\n additionalTextInputProps={additionalTextInputContainerProps}\n getUsers={getUsers}\n />\n ) : (\n <>\n <View style={[styles.optionsContainer, optionsContainer]}>\n {InputButtons && <InputButtons />}\n </View>\n <View\n style={[\n styles.inputBoxContainer,\n {\n borderColor: grey_whisper,\n paddingVertical: giphyActive ? 8 : 12,\n },\n inputBoxContainer,\n ]}\n >\n {((typeof editing !== 'boolean' && editing?.quoted_message) || quotedMessage) && (\n <View style={[styles.replyContainer, replyContainer]}>\n <Reply />\n </View>\n )}\n {imageUploads.length ? <ImageUploadPreview /> : null}\n {imageUploads.length && fileUploads.length ? (\n <View\n style={[\n styles.attachmentSeparator,\n {\n borderBottomColor: grey_whisper,\n marginHorizontal: giphyActive ? 8 : 12,\n },\n ]}\n />\n ) : null}\n {fileUploads.length ? <FileUploadPreview /> : null}\n {giphyActive ? (\n <InputGiphySearch />\n ) : (\n <View style={[styles.autoCompleteInputContainer, autoCompleteInputContainer]}>\n <AutoCompleteInput<StreamChatGenerics>\n additionalTextInputProps={additionalTextInputProps}\n cooldownActive={!!cooldownRemainingSeconds}\n />\n </View>\n )}\n </View>\n <View style={[styles.sendButtonContainer, sendButtonContainer]}>\n {cooldownRemainingSeconds ? (\n <CooldownTimer seconds={cooldownRemainingSeconds} />\n ) : (\n <SendButton disabled={disabled || sending.current || !isValidMessage()} />\n )}\n </View>\n </>\n )}\n </View>\n <ShowThreadMessageInChannelButton threadList={threadList} />\n </View>\n\n {triggerType && suggestions ? (\n <View\n style={[\n suggestionListContainer,\n styles.suggestionsListContainer,\n { backgroundColor: white, bottom: height },\n ]}\n >\n <AutoCompleteSuggestionList\n active={!!suggestions}\n data={suggestions.data}\n onSelect={suggestions.onSelect}\n queryText={suggestions.queryText}\n triggerType={triggerType}\n />\n </View>\n ) : null}\n {selectedPicker && (\n <View\n style={[\n {\n backgroundColor: white_smoke,\n height:\n (attachmentPickerBottomSheetHeight\n ? attachmentPickerBottomSheetHeight + (attachmentSelectionBarHeight ?? 52)\n : 360) - bottomInset,\n },\n attachmentSelectionBar,\n ]}\n >\n <AttachmentSelectionBar />\n </View>\n )}\n </>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageInputPropsWithContext<StreamChatGenerics>,\n nextProps: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps: prevAdditionalTextInputProps,\n asyncUploads: prevAsyncUploads,\n disabled: prevDisabled,\n editing: prevEditing,\n fileUploads: prevFileUploads,\n giphyActive: prevGiphyActive,\n imageUploads: prevImageUploads,\n isValidMessage: prevIsValidMessage,\n mentionedUsers: prevMentionedUsers,\n quotedMessage: prevQuotedMessage,\n sending: prevSending,\n showMoreOptions: prevShowMoreOptions,\n suggestions: prevSuggestions,\n t: prevT,\n thread: prevThread,\n threadList: prevThreadList,\n } = prevProps;\n const {\n additionalTextInputProps: nextAdditionalTextInputProps,\n asyncUploads: nextAsyncUploads,\n disabled: nextDisabled,\n editing: nextEditing,\n fileUploads: nextFileUploads,\n giphyActive: nextGiphyActive,\n imageUploads: nextImageUploads,\n isValidMessage: nextIsValidMessage,\n mentionedUsers: nextMentionedUsers,\n quotedMessage: nextQuotedMessage,\n sending: nextSending,\n showMoreOptions: nextShowMoreOptions,\n suggestions: nextSuggestions,\n t: nextT,\n thread: nextThread,\n threadList: nextThreadList,\n } = nextProps;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const additionalTextInputPropsEven =\n prevAdditionalTextInputProps === nextAdditionalTextInputProps;\n if (!additionalTextInputPropsEven) return false;\n\n const disabledEqual = prevDisabled === nextDisabled;\n if (!disabledEqual) return false;\n\n const editingEqual = !!prevEditing === !!nextEditing;\n if (!editingEqual) return false;\n\n const imageUploadsEqual = prevImageUploads.length === nextImageUploads.length;\n if (!imageUploadsEqual) return false;\n\n const giphyActiveEqual = prevGiphyActive === nextGiphyActive;\n if (!giphyActiveEqual) return false;\n\n const quotedMessageEqual =\n !!prevQuotedMessage &&\n !!nextQuotedMessage &&\n typeof prevQuotedMessage !== 'boolean' &&\n typeof nextQuotedMessage !== 'boolean'\n ? prevQuotedMessage.id === nextQuotedMessage.id\n : !!prevQuotedMessage === !!nextQuotedMessage;\n if (!quotedMessageEqual) return false;\n\n const sendingEqual = prevSending.current === nextSending.current;\n if (!sendingEqual) return false;\n\n const showMoreOptionsEqual = prevShowMoreOptions === nextShowMoreOptions;\n if (!showMoreOptionsEqual) return false;\n\n const isValidMessageEqual = prevIsValidMessage() === nextIsValidMessage();\n if (!isValidMessageEqual) return false;\n\n const asyncUploadsEqual = Object.keys(prevAsyncUploads).every(\n (key) =>\n prevAsyncUploads[key].state === nextAsyncUploads[key].state &&\n prevAsyncUploads[key].url === nextAsyncUploads[key].url,\n );\n if (!asyncUploadsEqual) return false;\n\n const fileUploadsEqual = prevFileUploads.length === nextFileUploads.length;\n if (!fileUploadsEqual) return false;\n\n const mentionedUsersEqual = prevMentionedUsers.length === nextMentionedUsers.length;\n if (!mentionedUsersEqual) return false;\n\n const suggestionsEqual =\n !!prevSuggestions?.data && !!nextSuggestions?.data\n ? prevSuggestions.data.length === nextSuggestions.data.length &&\n prevSuggestions.data.every(({ name }, index) => name === nextSuggestions.data[index].name)\n : !!prevSuggestions === !!nextSuggestions;\n if (!suggestionsEqual) return false;\n\n const threadEqual =\n prevThread?.id === nextThread?.id &&\n prevThread?.text === nextThread?.text &&\n prevThread?.reply_count === nextThread?.reply_count;\n if (!threadEqual) return false;\n\n const threadListEqual = prevThreadList === nextThreadList;\n if (!threadListEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageInput = React.memo(\n MessageInputWithContext,\n areEqual,\n) as typeof MessageInputWithContext;\n\nexport type MessageInputProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageInputPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for message input\n * It's a consumer of\n * [Channel Context](https://getstream.github.io/stream-chat-react-native/v3/#channelcontext),\n * [Chat Context](https://getstream.github.io/stream-chat-react-native/v3/#chatcontext),\n * [MessageInput Context](https://getstream.github.io/stream-chat-react-native/v3/#messageinputcontext),\n * [Suggestions Context](https://getstream.github.io/stream-chat-react-native/v3/#suggestionscontext), and\n * [Translation Context](https://getstream.github.io/stream-chat-react-native/v3/#translationcontext)\n */\nexport const MessageInput = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputProps<StreamChatGenerics>,\n) => {\n const ownCapabilities = useOwnCapabilitiesContext();\n\n const { disabled = false, members, watchers } = useChannelContext<StreamChatGenerics>();\n\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n isValidMessage,\n maxNumberOfFiles,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeImage,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n SendMessageDisallowedIndicator,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n uploadNewImage,\n } = useMessageInputContext<StreamChatGenerics>();\n\n const { Reply } = useMessagesContext<StreamChatGenerics>();\n\n const {\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n suggestions,\n triggerType,\n } = useSuggestionsContext<StreamChatGenerics>();\n\n const { thread } = useThreadContext<StreamChatGenerics>();\n\n const { t } = useTranslationContext();\n\n if (!ownCapabilities.sendMessage && SendMessageDisallowedIndicator) {\n return <SendMessageDisallowedIndicator />;\n }\n\n return (\n <MemoizedMessageInput\n {...{\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n suggestions,\n t,\n thread,\n triggerType,\n uploadNewImage,\n watchers,\n }}\n {...props}\n />\n );\n};\n\nMessageInput.displayName = 'MessageInput{messageInput}';\n"]}
|
|
1
|
+
{"version":3,"sources":["MessageInput.tsx"],"names":["styles","StyleSheet","create","attachmentSeparator","borderBottomWidth","marginBottom","autoCompleteInputContainer","alignItems","flexDirection","paddingLeft","paddingRight","composerContainer","container","borderTopWidth","padding","inputBoxContainer","borderRadius","borderWidth","flex","optionsContainer","paddingBottom","replyContainer","paddingHorizontal","sendButtonContainer","suggestionsListContainer","elevation","left","position","right","shadowOffset","height","width","shadowOpacity","MessageInputWithContext","props","additionalTextInputProps","asyncIds","asyncUploads","AutoCompleteSuggestionList","closeAttachmentPicker","cooldownEndsAt","CooldownTimer","disabled","editing","FileUploadPreview","fileUploads","giphyActive","ImageUploadPreview","imageUploads","Input","inputBoxRef","InputButtons","InputEditingStateHeader","InputGiphySearch","InputReplyStateHeader","isValidMessage","maxNumberOfFiles","members","mentionedUsers","numberOfUploads","quotedMessage","removeFile","removeImage","Reply","resetInput","SendButton","sending","sendMessageAsync","ShowThreadMessageInChannelButton","suggestions","thread","threadList","triggerType","uploadNewFile","uploadNewImage","watchers","setHeight","theme","colors","border","grey_whisper","white","white_smoke","messageInput","attachmentSelectionBar","suggestionListContainer","attachmentPickerBottomSheetHeight","attachmentSelectionBarHeight","bottomInset","selectedFiles","selectedImages","selectedPicker","setMaxNumberOfFiles","setSelectedFiles","setSelectedImages","cooldownRemainingSeconds","seconds","hasResetImages","setHasResetImages","hasResetFiles","setHasResetFiles","selectedImagesLength","length","imageUploadsLength","selectedFilesLength","fileUploadsLength","imagesForInput","forEach","image","id","file","uploadImagesHandler","imagesToUpload","filter","selectedImage","uploadedImage","find","imageUpload","uri","url","removeImagesHandler","imagesToRemove","filesToUpload","selectedFile","uploadedFile","fileUpload","filesToRemove","updatedSelectedImages","map","source","Boolean","updatedSelectedFiles","duration","name","size","type","editingExists","current","focus","asyncIdsString","join","asyncUploadsString","Object","values","state","keys","getMembers","result","member","user","push","getUsers","users","getWatchers","uniqueUsers","usersArray","additionalTextInputContainerProps","editable","undefined","newHeight","nativeEvent","layout","backgroundColor","borderColor","paddingVertical","quoted_message","borderBottomColor","marginHorizontal","bottom","data","onSelect","queryText","areEqual","prevProps","nextProps","prevAdditionalTextInputProps","prevAsyncUploads","prevDisabled","prevEditing","prevFileUploads","prevGiphyActive","prevImageUploads","prevIsValidMessage","prevMentionedUsers","prevQuotedMessage","prevSending","prevShowMoreOptions","showMoreOptions","prevSuggestions","prevT","t","prevThread","prevThreadList","nextAdditionalTextInputProps","nextAsyncUploads","nextDisabled","nextEditing","nextFileUploads","nextGiphyActive","nextImageUploads","nextIsValidMessage","nextMentionedUsers","nextQuotedMessage","nextSending","nextShowMoreOptions","nextSuggestions","nextT","nextThread","nextThreadList","tEqual","additionalTextInputPropsEven","disabledEqual","editingEqual","imageUploadsEqual","giphyActiveEqual","quotedMessageEqual","sendingEqual","showMoreOptionsEqual","isValidMessageEqual","asyncUploadsEqual","every","key","fileUploadsEqual","mentionedUsersEqual","suggestionsEqual","index","threadEqual","text","reply_count","threadListEqual","MemoizedMessageInput","React","memo","MessageInput","ownCapabilities","clearEditingState","clearQuotedMessageState","SendMessageDisallowedIndicator","setGiphyActive","setShowMoreOptions","AutoCompleteSuggestionHeader","AutoCompleteSuggestionItem","sendMessage","displayName"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AAIA;;AAEA;;AACA;;AAIA;;AAIA;;AAIA;;AACA;;AAIA;;AACA;;AACA;;AAMA;;AACA;;;;;;;;;;;;;;;AAEA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,mBAAmB,EAAE;AACnBC,IAAAA,iBAAiB,EAAE,CADA;AAEnBC,IAAAA,YAAY,EAAE;AAFK,GADU;AAK/BC,EAAAA,0BAA0B,EAAE;AAC1BC,IAAAA,UAAU,EAAE,QADc;AAE1BC,IAAAA,aAAa,EAAE,KAFW;AAG1BC,IAAAA,WAAW,EAAE,EAHa;AAI1BC,IAAAA,YAAY,EAAE;AAJY,GALG;AAW/BC,EAAAA,iBAAiB,EAAE;AACjBJ,IAAAA,UAAU,EAAE,UADK;AAEjBC,IAAAA,aAAa,EAAE;AAFE,GAXY;AAe/BI,EAAAA,SAAS,EAAE;AACTC,IAAAA,cAAc,EAAE,CADP;AAETC,IAAAA,OAAO,EAAE;AAFA,GAfoB;AAmB/BC,EAAAA,iBAAiB,EAAE;AACjBC,IAAAA,YAAY,EAAE,EADG;AAEjBC,IAAAA,WAAW,EAAE,CAFI;AAGjBC,IAAAA,IAAI,EAAE;AAHW,GAnBY;AAwB/BC,EAAAA,gBAAgB,EAAE;AAChBX,IAAAA,aAAa,EAAE,KADC;AAEhBY,IAAAA,aAAa,EAAE,EAFC;AAGhBV,IAAAA,YAAY,EAAE;AAHE,GAxBa;AA6B/BW,EAAAA,cAAc,EAAE;AAAED,IAAAA,aAAa,EAAE,EAAjB;AAAqBE,IAAAA,iBAAiB,EAAE;AAAxC,GA7Be;AA8B/BC,EAAAA,mBAAmB,EAAE;AAAEH,IAAAA,aAAa,EAAE,EAAjB;AAAqBX,IAAAA,WAAW,EAAE;AAAlC,GA9BU;AA+B/Be,EAAAA,wBAAwB,EAAE;AACxBR,IAAAA,YAAY,EAAE,EADU;AAExBS,IAAAA,SAAS,EAAE,CAFa;AAGxBC,IAAAA,IAAI,EAAE,CAHkB;AAIxBC,IAAAA,QAAQ,EAAE,UAJc;AAKxBC,IAAAA,KAAK,EAAE,CALiB;AAMxBC,IAAAA,YAAY,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAV;AAAaC,MAAAA,KAAK,EAAE;AAApB,KANU;AAOxBC,IAAAA,aAAa,EAAE;AAPS;AA/BK,CAAlB,CAAf;;AAmGA,IAAMC,uBAAuB,GAAG,SAA1BA,uBAA0B,CAG9BC,KAH8B,EAI3B;AACH,MACEC,wBADF,GA0CID,KA1CJ,CACEC,wBADF;AAAA,MAEEC,QAFF,GA0CIF,KA1CJ,CAEEE,QAFF;AAAA,MAGEC,YAHF,GA0CIH,KA1CJ,CAGEG,YAHF;AAAA,MAIEC,0BAJF,GA0CIJ,KA1CJ,CAIEI,0BAJF;AAAA,MAKEC,qBALF,GA0CIL,KA1CJ,CAKEK,qBALF;AAAA,MAMEC,cANF,GA0CIN,KA1CJ,CAMEM,cANF;AAAA,MAOEC,aAPF,GA0CIP,KA1CJ,CAOEO,aAPF;AAAA,MAQEC,QARF,GA0CIR,KA1CJ,CAQEQ,QARF;AAAA,MASEC,OATF,GA0CIT,KA1CJ,CASES,OATF;AAAA,MAUEC,iBAVF,GA0CIV,KA1CJ,CAUEU,iBAVF;AAAA,MAWEC,WAXF,GA0CIX,KA1CJ,CAWEW,WAXF;AAAA,MAYEC,WAZF,GA0CIZ,KA1CJ,CAYEY,WAZF;AAAA,MAaEC,kBAbF,GA0CIb,KA1CJ,CAaEa,kBAbF;AAAA,MAcEC,YAdF,GA0CId,KA1CJ,CAcEc,YAdF;AAAA,MAeEC,KAfF,GA0CIf,KA1CJ,CAeEe,KAfF;AAAA,MAgBEC,WAhBF,GA0CIhB,KA1CJ,CAgBEgB,WAhBF;AAAA,MAiBEC,YAjBF,GA0CIjB,KA1CJ,CAiBEiB,YAjBF;AAAA,MAkBEC,uBAlBF,GA0CIlB,KA1CJ,CAkBEkB,uBAlBF;AAAA,MAmBEC,gBAnBF,GA0CInB,KA1CJ,CAmBEmB,gBAnBF;AAAA,MAoBEC,qBApBF,GA0CIpB,KA1CJ,CAoBEoB,qBApBF;AAAA,MAqBEC,cArBF,GA0CIrB,KA1CJ,CAqBEqB,cArBF;AAAA,MAsBEC,gBAtBF,GA0CItB,KA1CJ,CAsBEsB,gBAtBF;AAAA,MAuBEC,OAvBF,GA0CIvB,KA1CJ,CAuBEuB,OAvBF;AAAA,MAwBEC,cAxBF,GA0CIxB,KA1CJ,CAwBEwB,cAxBF;AAAA,MAyBEC,eAzBF,GA0CIzB,KA1CJ,CAyBEyB,eAzBF;AAAA,MA0BEC,aA1BF,GA0CI1B,KA1CJ,CA0BE0B,aA1BF;AAAA,MA2BEC,UA3BF,GA0CI3B,KA1CJ,CA2BE2B,UA3BF;AAAA,MA4BEC,WA5BF,GA0CI5B,KA1CJ,CA4BE4B,WA5BF;AAAA,MA6BEC,KA7BF,GA0CI7B,KA1CJ,CA6BE6B,KA7BF;AAAA,MA8BEC,UA9BF,GA0CI9B,KA1CJ,CA8BE8B,UA9BF;AAAA,MA+BEC,UA/BF,GA0CI/B,KA1CJ,CA+BE+B,UA/BF;AAAA,MAgCEC,OAhCF,GA0CIhC,KA1CJ,CAgCEgC,OAhCF;AAAA,MAiCEC,gBAjCF,GA0CIjC,KA1CJ,CAiCEiC,gBAjCF;AAAA,MAkCEC,gCAlCF,GA0CIlC,KA1CJ,CAkCEkC,gCAlCF;AAAA,MAmCEC,WAnCF,GA0CInC,KA1CJ,CAmCEmC,WAnCF;AAAA,MAoCEC,MApCF,GA0CIpC,KA1CJ,CAoCEoC,MApCF;AAAA,MAqCEC,UArCF,GA0CIrC,KA1CJ,CAqCEqC,UArCF;AAAA,MAsCEC,WAtCF,GA0CItC,KA1CJ,CAsCEsC,WAtCF;AAAA,MAuCEC,aAvCF,GA0CIvC,KA1CJ,CAuCEuC,aAvCF;AAAA,MAwCEC,cAxCF,GA0CIxC,KA1CJ,CAwCEwC,cAxCF;AAAA,MAyCEC,QAzCF,GA0CIzC,KA1CJ,CAyCEyC,QAzCF;;AA4CA,kBAA4B,qBAAS,CAAT,CAA5B;AAAA;AAAA,MAAO7C,MAAP;AAAA,MAAe8C,SAAf;;AAEA,kBAeI,6BAfJ;AAAA,kCACEC,KADF;AAAA,8CAEIC,MAFJ;AAAA,MAEcC,MAFd,yBAEcA,MAFd;AAAA,MAEsBC,YAFtB,yBAEsBA,YAFtB;AAAA,MAEoCC,KAFpC,yBAEoCA,KAFpC;AAAA,MAE2CC,WAF3C,yBAE2CA,WAF3C;AAAA,8CAGIC,YAHJ;AAAA,MAIMC,sBAJN,yBAIMA,sBAJN;AAAA,MAKM9E,0BALN,yBAKMA,0BALN;AAAA,MAMMK,iBANN,yBAMMA,iBANN;AAAA,MAOMC,SAPN,yBAOMA,SAPN;AAAA,MAQMG,iBARN,yBAQMA,iBARN;AAAA,MASMI,gBATN,yBASMA,gBATN;AAAA,MAUME,cAVN,yBAUMA,cAVN;AAAA,MAWME,mBAXN,yBAWMA,mBAXN;AAAA,MAY6C8D,uBAZ7C,yBAYM7D,wBAZN,CAYkCZ,SAZlC;;AAiBA,8BAUI,0DAVJ;AAAA,MACE0E,iCADF,yBACEA,iCADF;AAAA,MAEEC,4BAFF,yBAEEA,4BAFF;AAAA,MAGEC,WAHF,yBAGEA,WAHF;AAAA,MAIEC,aAJF,yBAIEA,aAJF;AAAA,MAKEC,cALF,yBAKEA,cALF;AAAA,MAMEC,cANF,yBAMEA,cANF;AAAA,MAOEC,mBAPF,yBAOEA,mBAPF;AAAA,MAQEC,gBARF,yBAQEA,gBARF;AAAA,MASEC,iBATF,yBASEA,iBATF;;AAYA,sBAA8C,iCAAatD,cAAb,CAA9C;AAAA,MAAiBuD,wBAAjB,iBAAQC,OAAR;;AASA,wBAAU,YAAM;AACdJ,IAAAA,mBAAmB,CAACpC,gBAAD,WAACA,gBAAD,GAAqB,EAArB,CAAnB;AAEA,WAAOjB,qBAAP;AACD,GAJD,EAIG,EAJH;;AAMA,mBAA4C,qBAAS,KAAT,CAA5C;AAAA;AAAA,MAAO0D,cAAP;AAAA,MAAuBC,iBAAvB;;AACA,mBAA0C,qBAAS,KAAT,CAA1C;AAAA;AAAA,MAAOC,aAAP;AAAA,MAAsBC,gBAAtB;;AACA,MAAMC,oBAAoB,GAAGJ,cAAc,GAAGP,cAAc,CAACY,MAAlB,GAA2B,CAAtE;AACA,MAAMC,kBAAkB,GAAGN,cAAc,GAAGjD,YAAY,CAACsD,MAAhB,GAAyB,CAAlE;AACA,MAAME,mBAAmB,GAAGL,aAAa,GAAGV,aAAa,CAACa,MAAjB,GAA0B,CAAnE;AACA,MAAMG,iBAAiB,GAAGN,aAAa,GAAGtD,WAAW,CAACyD,MAAf,GAAwB,CAA/D;AACA,MAAMI,cAAc,GAAI,CAAC,CAACpC,MAAF,IAAY,CAAC,CAACC,UAAf,IAA+B,CAACD,MAAD,IAAW,CAACC,UAAlE;AAEA,wBAAU,YAAM;AACduB,IAAAA,iBAAiB,CAAC,EAAD,CAAjB;;AACA,QAAI9C,YAAY,CAACsD,MAAjB,EAAyB;AACvBtD,MAAAA,YAAY,CAAC2D,OAAb,CAAqB,UAACC,KAAD;AAAA,eAAW9C,WAAW,CAAC8C,KAAK,CAACC,EAAP,CAAtB;AAAA,OAArB;AACD;;AACD,WAAO;AAAA,aAAMf,iBAAiB,CAAC,EAAD,CAAvB;AAAA,KAAP;AACD,GAND,EAMG,EANH;AAQA,wBAAU,YAAM;AACdD,IAAAA,gBAAgB,CAAC,EAAD,CAAhB;;AACA,QAAIhD,WAAW,CAACyD,MAAhB,EAAwB;AACtBzD,MAAAA,WAAW,CAAC8D,OAAZ,CAAoB,UAACG,IAAD;AAAA,eAAUjD,UAAU,CAACiD,IAAI,CAACD,EAAN,CAApB;AAAA,OAApB;AACD;;AACD,WAAO;AAAA,aAAMhB,gBAAgB,CAAC,EAAD,CAAtB;AAAA,KAAP;AACD,GAND,EAMG,EANH;AAQA,wBAAU,YAAM;AACd,QAAII,cAAc,KAAK,KAAnB,IAA4BM,kBAAkB,KAAK,CAAnD,IAAwDF,oBAAoB,KAAK,CAArF,EAAwF;AACtFH,MAAAA,iBAAiB,CAAC,IAAD,CAAjB;AACD;AACF,GAJD,EAIG,CAACK,kBAAD,EAAqBF,oBAArB,CAJH;AAMA,wBAAU,YAAM;AACd,QAAIF,aAAa,KAAK,KAAlB,IAA2BM,iBAAiB,KAAK,CAAjD,IAAsDD,mBAAmB,KAAK,CAAlF,EAAqF;AACnFJ,MAAAA,gBAAgB,CAAC,IAAD,CAAhB;AACD;AACF,GAJD,EAIG,CAACK,iBAAD,EAAoBD,mBAApB,CAJH;AAMA,wBAAU,YAAM;AACd,QAAIE,cAAc,KAAK,KAAnB,IAA4B1D,YAAY,CAACsD,MAA7C,EAAqD;AACnDtD,MAAAA,YAAY,CAAC2D,OAAb,CAAqB,UAACC,KAAD;AAAA,eAAW9C,WAAW,CAAC8C,KAAK,CAACC,EAAP,CAAtB;AAAA,OAArB;AACD;AACF,GAJD,EAIG,CAACH,cAAD,CAJH;;AAMA,MAAMK,mBAAmB,GAAG,SAAtBA,mBAAsB,GAAM;AAChC,QAAMC,cAAc,GAAGtB,cAAc,CAACuB,MAAf,CAAsB,UAACC,aAAD,EAAmB;AAC9D,UAAMC,aAAa,GAAGnE,YAAY,CAACoE,IAAb,CACpB,UAACC,WAAD;AAAA,eACEA,WAAW,CAACP,IAAZ,CAAiBQ,GAAjB,KAAyBJ,aAAa,CAACI,GAAvC,IAA8CD,WAAW,CAACE,GAAZ,KAAoBL,aAAa,CAACI,GADlF;AAAA,OADoB,CAAtB;AAIA,aAAO,CAACH,aAAR;AACD,KANsB,CAAvB;AAOAH,IAAAA,cAAc,CAACL,OAAf,CAAuB,UAACC,KAAD;AAAA,aAAWlC,cAAc,CAACkC,KAAD,CAAzB;AAAA,KAAvB;AACD,GATD;;AAWA,MAAMY,mBAAmB,GAAG,SAAtBA,mBAAsB,GAAM;AAChC,QAAMC,cAAc,GAAGzE,YAAY,CAACiE,MAAb,CACrB,UAACI,WAAD;AAAA,aACE,CAAC3B,cAAc,CAAC0B,IAAf,CACC,UAACF,aAAD;AAAA,eACEA,aAAa,CAACI,GAAd,KAAsBD,WAAW,CAACP,IAAZ,CAAiBQ,GAAvC,IAA8CJ,aAAa,CAACI,GAAd,KAAsBD,WAAW,CAACE,GADlF;AAAA,OADD,CADH;AAAA,KADqB,CAAvB;AAOAE,IAAAA,cAAc,CAACd,OAAf,CAAuB,UAACC,KAAD;AAAA,aAAW9C,WAAW,CAAC8C,KAAK,CAACC,EAAP,CAAtB;AAAA,KAAvB;AACD,GATD;;AAWA,wBAAU,YAAM;AACd,QAAIH,cAAJ,EAAoB;AAClB,UAAIL,oBAAoB,GAAGE,kBAA3B,EAA+C;AAE7CQ,QAAAA,mBAAmB;AACpB,OAHD,MAGO;AAELS,QAAAA,mBAAmB;AACpB;AACF;AACF,GAVD,EAUG,CAACnB,oBAAD,CAVH;AAYA,wBAAU,YAAM;AACd,QAAIG,mBAAmB,GAAGC,iBAA1B,EAA6C;AAE3C,UAAMiB,aAAa,GAAGjC,aAAa,CAACwB,MAAd,CAAqB,UAACU,YAAD,EAAkB;AAC3D,YAAMC,YAAY,GAAG/E,WAAW,CAACuE,IAAZ,CACnB,UAACS,UAAD;AAAA,iBACEA,UAAU,CAACf,IAAX,CAAgBQ,GAAhB,KAAwBK,YAAY,CAACL,GAArC,IAA4CO,UAAU,CAACN,GAAX,KAAmBI,YAAY,CAACL,GAD9E;AAAA,SADmB,CAArB;AAIA,eAAO,CAACM,YAAR;AACD,OANqB,CAAtB;AAOAF,MAAAA,aAAa,CAACf,OAAd,CAAsB,UAACG,IAAD;AAAA,eAAUrC,aAAa,CAACqC,IAAD,CAAvB;AAAA,OAAtB;AACD,KAVD,MAUO;AAEL,UAAMgB,aAAa,GAAGjF,WAAW,CAACoE,MAAZ,CACpB,UAACY,UAAD;AAAA,eACE,CAACpC,aAAa,CAAC2B,IAAd,CACC,UAACO,YAAD;AAAA,iBACEA,YAAY,CAACL,GAAb,KAAqBO,UAAU,CAACf,IAAX,CAAgBQ,GAArC,IAA4CK,YAAY,CAACL,GAAb,KAAqBO,UAAU,CAACN,GAD9E;AAAA,SADD,CADH;AAAA,OADoB,CAAtB;AAOAO,MAAAA,aAAa,CAACnB,OAAd,CAAsB,UAACG,IAAD;AAAA,eAAUjD,UAAU,CAACiD,IAAI,CAACD,EAAN,CAApB;AAAA,OAAtB;AACD;AACF,GAtBD,EAsBG,CAACL,mBAAD,CAtBH;AAwBA,wBAAU,YAAM;AACd,QAAIE,cAAJ,EAAoB;AAClB,UAAIH,kBAAkB,GAAGF,oBAAzB,EAA+C;AAE7C,YAAM0B,qBAAqB,GAAGrC,cAAc,CAACuB,MAAf,CAAsB,UAACC,aAAD,EAAmB;AACrE,cAAMC,aAAa,GAAGnE,YAAY,CAACoE,IAAb,CACpB,UAACC,WAAD;AAAA,mBACEA,WAAW,CAACP,IAAZ,CAAiBQ,GAAjB,KAAyBJ,aAAa,CAACI,GAAvC,IAA8CD,WAAW,CAACE,GAAZ,KAAoBL,aAAa,CAACI,GADlF;AAAA,WADoB,CAAtB;AAIA,iBAAOH,aAAP;AACD,SAN6B,CAA9B;AAOArB,QAAAA,iBAAiB,CAACiC,qBAAD,CAAjB;AACD,OAVD,MAUO,IAAIxB,kBAAkB,GAAGF,oBAAzB,EAA+C;AAMpDP,QAAAA,iBAAiB,CACf9C,YAAY,CACTgF,GADH,CACO,UAACX,WAAD;AAAA,iBAAkB;AACrBvF,YAAAA,MAAM,EAAEuF,WAAW,CAACP,IAAZ,CAAiBhF,MADJ;AAErBmG,YAAAA,MAAM,EAAEZ,WAAW,CAACP,IAAZ,CAAiBmB,MAFJ;AAGrBX,YAAAA,GAAG,EAAED,WAAW,CAACE,GAAZ,IAAmBF,WAAW,CAACP,IAAZ,CAAiBQ,GAHpB;AAIrBvF,YAAAA,KAAK,EAAEsF,WAAW,CAACP,IAAZ,CAAiB/E;AAJH,WAAlB;AAAA,SADP,EAOGkF,MAPH,CAOUiB,OAPV,CADe,CAAjB;AAUD;AACF;AACF,GA9BD,EA8BG,CAAC3B,kBAAD,CA9BH;AAgCA,wBAAU,YAAM;AACd,QAAIE,iBAAiB,GAAGD,mBAAxB,EAA6C;AAE3C,UAAM2B,oBAAoB,GAAG1C,aAAa,CAACwB,MAAd,CAAqB,UAACU,YAAD,EAAkB;AAClE,YAAMC,YAAY,GAAG/E,WAAW,CAACuE,IAAZ,CACnB,UAACS,UAAD;AAAA,iBACEA,UAAU,CAACf,IAAX,CAAgBQ,GAAhB,KAAwBK,YAAY,CAACL,GAArC,IAA4CO,UAAU,CAACN,GAAX,KAAmBI,YAAY,CAACL,GAD9E;AAAA,SADmB,CAArB;AAIA,eAAOM,YAAP;AACD,OAN4B,CAA7B;AAOA/B,MAAAA,gBAAgB,CAACsC,oBAAD,CAAhB;AACD,KAVD,MAUO,IAAI1B,iBAAiB,GAAGD,mBAAxB,EAA6C;AAMlDX,MAAAA,gBAAgB,CACdhD,WAAW,CAACmF,GAAZ,CAAgB,UAACH,UAAD;AAAA,eAAiB;AAC/BO,UAAAA,QAAQ,EAAEP,UAAU,CAACf,IAAX,CAAgBsB,QADK;AAE/BC,UAAAA,IAAI,EAAER,UAAU,CAACf,IAAX,CAAgBuB,IAFS;AAG/BC,UAAAA,IAAI,EAAET,UAAU,CAACf,IAAX,CAAgBwB,IAHS;AAI/BC,UAAAA,IAAI,EAAEV,UAAU,CAACf,IAAX,CAAgByB,IAJS;AAK/BjB,UAAAA,GAAG,EAAEO,UAAU,CAACf,IAAX,CAAgBQ;AALU,SAAjB;AAAA,OAAhB,CADc,CAAhB;AASD;AACF,GA3BD,EA2BG,CAACb,iBAAD,CA3BH;AA6BA,MAAM+B,aAAa,GAAG,CAAC,CAAC7F,OAAxB;AACA,wBAAU,YAAM;AACd,QAAIA,OAAO,IAAIO,WAAW,CAACuF,OAA3B,EAAoC;AAClCvF,MAAAA,WAAW,CAACuF,OAAZ,CAAoBC,KAApB;AACD;;AAWD,QACE,CAAC/F,OAAD,KACCG,WAAW,IACVD,WAAW,CAACyD,MAAZ,GAAqB,CADtB,IAEC5C,cAAc,CAAC4C,MAAf,GAAwB,CAFzB,IAGCtD,YAAY,CAACsD,MAAb,GAAsB,CAHvB,IAIC3C,eAAe,GAAG,CALpB,CADF,EAOE;AACAK,MAAAA,UAAU;AACX;AACF,GAxBD,EAwBG,CAACwE,aAAD,CAxBH;AA0BA,MAAMG,cAAc,GAAGvG,QAAQ,CAACwG,IAAT,EAAvB;AACA,MAAMC,kBAAkB,GAAGC,MAAM,CAACC,MAAP,CAAc1G,YAAd,EACxB2F,GADwB,CACpB;AAAA,QAAGgB,KAAH,QAAGA,KAAH;AAAA,QAAUzB,GAAV,QAAUA,GAAV;AAAA,gBAAuByB,KAAvB,GAA+BzB,GAA/B;AAAA,GADoB,EAExBqB,IAFwB,EAA3B;AAGA,wBAAU,YAAM;AACd,QAAIE,MAAM,CAACG,IAAP,CAAY5G,YAAZ,EAA0BiE,MAA9B,EAAsC;AAKpCpC,MAAAA,OAAO,CAACuE,OAAR,GAAkB,IAAlB;AACArG,MAAAA,QAAQ,CAACuE,OAAT,CAAiB,UAACE,EAAD;AAAA,eAAQ1C,gBAAgB,CAAC0C,EAAD,CAAxB;AAAA,OAAjB;AACA3C,MAAAA,OAAO,CAACuE,OAAR,GAAkB,KAAlB;AACD;AACF,GAVD,EAUG,CAACE,cAAD,EAAiBE,kBAAjB,EAAqC1E,gBAArC,CAVH;;AAYA,MAAM+E,UAAU,GAAG,SAAbA,UAAa,GAAM;AACvB,QAAMC,MAA0C,GAAG,EAAnD;;AACA,QAAI1F,OAAO,IAAIqF,MAAM,CAACC,MAAP,CAActF,OAAd,EAAuB6C,MAAtC,EAA8C;AAC5CwC,MAAAA,MAAM,CAACC,MAAP,CAActF,OAAd,EAAuBkD,OAAvB,CAA+B,UAACyC,MAAD,EAAY;AACzC,YAAIA,MAAM,CAACC,IAAX,EAAiB;AACfF,UAAAA,MAAM,CAACG,IAAP,CAAYF,MAAM,CAACC,IAAnB;AACD;AACF,OAJD;AAKD;;AAED,WAAOF,MAAP;AACD,GAXD;;AAaA,MAAMI,QAAQ,GAAG,SAAXA,QAAW,GAAM;AACrB,QAAMC,KAAK,iDAAON,UAAU,EAAjB,uCAAwBO,WAAW,EAAnC,EAAX;AAGA,QAAMC,WAAgE,GAAG,EAAzE;;AACA,yDAAmBF,KAAnB,wCAA0B;AAAA,UAAfH,IAAe;;AACxB,UAAIA,IAAI,IAAI,CAACK,WAAW,CAACL,IAAI,CAACxC,EAAN,CAAxB,EAAmC;AACjC6C,QAAAA,WAAW,CAACL,IAAI,CAACxC,EAAN,CAAX,GAAuBwC,IAAvB;AACD;AACF;;AACD,QAAMM,UAAU,GAAGb,MAAM,CAACC,MAAP,CAAcW,WAAd,CAAnB;AAEA,WAAOC,UAAP;AACD,GAbD;;AAeA,MAAMF,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxB,QAAMN,MAA0C,GAAG,EAAnD;;AACA,QAAIxE,QAAQ,IAAImE,MAAM,CAACC,MAAP,CAAcpE,QAAd,EAAwB2B,MAAxC,EAAgD;AAC9C6C,MAAAA,MAAM,CAACG,IAAP,OAAAH,MAAM,sCAASL,MAAM,CAACC,MAAP,CAAcpE,QAAd,CAAT,EAAN;AACD;;AAED,WAAOwE,MAAP;AACD,GAPD;;AASA,MAAMS,iCAAiC;AACrCC,IAAAA,QAAQ,EAAEnH,QAAQ,GAAG,KAAH,GAAWoH;AADQ,KAElC3H,wBAFkC,CAAvC;AAKA,SACE,kEACE,gCAAC,iBAAD;AACE,IAAA,QAAQ,EAAE;AAAA,UAEY4H,SAFZ,SACRC,WADQ,CAENC,MAFM,CAEInI,MAFJ;AAAA,aAIJ8C,SAAS,CAACmF,SAAD,CAJL;AAAA,KADZ;AAME,IAAA,KAAK,EAAE,CAAC/J,MAAM,CAACY,SAAR,EAAmB;AAAEsJ,MAAAA,eAAe,EAAEjF,KAAnB;AAA0BkF,MAAAA,WAAW,EAAEpF;AAAvC,KAAnB,EAAoEnE,SAApE,CANT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQG+B,OAAO,IAAI,gCAAC,uBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IARd,EASGiB,aAAa,IAAI,gCAAC,qBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IATpB,EAUE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAAC5D,MAAM,CAACW,iBAAR,EAA2BA,iBAA3B,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGsC,KAAK,GACJ,gCAAC,KAAD;AACE,IAAA,wBAAwB,EAAE2G,iCAD5B;AAEE,IAAA,QAAQ,EAAEL,QAFZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADI,GAMJ,kEACE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACvJ,MAAM,CAACmB,gBAAR,EAA0BA,gBAA1B,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGgC,YAAY,IAAI,gCAAC,YAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADnB,CADF,EAIE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLnD,MAAM,CAACe,iBADF,EAEL;AACEoJ,MAAAA,WAAW,EAAEnF,YADf;AAEEoF,MAAAA,eAAe,EAAEtH,WAAW,GAAG,CAAH,GAAO;AAFrC,KAFK,EAML/B,iBANK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAUG,CAAE,OAAO4B,OAAP,KAAmB,SAAnB,KAAgCA,OAAhC,oBAAgCA,OAAO,CAAE0H,cAAzC,CAAD,IAA6DzG,aAA9D,KACC,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAAC5D,MAAM,CAACqB,cAAR,EAAwBA,cAAxB,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,KAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,CAXJ,EAeG2B,YAAY,CAACsD,MAAb,GAAsB,gCAAC,kBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAtB,GAA+C,IAflD,EAgBGtD,YAAY,CAACsD,MAAb,IAAuBzD,WAAW,CAACyD,MAAnC,GACC,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLtG,MAAM,CAACG,mBADF,EAEL;AACEmK,MAAAA,iBAAiB,EAAEtF,YADrB;AAEEuF,MAAAA,gBAAgB,EAAEzH,WAAW,GAAG,CAAH,GAAO;AAFtC,KAFK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADD,GAUG,IA1BN,EA2BGD,WAAW,CAACyD,MAAZ,GAAqB,gCAAC,iBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAArB,GAA6C,IA3BhD,EA4BGxD,WAAW,GACV,gCAAC,gBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADU,GAGV,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAAC9C,MAAM,CAACM,0BAAR,EAAoCA,0BAApC,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,oCAAD;AACE,IAAA,wBAAwB,EAAE6B,wBAD5B;AAEE,IAAA,cAAc,EAAE,CAAC,CAAC4D,wBAFpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,CA/BJ,CAJF,EA2CE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAAC/F,MAAM,CAACuB,mBAAR,EAA6BA,mBAA7B,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGwE,wBAAwB,GACvB,gCAAC,aAAD;AAAe,IAAA,OAAO,EAAEA,wBAAxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADuB,GAGvB,gCAAC,UAAD;AAAY,IAAA,QAAQ,EAAErD,QAAQ,IAAIwB,OAAO,CAACuE,OAApB,IAA+B,CAAClF,cAAc,EAApE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAJJ,CA3CF,CAPJ,CAVF,EAsEE,gCAAC,gCAAD;AAAkC,IAAA,UAAU,EAAEgB,UAA9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAtEF,CADF,EA0EGC,WAAW,IAAIH,WAAf,GACC,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLgB,uBADK,EAELrF,MAAM,CAACwB,wBAFF,EAGL;AAAE0I,MAAAA,eAAe,EAAEjF,KAAnB;AAA0BuF,MAAAA,MAAM,EAAE1I;AAAlC,KAHK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOE,gCAAC,0BAAD;AACE,IAAA,MAAM,EAAE,CAAC,CAACuC,WADZ;AAEE,IAAA,IAAI,EAAEA,WAAW,CAACoG,IAFpB;AAGE,IAAA,QAAQ,EAAEpG,WAAW,CAACqG,QAHxB;AAIE,IAAA,SAAS,EAAErG,WAAW,CAACsG,SAJzB;AAKE,IAAA,WAAW,EAAEnG,WALf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAPF,CADD,GAgBG,IA1FN,EA2FGmB,cAAc,IACb,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACL;AACEuE,MAAAA,eAAe,EAAEhF,WADnB;AAEEpD,MAAAA,MAAM,EACJ,CAACwD,iCAAiC,GAC9BA,iCAAiC,IAAIC,4BAAJ,WAAIA,4BAAJ,GAAoC,EAApC,CADH,GAE9B,GAFJ,IAEWC;AALf,KADK,EAQLJ,sBARK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAYE,gCAAC,8CAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAZF,CA5FJ,CADF;AA8GD,CAncD;;AAqcA,IAAMwF,QAAQ,GAAG,SAAXA,QAAW,CACfC,SADe,EAEfC,SAFe,EAGZ;AACH,MAC4BC,4BAD5B,GAiBIF,SAjBJ,CACE1I,wBADF;AAAA,MAEgB6I,gBAFhB,GAiBIH,SAjBJ,CAEExI,YAFF;AAAA,MAGY4I,YAHZ,GAiBIJ,SAjBJ,CAGEnI,QAHF;AAAA,MAIWwI,WAJX,GAiBIL,SAjBJ,CAIElI,OAJF;AAAA,MAKewI,eALf,GAiBIN,SAjBJ,CAKEhI,WALF;AAAA,MAMeuI,eANf,GAiBIP,SAjBJ,CAME/H,WANF;AAAA,MAOgBuI,gBAPhB,GAiBIR,SAjBJ,CAOE7H,YAPF;AAAA,MAQkBsI,kBARlB,GAiBIT,SAjBJ,CAQEtH,cARF;AAAA,MASkBgI,kBATlB,GAiBIV,SAjBJ,CASEnH,cATF;AAAA,MAUiB8H,iBAVjB,GAiBIX,SAjBJ,CAUEjH,aAVF;AAAA,MAWW6H,WAXX,GAiBIZ,SAjBJ,CAWE3G,OAXF;AAAA,MAYmBwH,mBAZnB,GAiBIb,SAjBJ,CAYEc,eAZF;AAAA,MAaeC,eAbf,GAiBIf,SAjBJ,CAaExG,WAbF;AAAA,MAcKwH,KAdL,GAiBIhB,SAjBJ,CAcEiB,CAdF;AAAA,MAeUC,UAfV,GAiBIlB,SAjBJ,CAeEvG,MAfF;AAAA,MAgBc0H,cAhBd,GAiBInB,SAjBJ,CAgBEtG,UAhBF;AAkBA,MAC4B0H,4BAD5B,GAiBInB,SAjBJ,CACE3I,wBADF;AAAA,MAEgB+J,gBAFhB,GAiBIpB,SAjBJ,CAEEzI,YAFF;AAAA,MAGY8J,YAHZ,GAiBIrB,SAjBJ,CAGEpI,QAHF;AAAA,MAIW0J,WAJX,GAiBItB,SAjBJ,CAIEnI,OAJF;AAAA,MAKe0J,eALf,GAiBIvB,SAjBJ,CAKEjI,WALF;AAAA,MAMeyJ,eANf,GAiBIxB,SAjBJ,CAMEhI,WANF;AAAA,MAOgByJ,gBAPhB,GAiBIzB,SAjBJ,CAOE9H,YAPF;AAAA,MAQkBwJ,kBARlB,GAiBI1B,SAjBJ,CAQEvH,cARF;AAAA,MASkBkJ,kBATlB,GAiBI3B,SAjBJ,CASEpH,cATF;AAAA,MAUiBgJ,iBAVjB,GAiBI5B,SAjBJ,CAUElH,aAVF;AAAA,MAWW+I,WAXX,GAiBI7B,SAjBJ,CAWE5G,OAXF;AAAA,MAYmB0I,mBAZnB,GAiBI9B,SAjBJ,CAYEa,eAZF;AAAA,MAaekB,eAbf,GAiBI/B,SAjBJ,CAaEzG,WAbF;AAAA,MAcKyI,KAdL,GAiBIhC,SAjBJ,CAcEgB,CAdF;AAAA,MAeUiB,UAfV,GAiBIjC,SAjBJ,CAeExG,MAfF;AAAA,MAgBc0I,cAhBd,GAiBIlC,SAjBJ,CAgBEvG,UAhBF;AAmBA,MAAM0I,MAAM,GAAGpB,KAAK,KAAKiB,KAAzB;AACA,MAAI,CAACG,MAAL,EAAa,OAAO,KAAP;AAEb,MAAMC,4BAA4B,GAChCnC,4BAA4B,KAAKkB,4BADnC;AAEA,MAAI,CAACiB,4BAAL,EAAmC,OAAO,KAAP;AAEnC,MAAMC,aAAa,GAAGlC,YAAY,KAAKkB,YAAvC;AACA,MAAI,CAACgB,aAAL,EAAoB,OAAO,KAAP;AAEpB,MAAMC,YAAY,GAAG,CAAC,CAAClC,WAAF,KAAkB,CAAC,CAACkB,WAAzC;AACA,MAAI,CAACgB,YAAL,EAAmB,OAAO,KAAP;AAEnB,MAAMC,iBAAiB,GAAGhC,gBAAgB,CAAC/E,MAAjB,KAA4BiG,gBAAgB,CAACjG,MAAvE;AACA,MAAI,CAAC+G,iBAAL,EAAwB,OAAO,KAAP;AAExB,MAAMC,gBAAgB,GAAGlC,eAAe,KAAKkB,eAA7C;AACA,MAAI,CAACgB,gBAAL,EAAuB,OAAO,KAAP;AAEvB,MAAMC,kBAAkB,GACtB,CAAC,CAAC/B,iBAAF,IACA,CAAC,CAACkB,iBADF,IAEA,OAAOlB,iBAAP,KAA6B,SAF7B,IAGA,OAAOkB,iBAAP,KAA6B,SAH7B,GAIIlB,iBAAiB,CAAC3E,EAAlB,KAAyB6F,iBAAiB,CAAC7F,EAJ/C,GAKI,CAAC,CAAC2E,iBAAF,KAAwB,CAAC,CAACkB,iBANhC;AAOA,MAAI,CAACa,kBAAL,EAAyB,OAAO,KAAP;AAEzB,MAAMC,YAAY,GAAG/B,WAAW,CAAChD,OAAZ,KAAwBkE,WAAW,CAAClE,OAAzD;AACA,MAAI,CAAC+E,YAAL,EAAmB,OAAO,KAAP;AAEnB,MAAMC,oBAAoB,GAAG/B,mBAAmB,KAAKkB,mBAArD;AACA,MAAI,CAACa,oBAAL,EAA2B,OAAO,KAAP;AAE3B,MAAMC,mBAAmB,GAAGpC,kBAAkB,OAAOkB,kBAAkB,EAAvE;AACA,MAAI,CAACkB,mBAAL,EAA0B,OAAO,KAAP;AAE1B,MAAMC,iBAAiB,GAAG7E,MAAM,CAACG,IAAP,CAAY+B,gBAAZ,EAA8B4C,KAA9B,CACxB,UAACC,GAAD;AAAA,WACE7C,gBAAgB,CAAC6C,GAAD,CAAhB,CAAsB7E,KAAtB,KAAgCkD,gBAAgB,CAAC2B,GAAD,CAAhB,CAAsB7E,KAAtD,IACAgC,gBAAgB,CAAC6C,GAAD,CAAhB,CAAsBtG,GAAtB,KAA8B2E,gBAAgB,CAAC2B,GAAD,CAAhB,CAAsBtG,GAFtD;AAAA,GADwB,CAA1B;AAKA,MAAI,CAACoG,iBAAL,EAAwB,OAAO,KAAP;AAExB,MAAMG,gBAAgB,GAAG3C,eAAe,CAAC7E,MAAhB,KAA2B+F,eAAe,CAAC/F,MAApE;AACA,MAAI,CAACwH,gBAAL,EAAuB,OAAO,KAAP;AAEvB,MAAMC,mBAAmB,GAAGxC,kBAAkB,CAACjF,MAAnB,KAA8BmG,kBAAkB,CAACnG,MAA7E;AACA,MAAI,CAACyH,mBAAL,EAA0B,OAAO,KAAP;AAE1B,MAAMC,gBAAgB,GACpB,CAAC,EAACpC,eAAD,YAACA,eAAe,CAAEnB,IAAlB,CAAD,IAA2B,CAAC,EAACoC,eAAD,YAACA,eAAe,CAAEpC,IAAlB,CAA5B,GACImB,eAAe,CAACnB,IAAhB,CAAqBnE,MAArB,KAAgCuG,eAAe,CAACpC,IAAhB,CAAqBnE,MAArD,IACAsF,eAAe,CAACnB,IAAhB,CAAqBmD,KAArB,CAA2B,iBAAWK,KAAX;AAAA,QAAG5F,IAAH,SAAGA,IAAH;AAAA,WAAqBA,IAAI,KAAKwE,eAAe,CAACpC,IAAhB,CAAqBwD,KAArB,EAA4B5F,IAA1D;AAAA,GAA3B,CAFJ,GAGI,CAAC,CAACuD,eAAF,KAAsB,CAAC,CAACiB,eAJ9B;AAKA,MAAI,CAACmB,gBAAL,EAAuB,OAAO,KAAP;AAEvB,MAAME,WAAW,GACf,CAAAnC,UAAU,QAAV,YAAAA,UAAU,CAAElF,EAAZ,OAAmBkG,UAAnB,oBAAmBA,UAAU,CAAElG,EAA/B,KACA,CAAAkF,UAAU,QAAV,YAAAA,UAAU,CAAEoC,IAAZ,OAAqBpB,UAArB,oBAAqBA,UAAU,CAAEoB,IAAjC,CADA,IAEA,CAAApC,UAAU,QAAV,YAAAA,UAAU,CAAEqC,WAAZ,OAA4BrB,UAA5B,oBAA4BA,UAAU,CAAEqB,WAAxC,CAHF;AAIA,MAAI,CAACF,WAAL,EAAkB,OAAO,KAAP;AAElB,MAAMG,eAAe,GAAGrC,cAAc,KAAKgB,cAA3C;AACA,MAAI,CAACqB,eAAL,EAAsB,OAAO,KAAP;AAEtB,SAAO,IAAP;AACD,CA5GD;;AA8GA,IAAMC,oBAAoB,GAAGC,kBAAMC,IAAN,CAC3BvM,uBAD2B,EAE3B2I,QAF2B,CAA7B;;AAkBO,IAAM6D,YAAY,GAAG,SAAfA,YAAe,CAG1BvM,KAH0B,EAIvB;AACH,MAAMwM,eAAe,GAAG,wDAAxB;;AAEA,2BAAgD,wCAAhD;AAAA,iDAAQhM,QAAR;AAAA,MAAQA,QAAR,sCAAmB,KAAnB;AAAA,MAA0Be,OAA1B,sBAA0BA,OAA1B;AAAA,MAAmCkB,QAAnC,sBAAmCA,QAAnC;;AAEA,8BAuCI,kDAvCJ;AAAA,MACExC,wBADF,yBACEA,wBADF;AAAA,MAEEC,QAFF,yBAEEA,QAFF;AAAA,MAGEC,YAHF,yBAGEA,YAHF;AAAA,MAIEsM,iBAJF,yBAIEA,iBAJF;AAAA,MAKEC,uBALF,yBAKEA,uBALF;AAAA,MAMErM,qBANF,yBAMEA,qBANF;AAAA,MAOEC,cAPF,yBAOEA,cAPF;AAAA,MAQEC,aARF,yBAQEA,aARF;AAAA,MASEE,OATF,yBASEA,OATF;AAAA,MAUEC,iBAVF,yBAUEA,iBAVF;AAAA,MAWEC,WAXF,yBAWEA,WAXF;AAAA,MAYEC,WAZF,yBAYEA,WAZF;AAAA,MAaEC,kBAbF,yBAaEA,kBAbF;AAAA,MAcEC,YAdF,yBAcEA,YAdF;AAAA,MAeEC,KAfF,yBAeEA,KAfF;AAAA,MAgBEC,WAhBF,yBAgBEA,WAhBF;AAAA,MAiBEC,YAjBF,yBAiBEA,YAjBF;AAAA,MAkBEC,uBAlBF,yBAkBEA,uBAlBF;AAAA,MAmBEC,gBAnBF,yBAmBEA,gBAnBF;AAAA,MAoBEC,qBApBF,yBAoBEA,qBApBF;AAAA,MAqBEC,cArBF,yBAqBEA,cArBF;AAAA,MAsBEC,gBAtBF,yBAsBEA,gBAtBF;AAAA,MAuBEE,cAvBF,yBAuBEA,cAvBF;AAAA,MAwBEC,eAxBF,yBAwBEA,eAxBF;AAAA,MAyBEC,aAzBF,yBAyBEA,aAzBF;AAAA,MA0BEC,UA1BF,yBA0BEA,UA1BF;AAAA,MA2BEC,WA3BF,yBA2BEA,WA3BF;AAAA,MA4BEE,UA5BF,yBA4BEA,UA5BF;AAAA,MA6BEC,UA7BF,yBA6BEA,UA7BF;AAAA,MA8BEC,OA9BF,yBA8BEA,OA9BF;AAAA,MA+BEC,gBA/BF,yBA+BEA,gBA/BF;AAAA,MAgCE0K,8BAhCF,yBAgCEA,8BAhCF;AAAA,MAiCEC,cAjCF,yBAiCEA,cAjCF;AAAA,MAkCEC,kBAlCF,yBAkCEA,kBAlCF;AAAA,MAmCEpD,eAnCF,yBAmCEA,eAnCF;AAAA,MAoCEvH,gCApCF,yBAoCEA,gCApCF;AAAA,MAqCEK,aArCF,yBAqCEA,aArCF;AAAA,MAsCEC,cAtCF,yBAsCEA,cAtCF;;AAyCA,4BAAkB,0CAAlB;AAAA,MAAQX,KAAR,uBAAQA,KAAR;;AAEA,8BAMI,gDANJ;AAAA,MACEiL,4BADF,yBACEA,4BADF;AAAA,MAEEC,0BAFF,yBAEEA,0BAFF;AAAA,MAGE3M,0BAHF,yBAGEA,0BAHF;AAAA,MAIE+B,WAJF,yBAIEA,WAJF;AAAA,MAKEG,WALF,yBAKEA,WALF;;AAQA,0BAAmB,sCAAnB;AAAA,MAAQF,MAAR,qBAAQA,MAAR;;AAEA,8BAAc,gDAAd;AAAA,MAAQwH,CAAR,yBAAQA,CAAR;;AAEA,MAAI,CAAC4C,eAAe,CAACQ,WAAjB,IAAgCL,8BAApC,EAAoE;AAClE,WAAO,gCAAC,8BAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAP;AACD;;AAED,SACE,gCAAC,oBAAD;AAEI1M,IAAAA,wBAAwB,EAAxBA,wBAFJ;AAGIC,IAAAA,QAAQ,EAARA,QAHJ;AAIIC,IAAAA,YAAY,EAAZA,YAJJ;AAKI2M,IAAAA,4BAA4B,EAA5BA,4BALJ;AAMIC,IAAAA,0BAA0B,EAA1BA,0BANJ;AAOI3M,IAAAA,0BAA0B,EAA1BA,0BAPJ;AAQIqM,IAAAA,iBAAiB,EAAjBA,iBARJ;AASIC,IAAAA,uBAAuB,EAAvBA,uBATJ;AAUIrM,IAAAA,qBAAqB,EAArBA,qBAVJ;AAWIC,IAAAA,cAAc,EAAdA,cAXJ;AAYIC,IAAAA,aAAa,EAAbA,aAZJ;AAaIC,IAAAA,QAAQ,EAARA,QAbJ;AAcIC,IAAAA,OAAO,EAAPA,OAdJ;AAeIC,IAAAA,iBAAiB,EAAjBA,iBAfJ;AAgBIC,IAAAA,WAAW,EAAXA,WAhBJ;AAiBIC,IAAAA,WAAW,EAAXA,WAjBJ;AAkBIC,IAAAA,kBAAkB,EAAlBA,kBAlBJ;AAmBIC,IAAAA,YAAY,EAAZA,YAnBJ;AAoBIC,IAAAA,KAAK,EAALA,KApBJ;AAqBIC,IAAAA,WAAW,EAAXA,WArBJ;AAsBIC,IAAAA,YAAY,EAAZA,YAtBJ;AAuBIC,IAAAA,uBAAuB,EAAvBA,uBAvBJ;AAwBIC,IAAAA,gBAAgB,EAAhBA,gBAxBJ;AAyBIC,IAAAA,qBAAqB,EAArBA,qBAzBJ;AA0BIC,IAAAA,cAAc,EAAdA,cA1BJ;AA2BIC,IAAAA,gBAAgB,EAAhBA,gBA3BJ;AA4BIC,IAAAA,OAAO,EAAPA,OA5BJ;AA6BIC,IAAAA,cAAc,EAAdA,cA7BJ;AA8BIC,IAAAA,eAAe,EAAfA,eA9BJ;AA+BIC,IAAAA,aAAa,EAAbA,aA/BJ;AAgCIC,IAAAA,UAAU,EAAVA,UAhCJ;AAiCIC,IAAAA,WAAW,EAAXA,WAjCJ;AAkCIC,IAAAA,KAAK,EAALA,KAlCJ;AAmCIC,IAAAA,UAAU,EAAVA,UAnCJ;AAoCIC,IAAAA,UAAU,EAAVA,UApCJ;AAqCIC,IAAAA,OAAO,EAAPA,OArCJ;AAsCIC,IAAAA,gBAAgB,EAAhBA,gBAtCJ;AAuCI2K,IAAAA,cAAc,EAAdA,cAvCJ;AAwCIC,IAAAA,kBAAkB,EAAlBA,kBAxCJ;AAyCIpD,IAAAA,eAAe,EAAfA,eAzCJ;AA0CIvH,IAAAA,gCAAgC,EAAhCA,gCA1CJ;AA2CIC,IAAAA,WAAW,EAAXA,WA3CJ;AA4CIyH,IAAAA,CAAC,EAADA,CA5CJ;AA6CIxH,IAAAA,MAAM,EAANA,MA7CJ;AA8CIE,IAAAA,WAAW,EAAXA,WA9CJ;AA+CIC,IAAAA,aAAa,EAAbA,aA/CJ;AAgDIC,IAAAA,cAAc,EAAdA,cAhDJ;AAiDIC,IAAAA,QAAQ,EAARA;AAjDJ,KAmDMzC,KAnDN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AAuDD,CA3HM;;;AA6HPuM,YAAY,CAACU,WAAb,GAA2B,4BAA3B","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { useCountdown } from './hooks/useCountdown';\n\nimport { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n SuggestionsContextValue,\n useSuggestionsContext,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport type { Asset, DefaultStreamChatGenerics } from '../../types/types';\nimport { AttachmentSelectionBar } from '../AttachmentPicker/components/AttachmentSelectionBar';\nimport { AutoCompleteInput } from '../AutoCompleteInput/AutoCompleteInput';\n\nconst styles = StyleSheet.create({\n attachmentSeparator: {\n borderBottomWidth: 1,\n marginBottom: 10,\n },\n autoCompleteInputContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n paddingLeft: 16,\n paddingRight: 16,\n },\n composerContainer: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n container: {\n borderTopWidth: 1,\n padding: 10,\n },\n inputBoxContainer: {\n borderRadius: 20,\n borderWidth: 1,\n flex: 1,\n },\n optionsContainer: {\n flexDirection: 'row',\n paddingBottom: 10,\n paddingRight: 10,\n },\n replyContainer: { paddingBottom: 12, paddingHorizontal: 8 },\n sendButtonContainer: { paddingBottom: 10, paddingLeft: 10 },\n suggestionsListContainer: {\n borderRadius: 10,\n elevation: 3,\n left: 8,\n position: 'absolute',\n right: 8,\n shadowOffset: { height: 1, width: 0 },\n shadowOpacity: 0.15,\n },\n});\n\ntype MessageInputPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelContextValue<StreamChatGenerics>, 'disabled' | 'members' | 'watchers'> &\n Pick<\n MessageInputContextValue<StreamChatGenerics>,\n | 'additionalTextInputProps'\n | 'asyncIds'\n | 'asyncUploads'\n | 'cooldownEndsAt'\n | 'CooldownTimer'\n | 'clearEditingState'\n | 'clearQuotedMessageState'\n | 'closeAttachmentPicker'\n | 'editing'\n | 'FileUploadPreview'\n | 'fileUploads'\n | 'giphyActive'\n | 'ImageUploadPreview'\n | 'imageUploads'\n | 'Input'\n | 'inputBoxRef'\n | 'InputButtons'\n | 'InputEditingStateHeader'\n | 'InputGiphySearch'\n | 'InputReplyStateHeader'\n | 'isValidMessage'\n | 'maxNumberOfFiles'\n | 'mentionedUsers'\n | 'numberOfUploads'\n | 'quotedMessage'\n | 'resetInput'\n | 'SendButton'\n | 'sending'\n | 'sendMessageAsync'\n | 'setShowMoreOptions'\n | 'setGiphyActive'\n | 'showMoreOptions'\n | 'ShowThreadMessageInChannelButton'\n | 'removeFile'\n | 'removeImage'\n | 'uploadNewFile'\n | 'uploadNewImage'\n > &\n Pick<MessagesContextValue<StreamChatGenerics>, 'Reply'> &\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n | 'AutoCompleteSuggestionHeader'\n | 'AutoCompleteSuggestionItem'\n | 'AutoCompleteSuggestionList'\n | 'suggestions'\n | 'triggerType'\n > &\n Pick<ThreadContextValue<StreamChatGenerics>, 'thread'> &\n Pick<TranslationContextValue, 't'> & {\n threadList?: boolean;\n };\n\nconst MessageInputWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionList,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeFile,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n ShowThreadMessageInChannelButton,\n suggestions,\n thread,\n threadList,\n triggerType,\n uploadNewFile,\n uploadNewImage,\n watchers,\n } = props;\n\n const [height, setHeight] = useState(0);\n\n const {\n theme: {\n colors: { border, grey_whisper, white, white_smoke },\n messageInput: {\n attachmentSelectionBar,\n autoCompleteInputContainer,\n composerContainer,\n container,\n inputBoxContainer,\n optionsContainer,\n replyContainer,\n sendButtonContainer,\n suggestionsListContainer: { container: suggestionListContainer },\n },\n },\n } = useTheme();\n\n const {\n attachmentPickerBottomSheetHeight,\n attachmentSelectionBarHeight,\n bottomInset,\n selectedFiles,\n selectedImages,\n selectedPicker,\n setMaxNumberOfFiles,\n setSelectedFiles,\n setSelectedImages,\n } = useAttachmentPickerContext();\n\n const { seconds: cooldownRemainingSeconds } = useCountdown(cooldownEndsAt);\n\n /**\n * Mounting and un-mounting logic are un-related in following useEffect.\n * While mounting we want to pass maxNumberOfFiles (which is prop on Channel component)\n * to AttachmentPicker (on OverlayProvider)\n *\n * While un-mounting, we want to close the picker e.g., while navigating away.\n */\n useEffect(() => {\n setMaxNumberOfFiles(maxNumberOfFiles ?? 10);\n\n return closeAttachmentPicker;\n }, []);\n\n const [hasResetImages, setHasResetImages] = useState(false);\n const [hasResetFiles, setHasResetFiles] = useState(false);\n const selectedImagesLength = hasResetImages ? selectedImages.length : 0;\n const imageUploadsLength = hasResetImages ? imageUploads.length : 0;\n const selectedFilesLength = hasResetFiles ? selectedFiles.length : 0;\n const fileUploadsLength = hasResetFiles ? fileUploads.length : 0;\n const imagesForInput = (!!thread && !!threadList) || (!thread && !threadList);\n\n useEffect(() => {\n setSelectedImages([]);\n if (imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n return () => setSelectedImages([]);\n }, []);\n\n useEffect(() => {\n setSelectedFiles([]);\n if (fileUploads.length) {\n fileUploads.forEach((file) => removeFile(file.id));\n }\n return () => setSelectedFiles([]);\n }, []);\n\n useEffect(() => {\n if (hasResetImages === false && imageUploadsLength === 0 && selectedImagesLength === 0) {\n setHasResetImages(true);\n }\n }, [imageUploadsLength, selectedImagesLength]);\n\n useEffect(() => {\n if (hasResetFiles === false && fileUploadsLength === 0 && selectedFilesLength === 0) {\n setHasResetFiles(true);\n }\n }, [fileUploadsLength, selectedFilesLength]);\n\n useEffect(() => {\n if (imagesForInput === false && imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n }, [imagesForInput]);\n\n const uploadImagesHandler = () => {\n const imagesToUpload = selectedImages.filter((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return !uploadedImage;\n });\n imagesToUpload.forEach((image) => uploadNewImage(image));\n };\n\n const removeImagesHandler = () => {\n const imagesToRemove = imageUploads.filter(\n (imageUpload) =>\n !selectedImages.find(\n (selectedImage) =>\n selectedImage.uri === imageUpload.file.uri || selectedImage.uri === imageUpload.url,\n ),\n );\n imagesToRemove.forEach((image) => removeImage(image.id));\n };\n\n useEffect(() => {\n if (imagesForInput) {\n if (selectedImagesLength > imageUploadsLength) {\n /** User selected an image in bottom sheet attachment picker */\n uploadImagesHandler();\n } else {\n /** User de-selected an image in bottom sheet attachment picker */\n removeImagesHandler();\n }\n }\n }, [selectedImagesLength]);\n\n useEffect(() => {\n if (selectedFilesLength > fileUploadsLength) {\n /** User selected a video in bottom sheet attachment picker */\n const filesToUpload = selectedFiles.filter((selectedFile) => {\n const uploadedFile = fileUploads.find(\n (fileUpload) =>\n fileUpload.file.uri === selectedFile.uri || fileUpload.url === selectedFile.uri,\n );\n return !uploadedFile;\n });\n filesToUpload.forEach((file) => uploadNewFile(file));\n } else {\n /** User de-selected a video in bottom sheet attachment picker */\n const filesToRemove = fileUploads.filter(\n (fileUpload) =>\n !selectedFiles.find(\n (selectedFile) =>\n selectedFile.uri === fileUpload.file.uri || selectedFile.uri === fileUpload.url,\n ),\n );\n filesToRemove.forEach((file) => removeFile(file.id));\n }\n }, [selectedFilesLength]);\n\n useEffect(() => {\n if (imagesForInput) {\n if (imageUploadsLength < selectedImagesLength) {\n /** User removed some image from seleted images within ImageUploadPreview. */\n const updatedSelectedImages = selectedImages.filter((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return uploadedImage;\n });\n setSelectedImages(updatedSelectedImages);\n } else if (imageUploadsLength > selectedImagesLength) {\n /**\n * User is editing some message which contains image attachments OR\n * image attachment is added from custom image picker (other than the default bottomsheet image picker)\n * using `uploadNewImage` function from `MessageInputContext`.\n **/\n setSelectedImages(\n imageUploads\n .map((imageUpload) => ({\n height: imageUpload.file.height,\n source: imageUpload.file.source,\n uri: imageUpload.url || imageUpload.file.uri,\n width: imageUpload.file.width,\n }))\n .filter(Boolean) as Asset[],\n );\n }\n }\n }, [imageUploadsLength]);\n\n useEffect(() => {\n if (fileUploadsLength < selectedFilesLength) {\n /** User removed some video from seleted files within ImageUploadPreview. */\n const updatedSelectedFiles = selectedFiles.filter((selectedFile) => {\n const uploadedFile = fileUploads.find(\n (fileUpload) =>\n fileUpload.file.uri === selectedFile.uri || fileUpload.url === selectedFile.uri,\n );\n return uploadedFile;\n });\n setSelectedFiles(updatedSelectedFiles);\n } else if (fileUploadsLength > selectedFilesLength) {\n /**\n * User is editing some message which contains video attachments OR\n * video attachment is added from custom image picker (other than the default bottomsheet image picker)\n * using `uploadNewFile` function from `MessageInputContext`.\n **/\n setSelectedFiles(\n fileUploads.map((fileUpload) => ({\n duration: fileUpload.file.duration,\n name: fileUpload.file.name,\n size: fileUpload.file.size,\n type: fileUpload.file.type,\n uri: fileUpload.file.uri,\n })),\n );\n }\n }, [fileUploadsLength]);\n\n const editingExists = !!editing;\n useEffect(() => {\n if (editing && inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n\n /**\n * Make sure to test `initialValue` functionality, if you are modifying following condition.\n *\n * We have the following condition, to make sure - when user comes out of \"editing message\" state,\n * we wipe out all the state around message input such as text, mentioned users, image uploads etc.\n * But it also means, this condition will be fired up on first render, which may result in clearing\n * the initial value set on input box, through the prop - `initialValue`.\n * This prop generally gets used for the case of draft message functionality.\n */\n if (\n !editing &&\n (giphyActive ||\n fileUploads.length > 0 ||\n mentionedUsers.length > 0 ||\n imageUploads.length > 0 ||\n numberOfUploads > 0)\n ) {\n resetInput();\n }\n }, [editingExists]);\n\n const asyncIdsString = asyncIds.join();\n const asyncUploadsString = Object.values(asyncUploads)\n .map(({ state, url }) => `${state}${url}`)\n .join();\n useEffect(() => {\n if (Object.keys(asyncUploads).length) {\n /**\n * When successful image upload response occurs after hitting send,\n * send a follow up message with the image\n */\n sending.current = true;\n asyncIds.forEach((id) => sendMessageAsync(id));\n sending.current = false;\n }\n }, [asyncIdsString, asyncUploadsString, sendMessageAsync]);\n\n const getMembers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (members && Object.values(members).length) {\n Object.values(members).forEach((member) => {\n if (member.user) {\n result.push(member.user);\n }\n });\n }\n\n return result;\n };\n\n const getUsers = () => {\n const users = [...getMembers(), ...getWatchers()];\n\n // make sure we don't list users twice\n const uniqueUsers: { [key: string]: UserResponse<StreamChatGenerics> } = {};\n for (const user of users) {\n if (user && !uniqueUsers[user.id]) {\n uniqueUsers[user.id] = user;\n }\n }\n const usersArray = Object.values(uniqueUsers);\n\n return usersArray;\n };\n\n const getWatchers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (watchers && Object.values(watchers).length) {\n result.push(...Object.values(watchers));\n }\n\n return result;\n };\n\n const additionalTextInputContainerProps = {\n editable: disabled ? false : undefined,\n ...additionalTextInputProps,\n };\n\n return (\n <>\n <View\n onLayout={({\n nativeEvent: {\n layout: { height: newHeight },\n },\n }) => setHeight(newHeight)}\n style={[styles.container, { backgroundColor: white, borderColor: border }, container]}\n >\n {editing && <InputEditingStateHeader />}\n {quotedMessage && <InputReplyStateHeader />}\n <View style={[styles.composerContainer, composerContainer]}>\n {Input ? (\n <Input\n additionalTextInputProps={additionalTextInputContainerProps}\n getUsers={getUsers}\n />\n ) : (\n <>\n <View style={[styles.optionsContainer, optionsContainer]}>\n {InputButtons && <InputButtons />}\n </View>\n <View\n style={[\n styles.inputBoxContainer,\n {\n borderColor: grey_whisper,\n paddingVertical: giphyActive ? 8 : 12,\n },\n inputBoxContainer,\n ]}\n >\n {((typeof editing !== 'boolean' && editing?.quoted_message) || quotedMessage) && (\n <View style={[styles.replyContainer, replyContainer]}>\n <Reply />\n </View>\n )}\n {imageUploads.length ? <ImageUploadPreview /> : null}\n {imageUploads.length && fileUploads.length ? (\n <View\n style={[\n styles.attachmentSeparator,\n {\n borderBottomColor: grey_whisper,\n marginHorizontal: giphyActive ? 8 : 12,\n },\n ]}\n />\n ) : null}\n {fileUploads.length ? <FileUploadPreview /> : null}\n {giphyActive ? (\n <InputGiphySearch />\n ) : (\n <View style={[styles.autoCompleteInputContainer, autoCompleteInputContainer]}>\n <AutoCompleteInput<StreamChatGenerics>\n additionalTextInputProps={additionalTextInputProps}\n cooldownActive={!!cooldownRemainingSeconds}\n />\n </View>\n )}\n </View>\n <View style={[styles.sendButtonContainer, sendButtonContainer]}>\n {cooldownRemainingSeconds ? (\n <CooldownTimer seconds={cooldownRemainingSeconds} />\n ) : (\n <SendButton disabled={disabled || sending.current || !isValidMessage()} />\n )}\n </View>\n </>\n )}\n </View>\n <ShowThreadMessageInChannelButton threadList={threadList} />\n </View>\n\n {triggerType && suggestions ? (\n <View\n style={[\n suggestionListContainer,\n styles.suggestionsListContainer,\n { backgroundColor: white, bottom: height },\n ]}\n >\n <AutoCompleteSuggestionList\n active={!!suggestions}\n data={suggestions.data}\n onSelect={suggestions.onSelect}\n queryText={suggestions.queryText}\n triggerType={triggerType}\n />\n </View>\n ) : null}\n {selectedPicker && (\n <View\n style={[\n {\n backgroundColor: white_smoke,\n height:\n (attachmentPickerBottomSheetHeight\n ? attachmentPickerBottomSheetHeight + (attachmentSelectionBarHeight ?? 52)\n : 360) - bottomInset,\n },\n attachmentSelectionBar,\n ]}\n >\n <AttachmentSelectionBar />\n </View>\n )}\n </>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageInputPropsWithContext<StreamChatGenerics>,\n nextProps: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps: prevAdditionalTextInputProps,\n asyncUploads: prevAsyncUploads,\n disabled: prevDisabled,\n editing: prevEditing,\n fileUploads: prevFileUploads,\n giphyActive: prevGiphyActive,\n imageUploads: prevImageUploads,\n isValidMessage: prevIsValidMessage,\n mentionedUsers: prevMentionedUsers,\n quotedMessage: prevQuotedMessage,\n sending: prevSending,\n showMoreOptions: prevShowMoreOptions,\n suggestions: prevSuggestions,\n t: prevT,\n thread: prevThread,\n threadList: prevThreadList,\n } = prevProps;\n const {\n additionalTextInputProps: nextAdditionalTextInputProps,\n asyncUploads: nextAsyncUploads,\n disabled: nextDisabled,\n editing: nextEditing,\n fileUploads: nextFileUploads,\n giphyActive: nextGiphyActive,\n imageUploads: nextImageUploads,\n isValidMessage: nextIsValidMessage,\n mentionedUsers: nextMentionedUsers,\n quotedMessage: nextQuotedMessage,\n sending: nextSending,\n showMoreOptions: nextShowMoreOptions,\n suggestions: nextSuggestions,\n t: nextT,\n thread: nextThread,\n threadList: nextThreadList,\n } = nextProps;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const additionalTextInputPropsEven =\n prevAdditionalTextInputProps === nextAdditionalTextInputProps;\n if (!additionalTextInputPropsEven) return false;\n\n const disabledEqual = prevDisabled === nextDisabled;\n if (!disabledEqual) return false;\n\n const editingEqual = !!prevEditing === !!nextEditing;\n if (!editingEqual) return false;\n\n const imageUploadsEqual = prevImageUploads.length === nextImageUploads.length;\n if (!imageUploadsEqual) return false;\n\n const giphyActiveEqual = prevGiphyActive === nextGiphyActive;\n if (!giphyActiveEqual) return false;\n\n const quotedMessageEqual =\n !!prevQuotedMessage &&\n !!nextQuotedMessage &&\n typeof prevQuotedMessage !== 'boolean' &&\n typeof nextQuotedMessage !== 'boolean'\n ? prevQuotedMessage.id === nextQuotedMessage.id\n : !!prevQuotedMessage === !!nextQuotedMessage;\n if (!quotedMessageEqual) return false;\n\n const sendingEqual = prevSending.current === nextSending.current;\n if (!sendingEqual) return false;\n\n const showMoreOptionsEqual = prevShowMoreOptions === nextShowMoreOptions;\n if (!showMoreOptionsEqual) return false;\n\n const isValidMessageEqual = prevIsValidMessage() === nextIsValidMessage();\n if (!isValidMessageEqual) return false;\n\n const asyncUploadsEqual = Object.keys(prevAsyncUploads).every(\n (key) =>\n prevAsyncUploads[key].state === nextAsyncUploads[key].state &&\n prevAsyncUploads[key].url === nextAsyncUploads[key].url,\n );\n if (!asyncUploadsEqual) return false;\n\n const fileUploadsEqual = prevFileUploads.length === nextFileUploads.length;\n if (!fileUploadsEqual) return false;\n\n const mentionedUsersEqual = prevMentionedUsers.length === nextMentionedUsers.length;\n if (!mentionedUsersEqual) return false;\n\n const suggestionsEqual =\n !!prevSuggestions?.data && !!nextSuggestions?.data\n ? prevSuggestions.data.length === nextSuggestions.data.length &&\n prevSuggestions.data.every(({ name }, index) => name === nextSuggestions.data[index].name)\n : !!prevSuggestions === !!nextSuggestions;\n if (!suggestionsEqual) return false;\n\n const threadEqual =\n prevThread?.id === nextThread?.id &&\n prevThread?.text === nextThread?.text &&\n prevThread?.reply_count === nextThread?.reply_count;\n if (!threadEqual) return false;\n\n const threadListEqual = prevThreadList === nextThreadList;\n if (!threadListEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageInput = React.memo(\n MessageInputWithContext,\n areEqual,\n) as typeof MessageInputWithContext;\n\nexport type MessageInputProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageInputPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for message input\n * It's a consumer of\n * [Channel Context](https://getstream.github.io/stream-chat-react-native/v3/#channelcontext),\n * [Chat Context](https://getstream.github.io/stream-chat-react-native/v3/#chatcontext),\n * [MessageInput Context](https://getstream.github.io/stream-chat-react-native/v3/#messageinputcontext),\n * [Suggestions Context](https://getstream.github.io/stream-chat-react-native/v3/#suggestionscontext), and\n * [Translation Context](https://getstream.github.io/stream-chat-react-native/v3/#translationcontext)\n */\nexport const MessageInput = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputProps<StreamChatGenerics>,\n) => {\n const ownCapabilities = useOwnCapabilitiesContext();\n\n const { disabled = false, members, watchers } = useChannelContext<StreamChatGenerics>();\n\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n isValidMessage,\n maxNumberOfFiles,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeFile,\n removeImage,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n SendMessageDisallowedIndicator,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n uploadNewFile,\n uploadNewImage,\n } = useMessageInputContext<StreamChatGenerics>();\n\n const { Reply } = useMessagesContext<StreamChatGenerics>();\n\n const {\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n suggestions,\n triggerType,\n } = useSuggestionsContext<StreamChatGenerics>();\n\n const { thread } = useThreadContext<StreamChatGenerics>();\n\n const { t } = useTranslationContext();\n\n if (!ownCapabilities.sendMessage && SendMessageDisallowedIndicator) {\n return <SendMessageDisallowedIndicator />;\n }\n\n return (\n <MemoizedMessageInput\n {...{\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeFile,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n suggestions,\n t,\n thread,\n triggerType,\n uploadNewFile,\n uploadNewImage,\n watchers,\n }}\n {...props}\n />\n );\n};\n\nMessageInput.displayName = 'MessageInput{messageInput}';\n"]}
|
|
@@ -79,6 +79,22 @@ var styles = _reactNative.StyleSheet.create({
|
|
|
79
79
|
}
|
|
80
80
|
});
|
|
81
81
|
|
|
82
|
+
var getMessageType = function getMessageType(lastAttachment) {
|
|
83
|
+
var messageType;
|
|
84
|
+
var isLastAttachmentFile = lastAttachment.type === 'file' || lastAttachment.type === 'audio' || lastAttachment.type === 'video';
|
|
85
|
+
var isLastAttachmentGiphy = lastAttachment.type === 'giphy' || lastAttachment.type === 'imgur';
|
|
86
|
+
var isLastAttachmentImageOrGiphy = lastAttachment.type === 'image' && !lastAttachment.title_link && !lastAttachment.og_scrape_url;
|
|
87
|
+
var isLastAttachmentImage = lastAttachment.image_url || lastAttachment.thumb_url;
|
|
88
|
+
|
|
89
|
+
if (isLastAttachmentFile) {
|
|
90
|
+
messageType = 'file';
|
|
91
|
+
} else if (isLastAttachmentImageOrGiphy) {
|
|
92
|
+
if (isLastAttachmentImage) messageType = 'image';else messageType = undefined;
|
|
93
|
+
} else if (isLastAttachmentGiphy) messageType = 'giphy';else messageType = 'other';
|
|
94
|
+
|
|
95
|
+
return messageType;
|
|
96
|
+
};
|
|
97
|
+
|
|
82
98
|
var ReplyWithContext = function ReplyWithContext(props) {
|
|
83
99
|
var _quotedMessage$attach, _stylesProp$imageAtta, _stylesProp$imageAtta2, _stylesProp$imageAtta3, _stylesProp$imageAtta4, _stylesProp$fileAttac;
|
|
84
100
|
|
|
@@ -115,7 +131,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
115
131
|
|
|
116
132
|
if (typeof quotedMessage === 'boolean') return null;
|
|
117
133
|
var lastAttachment = (_quotedMessage$attach = quotedMessage.attachments) == null ? void 0 : _quotedMessage$attach.slice(-1)[0];
|
|
118
|
-
var messageType = lastAttachment
|
|
134
|
+
var messageType = lastAttachment && getMessageType(lastAttachment);
|
|
119
135
|
var hasImage = !error && lastAttachment && messageType !== 'file' && (lastAttachment.image_url || lastAttachment.thumb_url || lastAttachment.og_scrape_url);
|
|
120
136
|
|
|
121
137
|
var onlyEmojis = !lastAttachment && !!quotedMessage.text && _utils.emojiRegex.test(quotedMessage.text);
|
|
@@ -125,7 +141,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
125
141
|
__self: _this,
|
|
126
142
|
__source: {
|
|
127
143
|
fileName: _jsxFileName,
|
|
128
|
-
lineNumber:
|
|
144
|
+
lineNumber: 149,
|
|
129
145
|
columnNumber: 5
|
|
130
146
|
}
|
|
131
147
|
}, _react["default"].createElement(MessageAvatar, {
|
|
@@ -136,7 +152,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
136
152
|
__self: _this,
|
|
137
153
|
__source: {
|
|
138
154
|
fileName: _jsxFileName,
|
|
139
|
-
lineNumber:
|
|
155
|
+
lineNumber: 150,
|
|
140
156
|
columnNumber: 7
|
|
141
157
|
}
|
|
142
158
|
}), _react["default"].createElement(_reactNative.View, {
|
|
@@ -148,7 +164,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
148
164
|
__self: _this,
|
|
149
165
|
__source: {
|
|
150
166
|
fileName: _jsxFileName,
|
|
151
|
-
lineNumber:
|
|
167
|
+
lineNumber: 151,
|
|
152
168
|
columnNumber: 7
|
|
153
169
|
}
|
|
154
170
|
}, !error && lastAttachment ? messageType === 'file' ? _react["default"].createElement(_reactNative.View, {
|
|
@@ -156,7 +172,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
156
172
|
__self: _this,
|
|
157
173
|
__source: {
|
|
158
174
|
fileName: _jsxFileName,
|
|
159
|
-
lineNumber:
|
|
175
|
+
lineNumber: 166,
|
|
160
176
|
columnNumber: 13
|
|
161
177
|
}
|
|
162
178
|
}, _react["default"].createElement(FileAttachmentIcon, {
|
|
@@ -165,7 +181,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
165
181
|
__self: _this,
|
|
166
182
|
__source: {
|
|
167
183
|
fileName: _jsxFileName,
|
|
168
|
-
lineNumber:
|
|
184
|
+
lineNumber: 173,
|
|
169
185
|
columnNumber: 15
|
|
170
186
|
}
|
|
171
187
|
})) : hasImage ? _react["default"].createElement(_reactNative.Image, {
|
|
@@ -183,7 +199,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
183
199
|
__self: _this,
|
|
184
200
|
__source: {
|
|
185
201
|
fileName: _jsxFileName,
|
|
186
|
-
lineNumber:
|
|
202
|
+
lineNumber: 176,
|
|
187
203
|
columnNumber: 13
|
|
188
204
|
}
|
|
189
205
|
}) : null : null, _react["default"].createElement(_MessageTextContainer.MessageTextContainer, {
|
|
@@ -206,7 +222,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
206
222
|
__self: _this,
|
|
207
223
|
__source: {
|
|
208
224
|
fileName: _jsxFileName,
|
|
209
|
-
lineNumber:
|
|
225
|
+
lineNumber: 197,
|
|
210
226
|
columnNumber: 9
|
|
211
227
|
}
|
|
212
228
|
})));
|
|
@@ -250,7 +266,7 @@ var Reply = function Reply(props) {
|
|
|
250
266
|
__self: _this,
|
|
251
267
|
__source: {
|
|
252
268
|
fileName: _jsxFileName,
|
|
253
|
-
lineNumber:
|
|
269
|
+
lineNumber: 301,
|
|
254
270
|
columnNumber: 5
|
|
255
271
|
}
|
|
256
272
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Reply.tsx"],"names":["styles","StyleSheet","create","container","alignItems","flexDirection","fileAttachmentContainer","paddingLeft","paddingVertical","imageAttachment","borderRadius","height","marginLeft","marginVertical","width","messageContainer","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","flexGrow","flexShrink","text","fontSize","textContainer","maxWidth","undefined","paddingHorizontal","ReplyWithContext","props","FileAttachmentIcon","attachmentSize","MessageAvatar","quotedMessage","stylesProp","t","error","setError","theme","colors","blue_alice","border","grey","transparent","white","deletedText","messageSimple","content","reply","markdownStyles","lastAttachment","attachments","slice","messageType","type","title_link","og_scrape_url","image_url","thumb_url","hasImage","onlyEmojis","emojiRegex","test","backgroundColor","borderColor","borderWidth","mime_type","uri","url","deleted_at","em","color","length","title","marginRight","Number","areEqual","prevProps","nextProps","prevQuotedMessage","nextQuotedMessage","quotedMessageEqual","id","MemoizedReply","React","memo","Reply","message","FileIconDefault","MessageAvatarDefault","editing","quotedEditingMessage","quoted_message","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { Image, ImageStyle, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport merge from 'lodash/merge';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { useMessageContext } from '../../contexts/messageContext/MessageContext';\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { emojiRegex } from '../../utils/utils';\n\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageTextContainer } from '../Message/MessageSimple/MessageTextContainer';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n fileAttachmentContainer: { paddingLeft: 8, paddingVertical: 8 },\n imageAttachment: {\n borderRadius: 8,\n height: 32,\n marginLeft: 8,\n marginVertical: 8,\n width: 32,\n },\n messageContainer: {\n alignItems: 'flex-start',\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 12,\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n flexDirection: 'row',\n flexGrow: 1,\n flexShrink: 1,\n },\n text: { fontSize: 12 },\n textContainer: { maxWidth: undefined, paddingHorizontal: 8 },\n});\n\ntype ReplyPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<MessageInputContextValue<StreamChatGenerics>, 'quotedMessage'> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'FileAttachmentIcon' | 'MessageAvatar'> &\n Pick<TranslationContextValue, 't'> & {\n attachmentSize?: number;\n styles?: Partial<{\n container: ViewStyle;\n fileAttachmentContainer: ViewStyle;\n imageAttachment: ImageStyle;\n messageContainer: ViewStyle;\n textContainer: ViewStyle;\n }>;\n };\n\nconst ReplyWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReplyPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n FileAttachmentIcon,\n attachmentSize = 40,\n MessageAvatar,\n quotedMessage,\n styles: stylesProp = {},\n t,\n } = props;\n\n const [error, setError] = useState(false);\n\n const {\n theme: {\n colors: { blue_alice, border, grey, transparent, white },\n messageSimple: {\n content: { deletedText },\n },\n reply: {\n container,\n fileAttachmentContainer,\n imageAttachment,\n markdownStyles,\n messageContainer,\n textContainer,\n },\n },\n } = useTheme();\n\n if (typeof quotedMessage === 'boolean') return null;\n\n const lastAttachment = quotedMessage.attachments?.slice(-1)[0] as Attachment<StreamChatGenerics>;\n\n const messageType = lastAttachment\n ? lastAttachment.type === 'file' || lastAttachment.type === 'audio'\n ? 'file'\n : lastAttachment.type === 'image' &&\n !lastAttachment.title_link &&\n !lastAttachment.og_scrape_url\n ? lastAttachment.image_url || lastAttachment.thumb_url\n ? 'image'\n : undefined\n : lastAttachment.type === 'giphy' || lastAttachment.type === 'imgur'\n ? 'giphy'\n : 'other'\n : undefined;\n\n const hasImage =\n !error &&\n lastAttachment &&\n messageType !== 'file' &&\n (lastAttachment.image_url || lastAttachment.thumb_url || lastAttachment.og_scrape_url);\n\n const onlyEmojis = !lastAttachment && !!quotedMessage.text && emojiRegex.test(quotedMessage.text);\n\n return (\n <View style={[styles.container, container, stylesProp.container]}>\n <MessageAvatar alignment={'left'} lastGroupMessage message={quotedMessage} size={24} />\n <View\n style={[\n styles.messageContainer,\n {\n backgroundColor:\n messageType === 'other' ? blue_alice : messageType === 'giphy' ? transparent : white,\n borderColor: border,\n borderWidth: messageType === 'other' ? 0 : 1,\n },\n messageContainer,\n stylesProp.messageContainer,\n ]}\n >\n {!error && lastAttachment ? (\n messageType === 'file' ? (\n <View\n style={[\n styles.fileAttachmentContainer,\n fileAttachmentContainer,\n stylesProp.fileAttachmentContainer,\n ]}\n >\n <FileAttachmentIcon mimeType={lastAttachment.mime_type} size={attachmentSize} />\n </View>\n ) : hasImage ? (\n <Image\n onError={() => setError(true)}\n source={{\n uri: getResizedImageUrl({\n height:\n stylesProp.imageAttachment?.height ||\n imageAttachment?.height ||\n styles.imageAttachment.height,\n url: (lastAttachment.image_url ||\n lastAttachment.thumb_url ||\n lastAttachment.og_scrape_url) as string,\n width:\n stylesProp.imageAttachment?.width ||\n imageAttachment?.width ||\n styles.imageAttachment.width,\n }),\n }}\n style={[styles.imageAttachment, imageAttachment, stylesProp.imageAttachment]}\n />\n ) : null\n ) : null}\n <MessageTextContainer<StreamChatGenerics>\n markdownStyles={\n quotedMessage.deleted_at\n ? merge({ em: { color: grey } }, deletedText)\n : { text: styles.text, ...markdownStyles }\n }\n message={{\n ...quotedMessage,\n text: quotedMessage.deleted_at\n ? `_${t('Message deleted')}_`\n : quotedMessage.text\n ? quotedMessage.text.length > 170\n ? `${quotedMessage.text.slice(0, 170)}...`\n : quotedMessage.text\n : messageType === 'image'\n ? t('Photo')\n : messageType === 'file'\n ? lastAttachment?.title || ''\n : '',\n }}\n onlyEmojis={onlyEmojis}\n styles={{\n textContainer: [\n {\n marginRight: hasImage\n ? Number(\n stylesProp.imageAttachment?.height ||\n imageAttachment.height ||\n styles.imageAttachment.height,\n ) +\n Number(\n stylesProp.imageAttachment?.marginLeft ||\n imageAttachment.marginLeft ||\n styles.imageAttachment.marginLeft,\n )\n : messageType === 'file'\n ? attachmentSize +\n Number(\n stylesProp.fileAttachmentContainer?.paddingLeft ||\n fileAttachmentContainer.paddingLeft ||\n styles.fileAttachmentContainer.paddingLeft,\n )\n : undefined,\n },\n styles.textContainer,\n textContainer,\n stylesProp.textContainer,\n ],\n }}\n />\n </View>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ReplyPropsWithContext<StreamChatGenerics>,\n nextProps: ReplyPropsWithContext<StreamChatGenerics>,\n) => {\n const { quotedMessage: prevQuotedMessage } = prevProps;\n const { quotedMessage: nextQuotedMessage } = nextProps;\n\n const quotedMessageEqual =\n !!prevQuotedMessage &&\n !!nextQuotedMessage &&\n typeof prevQuotedMessage !== 'boolean' &&\n typeof nextQuotedMessage !== 'boolean'\n ? prevQuotedMessage.id === nextQuotedMessage.id &&\n prevQuotedMessage.deleted_at === nextQuotedMessage.deleted_at\n : !!prevQuotedMessage === !!nextQuotedMessage;\n\n if (!quotedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedReply = React.memo(ReplyWithContext, areEqual) as typeof ReplyWithContext;\n\nexport type ReplyProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<ReplyPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for reply\n */\nexport const Reply = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReplyProps<StreamChatGenerics>,\n) => {\n const { message } = useMessageContext<StreamChatGenerics>();\n\n const { FileAttachmentIcon = FileIconDefault, MessageAvatar = MessageAvatarDefault } =\n useMessagesContext<StreamChatGenerics>();\n\n const { editing, quotedMessage } = useMessageInputContext<StreamChatGenerics>();\n\n const quotedEditingMessage = (\n typeof editing !== 'boolean' ? editing?.quoted_message || false : false\n ) as MessageInputContextValue<StreamChatGenerics>['quotedMessage'];\n\n const { t } = useTranslationContext();\n\n return (\n <MemoizedReply\n {...{\n FileAttachmentIcon,\n MessageAvatar,\n quotedMessage: message\n ? (message.quoted_message as MessageInputContextValue<StreamChatGenerics>['quotedMessage'])\n : quotedMessage || quotedEditingMessage,\n t,\n }}\n {...props}\n />\n );\n};\n\nReply.displayName = 'Reply{reply}';\n"]}
|
|
1
|
+
{"version":3,"sources":["Reply.tsx"],"names":["styles","StyleSheet","create","container","alignItems","flexDirection","fileAttachmentContainer","paddingLeft","paddingVertical","imageAttachment","borderRadius","height","marginLeft","marginVertical","width","messageContainer","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","flexGrow","flexShrink","text","fontSize","textContainer","maxWidth","undefined","paddingHorizontal","getMessageType","lastAttachment","messageType","isLastAttachmentFile","type","isLastAttachmentGiphy","isLastAttachmentImageOrGiphy","title_link","og_scrape_url","isLastAttachmentImage","image_url","thumb_url","ReplyWithContext","props","FileAttachmentIcon","attachmentSize","MessageAvatar","quotedMessage","stylesProp","t","error","setError","theme","colors","blue_alice","border","grey","transparent","white","deletedText","messageSimple","content","reply","markdownStyles","attachments","slice","hasImage","onlyEmojis","emojiRegex","test","backgroundColor","borderColor","borderWidth","mime_type","uri","url","deleted_at","em","color","length","title","marginRight","Number","areEqual","prevProps","nextProps","prevQuotedMessage","nextQuotedMessage","quotedMessageEqual","id","MemoizedReply","React","memo","Reply","message","FileIconDefault","MessageAvatarDefault","editing","quotedEditingMessage","quoted_message","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { Image, ImageStyle, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport merge from 'lodash/merge';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { useMessageContext } from '../../contexts/messageContext/MessageContext';\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { emojiRegex } from '../../utils/utils';\n\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageTextContainer } from '../Message/MessageSimple/MessageTextContainer';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n fileAttachmentContainer: { paddingLeft: 8, paddingVertical: 8 },\n imageAttachment: {\n borderRadius: 8,\n height: 32,\n marginLeft: 8,\n marginVertical: 8,\n width: 32,\n },\n messageContainer: {\n alignItems: 'flex-start',\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 12,\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n flexDirection: 'row',\n flexGrow: 1,\n flexShrink: 1,\n },\n text: { fontSize: 12 },\n textContainer: { maxWidth: undefined, paddingHorizontal: 8 },\n});\n\ntype ReplyPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<MessageInputContextValue<StreamChatGenerics>, 'quotedMessage'> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'FileAttachmentIcon' | 'MessageAvatar'> &\n Pick<TranslationContextValue, 't'> & {\n attachmentSize?: number;\n styles?: Partial<{\n container: ViewStyle;\n fileAttachmentContainer: ViewStyle;\n imageAttachment: ImageStyle;\n messageContainer: ViewStyle;\n textContainer: ViewStyle;\n }>;\n };\n\nconst getMessageType = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n lastAttachment: Attachment<StreamChatGenerics>,\n) => {\n let messageType;\n\n const isLastAttachmentFile =\n lastAttachment.type === 'file' ||\n lastAttachment.type === 'audio' ||\n lastAttachment.type === 'video';\n\n const isLastAttachmentGiphy = lastAttachment.type === 'giphy' || lastAttachment.type === 'imgur';\n\n const isLastAttachmentImageOrGiphy =\n lastAttachment.type === 'image' && !lastAttachment.title_link && !lastAttachment.og_scrape_url;\n\n const isLastAttachmentImage = lastAttachment.image_url || lastAttachment.thumb_url;\n\n if (isLastAttachmentFile) {\n messageType = 'file';\n } else if (isLastAttachmentImageOrGiphy) {\n if (isLastAttachmentImage) messageType = 'image';\n else messageType = undefined;\n } else if (isLastAttachmentGiphy) messageType = 'giphy';\n else messageType = 'other';\n\n return messageType;\n};\n\nconst ReplyWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReplyPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n FileAttachmentIcon,\n attachmentSize = 40,\n MessageAvatar,\n quotedMessage,\n styles: stylesProp = {},\n t,\n } = props;\n\n const [error, setError] = useState(false);\n\n const {\n theme: {\n colors: { blue_alice, border, grey, transparent, white },\n messageSimple: {\n content: { deletedText },\n },\n reply: {\n container,\n fileAttachmentContainer,\n imageAttachment,\n markdownStyles,\n messageContainer,\n textContainer,\n },\n },\n } = useTheme();\n\n if (typeof quotedMessage === 'boolean') return null;\n\n const lastAttachment = quotedMessage.attachments?.slice(-1)[0] as Attachment<StreamChatGenerics>;\n const messageType = lastAttachment && getMessageType(lastAttachment);\n\n const hasImage =\n !error &&\n lastAttachment &&\n messageType !== 'file' &&\n (lastAttachment.image_url || lastAttachment.thumb_url || lastAttachment.og_scrape_url);\n\n const onlyEmojis = !lastAttachment && !!quotedMessage.text && emojiRegex.test(quotedMessage.text);\n\n return (\n <View style={[styles.container, container, stylesProp.container]}>\n <MessageAvatar alignment={'left'} lastGroupMessage message={quotedMessage} size={24} />\n <View\n style={[\n styles.messageContainer,\n {\n backgroundColor:\n messageType === 'other' ? blue_alice : messageType === 'giphy' ? transparent : white,\n borderColor: border,\n borderWidth: messageType === 'other' ? 0 : 1,\n },\n messageContainer,\n stylesProp.messageContainer,\n ]}\n >\n {!error && lastAttachment ? (\n messageType === 'file' ? (\n <View\n style={[\n styles.fileAttachmentContainer,\n fileAttachmentContainer,\n stylesProp.fileAttachmentContainer,\n ]}\n >\n <FileAttachmentIcon mimeType={lastAttachment.mime_type} size={attachmentSize} />\n </View>\n ) : hasImage ? (\n <Image\n onError={() => setError(true)}\n source={{\n uri: getResizedImageUrl({\n height:\n stylesProp.imageAttachment?.height ||\n imageAttachment?.height ||\n styles.imageAttachment.height,\n url: (lastAttachment.image_url ||\n lastAttachment.thumb_url ||\n lastAttachment.og_scrape_url) as string,\n width:\n stylesProp.imageAttachment?.width ||\n imageAttachment?.width ||\n styles.imageAttachment.width,\n }),\n }}\n style={[styles.imageAttachment, imageAttachment, stylesProp.imageAttachment]}\n />\n ) : null\n ) : null}\n <MessageTextContainer<StreamChatGenerics>\n markdownStyles={\n quotedMessage.deleted_at\n ? merge({ em: { color: grey } }, deletedText)\n : { text: styles.text, ...markdownStyles }\n }\n message={{\n ...quotedMessage,\n text: quotedMessage.deleted_at\n ? `_${t('Message deleted')}_`\n : quotedMessage.text\n ? quotedMessage.text.length > 170\n ? `${quotedMessage.text.slice(0, 170)}...`\n : quotedMessage.text\n : messageType === 'image'\n ? t('Photo')\n : messageType === 'file'\n ? lastAttachment?.title || ''\n : '',\n }}\n onlyEmojis={onlyEmojis}\n styles={{\n textContainer: [\n {\n marginRight: hasImage\n ? Number(\n stylesProp.imageAttachment?.height ||\n imageAttachment.height ||\n styles.imageAttachment.height,\n ) +\n Number(\n stylesProp.imageAttachment?.marginLeft ||\n imageAttachment.marginLeft ||\n styles.imageAttachment.marginLeft,\n )\n : messageType === 'file'\n ? attachmentSize +\n Number(\n stylesProp.fileAttachmentContainer?.paddingLeft ||\n fileAttachmentContainer.paddingLeft ||\n styles.fileAttachmentContainer.paddingLeft,\n )\n : undefined,\n },\n styles.textContainer,\n textContainer,\n stylesProp.textContainer,\n ],\n }}\n />\n </View>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ReplyPropsWithContext<StreamChatGenerics>,\n nextProps: ReplyPropsWithContext<StreamChatGenerics>,\n) => {\n const { quotedMessage: prevQuotedMessage } = prevProps;\n const { quotedMessage: nextQuotedMessage } = nextProps;\n\n const quotedMessageEqual =\n !!prevQuotedMessage &&\n !!nextQuotedMessage &&\n typeof prevQuotedMessage !== 'boolean' &&\n typeof nextQuotedMessage !== 'boolean'\n ? prevQuotedMessage.id === nextQuotedMessage.id &&\n prevQuotedMessage.deleted_at === nextQuotedMessage.deleted_at\n : !!prevQuotedMessage === !!nextQuotedMessage;\n\n if (!quotedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedReply = React.memo(ReplyWithContext, areEqual) as typeof ReplyWithContext;\n\nexport type ReplyProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<ReplyPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for reply\n */\nexport const Reply = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReplyProps<StreamChatGenerics>,\n) => {\n const { message } = useMessageContext<StreamChatGenerics>();\n\n const { FileAttachmentIcon = FileIconDefault, MessageAvatar = MessageAvatarDefault } =\n useMessagesContext<StreamChatGenerics>();\n\n const { editing, quotedMessage } = useMessageInputContext<StreamChatGenerics>();\n\n const quotedEditingMessage = (\n typeof editing !== 'boolean' ? editing?.quoted_message || false : false\n ) as MessageInputContextValue<StreamChatGenerics>['quotedMessage'];\n\n const { t } = useTranslationContext();\n\n return (\n <MemoizedReply\n {...{\n FileAttachmentIcon,\n MessageAvatar,\n quotedMessage: message\n ? (message.quoted_message as MessageInputContextValue<StreamChatGenerics>['quotedMessage'])\n : quotedMessage || quotedEditingMessage,\n t,\n }}\n {...props}\n />\n );\n};\n\nReply.displayName = 'Reply{reply}';\n"]}
|
|
@@ -49,15 +49,20 @@ var AttachmentPickerProvider = function AttachmentPickerProvider(_ref) {
|
|
|
49
49
|
selectedImages = _useState6[0],
|
|
50
50
|
setSelectedImages = _useState6[1];
|
|
51
51
|
|
|
52
|
-
var _useState7 = (0, _react.useState)(),
|
|
52
|
+
var _useState7 = (0, _react.useState)([]),
|
|
53
53
|
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
selectedFiles = _useState8[0],
|
|
55
|
+
setSelectedFiles = _useState8[1];
|
|
56
56
|
|
|
57
|
-
var _useState9 = (0, _react.useState)(
|
|
57
|
+
var _useState9 = (0, _react.useState)(),
|
|
58
58
|
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
selectedPicker = _useState10[0],
|
|
60
|
+
setSelectedPicker = _useState10[1];
|
|
61
|
+
|
|
62
|
+
var _useState11 = (0, _react.useState)((_value$topInset = value == null ? void 0 : value.topInset) != null ? _value$topInset : 0),
|
|
63
|
+
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
64
|
+
topInset = _useState12[0],
|
|
65
|
+
setTopInset = _useState12[1];
|
|
61
66
|
|
|
62
67
|
(0, _react.useEffect)(function () {
|
|
63
68
|
setBottomInset(bottomInsetValue != null ? bottomInsetValue : 0);
|
|
@@ -67,10 +72,12 @@ var AttachmentPickerProvider = function AttachmentPickerProvider(_ref) {
|
|
|
67
72
|
}, [topInsetValue]);
|
|
68
73
|
var combinedValue = (0, _extends2["default"])({
|
|
69
74
|
maxNumberOfFiles: maxNumberOfFiles,
|
|
75
|
+
selectedFiles: selectedFiles,
|
|
70
76
|
selectedImages: selectedImages,
|
|
71
77
|
selectedPicker: selectedPicker,
|
|
72
78
|
setBottomInset: setBottomInset,
|
|
73
79
|
setMaxNumberOfFiles: setMaxNumberOfFiles,
|
|
80
|
+
setSelectedFiles: setSelectedFiles,
|
|
74
81
|
setSelectedImages: setSelectedImages,
|
|
75
82
|
setSelectedPicker: setSelectedPicker,
|
|
76
83
|
setTopInset: setTopInset
|
|
@@ -83,7 +90,7 @@ var AttachmentPickerProvider = function AttachmentPickerProvider(_ref) {
|
|
|
83
90
|
__self: _this,
|
|
84
91
|
__source: {
|
|
85
92
|
fileName: _jsxFileName,
|
|
86
|
-
lineNumber:
|
|
93
|
+
lineNumber: 113,
|
|
87
94
|
columnNumber: 5
|
|
88
95
|
}
|
|
89
96
|
}, children);
|
|
@@ -104,7 +111,7 @@ var withAttachmentPickerContext = function withAttachmentPickerContext(Component
|
|
|
104
111
|
__self: _this,
|
|
105
112
|
__source: {
|
|
106
113
|
fileName: _jsxFileName,
|
|
107
|
-
lineNumber:
|
|
114
|
+
lineNumber: 134,
|
|
108
115
|
columnNumber: 12
|
|
109
116
|
}
|
|
110
117
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["AttachmentPickerContext.tsx"],"names":["AttachmentPickerContext","React","createContext","AttachmentPickerProvider","children","value","bottomInsetValue","bottomInset","topInsetValue","topInset","setBottomInset","maxNumberOfFiles","setMaxNumberOfFiles","selectedImages","setSelectedImages","selectedPicker","setSelectedPicker","setTopInset","combinedValue","useAttachmentPickerContext","withAttachmentPickerContext","Component","WithAttachmentPickerContextComponent","props","attachmentPickerContext","displayName"],"mappings":";;;;;;;;;;;;;AAAA;;
|
|
1
|
+
{"version":3,"sources":["AttachmentPickerContext.tsx"],"names":["AttachmentPickerContext","React","createContext","AttachmentPickerProvider","children","value","bottomInsetValue","bottomInset","topInsetValue","topInset","setBottomInset","maxNumberOfFiles","setMaxNumberOfFiles","selectedImages","setSelectedImages","selectedFiles","setSelectedFiles","selectedPicker","setSelectedPicker","setTopInset","combinedValue","useAttachmentPickerContext","withAttachmentPickerContext","Component","WithAttachmentPickerContextComponent","props","attachmentPickerContext","displayName"],"mappings":";;;;;;;;;;;;;AAAA;;AAGA;;;;;;;;;AAsDO,IAAMA,uBAAuB,GAAGC,kBAAMC,aAAN,CACrC,EADqC,CAAhC;;;;AAIA,IAAMC,wBAAwB,GAAG,SAA3BA,wBAA2B,OAejC;AAAA;;AAAA,MAdLC,QAcK,QAdLA,QAcK;AAAA,MAbLC,KAaK,QAbLA,KAaK;AACL,MAAMC,gBAAgB,GAAGD,KAAH,oBAAGA,KAAK,CAAEE,WAAhC;AACA,MAAMC,aAAa,GAAGH,KAAH,oBAAGA,KAAK,CAAEI,QAA7B;;AAEA,kBAAsC,qBAAiBH,gBAAjB,WAAiBA,gBAAjB,GAAqC,CAArC,CAAtC;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBG,cAApB;;AACA,mBAAgD,qBAAS,EAAT,CAAhD;AAAA;AAAA,MAAOC,gBAAP;AAAA,MAAyBC,mBAAzB;;AACA,mBAA4C,qBAAkB,EAAlB,CAA5C;AAAA;AAAA,MAAOC,cAAP;AAAA,MAAuBC,iBAAvB;;AACA,mBAA0C,qBAAiB,EAAjB,CAA1C;AAAA;AAAA,MAAOC,aAAP;AAAA,MAAsBC,gBAAtB;;AACA,mBAA4C,sBAA5C;AAAA;AAAA,MAAOC,cAAP;AAAA,MAAuBC,iBAAvB;;AACA,oBAAgC,wCAAiBb,KAAjB,oBAAiBA,KAAK,CAAEI,QAAxB,8BAAoC,CAApC,CAAhC;AAAA;AAAA,MAAOA,QAAP;AAAA,MAAiBU,WAAjB;;AAEA,wBAAU,YAAM;AACdT,IAAAA,cAAc,CAACJ,gBAAD,WAACA,gBAAD,GAAqB,CAArB,CAAd;AACD,GAFD,EAEG,CAACA,gBAAD,CAFH;AAIA,wBAAU,YAAM;AACda,IAAAA,WAAW,CAACX,aAAD,WAACA,aAAD,GAAkB,CAAlB,CAAX;AACD,GAFD,EAEG,CAACA,aAAD,CAFH;AAIA,MAAMY,aAAa;AACjBT,IAAAA,gBAAgB,EAAhBA,gBADiB;AAEjBI,IAAAA,aAAa,EAAbA,aAFiB;AAGjBF,IAAAA,cAAc,EAAdA,cAHiB;AAIjBI,IAAAA,cAAc,EAAdA,cAJiB;AAKjBP,IAAAA,cAAc,EAAdA,cALiB;AAMjBE,IAAAA,mBAAmB,EAAnBA,mBANiB;AAOjBI,IAAAA,gBAAgB,EAAhBA,gBAPiB;AAQjBF,IAAAA,iBAAiB,EAAjBA,iBARiB;AASjBI,IAAAA,iBAAiB,EAAjBA,iBATiB;AAUjBC,IAAAA,WAAW,EAAXA;AAViB,KAWdd,KAXc;AAYjBE,IAAAA,WAAW,EAAXA,WAZiB;AAajBE,IAAAA,QAAQ,EAARA;AAbiB,IAAnB;AAgBA,SACE,gCAAC,uBAAD,CAAyB,QAAzB;AACE,IAAA,KAAK,EAAEW,aADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAGGhB,QAHH,CADF;AAOD,CAzDM;;;;AA2DA,IAAMiB,0BAA0B,GAAG,SAA7BA,0BAA6B;AAAA,SACxC,uBAAWrB,uBAAX,CADwC;AAAA,CAAnC;;;;AAGA,IAAMsB,2BAA2B,GAAG,SAA9BA,2BAA8B,CAGzCC,SAHyC,EAIkC;AAC3E,MAAMC,oCAAoC,GAAG,SAAvCA,oCAAuC,CAC3CC,KAD2C,EAExC;AACH,QAAMC,uBAAuB,GAAGL,0BAA0B,EAA1D;AAEA,WAAO,gCAAC,SAAD,gCAAgBI,KAAhB,EAAkDC,uBAAlD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAP;AACD,GAND;;AAOAF,EAAAA,oCAAoC,CAACG,WAArC,mCAAiF,oCAC/EJ,SAD+E,CAAjF;AAGA,SAAOC,oCAAP;AACD,CAhBM","sourcesContent":["import React, { PropsWithChildren, useContext, useEffect, useState } from 'react';\n\nimport type { Asset, DefaultStreamChatGenerics, File } from '../../types/types';\nimport { getDisplayName } from '../utils/getDisplayName';\n\nexport type AttachmentPickerIconProps = {\n numberOfImageUploads: number;\n selectedPicker?: 'images';\n};\n\nexport type AttachmentPickerContextValue = {\n /**\n * `bottomInset` determine the height of the `AttachmentPicker` and the underlying shift to the `MessageList` when it is opened.\n * This can also be set via the `setBottomInset` function provided by the `useAttachmentPickerContext` hook.\n *\n * Please check [OverlayProvider](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#overlayprovider) section in Cookbook\n * for more details.\n */\n bottomInset: number;\n /**\n * Custom UI component for [camera selector icon](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png)\n *\n * **Default: ** [CameraSelectorIcon](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/CameraSelectorIcon.tsx)\n */\n CameraSelectorIcon: React.ComponentType<AttachmentPickerIconProps>;\n closePicker: () => void;\n /**\n * Custom UI component for [file selector icon](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png)\n *\n * **Default: ** [FileSelectorIcon](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/FileSelectorIcon.tsx)\n */\n FileSelectorIcon: React.ComponentType<AttachmentPickerIconProps>;\n /**\n * Custom UI component for [image selector icon](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png)\n *\n * **Default: ** [ImageSelectorIcon](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/ImageSelectorIcon.tsx)\n */\n ImageSelectorIcon: React.ComponentType<AttachmentPickerIconProps>;\n /**\n * Limit for maximum files that can be attached per message.\n */\n maxNumberOfFiles: number;\n openPicker: () => void;\n selectedFiles: File[];\n selectedImages: Asset[];\n setBottomInset: React.Dispatch<React.SetStateAction<number>>;\n setMaxNumberOfFiles: React.Dispatch<React.SetStateAction<number>>;\n setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;\n setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;\n setSelectedPicker: React.Dispatch<React.SetStateAction<'images' | undefined>>;\n setTopInset: React.Dispatch<React.SetStateAction<number>>;\n topInset: number;\n attachmentPickerBottomSheetHeight?: number;\n attachmentSelectionBarHeight?: number;\n selectedPicker?: 'images';\n};\n\nexport const AttachmentPickerContext = React.createContext<AttachmentPickerContextValue>(\n {} as AttachmentPickerContextValue,\n);\n\nexport const AttachmentPickerProvider = ({\n children,\n value,\n}: PropsWithChildren<{\n value?: Pick<\n AttachmentPickerContextValue,\n | 'attachmentSelectionBarHeight'\n | 'attachmentPickerBottomSheetHeight'\n | 'CameraSelectorIcon'\n | 'closePicker'\n | 'FileSelectorIcon'\n | 'ImageSelectorIcon'\n | 'openPicker'\n > &\n Partial<Pick<AttachmentPickerContextValue, 'bottomInset' | 'topInset'>>;\n}>) => {\n const bottomInsetValue = value?.bottomInset;\n const topInsetValue = value?.topInset;\n\n const [bottomInset, setBottomInset] = useState<number>(bottomInsetValue ?? 0);\n const [maxNumberOfFiles, setMaxNumberOfFiles] = useState(10);\n const [selectedImages, setSelectedImages] = useState<Asset[]>([]);\n const [selectedFiles, setSelectedFiles] = useState<File[]>([]);\n const [selectedPicker, setSelectedPicker] = useState<'images'>();\n const [topInset, setTopInset] = useState<number>(value?.topInset ?? 0);\n\n useEffect(() => {\n setBottomInset(bottomInsetValue ?? 0);\n }, [bottomInsetValue]);\n\n useEffect(() => {\n setTopInset(topInsetValue ?? 0);\n }, [topInsetValue]);\n\n const combinedValue = {\n maxNumberOfFiles,\n selectedFiles,\n selectedImages,\n selectedPicker,\n setBottomInset,\n setMaxNumberOfFiles,\n setSelectedFiles,\n setSelectedImages,\n setSelectedPicker,\n setTopInset,\n ...value,\n bottomInset,\n topInset,\n };\n\n return (\n <AttachmentPickerContext.Provider\n value={combinedValue as unknown as AttachmentPickerContextValue}\n >\n {children}\n </AttachmentPickerContext.Provider>\n );\n};\n\nexport const useAttachmentPickerContext = () =>\n useContext(AttachmentPickerContext) as unknown as AttachmentPickerContextValue;\n\nexport const withAttachmentPickerContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<StreamChatGenerics>,\n): React.FC<Omit<StreamChatGenerics, keyof AttachmentPickerContextValue>> => {\n const WithAttachmentPickerContextComponent = (\n props: Omit<StreamChatGenerics, keyof AttachmentPickerContextValue>,\n ) => {\n const attachmentPickerContext = useAttachmentPickerContext();\n\n return <Component {...(props as StreamChatGenerics)} {...attachmentPickerContext} />;\n };\n WithAttachmentPickerContextComponent.displayName = `WithAttachmentPickerContext${getDisplayName(\n Component as React.ComponentType,\n )}`;\n return WithAttachmentPickerContextComponent;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ChannelContext.tsx"],"names":["ChannelContext","React","createContext","ChannelProvider","children","value","useChannelContext","withChannelContext","Component","WithChannelContextComponent","props","channelContext","displayName"],"mappings":";;;;;;;;;;;AAAA;;AAOA;;;;;;;;;AAkKO,IAAMA,cAAc,GAAGC,kBAAMC,aAAN,CAAoB,EAApB,CAAvB;;;;AAEA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB;AAAA,MAG7BC,QAH6B,QAG7BA,QAH6B;AAAA,MAI7BC,KAJ6B,QAI7BA,KAJ6B;AAAA,SAQ7B,gCAAC,cAAD,CAAgB,QAAhB;AAAyB,IAAA,KAAK,EAAEA,KAAhC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGD,QADH,CAR6B;AAAA,CAAxB;;;;AAaA,IAAME,iBAAiB,GAAG,SAApBA,iBAAoB;AAAA,SAE1B,uBAAWN,cAAX,CAF0B;AAAA,CAA1B;;;;AASA,IAAMO,kBAAkB,GAAG,SAArBA,kBAAqB,CAIhCC,SAJgC,EAKqC;AACrE,MAAMC,2BAA2B,GAAG,SAA9BA,2BAA8B,CAClCC,KADkC,EAE/B;AACH,QAAMC,cAAc,GAAGL,iBAAiB,EAAxC;AAEA,WAAO,gCAAC,SAAD,gCAAgBI,KAAhB,EAAiCC,cAAjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAP;AACD,GAND;;AAOAF,EAAAA,2BAA2B,CAACG,WAA5B,0BAA+D,oCAAeJ,SAAf,CAA/D;AACA,SAAOC,2BAAP;AACD,CAfM","sourcesContent":["import React, { PropsWithChildren, useContext } from 'react';\n\nimport type { Channel, ChannelState } from 'stream-chat';\n\nimport type { EmptyStateProps } from '../../components/Indicators/EmptyStateIndicator';\nimport type { LoadingProps } from '../../components/Indicators/LoadingIndicator';\nimport type { DefaultStreamChatGenerics, UnknownType } from '../../types/types';\nimport { getDisplayName } from '../utils/getDisplayName';\n\nexport type ChannelContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Instance of channel object from stream-chat package.\n *\n * Please check the docs around how to create or query channel - https://getstream.io/chat/docs/javascript/creating_channels/?language=javascript\n *\n * ```\n * import { StreamChat, Channel } from 'stream-chat';\n * import { Chat, Channel} from 'stream-chat-react-native';\n *\n * const client = StreamChat.getInstance('api_key');\n * await client.connectUser('user_id', 'user_token');\n * const channel = client.channel('messaging', 'channel_id');\n * await channel.watch();\n *\n * <Chat client={client}>\n * <Channel channel={channel}>\n * </Channel>\n * </Chat>\n * ```\n *\n * @overrideType Channel\n */\n channel: Channel<StreamChatGenerics>;\n /**\n * Custom UI component to display empty state when channel has no messages.\n *\n * **Default** [EmptyStateIndicator](https://github.com/GetStream/stream-chat-react-native/blob/
|
|
1
|
+
{"version":3,"sources":["ChannelContext.tsx"],"names":["ChannelContext","React","createContext","ChannelProvider","children","value","useChannelContext","withChannelContext","Component","WithChannelContextComponent","props","channelContext","displayName"],"mappings":";;;;;;;;;;;AAAA;;AAOA;;;;;;;;;AAkKO,IAAMA,cAAc,GAAGC,kBAAMC,aAAN,CAAoB,EAApB,CAAvB;;;;AAEA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB;AAAA,MAG7BC,QAH6B,QAG7BA,QAH6B;AAAA,MAI7BC,KAJ6B,QAI7BA,KAJ6B;AAAA,SAQ7B,gCAAC,cAAD,CAAgB,QAAhB;AAAyB,IAAA,KAAK,EAAEA,KAAhC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGD,QADH,CAR6B;AAAA,CAAxB;;;;AAaA,IAAME,iBAAiB,GAAG,SAApBA,iBAAoB;AAAA,SAE1B,uBAAWN,cAAX,CAF0B;AAAA,CAA1B;;;;AASA,IAAMO,kBAAkB,GAAG,SAArBA,kBAAqB,CAIhCC,SAJgC,EAKqC;AACrE,MAAMC,2BAA2B,GAAG,SAA9BA,2BAA8B,CAClCC,KADkC,EAE/B;AACH,QAAMC,cAAc,GAAGL,iBAAiB,EAAxC;AAEA,WAAO,gCAAC,SAAD,gCAAgBI,KAAhB,EAAiCC,cAAjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAP;AACD,GAND;;AAOAF,EAAAA,2BAA2B,CAACG,WAA5B,0BAA+D,oCAAeJ,SAAf,CAA/D;AACA,SAAOC,2BAAP;AACD,CAfM","sourcesContent":["import React, { PropsWithChildren, useContext } from 'react';\n\nimport type { Channel, ChannelState } from 'stream-chat';\n\nimport type { EmptyStateProps } from '../../components/Indicators/EmptyStateIndicator';\nimport type { LoadingProps } from '../../components/Indicators/LoadingIndicator';\nimport type { DefaultStreamChatGenerics, UnknownType } from '../../types/types';\nimport { getDisplayName } from '../utils/getDisplayName';\n\nexport type ChannelContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Instance of channel object from stream-chat package.\n *\n * Please check the docs around how to create or query channel - https://getstream.io/chat/docs/javascript/creating_channels/?language=javascript\n *\n * ```\n * import { StreamChat, Channel } from 'stream-chat';\n * import { Chat, Channel} from 'stream-chat-react-native';\n *\n * const client = StreamChat.getInstance('api_key');\n * await client.connectUser('user_id', 'user_token');\n * const channel = client.channel('messaging', 'channel_id');\n * await channel.watch();\n *\n * <Chat client={client}>\n * <Channel channel={channel}>\n * </Channel>\n * </Chat>\n * ```\n *\n * @overrideType Channel\n */\n channel: Channel<StreamChatGenerics>;\n /**\n * Custom UI component to display empty state when channel has no messages.\n *\n * **Default** [EmptyStateIndicator](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Indicators/EmptyStateIndicator.tsx)\n */\n EmptyStateIndicator: React.ComponentType<EmptyStateProps>;\n /**\n * When set to true, reactions will be limited to 1 per user. If user selects another reaction\n * then his previous reaction will be removed and replaced with new one.\n *\n * This is similar to reaction UX on [iMessage application](https://en.wikipedia.org/wiki/IMessage).\n */\n enforceUniqueReaction: boolean;\n error: boolean | Error;\n /**\n * When set to false, it will disable giphy command on MessageInput component.\n */\n giphyEnabled: boolean;\n /**\n * Hide inline date separators on channel\n */\n hideDateSeparators: boolean;\n hideStickyDateHeader: boolean;\n /**\n * Returns true if the current user has admin privileges\n */\n isAdmin: boolean;\n /**\n * Returns true if the current user is a moderator\n */\n isModerator: boolean;\n /**\n * Returns true if the current user is a owner\n */\n isOwner: boolean;\n loadChannelAtMessage: ({\n after,\n before,\n messageId,\n }: {\n after?: number;\n before?: number;\n messageId?: string;\n }) => Promise<void>;\n loading: boolean;\n /**\n * Custom loading indicator to override the Stream default\n */\n LoadingIndicator: React.ComponentType<LoadingProps>;\n markRead: () => void;\n /**\n *\n * ```json\n * {\n * \"thierry-123\": {\n * \"id\": \"thierry-123\",\n * \"role\": \"user\",\n * \"created_at\": \"2019-04-03T14:42:47.087869Z\",\n * \"updated_at\": \"2019-04-16T09:20:03.982283Z\",\n * \"last_active\": \"2019-04-16T11:23:51.168113408+02:00\",\n * \"online\": true\n * },\n * \"vishal-123\": {\n * \"id\": \"vishal-123\",\n * \"role\": \"user\",\n * \"created_at\": \"2019-05-03T14:42:47.087869Z\",\n * \"updated_at\": \"2019-05-16T09:20:03.982283Z\",\n * \"last_active\": \"2019-06-16T11:23:51.168113408+02:00\",\n * \"online\": false\n * }\n * }\n * ```\n */\n members: ChannelState<StreamChatGenerics>['members'];\n /**\n * Custom network down indicator to override the Stream default\n */\n NetworkDownIndicator: React.ComponentType;\n read: ChannelState<StreamChatGenerics>['read'];\n reloadChannel: () => Promise<void>;\n /**\n * When true, messagelist will be scrolled to first unread message, when opened.\n */\n scrollToFirstUnreadThreshold: number;\n setLastRead: React.Dispatch<React.SetStateAction<Date | undefined>>;\n setTargetedMessage: (messageId: string) => void;\n /**\n *\n * ```json\n * {\n * \"thierry-123\": {\n * \"id\": \"thierry-123\",\n * \"role\": \"user\",\n * \"created_at\": \"2019-04-03T14:42:47.087869Z\",\n * \"updated_at\": \"2019-04-16T09:20:03.982283Z\",\n * \"last_active\": \"2019-04-16T11:23:51.168113408+02:00\",\n * \"online\": true\n * },\n * \"vishal-123\": {\n * \"id\": \"vishal-123\",\n * \"role\": \"user\",\n * \"created_at\": \"2019-05-03T14:42:47.087869Z\",\n * \"updated_at\": \"2019-05-16T09:20:03.982283Z\",\n * \"last_active\": \"2019-06-16T11:23:51.168113408+02:00\",\n * \"online\": false\n * }\n * }\n * ```\n */\n watchers: ChannelState<StreamChatGenerics>['watchers'];\n disabled?: boolean;\n enableMessageGroupingByUser?: boolean;\n isChannelActive?: boolean;\n lastRead?: Date;\n /**\n * Maximum time in milliseconds that should occur between messages\n * to still consider them grouped together\n */\n maxTimeBetweenGroupedMessages?: number;\n /**\n * Custom UI component for sticky header of channel.\n *\n * **Default** [DateHeader](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageList/DateHeader.tsx)\n */\n StickyHeader?: React.ComponentType<{ dateString: string }>;\n /**\n * Id of message, around which Channel/MessageList gets loaded when opened.\n * You will see a highlighted background for targetted message, when opened.\n */\n targetedMessage?: string;\n threadList?: boolean;\n watcherCount?: ChannelState<StreamChatGenerics>['watcher_count'];\n};\n\nexport const ChannelContext = React.createContext({} as ChannelContextValue);\n\nexport const ChannelProvider = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n children,\n value,\n}: PropsWithChildren<{\n value: ChannelContextValue<StreamChatGenerics>;\n}>) => (\n <ChannelContext.Provider value={value as unknown as ChannelContextValue}>\n {children}\n </ChannelContext.Provider>\n);\n\nexport const useChannelContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => useContext(ChannelContext) as unknown as ChannelContextValue<StreamChatGenerics>;\n\n/**\n * Typescript currently does not support partial inference so if ChatContext\n * typing is desired while using the HOC withChannelContext the Props for the\n * wrapped component must be provided as the first generic.\n */\nexport const withChannelContext = <\n P extends UnknownType,\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<P>,\n): React.FC<Omit<P, keyof ChannelContextValue<StreamChatGenerics>>> => {\n const WithChannelContextComponent = (\n props: Omit<P, keyof ChannelContextValue<StreamChatGenerics>>,\n ) => {\n const channelContext = useChannelContext<StreamChatGenerics>();\n\n return <Component {...(props as P)} {...channelContext} />;\n };\n WithChannelContextComponent.displayName = `WithChannelContext${getDisplayName(Component)}`;\n return WithChannelContextComponent;\n};\n"]}
|