@sendbird/uikit-react 3.6.7 → 3.6.8-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (626) hide show
  1. package/App.js +57 -49
  2. package/App.js.map +1 -1
  3. package/CHANGELOG.md +63 -0
  4. package/Channel/components/ChannelHeader.js +20 -19
  5. package/Channel/components/ChannelHeader.js.map +1 -1
  6. package/Channel/components/ChannelUI.js +45 -41
  7. package/Channel/components/ChannelUI.js.map +1 -1
  8. package/Channel/components/FileViewer.js +16 -15
  9. package/Channel/components/FileViewer.js.map +1 -1
  10. package/Channel/components/FrozenNotification.js +4 -4
  11. package/Channel/components/Message.js +38 -36
  12. package/Channel/components/Message.js.map +1 -1
  13. package/Channel/components/MessageInput.js +34 -32
  14. package/Channel/components/MessageInput.js.map +1 -1
  15. package/Channel/components/MessageList.js +41 -60
  16. package/Channel/components/MessageList.js.map +1 -1
  17. package/Channel/components/RemoveMessageModal.js +18 -17
  18. package/Channel/components/RemoveMessageModal.js.map +1 -1
  19. package/Channel/components/SuggestedMentionList.js +18 -17
  20. package/Channel/components/SuggestedMentionList.js.map +1 -1
  21. package/Channel/components/TypingIndicator.js +16 -15
  22. package/Channel/components/TypingIndicator.js.map +1 -1
  23. package/Channel/components/UnreadCount.js +4 -4
  24. package/Channel/context.js +13 -12
  25. package/Channel/context.js.map +1 -1
  26. package/Channel/utils/compareMessagesForGrouping.js +22 -0
  27. package/Channel/utils/compareMessagesForGrouping.js.map +1 -0
  28. package/Channel/utils/getMessagePartsInfo.js +38 -0
  29. package/Channel/utils/getMessagePartsInfo.js.map +1 -0
  30. package/Channel.js +45 -41
  31. package/Channel.js.map +1 -1
  32. package/ChannelList/components/AddChannel.js +15 -15
  33. package/ChannelList/components/ChannelListHeader.js +6 -6
  34. package/ChannelList/components/ChannelListUI.js +31 -30
  35. package/ChannelList/components/ChannelListUI.js.map +1 -1
  36. package/ChannelList/components/ChannelPreview.js +27 -26
  37. package/ChannelList/components/ChannelPreview.js.map +1 -1
  38. package/ChannelList/components/ChannelPreviewAction.js +14 -14
  39. package/ChannelList/context.js +8 -8
  40. package/ChannelList.js +31 -30
  41. package/ChannelList.js.map +1 -1
  42. package/{ChannelListProvider-fc14f42d.js → ChannelListProvider-532ebe92.js} +11 -14
  43. package/ChannelListProvider-532ebe92.js.map +1 -0
  44. package/{ChannelProvider-78e85f32.js → ChannelProvider-903eb3bf.js} +31 -331
  45. package/ChannelProvider-903eb3bf.js.map +1 -0
  46. package/ChannelSettings/components/ChannelProfile.js +11 -11
  47. package/ChannelSettings/components/ChannelSettingsUI.js +17 -17
  48. package/ChannelSettings/components/EditDetailsModal.js +11 -11
  49. package/ChannelSettings/components/LeaveChannel.js +11 -11
  50. package/ChannelSettings/components/ModerationPanel.js +14 -14
  51. package/ChannelSettings/components/UserListItem.js +10 -10
  52. package/ChannelSettings/components/UserPanel.js +13 -13
  53. package/ChannelSettings/context.js +3 -3
  54. package/ChannelSettings.js +17 -17
  55. package/CreateChannel/components/CreateChannelUI.js +13 -13
  56. package/CreateChannel/components/InviteUsers.js +13 -13
  57. package/CreateChannel/components/SelectChannelType.js +10 -10
  58. package/CreateChannel/context.js +4 -4
  59. package/CreateChannel.js +13 -13
  60. package/{CreateChannelProvider-fe23c38f.js → CreateChannelProvider-d02f3cf9.js} +1 -1
  61. package/{CreateChannelProvider-fe23c38f.js.map → CreateChannelProvider-d02f3cf9.js.map} +1 -1
  62. package/CreateOpenChannel/components/CreateOpenChannelUI.js +9 -9
  63. package/CreateOpenChannel/context.js +1 -1
  64. package/CreateOpenChannel.js +9 -9
  65. package/EditUserProfile/components/EditUserProfileUI.js +12 -12
  66. package/EditUserProfile.js +12 -12
  67. package/{LocalizationContext-5fe9b59d.js → LocalizationContext-3baf0e99.js} +3 -3
  68. package/{LocalizationContext-5fe9b59d.js.map → LocalizationContext-3baf0e99.js.map} +1 -1
  69. package/{MediaQueryContext-66b59195.js → MediaQueryContext-65dd6475.js} +1 -1
  70. package/{MediaQueryContext-66b59195.js.map → MediaQueryContext-65dd6475.js.map} +1 -1
  71. package/{MemberList-c03817ad.js → MemberList-fc5be7a2.js} +5 -5
  72. package/{MemberList-c03817ad.js.map → MemberList-fc5be7a2.js.map} +1 -1
  73. package/{useDirtyGetMentions-3f7692ab.js → Message/hooks/useDirtyGetMentions.js} +3 -2
  74. package/Message/hooks/useDirtyGetMentions.js.map +1 -0
  75. package/MessageSearch/components/MessageSearchUI.js +11 -11
  76. package/MessageSearch/context.js +1 -1
  77. package/MessageSearch/context.js.map +1 -1
  78. package/MessageSearch.js +11 -11
  79. package/OpenChannel/components/FrozenChannelNotification.js +4 -4
  80. package/OpenChannel/components/OpenChannelHeader.js +12 -12
  81. package/OpenChannel/components/OpenChannelInput.js +20 -19
  82. package/OpenChannel/components/OpenChannelInput.js.map +1 -1
  83. package/OpenChannel/components/OpenChannelMessage.js +30 -38
  84. package/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  85. package/OpenChannel/components/OpenChannelMessageList.js +33 -32
  86. package/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  87. package/OpenChannel/components/OpenChannelUI.js +33 -32
  88. package/OpenChannel/components/OpenChannelUI.js.map +1 -1
  89. package/OpenChannel/context.js +8 -8
  90. package/OpenChannel.js +33 -32
  91. package/OpenChannel.js.map +1 -1
  92. package/OpenChannelList/components/OpenChannelListUI.js +13 -13
  93. package/OpenChannelList/components/OpenChannelPreview.js +3 -3
  94. package/OpenChannelList/context.js +3 -3
  95. package/OpenChannelList.js +13 -13
  96. package/{OpenChannelListProvider-5d21932a.js → OpenChannelListProvider-9dff6221.js} +3 -3
  97. package/{OpenChannelListProvider-5d21932a.js.map → OpenChannelListProvider-9dff6221.js.map} +1 -1
  98. package/{OpenChannelProvider-a6f4f92a.js → OpenChannelProvider-e3940c50.js} +7 -7
  99. package/OpenChannelProvider-e3940c50.js.map +1 -0
  100. package/OpenChannelSettings/components/EditDetailsModal.js +12 -12
  101. package/OpenChannelSettings/components/OpenChannelProfile.js +12 -12
  102. package/OpenChannelSettings/components/OpenChannelSettingsUI.js +17 -17
  103. package/OpenChannelSettings/components/OperatorUI.js +16 -16
  104. package/OpenChannelSettings/components/ParticipantUI.js +14 -14
  105. package/OpenChannelSettings/context.js +3 -3
  106. package/OpenChannelSettings.js +17 -17
  107. package/{RemoveMessageModal-0d438e31.js → RemoveMessageModal-5c8b1e53.js} +3 -3
  108. package/RemoveMessageModal-5c8b1e53.js.map +1 -0
  109. package/SendbirdProvider.js +24 -21
  110. package/SendbirdProvider.js.map +1 -1
  111. package/Thread/components/ParentMessageInfo.js +36 -34
  112. package/Thread/components/ParentMessageInfo.js.map +1 -1
  113. package/Thread/components/ParentMessageInfoItem.js +21 -21
  114. package/Thread/components/ParentMessageInfoItem.js.map +1 -1
  115. package/Thread/components/ThreadHeader.js +6 -6
  116. package/Thread/components/ThreadList.js +39 -37
  117. package/Thread/components/ThreadList.js.map +1 -1
  118. package/Thread/components/ThreadListItem.js +40 -38
  119. package/Thread/components/ThreadListItem.js.map +1 -1
  120. package/Thread/components/ThreadMessageInput.js +32 -30
  121. package/Thread/components/ThreadMessageInput.js.map +1 -1
  122. package/Thread/components/ThreadUI.js +43 -41
  123. package/Thread/components/ThreadUI.js.map +1 -1
  124. package/Thread/context.js +8 -8
  125. package/Thread.js +43 -41
  126. package/Thread.js.map +1 -1
  127. package/{ThreadProvider-2a4356a2.js → ThreadProvider-0cfe2336.js} +12 -11
  128. package/ThreadProvider-0cfe2336.js.map +1 -0
  129. package/{UserProfileContext-8b8f3e3a.js → UserProfileContext-3dd7aade.js} +1 -1
  130. package/{UserProfileContext-8b8f3e3a.js.map → UserProfileContext-3dd7aade.js.map} +1 -1
  131. package/{VoiceMessageInputWrapper-b8742ea1.js → VoiceMessageInputWrapper-a3904e40.js} +7 -7
  132. package/{VoiceMessageInputWrapper-b8742ea1.js.map → VoiceMessageInputWrapper-a3904e40.js.map} +1 -1
  133. package/VoicePlayer/context.js +3 -3
  134. package/VoicePlayer/useVoicePlayer.js +9 -9
  135. package/VoiceRecorder/context.js +9 -9
  136. package/VoiceRecorder/useVoiceRecorder.js +8 -8
  137. package/{WebAudioUtils-63418113.js → WebAudioUtils-44e85117.js} +2 -2
  138. package/{WebAudioUtils-63418113.js.map → WebAudioUtils-44e85117.js.map} +1 -1
  139. package/{_rollupPluginBabelHelpers-90ff7fc4.js → _rollupPluginBabelHelpers-89176539.js} +1 -1
  140. package/_rollupPluginBabelHelpers-89176539.js.map +1 -0
  141. package/{actionTypes-66bf934b.js → actionTypes-f95f30b4.js} +1 -1
  142. package/{actionTypes-66bf934b.js.map → actionTypes-f95f30b4.js.map} +1 -1
  143. package/cjs/App.js +57 -49
  144. package/cjs/App.js.map +1 -1
  145. package/cjs/Channel/components/ChannelHeader.js +20 -19
  146. package/cjs/Channel/components/ChannelHeader.js.map +1 -1
  147. package/cjs/Channel/components/ChannelUI.js +45 -41
  148. package/cjs/Channel/components/ChannelUI.js.map +1 -1
  149. package/cjs/Channel/components/FileViewer.js +16 -15
  150. package/cjs/Channel/components/FileViewer.js.map +1 -1
  151. package/cjs/Channel/components/FrozenNotification.js +4 -4
  152. package/cjs/Channel/components/Message.js +41 -39
  153. package/cjs/Channel/components/Message.js.map +1 -1
  154. package/cjs/Channel/components/MessageInput.js +39 -37
  155. package/cjs/Channel/components/MessageInput.js.map +1 -1
  156. package/cjs/Channel/components/MessageList.js +47 -66
  157. package/cjs/Channel/components/MessageList.js.map +1 -1
  158. package/cjs/Channel/components/RemoveMessageModal.js +18 -17
  159. package/cjs/Channel/components/RemoveMessageModal.js.map +1 -1
  160. package/cjs/Channel/components/SuggestedMentionList.js +18 -17
  161. package/cjs/Channel/components/SuggestedMentionList.js.map +1 -1
  162. package/cjs/Channel/components/TypingIndicator.js +16 -15
  163. package/cjs/Channel/components/TypingIndicator.js.map +1 -1
  164. package/cjs/Channel/components/UnreadCount.js +4 -4
  165. package/cjs/Channel/context.js +13 -12
  166. package/cjs/Channel/context.js.map +1 -1
  167. package/cjs/Channel/utils/compareMessagesForGrouping.js +26 -0
  168. package/cjs/Channel/utils/compareMessagesForGrouping.js.map +1 -0
  169. package/cjs/Channel/utils/getMessagePartsInfo.js +42 -0
  170. package/cjs/Channel/utils/getMessagePartsInfo.js.map +1 -0
  171. package/cjs/Channel.js +45 -41
  172. package/cjs/Channel.js.map +1 -1
  173. package/cjs/ChannelList/components/AddChannel.js +15 -15
  174. package/cjs/ChannelList/components/ChannelListHeader.js +6 -6
  175. package/cjs/ChannelList/components/ChannelListUI.js +31 -30
  176. package/cjs/ChannelList/components/ChannelListUI.js.map +1 -1
  177. package/cjs/ChannelList/components/ChannelPreview.js +27 -26
  178. package/cjs/ChannelList/components/ChannelPreview.js.map +1 -1
  179. package/cjs/ChannelList/components/ChannelPreviewAction.js +14 -14
  180. package/cjs/ChannelList/context.js +8 -8
  181. package/cjs/ChannelList.js +31 -30
  182. package/cjs/ChannelList.js.map +1 -1
  183. package/cjs/{ChannelListProvider-c1f3cf4a.js → ChannelListProvider-80903b5c.js} +11 -14
  184. package/cjs/ChannelListProvider-80903b5c.js.map +1 -0
  185. package/cjs/{ChannelProvider-633edf61.js → ChannelProvider-c75c8c0d.js} +109 -414
  186. package/cjs/ChannelProvider-c75c8c0d.js.map +1 -0
  187. package/cjs/ChannelSettings/components/ChannelProfile.js +11 -11
  188. package/cjs/ChannelSettings/components/ChannelSettingsUI.js +17 -17
  189. package/cjs/ChannelSettings/components/EditDetailsModal.js +11 -11
  190. package/cjs/ChannelSettings/components/LeaveChannel.js +11 -11
  191. package/cjs/ChannelSettings/components/ModerationPanel.js +14 -14
  192. package/cjs/ChannelSettings/components/UserListItem.js +10 -10
  193. package/cjs/ChannelSettings/components/UserPanel.js +13 -13
  194. package/cjs/ChannelSettings/context.js +3 -3
  195. package/cjs/ChannelSettings.js +17 -17
  196. package/cjs/CreateChannel/components/CreateChannelUI.js +13 -13
  197. package/cjs/CreateChannel/components/InviteUsers.js +13 -13
  198. package/cjs/CreateChannel/components/SelectChannelType.js +10 -10
  199. package/cjs/CreateChannel/context.js +4 -4
  200. package/cjs/CreateChannel.js +13 -13
  201. package/cjs/{CreateChannelProvider-32102712.js → CreateChannelProvider-0e78ab7b.js} +1 -1
  202. package/cjs/{CreateChannelProvider-32102712.js.map → CreateChannelProvider-0e78ab7b.js.map} +1 -1
  203. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js +9 -9
  204. package/cjs/CreateOpenChannel/context.js +1 -1
  205. package/cjs/CreateOpenChannel.js +9 -9
  206. package/cjs/EditUserProfile/components/EditUserProfileUI.js +12 -12
  207. package/cjs/EditUserProfile.js +12 -12
  208. package/cjs/{LocalizationContext-a15ec4eb.js → LocalizationContext-fd85331f.js} +3 -3
  209. package/cjs/{LocalizationContext-a15ec4eb.js.map → LocalizationContext-fd85331f.js.map} +1 -1
  210. package/cjs/{MediaQueryContext-80d10d7b.js → MediaQueryContext-fde456fd.js} +1 -1
  211. package/cjs/{MediaQueryContext-80d10d7b.js.map → MediaQueryContext-fde456fd.js.map} +1 -1
  212. package/cjs/{MemberList-5303bbbb.js → MemberList-16ebc116.js} +5 -5
  213. package/cjs/{MemberList-5303bbbb.js.map → MemberList-16ebc116.js.map} +1 -1
  214. package/cjs/{useDirtyGetMentions-a37639f1.js → Message/hooks/useDirtyGetMentions.js} +4 -1
  215. package/cjs/Message/hooks/useDirtyGetMentions.js.map +1 -0
  216. package/cjs/MessageSearch/components/MessageSearchUI.js +11 -11
  217. package/cjs/MessageSearch/context.js +1 -1
  218. package/cjs/MessageSearch/context.js.map +1 -1
  219. package/cjs/MessageSearch.js +11 -11
  220. package/cjs/OpenChannel/components/FrozenChannelNotification.js +4 -4
  221. package/cjs/OpenChannel/components/OpenChannelHeader.js +12 -12
  222. package/cjs/OpenChannel/components/OpenChannelInput.js +20 -19
  223. package/cjs/OpenChannel/components/OpenChannelInput.js.map +1 -1
  224. package/cjs/OpenChannel/components/OpenChannelMessage.js +32 -40
  225. package/cjs/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  226. package/cjs/OpenChannel/components/OpenChannelMessageList.js +33 -32
  227. package/cjs/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  228. package/cjs/OpenChannel/components/OpenChannelUI.js +33 -32
  229. package/cjs/OpenChannel/components/OpenChannelUI.js.map +1 -1
  230. package/cjs/OpenChannel/context.js +8 -8
  231. package/cjs/OpenChannel.js +33 -32
  232. package/cjs/OpenChannel.js.map +1 -1
  233. package/cjs/OpenChannelList/components/OpenChannelListUI.js +13 -13
  234. package/cjs/OpenChannelList/components/OpenChannelPreview.js +3 -3
  235. package/cjs/OpenChannelList/context.js +3 -3
  236. package/cjs/OpenChannelList.js +13 -13
  237. package/cjs/{OpenChannelListProvider-49874b88.js → OpenChannelListProvider-8665615a.js} +3 -3
  238. package/cjs/{OpenChannelListProvider-49874b88.js.map → OpenChannelListProvider-8665615a.js.map} +1 -1
  239. package/cjs/{OpenChannelProvider-c2b3dc2c.js → OpenChannelProvider-5e558c1a.js} +7 -7
  240. package/cjs/OpenChannelProvider-5e558c1a.js.map +1 -0
  241. package/cjs/OpenChannelSettings/components/EditDetailsModal.js +12 -12
  242. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +12 -12
  243. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +17 -17
  244. package/cjs/OpenChannelSettings/components/OperatorUI.js +16 -16
  245. package/cjs/OpenChannelSettings/components/ParticipantUI.js +14 -14
  246. package/cjs/OpenChannelSettings/context.js +3 -3
  247. package/cjs/OpenChannelSettings.js +17 -17
  248. package/cjs/{RemoveMessageModal-271f1251.js → RemoveMessageModal-6307711c.js} +3 -3
  249. package/cjs/RemoveMessageModal-6307711c.js.map +1 -0
  250. package/cjs/SendbirdProvider.js +24 -21
  251. package/cjs/SendbirdProvider.js.map +1 -1
  252. package/cjs/Thread/components/ParentMessageInfo.js +38 -36
  253. package/cjs/Thread/components/ParentMessageInfo.js.map +1 -1
  254. package/cjs/Thread/components/ParentMessageInfoItem.js +21 -21
  255. package/cjs/Thread/components/ParentMessageInfoItem.js.map +1 -1
  256. package/cjs/Thread/components/ThreadHeader.js +6 -6
  257. package/cjs/Thread/components/ThreadList.js +39 -37
  258. package/cjs/Thread/components/ThreadList.js.map +1 -1
  259. package/cjs/Thread/components/ThreadListItem.js +42 -40
  260. package/cjs/Thread/components/ThreadListItem.js.map +1 -1
  261. package/cjs/Thread/components/ThreadMessageInput.js +34 -32
  262. package/cjs/Thread/components/ThreadMessageInput.js.map +1 -1
  263. package/cjs/Thread/components/ThreadUI.js +43 -41
  264. package/cjs/Thread/components/ThreadUI.js.map +1 -1
  265. package/cjs/Thread/context.js +8 -8
  266. package/cjs/Thread.js +43 -41
  267. package/cjs/Thread.js.map +1 -1
  268. package/cjs/{ThreadProvider-8d2ce923.js → ThreadProvider-aeb062df.js} +12 -11
  269. package/cjs/ThreadProvider-aeb062df.js.map +1 -0
  270. package/cjs/{UserProfileContext-f8f1cee7.js → UserProfileContext-e658337c.js} +1 -1
  271. package/cjs/{UserProfileContext-f8f1cee7.js.map → UserProfileContext-e658337c.js.map} +1 -1
  272. package/cjs/{VoiceMessageInputWrapper-e8d7b9ba.js → VoiceMessageInputWrapper-ee24a942.js} +9 -9
  273. package/cjs/{VoiceMessageInputWrapper-e8d7b9ba.js.map → VoiceMessageInputWrapper-ee24a942.js.map} +1 -1
  274. package/cjs/VoicePlayer/context.js +3 -3
  275. package/cjs/VoicePlayer/useVoicePlayer.js +9 -9
  276. package/cjs/VoiceRecorder/context.js +9 -9
  277. package/cjs/VoiceRecorder/useVoiceRecorder.js +8 -8
  278. package/cjs/{WebAudioUtils-88dbfaed.js → WebAudioUtils-238bd8c4.js} +2 -2
  279. package/cjs/{WebAudioUtils-88dbfaed.js.map → WebAudioUtils-238bd8c4.js.map} +1 -1
  280. package/cjs/{_rollupPluginBabelHelpers-0d9d52a5.js → _rollupPluginBabelHelpers-6da3edf9.js} +1 -1
  281. package/cjs/_rollupPluginBabelHelpers-6da3edf9.js.map +1 -0
  282. package/cjs/{actionTypes-974dfe33.js → actionTypes-b0cfb8a7.js} +1 -1
  283. package/cjs/{actionTypes-974dfe33.js.map → actionTypes-b0cfb8a7.js.map} +1 -1
  284. package/cjs/{color-1e9cc481.js → color-7e8f0ca5.js} +1 -1
  285. package/cjs/{color-1e9cc481.js.map → color-7e8f0ca5.js.map} +1 -1
  286. package/cjs/{compareIds-0344920c.js → compareIds-a5214ac1.js} +1 -1
  287. package/cjs/{compareIds-0344920c.js.map → compareIds-a5214ac1.js.map} +1 -1
  288. package/cjs/{const-0d4d91cd.js → const-703dd567.js} +1 -1
  289. package/cjs/{const-0d4d91cd.js.map → const-703dd567.js.map} +1 -1
  290. package/cjs/{const-182fe978.js → const-7ab4dbea.js} +1 -1
  291. package/cjs/{const-182fe978.js.map → const-7ab4dbea.js.map} +1 -1
  292. package/cjs/{consts-0c9a38ef.js → consts-0337201b.js} +5 -1
  293. package/cjs/{consts-0c9a38ef.js.map → consts-0337201b.js.map} +1 -1
  294. package/cjs/{consts-10e5b075.js → consts-39e2e498.js} +1 -1
  295. package/cjs/{consts-10e5b075.js.map → consts-39e2e498.js.map} +1 -1
  296. package/cjs/{consts-5bdc2c7f.js → consts-74f92105.js} +1 -1
  297. package/cjs/{consts-5bdc2c7f.js.map → consts-74f92105.js.map} +1 -1
  298. package/cjs/{consts-c336bb61.js → consts-acdad2b4.js} +1 -1
  299. package/cjs/{consts-c336bb61.js.map → consts-acdad2b4.js.map} +1 -1
  300. package/cjs/{context-0276d21e.js → context-90576ca6.js} +2 -2
  301. package/cjs/{context-0276d21e.js.map → context-90576ca6.js.map} +1 -1
  302. package/cjs/dist/index.css +121 -94
  303. package/cjs/dist/index.css.map +1 -1
  304. package/cjs/{index-17a6519d.js → index-011a6124.js} +1 -1
  305. package/cjs/{index-17a6519d.js.map → index-011a6124.js.map} +1 -1
  306. package/cjs/index-05ea6eac.js +230 -0
  307. package/cjs/index-05ea6eac.js.map +1 -0
  308. package/cjs/{index-49fe0efb.js → index-0aec5632.js} +4 -4
  309. package/cjs/{index-49fe0efb.js.map → index-0aec5632.js.map} +1 -1
  310. package/cjs/{index-e46cc828.js → index-5699329f.js} +6 -6
  311. package/cjs/{index-e46cc828.js.map → index-5699329f.js.map} +1 -1
  312. package/cjs/{index-1325e266.js → index-66369e8b.js} +3 -3
  313. package/cjs/{index-1325e266.js.map → index-66369e8b.js.map} +1 -1
  314. package/cjs/{index-092b22dd.js → index-76acbd2d.js} +2 -2
  315. package/cjs/{index-092b22dd.js.map → index-76acbd2d.js.map} +1 -1
  316. package/cjs/{index-b428366f.js → index-7d3c8e0c.js} +2 -2
  317. package/cjs/index-7d3c8e0c.js.map +1 -0
  318. package/cjs/{index-6cb3365f.js → index-8522d0c2.js} +2 -2
  319. package/cjs/{index-6cb3365f.js.map → index-8522d0c2.js.map} +1 -1
  320. package/cjs/{index-cebd1362.js → index-9470d71b.js} +4 -4
  321. package/cjs/{index-cebd1362.js.map → index-9470d71b.js.map} +1 -1
  322. package/cjs/{index-08c5777e.js → index-9c4b8f39.js} +15 -8
  323. package/cjs/index-9c4b8f39.js.map +1 -0
  324. package/cjs/{index-dbccd7fb.js → index-ad47c0e4.js} +3 -3
  325. package/cjs/{index-dbccd7fb.js.map → index-ad47c0e4.js.map} +1 -1
  326. package/cjs/{index-87e11d7e.js → index-b04632ba.js} +5 -5
  327. package/cjs/{index-87e11d7e.js.map → index-b04632ba.js.map} +1 -1
  328. package/cjs/{index-2cb13008.js → index-bf35893c.js} +2 -2
  329. package/cjs/{index-2cb13008.js.map → index-bf35893c.js.map} +1 -1
  330. package/cjs/{index-5a651f3c.js → index-c63d7e90.js} +2 -2
  331. package/cjs/{index-5a651f3c.js.map → index-c63d7e90.js.map} +1 -1
  332. package/cjs/{index-54228aa8.js → index-dbfce4b2.js} +4 -4
  333. package/cjs/{index-54228aa8.js.map → index-dbfce4b2.js.map} +1 -1
  334. package/cjs/index-e18eb9ba.js +298 -0
  335. package/cjs/index-e18eb9ba.js.map +1 -0
  336. package/cjs/{index-9c8e297d.js → index-e99f0986.js} +3 -3
  337. package/cjs/{index-9c8e297d.js.map → index-e99f0986.js.map} +1 -1
  338. package/cjs/{index-c2454b7e.js → index-eac4199a.js} +1 -1
  339. package/cjs/{index-c2454b7e.js.map → index-eac4199a.js.map} +1 -1
  340. package/cjs/{index-ed1ee70b.js → index-f9665a27.js} +21 -14
  341. package/cjs/index-f9665a27.js.map +1 -0
  342. package/cjs/index.js +57 -53
  343. package/cjs/index.js.map +1 -1
  344. package/cjs/{index.module-8026e7d3.js → index.module-0ba29e4f.js} +1 -1
  345. package/cjs/{index.module-8026e7d3.js.map → index.module-0ba29e4f.js.map} +1 -1
  346. package/cjs/package.json +2 -2
  347. package/cjs/{resolvedReplyType-8137e072.js → resolvedReplyType-9f17b17a.js} +1 -1
  348. package/cjs/{resolvedReplyType-8137e072.js.map → resolvedReplyType-9f17b17a.js.map} +1 -1
  349. package/cjs/sendbirdSelectors.js +3 -4
  350. package/cjs/sendbirdSelectors.js.map +1 -1
  351. package/cjs/{stringSet-769f181d.js → stringSet-dfe78bcf.js} +1 -1
  352. package/cjs/{stringSet-769f181d.js.map → stringSet-dfe78bcf.js.map} +1 -1
  353. package/cjs/{tokenize-586ed01a.js → tokenize-8279c435.js} +2 -2
  354. package/cjs/{tokenize-586ed01a.js.map → tokenize-8279c435.js.map} +1 -1
  355. package/cjs/{topics-99121946.js → topics-ba2551c1.js} +1 -1
  356. package/cjs/{topics-99121946.js.map → topics-ba2551c1.js.map} +1 -1
  357. package/cjs/{types-812b3bfd.js → types-c4bc01b7.js} +1 -1
  358. package/cjs/types-c4bc01b7.js.map +1 -0
  359. package/cjs/ui/Accordion.js +2 -2
  360. package/cjs/ui/AccordionGroup.js +2 -2
  361. package/cjs/ui/AdminMessage.js +2 -2
  362. package/cjs/ui/Avatar.js +1 -1
  363. package/cjs/ui/Badge.js +4 -4
  364. package/cjs/ui/BottomSheet.js +1 -1
  365. package/cjs/ui/Button.js +2 -2
  366. package/cjs/ui/ChannelAvatar.js +2 -2
  367. package/cjs/ui/ConnectionStatus.js +4 -4
  368. package/cjs/ui/ContextMenu.js +5 -5
  369. package/cjs/ui/DateSeparator.js +3 -3
  370. package/cjs/ui/EmojiReactions.js +13 -13
  371. package/cjs/ui/EmojiReactions.js.map +1 -1
  372. package/cjs/ui/FileMessageItemBody.js +6 -6
  373. package/cjs/ui/FileViewer.js +17 -126
  374. package/cjs/ui/FileViewer.js.map +1 -1
  375. package/cjs/ui/Icon.js +178 -159
  376. package/cjs/ui/Icon.js.map +1 -1
  377. package/cjs/ui/IconButton.js +1 -1
  378. package/cjs/ui/Input.js +2 -2
  379. package/cjs/ui/Label.js +2 -2
  380. package/cjs/ui/LinkLabel.js +2 -2
  381. package/cjs/ui/MentionLabel.js +10 -10
  382. package/cjs/ui/MentionUserLabel.js +1 -1
  383. package/cjs/ui/MessageContent.js +28 -28
  384. package/cjs/ui/MessageContent.js.map +1 -1
  385. package/cjs/ui/MessageInput/hooks/usePaste.js +16 -0
  386. package/cjs/ui/MessageInput/hooks/usePaste.js.map +1 -0
  387. package/cjs/ui/MessageInput.js +21 -233
  388. package/cjs/ui/MessageInput.js.map +1 -1
  389. package/cjs/ui/MessageItemMenu.js +8 -8
  390. package/cjs/ui/MessageItemMenu.js.map +1 -1
  391. package/cjs/ui/MessageItemReactionMenu.js +8 -8
  392. package/cjs/ui/MessageItemReactionMenu.js.map +1 -1
  393. package/cjs/ui/MessageSearchFileItem.js +10 -10
  394. package/cjs/ui/MessageSearchItem.js +8 -8
  395. package/cjs/ui/MessageStatus.js +10 -10
  396. package/cjs/ui/Modal.js +7 -7
  397. package/cjs/ui/OGMessageItemBody.js +14 -14
  398. package/cjs/ui/OpenChannelAdminMessage.js +2 -2
  399. package/cjs/ui/OpenChannelAvatar.js +5 -5
  400. package/cjs/ui/OpenchannelConversationHeader.js +6 -6
  401. package/cjs/ui/OpenchannelFileMessage.js +15 -15
  402. package/cjs/ui/OpenchannelOGMessage.js +18 -18
  403. package/cjs/ui/OpenchannelThumbnailMessage.js +14 -14
  404. package/cjs/ui/OpenchannelUserMessage.js +15 -15
  405. package/cjs/ui/PlaceHolder.js +5 -5
  406. package/cjs/ui/PlaybackTime.js +2 -2
  407. package/cjs/ui/QuoteMessage.js +6 -6
  408. package/cjs/ui/QuoteMessage.js.map +1 -1
  409. package/cjs/ui/QuoteMessageInput.js +6 -6
  410. package/cjs/ui/QuoteMessageInput.js.map +1 -1
  411. package/cjs/ui/ReactionBadge.js +2 -2
  412. package/cjs/ui/ReactionButton.js +4 -4
  413. package/cjs/ui/SortByRow.js +1 -1
  414. package/cjs/ui/TextButton.js +1 -1
  415. package/cjs/ui/TextMessageItemBody.js +14 -14
  416. package/cjs/ui/ThreadReplies.js +5 -5
  417. package/cjs/ui/ThumbnailMessageItemBody.js +5 -5
  418. package/cjs/ui/Toggle.js +1 -1
  419. package/cjs/ui/Tooltip.js +2 -2
  420. package/cjs/ui/UnknownMessageItemBody.js +6 -6
  421. package/cjs/ui/UserListItem.js +10 -10
  422. package/cjs/ui/UserProfile.js +9 -9
  423. package/cjs/ui/VoiceMessageItemBody.js +9 -9
  424. package/cjs/ui/VoiceMessgeInput.js +7 -7
  425. package/cjs/ui/Word.js +10 -10
  426. package/cjs/{useLongPress-a77054d5.js → useLongPress-092f3b5a.js} +3 -3
  427. package/cjs/{useLongPress-a77054d5.js.map → useLongPress-092f3b5a.js.map} +1 -1
  428. package/cjs/useSendbirdStateContext.js +1 -1
  429. package/cjs/utils/message/getOutgoingMessageState.js.map +1 -1
  430. package/cjs/utils/message/isVoiceMessage.js +2 -2
  431. package/cjs/utils-415ffe78.js +340 -0
  432. package/cjs/utils-415ffe78.js.map +1 -0
  433. package/cjs/{utils-c8ca7346.js → utils-6a3fe892.js} +1 -1
  434. package/cjs/{utils-c8ca7346.js.map → utils-6a3fe892.js.map} +1 -1
  435. package/cjs/{utils-3fda8de7.js → utils-a0fbcca3.js} +1 -1
  436. package/cjs/{utils-3fda8de7.js.map → utils-a0fbcca3.js.map} +1 -1
  437. package/cjs/{utils-d6b081f0.js → utils-b5edf0d4.js} +1 -1
  438. package/cjs/{utils-d6b081f0.js.map → utils-b5edf0d4.js.map} +1 -1
  439. package/cjs/{utils-18517a45.js → utils-f6fe7b35.js} +2 -2
  440. package/cjs/{utils-18517a45.js.map → utils-f6fe7b35.js.map} +1 -1
  441. package/cjs/{uuid-6c019e89.js → uuid-5f519bff.js} +1 -1
  442. package/cjs/{uuid-6c019e89.js.map → uuid-5f519bff.js.map} +1 -1
  443. package/cjs/withSendbird.js +1 -1
  444. package/{color-2315a258.js → color-577bf8be.js} +1 -1
  445. package/{color-2315a258.js.map → color-577bf8be.js.map} +1 -1
  446. package/{compareIds-2464aab2.js → compareIds-c0200d9c.js} +1 -1
  447. package/{compareIds-2464aab2.js.map → compareIds-c0200d9c.js.map} +1 -1
  448. package/{const-0cca8d38.js → const-83226e6e.js} +1 -1
  449. package/{const-0cca8d38.js.map → const-83226e6e.js.map} +1 -1
  450. package/{const-c6a266f4.js → const-bc3d72f7.js} +1 -1
  451. package/{const-c6a266f4.js.map → const-bc3d72f7.js.map} +1 -1
  452. package/{consts-b6f24cc7.js → consts-1be4a5f0.js} +5 -2
  453. package/{consts-b6f24cc7.js.map → consts-1be4a5f0.js.map} +1 -1
  454. package/{consts-32a2c4a7.js → consts-72edcc10.js} +1 -1
  455. package/{consts-32a2c4a7.js.map → consts-72edcc10.js.map} +1 -1
  456. package/{consts-991d3823.js → consts-b6ee09b8.js} +1 -1
  457. package/{consts-991d3823.js.map → consts-b6ee09b8.js.map} +1 -1
  458. package/{consts-3d956927.js → consts-f43406e2.js} +1 -1
  459. package/{consts-3d956927.js.map → consts-f43406e2.js.map} +1 -1
  460. package/{context-e46fff7b.js → context-79b7df74.js} +2 -2
  461. package/{context-e46fff7b.js.map → context-79b7df74.js.map} +1 -1
  462. package/dist/index.css +121 -94
  463. package/dist/index.css.map +1 -1
  464. package/{index-b9b184a4.js → index-0560155e.js} +1 -1
  465. package/{index-b9b184a4.js.map → index-0560155e.js.map} +1 -1
  466. package/{index-a39b9075.js → index-093de5d9.js} +3 -3
  467. package/{index-a39b9075.js.map → index-093de5d9.js.map} +1 -1
  468. package/{index-ebb8a7df.js → index-1d964676.js} +2 -2
  469. package/index-1d964676.js.map +1 -0
  470. package/{index-17b78bb0.js → index-1fca4ff9.js} +21 -14
  471. package/index-1fca4ff9.js.map +1 -0
  472. package/{index-07345a6e.js → index-20782e24.js} +5 -5
  473. package/{index-07345a6e.js.map → index-20782e24.js.map} +1 -1
  474. package/{index-56249831.js → index-2f85608a.js} +16 -9
  475. package/index-2f85608a.js.map +1 -0
  476. package/{index-f2e30f98.js → index-43c63728.js} +2 -2
  477. package/{index-f2e30f98.js.map → index-43c63728.js.map} +1 -1
  478. package/index-4681e8c0.js +221 -0
  479. package/index-4681e8c0.js.map +1 -0
  480. package/index-56541b27.js +289 -0
  481. package/index-56541b27.js.map +1 -0
  482. package/{index-c4273470.js → index-6685707d.js} +4 -4
  483. package/{index-c4273470.js.map → index-6685707d.js.map} +1 -1
  484. package/{index-879bcfab.js → index-801994fd.js} +3 -3
  485. package/{index-879bcfab.js.map → index-801994fd.js.map} +1 -1
  486. package/{index-63c995b8.js → index-8c47fd78.js} +3 -3
  487. package/{index-63c995b8.js.map → index-8c47fd78.js.map} +1 -1
  488. package/{index-bafedab0.js → index-a6c40339.js} +1 -1
  489. package/{index-bafedab0.js.map → index-a6c40339.js.map} +1 -1
  490. package/{index-499d9ef9.js → index-b5ac166c.js} +2 -2
  491. package/{index-499d9ef9.js.map → index-b5ac166c.js.map} +1 -1
  492. package/{index-7b3790d3.js → index-cf32585b.js} +4 -4
  493. package/{index-7b3790d3.js.map → index-cf32585b.js.map} +1 -1
  494. package/{index-13d9d766.js → index-d4eb3c4f.js} +2 -2
  495. package/{index-13d9d766.js.map → index-d4eb3c4f.js.map} +1 -1
  496. package/{index-2544bb0a.js → index-da667cf0.js} +4 -4
  497. package/{index-2544bb0a.js.map → index-da667cf0.js.map} +1 -1
  498. package/{index-fe2c7493.js → index-e7c6e440.js} +6 -6
  499. package/{index-fe2c7493.js.map → index-e7c6e440.js.map} +1 -1
  500. package/{index-335e7557.js → index-facad2c8.js} +2 -2
  501. package/{index-335e7557.js.map → index-facad2c8.js.map} +1 -1
  502. package/index.d.ts +278 -134
  503. package/index.js +57 -53
  504. package/index.js.map +1 -1
  505. package/{index.module-41885c5b.js → index.module-afd26a55.js} +1 -1
  506. package/{index.module-41885c5b.js.map → index.module-afd26a55.js.map} +1 -1
  507. package/package.json +3 -2
  508. package/{resolvedReplyType-d6e22593.js → resolvedReplyType-56c58fa0.js} +1 -1
  509. package/{resolvedReplyType-d6e22593.js.map → resolvedReplyType-56c58fa0.js.map} +1 -1
  510. package/sendbirdSelectors.js +3 -4
  511. package/sendbirdSelectors.js.map +1 -1
  512. package/{stringSet-47601d79.js → stringSet-3373f05f.js} +1 -1
  513. package/{stringSet-47601d79.js.map → stringSet-3373f05f.js.map} +1 -1
  514. package/{tokenize-c0cf9574.js → tokenize-18e18d41.js} +2 -2
  515. package/{tokenize-c0cf9574.js.map → tokenize-18e18d41.js.map} +1 -1
  516. package/{topics-e985567d.js → topics-b4f2a542.js} +1 -1
  517. package/{topics-e985567d.js.map → topics-b4f2a542.js.map} +1 -1
  518. package/{types-02054e6e.js → types-956382cc.js} +1 -1
  519. package/types-956382cc.js.map +1 -0
  520. package/ui/Accordion.js +2 -2
  521. package/ui/AccordionGroup.js +2 -2
  522. package/ui/AdminMessage.js +2 -2
  523. package/ui/Avatar.js +1 -1
  524. package/ui/Badge.js +4 -4
  525. package/ui/BottomSheet.js +1 -1
  526. package/ui/Button.js +2 -2
  527. package/ui/ChannelAvatar.js +2 -2
  528. package/ui/ConnectionStatus.js +4 -4
  529. package/ui/ContextMenu.js +5 -5
  530. package/ui/DateSeparator.js +3 -3
  531. package/ui/EmojiReactions.js +13 -13
  532. package/ui/EmojiReactions.js.map +1 -1
  533. package/ui/FileMessageItemBody.js +6 -6
  534. package/ui/FileViewer.js +15 -124
  535. package/ui/FileViewer.js.map +1 -1
  536. package/ui/Icon.js +178 -159
  537. package/ui/Icon.js.map +1 -1
  538. package/ui/IconButton.js +1 -1
  539. package/ui/Input.js +2 -2
  540. package/ui/Label.js +2 -2
  541. package/ui/LinkLabel.js +2 -2
  542. package/ui/MentionLabel.js +10 -10
  543. package/ui/MentionUserLabel.js +1 -1
  544. package/ui/MessageContent.js +28 -28
  545. package/ui/MessageContent.js.map +1 -1
  546. package/ui/MessageInput/hooks/usePaste.js +7 -0
  547. package/ui/MessageInput/hooks/usePaste.js.map +1 -0
  548. package/ui/MessageInput.js +16 -227
  549. package/ui/MessageInput.js.map +1 -1
  550. package/ui/MessageItemMenu.js +8 -8
  551. package/ui/MessageItemMenu.js.map +1 -1
  552. package/ui/MessageItemReactionMenu.js +8 -8
  553. package/ui/MessageItemReactionMenu.js.map +1 -1
  554. package/ui/MessageSearchFileItem.js +10 -10
  555. package/ui/MessageSearchItem.js +8 -8
  556. package/ui/MessageStatus.js +10 -10
  557. package/ui/Modal.js +7 -7
  558. package/ui/OGMessageItemBody.js +14 -14
  559. package/ui/OpenChannelAdminMessage.js +2 -2
  560. package/ui/OpenChannelAvatar.js +5 -5
  561. package/ui/OpenchannelConversationHeader.js +6 -6
  562. package/ui/OpenchannelFileMessage.js +15 -15
  563. package/ui/OpenchannelOGMessage.js +18 -18
  564. package/ui/OpenchannelThumbnailMessage.js +14 -14
  565. package/ui/OpenchannelUserMessage.js +15 -15
  566. package/ui/PlaceHolder.js +5 -5
  567. package/ui/PlaybackTime.js +2 -2
  568. package/ui/QuoteMessage.js +6 -6
  569. package/ui/QuoteMessage.js.map +1 -1
  570. package/ui/QuoteMessageInput.js +6 -6
  571. package/ui/QuoteMessageInput.js.map +1 -1
  572. package/ui/ReactionBadge.js +2 -2
  573. package/ui/ReactionButton.js +4 -4
  574. package/ui/SortByRow.js +1 -1
  575. package/ui/TextButton.js +1 -1
  576. package/ui/TextMessageItemBody.js +14 -14
  577. package/ui/ThreadReplies.js +5 -5
  578. package/ui/ThumbnailMessageItemBody.js +5 -5
  579. package/ui/Toggle.js +1 -1
  580. package/ui/Tooltip.js +2 -2
  581. package/ui/UnknownMessageItemBody.js +6 -6
  582. package/ui/UserListItem.js +10 -10
  583. package/ui/UserProfile.js +9 -9
  584. package/ui/VoiceMessageItemBody.js +9 -9
  585. package/ui/VoiceMessgeInput.js +7 -7
  586. package/ui/Word.js +10 -10
  587. package/{useLongPress-0a2a8916.js → useLongPress-5d7ec65f.js} +3 -3
  588. package/{useLongPress-0a2a8916.js.map → useLongPress-5d7ec65f.js.map} +1 -1
  589. package/useSendbirdStateContext.js +1 -1
  590. package/utils/message/getOutgoingMessageState.js.map +1 -1
  591. package/utils/message/isVoiceMessage.js +2 -2
  592. package/utils-07212ce9.js +301 -0
  593. package/utils-07212ce9.js.map +1 -0
  594. package/{utils-2f26afa0.js → utils-46e2f239.js} +1 -1
  595. package/{utils-2f26afa0.js.map → utils-46e2f239.js.map} +1 -1
  596. package/{utils-70ea4cc9.js → utils-8039d87d.js} +2 -2
  597. package/{utils-70ea4cc9.js.map → utils-8039d87d.js.map} +1 -1
  598. package/{utils-93924431.js → utils-93dbc8a2.js} +1 -1
  599. package/{utils-93924431.js.map → utils-93dbc8a2.js.map} +1 -1
  600. package/{utils-d15f13cf.js → utils-f0a55682.js} +1 -1
  601. package/{utils-d15f13cf.js.map → utils-f0a55682.js.map} +1 -1
  602. package/{uuid-ec51ac4d.js → uuid-bdadfb51.js} +1 -1
  603. package/{uuid-ec51ac4d.js.map → uuid-bdadfb51.js.map} +1 -1
  604. package/withSendbird.js +1 -1
  605. package/ChannelListProvider-fc14f42d.js.map +0 -1
  606. package/ChannelProvider-78e85f32.js.map +0 -1
  607. package/OpenChannelProvider-a6f4f92a.js.map +0 -1
  608. package/RemoveMessageModal-0d438e31.js.map +0 -1
  609. package/ThreadProvider-2a4356a2.js.map +0 -1
  610. package/_rollupPluginBabelHelpers-90ff7fc4.js.map +0 -1
  611. package/cjs/ChannelListProvider-c1f3cf4a.js.map +0 -1
  612. package/cjs/ChannelProvider-633edf61.js.map +0 -1
  613. package/cjs/OpenChannelProvider-c2b3dc2c.js.map +0 -1
  614. package/cjs/RemoveMessageModal-271f1251.js.map +0 -1
  615. package/cjs/ThreadProvider-8d2ce923.js.map +0 -1
  616. package/cjs/_rollupPluginBabelHelpers-0d9d52a5.js.map +0 -1
  617. package/cjs/index-08c5777e.js.map +0 -1
  618. package/cjs/index-b428366f.js.map +0 -1
  619. package/cjs/index-ed1ee70b.js.map +0 -1
  620. package/cjs/types-812b3bfd.js.map +0 -1
  621. package/cjs/useDirtyGetMentions-a37639f1.js.map +0 -1
  622. package/index-17b78bb0.js.map +0 -1
  623. package/index-56249831.js.map +0 -1
  624. package/index-ebb8a7df.js.map +0 -1
  625. package/types-02054e6e.js.map +0 -1
  626. package/useDirtyGetMentions-3f7692ab.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-2f85608a.js","sources":["../src/utils/index.ts"],"sourcesContent":["import SendbirdChat, { Emoji, EmojiCategory, EmojiContainer, User } from '@sendbird/chat';\nimport { GroupChannel, Member, SendbirdGroupChat, GroupChannelListQuery } from '@sendbird/chat/groupChannel';\nimport {\n AdminMessage,\n FileMessage,\n MessageListParams,\n MultipleFilesMessage,\n Reaction,\n UserMessage,\n} from '@sendbird/chat/message';\nimport { OpenChannel, SendbirdOpenChat } from '@sendbird/chat/openChannel';\n\nimport { getOutgoingMessageState, OutgoingMessageStates } from './exports/getOutgoingMessageState';\nimport { Nullable } from '../types';\n\n// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types\nconst SUPPORTED_MIMES = {\n IMAGE: [\n 'image/jpeg',\n 'image/jpg',\n 'image/png',\n 'image/gif',\n 'image/svg+xml',\n 'image/webp', // not supported in IE\n ],\n VIDEO: [\n 'video/mpeg',\n 'video/ogg',\n 'video/webm',\n 'video/mp4',\n ],\n AUDIO: [\n 'audio/aac',\n 'audio/midi',\n 'audio/x-midi',\n 'audio/mpeg',\n 'audio/ogg',\n 'audio/opus',\n 'audio/wav',\n 'audio/webm',\n 'audio/3gpp',\n 'audio/3gpp2',\n 'audio/mp3',\n ],\n};\n\n/* eslint-disable no-redeclare */\nexport interface UIKitMessageTypes {\n ADMIN: 'ADMIN',\n TEXT: 'TEXT',\n FILE: 'FILE',\n MULTIPLE_FILES: 'MULTIPLE_FILES',\n THUMBNAIL: 'THUMBNAIL',\n OG: 'OG',\n UNKNOWN: 'UNKNOWN',\n}\nexport const UIKitMessageTypes: UIKitMessageTypes = {\n ADMIN: 'ADMIN',\n TEXT: 'TEXT',\n FILE: 'FILE',\n MULTIPLE_FILES: 'MULTIPLE_FILES',\n THUMBNAIL: 'THUMBNAIL',\n OG: 'OG',\n UNKNOWN: 'UNKNOWN',\n};\n/* eslint-disable no-redeclare */\nexport interface UIKitFileTypes {\n IMAGE: 'IMAGE',\n AUDIO: 'AUDIO',\n VIDEO: 'VIDEO',\n GIF: 'GIF',\n VOICE: 'VOICE',\n OTHERS: 'OTHERS',\n}\nexport const UIKitFileTypes: UIKitFileTypes = {\n IMAGE: 'IMAGE',\n AUDIO: 'AUDIO',\n VIDEO: 'VIDEO',\n GIF: 'GIF',\n VOICE: 'VOICE',\n OTHERS: 'OTHERS',\n};\n\n/* eslint-disable no-redeclare */\nexport interface SendingMessageStatus {\n NONE: 'none',\n SUCCEEDED: 'succeeded',\n FAILED: 'failed',\n PENDING: 'pending',\n}\nconst SendingMessageStatus: SendingMessageStatus = {\n NONE: 'none',\n SUCCEEDED: 'succeeded',\n FAILED: 'failed',\n PENDING: 'pending',\n};\n\nexport type CoreMessageType = AdminMessage | UserMessage | FileMessage | MultipleFilesMessage;\nexport type SendableMessageType = UserMessage | FileMessage | MultipleFilesMessage;\n\nexport const isTextuallyNull = (text: string): boolean => {\n if (text === '' || text === null) {\n return true;\n }\n return false;\n};\n\nexport const isImage = (type: string): boolean => SUPPORTED_MIMES.IMAGE.indexOf(type) >= 0;\nexport const isVideo = (type: string): boolean => SUPPORTED_MIMES.VIDEO.indexOf(type) >= 0;\nexport const isGif = (type: string): boolean => type === 'image/gif';\nexport const isSupportedFileView = (type: string): boolean => isImage(type) || isVideo(type);\nexport const isAudio = (type: string): boolean => SUPPORTED_MIMES.AUDIO.indexOf(type) >= 0;\n\nexport const getUIKitFileTypes = (): UIKitFileTypes => ({ ...UIKitFileTypes });\nexport const getUIKitFileType = (type: string): string => {\n if (isGif(type)) return UIKitFileTypes.GIF;\n if (isImage(type)) return UIKitFileTypes.IMAGE;\n if (isVideo(type)) return UIKitFileTypes.VIDEO;\n if (isAudio(type)) return UIKitFileTypes.AUDIO;\n return UIKitFileTypes.OTHERS;\n};\n\nexport const isSentMessage = (\n message: SendableMessageType,\n): boolean => (message.sendingStatus === 'succeeded');\nexport const isDeliveredMessage = (\n channel: GroupChannel,\n message: SendableMessageType,\n): boolean => (\n getOutgoingMessageState(channel, message) === OutgoingMessageStates.DELIVERED\n || getOutgoingMessageState(channel, message) === OutgoingMessageStates.READ\n);\nexport const isReadMessage = (\n channel: GroupChannel,\n message: SendableMessageType,\n): boolean => (\n getOutgoingMessageState(channel, message) === OutgoingMessageStates.READ\n);\n// TODO: Remove channel from the params, it seems unnecessary\nexport const isFailedMessage = (\n message: SendableMessageType,\n): boolean => (message?.sendingStatus === 'failed');\nexport const isPendingMessage = (\n message: SendableMessageType,\n): boolean => (message?.sendingStatus === 'pending');\nexport const isSentStatus = (state: string): boolean => (\n state === OutgoingMessageStates.SENT\n || state === OutgoingMessageStates.DELIVERED\n || state === OutgoingMessageStates.READ\n);\n\nexport const isAdminMessage = (message: CoreMessageType): boolean => (\n message && (\n message['isAdminMessage'] && typeof message.isAdminMessage === 'function'\n ? message.isAdminMessage()\n : message?.messageType === 'admin'\n )\n);\nexport const isUserMessage = (message: CoreMessageType): boolean => (\n message && (\n message['isUserMessage'] && typeof message.isUserMessage === 'function'\n ? message.isUserMessage()\n : message?.messageType === 'user'\n )\n);\nexport const isFileMessage = (message: CoreMessageType): boolean => (\n message && (\n message['isFileMessage'] && typeof message.isFileMessage === 'function'\n ? message.isFileMessage()\n : message?.messageType === 'file'\n )\n);\nexport const isMultipleFilesMessage = (\n message: CoreMessageType,\n): boolean => (\n message && (\n message['isMultipleFilesMessage'] && typeof message.isMultipleFilesMessage === 'function'\n ? message.isMultipleFilesMessage()\n : (\n message.messageType === 'file'\n && Object.prototype.hasOwnProperty.call(this, 'fileInfoList')\n )\n )\n);\nexport const isParentMessage = (message: CoreMessageType): boolean => (\n !message.parentMessageId && !message.parentMessage && (message.threadInfo?.replyCount ?? 0) > 0\n);\nexport const isThreadMessage = (message: CoreMessageType): boolean => (\n !!message.parentMessageId && !!message.parentMessage\n);\nexport const isOGMessage = (message: SendableMessageType): boolean => !!(\n message && isUserMessage(message) && message?.ogMetaData && (\n message.ogMetaData?.url\n || message.ogMetaData?.title\n || message.ogMetaData?.description\n || message.ogMetaData?.defaultImage\n )\n);\nexport const isTextMessage = (message: SendableMessageType): boolean => (\n isUserMessage(message)\n);\nexport const isThumbnailMessage = (message: SendableMessageType): boolean => (\n message && isFileMessage(message) && isSupportedFileView((message as FileMessage).type)\n);\nexport const isImageMessage = (message: FileMessage): boolean => message && isThumbnailMessage(message) && isImage(message.type);\nexport const isVideoMessage = (message: SendableMessageType): boolean => (\n message && isThumbnailMessage(message) && isVideo((message as FileMessage).type)\n);\nexport const isGifMessage = (message: SendableMessageType): boolean => (\n message && isThumbnailMessage(message) && isGif((message as FileMessage).type)\n);\nexport const isAudioMessage = (message: FileMessage): boolean => message && isFileMessage(message) && isAudio(message.type);\nexport const isAudioMessageMimeType = (type: string): boolean => (/^audio\\//.test(type));\nexport const isVoiceMessageMimeType = (type: string): boolean => (/^voice\\//.test(type));\nexport const isVoiceMessage = (message: Nullable<FileMessage | UserMessage>): boolean => {\n // ex) audio/m4a OR audio/m4a;sbu_type=voice\n if (!(message && isFileMessage(message)) || !(message as FileMessage).type) {\n return false;\n }\n const [mimeType, typeParameter] = (message as FileMessage).type.split(';');\n\n if (!isAudioMessageMimeType(mimeType)) {\n return false;\n }\n\n if (typeParameter) {\n const [key, value] = typeParameter.split('=');\n return key === 'sbu_type' && value === 'voice';\n }\n // ex) message.metaArrays = [{ key: 'KEY_INTERNAL_MESSAGE_TYPE', value: ['voice/m4a'] }]\n return isVoiceMessageMimeType(message?.metaArrays?.find((metaArray) => metaArray.key === 'KEY_INTERNAL_MESSAGE_TYPE')?.value?.[0] ?? '');\n};\n\nexport const isEditedMessage = (\n message: CoreMessageType,\n): boolean => isUserMessage(message) && (message?.updatedAt > 0);\nexport const isEnabledOGMessage = (message: UserMessage): boolean => (\n (!message || !message.ogMetaData || !message.ogMetaData.url) ? false : true\n);\n\nexport const getUIKitMessageTypes = (): UIKitMessageTypes => ({ ...UIKitMessageTypes });\nexport const getUIKitMessageType = (\n message: CoreMessageType,\n): string => {\n if (isAdminMessage(message as AdminMessage)) return UIKitMessageTypes.ADMIN;\n if (isUserMessage(message as UserMessage)) {\n return isOGMessage(message as UserMessage) ? UIKitMessageTypes.OG : UIKitMessageTypes.TEXT;\n }\n if (isFileMessage(message as FileMessage)) {\n if (isThumbnailMessage(message as FileMessage)) {\n return UIKitMessageTypes.THUMBNAIL;\n }\n if (isVoiceMessage(message as FileMessage)) {\n return UIKitFileTypes.VOICE;\n }\n return UIKitMessageTypes.FILE;\n }\n return UIKitMessageTypes.UNKNOWN;\n};\nexport const getSendingMessageStatus = (): SendingMessageStatus => ({ ...SendingMessageStatus });\n\nconst reducer = (accumulator: Array<string>, currentValue: string | Array<string>): Array<any> => {\n if (Array.isArray(currentValue)) {\n return [...accumulator, ...currentValue];\n } else {\n accumulator.push(currentValue);\n return accumulator;\n }\n};\nexport const getClassName = (classNames: string | Array<string | Array<string>>): string => (\n Array.isArray(classNames)\n ? classNames.reduce(reducer, []).join(' ')\n : classNames\n);\nexport const isReactedBy = (userId: string, reaction: Reaction): boolean => (\n reaction.userIds.some((reactorUserId: string): boolean => reactorUserId === userId)\n);\ninterface StringSet {\n TOOLTIP__YOU: string;\n TOOLTIP__AND_YOU: string;\n TOOLTIP__UNKNOWN_USER: string;\n}\nexport const getEmojiTooltipString = (reaction: Reaction, userId: string, memberNicknamesMap: Map<string, string>, stringSet: StringSet): string => {\n let you = '';\n if (isReactedBy(userId, reaction)) {\n you = reaction.userIds.length === 1 ? stringSet.TOOLTIP__YOU : stringSet.TOOLTIP__AND_YOU;\n }\n return (`${reaction.userIds\n .filter((reactorUserId: string) => reactorUserId !== userId)\n .map((reactorUserId: string) => (memberNicknamesMap.get(reactorUserId) || stringSet.TOOLTIP__UNKNOWN_USER))\n .join(', ')}${you}`);\n};\n\n// TODO: Use the interface after language tranlsatation of Sendbird.js\ninterface UIKitStore {\n stores: {\n sdkStore: {\n sdk: SendbirdChat | SendbirdOpenChat | SendbirdGroupChat,\n },\n userStore: {\n user: User,\n },\n },\n config: {\n isReactionEnabled: boolean,\n }\n}\nexport const getCurrentUserId = (store: UIKitStore): string => (store?.stores?.userStore?.user?.userId);\nexport const getUseReaction = (store: UIKitStore, channel: GroupChannel | OpenChannel): boolean => {\n if (!store?.config?.isReactionEnabled)\n return false;\n if (!store?.stores?.sdkStore?.sdk?.appInfo?.useReaction)\n return false;\n if (channel?.isGroupChannel())\n return !((channel as GroupChannel).isBroadcast || (channel as GroupChannel).isSuper);\n return store?.config?.isReactionEnabled;\n};\n\nexport const isMessageSentByMe = (\n userId: string,\n message: SendableMessageType,\n): boolean => (\n !!(userId && message?.sender?.userId && userId === message.sender.userId)\n);\n\nconst URL_REG = /^((http|https):\\/\\/)?([a-z\\d]+\\.)+[a-z]{2,6}(\\:[0-9]{1,5})?(\\/[-a-zA-Z\\d%_.~+&=]*)*(\\?[;&a-zA-Z\\d%_.~+=-]*)?(\\#[-a-zA-Z\\d_]*)?$/;\nexport const isUrl = (text: string): boolean => URL_REG.test(text);\n\nconst MENTION_TAG_REG = /\\@\\{.*?\\}/i;\nexport const isMentionedText = (text: string): boolean => MENTION_TAG_REG.test(text);\n\nexport const truncateString = (fullStr: string, strLen?: number): string => {\n if (!strLen) strLen = 40;\n if (fullStr === null || fullStr === undefined) return '';\n if (fullStr.length <= strLen) return fullStr;\n const separator = '...';\n const sepLen = separator.length;\n const charsToShow = strLen - sepLen;\n const frontChars = Math.ceil(charsToShow / 2);\n const backChars = Math.floor(charsToShow / 2);\n return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);\n};\n\nexport const copyToClipboard = (text: string): boolean => {\n // @ts-ignore: Unreachable code error\n if (window.clipboardData && window.clipboardData.setData) {\n // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.\n // @ts-ignore: Unreachable code error\n return window.clipboardData.setData('Text', text);\n }\n if (document.queryCommandSupported && document.queryCommandSupported('copy')) {\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n textarea.style.position = 'fixed'; // Prevent scrolling to bottom of page in Microsoft Edge.\n document.body.appendChild(textarea);\n textarea.select();\n try {\n return document.execCommand('copy'); // Security exception may be thrown by some browsers.\n } catch (ex) {\n return false;\n } finally {\n document.body.removeChild(textarea);\n }\n }\n return false;\n};\n\nexport const getEmojiListAll = (emojiContainer: EmojiContainer): Array<Emoji> => (\n emojiContainer?.emojiCategories?.map((emojiCategory: EmojiCategory) => emojiCategory.emojis)\n .reduce((prevArr: Array<Emoji>, currArr: Array<Emoji>) => prevArr.concat(currArr), [])\n);\nexport const getEmojiMapAll = (emojiContainer: EmojiContainer): Map<string, Emoji> => {\n const emojiMap = new Map();\n emojiContainer?.emojiCategories?.forEach((category: EmojiCategory) => {\n category?.emojis?.forEach((emoji: Emoji): void => {\n if (emoji && emoji.key) {\n emojiMap.set(emoji.key, emoji);\n }\n });\n });\n return emojiMap;\n};\nconst findEmojiUrl = (targetKey: string) => ({ key }) => key === targetKey;\nexport const getEmojiUrl = (emojiContainer?: EmojiContainer, emojiKey?: string): string => {\n const isFindingKey = findEmojiUrl(emojiKey ?? '');\n return emojiContainer?.emojiCategories\n .find((category) => category.emojis.some(isFindingKey))?.emojis\n .find(isFindingKey)\n ?.url || '';\n};\n\nexport const getUserName = (user: User): string => (user?.friendName || user?.nickname || user?.userId);\nexport const getSenderName = (message: SendableMessageType): string => (\n message?.sender && getUserName(message?.sender)\n);\n\nexport const hasSameMembers = <T>(a: T[], b: T[]): boolean => {\n if (a === b) {\n return true;\n }\n if (a == null || b == null) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n\n const sortedA = [...a].sort();\n const sortedB = [...b].sort();\n\n for (let i = 0; i < sortedA.length; ++i) {\n if (sortedA[i] !== sortedB[i]) {\n return false;\n }\n }\n return true;\n};\nexport const isFriend = (user: Nullable<User>): boolean => {\n if (!user) return false;\n return !!(user.friendDiscoveryKey || user.friendName);\n};\n\nexport const filterMessageListParams = (\n params: MessageListParams,\n message: SendableMessageType,\n): boolean => {\n const { customTypesFilter = [] } = params;\n // @ts-ignore\n if (params?.messageTypeFilter && params.messageTypeFilter !== message.messageType) {\n return false;\n }\n if (customTypesFilter?.length > 0) {\n const customTypes = customTypesFilter.filter((item) => item !== '*');\n // Because Chat SDK inserts '*' when customTypes is empty\n if (customTypes.length > 0 && !customTypes.includes(message.customType)) {\n return false;\n }\n }\n if (params?.senderUserIdsFilter && params?.senderUserIdsFilter?.length > 0) {\n if (message?.isUserMessage?.() || message?.isFileMessage?.()) {\n const messageSender = (message as SendableMessageType).sender || message['_sender'];\n if (!params?.senderUserIdsFilter?.includes(messageSender?.userId)) {\n return false;\n }\n } else {\n return false;\n }\n }\n if (!params?.includeParentMessageInfo && (message?.parentMessageId || message?.parentMessage)) {\n return false;\n }\n return true;\n};\n\nexport const filterChannelListParams = (params: GroupChannelListQuery, channel: GroupChannel, currentUserId: string): boolean => {\n if (!params?.includeEmpty && channel?.lastMessage === null) {\n return false;\n }\n const searchFilter = params?.searchFilter;\n if (searchFilter?.query && (searchFilter?.fields?.length ?? 0) > 0) {\n const searchQuery = searchFilter.query;\n const searchFields = searchFilter.fields;\n if (searchQuery && searchFields && searchFields.length > 0) {\n if (!searchFields.some((searchField) => {\n switch (searchField) {\n case 'channel_name': {\n return channel?.name?.toLowerCase().includes(searchQuery.toLowerCase());\n }\n case 'member_nickname': {\n return channel?.members?.some((member: Member) => member.nickname.toLowerCase().includes(searchQuery.toLowerCase()));\n }\n default: {\n return true;\n }\n }\n })) {\n return false;\n }\n }\n }\n const userIdsFilter = params?.userIdsFilter;\n if (userIdsFilter?.userIds?.length > 0) {\n const { includeMode, queryType } = userIdsFilter;\n const userIds: string[] = userIdsFilter.userIds;\n const memberIds = channel?.members?.map((member: Member) => member.userId);\n if (!includeMode) { // exact match\n if (!userIds.includes(currentUserId)) {\n userIds.push(currentUserId); // add the caller's userId if not added already.\n }\n if (channel?.members?.length > userIds.length) {\n return false; // userIds may contain one or more non-member(s).\n }\n if (!hasSameMembers(userIds, memberIds)) {\n return false;\n }\n } else if (userIds.length > 0) { // inclusive\n switch (queryType) {\n case 'AND': {\n if (userIds.some((userId: string) => !memberIds.includes(userId))) {\n return false;\n }\n break;\n }\n case 'OR': {\n if (userIds.every((userId: string) => !memberIds.includes(userId))) {\n return false;\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n }\n if (params?.includeEmpty === false && channel?.lastMessage === null) {\n return false;\n }\n if (params?.includeFrozen === false && channel?.isFrozen === true) {\n return false;\n }\n if (params?.customTypesFilter?.length > 0 && !params.customTypesFilter.includes(channel?.customType)) {\n return false;\n }\n if (params?.customTypeStartsWithFilter && !new RegExp(`^${params.customTypeStartsWithFilter}`).test(channel?.customType)) {\n return false;\n }\n if (params?.channelNameContainsFilter && !channel?.name?.toLowerCase().includes(params.channelNameContainsFilter.toLowerCase())) {\n return false;\n }\n if (params?.nicknameContainsFilter) {\n const lowerCasedSubString = params.nicknameContainsFilter.toLowerCase();\n if (channel?.members?.every((member: Member) => !member.nickname.toLowerCase().includes(lowerCasedSubString))) {\n return false;\n }\n }\n if (params?.channelUrlsFilter?.length > 0 && !params.channelUrlsFilter.includes(channel?.url)) {\n return false;\n }\n if (params?.myMemberStateFilter) {\n switch (params.myMemberStateFilter) {\n case 'joined_only':\n if (channel?.myMemberState !== 'joined') {\n return false;\n }\n break;\n case 'invited_only':\n if (channel?.myMemberState !== 'invited') {\n return false;\n }\n break;\n case 'invited_by_friend':\n if (channel?.myMemberState !== 'invited' || !isFriend(channel?.inviter)) {\n return false;\n }\n break;\n case 'invited_by_non_friend':\n if (channel?.myMemberState !== 'invited' || isFriend(channel?.inviter)) {\n return false;\n }\n break;\n }\n }\n if (params?.hiddenChannelFilter) {\n switch (params.hiddenChannelFilter) {\n case 'unhidden_only':\n if (channel?.isHidden || channel?.hiddenState !== 'unhidden') {\n return false;\n }\n break;\n case 'hidden_only':\n if (!channel?.isHidden) {\n return false;\n }\n break;\n case 'hidden_allow_auto_unhide':\n if (!channel?.isHidden || channel?.hiddenState !== 'hidden_allow_auto_unhide') {\n return false;\n }\n break;\n case 'hidden_prevent_auto_unhide':\n if (!channel?.isHidden || channel?.hiddenState !== 'hidden_prevent_auto_unhide') {\n return false;\n }\n break;\n }\n }\n if (params?.unreadChannelFilter) {\n switch (params.unreadChannelFilter) {\n case 'unread_message':\n if (channel?.unreadMessageCount === 0) {\n return false;\n }\n break;\n }\n }\n if (params?.publicChannelFilter) {\n switch (params.publicChannelFilter) {\n case 'public':\n if (!channel?.isPublic) {\n return false;\n }\n break;\n case 'private':\n if (channel?.isPublic) {\n return false;\n }\n break;\n }\n }\n if (params?.superChannelFilter) {\n switch (params.superChannelFilter) {\n case 'super':\n if (!channel?.isSuper) {\n return false;\n }\n break;\n case 'nonsuper':\n if (channel?.isSuper) {\n return false;\n }\n break;\n }\n }\n return true;\n};\n\nexport const binarySearch = (list: Array<number>, number: number): number => { // [100, 99, 98, 97, ...]\n const pivot = Math.floor(list.length / 2);\n if (list[pivot] === number) {\n return pivot;\n }\n const leftList = list.slice(0, pivot);\n const rightList = list.slice(pivot + 1, list.length);\n if (list[pivot] > number) {\n return pivot + 1 + (rightList.length === 0 ? 0 : binarySearch(rightList, number));\n } else {\n return (leftList.length === 0) ? pivot : binarySearch(leftList, number);\n }\n};\n// This is required when channel is displayed on channel list by filter\nexport const getChannelsWithUpsertedChannel = (channels: Array<GroupChannel>, channel: GroupChannel): Array<GroupChannel> => {\n if (channels.some((ch: GroupChannel) => ch.url === channel?.url)) {\n return channels.map((ch: GroupChannel) => (ch.url === channel?.url ? channel : ch));\n }\n const targetIndex = binarySearch(\n channels.map((channel: GroupChannel) => channel?.lastMessage?.createdAt || channel?.createdAt),\n channel?.lastMessage?.createdAt || channel?.createdAt,\n );\n return [...channels.slice(0, targetIndex), channel, ...channels.slice(targetIndex, channels.length)];\n};\n\nexport const getMatchedUserIds = (word: string, users: Array<User>, _template?: string): boolean => {\n const template = _template || '@'; // Use global variable\n // const matchedUserIds = [];\n // users.map((user) => user?.userId).forEach((userId) => {\n // if (word.indexOf(`${template}{${userId}}`) > -1) {\n // matchedUserIds.push(userId);\n // }\n // });\n // return matchedUserIds;\n return users.map((user) => user?.userId).some((userId) => word.indexOf(`${template}{${userId}}`) > -1);\n};\n\nexport enum StringObjType {\n normal = 'normal',\n mention = 'mention',\n url = 'url',\n}\nexport interface StringObj {\n type: StringObjType;\n value: string;\n userId?: string;\n}\n\n/**\n * @deprecated\n * use modules/message/utils/tokenize instead\n */\nexport const convertWordToStringObj = (word: string, _users: Array<User>, _template?: string): Array<StringObj> => {\n const users = _users || [];\n const template = _template || '@'; // Use global variable\n const resultArray: Array<StringObj> = [];\n const regex = RegExp(`${template}{(${users.map((user) => user?.userId).join('|')})}`, 'g');\n let excutionResult;\n let lastIndex = 0;\n while ((excutionResult = regex.exec(word)) !== null) {\n const [template, userId] = excutionResult;\n const endIndex = regex.lastIndex;\n const startIndex = endIndex - template.length;\n // Normal text\n const normalText = word.slice(lastIndex, startIndex);\n resultArray.push({\n type: isUrl(normalText) ? StringObjType.url : StringObjType.normal,\n value: normalText,\n });\n // Mention template\n const mentionedUser = users.find((user) => user?.userId === userId);\n if (!mentionedUser) {\n resultArray.push({\n type: StringObjType.normal,\n value: template, // because template is the origin text\n });\n } else {\n resultArray.push({\n type: StringObjType.mention,\n value: mentionedUser?.nickname || '(No name)',\n userId: userId,\n });\n }\n lastIndex = endIndex;\n }\n if (lastIndex < word.length) {\n // Normal text\n const normalText = word.slice(lastIndex);\n resultArray.push({\n type: isUrl(normalText) ? StringObjType.url : StringObjType.normal,\n value: normalText,\n });\n }\n return resultArray;\n};\n\nexport const arrayEqual = (array1: Array<unknown>, array2: Array<unknown>): boolean => {\n if (Array.isArray(array1) && Array.isArray(array2) && array1.length === array2.length) {\n for (let i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n }\n return false;\n};\n"],"names":["SUPPORTED_MIMES","IMAGE","VIDEO","AUDIO","UIKitMessageTypes","ADMIN","TEXT","FILE","MULTIPLE_FILES","THUMBNAIL","OG","UNKNOWN","UIKitFileTypes","GIF","VOICE","OTHERS","SendingMessageStatus","NONE","SUCCEEDED","FAILED","PENDING","isTextuallyNull","text","isImage","type","indexOf","isVideo","isGif","isSupportedFileView","isAudio","getUIKitFileTypes","_objectSpread","getUIKitFileType","isSentMessage","message","sendingStatus","isReadMessage","channel","getOutgoingMessageState","OutgoingMessageStates","READ","isFailedMessage","isPendingMessage","isSentStatus","state","SENT","DELIVERED","isAdminMessage","messageType","isUserMessage","isFileMessage","isThreadMessage","parentMessageId","parentMessage","isOGMessage","_message$ogMetaData","_message$ogMetaData2","_message$ogMetaData3","_message$ogMetaData4","ogMetaData","url","title","description","defaultImage","isTextMessage","isThumbnailMessage","isImageMessage","isVideoMessage","isGifMessage","isAudioMessage","isAudioMessageMimeType","test","isVoiceMessageMimeType","isVoiceMessage","_message$metaArrays$f","_message$metaArrays","_message$metaArrays$f2","_message$metaArrays$f3","mimeType","typeParameter","split","key","value","metaArrays","find","metaArray","isEditedMessage","updatedAt","getUIKitMessageTypes","getUIKitMessageType","getSendingMessageStatus","reducer","accumulator","currentValue","Array","isArray","push","getClassName","classNames","reduce","join","isReactedBy","userId","reaction","userIds","some","reactorUserId","getEmojiTooltipString","memberNicknamesMap","stringSet","you","length","TOOLTIP__YOU","TOOLTIP__AND_YOU","filter","map","get","TOOLTIP__UNKNOWN_USER","URL_REG","isUrl","truncateString","fullStr","strLen","undefined","separator","sepLen","charsToShow","frontChars","Math","ceil","backChars","floor","substr","copyToClipboard","window","clipboardData","setData","document","queryCommandSupported","textarea","createElement","textContent","style","position","body","appendChild","select","execCommand","ex","removeChild","getEmojiListAll","emojiContainer","_emojiContainer$emoji","emojiCategories","emojiCategory","emojis","prevArr","currArr","concat","getEmojiMapAll","_emojiContainer$emoji2","emojiMap","Map","forEach","category","_category$emojis","emoji","set","findEmojiUrl","targetKey","_ref","getEmojiUrl","emojiKey","_emojiContainer$emoji3","_emojiContainer$emoji4","isFindingKey","getUserName","user","friendName","nickname","getSenderName","sender","hasSameMembers","a","b","sortedA","sort","sortedB","i","isFriend","friendDiscoveryKey","filterMessageListParams","params","_params$senderUserIds","customTypesFilter","messageTypeFilter","customTypes","item","includes","customType","senderUserIdsFilter","_message$isUserMessag","_message$isFileMessag","call","_params$senderUserIds2","messageSender","includeParentMessageInfo","filterChannelListParams","currentUserId","_searchFilter$fields$","_searchFilter$fields","_userIdsFilter$userId","_params$customTypesFi","_channel$name2","_params$channelUrlsFi","includeEmpty","lastMessage","searchFilter","query","fields","searchQuery","searchFields","searchField","_channel$name","name","toLowerCase","_channel$members","members","member","userIdsFilter","_channel$members2","includeMode","queryType","memberIds","_channel$members3","every","includeFrozen","isFrozen","customTypeStartsWithFilter","RegExp","channelNameContainsFilter","nicknameContainsFilter","_channel$members4","lowerCasedSubString","channelUrlsFilter","myMemberStateFilter","myMemberState","inviter","hiddenChannelFilter","isHidden","hiddenState","unreadChannelFilter","unreadMessageCount","publicChannelFilter","isPublic","superChannelFilter","isSuper","binarySearch","list","number","pivot","leftList","slice","rightList","getChannelsWithUpsertedChannel","channels","_channel$lastMessage2","ch","targetIndex","_channel$lastMessage","createdAt","StringObjType","convertWordToStringObj","word","_users","_template","users","template","resultArray","regex","excutionResult","lastIndex","exec","endIndex","startIndex","normalText","normal","mentionedUser","mention","arrayEqual","array1","array2"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { useRef, useEffect, useCallback } from 'react';
2
- import { S as SCROLL_BUFFER } from './consts-b6f24cc7.js';
2
+ import { S as SCROLL_BUFFER } from './consts-1be4a5f0.js';
3
3
 
4
4
  function useDebounce(callback, delay) {
5
5
  const timeoutRef = useRef(null);
@@ -73,4 +73,4 @@ function useHandleOnScrollCallback(_ref) {
73
73
  }
74
74
 
75
75
  export { useHandleOnScrollCallback as a, useDebounce as u };
76
- //# sourceMappingURL=index-f2e30f98.js.map
76
+ //# sourceMappingURL=index-43c63728.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-f2e30f98.js","sources":["../src/hooks/useDebounce.ts","../src/hooks/useHandleOnScrollCallback/index.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport function useDebounce<T extends(...args: any[]) => void>(callback: T, delay: number): T {\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n // Cleanup the timeout on unmount\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n function debounceFunction(...args: Parameters<T>) {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n callback(...args);\n }, delay);\n }\n\n return debounceFunction as T;\n}\n","import React, { useCallback } from 'react';\nimport { SCROLL_BUFFER } from '../../utils/consts';\nimport { useDebounce } from '../useDebounce';\n\nconst DELAY = 500;\n\nexport interface UseHandleOnScrollCallbackProps {\n hasMore: boolean;\n hasNext?: boolean;\n onScroll(callback: () => void): void;\n scrollRef: React.RefObject<HTMLDivElement>;\n setShowScrollDownButton?: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nexport function calcScrollBottom(scrollHeight: number, scrollTop: number): number {\n return scrollHeight - scrollTop;\n}\n\nexport function useHandleOnScrollCallback({\n hasMore,\n hasNext,\n onScroll,\n scrollRef,\n setShowScrollDownButton,\n}: UseHandleOnScrollCallbackProps): () => void {\n const scrollCb = useCallback(() => {\n const element = scrollRef?.current;\n if (element == null) {\n return;\n }\n\n const {\n scrollTop,\n scrollHeight,\n clientHeight,\n } = element;\n // https://sendbird.atlassian.net/browse/SBISSUE-11759\n // the edge case where channel is inside a page that already has scroll\n // scrollintoView will move the whole page, which we dont want\n const scrollBottom = calcScrollBottom(scrollHeight, scrollTop);\n // even if there is more to fetch or not,\n // we still have to show the scroll to bottom button\n if (typeof setShowScrollDownButton === 'function') {\n setShowScrollDownButton(scrollHeight > scrollTop + clientHeight + 1);\n }\n if (hasMore && scrollTop < SCROLL_BUFFER) {\n onScroll(() => {\n // sets the scroll position to the bottom of the new messages\n element.scrollTop = element.scrollHeight - scrollBottom;\n });\n }\n if (hasNext) {\n onScroll(() => {\n // sets the scroll position to the top of the new messages\n element.scrollTop = scrollTop - (scrollHeight - element.scrollHeight);\n });\n }\n }, [\n setShowScrollDownButton,\n hasMore,\n onScroll,\n scrollRef,\n ]);\n\n return useDebounce(scrollCb, DELAY);\n}\n"],"names":["useDebounce","callback","delay","timeoutRef","useRef","useEffect","current","clearTimeout","debounceFunction","_len","arguments","length","args","Array","_key","setTimeout","DELAY","calcScrollBottom","scrollHeight","scrollTop","useHandleOnScrollCallback","_ref","hasMore","hasNext","onScroll","scrollRef","setShowScrollDownButton","scrollCb","useCallback","element","clientHeight","scrollBottom","SCROLL_BUFFER"],"mappings":"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"}
1
+ {"version":3,"file":"index-43c63728.js","sources":["../src/hooks/useDebounce.ts","../src/hooks/useHandleOnScrollCallback/index.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport function useDebounce<T extends(...args: any[]) => void>(callback: T, delay: number): T {\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n // Cleanup the timeout on unmount\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n function debounceFunction(...args: Parameters<T>) {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n callback(...args);\n }, delay);\n }\n\n return debounceFunction as T;\n}\n","import React, { useCallback } from 'react';\nimport { SCROLL_BUFFER } from '../../utils/consts';\nimport { useDebounce } from '../useDebounce';\n\nconst DELAY = 500;\n\nexport interface UseHandleOnScrollCallbackProps {\n hasMore: boolean;\n hasNext?: boolean;\n onScroll(callback: () => void): void;\n scrollRef: React.RefObject<HTMLDivElement>;\n setShowScrollDownButton?: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nexport function calcScrollBottom(scrollHeight: number, scrollTop: number): number {\n return scrollHeight - scrollTop;\n}\n\nexport function useHandleOnScrollCallback({\n hasMore,\n hasNext,\n onScroll,\n scrollRef,\n setShowScrollDownButton,\n}: UseHandleOnScrollCallbackProps): () => void {\n const scrollCb = useCallback(() => {\n const element = scrollRef?.current;\n if (element == null) {\n return;\n }\n\n const {\n scrollTop,\n scrollHeight,\n clientHeight,\n } = element;\n // https://sendbird.atlassian.net/browse/SBISSUE-11759\n // the edge case where channel is inside a page that already has scroll\n // scrollintoView will move the whole page, which we dont want\n const scrollBottom = calcScrollBottom(scrollHeight, scrollTop);\n // even if there is more to fetch or not,\n // we still have to show the scroll to bottom button\n if (typeof setShowScrollDownButton === 'function') {\n setShowScrollDownButton(scrollHeight > scrollTop + clientHeight + 1);\n }\n if (hasMore && scrollTop < SCROLL_BUFFER) {\n onScroll(() => {\n // sets the scroll position to the bottom of the new messages\n element.scrollTop = element.scrollHeight - scrollBottom;\n });\n }\n if (hasNext) {\n onScroll(() => {\n // sets the scroll position to the top of the new messages\n element.scrollTop = scrollTop - (scrollHeight - element.scrollHeight);\n });\n }\n }, [\n setShowScrollDownButton,\n hasMore,\n onScroll,\n scrollRef,\n ]);\n\n return useDebounce(scrollCb, DELAY);\n}\n"],"names":["useDebounce","callback","delay","timeoutRef","useRef","useEffect","current","clearTimeout","debounceFunction","_len","arguments","length","args","Array","_key","setTimeout","DELAY","calcScrollBottom","scrollHeight","scrollTop","useHandleOnScrollCallback","_ref","hasMore","hasNext","onScroll","scrollRef","setShowScrollDownButton","scrollCb","useCallback","element","clientHeight","scrollBottom","SCROLL_BUFFER"],"mappings":";;;AAEO,SAASA,WAAWA,CAAoCC,QAAW,EAAEC,KAAa,EAAK;AAC5F,EAAA,MAAMC,UAAU,GAAGC,MAAM,CAAuC,IAAI,CAAC,CAAA;AAErEC,EAAAA,SAAS,CAAC,MAAM;AACd;AACA,IAAA,OAAO,MAAM;MACX,IAAIF,UAAU,CAACG,OAAO,EAAE;AACtBC,QAAAA,YAAY,CAACJ,UAAU,CAACG,OAAO,CAAC,CAAA;AAClC,OAAA;KACD,CAAA;GACF,EAAE,EAAE,CAAC,CAAA;EAEN,SAASE,gBAAgBA,GAAyB;AAAA,IAAA,KAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAArBC,IAAI,GAAAC,IAAAA,KAAA,CAAAJ,IAAA,GAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAAJF,MAAAA,IAAI,CAAAE,IAAA,CAAAJ,GAAAA,SAAA,CAAAI,IAAA,CAAA,CAAA;AAAA,KAAA;IAC/B,IAAIX,UAAU,CAACG,OAAO,EAAE;AACtBC,MAAAA,YAAY,CAACJ,UAAU,CAACG,OAAO,CAAC,CAAA;AAClC,KAAA;AAEAH,IAAAA,UAAU,CAACG,OAAO,GAAGS,UAAU,CAAC,MAAM;MACpCd,QAAQ,CAAC,GAAGW,IAAI,CAAC,CAAA;KAClB,EAAEV,KAAK,CAAC,CAAA;AACX,GAAA;AAEA,EAAA,OAAOM,gBAAgB,CAAA;AACzB;;ACrBA,MAAMQ,KAAK,GAAG,GAAG,CAAA;AAUV,SAASC,gBAAgBA,CAACC,YAAoB,EAAEC,SAAiB,EAAU;EAChF,OAAOD,YAAY,GAAGC,SAAS,CAAA;AACjC,CAAA;AAEO,SAASC,yBAAyBA,CAAAC,IAAA,EAMM;EAAA,IANL;IACxCC,OAAO;IACPC,OAAO;IACPC,QAAQ;IACRC,SAAS;AACTC,IAAAA,uBAAAA;AAC8B,GAAC,GAAAL,IAAA,CAAA;AAC/B,EAAA,MAAMM,QAAQ,GAAGC,WAAW,CAAC,MAAM;IACjC,MAAMC,OAAO,GAAGJ,SAAS,KAAA,IAAA,IAATA,SAAS,KAATA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAS,CAAEnB,OAAO,CAAA;IAClC,IAAIuB,OAAO,IAAI,IAAI,EAAE;AACnB,MAAA,OAAA;AACF,KAAA;IAEA,MAAM;MACJV,SAAS;MACTD,YAAY;AACZY,MAAAA,YAAAA;AACF,KAAC,GAAGD,OAAO,CAAA;AACX;AACA;AACA;AACA,IAAA,MAAME,YAAY,GAAGd,gBAAgB,CAACC,YAAY,EAAEC,SAAS,CAAC,CAAA;AAC9D;AACA;AACA,IAAA,IAAI,OAAOO,uBAAuB,KAAK,UAAU,EAAE;MACjDA,uBAAuB,CAACR,YAAY,GAAGC,SAAS,GAAGW,YAAY,GAAG,CAAC,CAAC,CAAA;AACtE,KAAA;AACA,IAAA,IAAIR,OAAO,IAAIH,SAAS,GAAGa,aAAa,EAAE;AACxCR,MAAAA,QAAQ,CAAC,MAAM;AACb;AACAK,QAAAA,OAAO,CAACV,SAAS,GAAGU,OAAO,CAACX,YAAY,GAAGa,YAAY,CAAA;AACzD,OAAC,CAAC,CAAA;AACJ,KAAA;AACA,IAAA,IAAIR,OAAO,EAAE;AACXC,MAAAA,QAAQ,CAAC,MAAM;AACb;QACAK,OAAO,CAACV,SAAS,GAAGA,SAAS,IAAID,YAAY,GAAGW,OAAO,CAACX,YAAY,CAAC,CAAA;AACvE,OAAC,CAAC,CAAA;AACJ,KAAA;GACD,EAAE,CACDQ,uBAAuB,EACvBJ,OAAO,EACPE,QAAQ,EACRC,SAAS,CACV,CAAC,CAAA;AAEF,EAAA,OAAOzB,WAAW,CAAC2B,QAAQ,EAAEX,KAAK,CAAC,CAAA;AACrC;;;;"}
@@ -0,0 +1,221 @@
1
+ import { useCallback } from 'react';
2
+ import DOMPurify from 'dompurify';
3
+ import { M as MENTION_USER_LABEL_CLASSNAME } from './consts-72edcc10.js';
4
+ import { T as TEXT_MESSAGE_BODY_CLASSNAME } from './consts-b6ee09b8.js';
5
+ import { O as OG_MESSAGE_BODY_CLASSNAME } from './consts-f43406e2.js';
6
+
7
+ // cretes a sanitized string from a mention user label
8
+ function renderToString(_ref) {
9
+ let {
10
+ userId,
11
+ nickname
12
+ } = _ref;
13
+ // donot change this template, it wont work
14
+ const el = `<span data-userid="${userId}" data-sb-mention="true" class="${MENTION_USER_LABEL_CLASSNAME}">${nickname}</span>`;
15
+ const purifier = DOMPurify(window);
16
+ const sanitized_ = purifier.sanitize(el);
17
+ const token = sanitized_.split(' ');
18
+ const [spanTag, ...rest] = token;
19
+ // we do this because DOMPurify removes the contenteditable attribute
20
+ const sanitized = [spanTag, 'contenteditable="false"', ...rest].join(' ');
21
+ return sanitized;
22
+ }
23
+
24
+ // https://davidwalsh.name/javascript-debounce-function
25
+
26
+ // Sanitize that special characters of HTML tags cause XSS issue
27
+ const sanitizeString = str => str === null || str === void 0 ? void 0 : str.replace(/[\u00A0-\u9999<>]/gim, i => ''.concat('&#', i.charCodeAt(0), ';'));
28
+
29
+ /**
30
+ * NodeList cannot be used with Array methods
31
+ * @param {childNodes} NodeList
32
+ * @returns Array of child nodes
33
+ */
34
+ const nodeListToArray = childNodes => {
35
+ try {
36
+ return Array.from(childNodes);
37
+ } catch (error) {
38
+ return [];
39
+ }
40
+ };
41
+
42
+ function inserTemplateToDOM(templateList) {
43
+ const nodes = templateList.map(template => {
44
+ const {
45
+ text,
46
+ userId
47
+ } = template;
48
+ if (userId) {
49
+ return renderToString({
50
+ userId,
51
+ nickname: text
52
+ });
53
+ }
54
+ return sanitizeString(text);
55
+ }).join(' ')
56
+ // add a space at the end of the mention, else cursor/caret wont work
57
+ .concat(' ');
58
+ document.execCommand('insertHTML', false, nodes);
59
+ }
60
+
61
+ const PASTE_NODE = 'sendbird-uikit__paste-node';
62
+ const TEXT_MESSAGE_CLASS = 'sendbird-word';
63
+ const MENTION_CLASS = 'sendbird-word__mention';
64
+ const MENTION_CLASS_IN_INPUT = 'sendbird-mention-user-label';
65
+ const MENTION_CLASS_COMBINED_QUERY = `.${MENTION_CLASS}, .${MENTION_CLASS_IN_INPUT}`;
66
+
67
+ function querySelectorIncludingSelf(master, selector) {
68
+ const result = [master, ...Array.from(master.querySelectorAll(selector))].find(el => el.matches(selector));
69
+ return result;
70
+ }
71
+
72
+ // Pasted dom node can be OG_MESSAGE or partial message or full message
73
+ // full messsage would have TEXT_MESSAGE_BODY_CLASSNAME and have childNodes
74
+ // partial message would not have TEXT_MESSAGE_BODY_CLASSNAME
75
+ function getLeafNodes(master) {
76
+ // og message
77
+ const ogMessage = querySelectorIncludingSelf(master, `.${OG_MESSAGE_BODY_CLASSNAME}`);
78
+ if (ogMessage) {
79
+ return nodeListToArray(ogMessage.childNodes);
80
+ }
81
+ const textMessageBody = querySelectorIncludingSelf(master, `.${TEXT_MESSAGE_BODY_CLASSNAME}`);
82
+ if (textMessageBody) {
83
+ return nodeListToArray(textMessageBody.childNodes);
84
+ }
85
+ return nodeListToArray(master.childNodes);
86
+ }
87
+ function createPasteNode() {
88
+ const pasteNode = document.body.querySelector(`#${PASTE_NODE}`);
89
+ // remove existing paste node
90
+ if (pasteNode) {
91
+ pasteNode === null || pasteNode === void 0 ? void 0 : pasteNode.remove();
92
+ }
93
+
94
+ // create new paste node and return
95
+ const node = document.createElement('div');
96
+ node.id = PASTE_NODE;
97
+ node.style.display = 'none';
98
+ return node;
99
+ }
100
+ function hasMention(parent) {
101
+ return parent !== null && parent !== void 0 && parent.querySelector(MENTION_CLASS_COMBINED_QUERY) ? true : false;
102
+ }
103
+ const extractTextFromNodes = nodes => {
104
+ let text = '';
105
+ nodes.forEach(node => {
106
+ // to preserve space between words
107
+ const textNodes = node.querySelectorAll(`.${TEXT_MESSAGE_CLASS}`);
108
+ if (textNodes.length > 0) {
109
+ text += extractTextFromNodes(Array.from(textNodes)) + ' ';
110
+ }
111
+ text += node.innerText + ' ';
112
+ });
113
+ return text;
114
+ };
115
+ function domToMessageTemplate(nodeArray) {
116
+ const templates = nodeArray === null || nodeArray === void 0 ? void 0 : nodeArray.reduce((accumulator, currentValue) => {
117
+ // currentValue can be node(from messageBody or messageInput) or text
118
+ let mentionNode;
119
+ // this looks awkward, but it is a fallback to set default text
120
+ let text = currentValue === null || currentValue === void 0 ? void 0 : currentValue.innerText;
121
+
122
+ // if text node, set text
123
+ if (currentValue instanceof Text) {
124
+ mentionNode = false;
125
+ text = currentValue.textContent;
126
+ }
127
+ if (currentValue instanceof HTMLElement) {
128
+ mentionNode = currentValue.classList.contains(MENTION_CLASS) || currentValue.classList.contains(MENTION_CLASS_IN_INPUT) ? currentValue : currentValue.querySelector(MENTION_CLASS_COMBINED_QUERY);
129
+ }
130
+
131
+ // if mentionNode is not null, it is a mention
132
+ if (mentionNode) {
133
+ var _mentionNode$dataset;
134
+ const text = currentValue === null || currentValue === void 0 ? void 0 : currentValue.innerText;
135
+ const userId = (_mentionNode$dataset = mentionNode.dataset) === null || _mentionNode$dataset === void 0 ? void 0 : _mentionNode$dataset.userid;
136
+ return [...accumulator, {
137
+ text,
138
+ userId
139
+ }];
140
+ }
141
+ return [...accumulator, {
142
+ text
143
+ }];
144
+ }, []);
145
+ return templates;
146
+ }
147
+ function getUsersFromWords(templates, channel) {
148
+ const userMap = {};
149
+ const users = channel.members;
150
+ templates.forEach(template => {
151
+ if (template.userId) {
152
+ const mentionedMember = users.find(user => user.userId === template.userId);
153
+ // Object.values would return array-> [undefined] if the user is not in the channel
154
+ if (mentionedMember) {
155
+ userMap[template.userId] = mentionedMember;
156
+ }
157
+ }
158
+ });
159
+ return Object.values(userMap);
160
+ }
161
+
162
+ // exported, should be backward compatible
163
+ // conditions to test:
164
+ // 1. paste simple text
165
+ // 2. paste text with mention
166
+ // 3. paste text with mention and text
167
+ // 4. paste text with mention and text and paste again before and after
168
+ // 5. copy message with mention(only one mention, no other text) and paste
169
+ // 6. copy message with mention from input and paste(before and after)
170
+ function usePaste(_ref) {
171
+ let {
172
+ ref,
173
+ setIsInput,
174
+ setHeight,
175
+ channel,
176
+ setMentionedUsers
177
+ } = _ref;
178
+ return useCallback(e => {
179
+ e.preventDefault();
180
+ const html = e === null || e === void 0 ? void 0 : e.clipboardData.getData('text/html');
181
+ // simple text, continue as normal
182
+ if (!html) {
183
+ const text = e === null || e === void 0 ? void 0 : e.clipboardData.getData('text');
184
+ document.execCommand('insertHTML', false, sanitizeString(text));
185
+ setIsInput(true);
186
+ setHeight();
187
+ return;
188
+ }
189
+
190
+ // has html, check if there are mentions, sanitize and insert
191
+ const purifier = DOMPurify(window);
192
+ const clean = purifier.sanitize(html);
193
+ const pasteNode = createPasteNode();
194
+ pasteNode.innerHTML = clean;
195
+ // does not have mention, continue as normal
196
+ if (!hasMention(pasteNode)) {
197
+ // to preserve space between words
198
+ const text = extractTextFromNodes(Array.from(pasteNode.children));
199
+ document.execCommand('insertHTML', false, sanitizeString(text));
200
+ pasteNode.remove();
201
+ setIsInput(true);
202
+ setHeight();
203
+ return;
204
+ }
205
+
206
+ // has mention, collect leaf nodes and parse words
207
+ const leafNodes = getLeafNodes(pasteNode);
208
+ const words = domToMessageTemplate(leafNodes);
209
+ const mentionedUsers = getUsersFromWords(words, channel);
210
+
211
+ // side effects
212
+ setMentionedUsers(mentionedUsers);
213
+ inserTemplateToDOM(words);
214
+ pasteNode.remove();
215
+ setIsInput(true);
216
+ setHeight();
217
+ }, [ref, setIsInput, setHeight, channel, setMentionedUsers]);
218
+ }
219
+
220
+ export { nodeListToArray as n, renderToString as r, sanitizeString as s, usePaste as u };
221
+ //# sourceMappingURL=index-4681e8c0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-4681e8c0.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 default debounce;\n","import { Word } from './types';\nimport { sanitizeString } from '../../utils';\nimport renderMentionLabelToString from '../../../MentionUserLabel/renderToString';\n\nexport function inserTemplateToDOM(templateList: Word[]): void {\n const nodes = templateList.map((template) => {\n const { text, userId } = template;\n if (userId) {\n return renderMentionLabelToString({ userId, nickname: text });\n }\n return sanitizeString(text);\n })\n .join(' ')\n // add a space at the end of the mention, else cursor/caret wont work\n .concat(' ');\n document.execCommand('insertHTML', false, nodes);\n}\n","export const PASTE_NODE = 'sendbird-uikit__paste-node';\nexport const TEXT_MESSAGE_CLASS = 'sendbird-word';\nexport const MENTION_CLASS = 'sendbird-word__mention';\nexport const MENTION_CLASS_IN_INPUT = 'sendbird-mention-user-label';\nexport const MENTION_CLASS_COMBINED_QUERY = `.${MENTION_CLASS}, .${MENTION_CLASS_IN_INPUT}`;\n","import { GroupChannel } from '@sendbird/chat/groupChannel';\nimport { User } from '@sendbird/chat';\n\nimport {\n PASTE_NODE,\n MENTION_CLASS,\n TEXT_MESSAGE_CLASS,\n MENTION_CLASS_COMBINED_QUERY,\n MENTION_CLASS_IN_INPUT,\n} from './consts';\nimport { Word } from './types';\nimport { TEXT_MESSAGE_BODY_CLASSNAME } from '../../../TextMessageItemBody/consts';\nimport { OG_MESSAGE_BODY_CLASSNAME } from '../../../OGMessageItemBody/consts';\nimport { nodeListToArray } from '../../utils';\n\nexport function querySelectorIncludingSelf(\n master: HTMLElement,\n selector: string,\n): HTMLElement | null {\n const result = [\n master,\n ...Array.from(master.querySelectorAll(selector)),\n ].find((el) => el.matches(selector)) as HTMLElement | null;\n return result;\n}\n\n// Pasted dom node can be OG_MESSAGE or partial message or full message\n// full messsage would have TEXT_MESSAGE_BODY_CLASSNAME and have childNodes\n// partial message would not have TEXT_MESSAGE_BODY_CLASSNAME\nexport function getLeafNodes(master: HTMLElement): ChildNode[] {\n // og message\n const ogMessage = querySelectorIncludingSelf(master, `.${OG_MESSAGE_BODY_CLASSNAME}`);\n if (ogMessage) {\n return nodeListToArray(ogMessage.childNodes);\n }\n\n const textMessageBody = querySelectorIncludingSelf(master, `.${TEXT_MESSAGE_BODY_CLASSNAME}`);\n if (textMessageBody) {\n return nodeListToArray(textMessageBody.childNodes);\n }\n\n return nodeListToArray(master.childNodes);\n}\n\nexport function createPasteNode(): HTMLDivElement | null {\n const pasteNode = document.body.querySelector(`#${PASTE_NODE}`);\n // remove existing paste node\n if (pasteNode) {\n pasteNode?.remove();\n }\n\n // create new paste node and return\n const node = document.createElement('div');\n node.id = PASTE_NODE;\n node.style.display = 'none';\n return node;\n}\n\nexport function hasMention(parent: HTMLDivElement): boolean {\n return parent?.querySelector(MENTION_CLASS_COMBINED_QUERY) ? true : false;\n}\n\nexport const extractTextFromNodes = (nodes: HTMLSpanElement[]): string => {\n let text = '';\n nodes.forEach((node) => {\n // to preserve space between words\n const textNodes = node.querySelectorAll(`.${TEXT_MESSAGE_CLASS}`);\n if (textNodes.length > 0) {\n text += ((extractTextFromNodes(Array.from(textNodes) as HTMLSpanElement[])) + ' ');\n }\n text += (node.innerText + ' ');\n });\n return text;\n};\n\nexport function domToMessageTemplate(nodeArray: ChildNode[]): Word[] {\n const templates: Word[] = nodeArray?.reduce((accumulator, currentValue) => {\n // currentValue can be node(from messageBody or messageInput) or text\n let mentionNode;\n // this looks awkward, but it is a fallback to set default text\n let text = (currentValue as HTMLSpanElement)?.innerText;\n\n // if text node, set text\n if (currentValue instanceof Text) {\n mentionNode = false;\n text = currentValue.textContent;\n }\n\n if (currentValue instanceof HTMLElement) {\n mentionNode = (currentValue.classList.contains(MENTION_CLASS) || currentValue.classList.contains(MENTION_CLASS_IN_INPUT))\n ? currentValue\n : currentValue.querySelector(MENTION_CLASS_COMBINED_QUERY);\n }\n\n // if mentionNode is not null, it is a mention\n if (mentionNode) {\n const text = (currentValue as HTMLSpanElement)?.innerText;\n const userId = mentionNode.dataset?.userid;\n return [\n ...accumulator,\n {\n text,\n userId,\n },\n ];\n }\n\n return [\n ...accumulator,\n {\n text,\n },\n ];\n }, [] as Word[]);\n return templates;\n}\n\nexport function getUsersFromWords(templates: Word[], channel: GroupChannel): User[] {\n const userMap = {};\n const users = channel.members;\n templates.forEach((template) => {\n if (template.userId) {\n const mentionedMember = users.find((user) => user.userId === template.userId);\n // Object.values would return array-> [undefined] if the user is not in the channel\n if (mentionedMember) {\n userMap[template.userId] = mentionedMember;\n }\n }\n });\n return Object.values(userMap);\n}\n","import { useCallback } from 'react';\nimport DOMPurify from 'dompurify';\n\nimport { inserTemplateToDOM } from './insertTemplate';\nimport { sanitizeString } from '../../utils';\nimport { DynamicProps } from './types';\nimport {\n createPasteNode,\n hasMention,\n domToMessageTemplate,\n getUsersFromWords,\n extractTextFromNodes,\n getLeafNodes,\n} from './utils';\n\n// exported, should be backward compatible\n// conditions to test:\n// 1. paste simple text\n// 2. paste text with mention\n// 3. paste text with mention and text\n// 4. paste text with mention and text and paste again before and after\n// 5. copy message with mention(only one mention, no other text) and paste\n// 6. copy message with mention from input and paste(before and after)\nexport function usePaste({\n ref,\n setIsInput,\n setHeight,\n channel,\n setMentionedUsers,\n}: DynamicProps): (e: React.ClipboardEvent<HTMLDivElement>) => void {\n return useCallback((e) => {\n e.preventDefault();\n const html = e?.clipboardData.getData('text/html');\n // simple text, continue as normal\n if (!html) {\n const text = e?.clipboardData.getData('text');\n document.execCommand('insertHTML', false, sanitizeString(text));\n setIsInput(true);\n setHeight();\n return;\n }\n\n // has html, check if there are mentions, sanitize and insert\n const purifier = DOMPurify(window);\n const clean = purifier.sanitize(html);\n const pasteNode = createPasteNode();\n pasteNode.innerHTML = clean;\n // does not have mention, continue as normal\n if (!hasMention(pasteNode)) {\n // to preserve space between words\n const text = extractTextFromNodes(Array.from(pasteNode.children) as HTMLSpanElement[]);\n document.execCommand('insertHTML', false, sanitizeString(text));\n pasteNode.remove();\n setIsInput(true);\n setHeight();\n return;\n }\n\n // has mention, collect leaf nodes and parse words\n const leafNodes = getLeafNodes(pasteNode);\n const words = domToMessageTemplate(leafNodes);\n const mentionedUsers = getUsersFromWords(words, channel);\n\n // side effects\n setMentionedUsers(mentionedUsers);\n inserTemplateToDOM(words);\n pasteNode.remove();\n setIsInput(true);\n setHeight();\n }, [ref, setIsInput, setHeight, channel, setMentionedUsers]);\n}\n\n// to do -> In the future donot export default\nexport default usePaste;\n"],"names":["renderToString","_ref","userId","nickname","el","MENTION_USER_LABEL_CLASSNAME","purifier","DOMPurify","window","sanitized_","sanitize","token","split","spanTag","rest","sanitized","join","sanitizeString","str","replace","i","concat","charCodeAt","nodeListToArray","childNodes","Array","from","error","inserTemplateToDOM","templateList","nodes","map","template","text","renderMentionLabelToString","document","execCommand","PASTE_NODE","TEXT_MESSAGE_CLASS","MENTION_CLASS","MENTION_CLASS_IN_INPUT","MENTION_CLASS_COMBINED_QUERY","querySelectorIncludingSelf","master","selector","result","querySelectorAll","find","matches","getLeafNodes","ogMessage","OG_MESSAGE_BODY_CLASSNAME","textMessageBody","TEXT_MESSAGE_BODY_CLASSNAME","createPasteNode","pasteNode","body","querySelector","remove","node","createElement","id","style","display","hasMention","parent","extractTextFromNodes","forEach","textNodes","length","innerText","domToMessageTemplate","nodeArray","templates","reduce","accumulator","currentValue","mentionNode","Text","textContent","HTMLElement","classList","contains","_mentionNode$dataset","dataset","userid","getUsersFromWords","channel","userMap","users","members","mentionedMember","user","Object","values","usePaste","ref","setIsInput","setHeight","setMentionedUsers","useCallback","e","preventDefault","html","clipboardData","getData","clean","innerHTML","children","leafNodes","words","mentionedUsers"],"mappings":"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"}