@sendbird/uikit-react 3.6.9 → 3.6.11-beta.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/App.js +55 -55
- package/CHANGELOG.md +6 -2
- package/Channel/components/ChannelHeader.js +22 -22
- package/Channel/components/ChannelUI.js +48 -48
- package/Channel/components/FileViewer.js +18 -18
- package/Channel/components/FrozenNotification.js +4 -4
- package/Channel/components/Message.js +46 -44
- package/Channel/components/Message.js.map +1 -1
- package/Channel/components/MessageInput.js +34 -34
- package/Channel/components/MessageList.js +75 -46
- package/Channel/components/MessageList.js.map +1 -1
- package/Channel/components/RemoveMessageModal.js +22 -22
- package/Channel/components/SuggestedMentionList.js +20 -20
- package/Channel/components/TypingIndicator.js +18 -18
- package/Channel/components/UnreadCount.js +4 -4
- package/Channel/context.js +15 -15
- package/Channel/utils/compareMessagesForGrouping.js +7 -7
- package/Channel/utils/getMessagePartsInfo.js +8 -8
- package/Channel.js +48 -48
- package/ChannelList/components/AddChannel.js +16 -16
- package/ChannelList/components/ChannelListHeader.js +6 -6
- package/ChannelList/components/ChannelListUI.js +33 -33
- package/ChannelList/components/ChannelPreview.js +29 -29
- package/ChannelList/components/ChannelPreviewAction.js +15 -15
- package/ChannelList/context.js +9 -9
- package/ChannelList.js +33 -33
- package/{ChannelListProvider-ba11ee5f.js → ChannelListProvider-52997aa4.js} +28 -33
- package/ChannelListProvider-52997aa4.js.map +1 -0
- package/{ChannelProvider-7400e8f6.js → ChannelProvider-c675e242.js} +26 -20
- package/ChannelProvider-c675e242.js.map +1 -0
- package/ChannelSettings/components/ChannelProfile.js +13 -13
- package/ChannelSettings/components/ChannelSettingsUI.js +18 -18
- package/ChannelSettings/components/EditDetailsModal.js +13 -13
- package/ChannelSettings/components/LeaveChannel.js +12 -12
- package/ChannelSettings/components/ModerationPanel.js +15 -15
- package/ChannelSettings/components/UserListItem.js +11 -11
- package/ChannelSettings/components/UserPanel.js +14 -14
- package/ChannelSettings/context.js +3 -3
- package/ChannelSettings.js +18 -18
- package/CreateChannel/components/CreateChannelUI.js +14 -14
- package/CreateChannel/components/InviteUsers.js +14 -14
- package/CreateChannel/components/InviteUsers.js.map +1 -1
- package/CreateChannel/components/SelectChannelType.js +11 -11
- package/CreateChannel/context.js +4 -4
- package/CreateChannel.js +14 -14
- package/{CreateChannelProvider-b2487387.js → CreateChannelProvider-cc40c17f.js} +1 -1
- package/{CreateChannelProvider-b2487387.js.map → CreateChannelProvider-cc40c17f.js.map} +1 -1
- package/CreateOpenChannel/components/CreateOpenChannelUI.js +11 -11
- package/CreateOpenChannel/context.js +1 -1
- package/CreateOpenChannel.js +11 -11
- package/EditUserProfile/components/EditUserProfileUI.js +13 -13
- package/EditUserProfile.js +13 -13
- package/{LocalizationContext-c9b218d4.js → LocalizationContext-1d7d5046.js} +3 -3
- package/{LocalizationContext-c9b218d4.js.map → LocalizationContext-1d7d5046.js.map} +1 -1
- package/{MediaQueryContext-532b0a77.js → MediaQueryContext-a8f216c8.js} +1 -1
- package/{MediaQueryContext-532b0a77.js.map → MediaQueryContext-a8f216c8.js.map} +1 -1
- package/{MemberList-15511dd2.js → MemberList-10f76588.js} +6 -6
- package/{MemberList-15511dd2.js.map → MemberList-10f76588.js.map} +1 -1
- package/MessageSearch/components/MessageSearchUI.js +13 -13
- package/MessageSearch/context.js +1 -1
- package/MessageSearch.js +13 -13
- package/OpenChannel/components/FrozenChannelNotification.js +4 -4
- package/OpenChannel/components/OpenChannelHeader.js +12 -12
- package/OpenChannel/components/OpenChannelInput.js +20 -20
- package/OpenChannel/components/OpenChannelMessage.js +31 -31
- package/OpenChannel/components/OpenChannelMessageList.js +34 -34
- package/OpenChannel/components/OpenChannelUI.js +34 -34
- package/OpenChannel/context.js +8 -8
- package/OpenChannel.js +34 -34
- package/OpenChannelList/components/OpenChannelListUI.js +15 -15
- package/OpenChannelList/components/OpenChannelPreview.js +3 -3
- package/OpenChannelList/context.js +3 -3
- package/OpenChannelList.js +15 -15
- package/{OpenChannelListProvider-a79c47d4.js → OpenChannelListProvider-ea45dd27.js} +3 -3
- package/{OpenChannelListProvider-a79c47d4.js.map → OpenChannelListProvider-ea45dd27.js.map} +1 -1
- package/{OpenChannelProvider-4f21a22d.js → OpenChannelProvider-7566d5ba.js} +8 -8
- package/OpenChannelProvider-7566d5ba.js.map +1 -0
- package/OpenChannelSettings/components/EditDetailsModal.js +14 -14
- package/OpenChannelSettings/components/OpenChannelProfile.js +14 -14
- package/OpenChannelSettings/components/OpenChannelSettingsUI.js +18 -18
- package/OpenChannelSettings/components/OperatorUI.js +17 -17
- package/OpenChannelSettings/components/ParticipantUI.js +15 -15
- package/OpenChannelSettings/context.js +3 -3
- package/OpenChannelSettings.js +18 -18
- package/{RemoveMessageModal-62276928.js → RemoveMessageModal-052a7531.js} +5 -5
- package/{RemoveMessageModal-62276928.js.map → RemoveMessageModal-052a7531.js.map} +1 -1
- package/SendbirdProvider.js +17 -17
- package/SendbirdProvider.js.map +1 -1
- package/Thread/components/ParentMessageInfo.js +38 -38
- package/Thread/components/ParentMessageInfoItem.js +25 -25
- package/Thread/components/ThreadHeader.js +6 -6
- package/Thread/components/ThreadList.js +42 -42
- package/Thread/components/ThreadListItem.js +42 -42
- package/Thread/components/ThreadMessageInput.js +34 -34
- package/Thread/components/ThreadUI.js +47 -47
- package/Thread/context.js +12 -12
- package/Thread.js +47 -47
- package/{ThreadProvider-593b6c29.js → ThreadProvider-9c3f6dd1.js} +31 -9
- package/ThreadProvider-9c3f6dd1.js.map +1 -0
- package/{UserProfileContext-36e341fd.js → UserProfileContext-050e38d1.js} +1 -1
- package/{UserProfileContext-36e341fd.js.map → UserProfileContext-050e38d1.js.map} +1 -1
- package/VoicePlayer/context.js +3 -3
- package/VoicePlayer/useVoicePlayer.js +11 -11
- package/VoiceRecorder/context.js +11 -11
- package/VoiceRecorder/useVoiceRecorder.js +10 -10
- package/{WebAudioUtils-ca6a01e4.js → WebAudioUtils-feb2f826.js} +2 -2
- package/{WebAudioUtils-ca6a01e4.js.map → WebAudioUtils-feb2f826.js.map} +1 -1
- package/{_rollupPluginBabelHelpers-ea73a031.js → _rollupPluginBabelHelpers-127d506a.js} +1 -1
- package/_rollupPluginBabelHelpers-127d506a.js.map +1 -0
- package/{actionTypes-bd59e881.js → actionTypes-6978f57c.js} +1 -1
- package/{actionTypes-bd59e881.js.map → actionTypes-6978f57c.js.map} +1 -1
- package/cjs/App.js +55 -55
- package/cjs/Channel/components/ChannelHeader.js +22 -22
- package/cjs/Channel/components/ChannelUI.js +48 -48
- package/cjs/Channel/components/FileViewer.js +18 -18
- package/cjs/Channel/components/FrozenNotification.js +4 -4
- package/cjs/Channel/components/Message.js +46 -44
- package/cjs/Channel/components/Message.js.map +1 -1
- package/cjs/Channel/components/MessageInput.js +34 -34
- package/cjs/Channel/components/MessageList.js +75 -46
- package/cjs/Channel/components/MessageList.js.map +1 -1
- package/cjs/Channel/components/RemoveMessageModal.js +22 -22
- package/cjs/Channel/components/SuggestedMentionList.js +20 -20
- package/cjs/Channel/components/TypingIndicator.js +18 -18
- package/cjs/Channel/components/UnreadCount.js +4 -4
- package/cjs/Channel/context.js +15 -15
- package/cjs/Channel/utils/compareMessagesForGrouping.js +7 -7
- package/cjs/Channel/utils/getMessagePartsInfo.js +8 -8
- package/cjs/Channel.js +48 -48
- package/cjs/ChannelList/components/AddChannel.js +16 -16
- package/cjs/ChannelList/components/ChannelListHeader.js +6 -6
- package/cjs/ChannelList/components/ChannelListUI.js +33 -33
- package/cjs/ChannelList/components/ChannelPreview.js +29 -29
- package/cjs/ChannelList/components/ChannelPreviewAction.js +15 -15
- package/cjs/ChannelList/context.js +9 -9
- package/cjs/ChannelList.js +33 -33
- package/cjs/{ChannelListProvider-69db317f.js → ChannelListProvider-50b25757.js} +28 -33
- package/cjs/ChannelListProvider-50b25757.js.map +1 -0
- package/cjs/{ChannelProvider-2ee005bc.js → ChannelProvider-1d47dc41.js} +26 -20
- package/cjs/ChannelProvider-1d47dc41.js.map +1 -0
- package/cjs/ChannelSettings/components/ChannelProfile.js +13 -13
- package/cjs/ChannelSettings/components/ChannelSettingsUI.js +18 -18
- package/cjs/ChannelSettings/components/EditDetailsModal.js +13 -13
- package/cjs/ChannelSettings/components/LeaveChannel.js +12 -12
- package/cjs/ChannelSettings/components/ModerationPanel.js +15 -15
- package/cjs/ChannelSettings/components/UserListItem.js +11 -11
- package/cjs/ChannelSettings/components/UserPanel.js +14 -14
- package/cjs/ChannelSettings/context.js +3 -3
- package/cjs/ChannelSettings.js +18 -18
- package/cjs/CreateChannel/components/CreateChannelUI.js +14 -14
- package/cjs/CreateChannel/components/InviteUsers.js +14 -14
- package/cjs/CreateChannel/components/InviteUsers.js.map +1 -1
- package/cjs/CreateChannel/components/SelectChannelType.js +11 -11
- package/cjs/CreateChannel/context.js +4 -4
- package/cjs/CreateChannel.js +14 -14
- package/cjs/{CreateChannelProvider-1c4d626c.js → CreateChannelProvider-742f0f71.js} +1 -1
- package/cjs/{CreateChannelProvider-1c4d626c.js.map → CreateChannelProvider-742f0f71.js.map} +1 -1
- package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js +11 -11
- package/cjs/CreateOpenChannel/context.js +1 -1
- package/cjs/CreateOpenChannel.js +11 -11
- package/cjs/EditUserProfile/components/EditUserProfileUI.js +13 -13
- package/cjs/EditUserProfile.js +13 -13
- package/cjs/{LocalizationContext-eb7a59da.js → LocalizationContext-9e45201f.js} +3 -3
- package/cjs/{LocalizationContext-eb7a59da.js.map → LocalizationContext-9e45201f.js.map} +1 -1
- package/cjs/{MediaQueryContext-ca045060.js → MediaQueryContext-0b9f5e79.js} +1 -1
- package/cjs/{MediaQueryContext-ca045060.js.map → MediaQueryContext-0b9f5e79.js.map} +1 -1
- package/cjs/{MemberList-eea5c64b.js → MemberList-dd79130e.js} +6 -6
- package/cjs/{MemberList-eea5c64b.js.map → MemberList-dd79130e.js.map} +1 -1
- package/cjs/MessageSearch/components/MessageSearchUI.js +13 -13
- package/cjs/MessageSearch/context.js +1 -1
- package/cjs/MessageSearch.js +13 -13
- package/cjs/OpenChannel/components/FrozenChannelNotification.js +4 -4
- package/cjs/OpenChannel/components/OpenChannelHeader.js +12 -12
- package/cjs/OpenChannel/components/OpenChannelInput.js +20 -20
- package/cjs/OpenChannel/components/OpenChannelMessage.js +31 -31
- package/cjs/OpenChannel/components/OpenChannelMessageList.js +34 -34
- package/cjs/OpenChannel/components/OpenChannelUI.js +34 -34
- package/cjs/OpenChannel/context.js +8 -8
- package/cjs/OpenChannel.js +34 -34
- package/cjs/OpenChannelList/components/OpenChannelListUI.js +15 -15
- package/cjs/OpenChannelList/components/OpenChannelPreview.js +3 -3
- package/cjs/OpenChannelList/context.js +3 -3
- package/cjs/OpenChannelList.js +15 -15
- package/cjs/{OpenChannelListProvider-25a0f74d.js → OpenChannelListProvider-0947eaab.js} +3 -3
- package/cjs/{OpenChannelListProvider-25a0f74d.js.map → OpenChannelListProvider-0947eaab.js.map} +1 -1
- package/cjs/{OpenChannelProvider-036e515e.js → OpenChannelProvider-cdb5efab.js} +8 -8
- package/cjs/OpenChannelProvider-cdb5efab.js.map +1 -0
- package/cjs/OpenChannelSettings/components/EditDetailsModal.js +14 -14
- package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +14 -14
- package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +18 -18
- package/cjs/OpenChannelSettings/components/OperatorUI.js +17 -17
- package/cjs/OpenChannelSettings/components/ParticipantUI.js +15 -15
- package/cjs/OpenChannelSettings/context.js +3 -3
- package/cjs/OpenChannelSettings.js +18 -18
- package/cjs/{RemoveMessageModal-7ed24af4.js → RemoveMessageModal-ff40b635.js} +5 -5
- package/cjs/{RemoveMessageModal-7ed24af4.js.map → RemoveMessageModal-ff40b635.js.map} +1 -1
- package/cjs/SendbirdProvider.js +17 -17
- package/cjs/SendbirdProvider.js.map +1 -1
- package/cjs/Thread/components/ParentMessageInfo.js +38 -38
- package/cjs/Thread/components/ParentMessageInfoItem.js +25 -25
- package/cjs/Thread/components/ThreadHeader.js +6 -6
- package/cjs/Thread/components/ThreadList.js +42 -42
- package/cjs/Thread/components/ThreadListItem.js +42 -42
- package/cjs/Thread/components/ThreadMessageInput.js +34 -34
- package/cjs/Thread/components/ThreadUI.js +47 -47
- package/cjs/Thread/context.js +12 -12
- package/cjs/Thread.js +47 -47
- package/cjs/{ThreadProvider-4c93de8a.js → ThreadProvider-ecea486a.js} +31 -9
- package/cjs/ThreadProvider-ecea486a.js.map +1 -0
- package/cjs/{UserProfileContext-abe57718.js → UserProfileContext-7e36a6f3.js} +1 -1
- package/cjs/{UserProfileContext-abe57718.js.map → UserProfileContext-7e36a6f3.js.map} +1 -1
- package/cjs/VoicePlayer/context.js +3 -3
- package/cjs/VoicePlayer/useVoicePlayer.js +11 -11
- package/cjs/VoiceRecorder/context.js +11 -11
- package/cjs/VoiceRecorder/useVoiceRecorder.js +10 -10
- package/cjs/{WebAudioUtils-348c38b8.js → WebAudioUtils-15df1d2d.js} +2 -2
- package/cjs/{WebAudioUtils-348c38b8.js.map → WebAudioUtils-15df1d2d.js.map} +1 -1
- package/cjs/{_rollupPluginBabelHelpers-a85bd364.js → _rollupPluginBabelHelpers-32e06a4f.js} +1 -1
- package/cjs/_rollupPluginBabelHelpers-32e06a4f.js.map +1 -0
- package/cjs/{actionTypes-412ca236.js → actionTypes-266f0e4d.js} +1 -1
- package/cjs/{actionTypes-412ca236.js.map → actionTypes-266f0e4d.js.map} +1 -1
- package/cjs/{color-2f1198fc.js → color-da906a8e.js} +1 -1
- package/cjs/{color-2f1198fc.js.map → color-da906a8e.js.map} +1 -1
- package/cjs/{compareIds-89c258a0.js → compareIds-6f4238a7.js} +1 -1
- package/cjs/{compareIds-89c258a0.js.map → compareIds-6f4238a7.js.map} +1 -1
- package/cjs/{const-24d498a6.js → const-81c5b6fd.js} +1 -1
- package/cjs/{const-24d498a6.js.map → const-81c5b6fd.js.map} +1 -1
- package/cjs/{const-95881697.js → const-8a80e7a4.js} +1 -1
- package/cjs/{const-95881697.js.map → const-8a80e7a4.js.map} +1 -1
- package/cjs/{consts-2957b793.js → consts-a9e07b6c.js} +1 -1
- package/cjs/{consts-2957b793.js.map → consts-a9e07b6c.js.map} +1 -1
- package/cjs/{consts-7b830cc5.js → consts-b63bb532.js} +1 -1
- package/cjs/{consts-7b830cc5.js.map → consts-b63bb532.js.map} +1 -1
- package/cjs/{consts-dde4f05d.js → consts-cb188d77.js} +1 -1
- package/cjs/{consts-dde4f05d.js.map → consts-cb188d77.js.map} +1 -1
- package/cjs/{consts-c5d38c32.js → consts-cbf7ddd6.js} +1 -1
- package/cjs/{consts-c5d38c32.js.map → consts-cbf7ddd6.js.map} +1 -1
- package/cjs/{context-b53bf38e.js → context-827c4e18.js} +2 -2
- package/cjs/{context-b53bf38e.js.map → context-827c4e18.js.map} +1 -1
- package/cjs/dist/index.css +0 -1
- package/cjs/dist/index.css.map +1 -1
- package/cjs/{index-0f229ac7.js → index-0972d3a4.js} +4 -4
- package/cjs/{index-0f229ac7.js.map → index-0972d3a4.js.map} +1 -1
- package/cjs/{index-03655429.js → index-14c60240.js} +2 -2
- package/cjs/{index-03655429.js.map → index-14c60240.js.map} +1 -1
- package/cjs/{index-c9a4a555.js → index-159278b7.js} +1 -1
- package/cjs/{index-c9a4a555.js.map → index-159278b7.js.map} +1 -1
- package/cjs/{index-de4da1f2.js → index-1f4a47f9.js} +2 -2
- package/cjs/{index-de4da1f2.js.map → index-1f4a47f9.js.map} +1 -1
- package/cjs/{index-2fd388b9.js → index-2beeddcd.js} +5 -5
- package/cjs/{index-2fd388b9.js.map → index-2beeddcd.js.map} +1 -1
- package/cjs/{index-494b5c25.js → index-2cf76116.js} +3 -3
- package/cjs/{index-494b5c25.js.map → index-2cf76116.js.map} +1 -1
- package/cjs/{index-f40c4cf0.js → index-52a2c7ef.js} +2 -2
- package/cjs/{index-f40c4cf0.js.map → index-52a2c7ef.js.map} +1 -1
- package/cjs/{index-ae51b0df.js → index-5466fdd6.js} +2 -2
- package/cjs/{index-ae51b0df.js.map → index-5466fdd6.js.map} +1 -1
- package/cjs/{index-6e0a495a.js → index-58460943.js} +3 -3
- package/cjs/{index-6e0a495a.js.map → index-58460943.js.map} +1 -1
- package/cjs/{index-910f48df.js → index-6add5824.js} +6 -6
- package/cjs/{index-910f48df.js.map → index-6add5824.js.map} +1 -1
- package/cjs/{index-613acaa0.js → index-6afd0c95.js} +3 -3
- package/cjs/{index-613acaa0.js.map → index-6afd0c95.js.map} +1 -1
- package/cjs/{index-28c0a443.js → index-750b3845.js} +4 -4
- package/cjs/{index-28c0a443.js.map → index-750b3845.js.map} +1 -1
- package/cjs/{index-f0b55959.js → index-859638a8.js} +5 -5
- package/cjs/{index-f0b55959.js.map → index-859638a8.js.map} +1 -1
- package/cjs/{index-9813a2f9.js → index-93e76826.js} +3 -3
- package/cjs/{index-9813a2f9.js.map → index-93e76826.js.map} +1 -1
- package/cjs/{index-2fbc5922.js → index-9f4d38fe.js} +4 -4
- package/cjs/{index-2fbc5922.js.map → index-9f4d38fe.js.map} +1 -1
- package/cjs/{index-0f7049fb.js → index-c6a8de13.js} +7 -7
- package/cjs/{index-0f7049fb.js.map → index-c6a8de13.js.map} +1 -1
- package/cjs/{index-5628e0c0.js → index-cb306d53.js} +1 -1
- package/cjs/{index-5628e0c0.js.map → index-cb306d53.js.map} +1 -1
- package/cjs/{index-4d39de27.js → index-d957a2b4.js} +9 -9
- package/cjs/{index-4d39de27.js.map → index-d957a2b4.js.map} +1 -1
- package/cjs/{index-967cbc91.js → index-f2228baf.js} +2 -2
- package/cjs/index-f2228baf.js.map +1 -0
- package/cjs/{index-7e10ab98.js → index-f6688c5a.js} +9 -4
- package/cjs/{index-7e10ab98.js.map → index-f6688c5a.js.map} +1 -1
- package/cjs/{index-1f796e5a.js → index-fad8e38b.js} +4 -4
- package/cjs/{index-1f796e5a.js.map → index-fad8e38b.js.map} +1 -1
- package/cjs/index.js +59 -59
- package/cjs/{index.module-5c951066.js → index.module-5c934abb.js} +1 -1
- package/cjs/{index.module-5c951066.js.map → index.module-5c934abb.js.map} +1 -1
- package/cjs/package.json +2 -2
- package/cjs/{resolvedReplyType-314fee09.js → resolvedReplyType-dabf3c08.js} +1 -1
- package/cjs/{resolvedReplyType-314fee09.js.map → resolvedReplyType-dabf3c08.js.map} +1 -1
- package/cjs/sendbirdSelectors.js +3 -3
- package/cjs/{stringFormatterUtils-3e53394c.js → stringFormatterUtils-9b35afa3.js} +3 -3
- package/cjs/{stringFormatterUtils-3e53394c.js.map → stringFormatterUtils-9b35afa3.js.map} +1 -1
- package/cjs/{stringSet-b75b75ae.js → stringSet-42559b9c.js} +1 -1
- package/cjs/{stringSet-b75b75ae.js.map → stringSet-42559b9c.js.map} +1 -1
- package/cjs/{tokenize-42536b7a.js → tokenize-f3db7c7b.js} +2 -2
- package/cjs/{tokenize-42536b7a.js.map → tokenize-f3db7c7b.js.map} +1 -1
- package/cjs/{topics-2c35cfd7.js → topics-f8d48fd6.js} +1 -1
- package/cjs/{topics-2c35cfd7.js.map → topics-f8d48fd6.js.map} +1 -1
- package/cjs/{types-382588b3.js → types-08752342.js} +1 -1
- package/cjs/{types-382588b3.js.map → types-08752342.js.map} +1 -1
- package/cjs/ui/Accordion.js +2 -2
- package/cjs/ui/AccordionGroup.js +2 -2
- package/cjs/ui/AdminMessage.js +2 -2
- package/cjs/ui/Avatar.js +1 -1
- package/cjs/ui/Badge.js +4 -4
- package/cjs/ui/BottomSheet.js +4 -4
- package/cjs/ui/Button.js +2 -2
- package/cjs/ui/ChannelAvatar.js +2 -2
- package/cjs/ui/ConnectionStatus.js +4 -4
- package/cjs/ui/ContextMenu.js +6 -6
- package/cjs/ui/DateSeparator.js +3 -3
- package/cjs/ui/EmojiReactions.js +14 -14
- package/cjs/ui/FileMessageItemBody.js +7 -7
- package/cjs/ui/FileViewer.js +12 -12
- package/cjs/ui/IconButton.js +1 -1
- package/cjs/ui/Input.js +2 -2
- package/cjs/ui/Label.js +2 -2
- package/cjs/ui/LinkLabel.js +2 -2
- package/cjs/ui/MentionLabel.js +11 -11
- package/cjs/ui/MentionUserLabel.js +1 -1
- package/cjs/ui/MessageContent.js +31 -31
- package/cjs/ui/MessageInput/hooks/usePaste.js +4 -4
- package/cjs/ui/MessageInput.js +26 -30
- package/cjs/ui/MessageInput.js.map +1 -1
- package/cjs/ui/MessageItemMenu.js +9 -9
- package/cjs/ui/MessageItemReactionMenu.js +9 -9
- package/cjs/ui/MessageSearchFileItem.js +12 -12
- package/cjs/ui/MessageSearchItem.js +8 -8
- package/cjs/ui/MessageStatus.js +11 -11
- package/cjs/ui/Modal.js +9 -9
- package/cjs/ui/OGMessageItemBody.js +14 -14
- package/cjs/ui/OpenChannelAdminMessage.js +2 -2
- package/cjs/ui/OpenChannelAvatar.js +5 -5
- package/cjs/ui/OpenchannelConversationHeader.js +6 -6
- package/cjs/ui/OpenchannelFileMessage.js +16 -16
- package/cjs/ui/OpenchannelOGMessage.js +18 -18
- package/cjs/ui/OpenchannelThumbnailMessage.js +15 -15
- package/cjs/ui/OpenchannelUserMessage.js +16 -16
- package/cjs/ui/PlaceHolder.js +5 -5
- package/cjs/ui/PlaybackTime.js +2 -2
- package/cjs/ui/QuoteMessage.js +8 -8
- package/cjs/ui/QuoteMessageInput.js +8 -8
- package/cjs/ui/ReactionBadge.js +2 -2
- package/cjs/ui/ReactionButton.js +4 -4
- package/cjs/ui/SortByRow.js +1 -1
- package/cjs/ui/TextButton.js +1 -1
- package/cjs/ui/TextMessageItemBody.js +14 -14
- package/cjs/ui/ThreadReplies.js +5 -5
- package/cjs/ui/ThumbnailMessageItemBody.js +7 -7
- package/cjs/ui/Toggle.js +1 -1
- package/cjs/ui/Tooltip.js +2 -2
- package/cjs/ui/UnknownMessageItemBody.js +7 -7
- package/cjs/ui/UserListItem.js +11 -11
- package/cjs/ui/UserProfile.js +9 -9
- package/cjs/ui/VoiceMessageItemBody.js +11 -11
- package/cjs/ui/VoiceMessgeInput.js +7 -7
- package/cjs/ui/Word.js +11 -11
- package/cjs/{useHandleUploadFiles-84bd5a9a.js → useHandleUploadFiles-c411fe73.js} +10 -10
- package/cjs/{useHandleUploadFiles-84bd5a9a.js.map → useHandleUploadFiles-c411fe73.js.map} +1 -1
- package/cjs/{useLongPress-49aa9a49.js → useLongPress-1d936b57.js} +3 -3
- package/cjs/{useLongPress-49aa9a49.js.map → useLongPress-1d936b57.js.map} +1 -1
- package/cjs/{useSendMultipleFilesMessage-c5266ca8.js → useSendMultipleFilesMessage-68cb79a9.js} +4 -4
- package/cjs/{useSendMultipleFilesMessage-c5266ca8.js.map → useSendMultipleFilesMessage-68cb79a9.js.map} +1 -1
- package/cjs/useSendbirdStateContext.js +1 -1
- package/cjs/utils/message/isVoiceMessage.js +3 -3
- package/cjs/{utils-1e9e97b5.js → utils-4446c8a7.js} +11 -6
- package/cjs/utils-4446c8a7.js.map +1 -0
- package/cjs/{utils-4e18a724.js → utils-598f212e.js} +1 -1
- package/cjs/{utils-4e18a724.js.map → utils-598f212e.js.map} +1 -1
- package/cjs/{utils-d6285655.js → utils-86333a85.js} +3 -3
- package/cjs/{utils-d6285655.js.map → utils-86333a85.js.map} +1 -1
- package/cjs/{utils-b3e9e1b8.js → utils-b08188c3.js} +2 -2
- package/cjs/{utils-b3e9e1b8.js.map → utils-b08188c3.js.map} +1 -1
- package/cjs/{utils-8958cb75.js → utils-b5676d3d.js} +1 -1
- package/cjs/{utils-8958cb75.js.map → utils-b5676d3d.js.map} +1 -1
- package/cjs/{utils-d5a929c9.js → utils-de4ebd32.js} +1 -1
- package/cjs/{utils-d5a929c9.js.map → utils-de4ebd32.js.map} +1 -1
- package/cjs/{uuid-34728ced.js → uuid-d0dc3474.js} +1 -1
- package/cjs/{uuid-34728ced.js.map → uuid-d0dc3474.js.map} +1 -1
- package/cjs/withSendbird.js +1 -1
- package/{color-4cef414f.js → color-80ab0797.js} +1 -1
- package/{color-4cef414f.js.map → color-80ab0797.js.map} +1 -1
- package/{compareIds-7e93f2e7.js → compareIds-f24a9d12.js} +1 -1
- package/{compareIds-7e93f2e7.js.map → compareIds-f24a9d12.js.map} +1 -1
- package/{const-6c10846e.js → const-7d3f5989.js} +1 -1
- package/{const-6c10846e.js.map → const-7d3f5989.js.map} +1 -1
- package/{const-48ffde74.js → const-fb4ba209.js} +1 -1
- package/{const-48ffde74.js.map → const-fb4ba209.js.map} +1 -1
- package/{consts-aad4bf65.js → consts-1155d9f8.js} +1 -1
- package/{consts-aad4bf65.js.map → consts-1155d9f8.js.map} +1 -1
- package/{consts-a979689d.js → consts-5230ea9f.js} +1 -1
- package/{consts-a979689d.js.map → consts-5230ea9f.js.map} +1 -1
- package/{consts-439d56b4.js → consts-9cb946fd.js} +1 -1
- package/{consts-439d56b4.js.map → consts-9cb946fd.js.map} +1 -1
- package/{consts-bd684c8d.js → consts-a3d3287a.js} +1 -1
- package/{consts-bd684c8d.js.map → consts-a3d3287a.js.map} +1 -1
- package/{context-9946197c.js → context-b787a386.js} +2 -2
- package/{context-9946197c.js.map → context-b787a386.js.map} +1 -1
- package/dist/index.css +0 -1
- package/dist/index.css.map +1 -1
- package/{index-0a50eba0.js → index-011f0166.js} +6 -6
- package/{index-0a50eba0.js.map → index-011f0166.js.map} +1 -1
- package/{index-373d3069.js → index-0f1ca805.js} +4 -4
- package/{index-373d3069.js.map → index-0f1ca805.js.map} +1 -1
- package/{index-9083293d.js → index-1dc25336.js} +4 -4
- package/{index-9083293d.js.map → index-1dc25336.js.map} +1 -1
- package/{index-320a1756.js → index-30ccc7d1.js} +2 -2
- package/index-30ccc7d1.js.map +1 -0
- package/{index-bae83553.js → index-33ce0e5c.js} +4 -4
- package/{index-bae83553.js.map → index-33ce0e5c.js.map} +1 -1
- package/{index-6bca558b.js → index-4a754b7d.js} +7 -7
- package/{index-6bca558b.js.map → index-4a754b7d.js.map} +1 -1
- package/{index-a0bd5ef9.js → index-4c2e86ae.js} +3 -3
- package/{index-a0bd5ef9.js.map → index-4c2e86ae.js.map} +1 -1
- package/{index-1833cc50.js → index-644f4972.js} +2 -2
- package/{index-1833cc50.js.map → index-644f4972.js.map} +1 -1
- package/{index-d9b66555.js → index-6cc54ebd.js} +5 -5
- package/{index-d9b66555.js.map → index-6cc54ebd.js.map} +1 -1
- package/{index-c5cb0bb2.js → index-7d38c662.js} +4 -4
- package/{index-c5cb0bb2.js.map → index-7d38c662.js.map} +1 -1
- package/{index-825c96d3.js → index-7fdcc106.js} +3 -3
- package/{index-825c96d3.js.map → index-7fdcc106.js.map} +1 -1
- package/{index-516ad99d.js → index-8107de87.js} +1 -1
- package/{index-516ad99d.js.map → index-8107de87.js.map} +1 -1
- package/{index-2d23ff73.js → index-943e51f9.js} +9 -5
- package/{index-2d23ff73.js.map → index-943e51f9.js.map} +1 -1
- package/{index-b346dc02.js → index-b490e8af.js} +9 -9
- package/{index-b346dc02.js.map → index-b490e8af.js.map} +1 -1
- package/{index-e2afa53f.js → index-b6042797.js} +1 -1
- package/{index-e2afa53f.js.map → index-b6042797.js.map} +1 -1
- package/{index-3370a58d.js → index-bc42f0e9.js} +2 -2
- package/{index-3370a58d.js.map → index-bc42f0e9.js.map} +1 -1
- package/{index-fa19fef7.js → index-ca44517a.js} +2 -2
- package/{index-fa19fef7.js.map → index-ca44517a.js.map} +1 -1
- package/{index-44d3dac3.js → index-d32155ad.js} +5 -5
- package/{index-44d3dac3.js.map → index-d32155ad.js.map} +1 -1
- package/{index-6d0ae6a0.js → index-d8c8e716.js} +3 -3
- package/{index-6d0ae6a0.js.map → index-d8c8e716.js.map} +1 -1
- package/{index-c323f04b.js → index-dd767201.js} +3 -3
- package/{index-c323f04b.js.map → index-dd767201.js.map} +1 -1
- package/{index-526cbeea.js → index-fff2d336.js} +2 -2
- package/{index-526cbeea.js.map → index-fff2d336.js.map} +1 -1
- package/index.d.ts +9 -11
- package/index.js +59 -59
- package/{index.module-efef0194.js → index.module-0935752c.js} +1 -1
- package/{index.module-efef0194.js.map → index.module-0935752c.js.map} +1 -1
- package/package.json +2 -2
- package/{resolvedReplyType-84f1270f.js → resolvedReplyType-19c339c2.js} +1 -1
- package/{resolvedReplyType-84f1270f.js.map → resolvedReplyType-19c339c2.js.map} +1 -1
- package/sendbirdSelectors.js +3 -3
- package/{stringFormatterUtils-beea8d82.js → stringFormatterUtils-8cdfbc30.js} +3 -3
- package/{stringFormatterUtils-beea8d82.js.map → stringFormatterUtils-8cdfbc30.js.map} +1 -1
- package/{stringSet-9fe06e0d.js → stringSet-4010aa20.js} +1 -1
- package/{stringSet-9fe06e0d.js.map → stringSet-4010aa20.js.map} +1 -1
- package/{tokenize-d34eb5c6.js → tokenize-5d004ff2.js} +2 -2
- package/{tokenize-d34eb5c6.js.map → tokenize-5d004ff2.js.map} +1 -1
- package/{topics-edd6182d.js → topics-e010c6d3.js} +1 -1
- package/{topics-edd6182d.js.map → topics-e010c6d3.js.map} +1 -1
- package/{types-269fec15.js → types-933c231a.js} +1 -1
- package/{types-269fec15.js.map → types-933c231a.js.map} +1 -1
- package/ui/Accordion.js +2 -2
- package/ui/AccordionGroup.js +2 -2
- package/ui/AdminMessage.js +2 -2
- package/ui/Avatar.js +1 -1
- package/ui/Badge.js +4 -4
- package/ui/BottomSheet.js +4 -4
- package/ui/Button.js +2 -2
- package/ui/ChannelAvatar.js +2 -2
- package/ui/ConnectionStatus.js +4 -4
- package/ui/ContextMenu.js +6 -6
- package/ui/DateSeparator.js +3 -3
- package/ui/EmojiReactions.js +14 -14
- package/ui/FileMessageItemBody.js +7 -7
- package/ui/FileViewer.js +12 -12
- package/ui/IconButton.js +1 -1
- package/ui/Input.js +2 -2
- package/ui/Label.js +2 -2
- package/ui/LinkLabel.js +2 -2
- package/ui/MentionLabel.js +11 -11
- package/ui/MentionUserLabel.js +1 -1
- package/ui/MessageContent.js +31 -31
- package/ui/MessageInput/hooks/usePaste.js +4 -4
- package/ui/MessageInput.js +26 -30
- package/ui/MessageInput.js.map +1 -1
- package/ui/MessageItemMenu.js +9 -9
- package/ui/MessageItemReactionMenu.js +9 -9
- package/ui/MessageSearchFileItem.js +12 -12
- package/ui/MessageSearchItem.js +8 -8
- package/ui/MessageStatus.js +11 -11
- package/ui/Modal.js +9 -9
- package/ui/OGMessageItemBody.js +14 -14
- package/ui/OpenChannelAdminMessage.js +2 -2
- package/ui/OpenChannelAvatar.js +5 -5
- package/ui/OpenchannelConversationHeader.js +6 -6
- package/ui/OpenchannelFileMessage.js +16 -16
- package/ui/OpenchannelOGMessage.js +18 -18
- package/ui/OpenchannelThumbnailMessage.js +15 -15
- package/ui/OpenchannelUserMessage.js +16 -16
- package/ui/PlaceHolder.js +5 -5
- package/ui/PlaybackTime.js +2 -2
- package/ui/QuoteMessage.js +8 -8
- package/ui/QuoteMessageInput.js +8 -8
- package/ui/ReactionBadge.js +2 -2
- package/ui/ReactionButton.js +4 -4
- package/ui/SortByRow.js +1 -1
- package/ui/TextButton.js +1 -1
- package/ui/TextMessageItemBody.js +14 -14
- package/ui/ThreadReplies.js +5 -5
- package/ui/ThumbnailMessageItemBody.js +7 -7
- package/ui/Toggle.js +1 -1
- package/ui/Tooltip.js +2 -2
- package/ui/UnknownMessageItemBody.js +7 -7
- package/ui/UserListItem.js +11 -11
- package/ui/UserProfile.js +9 -9
- package/ui/VoiceMessageItemBody.js +11 -11
- package/ui/VoiceMessgeInput.js +7 -7
- package/ui/Word.js +11 -11
- package/{useHandleUploadFiles-210750cc.js → useHandleUploadFiles-2e10b130.js} +10 -10
- package/{useHandleUploadFiles-210750cc.js.map → useHandleUploadFiles-2e10b130.js.map} +1 -1
- package/{useLongPress-4b698dbb.js → useLongPress-ffee648f.js} +3 -3
- package/{useLongPress-4b698dbb.js.map → useLongPress-ffee648f.js.map} +1 -1
- package/{useSendMultipleFilesMessage-4a45ffbe.js → useSendMultipleFilesMessage-25198999.js} +4 -4
- package/{useSendMultipleFilesMessage-4a45ffbe.js.map → useSendMultipleFilesMessage-25198999.js.map} +1 -1
- package/useSendbirdStateContext.js +1 -1
- package/utils/message/isVoiceMessage.js +3 -3
- package/{utils-55c9df93.js → utils-1467ebd7.js} +1 -1
- package/{utils-55c9df93.js.map → utils-1467ebd7.js.map} +1 -1
- package/{utils-4d948dec.js → utils-3a10580f.js} +2 -2
- package/{utils-4d948dec.js.map → utils-3a10580f.js.map} +1 -1
- package/{utils-a184f6ea.js → utils-648f7f14.js} +1 -1
- package/{utils-a184f6ea.js.map → utils-648f7f14.js.map} +1 -1
- package/{utils-1bfac67e.js → utils-88995afe.js} +1 -1
- package/{utils-1bfac67e.js.map → utils-88995afe.js.map} +1 -1
- package/{utils-73dd35ca.js → utils-dae17f0e.js} +3 -3
- package/{utils-73dd35ca.js.map → utils-dae17f0e.js.map} +1 -1
- package/{utils-ec15538c.js → utils-dd91485e.js} +11 -6
- package/utils-dd91485e.js.map +1 -0
- package/{uuid-9094f15c.js → uuid-2e10561d.js} +1 -1
- package/{uuid-9094f15c.js.map → uuid-2e10561d.js.map} +1 -1
- package/withSendbird.js +1 -1
- package/ChannelListProvider-ba11ee5f.js.map +0 -1
- package/ChannelProvider-7400e8f6.js.map +0 -1
- package/OpenChannelProvider-4f21a22d.js.map +0 -1
- package/ThreadProvider-593b6c29.js.map +0 -1
- package/_rollupPluginBabelHelpers-ea73a031.js.map +0 -1
- package/cjs/ChannelListProvider-69db317f.js.map +0 -1
- package/cjs/ChannelProvider-2ee005bc.js.map +0 -1
- package/cjs/OpenChannelProvider-036e515e.js.map +0 -1
- package/cjs/ThreadProvider-4c93de8a.js.map +0 -1
- package/cjs/_rollupPluginBabelHelpers-a85bd364.js.map +0 -1
- package/cjs/index-967cbc91.js.map +0 -1
- package/cjs/utils-1e9e97b5.js.map +0 -1
- package/index-320a1756.js.map +0 -1
- package/utils-ec15538c.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-2d23ff73.js","sources":["../src/ui/MentionUserLabel/renderToString.ts","../src/ui/MessageInput/utils.js","../src/ui/MessageInput/hooks/usePaste/insertTemplate.ts","../src/ui/MessageInput/hooks/usePaste/consts.ts","../src/ui/MessageInput/hooks/usePaste/utils.ts","../src/ui/MessageInput/hooks/usePaste/index.ts"],"sourcesContent":["// cretes a sanitized string from a mention user label\nimport DOMPurify from 'dompurify';\nimport { MENTION_USER_LABEL_CLASSNAME } from './consts';\n\ntype renderToStringParams = {\n userId: string;\n nickname: string;\n};\n\nexport default function renderToString({ userId, nickname }: renderToStringParams): string {\n // donot change this template, it wont work\n const el = `<span data-userid=\"${userId}\" data-sb-mention=\"true\" class=\"${MENTION_USER_LABEL_CLASSNAME}\">${nickname}</span>`;\n const purifier = DOMPurify(window);\n const sanitized_ = purifier.sanitize(el);\n const token = sanitized_.split(' ');\n const [spanTag, ...rest] = token;\n // we do this because DOMPurify removes the contenteditable attribute\n const sanitized = [spanTag, 'contenteditable=\"false\"', ...rest].join(' ');\n return sanitized;\n}\n","// https://davidwalsh.name/javascript-debounce-function\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\nexport function debounce(func, wait, immediate) {\n let timeout;\n return function _debounce() {\n const context = this;\n // eslint-disable-next-line prefer-rest-params\n const args = arguments;\n const later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n}\n\n// Sanitize that special characters of HTML tags cause XSS issue\nexport const sanitizeString = (str) => (\n str?.replace(/[\\u00A0-\\u9999<>]/gim, (i) => ''.concat('&#', i.charCodeAt(0), ';'))\n);\n\n/**\n * NodeList cannot be used with Array methods\n * @param {childNodes} NodeList\n * @returns Array of child nodes\n */\nexport const nodeListToArray = (childNodes) => {\n try {\n return Array.from(childNodes);\n } catch (error) {\n return [];\n }\n};\n\nexport function isChannelTypeSupportsMultipleFilesMessage(channel) {\n return channel\n && channel?.isGroupChannel?.()\n && !channel.isBroadcast\n && !channel.isSuper;\n}\n","import { Word } from './types';\nimport { sanitizeString } from '../../utils';\nimport renderMentionLabelToString from '../../../MentionUserLabel/renderToString';\n\nexport function inserTemplateToDOM(templateList: Word[]): void {\n const nodes = templateList.map((template) => {\n const { text, userId } = template;\n if (userId) {\n return renderMentionLabelToString({ userId, nickname: text });\n }\n return sanitizeString(text);\n })\n .join(' ')\n // add a space at the end of the mention, else cursor/caret wont work\n .concat(' ');\n document.execCommand('insertHTML', false, nodes);\n}\n","export const PASTE_NODE = 'sendbird-uikit__paste-node';\nexport const TEXT_MESSAGE_CLASS = 'sendbird-word';\nexport const MENTION_CLASS = 'sendbird-word__mention';\nexport const MENTION_CLASS_IN_INPUT = 'sendbird-mention-user-label';\nexport const MENTION_CLASS_COMBINED_QUERY = `.${MENTION_CLASS}, .${MENTION_CLASS_IN_INPUT}`;\n","import { GroupChannel } from '@sendbird/chat/groupChannel';\nimport { User } from '@sendbird/chat';\n\nimport {\n PASTE_NODE,\n MENTION_CLASS,\n TEXT_MESSAGE_CLASS,\n MENTION_CLASS_COMBINED_QUERY,\n MENTION_CLASS_IN_INPUT,\n} from './consts';\nimport { Word } from './types';\nimport { TEXT_MESSAGE_BODY_CLASSNAME } from '../../../TextMessageItemBody/consts';\nimport { OG_MESSAGE_BODY_CLASSNAME } from '../../../OGMessageItemBody/consts';\nimport { nodeListToArray } from '../../utils';\n\nexport function querySelectorIncludingSelf(\n master: HTMLElement,\n selector: string,\n): HTMLElement | null {\n const result = [\n master,\n ...Array.from(master.querySelectorAll(selector)),\n ].find((el) => el.matches(selector)) as HTMLElement | null;\n return result;\n}\n\n// Pasted dom node can be OG_MESSAGE or partial message or full message\n// full messsage would have TEXT_MESSAGE_BODY_CLASSNAME and have childNodes\n// partial message would not have TEXT_MESSAGE_BODY_CLASSNAME\nexport function getLeafNodes(master: HTMLElement): ChildNode[] {\n // og message\n const ogMessage = querySelectorIncludingSelf(master, `.${OG_MESSAGE_BODY_CLASSNAME}`);\n if (ogMessage) {\n return nodeListToArray(ogMessage.childNodes);\n }\n\n const textMessageBody = querySelectorIncludingSelf(master, `.${TEXT_MESSAGE_BODY_CLASSNAME}`);\n if (textMessageBody) {\n return nodeListToArray(textMessageBody.childNodes);\n }\n\n return nodeListToArray(master.childNodes);\n}\n\nexport function createPasteNode(): HTMLDivElement | null {\n const pasteNode = document.body.querySelector(`#${PASTE_NODE}`);\n // remove existing paste node\n if (pasteNode) {\n pasteNode?.remove();\n }\n\n // create new paste node and return\n const node = document.createElement('div');\n node.id = PASTE_NODE;\n node.style.display = 'none';\n return node;\n}\n\nexport function hasMention(parent: HTMLDivElement): boolean {\n return parent?.querySelector(MENTION_CLASS_COMBINED_QUERY) ? true : false;\n}\n\nexport const extractTextFromNodes = (nodes: HTMLSpanElement[]): string => {\n let text = '';\n nodes.forEach((node) => {\n // to preserve space between words\n const textNodes = node.querySelectorAll(`.${TEXT_MESSAGE_CLASS}`);\n if (textNodes.length > 0) {\n text += ((extractTextFromNodes(Array.from(textNodes) as HTMLSpanElement[])) + ' ');\n }\n text += (node.innerText + ' ');\n });\n return text;\n};\n\nexport function domToMessageTemplate(nodeArray: ChildNode[]): Word[] {\n const templates: Word[] = nodeArray?.reduce((accumulator, currentValue) => {\n // currentValue can be node(from messageBody or messageInput) or text\n let mentionNode;\n // this looks awkward, but it is a fallback to set default text\n let text = (currentValue as HTMLSpanElement)?.innerText;\n\n // if text node, set text\n if (currentValue instanceof Text) {\n mentionNode = false;\n text = currentValue.textContent;\n }\n\n if (currentValue instanceof HTMLElement) {\n mentionNode = (currentValue.classList.contains(MENTION_CLASS) || currentValue.classList.contains(MENTION_CLASS_IN_INPUT))\n ? currentValue\n : currentValue.querySelector(MENTION_CLASS_COMBINED_QUERY);\n }\n\n // if mentionNode is not null, it is a mention\n if (mentionNode) {\n const text = (currentValue as HTMLSpanElement)?.innerText;\n const userId = mentionNode.dataset?.userid;\n return [\n ...accumulator,\n {\n text,\n userId,\n },\n ];\n }\n\n return [\n ...accumulator,\n {\n text,\n },\n ];\n }, [] as Word[]);\n return templates;\n}\n\nexport function getUsersFromWords(templates: Word[], channel: GroupChannel): User[] {\n const userMap = {};\n const users = channel.members;\n templates.forEach((template) => {\n if (template.userId) {\n const mentionedMember = users.find((user) => user.userId === template.userId);\n // Object.values would return array-> [undefined] if the user is not in the channel\n if (mentionedMember) {\n userMap[template.userId] = mentionedMember;\n }\n }\n });\n return Object.values(userMap);\n}\n","import { useCallback } from 'react';\nimport DOMPurify from 'dompurify';\n\nimport { inserTemplateToDOM } from './insertTemplate';\nimport { sanitizeString } from '../../utils';\nimport { DynamicProps } from './types';\nimport {\n createPasteNode,\n hasMention,\n domToMessageTemplate,\n getUsersFromWords,\n extractTextFromNodes,\n getLeafNodes,\n} from './utils';\n\n// exported, should be backward compatible\n// conditions to test:\n// 1. paste simple text\n// 2. paste text with mention\n// 3. paste text with mention and text\n// 4. paste text with mention and text and paste again before and after\n// 5. copy message with mention(only one mention, no other text) and paste\n// 6. copy message with mention from input and paste(before and after)\nexport function usePaste({\n ref,\n setIsInput,\n setHeight,\n channel,\n setMentionedUsers,\n}: DynamicProps): (e: React.ClipboardEvent<HTMLDivElement>) => void {\n return useCallback((e) => {\n e.preventDefault();\n const html = e?.clipboardData.getData('text/html');\n // simple text, continue as normal\n if (!html) {\n const text = e?.clipboardData.getData('text');\n document.execCommand('insertHTML', false, sanitizeString(text));\n setIsInput(true);\n setHeight();\n return;\n }\n\n // has html, check if there are mentions, sanitize and insert\n const purifier = DOMPurify(window);\n const clean = purifier.sanitize(html);\n const pasteNode = createPasteNode();\n pasteNode.innerHTML = clean;\n // does not have mention, continue as normal\n if (!hasMention(pasteNode)) {\n // to preserve space between words\n const text = extractTextFromNodes(Array.from(pasteNode.children) as HTMLSpanElement[]);\n document.execCommand('insertHTML', false, sanitizeString(text));\n pasteNode.remove();\n setIsInput(true);\n setHeight();\n return;\n }\n\n // has mention, collect leaf nodes and parse words\n const leafNodes = getLeafNodes(pasteNode);\n const words = domToMessageTemplate(leafNodes);\n const mentionedUsers = getUsersFromWords(words, channel);\n\n // side effects\n setMentionedUsers(mentionedUsers);\n inserTemplateToDOM(words);\n pasteNode.remove();\n setIsInput(true);\n setHeight();\n }, [ref, setIsInput, setHeight, channel, setMentionedUsers]);\n}\n\n// to do -> In the future donot export default\nexport default usePaste;\n"],"names":["renderToString","_ref","userId","nickname","el","MENTION_USER_LABEL_CLASSNAME","purifier","DOMPurify","window","sanitized_","sanitize","token","split","spanTag","rest","sanitized","join","sanitizeString","str","replace","i","concat","charCodeAt","nodeListToArray","childNodes","Array","from","error","inserTemplateToDOM","templateList","nodes","map","template","text","renderMentionLabelToString","document","execCommand","PASTE_NODE","TEXT_MESSAGE_CLASS","MENTION_CLASS","MENTION_CLASS_IN_INPUT","MENTION_CLASS_COMBINED_QUERY","querySelectorIncludingSelf","master","selector","result","querySelectorAll","find","matches","getLeafNodes","ogMessage","OG_MESSAGE_BODY_CLASSNAME","textMessageBody","TEXT_MESSAGE_BODY_CLASSNAME","createPasteNode","pasteNode","body","querySelector","remove","node","createElement","id","style","display","hasMention","parent","extractTextFromNodes","forEach","textNodes","length","innerText","domToMessageTemplate","nodeArray","templates","reduce","accumulator","currentValue","mentionNode","Text","textContent","HTMLElement","classList","contains","_mentionNode$dataset","dataset","userid","getUsersFromWords","channel","userMap","users","members","mentionedMember","user","Object","values","usePaste","ref","setIsInput","setHeight","setMentionedUsers","useCallback","e","preventDefault","html","clipboardData","getData","clean","innerHTML","children","leafNodes","words","mentionedUsers"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-943e51f9.js","sources":["../src/ui/MentionUserLabel/renderToString.ts","../src/ui/MessageInput/utils.js","../src/ui/MessageInput/hooks/usePaste/insertTemplate.ts","../src/ui/MessageInput/hooks/usePaste/consts.ts","../src/ui/MessageInput/hooks/usePaste/utils.ts","../src/ui/MessageInput/hooks/usePaste/index.ts"],"sourcesContent":["// cretes a sanitized string from a mention user label\nimport DOMPurify from 'dompurify';\nimport { MENTION_USER_LABEL_CLASSNAME } from './consts';\n\ntype renderToStringParams = {\n userId: string;\n nickname: string;\n};\n\nexport default function renderToString({ userId, nickname }: renderToStringParams): string {\n // donot change this template, it wont work\n const el = `<span data-userid=\"${userId}\" data-sb-mention=\"true\" class=\"${MENTION_USER_LABEL_CLASSNAME}\">${nickname}</span>`;\n const purifier = DOMPurify(window);\n const sanitized_ = purifier.sanitize(el);\n const token = sanitized_.split(' ');\n const [spanTag, ...rest] = token;\n // we do this because DOMPurify removes the contenteditable attribute\n const sanitized = [spanTag, 'contenteditable=\"false\"', ...rest].join(' ');\n return sanitized;\n}\n","// https://davidwalsh.name/javascript-debounce-function\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\nexport function debounce(func, wait, immediate) {\n let timeout;\n return function _debounce() {\n const context = this;\n // eslint-disable-next-line prefer-rest-params\n const args = arguments;\n const later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n}\n\n// Sanitize that special characters of HTML tags cause XSS issue\nexport const sanitizeString = (str) => (\n str?.replace(/[\\u00A0-\\u9999<>]/gim, (i) => ''.concat('&#', i.charCodeAt(0), ';'))\n);\n\n/**\n * NodeList cannot be used with Array methods\n * @param {childNodes} NodeList\n * @returns Array of child nodes\n */\nexport const nodeListToArray = (childNodes) => {\n try {\n return Array.from(childNodes);\n } catch (error) {\n return [];\n }\n};\n\nexport function isChannelTypeSupportsMultipleFilesMessage(channel) {\n return channel\n && channel?.isGroupChannel?.()\n && !channel.isBroadcast\n && !channel.isSuper;\n}\n","import { Word } from './types';\nimport { sanitizeString } from '../../utils';\nimport renderMentionLabelToString from '../../../MentionUserLabel/renderToString';\n\nexport function inserTemplateToDOM(templateList: Word[]): void {\n const nodes = templateList.map((template) => {\n const { text, userId } = template;\n if (userId) {\n return renderMentionLabelToString({ userId, nickname: text });\n }\n return sanitizeString(text);\n })\n .join(' ')\n // add a space at the end of the mention, else cursor/caret wont work\n .concat(' ');\n document.execCommand('insertHTML', false, nodes);\n}\n","export const PASTE_NODE = 'sendbird-uikit__paste-node';\nexport const TEXT_MESSAGE_CLASS = 'sendbird-word';\nexport const MENTION_CLASS = 'sendbird-word__mention';\nexport const MENTION_CLASS_IN_INPUT = 'sendbird-mention-user-label';\nexport const MENTION_CLASS_COMBINED_QUERY = `.${MENTION_CLASS}, .${MENTION_CLASS_IN_INPUT}`;\n","import { GroupChannel } from '@sendbird/chat/groupChannel';\nimport { User } from '@sendbird/chat';\n\nimport {\n PASTE_NODE,\n MENTION_CLASS,\n TEXT_MESSAGE_CLASS,\n MENTION_CLASS_COMBINED_QUERY,\n MENTION_CLASS_IN_INPUT,\n} from './consts';\nimport { Word } from './types';\nimport { TEXT_MESSAGE_BODY_CLASSNAME } from '../../../TextMessageItemBody/consts';\nimport { OG_MESSAGE_BODY_CLASSNAME } from '../../../OGMessageItemBody/consts';\nimport { nodeListToArray } from '../../utils';\n\nexport function querySelectorIncludingSelf(\n master: HTMLElement,\n selector: string,\n): HTMLElement | null {\n const result = [\n master,\n ...Array.from(master.querySelectorAll(selector)),\n ].find((el) => el.matches(selector)) as HTMLElement | null;\n return result;\n}\n\n// Pasted dom node can be OG_MESSAGE or partial message or full message\n// full messsage would have TEXT_MESSAGE_BODY_CLASSNAME and have childNodes\n// partial message would not have TEXT_MESSAGE_BODY_CLASSNAME\nexport function getLeafNodes(master: HTMLElement): ChildNode[] {\n // og message\n const ogMessage = querySelectorIncludingSelf(master, `.${OG_MESSAGE_BODY_CLASSNAME}`);\n if (ogMessage) {\n return nodeListToArray(ogMessage.childNodes);\n }\n\n const textMessageBody = querySelectorIncludingSelf(master, `.${TEXT_MESSAGE_BODY_CLASSNAME}`);\n if (textMessageBody) {\n return nodeListToArray(textMessageBody.childNodes);\n }\n\n return nodeListToArray(master.childNodes);\n}\n\nexport function createPasteNode(): HTMLDivElement | null {\n const pasteNode = document.body.querySelector(`#${PASTE_NODE}`);\n // remove existing paste node\n if (pasteNode) {\n pasteNode?.remove();\n }\n\n // create new paste node and return\n const node = document.createElement('div');\n node.id = PASTE_NODE;\n node.style.display = 'none';\n return node;\n}\n\nexport function hasMention(parent: HTMLDivElement): boolean {\n return parent?.querySelector(MENTION_CLASS_COMBINED_QUERY) ? true : false;\n}\n\nexport const extractTextFromNodes = (nodes: HTMLSpanElement[]): string => {\n let text = '';\n nodes.forEach((node) => {\n // to preserve space between words\n const textNodes = node.querySelectorAll(`.${TEXT_MESSAGE_CLASS}`);\n if (textNodes.length > 0) {\n text += ((extractTextFromNodes(Array.from(textNodes) as HTMLSpanElement[])) + ' ');\n }\n text += (node.innerText + ' ');\n });\n return text;\n};\n\nexport function domToMessageTemplate(nodeArray: ChildNode[]): Word[] {\n const templates: Word[] = nodeArray?.reduce((accumulator, currentValue) => {\n // currentValue can be node(from messageBody or messageInput) or text\n let mentionNode;\n // this looks awkward, but it is a fallback to set default text\n let text = (currentValue as HTMLSpanElement)?.innerText;\n\n // if text node, set text\n if (currentValue instanceof Text) {\n mentionNode = false;\n text = currentValue.textContent;\n }\n\n if (currentValue instanceof HTMLElement) {\n mentionNode = (currentValue.classList.contains(MENTION_CLASS) || currentValue.classList.contains(MENTION_CLASS_IN_INPUT))\n ? currentValue\n : currentValue.querySelector(MENTION_CLASS_COMBINED_QUERY);\n }\n\n // if mentionNode is not null, it is a mention\n if (mentionNode) {\n const text = (currentValue as HTMLSpanElement)?.innerText;\n const userId = mentionNode.dataset?.userid;\n return [\n ...accumulator,\n {\n text,\n userId,\n },\n ];\n }\n\n return [\n ...accumulator,\n {\n text,\n },\n ];\n }, [] as Word[]);\n return templates;\n}\n\nexport function getUsersFromWords(templates: Word[], channel: GroupChannel): User[] {\n const userMap = {};\n const users = channel.members;\n templates.forEach((template) => {\n if (template.userId) {\n const mentionedMember = users.find((user) => user.userId === template.userId);\n // Object.values would return array-> [undefined] if the user is not in the channel\n if (mentionedMember) {\n userMap[template.userId] = mentionedMember;\n }\n }\n });\n return Object.values(userMap);\n}\n","import { useCallback } from 'react';\nimport DOMPurify from 'dompurify';\n\nimport { inserTemplateToDOM } from './insertTemplate';\nimport { sanitizeString } from '../../utils';\nimport { DynamicProps } from './types';\nimport {\n createPasteNode,\n hasMention,\n domToMessageTemplate,\n getUsersFromWords,\n extractTextFromNodes,\n getLeafNodes,\n} from './utils';\n\n// exported, should be backward compatible\n// conditions to test:\n// 1. paste simple text\n// 2. paste text with mention\n// 3. paste text with mention and text\n// 4. paste text with mention and text and paste again before and after\n// 5. copy message with mention(only one mention, no other text) and paste\n// 6. copy message with mention from input and paste(before and after)\nexport function usePaste({\n ref,\n setIsInput,\n setHeight,\n channel,\n setMentionedUsers,\n}: DynamicProps): (e: React.ClipboardEvent<HTMLDivElement>) => void {\n return useCallback((e) => {\n e.preventDefault();\n const html = e?.clipboardData.getData('text/html');\n // simple text, continue as normal\n if (!html) {\n const text = e?.clipboardData.getData('text');\n document.execCommand('insertHTML', false, sanitizeString(text));\n setIsInput(true);\n setHeight();\n return;\n }\n\n // has html, check if there are mentions, sanitize and insert\n const purifier = DOMPurify(window);\n const clean = purifier.sanitize(html);\n const pasteNode = createPasteNode();\n pasteNode.innerHTML = clean;\n // does not have mention, continue as normal\n if (!hasMention(pasteNode)) {\n // to preserve space between words\n const text = extractTextFromNodes(Array.from(pasteNode.children) as HTMLSpanElement[]);\n document.execCommand('insertHTML', false, sanitizeString(text));\n pasteNode.remove();\n setIsInput(true);\n setHeight();\n return;\n }\n\n // has mention, collect leaf nodes and parse words\n const leafNodes = getLeafNodes(pasteNode);\n const words = domToMessageTemplate(leafNodes);\n const mentionedUsers = getUsersFromWords(words, channel);\n\n // side effects\n setMentionedUsers(mentionedUsers);\n inserTemplateToDOM(words);\n pasteNode.remove();\n setIsInput(true);\n setHeight();\n }, [ref, setIsInput, setHeight, channel, setMentionedUsers]);\n}\n\n// to do -> In the future donot export default\nexport default usePaste;\n"],"names":["renderToString","_ref","userId","nickname","el","MENTION_USER_LABEL_CLASSNAME","purifier","DOMPurify","window","sanitized_","sanitize","token","split","spanTag","rest","sanitized","join","sanitizeString","str","replace","i","concat","charCodeAt","nodeListToArray","childNodes","Array","from","error","isChannelTypeSupportsMultipleFilesMessage","channel","_channel$isGroupChann","isGroupChannel","call","isBroadcast","isSuper","inserTemplateToDOM","templateList","nodes","map","template","text","renderMentionLabelToString","document","execCommand","PASTE_NODE","TEXT_MESSAGE_CLASS","MENTION_CLASS","MENTION_CLASS_IN_INPUT","MENTION_CLASS_COMBINED_QUERY","querySelectorIncludingSelf","master","selector","result","querySelectorAll","find","matches","getLeafNodes","ogMessage","OG_MESSAGE_BODY_CLASSNAME","textMessageBody","TEXT_MESSAGE_BODY_CLASSNAME","createPasteNode","pasteNode","body","querySelector","remove","node","createElement","id","style","display","hasMention","parent","extractTextFromNodes","forEach","textNodes","length","innerText","domToMessageTemplate","nodeArray","templates","reduce","accumulator","currentValue","mentionNode","Text","textContent","HTMLElement","classList","contains","_mentionNode$dataset","dataset","userid","getUsersFromWords","userMap","users","members","mentionedMember","user","Object","values","usePaste","ref","setIsInput","setHeight","setMentionedUsers","useCallback","e","preventDefault","html","clipboardData","getData","clean","innerHTML","children","leafNodes","words","mentionedUsers"],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { _ as _objectSpread2, b as _extends } from './_rollupPluginBabelHelpers-
|
|
1
|
+
import { _ as _objectSpread2, b as _extends } from './_rollupPluginBabelHelpers-127d506a.js';
|
|
2
2
|
import React__default, { useLayoutEffect, useCallback, useRef, useContext } from 'react';
|
|
3
3
|
import { createPortal } from 'react-dom';
|
|
4
|
-
import { a as LocalizationContext } from './LocalizationContext-
|
|
5
|
-
import './index.module-
|
|
6
|
-
import { n as noop } from './utils-
|
|
7
|
-
import { L as Label, a as LabelTypography, b as LabelColors } from './index-
|
|
4
|
+
import { a as LocalizationContext } from './LocalizationContext-1d7d5046.js';
|
|
5
|
+
import './index.module-0935752c.js';
|
|
6
|
+
import { n as noop } from './utils-88995afe.js';
|
|
7
|
+
import { L as Label, a as LabelTypography, b as LabelColors } from './index-ca44517a.js';
|
|
8
8
|
import Icon, { IconTypes, IconColors } from './ui/Icon.js';
|
|
9
|
-
import { M as MODAL_ROOT } from './index-
|
|
10
|
-
import { C as isSupportedFileView, k as isVideo$1, j as isImage$1 } from './index-
|
|
9
|
+
import { M as MODAL_ROOT } from './index-b6042797.js';
|
|
10
|
+
import { C as isSupportedFileView, k as isVideo$1, j as isImage$1 } from './index-dd767201.js';
|
|
11
11
|
import Avatar from './ui/Avatar.js';
|
|
12
|
-
import { k as SLIDER_BUTTON_ICON_SIDE_LENGTH } from './consts-
|
|
12
|
+
import { k as SLIDER_BUTTON_ICON_SIDE_LENGTH } from './consts-9cb946fd.js';
|
|
13
13
|
|
|
14
14
|
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types
|
|
15
15
|
|
|
@@ -287,4 +287,4 @@ function FileViewer(_ref) {
|
|
|
287
287
|
}
|
|
288
288
|
|
|
289
289
|
export { FileViewer as F, isVideo as a, FileViewerComponent as b, isImage as i };
|
|
290
|
-
//# sourceMappingURL=index-
|
|
290
|
+
//# sourceMappingURL=index-b490e8af.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-b346dc02.js","sources":["../src/ui/FileViewer/types.ts","../src/ui/FileViewer/hooks/useKeyDown.ts","../src/ui/FileViewer/utils.ts","../src/ui/FileViewer/DeleteButton.tsx","../src/ui/FileViewer/Slider.tsx","../src/ui/FileViewer/index.tsx"],"sourcesContent":["// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types\n\n// TODO: refactor this to -> as const pattern\nexport type SupportedImageMimesType = 'image/jpeg' | 'image/jpg' | 'image/png' | 'image/gif' | 'image/svg+xml' | 'image/webp';\nexport type SupportedVideoMimesType = 'video/mpeg' | 'video/ogg' | 'video/webm' | 'video/mp4';\nexport type SupportedMimesType = SupportedImageMimesType | SupportedVideoMimesType;\n\nconst SUPPORTED_MIMES = {\n IMAGE: [\n 'image/jpeg',\n 'image/jpg',\n 'image/png',\n 'image/gif',\n 'image/svg+xml',\n 'image/webp',\n ],\n VIDEO: [\n 'video/mpeg',\n 'video/ogg',\n 'video/webm',\n 'video/mp4',\n ],\n};\n\nexport const isImage = (type: SupportedImageMimesType): boolean => SUPPORTED_MIMES.IMAGE.indexOf(type) >= 0;\nexport const isVideo = (type: SupportedVideoMimesType): boolean => SUPPORTED_MIMES.VIDEO.indexOf(type) >= 0;\nexport const isGif = (type: SupportedMimesType): boolean => type === 'image/gif';\nexport const unSupported = (type: SupportedMimesType): boolean => (\n !(\n isImage(type as SupportedImageMimesType)\n || isVideo(type as SupportedVideoMimesType)\n )\n);\n\nexport default { ...SUPPORTED_MIMES };\n\nexport const ViewerTypes = {\n SINGLE: 'SINGLE',\n MULTI: 'MULTI',\n} as const;\n\nexport type ViewerType = keyof typeof ViewerTypes;\n\nexport interface SenderInfo {\n profileUrl: string;\n nickname: string;\n}\nexport interface FileInfo {\n name: string;\n type: string;\n url: string;\n}\n\nexport interface BaseViewer {\n onClose: (e: React.MouseEvent) => void;\n}\n\nexport interface SingleFileViewer extends SenderInfo, FileInfo, BaseViewer {\n viewerType?: typeof ViewerTypes.SINGLE;\n isByMe?: boolean;\n disableDelete?: boolean;\n onDelete: (e: React.MouseEvent) => void;\n}\n\nexport interface MultiFilesViewer extends SenderInfo, BaseViewer {\n viewerType: typeof ViewerTypes.MULTI;\n fileInfoList: FileInfo[];\n currentIndex: number;\n onClickLeft: () => void;\n onClickRight: () => void;\n}\n\nexport type FileViewerComponentProps = SingleFileViewer | MultiFilesViewer;\n","import { useCallback, useLayoutEffect } from 'react';\nimport { noop } from '../../../utils/utils';\nimport { FileViewerComponentProps, ViewerTypes } from '../types';\n\nexport function useKeyDown({ props, ref }: {\n props: FileViewerComponentProps,\n ref: React.RefObject<HTMLDivElement>;\n}): {\n onKeyDown: React.KeyboardEventHandler<HTMLDivElement>;\n} {\n const { onClose } = props;\n let onClickLeft = noop;\n let onClickRight = noop;\n if (props.viewerType === ViewerTypes.MULTI) {\n onClickLeft = props.onClickLeft;\n onClickRight = props.onClickRight;\n }\n\n useLayoutEffect(() => {\n ref.current?.focus();\n }, [ref.current]);\n\n // this usecallback is not super necessary\n // discuss with others and remove it if it's not needed\n const onKeyDown: React.KeyboardEventHandler<HTMLDivElement> = useCallback((event) => {\n switch (event.key) {\n case 'Escape':\n // @ts-ignore\n onClose(event);\n break;\n case 'ArrowLeft':\n onClickLeft();\n break;\n case 'ArrowRight':\n onClickRight();\n break;\n default:\n break;\n }\n event.stopPropagation();\n }, [onClose, onClickLeft, onClickRight]);\n\n return {\n onKeyDown,\n };\n}\n","import { FileInfo, FileViewerComponentProps, MultiFilesViewer, SingleFileViewer, ViewerTypes } from './types';\n\nexport function mapFileViewerComponentProps({ props }: {\n props: FileViewerComponentProps;\n}): FileInfo {\n if (props.viewerType === ViewerTypes.MULTI) {\n const { fileInfoList, currentIndex } = props as MultiFilesViewer;\n return fileInfoList[currentIndex];\n }\n const fileInfo: FileInfo = props as SingleFileViewer;\n return {\n name: fileInfo.name,\n type: fileInfo.type,\n url: fileInfo.url,\n };\n}\n","import React from 'react';\nimport { FileViewerComponentProps, ViewerTypes } from './types';\nimport Icon, { IconColors, IconTypes } from '../Icon';\n\nexport function DeleteButton(props: FileViewerComponentProps & { className?: string }): React.ReactElement {\n if (props.viewerType !== ViewerTypes.MULTI) {\n const { onDelete, isByMe, disableDelete, className } = props;\n return (isByMe)\n ? (\n <div className={`sendbird-fileviewer__header__right__actions__delete ${className}`}>\n <Icon\n className={disableDelete ? 'disabled' : ''}\n type={IconTypes.DELETE}\n fillColor={disableDelete ? IconColors.GRAY : IconColors.ON_BACKGROUND_1}\n height=\"24px\"\n width=\"24px\"\n onClick={(e) => { if (!disableDelete) { onDelete?.(e); } }}\n />\n </div>\n )\n : <></>;\n }\n return <></>;\n}\n","import React from 'react';\nimport { FileViewerComponentProps, ViewerTypes } from './types';\nimport Icon, { IconColors, IconTypes } from '../Icon';\nimport { SLIDER_BUTTON_ICON_SIDE_LENGTH } from '../../utils/consts';\n\n// this is a slider component that is used to navigate between images\nexport function Slider(props: FileViewerComponentProps): React.ReactElement {\n if (props.viewerType === ViewerTypes.MULTI) {\n const { onClickLeft, onClickRight } = props;\n return (\n <div className=\"sendbird-file-viewer-slider\">\n <div className=\"sendbird-file-viewer-arrow--left\">\n <Icon\n type={IconTypes.SLIDE_LEFT}\n fillColor={IconColors.ON_BACKGROUND_1}\n height={SLIDER_BUTTON_ICON_SIDE_LENGTH}\n width={SLIDER_BUTTON_ICON_SIDE_LENGTH}\n onClick={(e) => {\n onClickLeft?.();\n e.stopPropagation();\n }}\n />\n </div>\n <div className=\"sendbird-file-viewer-arrow--right\">\n <Icon\n type={IconTypes.SLIDE_LEFT}\n fillColor={IconColors.ON_BACKGROUND_1}\n height={SLIDER_BUTTON_ICON_SIDE_LENGTH}\n width={SLIDER_BUTTON_ICON_SIDE_LENGTH}\n onClick={(e) => {\n e.stopPropagation();\n onClickRight?.();\n }}\n />\n </div>\n </div>\n );\n }\n // return empty fragment if viewerType is not ViewerTypes.MULTI\n return <></>;\n}\n","import './index.scss';\n\nimport React, { MouseEvent, ReactElement, useContext, useRef } from 'react';\nimport { FileMessage, MultipleFilesMessage, UploadedFileInfo } from '@sendbird/chat/message';\nimport { createPortal } from 'react-dom';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { MODAL_ROOT } from '../../hooks/useModal';\nimport { isImage, isVideo, isSupportedFileView } from '../../utils';\nimport { noop } from '../../utils/utils';\nimport Avatar from '../Avatar/index';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Icon, { IconColors, IconTypes } from '../Icon';\nimport { FileInfo, FileViewerComponentProps, ViewerTypes } from './types';\nimport { useKeyDown } from './hooks/useKeyDown';\nimport { mapFileViewerComponentProps } from './utils';\nimport { DeleteButton } from './DeleteButton';\nimport { Slider } from './Slider';\n\nexport const FileViewerComponent = (props: FileViewerComponentProps): ReactElement => {\n const ref = useRef<HTMLDivElement>(null);\n const { profileUrl, nickname, onClose } = props;\n const { onKeyDown } = useKeyDown({ props, ref });\n const { name, type, url } = mapFileViewerComponentProps({ props });\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n <div\n className=\"sendbird-fileviewer\"\n onKeyDown={onKeyDown}\n // to focus\n tabIndex={1}\n ref={ref}\n >\n <div className=\"sendbird-fileviewer__header\">\n <div className=\"sendbird-fileviewer__header__left\">\n <div className=\"sendbird-fileviewer__header__left__avatar\">\n <Avatar height=\"32px\" width=\"32px\" src={profileUrl} />\n </div>\n <Label\n className=\"sendbird-fileviewer__header__left__filename\"\n type={LabelTypography.H_2}\n color={LabelColors.ONBACKGROUND_1}\n >\n {name}\n </Label>\n <Label\n className=\"sendbird-fileviewer__header__left__sender-name\"\n type={LabelTypography.BODY_1}\n color={LabelColors.ONBACKGROUND_2}\n >\n {nickname}\n </Label>\n </div>\n <div\n className=\"sendbird-fileviewer__header__right\"\n >\n {\n isSupportedFileView(type) && (\n <div className=\"sendbird-fileviewer__header__right__actions\" >\n <a\n className=\"sendbird-fileviewer__header__right__actions__download\"\n rel=\"noopener noreferrer\"\n href={url}\n target=\"_blank\"\n >\n <Icon\n type={IconTypes.DOWNLOAD}\n fillColor={IconColors.ON_BACKGROUND_1}\n height=\"24px\"\n width=\"24px\"\n />\n </a>\n <DeleteButton\n className='sendbird-fileviewer__header__right__actions__delete'\n {...props}\n />\n </div>\n )\n }\n <div className=\"sendbird-fileviewer__header__right__actions__close\">\n <Icon\n type={IconTypes.CLOSE}\n fillColor={IconColors.ON_BACKGROUND_1}\n height=\"24px\"\n width=\"24px\"\n onClick={(e) => onClose?.(e)}\n />\n </div>\n </div>\n </div>\n <div className=\"sendbird-fileviewer__content\">\n {isVideo(type) && (\n <video\n controls\n className=\"sendbird-fileviewer__content__video\"\n >\n <source src={url} type={type} />\n </video>\n )}\n {\n isImage(type) && (\n <img\n src={url}\n alt={name}\n className={\n props.viewerType === ViewerTypes.MULTI\n ? 'sendbird-fileviewer__content__img__multi'\n : 'sendbird-fileviewer__content__img'\n }\n />\n )\n }\n {\n !isSupportedFileView(type) && (\n <div className=\"sendbird-fileviewer__content__unsupported\">\n <Label type={LabelTypography.H_1} color={LabelColors.ONBACKGROUND_1}>\n {stringSet?.UI__FILE_VIEWER__UNSUPPORT || 'Unsupported message'}\n </Label>\n </div>\n )\n }\n <Slider {...props} />\n </div>\n </div>\n );\n};\n\nexport interface FileViewerProps {\n message: FileMessage | MultipleFilesMessage;\n isByMe?: boolean;\n currentIndex?: number;\n onClose: (e: MouseEvent) => void;\n onDelete?: (e: MouseEvent) => void;\n onClickLeft?: () => void;\n onClickRight?: () => void;\n}\n\nexport default function FileViewer({\n message,\n onClose,\n isByMe = false,\n onDelete,\n currentIndex,\n onClickLeft,\n onClickRight,\n}: FileViewerProps): ReactElement {\n if (message.isMultipleFilesMessage()) {\n return (\n <FileViewerComponent\n profileUrl={message.sender?.profileUrl}\n nickname={message.sender?.nickname}\n viewerType={ViewerTypes.MULTI}\n fileInfoList={message.fileInfoList.map((fileInfo: UploadedFileInfo): FileInfo => {\n return {\n name: fileInfo.fileName || '',\n type: fileInfo.mimeType || '',\n url: fileInfo.url,\n };\n })}\n currentIndex={currentIndex || 0}\n onClickLeft={onClickLeft || noop}\n onClickRight={onClickRight || noop}\n onClose={onClose}\n />\n );\n } else if (message.isFileMessage()) {\n return createPortal(\n (\n <FileViewerComponent\n profileUrl={message.sender?.profileUrl}\n nickname={message.sender?.nickname}\n name={message.name}\n type={message.type}\n url={message?.url}\n isByMe={isByMe}\n disableDelete={(message?.threadInfo?.replyCount || 0) > 0}\n onClose={onClose}\n onDelete={onDelete || noop}\n />\n ),\n (document.getElementById(MODAL_ROOT) as HTMLElement),\n );\n }\n return <></>;\n}\n"],"names":["SUPPORTED_MIMES","IMAGE","VIDEO","isImage","type","indexOf","isVideo","_objectSpread","ViewerTypes","SINGLE","MULTI","useKeyDown","_ref","props","ref","onClose","onClickLeft","noop","onClickRight","viewerType","useLayoutEffect","_ref$current","current","focus","onKeyDown","useCallback","event","key","stopPropagation","mapFileViewerComponentProps","fileInfoList","currentIndex","fileInfo","name","url","DeleteButton","onDelete","isByMe","disableDelete","className","React","createElement","Icon","IconTypes","DELETE","fillColor","IconColors","GRAY","ON_BACKGROUND_1","height","width","onClick","e","Fragment","Slider","SLIDE_LEFT","SLIDER_BUTTON_ICON_SIDE_LENGTH","FileViewerComponent","useRef","profileUrl","nickname","stringSet","useContext","LocalizationContext","tabIndex","Avatar","src","Label","LabelTypography","H_2","color","LabelColors","ONBACKGROUND_1","BODY_1","ONBACKGROUND_2","isSupportedFileView","rel","href","target","DOWNLOAD","_extends","CLOSE","controls","alt","H_1","UI__FILE_VIEWER__UNSUPPORT","FileViewer","message","isMultipleFilesMessage","_message$sender","_message$sender2","sender","map","fileName","mimeType","isFileMessage","_message$sender3","_message$sender4","_message$threadInfo","createPortal","threadInfo","replyCount","document","getElementById","MODAL_ROOT"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-b490e8af.js","sources":["../src/ui/FileViewer/types.ts","../src/ui/FileViewer/hooks/useKeyDown.ts","../src/ui/FileViewer/utils.ts","../src/ui/FileViewer/DeleteButton.tsx","../src/ui/FileViewer/Slider.tsx","../src/ui/FileViewer/index.tsx"],"sourcesContent":["// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types\n\n// TODO: refactor this to -> as const pattern\nexport type SupportedImageMimesType = 'image/jpeg' | 'image/jpg' | 'image/png' | 'image/gif' | 'image/svg+xml' | 'image/webp';\nexport type SupportedVideoMimesType = 'video/mpeg' | 'video/ogg' | 'video/webm' | 'video/mp4';\nexport type SupportedMimesType = SupportedImageMimesType | SupportedVideoMimesType;\n\nconst SUPPORTED_MIMES = {\n IMAGE: [\n 'image/jpeg',\n 'image/jpg',\n 'image/png',\n 'image/gif',\n 'image/svg+xml',\n 'image/webp',\n ],\n VIDEO: [\n 'video/mpeg',\n 'video/ogg',\n 'video/webm',\n 'video/mp4',\n ],\n};\n\nexport const isImage = (type: SupportedImageMimesType): boolean => SUPPORTED_MIMES.IMAGE.indexOf(type) >= 0;\nexport const isVideo = (type: SupportedVideoMimesType): boolean => SUPPORTED_MIMES.VIDEO.indexOf(type) >= 0;\nexport const isGif = (type: SupportedMimesType): boolean => type === 'image/gif';\nexport const unSupported = (type: SupportedMimesType): boolean => (\n !(\n isImage(type as SupportedImageMimesType)\n || isVideo(type as SupportedVideoMimesType)\n )\n);\n\nexport default { ...SUPPORTED_MIMES };\n\nexport const ViewerTypes = {\n SINGLE: 'SINGLE',\n MULTI: 'MULTI',\n} as const;\n\nexport type ViewerType = keyof typeof ViewerTypes;\n\nexport interface SenderInfo {\n profileUrl: string;\n nickname: string;\n}\nexport interface FileInfo {\n name: string;\n type: string;\n url: string;\n}\n\nexport interface BaseViewer {\n onClose: (e: React.MouseEvent) => void;\n}\n\nexport interface SingleFileViewer extends SenderInfo, FileInfo, BaseViewer {\n viewerType?: typeof ViewerTypes.SINGLE;\n isByMe?: boolean;\n disableDelete?: boolean;\n onDelete: (e: React.MouseEvent) => void;\n}\n\nexport interface MultiFilesViewer extends SenderInfo, BaseViewer {\n viewerType: typeof ViewerTypes.MULTI;\n fileInfoList: FileInfo[];\n currentIndex: number;\n onClickLeft: () => void;\n onClickRight: () => void;\n}\n\nexport type FileViewerComponentProps = SingleFileViewer | MultiFilesViewer;\n","import { useCallback, useLayoutEffect } from 'react';\nimport { noop } from '../../../utils/utils';\nimport { FileViewerComponentProps, ViewerTypes } from '../types';\n\nexport function useKeyDown({ props, ref }: {\n props: FileViewerComponentProps,\n ref: React.RefObject<HTMLDivElement>;\n}): {\n onKeyDown: React.KeyboardEventHandler<HTMLDivElement>;\n} {\n const { onClose } = props;\n let onClickLeft = noop;\n let onClickRight = noop;\n if (props.viewerType === ViewerTypes.MULTI) {\n onClickLeft = props.onClickLeft;\n onClickRight = props.onClickRight;\n }\n\n useLayoutEffect(() => {\n ref.current?.focus();\n }, [ref.current]);\n\n // this usecallback is not super necessary\n // discuss with others and remove it if it's not needed\n const onKeyDown: React.KeyboardEventHandler<HTMLDivElement> = useCallback((event) => {\n switch (event.key) {\n case 'Escape':\n // @ts-ignore\n onClose(event);\n break;\n case 'ArrowLeft':\n onClickLeft();\n break;\n case 'ArrowRight':\n onClickRight();\n break;\n default:\n break;\n }\n event.stopPropagation();\n }, [onClose, onClickLeft, onClickRight]);\n\n return {\n onKeyDown,\n };\n}\n","import { FileInfo, FileViewerComponentProps, MultiFilesViewer, SingleFileViewer, ViewerTypes } from './types';\n\nexport function mapFileViewerComponentProps({ props }: {\n props: FileViewerComponentProps;\n}): FileInfo {\n if (props.viewerType === ViewerTypes.MULTI) {\n const { fileInfoList, currentIndex } = props as MultiFilesViewer;\n return fileInfoList[currentIndex];\n }\n const fileInfo: FileInfo = props as SingleFileViewer;\n return {\n name: fileInfo.name,\n type: fileInfo.type,\n url: fileInfo.url,\n };\n}\n","import React from 'react';\nimport { FileViewerComponentProps, ViewerTypes } from './types';\nimport Icon, { IconColors, IconTypes } from '../Icon';\n\nexport function DeleteButton(props: FileViewerComponentProps & { className?: string }): React.ReactElement {\n if (props.viewerType !== ViewerTypes.MULTI) {\n const { onDelete, isByMe, disableDelete, className } = props;\n return (isByMe)\n ? (\n <div className={`sendbird-fileviewer__header__right__actions__delete ${className}`}>\n <Icon\n className={disableDelete ? 'disabled' : ''}\n type={IconTypes.DELETE}\n fillColor={disableDelete ? IconColors.GRAY : IconColors.ON_BACKGROUND_1}\n height=\"24px\"\n width=\"24px\"\n onClick={(e) => { if (!disableDelete) { onDelete?.(e); } }}\n />\n </div>\n )\n : <></>;\n }\n return <></>;\n}\n","import React from 'react';\nimport { FileViewerComponentProps, ViewerTypes } from './types';\nimport Icon, { IconColors, IconTypes } from '../Icon';\nimport { SLIDER_BUTTON_ICON_SIDE_LENGTH } from '../../utils/consts';\n\n// this is a slider component that is used to navigate between images\nexport function Slider(props: FileViewerComponentProps): React.ReactElement {\n if (props.viewerType === ViewerTypes.MULTI) {\n const { onClickLeft, onClickRight } = props;\n return (\n <div className=\"sendbird-file-viewer-slider\">\n <div className=\"sendbird-file-viewer-arrow--left\">\n <Icon\n type={IconTypes.SLIDE_LEFT}\n fillColor={IconColors.ON_BACKGROUND_1}\n height={SLIDER_BUTTON_ICON_SIDE_LENGTH}\n width={SLIDER_BUTTON_ICON_SIDE_LENGTH}\n onClick={(e) => {\n onClickLeft?.();\n e.stopPropagation();\n }}\n />\n </div>\n <div className=\"sendbird-file-viewer-arrow--right\">\n <Icon\n type={IconTypes.SLIDE_LEFT}\n fillColor={IconColors.ON_BACKGROUND_1}\n height={SLIDER_BUTTON_ICON_SIDE_LENGTH}\n width={SLIDER_BUTTON_ICON_SIDE_LENGTH}\n onClick={(e) => {\n e.stopPropagation();\n onClickRight?.();\n }}\n />\n </div>\n </div>\n );\n }\n // return empty fragment if viewerType is not ViewerTypes.MULTI\n return <></>;\n}\n","import './index.scss';\n\nimport React, { MouseEvent, ReactElement, useContext, useRef } from 'react';\nimport { FileMessage, MultipleFilesMessage, UploadedFileInfo } from '@sendbird/chat/message';\nimport { createPortal } from 'react-dom';\nimport { LocalizationContext } from '../../lib/LocalizationContext';\nimport { MODAL_ROOT } from '../../hooks/useModal';\nimport { isImage, isVideo, isSupportedFileView } from '../../utils';\nimport { noop } from '../../utils/utils';\nimport Avatar from '../Avatar/index';\nimport Label, { LabelTypography, LabelColors } from '../Label';\nimport Icon, { IconColors, IconTypes } from '../Icon';\nimport { FileInfo, FileViewerComponentProps, ViewerTypes } from './types';\nimport { useKeyDown } from './hooks/useKeyDown';\nimport { mapFileViewerComponentProps } from './utils';\nimport { DeleteButton } from './DeleteButton';\nimport { Slider } from './Slider';\n\nexport const FileViewerComponent = (props: FileViewerComponentProps): ReactElement => {\n const ref = useRef<HTMLDivElement>(null);\n const { profileUrl, nickname, onClose } = props;\n const { onKeyDown } = useKeyDown({ props, ref });\n const { name, type, url } = mapFileViewerComponentProps({ props });\n const { stringSet } = useContext(LocalizationContext);\n\n return (\n <div\n className=\"sendbird-fileviewer\"\n onKeyDown={onKeyDown}\n // to focus\n tabIndex={1}\n ref={ref}\n >\n <div className=\"sendbird-fileviewer__header\">\n <div className=\"sendbird-fileviewer__header__left\">\n <div className=\"sendbird-fileviewer__header__left__avatar\">\n <Avatar height=\"32px\" width=\"32px\" src={profileUrl} />\n </div>\n <Label\n className=\"sendbird-fileviewer__header__left__filename\"\n type={LabelTypography.H_2}\n color={LabelColors.ONBACKGROUND_1}\n >\n {name}\n </Label>\n <Label\n className=\"sendbird-fileviewer__header__left__sender-name\"\n type={LabelTypography.BODY_1}\n color={LabelColors.ONBACKGROUND_2}\n >\n {nickname}\n </Label>\n </div>\n <div\n className=\"sendbird-fileviewer__header__right\"\n >\n {\n isSupportedFileView(type) && (\n <div className=\"sendbird-fileviewer__header__right__actions\" >\n <a\n className=\"sendbird-fileviewer__header__right__actions__download\"\n rel=\"noopener noreferrer\"\n href={url}\n target=\"_blank\"\n >\n <Icon\n type={IconTypes.DOWNLOAD}\n fillColor={IconColors.ON_BACKGROUND_1}\n height=\"24px\"\n width=\"24px\"\n />\n </a>\n <DeleteButton\n className='sendbird-fileviewer__header__right__actions__delete'\n {...props}\n />\n </div>\n )\n }\n <div className=\"sendbird-fileviewer__header__right__actions__close\">\n <Icon\n type={IconTypes.CLOSE}\n fillColor={IconColors.ON_BACKGROUND_1}\n height=\"24px\"\n width=\"24px\"\n onClick={(e) => onClose?.(e)}\n />\n </div>\n </div>\n </div>\n <div className=\"sendbird-fileviewer__content\">\n {isVideo(type) && (\n <video\n controls\n className=\"sendbird-fileviewer__content__video\"\n >\n <source src={url} type={type} />\n </video>\n )}\n {\n isImage(type) && (\n <img\n src={url}\n alt={name}\n className={\n props.viewerType === ViewerTypes.MULTI\n ? 'sendbird-fileviewer__content__img__multi'\n : 'sendbird-fileviewer__content__img'\n }\n />\n )\n }\n {\n !isSupportedFileView(type) && (\n <div className=\"sendbird-fileviewer__content__unsupported\">\n <Label type={LabelTypography.H_1} color={LabelColors.ONBACKGROUND_1}>\n {stringSet?.UI__FILE_VIEWER__UNSUPPORT || 'Unsupported message'}\n </Label>\n </div>\n )\n }\n <Slider {...props} />\n </div>\n </div>\n );\n};\n\nexport interface FileViewerProps {\n message: FileMessage | MultipleFilesMessage;\n isByMe?: boolean;\n currentIndex?: number;\n onClose: (e: MouseEvent) => void;\n onDelete?: (e: MouseEvent) => void;\n onClickLeft?: () => void;\n onClickRight?: () => void;\n}\n\nexport default function FileViewer({\n message,\n onClose,\n isByMe = false,\n onDelete,\n currentIndex,\n onClickLeft,\n onClickRight,\n}: FileViewerProps): ReactElement {\n if (message.isMultipleFilesMessage()) {\n return (\n <FileViewerComponent\n profileUrl={message.sender?.profileUrl}\n nickname={message.sender?.nickname}\n viewerType={ViewerTypes.MULTI}\n fileInfoList={message.fileInfoList.map((fileInfo: UploadedFileInfo): FileInfo => {\n return {\n name: fileInfo.fileName || '',\n type: fileInfo.mimeType || '',\n url: fileInfo.url,\n };\n })}\n currentIndex={currentIndex || 0}\n onClickLeft={onClickLeft || noop}\n onClickRight={onClickRight || noop}\n onClose={onClose}\n />\n );\n } else if (message.isFileMessage()) {\n return createPortal(\n (\n <FileViewerComponent\n profileUrl={message.sender?.profileUrl}\n nickname={message.sender?.nickname}\n name={message.name}\n type={message.type}\n url={message?.url}\n isByMe={isByMe}\n disableDelete={(message?.threadInfo?.replyCount || 0) > 0}\n onClose={onClose}\n onDelete={onDelete || noop}\n />\n ),\n (document.getElementById(MODAL_ROOT) as HTMLElement),\n );\n }\n return <></>;\n}\n"],"names":["SUPPORTED_MIMES","IMAGE","VIDEO","isImage","type","indexOf","isVideo","_objectSpread","ViewerTypes","SINGLE","MULTI","useKeyDown","_ref","props","ref","onClose","onClickLeft","noop","onClickRight","viewerType","useLayoutEffect","_ref$current","current","focus","onKeyDown","useCallback","event","key","stopPropagation","mapFileViewerComponentProps","fileInfoList","currentIndex","fileInfo","name","url","DeleteButton","onDelete","isByMe","disableDelete","className","React","createElement","Icon","IconTypes","DELETE","fillColor","IconColors","GRAY","ON_BACKGROUND_1","height","width","onClick","e","Fragment","Slider","SLIDE_LEFT","SLIDER_BUTTON_ICON_SIDE_LENGTH","FileViewerComponent","useRef","profileUrl","nickname","stringSet","useContext","LocalizationContext","tabIndex","Avatar","src","Label","LabelTypography","H_2","color","LabelColors","ONBACKGROUND_1","BODY_1","ONBACKGROUND_2","isSupportedFileView","rel","href","target","DOWNLOAD","_extends","CLOSE","controls","alt","H_1","UI__FILE_VIEWER__UNSUPPORT","FileViewer","message","isMultipleFilesMessage","_message$sender","_message$sender2","sender","map","fileName","mimeType","isFileMessage","_message$sender3","_message$sender4","_message$threadInfo","createPortal","threadInfo","replyCount","document","getElementById","MODAL_ROOT"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-b6042797.js","sources":["../src/hooks/useModal/ModalRoot/index.tsx"],"sourcesContent":["// simple component to be used as modal root\nimport React, { ReactElement } from 'react';\n\nexport const MODAL_ROOT = 'sendbird-modal-root';\n\nexport const ModalRoot = (): ReactElement => (\n <div id={MODAL_ROOT} className={MODAL_ROOT} />\n);\nexport default ModalRoot;\n"],"names":["MODAL_ROOT"],"mappings":";;AAAA;AAGO,MAAMA,UAAU,GAAG;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as requiredArgs, t as toDate } from './index-
|
|
1
|
+
import { r as requiredArgs, t as toDate } from './index-644f4972.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @name startOfDay
|
|
@@ -63,4 +63,4 @@ function isSameDay(dirtyDateLeft, dirtyDateRight) {
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
export { isSameDay as i };
|
|
66
|
-
//# sourceMappingURL=index-
|
|
66
|
+
//# sourceMappingURL=index-bc42f0e9.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-bc42f0e9.js","sources":["../node_modules/date-fns/esm/startOfDay/index.js","../node_modules/date-fns/esm/isSameDay/index.js"],"sourcesContent":["import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\n\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}"],"names":[],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,UAAU,CAAC,SAAS,EAAE;AAC9C,EAAE,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC7B,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/B,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,EAAE,OAAO,IAAI,CAAC;AACd;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,SAAS,CAAC,aAAa,EAAE,cAAc,EAAE;AACjE,EAAE,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC7B,EAAE,IAAI,kBAAkB,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AACrD,EAAE,IAAI,mBAAmB,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;AACvD,EAAE,OAAO,kBAAkB,CAAC,OAAO,EAAE,KAAK,mBAAmB,CAAC,OAAO,EAAE,CAAC;AACxE;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React__default from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { g as getStringSet } from './stringSet-
|
|
3
|
+
import { g as getStringSet } from './stringSet-4010aa20.js';
|
|
4
4
|
|
|
5
5
|
const Typography = {
|
|
6
6
|
H_1: 'H_1',
|
|
@@ -115,4 +115,4 @@ const LabelColors = Colors;
|
|
|
115
115
|
const LabelStringSet = getStringSet('en');
|
|
116
116
|
|
|
117
117
|
export { Label as L, LabelTypography as a, LabelColors as b, LabelStringSet as c, changeColorToClassName as d };
|
|
118
|
-
//# sourceMappingURL=index-
|
|
118
|
+
//# sourceMappingURL=index-ca44517a.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-ca44517a.js","sources":["../src/ui/Label/types.js","../src/ui/Label/utils.js","../src/ui/Label/index.jsx"],"sourcesContent":["export const Typography = {\n H_1: 'H_1',\n H_2: 'H_2',\n SUBTITLE_1: 'SUBTITLE_1',\n SUBTITLE_2: 'SUBTITLE_2',\n BODY_1: 'BODY_1',\n BODY_2: 'BODY_2',\n BUTTON_1: 'BUTTON_1',\n BUTTON_2: 'BUTTON_2',\n CAPTION_1: 'CAPTION_1',\n CAPTION_2: 'CAPTION_2',\n CAPTION_3: 'CAPTION_3',\n};\n\nexport const Colors = {\n ONBACKGROUND_1: 'ONBACKGROUND_1',\n ONBACKGROUND_2: 'ONBACKGROUND_2',\n ONBACKGROUND_3: 'ONBACKGROUND_3',\n ONBACKGROUND_4: 'ONBACKGROUND_4',\n ONCONTENT_1: 'ONCONTENT_1',\n ONCONTENT_2: 'ONCONTENT_2',\n PRIMARY: 'PRIMARY',\n ERROR: 'ERROR',\n SECONDARY_3: 'SECONDARY_3',\n};\n","import { Typography, Colors } from './types';\n\nexport function changeTypographyToClassName(type) {\n switch (type) {\n case Typography.H_1: return 'sendbird-label--h-1';\n case Typography.H_2: return 'sendbird-label--h-2';\n case Typography.SUBTITLE_1: return 'sendbird-label--subtitle-1';\n case Typography.SUBTITLE_2: return 'sendbird-label--subtitle-2';\n case Typography.BODY_1: return 'sendbird-label--body-1';\n case Typography.BODY_2: return 'sendbird-label--body-2';\n case Typography.BUTTON_1: return 'sendbird-label--button-1';\n case Typography.BUTTON_2: return 'sendbird-label--button-2';\n case Typography.CAPTION_1: return 'sendbird-label--caption-1';\n case Typography.CAPTION_2: return 'sendbird-label--caption-2';\n case Typography.CAPTION_3: return 'sendbird-label--caption-3';\n default: return '';\n }\n}\n\nexport function changeColorToClassName(color) {\n switch (color) {\n case Colors.ONBACKGROUND_1: return 'sendbird-label--color-onbackground-1';\n case Colors.ONBACKGROUND_2: return 'sendbird-label--color-onbackground-2';\n case Colors.ONBACKGROUND_3: return 'sendbird-label--color-onbackground-3';\n case Colors.ONBACKGROUND_4: return 'sendbird-label--color-onbackground-4';\n case Colors.ONCONTENT_1: return 'sendbird-label--color-oncontent-1';\n case Colors.ONCONTENT_2: return 'sendbird-label--color-oncontent-2';\n case Colors.PRIMARY: return 'sendbird-label--color-primary'; // should be Primary-3 fix me\n case Colors.ERROR: return 'sendbird-label--color-error';\n case Colors.SECONDARY_3: return 'sendbird-label--color-secondary-3';\n default: return '';\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './index.scss';\nimport { Typography, Colors } from './types';\nimport { changeTypographyToClassName, changeColorToClassName } from './utils';\nimport getStringSet from './stringSet';\n\nexport default function Label({\n className,\n type,\n color,\n children,\n}) {\n return (\n // Donot make this into div\n // Mention uses Label. If we use div, it would break the mention detection on Paste\n // https://github.com/sendbird/sendbird-uikit-react/pull/479\n <span\n className={[\n ...(Array.isArray(className) ? className : [className]),\n 'sendbird-label',\n type ? changeTypographyToClassName(type) : '',\n color ? changeColorToClassName(color) : '',\n ].join(' ')}\n >\n {children}\n </span>\n );\n}\n\nLabel.propTypes = {\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n type: PropTypes.string,\n color: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.element,\n PropTypes.any,\n ]),\n};\n\nLabel.defaultProps = {\n className: [],\n type: '',\n color: '',\n children: null,\n};\n\nconst LabelTypography = Typography;\nconst LabelColors = Colors;\nconst LabelStringSet = getStringSet('en');\nexport { LabelTypography, LabelColors, LabelStringSet };\n"],"names":["Typography","H_1","H_2","SUBTITLE_1","SUBTITLE_2","BODY_1","BODY_2","BUTTON_1","BUTTON_2","CAPTION_1","CAPTION_2","CAPTION_3","Colors","ONBACKGROUND_1","ONBACKGROUND_2","ONBACKGROUND_3","ONBACKGROUND_4","ONCONTENT_1","ONCONTENT_2","PRIMARY","ERROR","SECONDARY_3","changeTypographyToClassName","type","changeColorToClassName","color","Label","_ref","className","children","React","createElement","Array","isArray","join","propTypes","PropTypes","oneOfType","string","arrayOf","number","element","any","defaultProps","LabelTypography","LabelColors","LabelStringSet","getStringSet"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React__default, { useMemo, useState } from 'react';
|
|
2
2
|
import Icon, { IconTypes, IconColors } from './ui/Icon.js';
|
|
3
3
|
import ImageRenderer from './ui/ImageRenderer.js';
|
|
4
|
-
import { m as getClassName, S as isGifFileInfo } from './index-
|
|
5
|
-
import { F as FileViewer } from './index-
|
|
6
|
-
import { u as useMediaQueryContext } from './MediaQueryContext-
|
|
7
|
-
import { K } from './index.module-
|
|
4
|
+
import { m as getClassName, S as isGifFileInfo } from './index-dd767201.js';
|
|
5
|
+
import { F as FileViewer } from './index-b490e8af.js';
|
|
6
|
+
import { u as useMediaQueryContext } from './MediaQueryContext-a8f216c8.js';
|
|
7
|
+
import { K } from './index.module-0935752c.js';
|
|
8
8
|
|
|
9
9
|
function ImageGrid(_ref) {
|
|
10
10
|
var _message$reactions;
|
|
@@ -129,4 +129,4 @@ function MultipleFilesMessageItemBody(_ref) {
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
export { MultipleFilesMessageItemBody as M, ThreadMessageKind as T };
|
|
132
|
-
//# sourceMappingURL=index-
|
|
132
|
+
//# sourceMappingURL=index-d32155ad.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-44d3dac3.js","sources":["../src/ui/ImageGrid/index.tsx","../src/ui/MultipleFilesMessageItemBody/useThreadMessageKindKeySelector.ts","../src/ui/MultipleFilesMessageItemBody/const.ts","../src/ui/MultipleFilesMessageItemBody/index.tsx"],"sourcesContent":["import React, { ReactElement } from 'react';\nimport './index.scss';\nimport { getClassName } from '../../utils';\nimport { MultipleFilesMessage } from '@sendbird/chat/message';\n\ninterface ImageGridProps {\n children: ReactElement[];\n className?: string;\n message: MultipleFilesMessage;\n isReactionEnabled?: boolean;\n}\n\nexport default function ImageGrid({\n children,\n className,\n message,\n isReactionEnabled,\n}: ImageGridProps): ReactElement {\n return (\n <div className='sendbird-image-grid-wrap'>\n <div className={getClassName([\n className,\n 'sendbird-image-grid',\n (isReactionEnabled && message?.reactions?.length > 0) ? 'reactions' : '',\n ])}>\n { children }\n </div>\n </div>\n );\n}\n","import { useMemo } from 'react';\nimport { ThreadMessageKind, ThreadMessageKindType } from './index';\nimport { match } from 'ts-pattern';\n\ninterface DynamicSideLengthProps {\n threadMessageKind: ThreadMessageKindType;\n isMobile: boolean;\n}\n\nexport function useThreadMessageKindKeySelector({\n threadMessageKind,\n isMobile,\n}: DynamicSideLengthProps): string {\n const threadMessageKindKey = useMemo(() => {\n return match(threadMessageKind)\n .with(ThreadMessageKind.PARENT, () => (isMobile\n ? 'THREAD_PARENT_MOBILE'\n : 'THREAD_PARENT_WEB'\n ))\n .with(ThreadMessageKind.CHILD, () => (isMobile\n ? 'THREAD_CHILD_MOBILE'\n : 'THREAD_CHILD_WEB'\n ))\n .otherwise(() => (isMobile\n ? 'CHAT_MOBILE'\n : 'CHAT_WEB'\n ));\n }, [isMobile, threadMessageKind]);\n return threadMessageKindKey;\n}\n","const GRID_WIDTH_CHAT_WEB = 400;\nconst GRID_SIDE_PADDING = 8;\nconst GRID_GAP = 4;\nconst TIMESTAMP_WIDTH_AND_ITS_SIDE_MARGIN = 54;\nconst PROFILE_IMAGE_WIDTH = 40;\n\nconst CHAT_MOBILE_SIDE_PADDING = 48;\n\nconst THREAD_PARENT_WIDTH = 320;\nconst THREAD_PARENT_SIDE_PADDING = 28;\nconst THREAD_PARENT_GRID_MARGIN_LEFT = 12;\n\nconst THREAD_CHILD_WIDTH = 200;\nconst THREAD_CHILD_SIDE_PADDING = 8;\nconst THREAD_CHILD_MOBILE_SIDE_PADDING = 32;\nconst THREAD_CHILD_MOBILE_TIMESTAMP_WIDTH_AND_ITS_SIDE_MARGIN = 60;\n\nexport const MULTIPLE_FILES_IMAGE_SIDE_LENGTH = {\n CHAT_WEB: `calc(${GRID_WIDTH_CHAT_WEB / 2}px - ${(GRID_SIDE_PADDING + GRID_GAP) / 2}px)`,\n CHAT_MOBILE: `calc(50vw - ${(CHAT_MOBILE_SIDE_PADDING + PROFILE_IMAGE_WIDTH + TIMESTAMP_WIDTH_AND_ITS_SIDE_MARGIN + GRID_SIDE_PADDING + GRID_GAP) / 2}px)`,\n THREAD_PARENT_WEB: `calc(${(THREAD_PARENT_WIDTH - (THREAD_PARENT_SIDE_PADDING + PROFILE_IMAGE_WIDTH + THREAD_PARENT_GRID_MARGIN_LEFT + GRID_GAP)) / 2}px)`,\n THREAD_PARENT_MOBILE: `calc(50vw - ${(THREAD_PARENT_SIDE_PADDING + PROFILE_IMAGE_WIDTH + THREAD_PARENT_GRID_MARGIN_LEFT + GRID_GAP) / 2}px)`,\n THREAD_CHILD_WEB: `calc(${(THREAD_CHILD_WIDTH - THREAD_CHILD_SIDE_PADDING - GRID_GAP) / 2}px)`,\n THREAD_CHILD_MOBILE: `calc(50vw - ${(THREAD_CHILD_MOBILE_SIDE_PADDING + PROFILE_IMAGE_WIDTH + THREAD_CHILD_MOBILE_TIMESTAMP_WIDTH_AND_ITS_SIDE_MARGIN + GRID_SIDE_PADDING + GRID_GAP) / 2}px)`,\n};\nexport const MULTIPLE_FILES_IMAGE_BORDER_RADIUS = {\n CHAT_WEB: '6px',\n CHAT_MOBILE: '6px',\n THREAD_PARENT_WEB: '6px',\n THREAD_PARENT_MOBILE: '6px',\n THREAD_CHILD_WEB: '6px',\n THREAD_CHILD_MOBILE: '6px',\n};\nexport const MULTIPLE_FILES_IMAGE_THUMBNAIL_SIDE_LENGTH = '40px';\n","import React, { ReactElement, useState } from 'react';\n\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport { MultipleFilesMessage, UploadedFileInfo } from '@sendbird/chat/message';\nimport ImageRenderer from '../ImageRenderer';\nimport ImageGrid from '../ImageGrid';\nimport FileViewer from '../FileViewer';\nimport './index.scss';\nimport { useMediaQueryContext } from '../../lib/MediaQueryContext';\nimport { useThreadMessageKindKeySelector } from './useThreadMessageKindKeySelector';\nimport {\n MULTIPLE_FILES_IMAGE_BORDER_RADIUS,\n MULTIPLE_FILES_IMAGE_SIDE_LENGTH,\n MULTIPLE_FILES_IMAGE_THUMBNAIL_SIDE_LENGTH,\n} from './const';\nimport { isGifFileInfo } from '../../utils';\n\nexport const ThreadMessageKind = {\n PARENT: 'parent',\n CHILD: 'child',\n} as const;\n\nexport type ThreadMessageKindType = typeof ThreadMessageKind[keyof typeof ThreadMessageKind];\n\ninterface Props {\n className?: string;\n message: MultipleFilesMessage;\n isByMe?: boolean;\n mouseHover?: boolean;\n isReactionEnabled?: boolean;\n truncateLimit?: number;\n threadMessageKind?: ThreadMessageKindType;\n}\n\nexport default function MultipleFilesMessageItemBody({\n className,\n message,\n isReactionEnabled = false,\n threadMessageKind,\n}: Props): ReactElement {\n const { isMobile } = useMediaQueryContext();\n const [fileInfoList] = useState<UploadedFileInfo[]>(message.fileInfoList);\n const threadMessageKindKey = useThreadMessageKindKeySelector({ threadMessageKind, isMobile });\n const [currentIndex, setCurrentIndex] = useState(-1);\n\n function onClose() {\n setCurrentIndex(-1);\n }\n\n function onClickLeft() {\n setCurrentIndex(\n currentIndex === 0\n ? fileInfoList.length - 1\n : currentIndex - 1,\n );\n }\n\n function onClickRight() {\n setCurrentIndex(\n currentIndex === fileInfoList.length - 1\n ? 0\n : currentIndex + 1,\n );\n }\n\n return threadMessageKindKey && (\n <>\n {\n currentIndex > -1 && (\n <FileViewer\n message={message}\n currentIndex={currentIndex}\n onClickLeft={onClickLeft}\n onClickRight={onClickRight}\n onClose={onClose}\n />\n )\n }\n <ImageGrid\n className={className}\n message={message}\n isReactionEnabled={isReactionEnabled}\n >\n {\n fileInfoList.map((fileInfo: UploadedFileInfo, index: number) => {\n return <div\n className='sendbird-multiple-files-image-renderer-wrapper'\n onClick={() => setCurrentIndex(index)}\n key={`sendbird-multiple-files-image-renderer-${index}-${fileInfo.plainUrl}`}\n >\n <ImageRenderer\n url={fileInfo.url}\n fixedSize={false}\n width={MULTIPLE_FILES_IMAGE_SIDE_LENGTH[threadMessageKindKey]}\n maxSideLength={MULTIPLE_FILES_IMAGE_SIDE_LENGTH.CHAT_WEB}\n height={MULTIPLE_FILES_IMAGE_SIDE_LENGTH[threadMessageKindKey]}\n borderRadius={MULTIPLE_FILES_IMAGE_BORDER_RADIUS[threadMessageKindKey]}\n shadeOnHover={true}\n isGif={isGifFileInfo(fileInfo)}\n defaultComponent={\n <div\n className=\"sendbird-multiple-files-image-renderer__thumbnail__placeholder\"\n >\n <Icon\n type={IconTypes.THUMBNAIL_NONE}\n fillColor={IconColors.ON_BACKGROUND_2}\n width={MULTIPLE_FILES_IMAGE_THUMBNAIL_SIDE_LENGTH}\n height={MULTIPLE_FILES_IMAGE_THUMBNAIL_SIDE_LENGTH}\n />\n </div>\n }\n />\n </div>;\n })\n }\n </ImageGrid>\n </>\n );\n}\n"],"names":["ImageGrid","_ref","_message$reactions","children","className","message","isReactionEnabled","React","createElement","getClassName","reactions","length","useThreadMessageKindKeySelector","threadMessageKind","isMobile","threadMessageKindKey","useMemo","match","with","ThreadMessageKind","PARENT","CHILD","otherwise","GRID_WIDTH_CHAT_WEB","GRID_SIDE_PADDING","GRID_GAP","TIMESTAMP_WIDTH_AND_ITS_SIDE_MARGIN","PROFILE_IMAGE_WIDTH","CHAT_MOBILE_SIDE_PADDING","THREAD_PARENT_WIDTH","THREAD_PARENT_SIDE_PADDING","THREAD_PARENT_GRID_MARGIN_LEFT","THREAD_CHILD_WIDTH","THREAD_CHILD_SIDE_PADDING","THREAD_CHILD_MOBILE_SIDE_PADDING","THREAD_CHILD_MOBILE_TIMESTAMP_WIDTH_AND_ITS_SIDE_MARGIN","MULTIPLE_FILES_IMAGE_SIDE_LENGTH","CHAT_WEB","CHAT_MOBILE","THREAD_PARENT_WEB","THREAD_PARENT_MOBILE","THREAD_CHILD_WEB","THREAD_CHILD_MOBILE","MULTIPLE_FILES_IMAGE_BORDER_RADIUS","MULTIPLE_FILES_IMAGE_THUMBNAIL_SIDE_LENGTH","MultipleFilesMessageItemBody","useMediaQueryContext","fileInfoList","useState","currentIndex","setCurrentIndex","onClose","onClickLeft","onClickRight","Fragment","FileViewer","map","fileInfo","index","onClick","key","plainUrl","ImageRenderer","url","fixedSize","width","maxSideLength","height","borderRadius","shadeOnHover","isGif","isGifFileInfo","defaultComponent","Icon","type","IconTypes","THUMBNAIL_NONE","fillColor","IconColors","ON_BACKGROUND_2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-d32155ad.js","sources":["../src/ui/ImageGrid/index.tsx","../src/ui/MultipleFilesMessageItemBody/useThreadMessageKindKeySelector.ts","../src/ui/MultipleFilesMessageItemBody/const.ts","../src/ui/MultipleFilesMessageItemBody/index.tsx"],"sourcesContent":["import React, { ReactElement } from 'react';\nimport './index.scss';\nimport { getClassName } from '../../utils';\nimport { MultipleFilesMessage } from '@sendbird/chat/message';\n\ninterface ImageGridProps {\n children: ReactElement[];\n className?: string;\n message: MultipleFilesMessage;\n isReactionEnabled?: boolean;\n}\n\nexport default function ImageGrid({\n children,\n className,\n message,\n isReactionEnabled,\n}: ImageGridProps): ReactElement {\n return (\n <div className='sendbird-image-grid-wrap'>\n <div className={getClassName([\n className,\n 'sendbird-image-grid',\n (isReactionEnabled && message?.reactions?.length > 0) ? 'reactions' : '',\n ])}>\n { children }\n </div>\n </div>\n );\n}\n","import { useMemo } from 'react';\nimport { ThreadMessageKind, ThreadMessageKindType } from './index';\nimport { match } from 'ts-pattern';\n\ninterface DynamicSideLengthProps {\n threadMessageKind: ThreadMessageKindType;\n isMobile: boolean;\n}\n\nexport function useThreadMessageKindKeySelector({\n threadMessageKind,\n isMobile,\n}: DynamicSideLengthProps): string {\n const threadMessageKindKey = useMemo(() => {\n return match(threadMessageKind)\n .with(ThreadMessageKind.PARENT, () => (isMobile\n ? 'THREAD_PARENT_MOBILE'\n : 'THREAD_PARENT_WEB'\n ))\n .with(ThreadMessageKind.CHILD, () => (isMobile\n ? 'THREAD_CHILD_MOBILE'\n : 'THREAD_CHILD_WEB'\n ))\n .otherwise(() => (isMobile\n ? 'CHAT_MOBILE'\n : 'CHAT_WEB'\n ));\n }, [isMobile, threadMessageKind]);\n return threadMessageKindKey;\n}\n","const GRID_WIDTH_CHAT_WEB = 400;\nconst GRID_SIDE_PADDING = 8;\nconst GRID_GAP = 4;\nconst TIMESTAMP_WIDTH_AND_ITS_SIDE_MARGIN = 54;\nconst PROFILE_IMAGE_WIDTH = 40;\n\nconst CHAT_MOBILE_SIDE_PADDING = 48;\n\nconst THREAD_PARENT_WIDTH = 320;\nconst THREAD_PARENT_SIDE_PADDING = 28;\nconst THREAD_PARENT_GRID_MARGIN_LEFT = 12;\n\nconst THREAD_CHILD_WIDTH = 200;\nconst THREAD_CHILD_SIDE_PADDING = 8;\nconst THREAD_CHILD_MOBILE_SIDE_PADDING = 32;\nconst THREAD_CHILD_MOBILE_TIMESTAMP_WIDTH_AND_ITS_SIDE_MARGIN = 60;\n\nexport const MULTIPLE_FILES_IMAGE_SIDE_LENGTH = {\n CHAT_WEB: `calc(${GRID_WIDTH_CHAT_WEB / 2}px - ${(GRID_SIDE_PADDING + GRID_GAP) / 2}px)`,\n CHAT_MOBILE: `calc(50vw - ${(CHAT_MOBILE_SIDE_PADDING + PROFILE_IMAGE_WIDTH + TIMESTAMP_WIDTH_AND_ITS_SIDE_MARGIN + GRID_SIDE_PADDING + GRID_GAP) / 2}px)`,\n THREAD_PARENT_WEB: `calc(${(THREAD_PARENT_WIDTH - (THREAD_PARENT_SIDE_PADDING + PROFILE_IMAGE_WIDTH + THREAD_PARENT_GRID_MARGIN_LEFT + GRID_GAP)) / 2}px)`,\n THREAD_PARENT_MOBILE: `calc(50vw - ${(THREAD_PARENT_SIDE_PADDING + PROFILE_IMAGE_WIDTH + THREAD_PARENT_GRID_MARGIN_LEFT + GRID_GAP) / 2}px)`,\n THREAD_CHILD_WEB: `calc(${(THREAD_CHILD_WIDTH - THREAD_CHILD_SIDE_PADDING - GRID_GAP) / 2}px)`,\n THREAD_CHILD_MOBILE: `calc(50vw - ${(THREAD_CHILD_MOBILE_SIDE_PADDING + PROFILE_IMAGE_WIDTH + THREAD_CHILD_MOBILE_TIMESTAMP_WIDTH_AND_ITS_SIDE_MARGIN + GRID_SIDE_PADDING + GRID_GAP) / 2}px)`,\n};\nexport const MULTIPLE_FILES_IMAGE_BORDER_RADIUS = {\n CHAT_WEB: '6px',\n CHAT_MOBILE: '6px',\n THREAD_PARENT_WEB: '6px',\n THREAD_PARENT_MOBILE: '6px',\n THREAD_CHILD_WEB: '6px',\n THREAD_CHILD_MOBILE: '6px',\n};\nexport const MULTIPLE_FILES_IMAGE_THUMBNAIL_SIDE_LENGTH = '40px';\n","import React, { ReactElement, useState } from 'react';\n\nimport Icon, { IconTypes, IconColors } from '../Icon';\nimport { MultipleFilesMessage, UploadedFileInfo } from '@sendbird/chat/message';\nimport ImageRenderer from '../ImageRenderer';\nimport ImageGrid from '../ImageGrid';\nimport FileViewer from '../FileViewer';\nimport './index.scss';\nimport { useMediaQueryContext } from '../../lib/MediaQueryContext';\nimport { useThreadMessageKindKeySelector } from './useThreadMessageKindKeySelector';\nimport {\n MULTIPLE_FILES_IMAGE_BORDER_RADIUS,\n MULTIPLE_FILES_IMAGE_SIDE_LENGTH,\n MULTIPLE_FILES_IMAGE_THUMBNAIL_SIDE_LENGTH,\n} from './const';\nimport { isGifFileInfo } from '../../utils';\n\nexport const ThreadMessageKind = {\n PARENT: 'parent',\n CHILD: 'child',\n} as const;\n\nexport type ThreadMessageKindType = typeof ThreadMessageKind[keyof typeof ThreadMessageKind];\n\ninterface Props {\n className?: string;\n message: MultipleFilesMessage;\n isByMe?: boolean;\n mouseHover?: boolean;\n isReactionEnabled?: boolean;\n truncateLimit?: number;\n threadMessageKind?: ThreadMessageKindType;\n}\n\nexport default function MultipleFilesMessageItemBody({\n className,\n message,\n isReactionEnabled = false,\n threadMessageKind,\n}: Props): ReactElement {\n const { isMobile } = useMediaQueryContext();\n const [fileInfoList] = useState<UploadedFileInfo[]>(message.fileInfoList);\n const threadMessageKindKey = useThreadMessageKindKeySelector({ threadMessageKind, isMobile });\n const [currentIndex, setCurrentIndex] = useState(-1);\n\n function onClose() {\n setCurrentIndex(-1);\n }\n\n function onClickLeft() {\n setCurrentIndex(\n currentIndex === 0\n ? fileInfoList.length - 1\n : currentIndex - 1,\n );\n }\n\n function onClickRight() {\n setCurrentIndex(\n currentIndex === fileInfoList.length - 1\n ? 0\n : currentIndex + 1,\n );\n }\n\n return threadMessageKindKey && (\n <>\n {\n currentIndex > -1 && (\n <FileViewer\n message={message}\n currentIndex={currentIndex}\n onClickLeft={onClickLeft}\n onClickRight={onClickRight}\n onClose={onClose}\n />\n )\n }\n <ImageGrid\n className={className}\n message={message}\n isReactionEnabled={isReactionEnabled}\n >\n {\n fileInfoList.map((fileInfo: UploadedFileInfo, index: number) => {\n return <div\n className='sendbird-multiple-files-image-renderer-wrapper'\n onClick={() => setCurrentIndex(index)}\n key={`sendbird-multiple-files-image-renderer-${index}-${fileInfo.plainUrl}`}\n >\n <ImageRenderer\n url={fileInfo.url}\n fixedSize={false}\n width={MULTIPLE_FILES_IMAGE_SIDE_LENGTH[threadMessageKindKey]}\n maxSideLength={MULTIPLE_FILES_IMAGE_SIDE_LENGTH.CHAT_WEB}\n height={MULTIPLE_FILES_IMAGE_SIDE_LENGTH[threadMessageKindKey]}\n borderRadius={MULTIPLE_FILES_IMAGE_BORDER_RADIUS[threadMessageKindKey]}\n shadeOnHover={true}\n isGif={isGifFileInfo(fileInfo)}\n defaultComponent={\n <div\n className=\"sendbird-multiple-files-image-renderer__thumbnail__placeholder\"\n >\n <Icon\n type={IconTypes.THUMBNAIL_NONE}\n fillColor={IconColors.ON_BACKGROUND_2}\n width={MULTIPLE_FILES_IMAGE_THUMBNAIL_SIDE_LENGTH}\n height={MULTIPLE_FILES_IMAGE_THUMBNAIL_SIDE_LENGTH}\n />\n </div>\n }\n />\n </div>;\n })\n }\n </ImageGrid>\n </>\n );\n}\n"],"names":["ImageGrid","_ref","_message$reactions","children","className","message","isReactionEnabled","React","createElement","getClassName","reactions","length","useThreadMessageKindKeySelector","threadMessageKind","isMobile","threadMessageKindKey","useMemo","match","with","ThreadMessageKind","PARENT","CHILD","otherwise","GRID_WIDTH_CHAT_WEB","GRID_SIDE_PADDING","GRID_GAP","TIMESTAMP_WIDTH_AND_ITS_SIDE_MARGIN","PROFILE_IMAGE_WIDTH","CHAT_MOBILE_SIDE_PADDING","THREAD_PARENT_WIDTH","THREAD_PARENT_SIDE_PADDING","THREAD_PARENT_GRID_MARGIN_LEFT","THREAD_CHILD_WIDTH","THREAD_CHILD_SIDE_PADDING","THREAD_CHILD_MOBILE_SIDE_PADDING","THREAD_CHILD_MOBILE_TIMESTAMP_WIDTH_AND_ITS_SIDE_MARGIN","MULTIPLE_FILES_IMAGE_SIDE_LENGTH","CHAT_WEB","CHAT_MOBILE","THREAD_PARENT_WEB","THREAD_PARENT_MOBILE","THREAD_CHILD_WEB","THREAD_CHILD_MOBILE","MULTIPLE_FILES_IMAGE_BORDER_RADIUS","MULTIPLE_FILES_IMAGE_THUMBNAIL_SIDE_LENGTH","MultipleFilesMessageItemBody","useMediaQueryContext","fileInfoList","useState","currentIndex","setCurrentIndex","onClose","onClickLeft","onClickRight","Fragment","FileViewer","map","fileInfo","index","onClick","key","plainUrl","ImageRenderer","url","fixedSize","width","maxSideLength","height","borderRadius","shadeOnHover","isGif","isGifFileInfo","defaultComponent","Icon","type","IconTypes","THUMBNAIL_NONE","fillColor","IconColors","ON_BACKGROUND_2"],"mappings":";;;;;;;;AAYe,SAASA,SAASA,CAAAC,IAAA,EAKA;AAAA,EAAA,IAAAC,kBAAA,CAAA;EAAA,IALC;IAChCC,QAAQ;IACRC,SAAS;IACTC,OAAO;AACPC,IAAAA,iBAAAA;AACc,GAAC,GAAAL,IAAA,CAAA;EACf,oBACEM,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKJ,IAAAA,SAAS,EAAC,0BAAA;GACbG,eAAAA,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKJ,IAAAA,SAAS,EAAEK,YAAY,CAAC,CAC3BL,SAAS,EACT,qBAAqB,EACpBE,iBAAiB,IAAI,CAAAD,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAAH,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,CAAAA,kBAAA,GAAPG,OAAO,CAAEK,SAAS,MAAAR,IAAAA,IAAAA,kBAAA,uBAAlBA,kBAAA,CAAoBS,MAAM,IAAG,CAAC,GAAI,WAAW,GAAG,EAAE,CACzE,CAAA;GACGR,EAAAA,QAAQ,CACN,CACF,CAAA;AAEV;;ACpBO,SAASS,+BAA+BA,CAAAX,IAAA,EAGZ;EAAA,IAHa;IAC9CY,iBAAiB;AACjBC,IAAAA,QAAAA;AACsB,GAAC,GAAAb,IAAA,CAAA;AACvB,EAAA,MAAMc,oBAAoB,GAAGC,OAAO,CAAC,MAAM;AACzC,IAAA,OAAOC,CAAK,CAACJ,iBAAiB,CAAC,CAC5BK,IAAI,CAACC,iBAAiB,CAACC,MAAM,EAAE,MAAON,QAAQ,GAC3C,sBAAsB,GACtB,mBACH,CAAC,CACDI,IAAI,CAACC,iBAAiB,CAACE,KAAK,EAAE,MAAOP,QAAQ,GAC1C,qBAAqB,GACrB,kBACH,CAAC,CACDQ,SAAS,CAAC,MAAOR,QAAQ,GACtB,aAAa,GACb,UACH,CAAC,CAAA;AACN,GAAC,EAAE,CAACA,QAAQ,EAAED,iBAAiB,CAAC,CAAC,CAAA;AACjC,EAAA,OAAOE,oBAAoB,CAAA;AAC7B;;AC7BA,MAAMQ,mBAAmB,GAAG,GAAG,CAAA;AAC/B,MAAMC,iBAAiB,GAAG,CAAC,CAAA;AAC3B,MAAMC,QAAQ,GAAG,CAAC,CAAA;AAClB,MAAMC,mCAAmC,GAAG,EAAE,CAAA;AAC9C,MAAMC,mBAAmB,GAAG,EAAE,CAAA;AAE9B,MAAMC,wBAAwB,GAAG,EAAE,CAAA;AAEnC,MAAMC,mBAAmB,GAAG,GAAG,CAAA;AAC/B,MAAMC,0BAA0B,GAAG,EAAE,CAAA;AACrC,MAAMC,8BAA8B,GAAG,EAAE,CAAA;AAEzC,MAAMC,kBAAkB,GAAG,GAAG,CAAA;AAC9B,MAAMC,yBAAyB,GAAG,CAAC,CAAA;AACnC,MAAMC,gCAAgC,GAAG,EAAE,CAAA;AAC3C,MAAMC,uDAAuD,GAAG,EAAE,CAAA;AAE3D,MAAMC,gCAAgC,GAAG;AAC9CC,EAAAA,QAAQ,EAAG,CAAA,KAAA,EAAOd,mBAAmB,GAAG,CAAE,CAAA,KAAA,EAAO,CAACC,iBAAiB,GAAGC,QAAQ,IAAI,CAAE,CAAI,GAAA,CAAA;AACxFa,EAAAA,WAAW,EAAG,CAAA,YAAA,EAAc,CAACV,wBAAwB,GAAGD,mBAAmB,GAAGD,mCAAmC,GAAGF,iBAAiB,GAAGC,QAAQ,IAAI,CAAE,CAAI,GAAA,CAAA;AAC1Jc,EAAAA,iBAAiB,EAAG,CAAA,KAAA,EAAO,CAACV,mBAAmB,IAAIC,0BAA0B,GAAGH,mBAAmB,GAAGI,8BAA8B,GAAGN,QAAQ,CAAC,IAAI,CAAE,CAAI,GAAA,CAAA;AAC1Je,EAAAA,oBAAoB,EAAG,CAAA,YAAA,EAAc,CAACV,0BAA0B,GAAGH,mBAAmB,GAAGI,8BAA8B,GAAGN,QAAQ,IAAI,CAAE,CAAI,GAAA,CAAA;EAC5IgB,gBAAgB,EAAG,CAAO,KAAA,EAAA,CAACT,kBAAkB,GAAGC,yBAAyB,GAAGR,QAAQ,IAAI,CAAE,CAAI,GAAA,CAAA;AAC9FiB,EAAAA,mBAAmB,EAAG,CAAA,YAAA,EAAc,CAACR,gCAAgC,GAAGP,mBAAmB,GAAGQ,uDAAuD,GAAGX,iBAAiB,GAAGC,QAAQ,IAAI,CAAE,CAAA,GAAA,CAAA;AAC5L,CAAC,CAAA;AACM,MAAMkB,kCAAkC,GAAG;AAChDN,EAAAA,QAAQ,EAAE,KAAK;AACfC,EAAAA,WAAW,EAAE,KAAK;AAClBC,EAAAA,iBAAiB,EAAE,KAAK;AACxBC,EAAAA,oBAAoB,EAAE,KAAK;AAC3BC,EAAAA,gBAAgB,EAAE,KAAK;AACvBC,EAAAA,mBAAmB,EAAE,KAAA;AACvB,CAAC,CAAA;AACM,MAAME,0CAA0C,GAAG,MAAM;;AChBzD,MAAMzB,iBAAiB,GAAG;AAC/BC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,KAAK,EAAE,OAAA;AACT,EAAU;AAcK,SAASwB,4BAA4BA,CAAA5C,IAAA,EAK5B;EAAA,IAL6B;IACnDG,SAAS;IACTC,OAAO;AACPC,IAAAA,iBAAiB,GAAG,KAAK;AACzBO,IAAAA,iBAAAA;AACK,GAAC,GAAAZ,IAAA,CAAA;EACN,MAAM;AAAEa,IAAAA,QAAAA;GAAU,GAAGgC,oBAAoB,EAAE,CAAA;EAC3C,MAAM,CAACC,YAAY,CAAC,GAAGC,QAAQ,CAAqB3C,OAAO,CAAC0C,YAAY,CAAC,CAAA;EACzE,MAAMhC,oBAAoB,GAAGH,+BAA+B,CAAC;IAAEC,iBAAiB;AAAEC,IAAAA,QAAAA;AAAS,GAAC,CAAC,CAAA;EAC7F,MAAM,CAACmC,YAAY,EAAEC,eAAe,CAAC,GAAGF,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;EAEpD,SAASG,OAAOA,GAAG;IACjBD,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;AACrB,GAAA;EAEA,SAASE,WAAWA,GAAG;AACrBF,IAAAA,eAAe,CACbD,YAAY,KAAK,CAAC,GACdF,YAAY,CAACpC,MAAM,GAAG,CAAC,GACvBsC,YAAY,GAAG,CAAC,CACrB,CAAA;AACH,GAAA;EAEA,SAASI,YAAYA,GAAG;AACtBH,IAAAA,eAAe,CACbD,YAAY,KAAKF,YAAY,CAACpC,MAAM,GAAG,CAAC,GACpC,CAAC,GACDsC,YAAY,GAAG,CAAC,CACrB,CAAA;AACH,GAAA;AAEA,EAAA,OAAOlC,oBAAoB,iBACzBR,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAA+C,QAAA,QAEIL,YAAY,GAAG,CAAC,CAAC,iBACf1C,cAAA,CAAAC,aAAA,CAAC+C,UAAU,EAAA;AACTlD,IAAAA,OAAO,EAAEA,OAAQ;AACjB4C,IAAAA,YAAY,EAAEA,YAAa;AAC3BG,IAAAA,WAAW,EAAEA,WAAY;AACzBC,IAAAA,YAAY,EAAEA,YAAa;AAC3BF,IAAAA,OAAO,EAAEA,OAAAA;AAAQ,GAAA,CAEpB,eAEH5C,cAAA,CAAAC,aAAA,CAACR,SAAS,EAAA;AACRI,IAAAA,SAAS,EAAEA,SAAU;AACrBC,IAAAA,OAAO,EAAEA,OAAQ;AACjBC,IAAAA,iBAAiB,EAAEA,iBAAAA;GAGjByC,EAAAA,YAAY,CAACS,GAAG,CAAC,CAACC,QAA0B,EAAEC,KAAa,KAAK;IAC9D,oBAAOnD,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACLJ,MAAAA,SAAS,EAAC,gDAAgD;AAC1DuD,MAAAA,OAAO,EAAEA,MAAMT,eAAe,CAACQ,KAAK,CAAE;AACtCE,MAAAA,GAAG,EAAG,CAAyCF,uCAAAA,EAAAA,KAAM,CAAGD,CAAAA,EAAAA,QAAQ,CAACI,QAAS,CAAA,CAAA;AAAE,KAAA,eAE5EtD,cAAA,CAAAC,aAAA,CAACsD,aAAa,EAAA;MACZC,GAAG,EAAEN,QAAQ,CAACM,GAAI;AAClBC,MAAAA,SAAS,EAAE,KAAM;AACjBC,MAAAA,KAAK,EAAE7B,gCAAgC,CAACrB,oBAAoB,CAAE;MAC9DmD,aAAa,EAAE9B,gCAAgC,CAACC,QAAS;AACzD8B,MAAAA,MAAM,EAAE/B,gCAAgC,CAACrB,oBAAoB,CAAE;AAC/DqD,MAAAA,YAAY,EAAEzB,kCAAkC,CAAC5B,oBAAoB,CAAE;AACvEsD,MAAAA,YAAY,EAAE,IAAK;AACnBC,MAAAA,KAAK,EAAEC,aAAa,CAACd,QAAQ,CAAE;MAC/Be,gBAAgB,eACdjE,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEJ,QAAAA,SAAS,EAAC,gEAAA;AAAgE,OAAA,eAE1EG,cAAA,CAAAC,aAAA,CAACiE,IAAI,EAAA;QACHC,IAAI,EAAEC,SAAS,CAACC,cAAe;QAC/BC,SAAS,EAAEC,UAAU,CAACC,eAAgB;AACtCd,QAAAA,KAAK,EAAErB,0CAA2C;AAClDuB,QAAAA,MAAM,EAAEvB,0CAAAA;OACR,CAAA,CAAA;AAEL,KAAA,CACD,CACE,CAAA;GACP,CAAC,CAEM,CAEf,CAAA;AACH;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as isSameDay } from './index-
|
|
2
|
-
import { r as requiredArgs, t as toDate, a as toInteger } from './index-
|
|
1
|
+
import { i as isSameDay } from './index-bc42f0e9.js';
|
|
2
|
+
import { r as requiredArgs, t as toDate, a as toInteger } from './index-644f4972.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* @name isToday
|
|
@@ -171,4 +171,4 @@ function isYesterday(dirtyDate) {
|
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
export { isYesterday as a, isThisYear as b, isToday as i };
|
|
174
|
-
//# sourceMappingURL=index-
|
|
174
|
+
//# sourceMappingURL=index-d8c8e716.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-d8c8e716.js","sources":["../node_modules/date-fns/esm/isToday/index.js","../node_modules/date-fns/esm/isSameYear/index.js","../node_modules/date-fns/esm/isThisYear/index.js","../node_modules/date-fns/esm/addDays/index.js","../node_modules/date-fns/esm/subDays/index.js","../node_modules/date-fns/esm/isYesterday/index.js"],"sourcesContent":["import isSameDay from \"../isSameDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is today\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * const result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\n\nexport default function isToday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, Date.now());\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\n\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import isSameYear from \"../isSameYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisYear\n * @category Year Helpers\n * @summary Is the given date in the same year as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same year as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this year?\n * const result = isThisYear(new Date(2014, 6, 2))\n * //=> true\n */\n\nexport default function isThisYear(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameYear(dirtyDate, Date.now());\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n date.setDate(date.getDate() + amount);\n return date;\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\n\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import isSameDay from \"../isSameDay/index.js\";\nimport subDays from \"../subDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isYesterday\n * @category Day Helpers\n * @summary Is the given date yesterday?\n * @pure false\n *\n * @description\n * Is the given date yesterday?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is yesterday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 5 October 14:00:00 yesterday?\n * const result = isYesterday(new Date(2014, 9, 5, 14, 0))\n * //=> true\n */\n\nexport default function isYesterday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, subDays(Date.now(), 1));\n}"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { _ as _objectSpread2 } from './_rollupPluginBabelHelpers-
|
|
1
|
+
import { _ as _objectSpread2 } from './_rollupPluginBabelHelpers-127d506a.js';
|
|
2
2
|
import { OutgoingMessageStates, getOutgoingMessageState } from './utils/message/getOutgoingMessageState.js';
|
|
3
|
-
import { K } from './index.module-
|
|
3
|
+
import { K } from './index.module-0935752c.js';
|
|
4
4
|
|
|
5
5
|
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types
|
|
6
6
|
const SUPPORTED_MIMES = {
|
|
@@ -595,4 +595,4 @@ const arrayEqual = (array1, array2) => {
|
|
|
595
595
|
};
|
|
596
596
|
|
|
597
597
|
export { isOGMessage as A, isTextMessage as B, isSupportedFileView as C, isUrl as D, isEditedMessage as E, isSentMessage as F, isFailedMessage as G, isPendingMessage as H, copyToClipboard as I, getEmojiListAll as J, getEmojiUrl as K, isReactedBy as L, getEmojiTooltipString as M, getEmojiMapAll as N, getUIKitFileType as O, truncateString as P, getUIKitFileTypes as Q, isThreadMessage as R, isGifFileInfo as S, convertWordToStringObj as T, UIKitMessageTypes as U, StringObjType as V, getSendingMessageStatus as a, filterMessageListParams as b, isMultipleFilesMessage as c, isVoiceMessage as d, isReadMessage as e, filterChannelListParams as f, getChannelsWithUpsertedChannel as g, isGif as h, isTextuallyNull as i, isImage as j, isVideo as k, isSentStatus as l, getClassName as m, arrayEqual as n, getMimeTypesUIKitAccepts as o, isFileMessage as p, isImageMessage as q, isImageFileInfo as r, isThumbnailMessage as s, isAudioMessage as t, isGifMessage as u, isVideoMessage as v, isUserMessage as w, getUIKitMessageType as x, getUIKitMessageTypes as y, getSenderName as z };
|
|
598
|
-
//# sourceMappingURL=index-
|
|
598
|
+
//# sourceMappingURL=index-dd767201.js.map
|