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":["MessageContent.tsx"],"names":["styles","StyleSheet","create","containerInner","borderTopLeftRadius","borderTopRightRadius","borderWidth","overflow","leftAlignContent","justifyContent","leftAlignItems","alignItems","replyBorder","borderLeftWidth","bottom","position","replyContainer","flexDirection","paddingHorizontal","paddingTop","rightAlignContent","rightAlignItems","MessageContentWithContext","props","additionalTouchableProps","alignment","Attachment","disabled","FileAttachmentGroup","formatDate","Gallery","groupStyles","hasReactions","isMyMessage","lastGroupMessage","members","message","messageContentOrder","MessageDeleted","MessageFooter","MessageHeader","MessageReplies","MessageStatus","onLongPress","onlyEmojis","onPress","onPressIn","otherAttachments","preventPress","Reply","setMessageContentWidth","showMessageStatus","tDateTimeParser","threadList","theme","colors","accent_red","blue_alice","grey_gainsboro","grey_whisper","transparent","white","messageSimple","content","container","borderRadiusL","borderRadiusS","errorContainer","errorIcon","errorIconContainer","wrapper","reactionList","radius","reactionSize","getDateText","formatter","created_at","parserOutput","format","onLayout","width","nativeEvent","layout","error","type","status","MessageStatusTypes","FAILED","groupStyle","toLowerCase","hasThreadReplies","reply_count","noBorder","quoted_message","length","isMessageTypeDeleted","backgroundColor","repliesCurveColor","event","emitter","borderColor","height","left","undefined","right","borderBottomLeftRadius","borderBottomRightRadius","map","messageContentType","messageContentOrderIndex","messageContainer","maxWidth","attachment","attachmentIndex","id","actions","absoluteFill","areEqual","prevProps","nextProps","prevGoToMessage","goToMessage","prevGroupStyles","prevHasReactions","isAttachmentEqual","prevLastGroupMessage","prevMembers","prevMessage","prevMessageContentOrder","prevOnlyEmojis","prevOtherAttachments","prevT","t","prevTDateTimeParser","nextGoToMessage","nextGroupStyles","nextHasReactions","nextLastGroupMessage","nextMembers","nextMessage","nextMessageContentOrder","nextOnlyEmojis","nextOtherAttachments","nextT","nextTDateTimeParser","hasReactionsEqual","lastGroupMessageEqual","goToMessageChangedAndMatters","quoted_message_id","onlyEmojisEqual","otherAttachmentsEqual","membersEqual","Object","keys","groupStylesEqual","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","text","pinned","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","prevMessageAttachments","attachments","nextMessageAttachments","attachmentsEqual","Array","isArray","every","index","attachmentKeysEqual","image_url","og_scrape_url","thumb_url","latestReactionsEqual","latest_reactions","messageContentOrderEqual","tEqual","tDateTimeParserEqual","MemoizedMessageContent","React","memo","MessageContent","lastReceivedId","displayName"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AAIA;;AAIA;;AACA;;AAOA;;AAEA;;;;;;;AAEA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,cAAc,EAAE;AACdC,IAAAA,mBAAmB,EAAE,EADP;AAEdC,IAAAA,oBAAoB,EAAE,EAFR;AAGdC,IAAAA,WAAW,EAAE,CAHC;AAIdC,IAAAA,QAAQ,EAAE;AAJI,GADe;AAO/BC,EAAAA,gBAAgB,EAAE;AAChBC,IAAAA,cAAc,EAAE;AADA,GAPa;AAU/BC,EAAAA,cAAc,EAAE;AACdC,IAAAA,UAAU,EAAE;AADE,GAVe;AAa/BC,EAAAA,WAAW,EAAE;AACXC,IAAAA,eAAe,EAAE,CADN;AAEXC,IAAAA,MAAM,EAAE,CAFG;AAGXC,IAAAA,QAAQ,EAAE;AAHC,GAbkB;AAkB/BC,EAAAA,cAAc,EAAE;AACdC,IAAAA,aAAa,EAAE,KADD;AAEdC,IAAAA,iBAAiB,EAAE,CAFL;AAGdC,IAAAA,UAAU,EAAE;AAHE,GAlBe;AAuB/BC,EAAAA,iBAAiB,EAAE;AACjBX,IAAAA,cAAc,EAAE;AADC,GAvBY;AA0B/BY,EAAAA,eAAe,EAAE;AACfV,IAAAA,UAAU,EAAE;AADG;AA1Bc,CAAlB,CAAf;;AA6EA,IAAMW,yBAAyB,GAAG,SAA5BA,yBAA4B,CAGhCC,KAHgC,EAI7B;AAAA;;AACH,MACEC,wBADF,GA+BID,KA/BJ,CACEC,wBADF;AAAA,MAEEC,SAFF,GA+BIF,KA/BJ,CAEEE,SAFF;AAAA,MAGEC,UAHF,GA+BIH,KA/BJ,CAGEG,UAHF;AAAA,MAIEC,QAJF,GA+BIJ,KA/BJ,CAIEI,QAJF;AAAA,MAKEC,mBALF,GA+BIL,KA/BJ,CAKEK,mBALF;AAAA,MAMEC,UANF,GA+BIN,KA/BJ,CAMEM,UANF;AAAA,MAOEC,OAPF,GA+BIP,KA/BJ,CAOEO,OAPF;AAAA,MAQEC,WARF,GA+BIR,KA/BJ,CAQEQ,WARF;AAAA,MASEC,YATF,GA+BIT,KA/BJ,CASES,YATF;AAAA,MAUEC,WAVF,GA+BIV,KA/BJ,CAUEU,WAVF;AAAA,MAWEC,gBAXF,GA+BIX,KA/BJ,CAWEW,gBAXF;AAAA,MAYEC,OAZF,GA+BIZ,KA/BJ,CAYEY,OAZF;AAAA,MAaEC,OAbF,GA+BIb,KA/BJ,CAaEa,OAbF;AAAA,MAcEC,mBAdF,GA+BId,KA/BJ,CAcEc,mBAdF;AAAA,MAeEC,cAfF,GA+BIf,KA/BJ,CAeEe,cAfF;AAAA,MAgBEC,aAhBF,GA+BIhB,KA/BJ,CAgBEgB,aAhBF;AAAA,MAiBEC,aAjBF,GA+BIjB,KA/BJ,CAiBEiB,aAjBF;AAAA,MAkBEC,cAlBF,GA+BIlB,KA/BJ,CAkBEkB,cAlBF;AAAA,MAmBEC,aAnBF,GA+BInB,KA/BJ,CAmBEmB,aAnBF;AAAA,MAoBEC,YApBF,GA+BIpB,KA/BJ,CAoBEoB,WApBF;AAAA,MAqBEC,UArBF,GA+BIrB,KA/BJ,CAqBEqB,UArBF;AAAA,MAsBEC,QAtBF,GA+BItB,KA/BJ,CAsBEsB,OAtBF;AAAA,MAuBEC,UAvBF,GA+BIvB,KA/BJ,CAuBEuB,SAvBF;AAAA,MAwBEC,gBAxBF,GA+BIxB,KA/BJ,CAwBEwB,gBAxBF;AAAA,MAyBEC,YAzBF,GA+BIzB,KA/BJ,CAyBEyB,YAzBF;AAAA,MA0BEC,KA1BF,GA+BI1B,KA/BJ,CA0BE0B,KA1BF;AAAA,MA2BEC,sBA3BF,GA+BI3B,KA/BJ,CA2BE2B,sBA3BF;AAAA,MA4BEC,iBA5BF,GA+BI5B,KA/BJ,CA4BE4B,iBA5BF;AAAA,MA6BEC,eA7BF,GA+BI7B,KA/BJ,CA6BE6B,eA7BF;AAAA,MA8BEC,UA9BF,GA+BI9B,KA/BJ,CA8BE8B,UA9BF;;AAiCA,kBAiBI,6BAjBJ;AAAA,kCACEC,KADF;AAAA,8CAEIC,MAFJ;AAAA,MAEcC,UAFd,yBAEcA,UAFd;AAAA,MAE0BC,UAF1B,yBAE0BA,UAF1B;AAAA,MAEsCC,cAFtC,yBAEsCA,cAFtC;AAAA,MAEsDC,YAFtD,yBAEsDA,YAFtD;AAAA,MAEoEC,WAFpE,yBAEoEA,WAFpE;AAAA,MAEiFC,KAFjF,yBAEiFA,KAFjF;AAAA,8CAGIC,aAHJ;AAAA,qDAIMC,OAJN;AAAA,sDAKQC,SALR;AAAA,MAKqBC,aALrB,0BAKqBA,aALrB;AAAA,MAKoCC,aALpC,0BAKoCA,aALpC;AAAA,MAKsDF,SALtD;AAAA,MAMQ7D,cANR,0BAMQA,cANR;AAAA,MAOQgE,cAPR,0BAOQA,cAPR;AAAA,MAQQC,SARR,0BAQQA,SARR;AAAA,MASQC,kBATR,0BASQA,kBATR;AAAA,MAUQzD,WAVR,0BAUQA,WAVR;AAAA,MAWQI,cAXR,0BAWQA,cAXR;AAAA,MAYQsD,OAZR,0BAYQA,OAZR;AAAA,qDAcMC,YAdN;AAAA,MAcsBC,MAdtB,0BAcsBA,MAdtB;AAAA,MAc8BC,YAd9B,0BAc8BA,YAd9B;;AAmBA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,SAAD,EAAwD;AAC1E,QAAI,CAACvC,OAAO,CAACwC,UAAb,EAAyB,OAAO,EAAP;;AAEzB,QAAID,SAAJ,EAAe;AACb,aAAOA,SAAS,CAACvC,OAAO,CAACwC,UAAT,CAAhB;AACD;;AAED,QAAMC,YAAY,GAAGzB,eAAe,CAAChB,OAAO,CAACwC,UAAT,CAApC;;AAEA,QAAI,uCAAcC,YAAd,CAAJ,EAAiC;AAC/B,aAAOA,YAAY,CAACC,MAAb,CAAoB,IAApB,CAAP;AACD;;AACD,WAAO1C,OAAO,CAACwC,UAAf;AACD,GAbD;;AAeA,MAAMG,QAA4C,GAAG,SAA/CA,QAA+C,OAI/C;AAAA,QAFQC,KAER,QAHJC,WAGI,CAFFC,MAEE,CAFQF,KAER;AACJ9B,IAAAA,sBAAsB,CAAC8B,KAAD,CAAtB;AACD,GAND;;AAQA,MAAMG,KAAK,GAAG/C,OAAO,CAACgD,IAAR,KAAiB,OAAjB,IAA4BhD,OAAO,CAACiD,MAAR,KAAmBC,0BAAmBC,MAAhF;AAEA,MAAMC,UAAU,GAAM/D,SAAN,UAAmBM,WAAnB,qCAAmBA,WAAW,CAAG,CAAH,CAA9B,qBAAmB,cAAkB0D,WAArC,oBAAmB,cAAkBA,WAAlB,EAAnB,CAAhB;AAEA,MAAMC,gBAAgB,GAAG,CAAC,EAACtD,OAAD,YAACA,OAAO,CAAEuD,WAAV,CAA1B;AAEA,MAAIC,QAAQ,GAAGhD,UAAU,IAAI,CAACR,OAAO,CAACyD,cAAtC;;AACA,MAAI9C,gBAAgB,CAAC+C,MAArB,EAA6B;AAC3B,QAAI/C,gBAAgB,CAAC,CAAD,CAAhB,CAAoBqC,IAApB,KAA6B,OAA7B,IAAwC,CAACnD,WAA7C,EAA0D;AACxD2D,MAAAA,QAAQ,GAAG,KAAX;AACD,KAFD,MAEO;AACLA,MAAAA,QAAQ,GAAG,IAAX;AACD;AACF;;AAED,MAAMG,oBAAoB,GAAG3D,OAAO,CAACgD,IAAR,KAAiB,SAA9C;;AAEA,MAAIW,oBAAJ,EAA0B;AACxB,WACE,gCAAC,cAAD;AACE,MAAA,aAAa,EAAErB,WAAW,CAAC7C,UAAD,CAD5B;AAEE,MAAA,UAAU,EAAE2D,UAFd;AAGE,MAAA,QAAQ,EAAEI,QAHZ;AAIE,MAAA,QAAQ,EAAEb,QAJZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MADF;AAQD;;AAED,MAAIiB,eAAe,GAAGtC,cAAtB;;AACA,MAAId,UAAU,IAAI,CAACR,OAAO,CAACyD,cAA3B,EAA2C;AACzCG,IAAAA,eAAe,GAAGpC,WAAlB;AACD,GAFD,MAEO,IAAIb,gBAAgB,CAAC+C,MAArB,EAA6B;AAClC,QAAI/C,gBAAgB,CAAC,CAAD,CAAhB,CAAoBqC,IAApB,KAA6B,OAAjC,EAA0C;AACxCY,MAAAA,eAAe,GAAG5D,OAAO,CAACyD,cAAR,GAAyBnC,cAAzB,GAA0CE,WAA5D;AACD,KAFD,MAEO;AACLoC,MAAAA,eAAe,GAAGvC,UAAlB;AACD;AACF,GANM,MAMA,IAAIhC,SAAS,KAAK,MAAd,IAAwB0D,KAA5B,EAAmC;AACxCa,IAAAA,eAAe,GAAGnC,KAAlB;AACD;;AAED,MAAMoC,iBAAiB,GAAGhE,WAAW,IAAI,CAACkD,KAAhB,GAAwBa,eAAxB,GAA0CrC,YAApE;AAEA,SACE,gCAAC,6BAAD;AACE,IAAA,aAAa,EAAE,GADjB;AAEE,IAAA,QAAQ,EAAEhC,QAAQ,IAAIqB,YAFxB;AAGE,IAAA,WAAW,EAAE,qBAACkD,KAAD,EAAW;AACtB,UAAIvD,YAAJ,EAAiB;AACfA,QAAAA,YAAW,CAAC;AACVwD,UAAAA,OAAO,EAAE,gBADC;AAEVD,UAAAA,KAAK,EAALA;AAFU,SAAD,CAAX;AAID;AACF,KAVH;AAWE,IAAA,OAAO,EAAE,iBAACA,KAAD,EAAW;AAClB,UAAIrD,QAAJ,EAAa;AACXA,QAAAA,QAAO,CAAC;AACNsD,UAAAA,OAAO,EAAE,gBADH;AAEND,UAAAA,KAAK,EAALA;AAFM,SAAD,CAAP;AAID;AACF,KAlBH;AAmBE,IAAA,SAAS,EAAE,mBAACA,KAAD,EAAW;AACpB,UAAIpD,UAAJ,EAAe;AACbA,QAAAA,UAAS,CAAC;AACRqD,UAAAA,OAAO,EAAE,gBADD;AAERD,UAAAA,KAAK,EAALA;AAFQ,SAAD,CAAT;AAID;AACF,KA1BH;AA2BE,IAAA,MAAM,EAAC;AA3BT,KA4BM1E,wBA5BN;AAiCE,IAAA,KAAK,EAAE,CACLC,SAAS,KAAK,MAAd,GAAuBzB,MAAM,CAACU,cAA9B,GAA+CV,MAAM,CAACqB,eADjD,EAEL;AAAEF,MAAAA,UAAU,EAAEa,YAAY,GAAGyC,YAAY,GAAG,CAAf,GAAmBD,MAAtB,GAA+B;AAAzD,KAFK,EAGLW,KAAK,GAAGhB,cAAH,GAAoB,EAHpB,EAILH,SAJK,CAjCT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAwCGxB,aAAa,IACZ,gCAAC,aAAD;AACE,IAAA,SAAS,EAAEf,SADb;AAEE,IAAA,aAAa,EAAEiD,WAAW,CAAC7C,UAAD,CAF5B;AAGE,IAAA,SAAS,EAAE,CAAC,CAACkE,oBAHf;AAIE,IAAA,gBAAgB,EAAE7D,gBAJpB;AAKE,IAAA,OAAO,EAAEC,OALX;AAME,IAAA,OAAO,EAAEC,OANX;AAOE,IAAA,aAAa,EAAEM,aAPjB;AAQE,IAAA,gBAAgB,EAAEK,gBARpB;AASE,IAAA,iBAAiB,EAAEI,iBATrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAzCJ,EAqDE,gCAAC,iBAAD;AAAM,IAAA,QAAQ,EAAE4B,QAAhB;AAA0B,IAAA,KAAK,EAAET,OAAjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGoB,gBAAgB,IAAI,CAACrC,UAArB,IAAmC,CAACuC,QAApC,IACC,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACL5F,MAAM,CAACY,WADF,EAEL;AACEwF,MAAAA,WAAW,EAAEH,iBADf;AAEEI,MAAAA,MAAM,EAAEpC,aAFV;AAGEqC,MAAAA,IAAI,EAAE7E,SAAS,KAAK,MAAd,GAAuB,CAAvB,GAA2B8E,SAHnC;AAIEC,MAAAA,KAAK,EAAE/E,SAAS,KAAK,OAAd,GAAwB,CAAxB,GAA4B8E;AAJrC,KAFK,EAQL3F,WARK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAFJ,EAeE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLZ,MAAM,CAACG,cADF,EAEL;AACE6F,MAAAA,eAAe,EAAfA,eADF;AAEES,MAAAA,sBAAsB,EACpB,CAACjB,UAAU,KAAK,aAAf,IAAgCA,UAAU,KAAK,aAAhD,MACC,CAACE,gBAAD,IAAqBrC,UADtB,IAEIa,aAFJ,GAGID,aANR;AAOEyC,MAAAA,uBAAuB,EACrB,CAAClB,UAAU,KAAK,cAAf,IAAiCA,UAAU,KAAK,cAAjD,MACC,CAACE,gBAAD,IAAqBrC,UADtB,IAEIa,aAFJ,GAGID,aAXR;AAYEmC,MAAAA,WAAW,EAAEnE,WAAW,IAAI,CAACkD,KAAhB,GAAwBa,eAAxB,GAA0CrC;AAZzD,KAFK,EAgBLiC,QAAQ,GAAG;AAAEtF,MAAAA,WAAW,EAAE;AAAf,KAAH,GAAwB,EAhB3B,EAiBLH,cAjBK,CADT;AAoBE,IAAA,MAAM,EAAC,yBApBT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAsBGkC,mBAAmB,CAACsE,GAApB,CAAwB,UAACC,kBAAD,EAAqBC,wBAArB,EAAkD;AACzE,YAAQD,kBAAR;AACE,WAAK,cAAL;AACE,eACExE,OAAO,CAACyD,cAAR,IACE,gCAAC,iBAAD;AACE,UAAA,GAAG,oBAAkBgB,wBADvB;AAEE,UAAA,KAAK,EAAE,CAAC7G,MAAM,CAACgB,cAAR,EAAwBA,cAAxB,CAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAIE,gCAAC,KAAD;AAAO,UAAA,MAAM,EAAE;AAAE8F,YAAAA,gBAAgB,EAAE;AAAEC,cAAAA,QAAQ,EAAE,eAAG,EAAH;AAAZ;AAApB,WAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAJF,CAFJ;;AAUF,WAAK,aAAL;AACE,eAAOhE,gBAAgB,CAAC4D,GAAjB,CAAqB,UAACK,UAAD,EAAaC,eAAb;AAAA,iBAC1B,gCAAC,UAAD;AAAY,YAAA,UAAU,EAAED,UAAxB;AAAoC,YAAA,GAAG,EAAK5E,OAAO,CAAC8E,EAAb,SAAmBD,eAA1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAD0B;AAAA,SAArB,CAAP;;AAGF,WAAK,OAAL;AACE,eACE,gCAAC,mBAAD;AACE,UAAA,GAAG,6BAA2BJ,wBADhC;AAEE,UAAA,SAAS,EAAEzE,OAAO,CAAC8E,EAFrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UADF;;AAMF,WAAK,SAAL;AACE,eAAO,gCAAC,OAAD;AAAS,UAAA,GAAG,eAAaL,wBAAzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAP;;AACF,WAAK,MAAL;AACA;AACE,eAAO9D,gBAAgB,CAAC+C,MAAjB,IAA2B/C,gBAAgB,CAAC,CAAD,CAAhB,CAAoBoE,OAA/C,GAAyD,IAAzD,GACL,gCAAC,0CAAD;AACE,UAAA,GAAG,8BAA4BN,wBADjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UADF;AA3BJ;AAiCD,GAlCA,CAtBH,CAfF,EAyEG1B,KAAK,IACJ,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAElF,wBAAWmH,YAAxB;AAAsC,IAAA,MAAM,EAAC,eAA7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE/C,kBAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,YAAD;AAAO,IAAA,QAAQ,EAAEb;AAAjB,KAAiCY,SAAjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF,CADF,CA1EJ,CArDF,EAsIE,gCAAC,cAAD;AAAgB,IAAA,QAAQ,EAAEwB,QAA1B;AAAoC,IAAA,iBAAiB,EAAEK,iBAAvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAtIF,EAuIE,gCAAC,aAAD;AAAe,IAAA,aAAa,EAAEvB,WAAW,CAAC7C,UAAD,CAAzC;AAAuD,IAAA,SAAS,EAAE,CAAC,CAACkE,oBAApE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAvIF,CADF;AA2ID,CAtQD;;AAwQA,IAAMsB,QAAQ,GAAG,SAAXA,QAAW,CACfC,SADe,EAEfC,SAFe,EAGZ;AAAA;;AACH,MACeC,eADf,GAaIF,SAbJ,CACEG,WADF;AAAA,MAEeC,eAFf,GAaIJ,SAbJ,CAEEvF,WAFF;AAAA,MAGgB4F,gBAHhB,GAaIL,SAbJ,CAGEtF,YAHF;AAAA,MAIE4F,iBAJF,GAaIN,SAbJ,CAIEM,iBAJF;AAAA,MAKoBC,oBALpB,GAaIP,SAbJ,CAKEpF,gBALF;AAAA,MAMW4F,WANX,GAaIR,SAbJ,CAMEnF,OANF;AAAA,MAOW4F,WAPX,GAaIT,SAbJ,CAOElF,OAPF;AAAA,MAQuB4F,uBARvB,GAaIV,SAbJ,CAQEjF,mBARF;AAAA,MASc4F,cATd,GAaIX,SAbJ,CASE1E,UATF;AAAA,MAUoBsF,oBAVpB,GAaIZ,SAbJ,CAUEvE,gBAVF;AAAA,MAWKoF,KAXL,GAaIb,SAbJ,CAWEc,CAXF;AAAA,MAYmBC,mBAZnB,GAaIf,SAbJ,CAYElE,eAZF;AAcA,MACekF,eADf,GAYIf,SAZJ,CACEE,WADF;AAAA,MAEec,eAFf,GAYIhB,SAZJ,CAEExF,WAFF;AAAA,MAGgByG,gBAHhB,GAYIjB,SAZJ,CAGEvF,YAHF;AAAA,MAIoByG,oBAJpB,GAYIlB,SAZJ,CAIErF,gBAJF;AAAA,MAKWwG,WALX,GAYInB,SAZJ,CAKEpF,OALF;AAAA,MAMWwG,WANX,GAYIpB,SAZJ,CAMEnF,OANF;AAAA,MAOuBwG,uBAPvB,GAYIrB,SAZJ,CAOElF,mBAPF;AAAA,MAQcwG,cARd,GAYItB,SAZJ,CAQE3E,UARF;AAAA,MASoBkG,oBATpB,GAYIvB,SAZJ,CASExE,gBATF;AAAA,MAUKgG,KAVL,GAYIxB,SAZJ,CAUEa,CAVF;AAAA,MAWmBY,mBAXnB,GAYIzB,SAZJ,CAWEnE,eAXF;AAcA,MAAM6F,iBAAiB,GAAGtB,gBAAgB,KAAKa,gBAA/C;AACA,MAAI,CAACS,iBAAL,EAAwB,OAAO,KAAP;AAExB,MAAMC,qBAAqB,GAAGrB,oBAAoB,KAAKY,oBAAvD;AACA,MAAI,CAACS,qBAAL,EAA4B,OAAO,KAAP;AAE5B,MAAMC,4BAA4B,GAChCR,WAAW,CAACS,iBAAZ,IAAiC5B,eAAe,KAAKc,eADvD;AAEA,MAAIa,4BAAJ,EAAkC,OAAO,KAAP;AAElC,MAAME,eAAe,GAAGpB,cAAc,KAAKY,cAA3C;AACA,MAAI,CAACQ,eAAL,EAAsB,OAAO,KAAP;AAEtB,MAAMC,qBAAqB,GACzBpB,oBAAoB,CAACpC,MAArB,KAAgCgD,oBAAoB,CAAChD,MAArD,IACA,CAAAoC,oBAAoB,QAApB,qCAAAA,oBAAoB,CAAG,CAAH,CAApB,qEAA2Bf,OAA3B,4CAAoCrB,MAApC,OAA+CgD,oBAA/C,6CAA+CA,oBAAoB,CAAG,CAAH,CAAnE,+CAA+C,sBAA2B3B,OAA1E,qBAA+C,uBAAoCrB,MAAnF,CAFF;AAGA,MAAI,CAACwD,qBAAL,EAA4B,OAAO,KAAP;AAE5B,MAAMC,YAAY,GAAGC,MAAM,CAACC,IAAP,CAAY3B,WAAZ,EAAyBhC,MAAzB,KAAoC0D,MAAM,CAACC,IAAP,CAAYf,WAAZ,EAAyB5C,MAAlF;AACA,MAAI,CAACyD,YAAL,EAAmB,OAAO,KAAP;AAEnB,MAAMG,gBAAgB,GACpBhC,eAAe,CAAC5B,MAAhB,KAA2ByC,eAAe,CAACzC,MAA3C,IACA,CAAA4B,eAAe,QAAf,YAAAA,eAAe,CAAG,CAAH,CAAf,OAAyBa,eAAzB,oBAAyBA,eAAe,CAAG,CAAH,CAAxC,CAFF;AAGA,MAAI,CAACmB,gBAAL,EAAuB,OAAO,KAAP;AAEvB,MAAMC,wBAAwB,GAAG5B,WAAW,CAAC3C,IAAZ,KAAqB,SAAtD;AACA,MAAMwE,wBAAwB,GAAGjB,WAAW,CAACvD,IAAZ,KAAqB,SAAtD;AAEA,MAAMyE,YAAY,GAChBF,wBAAwB,KAAKC,wBAA7B,IACA7B,WAAW,CAACpC,WAAZ,KAA4BgD,WAAW,CAAChD,WADxC,IAEAoC,WAAW,CAAC1C,MAAZ,KAAuBsD,WAAW,CAACtD,MAFnC,IAGA0C,WAAW,CAAC3C,IAAZ,KAAqBuD,WAAW,CAACvD,IAHjC,IAIA2C,WAAW,CAAC+B,IAAZ,KAAqBnB,WAAW,CAACmB,IAJjC,IAKA/B,WAAW,CAACgC,MAAZ,KAAuBpB,WAAW,CAACoB,MANrC;AAOA,MAAI,CAACF,YAAL,EAAmB,OAAO,KAAP;AAEnB,MAAMG,8BAA8B,GAAG,0BAAAjC,WAAW,CAAClC,cAAZ,2CAA4BT,IAA5B,MAAqC,SAA5E;AACA,MAAM6E,8BAA8B,GAAG,0BAAAtB,WAAW,CAAC9C,cAAZ,2CAA4BT,IAA5B,MAAqC,SAA5E;AAEA,MAAM8E,kBAAkB,GACtB,2BAAAnC,WAAW,CAAClC,cAAZ,4CAA4BqB,EAA5B,iCAAmCyB,WAAW,CAAC9C,cAA/C,qBAAmC,uBAA4BqB,EAA/D,KACA8C,8BAA8B,KAAKC,8BAFrC;AAGA,MAAI,CAACC,kBAAL,EAAyB,OAAO,KAAP;AAEzB,MAAMC,sBAAsB,GAAGpC,WAAW,CAACqC,WAA3C;AACA,MAAMC,sBAAsB,GAAG1B,WAAW,CAACyB,WAA3C;AACA,MAAME,gBAAgB,GACpBC,KAAK,CAACC,OAAN,CAAcL,sBAAd,KAAyCI,KAAK,CAACC,OAAN,CAAcH,sBAAd,CAAzC,GACIF,sBAAsB,CAACrE,MAAvB,KAAkCuE,sBAAsB,CAACvE,MAAzD,IACAqE,sBAAsB,CAACM,KAAvB,CAA6B,UAACzD,UAAD,EAAa0D,KAAb,EAAuB;AAClD,QAAMC,mBAAmB,GACvB3D,UAAU,CAAC4D,SAAX,KAAyBP,sBAAsB,CAACK,KAAD,CAAtB,CAA8BE,SAAvD,IACA5D,UAAU,CAAC6D,aAAX,KAA6BR,sBAAsB,CAACK,KAAD,CAAtB,CAA8BG,aAD3D,IAEA7D,UAAU,CAAC8D,SAAX,KAAyBT,sBAAsB,CAACK,KAAD,CAAtB,CAA8BI,SAHzD;AAKA,QAAIlD,iBAAJ,EACE,OACE+C,mBAAmB,IAAI,CAAC,CAAC/C,iBAAiB,CAACZ,UAAD,EAAaqD,sBAAsB,CAACK,KAAD,CAAnC,CAD5C;AAIF,WAAOC,mBAAP;AACD,GAZD,CAFJ,GAeIR,sBAAsB,KAAKE,sBAhBjC;AAiBA,MAAI,CAACC,gBAAL,EAAuB,OAAO,KAAP;AAEvB,MAAMS,oBAAoB,GACxBR,KAAK,CAACC,OAAN,CAAczC,WAAW,CAACiD,gBAA1B,KAA+CT,KAAK,CAACC,OAAN,CAAc7B,WAAW,CAACqC,gBAA1B,CAA/C,GACIjD,WAAW,CAACiD,gBAAZ,CAA6BlF,MAA7B,KAAwC6C,WAAW,CAACqC,gBAAZ,CAA6BlF,MAArE,IACAiC,WAAW,CAACiD,gBAAZ,CAA6BP,KAA7B,CACE,iBAAWC,KAAX;AAAA;;AAAA,QAAGtF,IAAH,SAAGA,IAAH;AAAA,WAAqBA,IAAI,+BAAKuD,WAAW,CAACqC,gBAAjB,qBAAK,sBAA+BN,KAA/B,EAAsCtF,IAA3C,CAAzB;AAAA,GADF,CAFJ,GAKI2C,WAAW,CAACiD,gBAAZ,KAAiCrC,WAAW,CAACqC,gBANnD;AAOA,MAAI,CAACD,oBAAL,EAA2B,OAAO,KAAP;AAE3B,MAAME,wBAAwB,GAC5BjD,uBAAuB,CAAClC,MAAxB,KAAmC8C,uBAAuB,CAAC9C,MAA3D,IACAkC,uBAAuB,CAACyC,KAAxB,CACE,UAAC7D,kBAAD,EAAqB8D,KAArB;AAAA,WAA+B9D,kBAAkB,KAAKgC,uBAAuB,CAAC8B,KAAD,CAA7E;AAAA,GADF,CAFF;AAKA,MAAI,CAACO,wBAAL,EAA+B,OAAO,KAAP;AAE/B,MAAMC,MAAM,GAAG/C,KAAK,KAAKY,KAAzB;AACA,MAAI,CAACmC,MAAL,EAAa,OAAO,KAAP;AAEb,MAAMC,oBAAoB,GAAG9C,mBAAmB,KAAKW,mBAArD;AACA,MAAI,CAACmC,oBAAL,EAA2B,OAAO,KAAP;AAE3B,SAAO,IAAP;AACD,CA1HD;;AA4HA,IAAMC,sBAAsB,GAAGC,kBAAMC,IAAN,CAC7BhK,yBAD6B,EAE7B+F,QAF6B,CAA/B;;AAaO,IAAMkE,cAAc,GAAG,SAAjBA,cAAiB,CAG5BhK,KAH4B,EAIzB;AACH,2BAoBI,wCApBJ;AAAA,MACEE,SADF,sBACEA,SADF;AAAA,MAEEE,QAFF,sBAEEA,QAFF;AAAA,MAGE8F,WAHF,sBAGEA,WAHF;AAAA,MAIE1F,WAJF,sBAIEA,WAJF;AAAA,MAKEC,YALF,sBAKEA,YALF;AAAA,MAMEC,WANF,sBAMEA,WANF;AAAA,MAOEC,gBAPF,sBAOEA,gBAPF;AAAA,MAQEsJ,cARF,sBAQEA,cARF;AAAA,MASErJ,OATF,sBASEA,OATF;AAAA,MAUEC,OAVF,sBAUEA,OAVF;AAAA,MAWEC,mBAXF,sBAWEA,mBAXF;AAAA,MAYEM,WAZF,sBAYEA,WAZF;AAAA,MAaEC,UAbF,sBAaEA,UAbF;AAAA,MAcEC,OAdF,sBAcEA,OAdF;AAAA,MAeEC,SAfF,sBAeEA,SAfF;AAAA,MAgBEC,gBAhBF,sBAgBEA,gBAhBF;AAAA,MAiBEC,YAjBF,sBAiBEA,YAjBF;AAAA,MAkBEG,iBAlBF,sBAkBEA,iBAlBF;AAAA,MAmBEE,UAnBF,sBAmBEA,UAnBF;;AAqBA,4BAaI,0CAbJ;AAAA,MACE7B,wBADF,uBACEA,wBADF;AAAA,MAEEE,UAFF,uBAEEA,UAFF;AAAA,MAGEE,mBAHF,uBAGEA,mBAHF;AAAA,MAIEC,UAJF,uBAIEA,UAJF;AAAA,MAKEC,OALF,uBAKEA,OALF;AAAA,MAME8F,iBANF,uBAMEA,iBANF;AAAA,MAOEtF,cAPF,uBAOEA,cAPF;AAAA,MAQEC,aARF,uBAQEA,aARF;AAAA,MASEC,aATF,uBASEA,aATF;AAAA,MAUEC,cAVF,uBAUEA,cAVF;AAAA,MAWEC,aAXF,uBAWEA,aAXF;AAAA,MAYEO,KAZF,uBAYEA,KAZF;;AAcA,8BAA+B,gDAA/B;AAAA,MAAQmF,CAAR,yBAAQA,CAAR;AAAA,MAAWhF,eAAX,yBAAWA,eAAX;;AAEA,SACE,gCAAC,sBAAD;AAEI5B,IAAAA,wBAAwB,EAAxBA,wBAFJ;AAGIC,IAAAA,SAAS,EAATA,SAHJ;AAIIC,IAAAA,UAAU,EAAVA,UAJJ;AAKIC,IAAAA,QAAQ,EAARA,QALJ;AAMIC,IAAAA,mBAAmB,EAAnBA,mBANJ;AAOIC,IAAAA,UAAU,EAAVA,UAPJ;AAQIC,IAAAA,OAAO,EAAPA,OARJ;AASI2F,IAAAA,WAAW,EAAXA,WATJ;AAUI1F,IAAAA,WAAW,EAAXA,WAVJ;AAWIC,IAAAA,YAAY,EAAZA,YAXJ;AAYI4F,IAAAA,iBAAiB,EAAjBA,iBAZJ;AAaI3F,IAAAA,WAAW,EAAXA,WAbJ;AAcIC,IAAAA,gBAAgB,EAAhBA,gBAdJ;AAeIsJ,IAAAA,cAAc,EAAdA,cAfJ;AAgBIrJ,IAAAA,OAAO,EAAPA,OAhBJ;AAiBIC,IAAAA,OAAO,EAAPA,OAjBJ;AAkBIC,IAAAA,mBAAmB,EAAnBA,mBAlBJ;AAmBIC,IAAAA,cAAc,EAAdA,cAnBJ;AAoBIC,IAAAA,aAAa,EAAbA,aApBJ;AAqBIC,IAAAA,aAAa,EAAbA,aArBJ;AAsBIC,IAAAA,cAAc,EAAdA,cAtBJ;AAuBIC,IAAAA,aAAa,EAAbA,aAvBJ;AAwBIC,IAAAA,WAAW,EAAXA,WAxBJ;AAyBIC,IAAAA,UAAU,EAAVA,UAzBJ;AA0BIC,IAAAA,OAAO,EAAPA,OA1BJ;AA2BIC,IAAAA,SAAS,EAATA,SA3BJ;AA4BIC,IAAAA,gBAAgB,EAAhBA,gBA5BJ;AA6BIC,IAAAA,YAAY,EAAZA,YA7BJ;AA8BIC,IAAAA,KAAK,EAALA,KA9BJ;AA+BIE,IAAAA,iBAAiB,EAAjBA,iBA/BJ;AAgCIiF,IAAAA,CAAC,EAADA,CAhCJ;AAiCIhF,IAAAA,eAAe,EAAfA,eAjCJ;AAkCIC,IAAAA,UAAU,EAAVA;AAlCJ,KAoCM9B,KApCN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AAwCD,CAlFM;;;AAoFPgK,cAAc,CAACE,WAAf,GAA6B,wCAA7B","sourcesContent":["import React from 'react';\nimport { LayoutChangeEvent, StyleSheet, TouchableOpacity, View } from 'react-native';\n\nimport { MessageTextContainer } from './MessageTextContainer';\n\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n TDateTimeParserInput,\n TranslationContextValue,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\n\nimport { Error } from '../../../icons';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes, vw } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n containerInner: {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n borderWidth: 1,\n overflow: 'hidden',\n },\n leftAlignContent: {\n justifyContent: 'flex-start',\n },\n leftAlignItems: {\n alignItems: 'flex-start',\n },\n replyBorder: {\n borderLeftWidth: 1,\n bottom: 0,\n position: 'absolute',\n },\n replyContainer: {\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n rightAlignContent: {\n justifyContent: 'flex-end',\n },\n rightAlignItems: {\n alignItems: 'flex-end',\n },\n});\n\nexport type MessageContentPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'disabled'\n | 'goToMessage'\n | 'groupStyles'\n | 'hasReactions'\n | 'isMyMessage'\n | 'lastGroupMessage'\n | 'members'\n | 'message'\n | 'messageContentOrder'\n | 'onLongPress'\n | 'onlyEmojis'\n | 'onPress'\n | 'onPressIn'\n | 'otherAttachments'\n | 'preventPress'\n | 'showMessageStatus'\n | 'threadList'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'FileAttachmentGroup'\n | 'formatDate'\n | 'Gallery'\n | 'isAttachmentEqual'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageDeleted'\n | 'MessageReplies'\n | 'MessageStatus'\n | 'onPressInMessage'\n | 'Reply'\n > &\n Pick<TranslationContextValue, 't' | 'tDateTimeParser'> & {\n setMessageContentWidth: React.Dispatch<React.SetStateAction<number>>;\n };\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nconst MessageContentWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n setMessageContentWidth,\n showMessageStatus,\n tDateTimeParser,\n threadList,\n } = props;\n\n const {\n theme: {\n colors: { accent_red, blue_alice, grey_gainsboro, grey_whisper, transparent, white },\n messageSimple: {\n content: {\n container: { borderRadiusL, borderRadiusS, ...container },\n containerInner,\n errorContainer,\n errorIcon,\n errorIconContainer,\n replyBorder,\n replyContainer,\n wrapper,\n },\n reactionList: { radius, reactionSize },\n },\n },\n } = useTheme();\n\n const getDateText = (formatter?: (date: TDateTimeParserInput) => string) => {\n if (!message.created_at) return '';\n\n if (formatter) {\n return formatter(message.created_at);\n }\n\n const parserOutput = tDateTimeParser(message.created_at);\n\n if (isDayOrMoment(parserOutput)) {\n return parserOutput.format('LT');\n }\n return message.created_at;\n };\n\n const onLayout: (event: LayoutChangeEvent) => void = ({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setMessageContentWidth(width);\n };\n\n const error = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const groupStyle = `${alignment}_${groupStyles?.[0]?.toLowerCase?.()}`;\n\n const hasThreadReplies = !!message?.reply_count;\n\n let noBorder = onlyEmojis && !message.quoted_message;\n if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy' && !isMyMessage) {\n noBorder = false;\n } else {\n noBorder = true;\n }\n }\n\n const isMessageTypeDeleted = message.type === 'deleted';\n\n if (isMessageTypeDeleted) {\n return (\n <MessageDeleted\n formattedDate={getDateText(formatDate)}\n groupStyle={groupStyle}\n noBorder={noBorder}\n onLayout={onLayout}\n />\n );\n }\n\n let backgroundColor = grey_gainsboro;\n if (onlyEmojis && !message.quoted_message) {\n backgroundColor = transparent;\n } else if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy') {\n backgroundColor = message.quoted_message ? grey_gainsboro : transparent;\n } else {\n backgroundColor = blue_alice;\n }\n } else if (alignment === 'left' || error) {\n backgroundColor = white;\n }\n\n const repliesCurveColor = isMyMessage && !error ? backgroundColor : grey_whisper;\n\n return (\n <TouchableOpacity\n activeOpacity={0.7}\n disabled={disabled || preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n testID='message-content'\n {...additionalTouchableProps}\n /**\n * Border radii are useful for the case of error message types only.\n * Otherwise background is transparent, so border radius is not really visible.\n */\n style={[\n alignment === 'left' ? styles.leftAlignItems : styles.rightAlignItems,\n { paddingTop: hasReactions ? reactionSize / 2 + radius : 2 },\n error ? errorContainer : {},\n container,\n ]}\n >\n {MessageHeader && (\n <MessageHeader\n alignment={alignment}\n formattedDate={getDateText(formatDate)}\n isDeleted={!!isMessageTypeDeleted}\n lastGroupMessage={lastGroupMessage}\n members={members}\n message={message}\n MessageStatus={MessageStatus}\n otherAttachments={otherAttachments}\n showMessageStatus={showMessageStatus}\n />\n )}\n <View onLayout={onLayout} style={wrapper}>\n {hasThreadReplies && !threadList && !noBorder && (\n <View\n style={[\n styles.replyBorder,\n {\n borderColor: repliesCurveColor,\n height: borderRadiusL,\n left: alignment === 'left' ? 0 : undefined,\n right: alignment === 'right' ? 0 : undefined,\n },\n replyBorder,\n ]}\n />\n )}\n <View\n style={[\n styles.containerInner,\n {\n backgroundColor,\n borderBottomLeftRadius:\n (groupStyle === 'left_bottom' || groupStyle === 'left_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderBottomRightRadius:\n (groupStyle === 'right_bottom' || groupStyle === 'right_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderColor: isMyMessage && !error ? backgroundColor : grey_whisper,\n },\n noBorder ? { borderWidth: 0 } : {},\n containerInner,\n ]}\n testID='message-content-wrapper'\n >\n {messageContentOrder.map((messageContentType, messageContentOrderIndex) => {\n switch (messageContentType) {\n case 'quoted_reply':\n return (\n message.quoted_message && (\n <View\n key={`quoted_reply_${messageContentOrderIndex}`}\n style={[styles.replyContainer, replyContainer]}\n >\n <Reply styles={{ messageContainer: { maxWidth: vw(60) } }} />\n </View>\n )\n );\n case 'attachments':\n return otherAttachments.map((attachment, attachmentIndex) => (\n <Attachment attachment={attachment} key={`${message.id}-${attachmentIndex}`} />\n ));\n case 'files':\n return (\n <FileAttachmentGroup\n key={`file_attachment_group_${messageContentOrderIndex}`}\n messageId={message.id}\n />\n );\n case 'gallery':\n return <Gallery key={`gallery_${messageContentOrderIndex}`} />;\n case 'text':\n default:\n return otherAttachments.length && otherAttachments[0].actions ? null : (\n <MessageTextContainer<StreamChatGenerics>\n key={`message_text_container_${messageContentOrderIndex}`}\n />\n );\n }\n })}\n </View>\n {error && (\n <View style={StyleSheet.absoluteFill} testID='message-error'>\n <View style={errorIconContainer}>\n <Error pathFill={accent_red} {...errorIcon} />\n </View>\n </View>\n )}\n </View>\n <MessageReplies noBorder={noBorder} repliesCurveColor={repliesCurveColor} />\n <MessageFooter formattedDate={getDateText(formatDate)} isDeleted={!!isMessageTypeDeleted} />\n </TouchableOpacity>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageContentPropsWithContext<StreamChatGenerics>,\n nextProps: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n goToMessage: prevGoToMessage,\n groupStyles: prevGroupStyles,\n hasReactions: prevHasReactions,\n isAttachmentEqual,\n lastGroupMessage: prevLastGroupMessage,\n members: prevMembers,\n message: prevMessage,\n messageContentOrder: prevMessageContentOrder,\n onlyEmojis: prevOnlyEmojis,\n otherAttachments: prevOtherAttachments,\n t: prevT,\n tDateTimeParser: prevTDateTimeParser,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n groupStyles: nextGroupStyles,\n hasReactions: nextHasReactions,\n lastGroupMessage: nextLastGroupMessage,\n members: nextMembers,\n message: nextMessage,\n messageContentOrder: nextMessageContentOrder,\n onlyEmojis: nextOnlyEmojis,\n otherAttachments: nextOtherAttachments,\n t: nextT,\n tDateTimeParser: nextTDateTimeParser,\n } = nextProps;\n\n const hasReactionsEqual = prevHasReactions === nextHasReactions;\n if (!hasReactionsEqual) return false;\n\n const lastGroupMessageEqual = prevLastGroupMessage === nextLastGroupMessage;\n if (!lastGroupMessageEqual) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n if (goToMessageChangedAndMatters) return false;\n\n const onlyEmojisEqual = prevOnlyEmojis === nextOnlyEmojis;\n if (!onlyEmojisEqual) return false;\n\n const otherAttachmentsEqual =\n prevOtherAttachments.length === nextOtherAttachments.length &&\n prevOtherAttachments?.[0]?.actions?.length === nextOtherAttachments?.[0]?.actions?.length;\n if (!otherAttachmentsEqual) return false;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length &&\n prevGroupStyles?.[0] === nextGroupStyles?.[0];\n if (!groupStylesEqual) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n prevMessage.reply_count === nextMessage.reply_count &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned;\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n if (!quotedMessageEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n Array.isArray(prevMessageAttachments) && Array.isArray(nextMessageAttachments)\n ? prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.og_scrape_url === nextMessageAttachments[index].og_scrape_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })\n : prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const messageContentOrderEqual =\n prevMessageContentOrder.length === nextMessageContentOrder.length &&\n prevMessageContentOrder.every(\n (messageContentType, index) => messageContentType === nextMessageContentOrder[index],\n );\n if (!messageContentOrderEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const tDateTimeParserEqual = prevTDateTimeParser === nextTDateTimeParser;\n if (!tDateTimeParserEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageContent = React.memo(\n MessageContentWithContext,\n areEqual,\n) as typeof MessageContentWithContext;\n\nexport type MessageContentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>> &\n Pick<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>;\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nexport const MessageContent = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentProps<StreamChatGenerics>,\n) => {\n const {\n alignment,\n disabled,\n goToMessage,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n showMessageStatus,\n threadList,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps,\n Attachment,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n isAttachmentEqual,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n Reply,\n } = useMessagesContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n return (\n <MemoizedMessageContent<StreamChatGenerics>\n {...{\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n goToMessage,\n groupStyles,\n hasReactions,\n isAttachmentEqual,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n showMessageStatus,\n t,\n tDateTimeParser,\n threadList,\n }}\n {...props}\n />\n );\n};\n\nMessageContent.displayName = 'MessageContent{messageSimple{content}}';\n"]}
|
|
1
|
+
{"version":3,"sources":["MessageContent.tsx"],"names":["styles","StyleSheet","create","containerInner","borderTopLeftRadius","borderTopRightRadius","borderWidth","overflow","leftAlignContent","justifyContent","leftAlignItems","alignItems","replyBorder","borderLeftWidth","bottom","position","replyContainer","flexDirection","paddingHorizontal","paddingTop","rightAlignContent","rightAlignItems","MessageContentWithContext","props","additionalTouchableProps","alignment","Attachment","disabled","FileAttachmentGroup","formatDate","Gallery","groupStyles","hasReactions","isMyMessage","lastGroupMessage","members","message","messageContentOrder","MessageDeleted","MessageFooter","MessageHeader","MessageReplies","MessageStatus","onLongPress","onlyEmojis","onPress","onPressIn","otherAttachments","preventPress","Reply","setMessageContentWidth","showMessageStatus","tDateTimeParser","threadList","theme","colors","accent_red","blue_alice","grey_gainsboro","grey_whisper","transparent","white","messageSimple","content","container","borderRadius","borderRadiusL","borderRadiusS","errorContainer","errorIcon","errorIconContainer","wrapper","reactionList","radius","reactionSize","getDateText","formatter","created_at","parserOutput","format","onLayout","width","nativeEvent","layout","error","type","status","MessageStatusTypes","FAILED","groupStyle","toLowerCase","hasThreadReplies","reply_count","noBorder","quoted_message","length","isMessageTypeDeleted","backgroundColor","repliesCurveColor","isBorderColor","shouldApplyBorderRadius","firstGroupStyle","secondGroupStyle","applyBorderRadius","event","emitter","borderColor","height","left","undefined","right","borderBottomLeftRadius","borderBottomRightRadius","map","messageContentType","messageContentOrderIndex","messageContainer","maxWidth","attachment","attachmentIndex","id","actions","absoluteFill","areEqual","prevProps","nextProps","prevGoToMessage","goToMessage","prevGroupStyles","prevHasReactions","isAttachmentEqual","prevLastGroupMessage","prevMembers","prevMessage","prevMessageContentOrder","prevOnlyEmojis","prevOtherAttachments","prevT","t","prevTDateTimeParser","nextGoToMessage","nextGroupStyles","nextHasReactions","nextLastGroupMessage","nextMembers","nextMessage","nextMessageContentOrder","nextOnlyEmojis","nextOtherAttachments","nextT","nextTDateTimeParser","hasReactionsEqual","lastGroupMessageEqual","goToMessageChangedAndMatters","quoted_message_id","onlyEmojisEqual","otherAttachmentsEqual","membersEqual","Object","keys","groupStylesEqual","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","text","pinned","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","prevMessageAttachments","attachments","nextMessageAttachments","attachmentsEqual","Array","isArray","every","index","attachmentKeysEqual","image_url","og_scrape_url","thumb_url","latestReactionsEqual","latest_reactions","messageContentOrderEqual","tEqual","tDateTimeParserEqual","MemoizedMessageContent","React","memo","MessageContent","lastReceivedId","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { LayoutChangeEvent, StyleSheet, TouchableOpacity, View } from 'react-native';\n\nimport { MessageTextContainer } from './MessageTextContainer';\n\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n TDateTimeParserInput,\n TranslationContextValue,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\n\nimport { Error } from '../../../icons';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes, vw } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n containerInner: {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n borderWidth: 1,\n overflow: 'hidden',\n },\n leftAlignContent: {\n justifyContent: 'flex-start',\n },\n leftAlignItems: {\n alignItems: 'flex-start',\n },\n replyBorder: {\n borderLeftWidth: 1,\n bottom: 0,\n position: 'absolute',\n },\n replyContainer: {\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n rightAlignContent: {\n justifyContent: 'flex-end',\n },\n rightAlignItems: {\n alignItems: 'flex-end',\n },\n});\n\nexport type MessageContentPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'disabled'\n | 'goToMessage'\n | 'groupStyles'\n | 'hasReactions'\n | 'isMyMessage'\n | 'lastGroupMessage'\n | 'members'\n | 'message'\n | 'messageContentOrder'\n | 'onLongPress'\n | 'onlyEmojis'\n | 'onPress'\n | 'onPressIn'\n | 'otherAttachments'\n | 'preventPress'\n | 'showMessageStatus'\n | 'threadList'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'FileAttachmentGroup'\n | 'formatDate'\n | 'Gallery'\n | 'isAttachmentEqual'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageDeleted'\n | 'MessageReplies'\n | 'MessageStatus'\n | 'onPressInMessage'\n | 'Reply'\n > &\n Pick<TranslationContextValue, 't' | 'tDateTimeParser'> & {\n setMessageContentWidth: React.Dispatch<React.SetStateAction<number>>;\n };\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nconst MessageContentWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n setMessageContentWidth,\n showMessageStatus,\n tDateTimeParser,\n threadList,\n } = props;\n\n const {\n theme: {\n colors: { accent_red, blue_alice, grey_gainsboro, grey_whisper, transparent, white },\n messageSimple: {\n content: {\n container: { borderRadius, borderRadiusL, borderRadiusS, ...container },\n containerInner,\n errorContainer,\n errorIcon,\n errorIconContainer,\n replyBorder,\n replyContainer,\n wrapper,\n },\n reactionList: { radius, reactionSize },\n },\n },\n } = useTheme();\n\n const getDateText = (formatter?: (date: TDateTimeParserInput) => string) => {\n if (!message.created_at) return '';\n\n if (formatter) {\n return formatter(message.created_at);\n }\n\n const parserOutput = tDateTimeParser(message.created_at);\n\n if (isDayOrMoment(parserOutput)) {\n return parserOutput.format('LT');\n }\n return message.created_at;\n };\n\n const onLayout: (event: LayoutChangeEvent) => void = ({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setMessageContentWidth(width);\n };\n\n const error = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const groupStyle = `${alignment}_${groupStyles?.[0]?.toLowerCase?.()}`;\n\n const hasThreadReplies = !!message?.reply_count;\n\n let noBorder = onlyEmojis && !message.quoted_message;\n if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy' && !isMyMessage) {\n noBorder = false;\n } else {\n noBorder = true;\n }\n }\n\n const isMessageTypeDeleted = message.type === 'deleted';\n\n if (isMessageTypeDeleted) {\n return (\n <MessageDeleted\n formattedDate={getDateText(formatDate)}\n groupStyle={groupStyle}\n noBorder={noBorder}\n onLayout={onLayout}\n />\n );\n }\n\n let backgroundColor = grey_gainsboro;\n if (onlyEmojis && !message.quoted_message) {\n backgroundColor = transparent;\n } else if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy') {\n backgroundColor = message.quoted_message ? grey_gainsboro : transparent;\n } else {\n backgroundColor = blue_alice;\n }\n } else if (alignment === 'left' || error) {\n backgroundColor = white;\n }\n\n const repliesCurveColor = isMyMessage && !error ? backgroundColor : grey_whisper;\n\n const isBorderColor = isMyMessage && !error;\n\n const shouldApplyBorderRadius = (firstGroupStyle: string, secondGroupStyle: string): boolean =>\n (groupStyle === firstGroupStyle || groupStyle === secondGroupStyle) &&\n (!hasThreadReplies || threadList);\n\n const applyBorderRadius = (\n firstGroupStyle: string,\n secondGroupStyle: string,\n ): number | undefined => {\n if (shouldApplyBorderRadius(firstGroupStyle, secondGroupStyle)) {\n return borderRadiusS;\n }\n return borderRadiusL;\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.7}\n disabled={disabled || preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n testID='message-content'\n {...additionalTouchableProps}\n /**\n * Border radii are useful for the case of error message types only.\n * Otherwise background is transparent, so border radius is not really visible.\n */\n style={[\n alignment === 'left' ? styles.leftAlignItems : styles.rightAlignItems,\n { paddingTop: hasReactions ? reactionSize / 2 + radius : 2 },\n error ? errorContainer : {},\n container,\n ]}\n >\n {MessageHeader && (\n <MessageHeader\n alignment={alignment}\n formattedDate={getDateText(formatDate)}\n isDeleted={!!isMessageTypeDeleted}\n lastGroupMessage={lastGroupMessage}\n members={members}\n message={message}\n MessageStatus={MessageStatus}\n otherAttachments={otherAttachments}\n showMessageStatus={showMessageStatus}\n />\n )}\n <View onLayout={onLayout} style={wrapper}>\n {hasThreadReplies && !threadList && !noBorder && (\n <View\n style={[\n styles.replyBorder,\n {\n borderColor: repliesCurveColor,\n height: borderRadiusL,\n left: alignment === 'left' ? 0 : undefined,\n right: alignment === 'right' ? 0 : undefined,\n },\n replyBorder,\n ]}\n />\n )}\n <View\n style={[\n styles.containerInner,\n {\n backgroundColor,\n borderBottomLeftRadius: applyBorderRadius('left_bottom', 'left_single'),\n borderBottomRightRadius: applyBorderRadius('right_bottom', 'right_single'),\n borderColor: isBorderColor ? backgroundColor : grey_whisper,\n borderRadius,\n borderTopLeftRadius: applyBorderRadius('left_top', 'right_single'),\n borderTopRightRadius: applyBorderRadius('right_top', 'right_single'),\n },\n noBorder ? { borderWidth: 0 } : {},\n containerInner,\n ]}\n testID='message-content-wrapper'\n >\n {messageContentOrder.map((messageContentType, messageContentOrderIndex) => {\n switch (messageContentType) {\n case 'quoted_reply':\n return (\n message.quoted_message && (\n <View\n key={`quoted_reply_${messageContentOrderIndex}`}\n style={[styles.replyContainer, replyContainer]}\n >\n <Reply styles={{ messageContainer: { maxWidth: vw(60) } }} />\n </View>\n )\n );\n case 'attachments':\n return otherAttachments.map((attachment, attachmentIndex) => (\n <Attachment attachment={attachment} key={`${message.id}-${attachmentIndex}`} />\n ));\n case 'files':\n return (\n <FileAttachmentGroup\n key={`file_attachment_group_${messageContentOrderIndex}`}\n messageId={message.id}\n />\n );\n case 'gallery':\n return <Gallery key={`gallery_${messageContentOrderIndex}`} />;\n case 'text':\n default:\n return otherAttachments.length && otherAttachments[0].actions ? null : (\n <MessageTextContainer<StreamChatGenerics>\n key={`message_text_container_${messageContentOrderIndex}`}\n />\n );\n }\n })}\n </View>\n {error && (\n <View style={StyleSheet.absoluteFill} testID='message-error'>\n <View style={errorIconContainer}>\n <Error pathFill={accent_red} {...errorIcon} />\n </View>\n </View>\n )}\n </View>\n <MessageReplies noBorder={noBorder} repliesCurveColor={repliesCurveColor} />\n <MessageFooter formattedDate={getDateText(formatDate)} isDeleted={!!isMessageTypeDeleted} />\n </TouchableOpacity>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageContentPropsWithContext<StreamChatGenerics>,\n nextProps: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n goToMessage: prevGoToMessage,\n groupStyles: prevGroupStyles,\n hasReactions: prevHasReactions,\n isAttachmentEqual,\n lastGroupMessage: prevLastGroupMessage,\n members: prevMembers,\n message: prevMessage,\n messageContentOrder: prevMessageContentOrder,\n onlyEmojis: prevOnlyEmojis,\n otherAttachments: prevOtherAttachments,\n t: prevT,\n tDateTimeParser: prevTDateTimeParser,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n groupStyles: nextGroupStyles,\n hasReactions: nextHasReactions,\n lastGroupMessage: nextLastGroupMessage,\n members: nextMembers,\n message: nextMessage,\n messageContentOrder: nextMessageContentOrder,\n onlyEmojis: nextOnlyEmojis,\n otherAttachments: nextOtherAttachments,\n t: nextT,\n tDateTimeParser: nextTDateTimeParser,\n } = nextProps;\n\n const hasReactionsEqual = prevHasReactions === nextHasReactions;\n if (!hasReactionsEqual) return false;\n\n const lastGroupMessageEqual = prevLastGroupMessage === nextLastGroupMessage;\n if (!lastGroupMessageEqual) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n if (goToMessageChangedAndMatters) return false;\n\n const onlyEmojisEqual = prevOnlyEmojis === nextOnlyEmojis;\n if (!onlyEmojisEqual) return false;\n\n const otherAttachmentsEqual =\n prevOtherAttachments.length === nextOtherAttachments.length &&\n prevOtherAttachments?.[0]?.actions?.length === nextOtherAttachments?.[0]?.actions?.length;\n if (!otherAttachmentsEqual) return false;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length &&\n prevGroupStyles?.[0] === nextGroupStyles?.[0];\n if (!groupStylesEqual) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n prevMessage.reply_count === nextMessage.reply_count &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned;\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n if (!quotedMessageEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n Array.isArray(prevMessageAttachments) && Array.isArray(nextMessageAttachments)\n ? prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.og_scrape_url === nextMessageAttachments[index].og_scrape_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })\n : prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const messageContentOrderEqual =\n prevMessageContentOrder.length === nextMessageContentOrder.length &&\n prevMessageContentOrder.every(\n (messageContentType, index) => messageContentType === nextMessageContentOrder[index],\n );\n if (!messageContentOrderEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const tDateTimeParserEqual = prevTDateTimeParser === nextTDateTimeParser;\n if (!tDateTimeParserEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageContent = React.memo(\n MessageContentWithContext,\n areEqual,\n) as typeof MessageContentWithContext;\n\nexport type MessageContentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>> &\n Pick<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>;\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nexport const MessageContent = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentProps<StreamChatGenerics>,\n) => {\n const {\n alignment,\n disabled,\n goToMessage,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n showMessageStatus,\n threadList,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps,\n Attachment,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n isAttachmentEqual,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n Reply,\n } = useMessagesContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n return (\n <MemoizedMessageContent<StreamChatGenerics>\n {...{\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n goToMessage,\n groupStyles,\n hasReactions,\n isAttachmentEqual,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n showMessageStatus,\n t,\n tDateTimeParser,\n threadList,\n }}\n {...props}\n />\n );\n};\n\nMessageContent.displayName = 'MessageContent{messageSimple{content}}';\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[src/components/Message/MessageSimple/utils/renderText.ts](https://github.com/GetStream/stream-chat-react-native/blob/
|
|
1
|
+
[src/components/Message/MessageSimple/utils/renderText.ts](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/MessageSimple/utils/renderText.ts)
|
|
2
2
|
|
|
3
3
|
Function that handles markdown and parsing for the text of message.
|
|
4
4
|
|
|
@@ -152,7 +152,7 @@ var UnsupportedFileTypeOrFileSizeIndicator = function UnsupportedFileTypeOrFileS
|
|
|
152
152
|
lineNumber: 107,
|
|
153
153
|
columnNumber: 5
|
|
154
154
|
}
|
|
155
|
-
}, (0, _FileAttachment.getFileSizeDisplayText)(item.file.size));
|
|
155
|
+
}, item.file.duration ? item.file.duration : (0, _FileAttachment.getFileSizeDisplayText)(item.file.size));
|
|
156
156
|
};
|
|
157
157
|
|
|
158
158
|
var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["FileUploadPreview.tsx"],"names":["FILE_PREVIEW_HEIGHT","WARNING_ICON_SIZE","styles","StyleSheet","create","dismiss","borderRadius","height","position","right","top","width","fileContainer","borderWidth","flexDirection","justifyContent","marginBottom","padding","fileContentContainer","filenameText","fontSize","fontWeight","paddingLeft","fileSizeText","fileTextContainer","flatList","maxHeight","overlay","marginLeft","marginRight","unsupportedFile","unsupportedFileText","warningIconStyle","marginTop","UnsupportedFileTypeOrFileSizeIndicator","indicatorType","item","theme","colors","accent_red","grey","messageInput","fileUploadPreview","t","ProgressIndicatorTypes","NOT_SUPPORTED","color","file","size","FileUploadPreviewWithContext","props","FileAttachmentIcon","fileUploads","removeFile","uploadFile","flatListRef","flatListWidth","setFlatListWidth","black","grey_whisper","renderItem","index","state","newFile","length","borderColor","type","name","id","backgroundColor","fileUploadsLength","current","setTimeout","scrollToEnd","_","offset","nativeEvent","layout","areEqual","prevProps","nextProps","prevFileUploads","nextFileUploads","every","prevFileUpload","MemoizedFileUploadPreview","React","memo","FileUploadPreview","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { FlatList, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { UploadProgressIndicator } from './UploadProgressIndicator';\n\nimport {\n FileUpload,\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 { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../icons/Close';\nimport { Warning } from '../../icons/Warning';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getIndicatorTypeForFileState, ProgressIndicatorTypes } from '../../utils/utils';\nimport { getFileSizeDisplayText } from '../Attachment/FileAttachment';\n\nconst FILE_PREVIEW_HEIGHT = 60;\nconst WARNING_ICON_SIZE = 16;\n\nconst styles = StyleSheet.create({\n dismiss: {\n borderRadius: 24,\n height: 24,\n position: 'absolute',\n right: 14,\n top: 4,\n width: 24,\n },\n fileContainer: {\n borderRadius: 12,\n borderWidth: 1,\n flexDirection: 'row',\n height: FILE_PREVIEW_HEIGHT,\n justifyContent: 'space-between',\n marginBottom: 8,\n padding: 8,\n },\n fileContentContainer: { flexDirection: 'row' },\n filenameText: {\n fontSize: 14,\n fontWeight: 'bold',\n paddingLeft: 10,\n },\n fileSizeText: {\n fontSize: 12,\n paddingLeft: 10,\n },\n fileTextContainer: {\n height: '100%',\n justifyContent: 'space-around',\n },\n flatList: { marginBottom: 12, maxHeight: FILE_PREVIEW_HEIGHT * 2.5 + 16 },\n overlay: {\n borderRadius: 12,\n marginLeft: 8,\n marginRight: 8,\n },\n unsupportedFile: {\n flexDirection: 'row',\n paddingLeft: 10,\n },\n unsupportedFileText: {\n fontSize: 16,\n },\n warningIconStyle: {\n borderRadius: 24,\n marginTop: 4,\n },\n});\n\nconst UnsupportedFileTypeOrFileSizeIndicator = ({\n indicatorType,\n item,\n}: {\n indicatorType: typeof ProgressIndicatorTypes[keyof typeof ProgressIndicatorTypes];\n item: FileUpload;\n}) => {\n const {\n theme: {\n colors: { accent_red, grey },\n messageInput: {\n fileUploadPreview: { fileSizeText },\n },\n },\n } = useTheme();\n\n const { t } = useTranslationContext();\n return indicatorType === ProgressIndicatorTypes.NOT_SUPPORTED ? (\n <View style={styles.unsupportedFile}>\n <Warning\n height={WARNING_ICON_SIZE}\n pathFill={accent_red}\n style={styles.warningIconStyle}\n width={WARNING_ICON_SIZE}\n />\n <Text style={[styles.unsupportedFileText, { color: grey }]}>\n {t('File type not supported')}\n </Text>\n </View>\n ) : (\n <Text style={[styles.fileSizeText, { color: grey }, fileSizeText]}>\n {getFileSizeDisplayText(item.file.size)}\n </Text>\n );\n};\n\ntype FileUploadPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'fileUploads' | 'removeFile' | 'uploadFile'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'FileAttachmentIcon'>;\n\nconst FileUploadPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { FileAttachmentIcon, fileUploads, removeFile, uploadFile } = props;\n\n const flatListRef = useRef<FlatList<FileUpload> | null>(null);\n const [flatListWidth, setFlatListWidth] = useState(0);\n\n const {\n theme: {\n colors: { black, grey_whisper, overlay },\n messageInput: {\n fileUploadPreview: {\n dismiss,\n fileContainer,\n fileContentContainer,\n filenameText,\n fileTextContainer,\n flatList,\n },\n },\n },\n } = useTheme();\n\n const renderItem = ({ index, item }: { index: number; item: FileUpload }) => {\n const indicatorType = getIndicatorTypeForFileState(item.state);\n\n return (\n <>\n <UploadProgressIndicator\n action={() => {\n uploadFile({ newFile: item });\n }}\n style={styles.overlay}\n type={indicatorType}\n >\n <View\n style={[\n styles.fileContainer,\n index === fileUploads.length - 1\n ? {\n marginBottom: 0,\n }\n : {},\n {\n borderColor: grey_whisper,\n width: flatListWidth - 16,\n },\n fileContainer,\n ]}\n >\n <View style={[styles.fileContentContainer, fileContentContainer]}>\n <FileAttachmentIcon mimeType={item.file.type} />\n <View style={[styles.fileTextContainer, fileTextContainer]}>\n <Text\n numberOfLines={1}\n style={[\n styles.filenameText,\n {\n color: black,\n width:\n flatListWidth -\n 16 - // 16 = horizontal padding\n 40 - // 40 = file icon size\n 24 - // 24 = close icon size\n 24, // 24 = internal padding\n },\n filenameText,\n ]}\n >\n {item.file.name || ''}\n </Text>\n {indicatorType !== null && (\n <UnsupportedFileTypeOrFileSizeIndicator\n indicatorType={indicatorType}\n item={item}\n />\n )}\n </View>\n </View>\n </View>\n </UploadProgressIndicator>\n <TouchableOpacity\n onPress={() => {\n removeFile(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: overlay }, dismiss]}\n testID='remove-file-upload-preview'\n >\n <Close />\n </TouchableOpacity>\n </>\n );\n };\n\n const fileUploadsLength = fileUploads.length;\n\n useEffect(() => {\n if (fileUploadsLength && flatListRef.current) {\n setTimeout(() => flatListRef.current?.scrollToEnd(), 1);\n }\n }, [fileUploadsLength]);\n\n return fileUploadsLength ? (\n <FlatList\n data={fileUploads}\n getItemLayout={(_, index) => ({\n index,\n length: FILE_PREVIEW_HEIGHT + 8,\n offset: (FILE_PREVIEW_HEIGHT + 8) * index,\n })}\n keyExtractor={(item) => item.id}\n onLayout={({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setFlatListWidth(width);\n }}\n ref={flatListRef}\n renderItem={renderItem}\n style={[styles.flatList, flatList]}\n />\n ) : null;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n nextProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { fileUploads: prevFileUploads } = prevProps;\n const { fileUploads: nextFileUploads } = nextProps;\n\n return (\n prevFileUploads.length === nextFileUploads.length &&\n prevFileUploads.every(\n (prevFileUpload, index) => prevFileUpload.state === nextFileUploads[index].state,\n )\n );\n};\n\nconst MemoizedFileUploadPreview = React.memo(\n FileUploadPreviewWithContext,\n areEqual,\n) as typeof FileUploadPreviewWithContext;\n\nexport type FileUploadPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<FileUploadPreviewPropsWithContext<StreamChatGenerics>>;\n\n/**\n * FileUploadPreview\n * UI Component to preview the files set for upload\n */\nexport const FileUploadPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewProps<StreamChatGenerics>,\n) => {\n const { fileUploads, removeFile, uploadFile } = useMessageInputContext<StreamChatGenerics>();\n\n const { FileAttachmentIcon } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedFileUploadPreview\n {...{ FileAttachmentIcon, fileUploads, removeFile, uploadFile }}\n {...props}\n />\n );\n};\n\nFileUploadPreview.displayName = 'FileUploadPreview{messageInput{fileUploadPreview}}';\n"]}
|
|
1
|
+
{"version":3,"sources":["FileUploadPreview.tsx"],"names":["FILE_PREVIEW_HEIGHT","WARNING_ICON_SIZE","styles","StyleSheet","create","dismiss","borderRadius","height","position","right","top","width","fileContainer","borderWidth","flexDirection","justifyContent","marginBottom","padding","fileContentContainer","filenameText","fontSize","fontWeight","paddingLeft","fileSizeText","fileTextContainer","flatList","maxHeight","overlay","marginLeft","marginRight","unsupportedFile","unsupportedFileText","warningIconStyle","marginTop","UnsupportedFileTypeOrFileSizeIndicator","indicatorType","item","theme","colors","accent_red","grey","messageInput","fileUploadPreview","t","ProgressIndicatorTypes","NOT_SUPPORTED","color","file","duration","size","FileUploadPreviewWithContext","props","FileAttachmentIcon","fileUploads","removeFile","uploadFile","flatListRef","flatListWidth","setFlatListWidth","black","grey_whisper","renderItem","index","state","newFile","length","borderColor","type","name","id","backgroundColor","fileUploadsLength","current","setTimeout","scrollToEnd","_","offset","nativeEvent","layout","areEqual","prevProps","nextProps","prevFileUploads","nextFileUploads","every","prevFileUpload","MemoizedFileUploadPreview","React","memo","FileUploadPreview","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { FlatList, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { UploadProgressIndicator } from './UploadProgressIndicator';\n\nimport {\n FileUpload,\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 { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../icons/Close';\nimport { Warning } from '../../icons/Warning';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getIndicatorTypeForFileState, ProgressIndicatorTypes } from '../../utils/utils';\nimport { getFileSizeDisplayText } from '../Attachment/FileAttachment';\n\nconst FILE_PREVIEW_HEIGHT = 60;\nconst WARNING_ICON_SIZE = 16;\n\nconst styles = StyleSheet.create({\n dismiss: {\n borderRadius: 24,\n height: 24,\n position: 'absolute',\n right: 14,\n top: 4,\n width: 24,\n },\n fileContainer: {\n borderRadius: 12,\n borderWidth: 1,\n flexDirection: 'row',\n height: FILE_PREVIEW_HEIGHT,\n justifyContent: 'space-between',\n marginBottom: 8,\n padding: 8,\n },\n fileContentContainer: { flexDirection: 'row' },\n filenameText: {\n fontSize: 14,\n fontWeight: 'bold',\n paddingLeft: 10,\n },\n fileSizeText: {\n fontSize: 12,\n paddingLeft: 10,\n },\n fileTextContainer: {\n height: '100%',\n justifyContent: 'space-around',\n },\n flatList: { marginBottom: 12, maxHeight: FILE_PREVIEW_HEIGHT * 2.5 + 16 },\n overlay: {\n borderRadius: 12,\n marginLeft: 8,\n marginRight: 8,\n },\n unsupportedFile: {\n flexDirection: 'row',\n paddingLeft: 10,\n },\n unsupportedFileText: {\n fontSize: 16,\n },\n warningIconStyle: {\n borderRadius: 24,\n marginTop: 4,\n },\n});\n\nconst UnsupportedFileTypeOrFileSizeIndicator = ({\n indicatorType,\n item,\n}: {\n indicatorType: typeof ProgressIndicatorTypes[keyof typeof ProgressIndicatorTypes];\n item: FileUpload;\n}) => {\n const {\n theme: {\n colors: { accent_red, grey },\n messageInput: {\n fileUploadPreview: { fileSizeText },\n },\n },\n } = useTheme();\n\n const { t } = useTranslationContext();\n return indicatorType === ProgressIndicatorTypes.NOT_SUPPORTED ? (\n <View style={styles.unsupportedFile}>\n <Warning\n height={WARNING_ICON_SIZE}\n pathFill={accent_red}\n style={styles.warningIconStyle}\n width={WARNING_ICON_SIZE}\n />\n <Text style={[styles.unsupportedFileText, { color: grey }]}>\n {t('File type not supported')}\n </Text>\n </View>\n ) : (\n <Text style={[styles.fileSizeText, { color: grey }, fileSizeText]}>\n {item.file.duration ? item.file.duration : getFileSizeDisplayText(item.file.size)}\n </Text>\n );\n};\n\ntype FileUploadPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'fileUploads' | 'removeFile' | 'uploadFile'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'FileAttachmentIcon'>;\n\nconst FileUploadPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { FileAttachmentIcon, fileUploads, removeFile, uploadFile } = props;\n\n const flatListRef = useRef<FlatList<FileUpload> | null>(null);\n const [flatListWidth, setFlatListWidth] = useState(0);\n\n const {\n theme: {\n colors: { black, grey_whisper, overlay },\n messageInput: {\n fileUploadPreview: {\n dismiss,\n fileContainer,\n fileContentContainer,\n filenameText,\n fileTextContainer,\n flatList,\n },\n },\n },\n } = useTheme();\n\n const renderItem = ({ index, item }: { index: number; item: FileUpload }) => {\n const indicatorType = getIndicatorTypeForFileState(item.state);\n\n return (\n <>\n <UploadProgressIndicator\n action={() => {\n uploadFile({ newFile: item });\n }}\n style={styles.overlay}\n type={indicatorType}\n >\n <View\n style={[\n styles.fileContainer,\n index === fileUploads.length - 1\n ? {\n marginBottom: 0,\n }\n : {},\n {\n borderColor: grey_whisper,\n width: flatListWidth - 16,\n },\n fileContainer,\n ]}\n >\n <View style={[styles.fileContentContainer, fileContentContainer]}>\n <FileAttachmentIcon mimeType={item.file.type} />\n <View style={[styles.fileTextContainer, fileTextContainer]}>\n <Text\n numberOfLines={1}\n style={[\n styles.filenameText,\n {\n color: black,\n width:\n flatListWidth -\n 16 - // 16 = horizontal padding\n 40 - // 40 = file icon size\n 24 - // 24 = close icon size\n 24, // 24 = internal padding\n },\n filenameText,\n ]}\n >\n {item.file.name || ''}\n </Text>\n {indicatorType !== null && (\n <UnsupportedFileTypeOrFileSizeIndicator\n indicatorType={indicatorType}\n item={item}\n />\n )}\n </View>\n </View>\n </View>\n </UploadProgressIndicator>\n <TouchableOpacity\n onPress={() => {\n removeFile(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: overlay }, dismiss]}\n testID='remove-file-upload-preview'\n >\n <Close />\n </TouchableOpacity>\n </>\n );\n };\n\n const fileUploadsLength = fileUploads.length;\n\n useEffect(() => {\n if (fileUploadsLength && flatListRef.current) {\n setTimeout(() => flatListRef.current?.scrollToEnd(), 1);\n }\n }, [fileUploadsLength]);\n\n return fileUploadsLength ? (\n <FlatList\n data={fileUploads}\n getItemLayout={(_, index) => ({\n index,\n length: FILE_PREVIEW_HEIGHT + 8,\n offset: (FILE_PREVIEW_HEIGHT + 8) * index,\n })}\n keyExtractor={(item) => item.id}\n onLayout={({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setFlatListWidth(width);\n }}\n ref={flatListRef}\n renderItem={renderItem}\n style={[styles.flatList, flatList]}\n />\n ) : null;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n nextProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { fileUploads: prevFileUploads } = prevProps;\n const { fileUploads: nextFileUploads } = nextProps;\n\n return (\n prevFileUploads.length === nextFileUploads.length &&\n prevFileUploads.every(\n (prevFileUpload, index) => prevFileUpload.state === nextFileUploads[index].state,\n )\n );\n};\n\nconst MemoizedFileUploadPreview = React.memo(\n FileUploadPreviewWithContext,\n areEqual,\n) as typeof FileUploadPreviewWithContext;\n\nexport type FileUploadPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<FileUploadPreviewPropsWithContext<StreamChatGenerics>>;\n\n/**\n * FileUploadPreview\n * UI Component to preview the files set for upload\n */\nexport const FileUploadPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewProps<StreamChatGenerics>,\n) => {\n const { fileUploads, removeFile, uploadFile } = useMessageInputContext<StreamChatGenerics>();\n\n const { FileAttachmentIcon } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedFileUploadPreview\n {...{ FileAttachmentIcon, fileUploads, removeFile, uploadFile }}\n {...props}\n />\n );\n};\n\nFileUploadPreview.displayName = 'FileUploadPreview{messageInput{fileUploadPreview}}';\n"]}
|