@sendbird/uikit-react 3.6.10 → 3.6.11-beta.1

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.
Files changed (541) hide show
  1. package/App.js +55 -55
  2. package/Channel/components/ChannelHeader.js +22 -22
  3. package/Channel/components/ChannelUI.js +48 -48
  4. package/Channel/components/FileViewer.js +18 -18
  5. package/Channel/components/FrozenNotification.js +4 -4
  6. package/Channel/components/Message.js +42 -42
  7. package/Channel/components/MessageInput.js +34 -34
  8. package/Channel/components/MessageList.js +43 -43
  9. package/Channel/components/RemoveMessageModal.js +22 -22
  10. package/Channel/components/SuggestedMentionList.js +20 -20
  11. package/Channel/components/TypingIndicator.js +18 -18
  12. package/Channel/components/UnreadCount.js +4 -4
  13. package/Channel/context.js +15 -15
  14. package/Channel/utils/compareMessagesForGrouping.js +7 -7
  15. package/Channel/utils/getMessagePartsInfo.js +8 -8
  16. package/Channel.js +48 -48
  17. package/ChannelList/components/AddChannel.js +16 -16
  18. package/ChannelList/components/ChannelListHeader.js +6 -6
  19. package/ChannelList/components/ChannelListUI.js +33 -33
  20. package/ChannelList/components/ChannelPreview.js +29 -29
  21. package/ChannelList/components/ChannelPreviewAction.js +15 -15
  22. package/ChannelList/context.js +9 -9
  23. package/ChannelList.js +46 -36
  24. package/ChannelList.js.map +1 -1
  25. package/{ChannelListProvider-db5ec581.js → ChannelListProvider-3b34756f.js} +15 -14
  26. package/ChannelListProvider-3b34756f.js.map +1 -0
  27. package/{ChannelProvider-4710d84f.js → ChannelProvider-84f36028.js} +13 -13
  28. package/{ChannelProvider-4710d84f.js.map → ChannelProvider-84f36028.js.map} +1 -1
  29. package/ChannelSettings/components/ChannelProfile.js +13 -13
  30. package/ChannelSettings/components/ChannelSettingsUI.js +18 -18
  31. package/ChannelSettings/components/EditDetailsModal.js +13 -13
  32. package/ChannelSettings/components/LeaveChannel.js +12 -12
  33. package/ChannelSettings/components/ModerationPanel.js +15 -15
  34. package/ChannelSettings/components/UserListItem.js +11 -11
  35. package/ChannelSettings/components/UserPanel.js +14 -14
  36. package/ChannelSettings/context.js +3 -3
  37. package/ChannelSettings.js +18 -18
  38. package/CreateChannel/components/CreateChannelUI.js +14 -14
  39. package/CreateChannel/components/InviteUsers.js +14 -14
  40. package/CreateChannel/components/SelectChannelType.js +11 -11
  41. package/CreateChannel/context.js +4 -4
  42. package/CreateChannel.js +14 -14
  43. package/{CreateChannelProvider-2318bfd7.js → CreateChannelProvider-4230ce8f.js} +1 -1
  44. package/{CreateChannelProvider-2318bfd7.js.map → CreateChannelProvider-4230ce8f.js.map} +1 -1
  45. package/CreateOpenChannel/components/CreateOpenChannelUI.js +11 -11
  46. package/CreateOpenChannel/context.js +1 -1
  47. package/CreateOpenChannel.js +11 -11
  48. package/EditUserProfile/components/EditUserProfileUI.js +13 -13
  49. package/EditUserProfile.js +13 -13
  50. package/{LocalizationContext-ffc4148d.js → LocalizationContext-feaa05ad.js} +3 -3
  51. package/{LocalizationContext-ffc4148d.js.map → LocalizationContext-feaa05ad.js.map} +1 -1
  52. package/{MediaQueryContext-9401e28a.js → MediaQueryContext-11e0a1e3.js} +1 -1
  53. package/{MediaQueryContext-9401e28a.js.map → MediaQueryContext-11e0a1e3.js.map} +1 -1
  54. package/{MemberList-84e92e5d.js → MemberList-3e21b75a.js} +6 -6
  55. package/{MemberList-84e92e5d.js.map → MemberList-3e21b75a.js.map} +1 -1
  56. package/MessageSearch/components/MessageSearchUI.js +13 -13
  57. package/MessageSearch/context.js +1 -1
  58. package/MessageSearch.js +13 -13
  59. package/OpenChannel/components/FrozenChannelNotification.js +4 -4
  60. package/OpenChannel/components/OpenChannelHeader.js +12 -12
  61. package/OpenChannel/components/OpenChannelInput.js +20 -20
  62. package/OpenChannel/components/OpenChannelMessage.js +31 -31
  63. package/OpenChannel/components/OpenChannelMessageList.js +34 -34
  64. package/OpenChannel/components/OpenChannelUI.js +34 -34
  65. package/OpenChannel/context.js +8 -8
  66. package/OpenChannel.js +34 -34
  67. package/OpenChannelList/components/OpenChannelListUI.js +15 -15
  68. package/OpenChannelList/components/OpenChannelPreview.js +3 -3
  69. package/OpenChannelList/context.js +3 -3
  70. package/OpenChannelList.js +15 -15
  71. package/{OpenChannelListProvider-bccaef43.js → OpenChannelListProvider-7f336855.js} +3 -3
  72. package/{OpenChannelListProvider-bccaef43.js.map → OpenChannelListProvider-7f336855.js.map} +1 -1
  73. package/{OpenChannelProvider-f6d7afc8.js → OpenChannelProvider-4953d940.js} +7 -7
  74. package/{OpenChannelProvider-f6d7afc8.js.map → OpenChannelProvider-4953d940.js.map} +1 -1
  75. package/OpenChannelSettings/components/EditDetailsModal.js +14 -14
  76. package/OpenChannelSettings/components/OpenChannelProfile.js +14 -14
  77. package/OpenChannelSettings/components/OpenChannelSettingsUI.js +18 -18
  78. package/OpenChannelSettings/components/OperatorUI.js +17 -17
  79. package/OpenChannelSettings/components/ParticipantUI.js +15 -15
  80. package/OpenChannelSettings/context.js +3 -3
  81. package/OpenChannelSettings.js +18 -18
  82. package/{RemoveMessageModal-2831884b.js → RemoveMessageModal-e3c44528.js} +5 -5
  83. package/{RemoveMessageModal-2831884b.js.map → RemoveMessageModal-e3c44528.js.map} +1 -1
  84. package/SendbirdProvider.js +17 -17
  85. package/SendbirdProvider.js.map +1 -1
  86. package/Thread/components/ParentMessageInfo.js +38 -38
  87. package/Thread/components/ParentMessageInfoItem.js +25 -25
  88. package/Thread/components/ThreadHeader.js +6 -6
  89. package/Thread/components/ThreadList.js +42 -42
  90. package/Thread/components/ThreadListItem.js +42 -42
  91. package/Thread/components/ThreadMessageInput.js +34 -34
  92. package/Thread/components/ThreadUI.js +47 -47
  93. package/Thread/context.js +12 -12
  94. package/Thread.js +47 -47
  95. package/{ThreadProvider-1418ccf0.js → ThreadProvider-7f6d0d40.js} +31 -9
  96. package/ThreadProvider-7f6d0d40.js.map +1 -0
  97. package/{UserProfileContext-4ebadc38.js → UserProfileContext-70414dd5.js} +1 -1
  98. package/{UserProfileContext-4ebadc38.js.map → UserProfileContext-70414dd5.js.map} +1 -1
  99. package/VoicePlayer/context.js +3 -3
  100. package/VoicePlayer/useVoicePlayer.js +11 -11
  101. package/VoiceRecorder/context.js +11 -11
  102. package/VoiceRecorder/useVoiceRecorder.js +10 -10
  103. package/{WebAudioUtils-1b9385ec.js → WebAudioUtils-5a8539aa.js} +2 -2
  104. package/{WebAudioUtils-1b9385ec.js.map → WebAudioUtils-5a8539aa.js.map} +1 -1
  105. package/{_rollupPluginBabelHelpers-0cef07cb.js → _rollupPluginBabelHelpers-51534391.js} +1 -1
  106. package/_rollupPluginBabelHelpers-51534391.js.map +1 -0
  107. package/{actionTypes-318efb77.js → actionTypes-54ae5a44.js} +1 -1
  108. package/{actionTypes-318efb77.js.map → actionTypes-54ae5a44.js.map} +1 -1
  109. package/cjs/App.js +55 -55
  110. package/cjs/Channel/components/ChannelHeader.js +22 -22
  111. package/cjs/Channel/components/ChannelUI.js +48 -48
  112. package/cjs/Channel/components/FileViewer.js +18 -18
  113. package/cjs/Channel/components/FrozenNotification.js +4 -4
  114. package/cjs/Channel/components/Message.js +42 -42
  115. package/cjs/Channel/components/MessageInput.js +34 -34
  116. package/cjs/Channel/components/MessageList.js +43 -43
  117. package/cjs/Channel/components/RemoveMessageModal.js +22 -22
  118. package/cjs/Channel/components/SuggestedMentionList.js +20 -20
  119. package/cjs/Channel/components/TypingIndicator.js +18 -18
  120. package/cjs/Channel/components/UnreadCount.js +4 -4
  121. package/cjs/Channel/context.js +15 -15
  122. package/cjs/Channel/utils/compareMessagesForGrouping.js +7 -7
  123. package/cjs/Channel/utils/getMessagePartsInfo.js +8 -8
  124. package/cjs/Channel.js +48 -48
  125. package/cjs/ChannelList/components/AddChannel.js +16 -16
  126. package/cjs/ChannelList/components/ChannelListHeader.js +6 -6
  127. package/cjs/ChannelList/components/ChannelListUI.js +33 -33
  128. package/cjs/ChannelList/components/ChannelPreview.js +29 -29
  129. package/cjs/ChannelList/components/ChannelPreviewAction.js +15 -15
  130. package/cjs/ChannelList/context.js +9 -9
  131. package/cjs/ChannelList.js +45 -35
  132. package/cjs/ChannelList.js.map +1 -1
  133. package/cjs/{ChannelListProvider-8a2c8449.js → ChannelListProvider-0e8c13a1.js} +15 -14
  134. package/cjs/ChannelListProvider-0e8c13a1.js.map +1 -0
  135. package/cjs/{ChannelProvider-f53f6659.js → ChannelProvider-7af0f1fb.js} +13 -13
  136. package/cjs/{ChannelProvider-f53f6659.js.map → ChannelProvider-7af0f1fb.js.map} +1 -1
  137. package/cjs/ChannelSettings/components/ChannelProfile.js +13 -13
  138. package/cjs/ChannelSettings/components/ChannelSettingsUI.js +18 -18
  139. package/cjs/ChannelSettings/components/EditDetailsModal.js +13 -13
  140. package/cjs/ChannelSettings/components/LeaveChannel.js +12 -12
  141. package/cjs/ChannelSettings/components/ModerationPanel.js +15 -15
  142. package/cjs/ChannelSettings/components/UserListItem.js +11 -11
  143. package/cjs/ChannelSettings/components/UserPanel.js +14 -14
  144. package/cjs/ChannelSettings/context.js +3 -3
  145. package/cjs/ChannelSettings.js +18 -18
  146. package/cjs/CreateChannel/components/CreateChannelUI.js +14 -14
  147. package/cjs/CreateChannel/components/InviteUsers.js +14 -14
  148. package/cjs/CreateChannel/components/SelectChannelType.js +11 -11
  149. package/cjs/CreateChannel/context.js +4 -4
  150. package/cjs/CreateChannel.js +14 -14
  151. package/cjs/{CreateChannelProvider-c222d954.js → CreateChannelProvider-b6f9258d.js} +1 -1
  152. package/cjs/{CreateChannelProvider-c222d954.js.map → CreateChannelProvider-b6f9258d.js.map} +1 -1
  153. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js +11 -11
  154. package/cjs/CreateOpenChannel/context.js +1 -1
  155. package/cjs/CreateOpenChannel.js +11 -11
  156. package/cjs/EditUserProfile/components/EditUserProfileUI.js +13 -13
  157. package/cjs/EditUserProfile.js +13 -13
  158. package/cjs/{LocalizationContext-40eb7c9d.js → LocalizationContext-49278e68.js} +3 -3
  159. package/cjs/{LocalizationContext-40eb7c9d.js.map → LocalizationContext-49278e68.js.map} +1 -1
  160. package/cjs/{MediaQueryContext-c66337d3.js → MediaQueryContext-5d18c7c9.js} +1 -1
  161. package/cjs/{MediaQueryContext-c66337d3.js.map → MediaQueryContext-5d18c7c9.js.map} +1 -1
  162. package/cjs/{MemberList-f3956662.js → MemberList-f2874584.js} +6 -6
  163. package/cjs/{MemberList-f3956662.js.map → MemberList-f2874584.js.map} +1 -1
  164. package/cjs/MessageSearch/components/MessageSearchUI.js +13 -13
  165. package/cjs/MessageSearch/context.js +1 -1
  166. package/cjs/MessageSearch.js +13 -13
  167. package/cjs/OpenChannel/components/FrozenChannelNotification.js +4 -4
  168. package/cjs/OpenChannel/components/OpenChannelHeader.js +12 -12
  169. package/cjs/OpenChannel/components/OpenChannelInput.js +20 -20
  170. package/cjs/OpenChannel/components/OpenChannelMessage.js +31 -31
  171. package/cjs/OpenChannel/components/OpenChannelMessageList.js +34 -34
  172. package/cjs/OpenChannel/components/OpenChannelUI.js +34 -34
  173. package/cjs/OpenChannel/context.js +8 -8
  174. package/cjs/OpenChannel.js +34 -34
  175. package/cjs/OpenChannelList/components/OpenChannelListUI.js +15 -15
  176. package/cjs/OpenChannelList/components/OpenChannelPreview.js +3 -3
  177. package/cjs/OpenChannelList/context.js +3 -3
  178. package/cjs/OpenChannelList.js +15 -15
  179. package/cjs/{OpenChannelListProvider-0dfce6f0.js → OpenChannelListProvider-44b415cd.js} +3 -3
  180. package/cjs/{OpenChannelListProvider-0dfce6f0.js.map → OpenChannelListProvider-44b415cd.js.map} +1 -1
  181. package/cjs/{OpenChannelProvider-3fee0431.js → OpenChannelProvider-0c273f88.js} +7 -7
  182. package/cjs/{OpenChannelProvider-3fee0431.js.map → OpenChannelProvider-0c273f88.js.map} +1 -1
  183. package/cjs/OpenChannelSettings/components/EditDetailsModal.js +14 -14
  184. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +14 -14
  185. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +18 -18
  186. package/cjs/OpenChannelSettings/components/OperatorUI.js +17 -17
  187. package/cjs/OpenChannelSettings/components/ParticipantUI.js +15 -15
  188. package/cjs/OpenChannelSettings/context.js +3 -3
  189. package/cjs/OpenChannelSettings.js +18 -18
  190. package/cjs/{RemoveMessageModal-57524b2e.js → RemoveMessageModal-ac75b528.js} +5 -5
  191. package/cjs/{RemoveMessageModal-57524b2e.js.map → RemoveMessageModal-ac75b528.js.map} +1 -1
  192. package/cjs/SendbirdProvider.js +17 -17
  193. package/cjs/SendbirdProvider.js.map +1 -1
  194. package/cjs/Thread/components/ParentMessageInfo.js +38 -38
  195. package/cjs/Thread/components/ParentMessageInfoItem.js +25 -25
  196. package/cjs/Thread/components/ThreadHeader.js +6 -6
  197. package/cjs/Thread/components/ThreadList.js +42 -42
  198. package/cjs/Thread/components/ThreadListItem.js +42 -42
  199. package/cjs/Thread/components/ThreadMessageInput.js +34 -34
  200. package/cjs/Thread/components/ThreadUI.js +47 -47
  201. package/cjs/Thread/context.js +12 -12
  202. package/cjs/Thread.js +47 -47
  203. package/cjs/{ThreadProvider-fe31e040.js → ThreadProvider-575f30a0.js} +31 -9
  204. package/cjs/ThreadProvider-575f30a0.js.map +1 -0
  205. package/cjs/{UserProfileContext-345b7649.js → UserProfileContext-2d2eb37a.js} +1 -1
  206. package/cjs/{UserProfileContext-345b7649.js.map → UserProfileContext-2d2eb37a.js.map} +1 -1
  207. package/cjs/VoicePlayer/context.js +3 -3
  208. package/cjs/VoicePlayer/useVoicePlayer.js +11 -11
  209. package/cjs/VoiceRecorder/context.js +11 -11
  210. package/cjs/VoiceRecorder/useVoiceRecorder.js +10 -10
  211. package/cjs/{WebAudioUtils-a3f796ae.js → WebAudioUtils-8579d354.js} +2 -2
  212. package/cjs/{WebAudioUtils-a3f796ae.js.map → WebAudioUtils-8579d354.js.map} +1 -1
  213. package/cjs/{_rollupPluginBabelHelpers-488b3e8e.js → _rollupPluginBabelHelpers-2387ee47.js} +1 -1
  214. package/cjs/_rollupPluginBabelHelpers-2387ee47.js.map +1 -0
  215. package/cjs/{actionTypes-cb457098.js → actionTypes-d0c305bd.js} +1 -1
  216. package/cjs/{actionTypes-cb457098.js.map → actionTypes-d0c305bd.js.map} +1 -1
  217. package/cjs/{color-05f0e0c4.js → color-34055562.js} +1 -1
  218. package/cjs/{color-05f0e0c4.js.map → color-34055562.js.map} +1 -1
  219. package/cjs/{compareIds-25532c3b.js → compareIds-6f4cd45e.js} +1 -1
  220. package/cjs/{compareIds-25532c3b.js.map → compareIds-6f4cd45e.js.map} +1 -1
  221. package/cjs/{const-7272c371.js → const-47d0ca8a.js} +1 -1
  222. package/cjs/{const-7272c371.js.map → const-47d0ca8a.js.map} +1 -1
  223. package/cjs/{const-f9dd801f.js → const-7f58640e.js} +1 -1
  224. package/cjs/{const-f9dd801f.js.map → const-7f58640e.js.map} +1 -1
  225. package/cjs/{consts-794ef905.js → consts-6ee9509b.js} +1 -1
  226. package/cjs/{consts-794ef905.js.map → consts-6ee9509b.js.map} +1 -1
  227. package/cjs/{consts-d1774353.js → consts-8a7853e7.js} +1 -1
  228. package/cjs/{consts-d1774353.js.map → consts-8a7853e7.js.map} +1 -1
  229. package/cjs/{consts-23f916a7.js → consts-98b267f9.js} +1 -1
  230. package/cjs/{consts-23f916a7.js.map → consts-98b267f9.js.map} +1 -1
  231. package/cjs/{consts-80cf31ce.js → consts-d42a7f78.js} +1 -1
  232. package/cjs/{consts-80cf31ce.js.map → consts-d42a7f78.js.map} +1 -1
  233. package/cjs/{context-5bc90aa7.js → context-a7a43cca.js} +2 -2
  234. package/cjs/{context-5bc90aa7.js.map → context-a7a43cca.js.map} +1 -1
  235. package/cjs/dist/index.css +94 -94
  236. package/cjs/dist/index.css.map +1 -1
  237. package/cjs/{index-b4df1d17.js → index-08700ffe.js} +5 -5
  238. package/cjs/{index-b4df1d17.js.map → index-08700ffe.js.map} +1 -1
  239. package/cjs/{index-d484ba73.js → index-118211b2.js} +1 -1
  240. package/cjs/{index-d484ba73.js.map → index-118211b2.js.map} +1 -1
  241. package/cjs/{index-53ca77d2.js → index-121d6c06.js} +5 -5
  242. package/cjs/{index-53ca77d2.js.map → index-121d6c06.js.map} +1 -1
  243. package/cjs/{index-e70a2323.js → index-19115579.js} +2 -2
  244. package/cjs/{index-e70a2323.js.map → index-19115579.js.map} +1 -1
  245. package/cjs/{index-99f90442.js → index-1aaf0b9b.js} +2 -2
  246. package/cjs/{index-99f90442.js.map → index-1aaf0b9b.js.map} +1 -1
  247. package/cjs/{index-be727556.js → index-25c1ba3d.js} +4 -4
  248. package/cjs/{index-be727556.js.map → index-25c1ba3d.js.map} +1 -1
  249. package/cjs/{index-ba34ece6.js → index-28cefbed.js} +2 -2
  250. package/cjs/{index-ba34ece6.js.map → index-28cefbed.js.map} +1 -1
  251. package/cjs/{index-04eb31f4.js → index-321b7779.js} +3 -3
  252. package/cjs/{index-04eb31f4.js.map → index-321b7779.js.map} +1 -1
  253. package/cjs/{index-ec0d0086.js → index-3631aadd.js} +2 -2
  254. package/cjs/{index-ec0d0086.js.map → index-3631aadd.js.map} +1 -1
  255. package/cjs/{index-ccda67ff.js → index-41282b8c.js} +3 -3
  256. package/cjs/{index-ccda67ff.js.map → index-41282b8c.js.map} +1 -1
  257. package/cjs/{index-4a574f45.js → index-48a852e6.js} +3 -3
  258. package/cjs/{index-4a574f45.js.map → index-48a852e6.js.map} +1 -1
  259. package/cjs/{index-87cced05.js → index-56ed4734.js} +1 -1
  260. package/cjs/{index-87cced05.js.map → index-56ed4734.js.map} +1 -1
  261. package/cjs/{index-9ac0a31d.js → index-62a3c471.js} +4 -4
  262. package/cjs/{index-9ac0a31d.js.map → index-62a3c471.js.map} +1 -1
  263. package/cjs/{index-e177bbe4.js → index-c2d4df04.js} +9 -9
  264. package/cjs/{index-e177bbe4.js.map → index-c2d4df04.js.map} +1 -1
  265. package/cjs/{index-9e072be5.js → index-cf1eb205.js} +4 -4
  266. package/cjs/{index-9e072be5.js.map → index-cf1eb205.js.map} +1 -1
  267. package/cjs/{index-2c90dcb8.js → index-cf2ba92c.js} +3 -3
  268. package/cjs/{index-2c90dcb8.js.map → index-cf2ba92c.js.map} +1 -1
  269. package/cjs/{index-55a5da60.js → index-d315648b.js} +6 -6
  270. package/cjs/{index-55a5da60.js.map → index-d315648b.js.map} +1 -1
  271. package/cjs/{index-6c815158.js → index-d8612762.js} +4 -4
  272. package/cjs/{index-6c815158.js.map → index-d8612762.js.map} +1 -1
  273. package/cjs/{index-1fdc447a.js → index-e9d1f7ba.js} +4 -4
  274. package/cjs/{index-1fdc447a.js.map → index-e9d1f7ba.js.map} +1 -1
  275. package/cjs/{index-4ca19f6d.js → index-f482099e.js} +2 -2
  276. package/cjs/{index-4ca19f6d.js.map → index-f482099e.js.map} +1 -1
  277. package/cjs/{index-aecd6e45.js → index-f7ac45b5.js} +7 -7
  278. package/cjs/{index-aecd6e45.js.map → index-f7ac45b5.js.map} +1 -1
  279. package/cjs/index.js +59 -59
  280. package/cjs/{index.module-22a4bbea.js → index.module-bab100ce.js} +1 -1
  281. package/cjs/{index.module-22a4bbea.js.map → index.module-bab100ce.js.map} +1 -1
  282. package/cjs/package.json +1 -1
  283. package/cjs/{resolvedReplyType-7c78f221.js → resolvedReplyType-1171f904.js} +1 -1
  284. package/cjs/{resolvedReplyType-7c78f221.js.map → resolvedReplyType-1171f904.js.map} +1 -1
  285. package/cjs/sendbirdSelectors.js +7 -3
  286. package/cjs/sendbirdSelectors.js.map +1 -1
  287. package/cjs/{stringFormatterUtils-2de721a6.js → stringFormatterUtils-d6558728.js} +3 -3
  288. package/cjs/{stringFormatterUtils-2de721a6.js.map → stringFormatterUtils-d6558728.js.map} +1 -1
  289. package/cjs/{stringSet-0c9ec33d.js → stringSet-ac56071f.js} +1 -1
  290. package/cjs/{stringSet-0c9ec33d.js.map → stringSet-ac56071f.js.map} +1 -1
  291. package/cjs/{tokenize-46a71d6a.js → tokenize-2fb86225.js} +2 -2
  292. package/cjs/{tokenize-46a71d6a.js.map → tokenize-2fb86225.js.map} +1 -1
  293. package/cjs/{topics-cf5100f6.js → topics-c9c872d8.js} +1 -1
  294. package/cjs/{topics-cf5100f6.js.map → topics-c9c872d8.js.map} +1 -1
  295. package/cjs/{types-ad059133.js → types-205c8c4a.js} +1 -1
  296. package/cjs/{types-ad059133.js.map → types-205c8c4a.js.map} +1 -1
  297. package/cjs/ui/Accordion.js +2 -2
  298. package/cjs/ui/AccordionGroup.js +2 -2
  299. package/cjs/ui/AdminMessage.js +2 -2
  300. package/cjs/ui/Avatar.js +1 -1
  301. package/cjs/ui/Badge.js +4 -4
  302. package/cjs/ui/BottomSheet.js +4 -4
  303. package/cjs/ui/Button.js +2 -2
  304. package/cjs/ui/ChannelAvatar.js +2 -2
  305. package/cjs/ui/ConnectionStatus.js +4 -4
  306. package/cjs/ui/ContextMenu.js +6 -6
  307. package/cjs/ui/DateSeparator.js +3 -3
  308. package/cjs/ui/EmojiReactions.js +14 -14
  309. package/cjs/ui/FileMessageItemBody.js +7 -7
  310. package/cjs/ui/FileViewer.js +12 -12
  311. package/cjs/ui/IconButton.js +1 -1
  312. package/cjs/ui/Input.js +2 -2
  313. package/cjs/ui/Label.js +2 -2
  314. package/cjs/ui/LinkLabel.js +2 -2
  315. package/cjs/ui/MentionLabel.js +11 -11
  316. package/cjs/ui/MentionUserLabel.js +1 -1
  317. package/cjs/ui/MessageContent.js +31 -31
  318. package/cjs/ui/MessageInput/hooks/usePaste.js +4 -4
  319. package/cjs/ui/MessageInput.js +14 -14
  320. package/cjs/ui/MessageItemMenu.js +9 -9
  321. package/cjs/ui/MessageItemReactionMenu.js +9 -9
  322. package/cjs/ui/MessageSearchFileItem.js +12 -12
  323. package/cjs/ui/MessageSearchItem.js +8 -8
  324. package/cjs/ui/MessageStatus.js +11 -11
  325. package/cjs/ui/Modal.js +9 -9
  326. package/cjs/ui/OGMessageItemBody.js +14 -14
  327. package/cjs/ui/OpenChannelAdminMessage.js +2 -2
  328. package/cjs/ui/OpenChannelAvatar.js +5 -5
  329. package/cjs/ui/OpenchannelConversationHeader.js +6 -6
  330. package/cjs/ui/OpenchannelFileMessage.js +16 -16
  331. package/cjs/ui/OpenchannelOGMessage.js +18 -18
  332. package/cjs/ui/OpenchannelThumbnailMessage.js +15 -15
  333. package/cjs/ui/OpenchannelUserMessage.js +16 -16
  334. package/cjs/ui/PlaceHolder.js +5 -5
  335. package/cjs/ui/PlaybackTime.js +2 -2
  336. package/cjs/ui/QuoteMessage.js +8 -8
  337. package/cjs/ui/QuoteMessageInput.js +8 -8
  338. package/cjs/ui/ReactionBadge.js +2 -2
  339. package/cjs/ui/ReactionButton.js +4 -4
  340. package/cjs/ui/SortByRow.js +1 -1
  341. package/cjs/ui/TextButton.js +1 -1
  342. package/cjs/ui/TextMessageItemBody.js +14 -14
  343. package/cjs/ui/ThreadReplies.js +5 -5
  344. package/cjs/ui/ThumbnailMessageItemBody.js +7 -7
  345. package/cjs/ui/Toggle.js +1 -1
  346. package/cjs/ui/Tooltip.js +2 -2
  347. package/cjs/ui/UnknownMessageItemBody.js +7 -7
  348. package/cjs/ui/UserListItem.js +11 -11
  349. package/cjs/ui/UserProfile.js +9 -9
  350. package/cjs/ui/VoiceMessageItemBody.js +11 -11
  351. package/cjs/ui/VoiceMessgeInput.js +7 -7
  352. package/cjs/ui/Word.js +11 -11
  353. package/cjs/{useHandleUploadFiles-a2515e36.js → useHandleUploadFiles-068f20f6.js} +10 -10
  354. package/cjs/{useHandleUploadFiles-a2515e36.js.map → useHandleUploadFiles-068f20f6.js.map} +1 -1
  355. package/cjs/{useLongPress-c9932bc1.js → useLongPress-9d2b1eb4.js} +3 -3
  356. package/cjs/{useLongPress-c9932bc1.js.map → useLongPress-9d2b1eb4.js.map} +1 -1
  357. package/cjs/{useSendMultipleFilesMessage-82dafd6e.js → useSendMultipleFilesMessage-1a45fb93.js} +4 -4
  358. package/cjs/{useSendMultipleFilesMessage-82dafd6e.js.map → useSendMultipleFilesMessage-1a45fb93.js.map} +1 -1
  359. package/cjs/useSendbirdStateContext.js +1 -1
  360. package/cjs/utils/message/isVoiceMessage.js +3 -3
  361. package/cjs/{utils-f41b79ef.js → utils-37206722.js} +3 -3
  362. package/cjs/{utils-f41b79ef.js.map → utils-37206722.js.map} +1 -1
  363. package/cjs/{utils-e8c4f085.js → utils-6bfa61f4.js} +1 -1
  364. package/cjs/{utils-e8c4f085.js.map → utils-6bfa61f4.js.map} +1 -1
  365. package/cjs/{utils-71eb8ef7.js → utils-a7b1d0d5.js} +1 -1
  366. package/cjs/{utils-71eb8ef7.js.map → utils-a7b1d0d5.js.map} +1 -1
  367. package/cjs/{utils-4951f17b.js → utils-cd281f86.js} +4 -4
  368. package/cjs/{utils-4951f17b.js.map → utils-cd281f86.js.map} +1 -1
  369. package/cjs/{utils-323602f7.js → utils-d4ec6413.js} +1 -1
  370. package/cjs/{utils-323602f7.js.map → utils-d4ec6413.js.map} +1 -1
  371. package/cjs/{utils-de1e1ff7.js → utils-e99b939e.js} +2 -2
  372. package/cjs/{utils-de1e1ff7.js.map → utils-e99b939e.js.map} +1 -1
  373. package/cjs/{uuid-e5bd2418.js → uuid-b5e00d04.js} +1 -1
  374. package/cjs/{uuid-e5bd2418.js.map → uuid-b5e00d04.js.map} +1 -1
  375. package/cjs/withSendbird.js +1 -1
  376. package/{color-8d593cfa.js → color-246b5587.js} +1 -1
  377. package/{color-8d593cfa.js.map → color-246b5587.js.map} +1 -1
  378. package/{compareIds-1f514503.js → compareIds-1c3d8e61.js} +1 -1
  379. package/{compareIds-1f514503.js.map → compareIds-1c3d8e61.js.map} +1 -1
  380. package/{const-b8dcad45.js → const-3660e2f7.js} +1 -1
  381. package/{const-b8dcad45.js.map → const-3660e2f7.js.map} +1 -1
  382. package/{const-16846404.js → const-74bf821a.js} +1 -1
  383. package/{const-16846404.js.map → const-74bf821a.js.map} +1 -1
  384. package/{consts-b5df6e74.js → consts-187ad798.js} +1 -1
  385. package/{consts-b5df6e74.js.map → consts-187ad798.js.map} +1 -1
  386. package/{consts-d580c2c7.js → consts-67dafe59.js} +1 -1
  387. package/{consts-d580c2c7.js.map → consts-67dafe59.js.map} +1 -1
  388. package/{consts-6e6f7e9f.js → consts-78d0c0c7.js} +1 -1
  389. package/{consts-6e6f7e9f.js.map → consts-78d0c0c7.js.map} +1 -1
  390. package/{consts-9f4a812e.js → consts-d96200b8.js} +1 -1
  391. package/{consts-9f4a812e.js.map → consts-d96200b8.js.map} +1 -1
  392. package/{context-fb4c2157.js → context-c3765375.js} +2 -2
  393. package/{context-fb4c2157.js.map → context-c3765375.js.map} +1 -1
  394. package/dist/index.css +94 -94
  395. package/dist/index.css.map +1 -1
  396. package/{index-6805d5c8.js → index-210559c2.js} +2 -2
  397. package/{index-6805d5c8.js.map → index-210559c2.js.map} +1 -1
  398. package/{index-843f8172.js → index-2a41a6c6.js} +6 -6
  399. package/{index-843f8172.js.map → index-2a41a6c6.js.map} +1 -1
  400. package/{index-658da38a.js → index-3b1ad5b9.js} +4 -4
  401. package/{index-658da38a.js.map → index-3b1ad5b9.js.map} +1 -1
  402. package/{index-773ba5ba.js → index-3c9c2072.js} +2 -2
  403. package/{index-773ba5ba.js.map → index-3c9c2072.js.map} +1 -1
  404. package/{index-9237667a.js → index-3d737d32.js} +9 -9
  405. package/{index-9237667a.js.map → index-3d737d32.js.map} +1 -1
  406. package/{index-f35b1dcc.js → index-41674ca0.js} +4 -4
  407. package/{index-f35b1dcc.js.map → index-41674ca0.js.map} +1 -1
  408. package/{index-fde902d5.js → index-421912ab.js} +4 -4
  409. package/{index-fde902d5.js.map → index-421912ab.js.map} +1 -1
  410. package/{index-9ea624d5.js → index-586ed585.js} +2 -2
  411. package/{index-9ea624d5.js.map → index-586ed585.js.map} +1 -1
  412. package/{index-cdaae7f9.js → index-6cc7214a.js} +3 -3
  413. package/{index-cdaae7f9.js.map → index-6cc7214a.js.map} +1 -1
  414. package/{index-304b238b.js → index-6d4a9265.js} +1 -1
  415. package/{index-304b238b.js.map → index-6d4a9265.js.map} +1 -1
  416. package/{index-afdd497f.js → index-737f53db.js} +3 -3
  417. package/{index-afdd497f.js.map → index-737f53db.js.map} +1 -1
  418. package/{index-151e4750.js → index-758896cd.js} +3 -3
  419. package/{index-151e4750.js.map → index-758896cd.js.map} +1 -1
  420. package/{index-390e9091.js → index-789c7a79.js} +7 -7
  421. package/{index-390e9091.js.map → index-789c7a79.js.map} +1 -1
  422. package/{index-4a1fec80.js → index-8b82957a.js} +4 -4
  423. package/{index-4a1fec80.js.map → index-8b82957a.js.map} +1 -1
  424. package/{index-c277467e.js → index-99df638a.js} +1 -1
  425. package/{index-c277467e.js.map → index-99df638a.js.map} +1 -1
  426. package/{index-35747966.js → index-a53fdda2.js} +5 -5
  427. package/{index-35747966.js.map → index-a53fdda2.js.map} +1 -1
  428. package/{index-57990954.js → index-a9cf9f0c.js} +2 -2
  429. package/{index-57990954.js.map → index-a9cf9f0c.js.map} +1 -1
  430. package/{index-f48e9c68.js → index-aea86722.js} +2 -2
  431. package/{index-f48e9c68.js.map → index-aea86722.js.map} +1 -1
  432. package/{index-51d1d394.js → index-c2014124.js} +3 -3
  433. package/{index-51d1d394.js.map → index-c2014124.js.map} +1 -1
  434. package/{index-80996ef9.js → index-c4504c26.js} +5 -5
  435. package/{index-80996ef9.js.map → index-c4504c26.js.map} +1 -1
  436. package/{index-62ee116d.js → index-ef318bdf.js} +4 -4
  437. package/{index-62ee116d.js.map → index-ef318bdf.js.map} +1 -1
  438. package/index.d.ts +1 -1
  439. package/index.js +59 -59
  440. package/{index.module-f3f31594.js → index.module-f7dbc545.js} +1 -1
  441. package/{index.module-f3f31594.js.map → index.module-f7dbc545.js.map} +1 -1
  442. package/package.json +1 -1
  443. package/{resolvedReplyType-ff8f48f4.js → resolvedReplyType-a27ce599.js} +1 -1
  444. package/{resolvedReplyType-ff8f48f4.js.map → resolvedReplyType-a27ce599.js.map} +1 -1
  445. package/sendbirdSelectors.js +7 -3
  446. package/sendbirdSelectors.js.map +1 -1
  447. package/{stringFormatterUtils-272582e5.js → stringFormatterUtils-5eb121e0.js} +3 -3
  448. package/{stringFormatterUtils-272582e5.js.map → stringFormatterUtils-5eb121e0.js.map} +1 -1
  449. package/{stringSet-02d58100.js → stringSet-3b92a79f.js} +1 -1
  450. package/{stringSet-02d58100.js.map → stringSet-3b92a79f.js.map} +1 -1
  451. package/{tokenize-65b415b8.js → tokenize-9047b2ad.js} +2 -2
  452. package/{tokenize-65b415b8.js.map → tokenize-9047b2ad.js.map} +1 -1
  453. package/{topics-fda6fac4.js → topics-1a83bfe7.js} +1 -1
  454. package/{topics-fda6fac4.js.map → topics-1a83bfe7.js.map} +1 -1
  455. package/{types-69d76470.js → types-8d585099.js} +1 -1
  456. package/{types-69d76470.js.map → types-8d585099.js.map} +1 -1
  457. package/ui/Accordion.js +2 -2
  458. package/ui/AccordionGroup.js +2 -2
  459. package/ui/AdminMessage.js +2 -2
  460. package/ui/Avatar.js +1 -1
  461. package/ui/Badge.js +4 -4
  462. package/ui/BottomSheet.js +4 -4
  463. package/ui/Button.js +2 -2
  464. package/ui/ChannelAvatar.js +2 -2
  465. package/ui/ConnectionStatus.js +4 -4
  466. package/ui/ContextMenu.js +6 -6
  467. package/ui/DateSeparator.js +3 -3
  468. package/ui/EmojiReactions.js +14 -14
  469. package/ui/FileMessageItemBody.js +7 -7
  470. package/ui/FileViewer.js +12 -12
  471. package/ui/IconButton.js +1 -1
  472. package/ui/Input.js +2 -2
  473. package/ui/Label.js +2 -2
  474. package/ui/LinkLabel.js +2 -2
  475. package/ui/MentionLabel.js +11 -11
  476. package/ui/MentionUserLabel.js +1 -1
  477. package/ui/MessageContent.js +31 -31
  478. package/ui/MessageInput/hooks/usePaste.js +4 -4
  479. package/ui/MessageInput.js +14 -14
  480. package/ui/MessageItemMenu.js +9 -9
  481. package/ui/MessageItemReactionMenu.js +9 -9
  482. package/ui/MessageSearchFileItem.js +12 -12
  483. package/ui/MessageSearchItem.js +8 -8
  484. package/ui/MessageStatus.js +11 -11
  485. package/ui/Modal.js +9 -9
  486. package/ui/OGMessageItemBody.js +14 -14
  487. package/ui/OpenChannelAdminMessage.js +2 -2
  488. package/ui/OpenChannelAvatar.js +5 -5
  489. package/ui/OpenchannelConversationHeader.js +6 -6
  490. package/ui/OpenchannelFileMessage.js +16 -16
  491. package/ui/OpenchannelOGMessage.js +18 -18
  492. package/ui/OpenchannelThumbnailMessage.js +15 -15
  493. package/ui/OpenchannelUserMessage.js +16 -16
  494. package/ui/PlaceHolder.js +5 -5
  495. package/ui/PlaybackTime.js +2 -2
  496. package/ui/QuoteMessage.js +8 -8
  497. package/ui/QuoteMessageInput.js +8 -8
  498. package/ui/ReactionBadge.js +2 -2
  499. package/ui/ReactionButton.js +4 -4
  500. package/ui/SortByRow.js +1 -1
  501. package/ui/TextButton.js +1 -1
  502. package/ui/TextMessageItemBody.js +14 -14
  503. package/ui/ThreadReplies.js +5 -5
  504. package/ui/ThumbnailMessageItemBody.js +7 -7
  505. package/ui/Toggle.js +1 -1
  506. package/ui/Tooltip.js +2 -2
  507. package/ui/UnknownMessageItemBody.js +7 -7
  508. package/ui/UserListItem.js +11 -11
  509. package/ui/UserProfile.js +9 -9
  510. package/ui/VoiceMessageItemBody.js +11 -11
  511. package/ui/VoiceMessgeInput.js +7 -7
  512. package/ui/Word.js +11 -11
  513. package/{useHandleUploadFiles-c1595636.js → useHandleUploadFiles-65cb35c2.js} +10 -10
  514. package/{useHandleUploadFiles-c1595636.js.map → useHandleUploadFiles-65cb35c2.js.map} +1 -1
  515. package/{useLongPress-ba7e62b0.js → useLongPress-6fec2276.js} +3 -3
  516. package/{useLongPress-ba7e62b0.js.map → useLongPress-6fec2276.js.map} +1 -1
  517. package/{useSendMultipleFilesMessage-5cbc19ce.js → useSendMultipleFilesMessage-357faf33.js} +4 -4
  518. package/{useSendMultipleFilesMessage-5cbc19ce.js.map → useSendMultipleFilesMessage-357faf33.js.map} +1 -1
  519. package/useSendbirdStateContext.js +1 -1
  520. package/utils/message/isVoiceMessage.js +3 -3
  521. package/{utils-e7de752d.js → utils-0efd22d6.js} +3 -3
  522. package/{utils-e7de752d.js.map → utils-0efd22d6.js.map} +1 -1
  523. package/{utils-532f83ca.js → utils-2e62b38e.js} +1 -1
  524. package/{utils-532f83ca.js.map → utils-2e62b38e.js.map} +1 -1
  525. package/{utils-eb4100d3.js → utils-612edb45.js} +1 -1
  526. package/{utils-eb4100d3.js.map → utils-612edb45.js.map} +1 -1
  527. package/{utils-cbc87bb5.js → utils-bb47ee51.js} +4 -4
  528. package/{utils-cbc87bb5.js.map → utils-bb47ee51.js.map} +1 -1
  529. package/{utils-42359bc3.js → utils-d6a054be.js} +2 -2
  530. package/{utils-42359bc3.js.map → utils-d6a054be.js.map} +1 -1
  531. package/{utils-5a24bd3a.js → utils-d95fe8c1.js} +1 -1
  532. package/{utils-5a24bd3a.js.map → utils-d95fe8c1.js.map} +1 -1
  533. package/{uuid-46cf2f27.js → uuid-9bb4bc3e.js} +1 -1
  534. package/{uuid-46cf2f27.js.map → uuid-9bb4bc3e.js.map} +1 -1
  535. package/withSendbird.js +1 -1
  536. package/ChannelListProvider-db5ec581.js.map +0 -1
  537. package/ThreadProvider-1418ccf0.js.map +0 -1
  538. package/_rollupPluginBabelHelpers-0cef07cb.js.map +0 -1
  539. package/cjs/ChannelListProvider-8a2c8449.js.map +0 -1
  540. package/cjs/ThreadProvider-fe31e040.js.map +0 -1
  541. package/cjs/_rollupPluginBabelHelpers-488b3e8e.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index-9237667a.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-3d737d32.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,7 +1,7 @@
1
- import { b as _extends } from './_rollupPluginBabelHelpers-0cef07cb.js';
1
+ import { b as _extends } from './_rollupPluginBabelHelpers-51534391.js';
2
2
  import React__default, { useState, useCallback, useMemo, createContext, useContext } from 'react';
3
- import { K } from './index.module-f3f31594.js';
4
- import { n as noop } from './utils-eb4100d3.js';
3
+ import { K } from './index.module-f7dbc545.js';
4
+ import { n as noop } from './utils-612edb45.js';
5
5
  import { Modal } from './ui/Modal.js';
6
6
 
7
7
  const GlobalModalContext = /*#__PURE__*/createContext({
@@ -48,4 +48,4 @@ const GlobalModalProvider = _ref => {
48
48
  const useGlobalModalContext = () => useContext(GlobalModalContext);
49
49
 
50
50
  export { GlobalModalProvider as G, useGlobalModalContext as u };
51
- //# sourceMappingURL=index-f35b1dcc.js.map
51
+ //# sourceMappingURL=index-41674ca0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-f35b1dcc.js","sources":["../src/hooks/useModal/index.tsx"],"sourcesContent":["import React, { useState, useCallback, ReactElement, createContext, useMemo, useContext } from 'react';\nimport { match } from 'ts-pattern';\n\nimport { noop } from '../../utils/utils';\nimport Modal, { type ModalProps } from '../../ui/Modal';\n\nexport type OpenGlobalModalProps = {\n modalProps: ModalProps;\n childElement: (props: { closeModal: () => void }) => ReactElement;\n};\nexport interface GlobalModalProviderProps {\n children: ReactElement;\n}\nexport interface GlobalModalContextInterface {\n openModal: (props: OpenGlobalModalProps) => void;\n}\n\nconst GlobalModalContext = createContext<GlobalModalContextInterface>({\n openModal: noop,\n});\n\nexport const GlobalModalProvider = ({ children }: GlobalModalProviderProps) => {\n // Idea from https://dev.to/nurislamov/simple-modals-queue-in-react-4g6c\n const [globalModalQueue, setGlobalModalQueue] = useState<Array<OpenGlobalModalProps>>([]);\n\n const openModal = useCallback((props: OpenGlobalModalProps) => {\n setGlobalModalQueue((currentQue) => [...currentQue, props]);\n }, []);\n\n const closeModal = useCallback(() => {\n setGlobalModalQueue((currentQue) => currentQue.slice(1));\n }, []);\n\n const ModalComponent = useMemo(() => () => {\n return match(globalModalQueue)\n .when(q => q.length === 0, () => {\n return <></>;\n })\n .otherwise(() => {\n const { modalProps, childElement } = globalModalQueue[0];\n return (\n <Modal\n {...modalProps}\n className={`sendbird-global-modal ${modalProps?.className}`}\n onClose={() => {\n modalProps?.onClose?.();\n closeModal();\n }}\n >\n {\n childElement({\n closeModal,\n })\n }\n </Modal>\n );\n });\n }, [globalModalQueue]);\n\n return (\n <GlobalModalContext.Provider\n value={{\n openModal,\n }}\n >\n <ModalComponent />\n {children}\n </GlobalModalContext.Provider>\n );\n};\nexport const useGlobalModalContext = (): GlobalModalContextInterface => useContext(GlobalModalContext);\n\nexport * from './ModalRoot';\n"],"names":["GlobalModalContext","createContext","openModal","noop","GlobalModalProvider","_ref","children","globalModalQueue","setGlobalModalQueue","useState","useCallback","props","currentQue","closeModal","slice","ModalComponent","useMemo","match","when","q","length","React","createElement","Fragment","otherwise","modalProps","childElement","Modal","_extends","className","onClose","_modalProps$onClose","call","Provider","value","useGlobalModalContext","useContext"],"mappings":";;;;;;AAiBA,MAAMA,kBAAkB,gBAAGC,aAAa,CAA8B;AACpEC,EAAAA,SAAS,EAAEC,IAAAA;AACb,CAAC,CAAC,CAAA;AAEWC,MAAAA,mBAAmB,GAAGC,IAAA,IAA4C;EAAA,IAA3C;AAAEC,IAAAA,QAAAA;AAAmC,GAAC,GAAAD,IAAA,CAAA;AACxE;EACA,MAAM,CAACE,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGC,QAAQ,CAA8B,EAAE,CAAC,CAAA;AAEzF,EAAA,MAAMP,SAAS,GAAGQ,WAAW,CAAEC,KAA2B,IAAK;IAC7DH,mBAAmB,CAAEI,UAAU,IAAK,CAAC,GAAGA,UAAU,EAAED,KAAK,CAAC,CAAC,CAAA;GAC5D,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,MAAME,UAAU,GAAGH,WAAW,CAAC,MAAM;IACnCF,mBAAmB,CAAEI,UAAU,IAAKA,UAAU,CAACE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;GACzD,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,MAAMC,cAAc,GAAGC,OAAO,CAAC,MAAM,MAAM;AACzC,IAAA,OAAOC,CAAK,CAACV,gBAAgB,CAAC,CAC3BW,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,MAAM,KAAK,CAAC,EAAE,MAAM;AAC/B,MAAA,oBAAOC,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EAAK,IAAA,CAAA,CAAA;AACd,KAAC,CAAC,CACDC,SAAS,CAAC,MAAM;MACf,MAAM;QAAEC,UAAU;AAAEC,QAAAA,YAAAA;AAAa,OAAC,GAAGnB,gBAAgB,CAAC,CAAC,CAAC,CAAA;MACxD,oBACEc,cAAA,CAAAC,aAAA,CAACK,KAAK,EAAAC,QAAA,KACAH,UAAU,EAAA;QACdI,SAAS,EAAG,yBAAwBJ,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAVA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAU,CAAEI,SAAU,CAAE,CAAA;QAC5DC,OAAO,EAAEA,MAAM;AAAA,UAAA,IAAAC,mBAAA,CAAA;AACbN,UAAAA,UAAU,aAAVA,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAAM,mBAAA,GAAVN,UAAU,CAAEK,OAAO,MAAAC,IAAAA,IAAAA,mBAAA,uBAAnBA,mBAAA,CAAAC,IAAA,CAAAP,UAAU,CAAa,CAAA;AACvBZ,UAAAA,UAAU,EAAE,CAAA;AACd,SAAA;AAAE,OAAA,CAAA,EAGAa,YAAY,CAAC;AACXb,QAAAA,UAAAA;AACF,OAAC,CAAC,CAEE,CAAA;AAEZ,KAAC,CAAC,CAAA;AACN,GAAC,EAAE,CAACN,gBAAgB,CAAC,CAAC,CAAA;AAEtB,EAAA,oBACEc,cAAA,CAAAC,aAAA,CAACtB,kBAAkB,CAACiC,QAAQ,EAAA;AAC1BC,IAAAA,KAAK,EAAE;AACLhC,MAAAA,SAAAA;AACF,KAAA;GAEAmB,eAAAA,cAAA,CAAAC,aAAA,CAACP,cAAc,EAAG,IAAA,CAAA,EACjBT,QAAQ,CACmB,CAAA;AAElC,EAAC;AACM,MAAM6B,qBAAqB,GAAGA,MAAmCC,UAAU,CAACpC,kBAAkB;;;;"}
1
+ {"version":3,"file":"index-41674ca0.js","sources":["../src/hooks/useModal/index.tsx"],"sourcesContent":["import React, { useState, useCallback, ReactElement, createContext, useMemo, useContext } from 'react';\nimport { match } from 'ts-pattern';\n\nimport { noop } from '../../utils/utils';\nimport Modal, { type ModalProps } from '../../ui/Modal';\n\nexport type OpenGlobalModalProps = {\n modalProps: ModalProps;\n childElement: (props: { closeModal: () => void }) => ReactElement;\n};\nexport interface GlobalModalProviderProps {\n children: ReactElement;\n}\nexport interface GlobalModalContextInterface {\n openModal: (props: OpenGlobalModalProps) => void;\n}\n\nconst GlobalModalContext = createContext<GlobalModalContextInterface>({\n openModal: noop,\n});\n\nexport const GlobalModalProvider = ({ children }: GlobalModalProviderProps) => {\n // Idea from https://dev.to/nurislamov/simple-modals-queue-in-react-4g6c\n const [globalModalQueue, setGlobalModalQueue] = useState<Array<OpenGlobalModalProps>>([]);\n\n const openModal = useCallback((props: OpenGlobalModalProps) => {\n setGlobalModalQueue((currentQue) => [...currentQue, props]);\n }, []);\n\n const closeModal = useCallback(() => {\n setGlobalModalQueue((currentQue) => currentQue.slice(1));\n }, []);\n\n const ModalComponent = useMemo(() => () => {\n return match(globalModalQueue)\n .when(q => q.length === 0, () => {\n return <></>;\n })\n .otherwise(() => {\n const { modalProps, childElement } = globalModalQueue[0];\n return (\n <Modal\n {...modalProps}\n className={`sendbird-global-modal ${modalProps?.className}`}\n onClose={() => {\n modalProps?.onClose?.();\n closeModal();\n }}\n >\n {\n childElement({\n closeModal,\n })\n }\n </Modal>\n );\n });\n }, [globalModalQueue]);\n\n return (\n <GlobalModalContext.Provider\n value={{\n openModal,\n }}\n >\n <ModalComponent />\n {children}\n </GlobalModalContext.Provider>\n );\n};\nexport const useGlobalModalContext = (): GlobalModalContextInterface => useContext(GlobalModalContext);\n\nexport * from './ModalRoot';\n"],"names":["GlobalModalContext","createContext","openModal","noop","GlobalModalProvider","_ref","children","globalModalQueue","setGlobalModalQueue","useState","useCallback","props","currentQue","closeModal","slice","ModalComponent","useMemo","match","when","q","length","React","createElement","Fragment","otherwise","modalProps","childElement","Modal","_extends","className","onClose","_modalProps$onClose","call","Provider","value","useGlobalModalContext","useContext"],"mappings":";;;;;;AAiBA,MAAMA,kBAAkB,gBAAGC,aAAa,CAA8B;AACpEC,EAAAA,SAAS,EAAEC,IAAAA;AACb,CAAC,CAAC,CAAA;AAEWC,MAAAA,mBAAmB,GAAGC,IAAA,IAA4C;EAAA,IAA3C;AAAEC,IAAAA,QAAAA;AAAmC,GAAC,GAAAD,IAAA,CAAA;AACxE;EACA,MAAM,CAACE,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGC,QAAQ,CAA8B,EAAE,CAAC,CAAA;AAEzF,EAAA,MAAMP,SAAS,GAAGQ,WAAW,CAAEC,KAA2B,IAAK;IAC7DH,mBAAmB,CAAEI,UAAU,IAAK,CAAC,GAAGA,UAAU,EAAED,KAAK,CAAC,CAAC,CAAA;GAC5D,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,MAAME,UAAU,GAAGH,WAAW,CAAC,MAAM;IACnCF,mBAAmB,CAAEI,UAAU,IAAKA,UAAU,CAACE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;GACzD,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,MAAMC,cAAc,GAAGC,OAAO,CAAC,MAAM,MAAM;AACzC,IAAA,OAAOC,CAAK,CAACV,gBAAgB,CAAC,CAC3BW,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,MAAM,KAAK,CAAC,EAAE,MAAM;AAC/B,MAAA,oBAAOC,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EAAK,IAAA,CAAA,CAAA;AACd,KAAC,CAAC,CACDC,SAAS,CAAC,MAAM;MACf,MAAM;QAAEC,UAAU;AAAEC,QAAAA,YAAAA;AAAa,OAAC,GAAGnB,gBAAgB,CAAC,CAAC,CAAC,CAAA;MACxD,oBACEc,cAAA,CAAAC,aAAA,CAACK,KAAK,EAAAC,QAAA,KACAH,UAAU,EAAA;QACdI,SAAS,EAAG,yBAAwBJ,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAVA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAU,CAAEI,SAAU,CAAE,CAAA;QAC5DC,OAAO,EAAEA,MAAM;AAAA,UAAA,IAAAC,mBAAA,CAAA;AACbN,UAAAA,UAAU,aAAVA,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAAM,mBAAA,GAAVN,UAAU,CAAEK,OAAO,MAAAC,IAAAA,IAAAA,mBAAA,uBAAnBA,mBAAA,CAAAC,IAAA,CAAAP,UAAU,CAAa,CAAA;AACvBZ,UAAAA,UAAU,EAAE,CAAA;AACd,SAAA;AAAE,OAAA,CAAA,EAGAa,YAAY,CAAC;AACXb,QAAAA,UAAAA;AACF,OAAC,CAAC,CAEE,CAAA;AAEZ,KAAC,CAAC,CAAA;AACN,GAAC,EAAE,CAACN,gBAAgB,CAAC,CAAC,CAAA;AAEtB,EAAA,oBACEc,cAAA,CAAAC,aAAA,CAACtB,kBAAkB,CAACiC,QAAQ,EAAA;AAC1BC,IAAAA,KAAK,EAAE;AACLhC,MAAAA,SAAAA;AACF,KAAA;GAEAmB,eAAAA,cAAA,CAAAC,aAAA,CAACP,cAAc,EAAG,IAAA,CAAA,EACjBT,QAAQ,CACmB,CAAA;AAElC,EAAC;AACM,MAAM6B,qBAAqB,GAAGA,MAAmCC,UAAU,CAACpC,kBAAkB;;;;"}
@@ -1,8 +1,8 @@
1
1
  import { useCallback } from 'react';
2
2
  import DOMPurify from 'dompurify';
3
- import { M as MENTION_USER_LABEL_CLASSNAME } from './consts-6e6f7e9f.js';
4
- import { T as TEXT_MESSAGE_BODY_CLASSNAME } from './consts-d580c2c7.js';
5
- import { O as OG_MESSAGE_BODY_CLASSNAME } from './consts-b5df6e74.js';
3
+ import { M as MENTION_USER_LABEL_CLASSNAME } from './consts-78d0c0c7.js';
4
+ import { T as TEXT_MESSAGE_BODY_CLASSNAME } from './consts-67dafe59.js';
5
+ import { O as OG_MESSAGE_BODY_CLASSNAME } from './consts-187ad798.js';
6
6
 
7
7
  // cretes a sanitized string from a mention user label
8
8
  function renderToString(_ref) {
@@ -222,4 +222,4 @@ function usePaste(_ref) {
222
222
  }
223
223
 
224
224
  export { isChannelTypeSupportsMultipleFilesMessage as i, nodeListToArray as n, renderToString as r, sanitizeString as s, usePaste as u };
225
- //# sourceMappingURL=index-fde902d5.js.map
225
+ //# sourceMappingURL=index-421912ab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-fde902d5.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
+ {"version":3,"file":"index-421912ab.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,4 +1,4 @@
1
- import { d as defaultLocale } from './index-304b238b.js';
1
+ import { d as defaultLocale } from './index-6d4a9265.js';
2
2
 
3
3
  function requiredArgs(required, args) {
4
4
  if (args.length < required) {
@@ -1849,4 +1849,4 @@ function cleanEscapedString(input) {
1849
1849
  }
1850
1850
 
1851
1851
  export { toInteger as a, format as f, requiredArgs as r, toDate as t };
1852
- //# sourceMappingURL=index-9ea624d5.js.map
1852
+ //# sourceMappingURL=index-586ed585.js.map