@sendbird/uikit-react 3.6.11-beta.2 → 3.7.0-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 (994) hide show
  1. package/App.js +272 -345
  2. package/App.js.map +1 -1
  3. package/CHANGELOG.md +134 -0
  4. package/Channel/components/ChannelHeader.js +45 -50
  5. package/Channel/components/ChannelHeader.js.map +1 -1
  6. package/Channel/components/ChannelUI.js +76 -77
  7. package/Channel/components/ChannelUI.js.map +1 -1
  8. package/Channel/components/FileViewer.js +53 -58
  9. package/Channel/components/FileViewer.js.map +1 -1
  10. package/Channel/components/FrozenNotification.js +9 -12
  11. package/Channel/components/FrozenNotification.js.map +1 -1
  12. package/Channel/components/Message.js +198 -176
  13. package/Channel/components/Message.js.map +1 -1
  14. package/Channel/components/MessageInput.js +137 -130
  15. package/Channel/components/MessageInput.js.map +1 -1
  16. package/Channel/components/MessageList.js +171 -161
  17. package/Channel/components/MessageList.js.map +1 -1
  18. package/Channel/components/RemoveMessageModal.js +40 -41
  19. package/Channel/components/RemoveMessageModal.js.map +1 -1
  20. package/Channel/components/SuggestedMentionList.js +156 -136
  21. package/Channel/components/SuggestedMentionList.js.map +1 -1
  22. package/Channel/components/TypingIndicator.js +47 -48
  23. package/Channel/components/TypingIndicator.js.map +1 -1
  24. package/Channel/components/UnreadCount.js +17 -18
  25. package/Channel/components/UnreadCount.js.map +1 -1
  26. package/Channel/context.js +17 -17
  27. package/Channel/utils/compareMessagesForGrouping.js +11 -11
  28. package/Channel/utils/compareMessagesForGrouping.js.map +1 -1
  29. package/Channel/utils/getMessagePartsInfo.js +32 -26
  30. package/Channel/utils/getMessagePartsInfo.js.map +1 -1
  31. package/Channel.js +54 -51
  32. package/Channel.js.map +1 -1
  33. package/ChannelList/components/AddChannel.js +32 -30
  34. package/ChannelList/components/AddChannel.js.map +1 -1
  35. package/ChannelList/components/ChannelListHeader.js +22 -31
  36. package/ChannelList/components/ChannelListHeader.js.map +1 -1
  37. package/ChannelList/components/ChannelListUI.js +93 -88
  38. package/ChannelList/components/ChannelListUI.js.map +1 -1
  39. package/ChannelList/components/ChannelPreview.js +79 -75
  40. package/ChannelList/components/ChannelPreview.js.map +1 -1
  41. package/ChannelList/components/ChannelPreviewAction.js +85 -91
  42. package/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  43. package/ChannelList/context.js +9 -10
  44. package/ChannelList/context.js.map +1 -1
  45. package/ChannelList.js +38 -35
  46. package/ChannelList.js.map +1 -1
  47. package/ChannelListProvider-f520f5b3.js +1051 -0
  48. package/ChannelListProvider-f520f5b3.js.map +1 -0
  49. package/ChannelProvider-7f6fd1f8.js +2080 -0
  50. package/ChannelProvider-7f6fd1f8.js.map +1 -0
  51. package/ChannelSettings/components/ChannelProfile.js +42 -37
  52. package/ChannelSettings/components/ChannelProfile.js.map +1 -1
  53. package/ChannelSettings/components/ChannelSettingsUI.js +44 -47
  54. package/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  55. package/ChannelSettings/components/EditDetailsModal.js +54 -52
  56. package/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  57. package/ChannelSettings/components/LeaveChannel.js +39 -41
  58. package/ChannelSettings/components/LeaveChannel.js.map +1 -1
  59. package/ChannelSettings/components/ModerationPanel.js +552 -509
  60. package/ChannelSettings/components/ModerationPanel.js.map +1 -1
  61. package/ChannelSettings/components/UserListItem.js +66 -66
  62. package/ChannelSettings/components/UserListItem.js.map +1 -1
  63. package/ChannelSettings/components/UserPanel.js +29 -26
  64. package/ChannelSettings/components/UserPanel.js.map +1 -1
  65. package/ChannelSettings/context.js +52 -57
  66. package/ChannelSettings/context.js.map +1 -1
  67. package/ChannelSettings.js +20 -19
  68. package/ChannelSettings.js.map +1 -1
  69. package/CreateChannel/components/CreateChannelUI.js +23 -25
  70. package/CreateChannel/components/CreateChannelUI.js.map +1 -1
  71. package/CreateChannel/components/InviteUsers.js +106 -102
  72. package/CreateChannel/components/InviteUsers.js.map +1 -1
  73. package/CreateChannel/components/SelectChannelType.js +38 -43
  74. package/CreateChannel/components/SelectChannelType.js.map +1 -1
  75. package/CreateChannel/context.js +4 -4
  76. package/CreateChannel.js +22 -23
  77. package/CreateChannel.js.map +1 -1
  78. package/CreateChannelProvider-c25dd81b.js +48 -0
  79. package/{CreateChannelProvider-a2fad282.js.map → CreateChannelProvider-c25dd81b.js.map} +1 -1
  80. package/CreateOpenChannel/components/CreateOpenChannelUI.js +38 -36
  81. package/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  82. package/CreateOpenChannel/context.js +29 -34
  83. package/CreateOpenChannel/context.js.map +1 -1
  84. package/CreateOpenChannel.js +20 -21
  85. package/CreateOpenChannel.js.map +1 -1
  86. package/EditUserProfile/components/EditUserProfileUI.js +152 -21
  87. package/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  88. package/EditUserProfile/context.js +13 -13
  89. package/EditUserProfile/context.js.map +1 -1
  90. package/EditUserProfile.js +19 -19
  91. package/EditUserProfile.js.map +1 -1
  92. package/LocalizationContext-d18a86d8.js +20 -0
  93. package/{LocalizationContext-2463058b.js.map → LocalizationContext-d18a86d8.js.map} +1 -1
  94. package/MediaQueryContext-3eeeec4f.js +85 -0
  95. package/MediaQueryContext-3eeeec4f.js.map +1 -0
  96. package/MemberList-469dae9b.js +422 -0
  97. package/{MemberList-593867cb.js.map → MemberList-469dae9b.js.map} +1 -1
  98. package/Message/context.js +11 -12
  99. package/Message/context.js.map +1 -1
  100. package/Message/hooks/useDirtyGetMentions.js +21 -26
  101. package/Message/hooks/useDirtyGetMentions.js.map +1 -1
  102. package/MessageSearch/components/MessageSearchUI.js +56 -61
  103. package/MessageSearch/components/MessageSearchUI.js.map +1 -1
  104. package/MessageSearch/context.js +166 -177
  105. package/MessageSearch/context.js.map +1 -1
  106. package/MessageSearch.js +49 -47
  107. package/MessageSearch.js.map +1 -1
  108. package/OpenChannel/components/FrozenChannelNotification.js +6 -8
  109. package/OpenChannel/components/FrozenChannelNotification.js.map +1 -1
  110. package/OpenChannel/components/OpenChannelHeader.js +22 -27
  111. package/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  112. package/OpenChannel/components/OpenChannelInput.js +32 -35
  113. package/OpenChannel/components/OpenChannelInput.js.map +1 -1
  114. package/OpenChannel/components/OpenChannelMessage.js +170 -171
  115. package/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  116. package/OpenChannel/components/OpenChannelMessageList.js +70 -64
  117. package/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  118. package/OpenChannel/components/OpenChannelUI.js +53 -54
  119. package/OpenChannel/components/OpenChannelUI.js.map +1 -1
  120. package/OpenChannel/context.js +8 -9
  121. package/OpenChannel/context.js.map +1 -1
  122. package/OpenChannel.js +37 -35
  123. package/OpenChannel.js.map +1 -1
  124. package/OpenChannelList/components/OpenChannelListUI.js +63 -61
  125. package/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  126. package/OpenChannelList/components/OpenChannelPreview.js +22 -21
  127. package/OpenChannelList/components/OpenChannelPreview.js.map +1 -1
  128. package/OpenChannelList/context.js +3 -3
  129. package/OpenChannelList.js +27 -27
  130. package/OpenChannelList.js.map +1 -1
  131. package/{OpenChannelListProvider-a0a09f0b.js → OpenChannelListProvider-24e735a1.js} +156 -178
  132. package/{OpenChannelListProvider-a0a09f0b.js.map → OpenChannelListProvider-24e735a1.js.map} +1 -1
  133. package/OpenChannelProvider-e9cb0f98.js +1850 -0
  134. package/{OpenChannelProvider-3e4b8c8e.js.map → OpenChannelProvider-e9cb0f98.js.map} +1 -1
  135. package/OpenChannelSettings/components/EditDetailsModal.js +52 -51
  136. package/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  137. package/OpenChannelSettings/components/OpenChannelProfile.js +30 -29
  138. package/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  139. package/OpenChannelSettings/components/OpenChannelSettingsUI.js +39 -47
  140. package/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  141. package/OpenChannelSettings/components/OperatorUI.js +550 -518
  142. package/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  143. package/OpenChannelSettings/components/ParticipantUI.js +16 -15
  144. package/OpenChannelSettings/components/ParticipantUI.js.map +1 -1
  145. package/OpenChannelSettings/context.js +58 -57
  146. package/OpenChannelSettings/context.js.map +1 -1
  147. package/OpenChannelSettings.js +20 -19
  148. package/OpenChannelSettings.js.map +1 -1
  149. package/README.md +4 -4
  150. package/RemoveMessageModal-f0cd37a5.js +33 -0
  151. package/RemoveMessageModal-f0cd37a5.js.map +1 -0
  152. package/SendbirdProvider.js +726 -690
  153. package/SendbirdProvider.js.map +1 -1
  154. package/Thread/components/ParentMessageInfo.js +194 -181
  155. package/Thread/components/ParentMessageInfo.js.map +1 -1
  156. package/Thread/components/ParentMessageInfoItem.js +86 -79
  157. package/Thread/components/ParentMessageInfoItem.js.map +1 -1
  158. package/Thread/components/ThreadHeader.js +22 -22
  159. package/Thread/components/ThreadHeader.js.map +1 -1
  160. package/Thread/components/ThreadList.js +126 -94
  161. package/Thread/components/ThreadList.js.map +1 -1
  162. package/Thread/components/ThreadListItem.js +260 -241
  163. package/Thread/components/ThreadListItem.js.map +1 -1
  164. package/Thread/components/ThreadMessageInput.js +121 -120
  165. package/Thread/components/ThreadMessageInput.js.map +1 -1
  166. package/Thread/components/ThreadUI.js +128 -144
  167. package/Thread/components/ThreadUI.js.map +1 -1
  168. package/Thread/context/types.js +9 -9
  169. package/Thread/context/types.js.map +1 -1
  170. package/Thread/context.js +1678 -19
  171. package/Thread/context.js.map +1 -1
  172. package/Thread.js +76 -73
  173. package/Thread.js.map +1 -1
  174. package/UserProfileContext-26e71f9a.js +34 -0
  175. package/UserProfileContext-26e71f9a.js.map +1 -0
  176. package/VoicePlayer/context.js +3 -3
  177. package/VoicePlayer/useVoicePlayer.js +52 -46
  178. package/VoicePlayer/useVoicePlayer.js.map +1 -1
  179. package/VoiceRecorder/context.js +68 -64
  180. package/VoiceRecorder/context.js.map +1 -1
  181. package/VoiceRecorder/useVoiceRecorder.js +50 -52
  182. package/VoiceRecorder/useVoiceRecorder.js.map +1 -1
  183. package/{WebAudioUtils-f9386235.js → WebAudioUtils-dbb010a5.js} +38 -38
  184. package/{WebAudioUtils-f9386235.js.map → WebAudioUtils-dbb010a5.js.map} +1 -1
  185. package/{_rollupPluginBabelHelpers-50c9576f.js → _rollupPluginBabelHelpers-07dcbc2b.js} +17 -17
  186. package/_rollupPluginBabelHelpers-07dcbc2b.js.map +1 -0
  187. package/{actionTypes-501b8c11.js → actionTypes-3cd49b5c.js} +2 -2
  188. package/{actionTypes-501b8c11.js.map → actionTypes-3cd49b5c.js.map} +1 -1
  189. package/cjs/App.js +270 -344
  190. package/cjs/App.js.map +1 -1
  191. package/cjs/Channel/components/ChannelHeader.js +44 -49
  192. package/cjs/Channel/components/ChannelHeader.js.map +1 -1
  193. package/cjs/Channel/components/ChannelUI.js +79 -80
  194. package/cjs/Channel/components/ChannelUI.js.map +1 -1
  195. package/cjs/Channel/components/FileViewer.js +52 -57
  196. package/cjs/Channel/components/FileViewer.js.map +1 -1
  197. package/cjs/Channel/components/FrozenNotification.js +9 -12
  198. package/cjs/Channel/components/FrozenNotification.js.map +1 -1
  199. package/cjs/Channel/components/Message.js +197 -175
  200. package/cjs/Channel/components/Message.js.map +1 -1
  201. package/cjs/Channel/components/MessageInput.js +136 -129
  202. package/cjs/Channel/components/MessageInput.js.map +1 -1
  203. package/cjs/Channel/components/MessageList.js +173 -163
  204. package/cjs/Channel/components/MessageList.js.map +1 -1
  205. package/cjs/Channel/components/RemoveMessageModal.js +41 -42
  206. package/cjs/Channel/components/RemoveMessageModal.js.map +1 -1
  207. package/cjs/Channel/components/SuggestedMentionList.js +155 -135
  208. package/cjs/Channel/components/SuggestedMentionList.js.map +1 -1
  209. package/cjs/Channel/components/TypingIndicator.js +46 -47
  210. package/cjs/Channel/components/TypingIndicator.js.map +1 -1
  211. package/cjs/Channel/components/UnreadCount.js +17 -18
  212. package/cjs/Channel/components/UnreadCount.js.map +1 -1
  213. package/cjs/Channel/context.js +17 -17
  214. package/cjs/Channel/utils/compareMessagesForGrouping.js +11 -11
  215. package/cjs/Channel/utils/compareMessagesForGrouping.js.map +1 -1
  216. package/cjs/Channel/utils/getMessagePartsInfo.js +32 -26
  217. package/cjs/Channel/utils/getMessagePartsInfo.js.map +1 -1
  218. package/cjs/Channel.js +54 -51
  219. package/cjs/Channel.js.map +1 -1
  220. package/cjs/ChannelList/components/AddChannel.js +31 -29
  221. package/cjs/ChannelList/components/AddChannel.js.map +1 -1
  222. package/cjs/ChannelList/components/ChannelListHeader.js +21 -30
  223. package/cjs/ChannelList/components/ChannelListHeader.js.map +1 -1
  224. package/cjs/ChannelList/components/ChannelListUI.js +96 -91
  225. package/cjs/ChannelList/components/ChannelListUI.js.map +1 -1
  226. package/cjs/ChannelList/components/ChannelPreview.js +78 -74
  227. package/cjs/ChannelList/components/ChannelPreview.js.map +1 -1
  228. package/cjs/ChannelList/components/ChannelPreviewAction.js +84 -91
  229. package/cjs/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  230. package/cjs/ChannelList/context.js +9 -10
  231. package/cjs/ChannelList/context.js.map +1 -1
  232. package/cjs/ChannelList.js +38 -35
  233. package/cjs/ChannelList.js.map +1 -1
  234. package/cjs/ChannelListProvider-a418de2e.js +1060 -0
  235. package/cjs/ChannelListProvider-a418de2e.js.map +1 -0
  236. package/cjs/ChannelProvider-7fa98120.js +2088 -0
  237. package/cjs/ChannelProvider-7fa98120.js.map +1 -0
  238. package/cjs/ChannelSettings/components/ChannelProfile.js +41 -36
  239. package/cjs/ChannelSettings/components/ChannelProfile.js.map +1 -1
  240. package/cjs/ChannelSettings/components/ChannelSettingsUI.js +44 -47
  241. package/cjs/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  242. package/cjs/ChannelSettings/components/EditDetailsModal.js +54 -52
  243. package/cjs/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  244. package/cjs/ChannelSettings/components/LeaveChannel.js +38 -40
  245. package/cjs/ChannelSettings/components/LeaveChannel.js.map +1 -1
  246. package/cjs/ChannelSettings/components/ModerationPanel.js +559 -516
  247. package/cjs/ChannelSettings/components/ModerationPanel.js.map +1 -1
  248. package/cjs/ChannelSettings/components/UserListItem.js +66 -66
  249. package/cjs/ChannelSettings/components/UserListItem.js.map +1 -1
  250. package/cjs/ChannelSettings/components/UserPanel.js +29 -26
  251. package/cjs/ChannelSettings/components/UserPanel.js.map +1 -1
  252. package/cjs/ChannelSettings/context.js +51 -56
  253. package/cjs/ChannelSettings/context.js.map +1 -1
  254. package/cjs/ChannelSettings.js +20 -19
  255. package/cjs/ChannelSettings.js.map +1 -1
  256. package/cjs/CreateChannel/components/CreateChannelUI.js +23 -25
  257. package/cjs/CreateChannel/components/CreateChannelUI.js.map +1 -1
  258. package/cjs/CreateChannel/components/InviteUsers.js +106 -102
  259. package/cjs/CreateChannel/components/InviteUsers.js.map +1 -1
  260. package/cjs/CreateChannel/components/SelectChannelType.js +37 -42
  261. package/cjs/CreateChannel/components/SelectChannelType.js.map +1 -1
  262. package/cjs/CreateChannel/context.js +4 -4
  263. package/cjs/CreateChannel.js +22 -23
  264. package/cjs/CreateChannel.js.map +1 -1
  265. package/cjs/CreateChannelProvider-70c9cb7c.js +55 -0
  266. package/cjs/{CreateChannelProvider-8b8a557c.js.map → CreateChannelProvider-70c9cb7c.js.map} +1 -1
  267. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js +39 -37
  268. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  269. package/cjs/CreateOpenChannel/context.js +28 -33
  270. package/cjs/CreateOpenChannel/context.js.map +1 -1
  271. package/cjs/CreateOpenChannel.js +20 -21
  272. package/cjs/CreateOpenChannel.js.map +1 -1
  273. package/cjs/EditUserProfile/components/EditUserProfileUI.js +153 -22
  274. package/cjs/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  275. package/cjs/EditUserProfile/context.js +13 -13
  276. package/cjs/EditUserProfile/context.js.map +1 -1
  277. package/cjs/EditUserProfile.js +21 -21
  278. package/cjs/EditUserProfile.js.map +1 -1
  279. package/cjs/{LocalizationContext-482c1343.js → LocalizationContext-5009012e.js} +9 -9
  280. package/cjs/{LocalizationContext-482c1343.js.map → LocalizationContext-5009012e.js.map} +1 -1
  281. package/cjs/MediaQueryContext-d6fdbe43.js +92 -0
  282. package/cjs/MediaQueryContext-d6fdbe43.js.map +1 -0
  283. package/cjs/MemberList-529a0086.js +428 -0
  284. package/cjs/{MemberList-26b8de48.js.map → MemberList-529a0086.js.map} +1 -1
  285. package/cjs/Message/context.js +11 -12
  286. package/cjs/Message/context.js.map +1 -1
  287. package/cjs/Message/hooks/useDirtyGetMentions.js +21 -26
  288. package/cjs/Message/hooks/useDirtyGetMentions.js.map +1 -1
  289. package/cjs/MessageSearch/components/MessageSearchUI.js +60 -65
  290. package/cjs/MessageSearch/components/MessageSearchUI.js.map +1 -1
  291. package/cjs/MessageSearch/context.js +165 -176
  292. package/cjs/MessageSearch/context.js.map +1 -1
  293. package/cjs/MessageSearch.js +49 -47
  294. package/cjs/MessageSearch.js.map +1 -1
  295. package/cjs/OpenChannel/components/FrozenChannelNotification.js +6 -8
  296. package/cjs/OpenChannel/components/FrozenChannelNotification.js.map +1 -1
  297. package/cjs/OpenChannel/components/OpenChannelHeader.js +22 -27
  298. package/cjs/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  299. package/cjs/OpenChannel/components/OpenChannelInput.js +32 -35
  300. package/cjs/OpenChannel/components/OpenChannelInput.js.map +1 -1
  301. package/cjs/OpenChannel/components/OpenChannelMessage.js +169 -170
  302. package/cjs/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  303. package/cjs/OpenChannel/components/OpenChannelMessageList.js +69 -63
  304. package/cjs/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  305. package/cjs/OpenChannel/components/OpenChannelUI.js +56 -57
  306. package/cjs/OpenChannel/components/OpenChannelUI.js.map +1 -1
  307. package/cjs/OpenChannel/context.js +8 -9
  308. package/cjs/OpenChannel/context.js.map +1 -1
  309. package/cjs/OpenChannel.js +37 -35
  310. package/cjs/OpenChannel.js.map +1 -1
  311. package/cjs/OpenChannelList/components/OpenChannelListUI.js +66 -64
  312. package/cjs/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  313. package/cjs/OpenChannelList/components/OpenChannelPreview.js +22 -21
  314. package/cjs/OpenChannelList/components/OpenChannelPreview.js.map +1 -1
  315. package/cjs/OpenChannelList/context.js +3 -3
  316. package/cjs/OpenChannelList.js +27 -27
  317. package/cjs/OpenChannelList.js.map +1 -1
  318. package/cjs/OpenChannelListProvider-0b8cd3bf.js +416 -0
  319. package/cjs/{OpenChannelListProvider-2e3ee48d.js.map → OpenChannelListProvider-0b8cd3bf.js.map} +1 -1
  320. package/cjs/OpenChannelProvider-d8cc11fe.js +1859 -0
  321. package/cjs/{OpenChannelProvider-8577ea58.js.map → OpenChannelProvider-d8cc11fe.js.map} +1 -1
  322. package/cjs/OpenChannelSettings/components/EditDetailsModal.js +53 -52
  323. package/cjs/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  324. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +29 -28
  325. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  326. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +40 -48
  327. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  328. package/cjs/OpenChannelSettings/components/OperatorUI.js +557 -525
  329. package/cjs/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  330. package/cjs/OpenChannelSettings/components/ParticipantUI.js +16 -15
  331. package/cjs/OpenChannelSettings/components/ParticipantUI.js.map +1 -1
  332. package/cjs/OpenChannelSettings/context.js +57 -56
  333. package/cjs/OpenChannelSettings/context.js.map +1 -1
  334. package/cjs/OpenChannelSettings.js +20 -19
  335. package/cjs/OpenChannelSettings.js.map +1 -1
  336. package/cjs/RemoveMessageModal-f029d40e.js +39 -0
  337. package/cjs/RemoveMessageModal-f029d40e.js.map +1 -0
  338. package/cjs/SendbirdProvider.js +733 -693
  339. package/cjs/SendbirdProvider.js.map +1 -1
  340. package/cjs/Thread/components/ParentMessageInfo.js +193 -180
  341. package/cjs/Thread/components/ParentMessageInfo.js.map +1 -1
  342. package/cjs/Thread/components/ParentMessageInfoItem.js +86 -79
  343. package/cjs/Thread/components/ParentMessageInfoItem.js.map +1 -1
  344. package/cjs/Thread/components/ThreadHeader.js +22 -22
  345. package/cjs/Thread/components/ThreadHeader.js.map +1 -1
  346. package/cjs/Thread/components/ThreadList.js +125 -93
  347. package/cjs/Thread/components/ThreadList.js.map +1 -1
  348. package/cjs/Thread/components/ThreadListItem.js +263 -244
  349. package/cjs/Thread/components/ThreadListItem.js.map +1 -1
  350. package/cjs/Thread/components/ThreadMessageInput.js +120 -119
  351. package/cjs/Thread/components/ThreadMessageInput.js.map +1 -1
  352. package/cjs/Thread/components/ThreadUI.js +134 -150
  353. package/cjs/Thread/components/ThreadUI.js.map +1 -1
  354. package/cjs/Thread/context/types.js +9 -13
  355. package/cjs/Thread/context/types.js.map +1 -1
  356. package/cjs/Thread/context.js +1680 -21
  357. package/cjs/Thread/context.js.map +1 -1
  358. package/cjs/Thread.js +76 -73
  359. package/cjs/Thread.js.map +1 -1
  360. package/cjs/UserProfileContext-922a43ec.js +41 -0
  361. package/cjs/UserProfileContext-922a43ec.js.map +1 -0
  362. package/cjs/VoicePlayer/context.js +3 -3
  363. package/cjs/VoicePlayer/useVoicePlayer.js +52 -46
  364. package/cjs/VoicePlayer/useVoicePlayer.js.map +1 -1
  365. package/cjs/VoiceRecorder/context.js +67 -63
  366. package/cjs/VoiceRecorder/context.js.map +1 -1
  367. package/cjs/VoiceRecorder/useVoiceRecorder.js +49 -51
  368. package/cjs/VoiceRecorder/useVoiceRecorder.js.map +1 -1
  369. package/cjs/{WebAudioUtils-142344fd.js → WebAudioUtils-29717597.js} +38 -38
  370. package/cjs/{WebAudioUtils-142344fd.js.map → WebAudioUtils-29717597.js.map} +1 -1
  371. package/cjs/{_rollupPluginBabelHelpers-83d7e84b.js → _rollupPluginBabelHelpers-94c18dc1.js} +16 -17
  372. package/cjs/_rollupPluginBabelHelpers-94c18dc1.js.map +1 -0
  373. package/cjs/{actionTypes-1d118952.js → actionTypes-7fa02f94.js} +2 -2
  374. package/cjs/{actionTypes-1d118952.js.map → actionTypes-7fa02f94.js.map} +1 -1
  375. package/cjs/{color-d83b77ac.js → color-477ddbd4.js} +12 -13
  376. package/cjs/color-477ddbd4.js.map +1 -0
  377. package/cjs/{compareIds-bef997cb.js → compareIds-de541666.js} +7 -6
  378. package/cjs/compareIds-de541666.js.map +1 -0
  379. package/cjs/{const-1726bde0.js → const-640252c1.js} +4 -4
  380. package/cjs/{const-1726bde0.js.map → const-640252c1.js.map} +1 -1
  381. package/cjs/const-9def5c09.js +19 -0
  382. package/cjs/{const-67ff9e34.js.map → const-9def5c09.js.map} +1 -1
  383. package/cjs/consts-54f5c12d.js +6 -0
  384. package/cjs/consts-54f5c12d.js.map +1 -0
  385. package/cjs/consts-85cd42fa.js +6 -0
  386. package/cjs/{consts-bf228385.js.map → consts-85cd42fa.js.map} +1 -1
  387. package/cjs/{consts-fb07c671.js → consts-95462b21.js} +18 -25
  388. package/cjs/{consts-fb07c671.js.map → consts-95462b21.js.map} +1 -1
  389. package/cjs/consts-a3b7ae99.js +6 -0
  390. package/cjs/{consts-d3b53f23.js.map → consts-a3b7ae99.js.map} +1 -1
  391. package/cjs/{context-bd2878ff.js → context-9814fafe.js} +5 -6
  392. package/cjs/{context-bd2878ff.js.map → context-9814fafe.js.map} +1 -1
  393. package/cjs/dist/index.css +110 -95
  394. package/cjs/dist/index.css.map +1 -1
  395. package/cjs/handlers/OpenChannelHandler.js.map +1 -1
  396. package/cjs/handlers/SessionHandler.js.map +1 -1
  397. package/cjs/hooks/useModal.js +84 -0
  398. package/cjs/hooks/useModal.js.map +1 -0
  399. package/cjs/{index-81baccd0.js → index-0a25b9b2.js} +166 -154
  400. package/cjs/index-0a25b9b2.js.map +1 -0
  401. package/cjs/index-0ec5a831.js +308 -0
  402. package/cjs/{index-1f6b30ea.js.map → index-0ec5a831.js.map} +1 -1
  403. package/cjs/{index-18720f0d.js → index-35820a94.js} +2 -2
  404. package/cjs/{index-18720f0d.js.map → index-35820a94.js.map} +1 -1
  405. package/cjs/index-609b07a2.js +7 -0
  406. package/cjs/index-609b07a2.js.map +1 -0
  407. package/cjs/index-6b0644d7.js +369 -0
  408. package/cjs/index-6b0644d7.js.map +1 -0
  409. package/cjs/{index-857630c5.js → index-7b0c6630.js} +104 -114
  410. package/cjs/index-7b0c6630.js.map +1 -0
  411. package/cjs/index-80a11b6a.js +197 -0
  412. package/cjs/{index-6ab9a40d.js.map → index-80a11b6a.js.map} +1 -1
  413. package/cjs/{index-4eb7e2b5.js → index-826b76d5.js} +2 -4
  414. package/cjs/index-826b76d5.js.map +1 -0
  415. package/cjs/{index-11f9cc0f.js → index-83d2aed9.js} +3 -12
  416. package/cjs/index-83d2aed9.js.map +1 -0
  417. package/cjs/index-aeb36f01.js +173 -0
  418. package/cjs/index-aeb36f01.js.map +1 -0
  419. package/cjs/{index-c9b003b3.js → index-b6d51e74.js} +56 -193
  420. package/cjs/index-b6d51e74.js.map +1 -0
  421. package/cjs/index-b995f638.js +741 -0
  422. package/cjs/index-b995f638.js.map +1 -0
  423. package/cjs/{index-759f2a26.js → index-bdf7089c.js} +72 -80
  424. package/cjs/{index-759f2a26.js.map → index-bdf7089c.js.map} +1 -1
  425. package/cjs/{index-7c374c20.js → index-c22e0cbf.js} +25 -28
  426. package/cjs/{index-7c374c20.js.map → index-c22e0cbf.js.map} +1 -1
  427. package/cjs/index-daf80c58.js +20 -0
  428. package/cjs/index-daf80c58.js.map +1 -0
  429. package/cjs/index-e81e2882.js +59 -0
  430. package/cjs/{index-2ab19f9b.js.map → index-e81e2882.js.map} +1 -1
  431. package/cjs/{index-91b4af96.js → index-ee3bf381.js} +39 -37
  432. package/cjs/{index-91b4af96.js.map → index-ee3bf381.js.map} +1 -1
  433. package/cjs/{index-d04f312e.js → index-fd8a0abb.js} +10 -30
  434. package/cjs/index-fd8a0abb.js.map +1 -0
  435. package/cjs/index.js +66 -63
  436. package/cjs/index.js.map +1 -1
  437. package/cjs/lame.all.js.map +1 -1
  438. package/cjs/package.json +2 -49
  439. package/cjs/{topics-adde627b.js → pubSub/topics.js} +6 -2
  440. package/cjs/pubSub/topics.js.map +1 -0
  441. package/cjs/{resolvedReplyType-85b4bd7c.js → resolvedReplyType-c20ef661.js} +1 -1
  442. package/cjs/{resolvedReplyType-85b4bd7c.js.map → resolvedReplyType-c20ef661.js.map} +1 -1
  443. package/cjs/sendbirdSelectors.js +381 -332
  444. package/cjs/sendbirdSelectors.js.map +1 -1
  445. package/cjs/stringFormatterUtils-e324636c.js +16 -0
  446. package/cjs/{stringFormatterUtils-8d6592ca.js.map → stringFormatterUtils-e324636c.js.map} +1 -1
  447. package/cjs/{stringSet-d00535a5.js → stringSet-98b52c49.js} +9 -2
  448. package/cjs/stringSet-98b52c49.js.map +1 -0
  449. package/cjs/{tokenize-9296fc47.js → tokenize-91bdbeb0.js} +56 -61
  450. package/cjs/{tokenize-9296fc47.js.map → tokenize-91bdbeb0.js.map} +1 -1
  451. package/cjs/tslib.es6-2f2b0bca.js +102 -0
  452. package/cjs/tslib.es6-2f2b0bca.js.map +1 -0
  453. package/cjs/types-31ed2276.js +11 -0
  454. package/cjs/types-31ed2276.js.map +1 -0
  455. package/cjs/types-66554668.js +15 -0
  456. package/cjs/types-66554668.js.map +1 -0
  457. package/cjs/ui/Accordion.js +18 -19
  458. package/cjs/ui/Accordion.js.map +1 -1
  459. package/cjs/ui/AccordionGroup.js +11 -10
  460. package/cjs/ui/AccordionGroup.js.map +1 -1
  461. package/cjs/ui/AdminMessage.js +10 -10
  462. package/cjs/ui/AdminMessage.js.map +1 -1
  463. package/cjs/ui/Avatar.js +59 -55
  464. package/cjs/ui/Avatar.js.map +1 -1
  465. package/cjs/ui/Badge.js +15 -16
  466. package/cjs/ui/Badge.js.map +1 -1
  467. package/cjs/ui/BottomSheet.js +15 -17
  468. package/cjs/ui/BottomSheet.js.map +1 -1
  469. package/cjs/ui/Button.js +31 -33
  470. package/cjs/ui/Button.js.map +1 -1
  471. package/cjs/ui/ChannelAvatar.js +41 -38
  472. package/cjs/ui/ChannelAvatar.js.map +1 -1
  473. package/cjs/ui/Checkbox.js +10 -9
  474. package/cjs/ui/Checkbox.js.map +1 -1
  475. package/cjs/ui/ConnectionStatus.js +5 -7
  476. package/cjs/ui/ConnectionStatus.js.map +1 -1
  477. package/cjs/ui/ContextMenu.js +143 -144
  478. package/cjs/ui/ContextMenu.js.map +1 -1
  479. package/cjs/ui/DateSeparator.js +14 -12
  480. package/cjs/ui/DateSeparator.js.map +1 -1
  481. package/cjs/ui/EmojiReactions.js +206 -176
  482. package/cjs/ui/EmojiReactions.js.map +1 -1
  483. package/cjs/ui/FileMessageItemBody.js +23 -23
  484. package/cjs/ui/FileMessageItemBody.js.map +1 -1
  485. package/cjs/ui/FileViewer.js +14 -12
  486. package/cjs/ui/FileViewer.js.map +1 -1
  487. package/cjs/ui/Icon.js +16 -16
  488. package/cjs/ui/Icon.js.map +1 -1
  489. package/cjs/ui/IconButton.js +28 -20
  490. package/cjs/ui/IconButton.js.map +1 -1
  491. package/cjs/ui/ImageRenderer.js +84 -64
  492. package/cjs/ui/ImageRenderer.js.map +1 -1
  493. package/cjs/ui/Input.js +14 -16
  494. package/cjs/ui/Input.js.map +1 -1
  495. package/cjs/ui/Label.js +2 -2
  496. package/cjs/ui/LinkLabel.js +2 -2
  497. package/cjs/ui/LinkLabel.js.map +1 -1
  498. package/cjs/ui/Loader.js +12 -10
  499. package/cjs/ui/Loader.js.map +1 -1
  500. package/cjs/ui/MentionLabel.js +63 -59
  501. package/cjs/ui/MentionLabel.js.map +1 -1
  502. package/cjs/ui/MentionUserLabel.js +10 -10
  503. package/cjs/ui/MentionUserLabel.js.map +1 -1
  504. package/cjs/ui/MessageContent.js +187 -171
  505. package/cjs/ui/MessageContent.js.map +1 -1
  506. package/cjs/ui/MessageInput/hooks/usePaste.js +5 -4
  507. package/cjs/ui/MessageInput/hooks/usePaste.js.map +1 -1
  508. package/cjs/ui/MessageInput.js +55 -57
  509. package/cjs/ui/MessageInput.js.map +1 -1
  510. package/cjs/ui/MessageItemMenu.js +93 -72
  511. package/cjs/ui/MessageItemMenu.js.map +1 -1
  512. package/cjs/ui/MessageItemReactionMenu.js +64 -56
  513. package/cjs/ui/MessageItemReactionMenu.js.map +1 -1
  514. package/cjs/ui/MessageSearchFileItem.js +40 -49
  515. package/cjs/ui/MessageSearchFileItem.js.map +1 -1
  516. package/cjs/ui/MessageSearchItem.js +32 -40
  517. package/cjs/ui/MessageSearchItem.js.map +1 -1
  518. package/cjs/ui/MessageStatus.js +11 -11
  519. package/cjs/ui/Modal.js +57 -59
  520. package/cjs/ui/Modal.js.map +1 -1
  521. package/cjs/ui/MutedAvatarOverlay.js +10 -10
  522. package/cjs/ui/MutedAvatarOverlay.js.map +1 -1
  523. package/cjs/ui/OGMessageItemBody.js +47 -47
  524. package/cjs/ui/OGMessageItemBody.js.map +1 -1
  525. package/cjs/ui/OpenChannelAdminMessage.js +7 -8
  526. package/cjs/ui/OpenChannelAdminMessage.js.map +1 -1
  527. package/cjs/ui/OpenChannelAvatar.js +17 -18
  528. package/cjs/ui/OpenChannelAvatar.js.map +1 -1
  529. package/cjs/ui/OpenchannelConversationHeader.js +13 -17
  530. package/cjs/ui/OpenchannelConversationHeader.js.map +1 -1
  531. package/cjs/ui/OpenchannelFileMessage.js +147 -139
  532. package/cjs/ui/OpenchannelFileMessage.js.map +1 -1
  533. package/cjs/ui/OpenchannelOGMessage.js +185 -178
  534. package/cjs/ui/OpenchannelOGMessage.js.map +1 -1
  535. package/cjs/ui/OpenchannelThumbnailMessage.js +220 -213
  536. package/cjs/ui/OpenchannelThumbnailMessage.js.map +1 -1
  537. package/cjs/ui/OpenchannelUserMessage.js +172 -164
  538. package/cjs/ui/OpenchannelUserMessage.js.map +1 -1
  539. package/cjs/ui/PlaceHolder.js +108 -10
  540. package/cjs/ui/PlaceHolder.js.map +1 -1
  541. package/cjs/ui/PlaybackTime.js +16 -15
  542. package/cjs/ui/PlaybackTime.js.map +1 -1
  543. package/cjs/ui/ProgressBar.js +15 -13
  544. package/cjs/ui/ProgressBar.js.map +1 -1
  545. package/cjs/ui/QuoteMessage.js +41 -44
  546. package/cjs/ui/QuoteMessage.js.map +1 -1
  547. package/cjs/ui/QuoteMessageInput.js +45 -31
  548. package/cjs/ui/QuoteMessageInput.js.map +1 -1
  549. package/cjs/ui/ReactionBadge.js +17 -13
  550. package/cjs/ui/ReactionBadge.js.map +1 -1
  551. package/cjs/ui/ReactionButton.js +19 -19
  552. package/cjs/ui/ReactionButton.js.map +1 -1
  553. package/cjs/ui/SortByRow.js +14 -14
  554. package/cjs/ui/SortByRow.js.map +1 -1
  555. package/cjs/ui/TextButton.js +21 -13
  556. package/cjs/ui/TextButton.js.map +1 -1
  557. package/cjs/ui/TextMessageItemBody.js +33 -31
  558. package/cjs/ui/TextMessageItemBody.js.map +1 -1
  559. package/cjs/ui/ThreadReplies.js +21 -25
  560. package/cjs/ui/ThreadReplies.js.map +1 -1
  561. package/cjs/ui/ThumbnailMessageItemBody.js +37 -28
  562. package/cjs/ui/ThumbnailMessageItemBody.js.map +1 -1
  563. package/cjs/ui/Toggle.js +85 -77
  564. package/cjs/ui/Toggle.js.map +1 -1
  565. package/cjs/ui/Tooltip.js +9 -8
  566. package/cjs/ui/Tooltip.js.map +1 -1
  567. package/cjs/ui/TooltipWrapper.js +18 -17
  568. package/cjs/ui/TooltipWrapper.js.map +1 -1
  569. package/cjs/ui/UnknownMessageItemBody.js +19 -20
  570. package/cjs/ui/UnknownMessageItemBody.js.map +1 -1
  571. package/cjs/ui/UserListItem.js +80 -75
  572. package/cjs/ui/UserListItem.js.map +1 -1
  573. package/cjs/ui/UserProfile.js +28 -33
  574. package/cjs/ui/UserProfile.js.map +1 -1
  575. package/cjs/ui/VoiceMessageItemBody.js +49 -43
  576. package/cjs/ui/VoiceMessageItemBody.js.map +1 -1
  577. package/cjs/ui/VoiceMessgeInput.js +8 -7
  578. package/cjs/ui/VoiceMessgeInput.js.map +1 -1
  579. package/cjs/ui/Word.js +29 -27
  580. package/cjs/ui/Word.js.map +1 -1
  581. package/cjs/{useHandleUploadFiles-b2fc56e5.js → useHandleUploadFiles-fbe6ad64.js} +114 -127
  582. package/cjs/useHandleUploadFiles-fbe6ad64.js.map +1 -0
  583. package/cjs/useLongPress-c1da8ba7.js +105 -0
  584. package/cjs/useLongPress-c1da8ba7.js.map +1 -0
  585. package/cjs/useSendMultipleFilesMessage-87e0ffa3.js +316 -0
  586. package/cjs/useSendMultipleFilesMessage-87e0ffa3.js.map +1 -0
  587. package/cjs/useSendbirdStateContext.js +8 -3
  588. package/cjs/useSendbirdStateContext.js.map +1 -1
  589. package/cjs/useStatefulFileInfoList-aa70b6b9.js +228 -0
  590. package/cjs/useStatefulFileInfoList-aa70b6b9.js.map +1 -0
  591. package/cjs/utils/message/getOutgoingMessageState.js +14 -16
  592. package/cjs/utils/message/getOutgoingMessageState.js.map +1 -1
  593. package/cjs/utils/message/isVoiceMessage.js +4 -4
  594. package/cjs/utils/message/isVoiceMessage.js.map +1 -1
  595. package/cjs/utils-0fac6ad1.js +27 -0
  596. package/cjs/utils-0fac6ad1.js.map +1 -0
  597. package/cjs/utils-180c6bc8.js +10 -0
  598. package/cjs/utils-180c6bc8.js.map +1 -0
  599. package/cjs/{utils-991911af.js → utils-46483130.js} +3 -3
  600. package/cjs/{utils-991911af.js.map → utils-46483130.js.map} +1 -1
  601. package/cjs/utils-55fc6797.js +170 -0
  602. package/cjs/utils-55fc6797.js.map +1 -0
  603. package/cjs/utils-851724e0.js +62 -0
  604. package/cjs/utils-851724e0.js.map +1 -0
  605. package/cjs/utils-e313131f.js +35 -0
  606. package/cjs/utils-e313131f.js.map +1 -0
  607. package/cjs/uuid-c74bbbb6.js +17 -0
  608. package/cjs/{uuid-b2806cf5.js.map → uuid-c74bbbb6.js.map} +1 -1
  609. package/cjs/withSendbird.js +16 -22
  610. package/cjs/withSendbird.js.map +1 -1
  611. package/{color-b7f211a8.js → color-1383d4ab.js} +5 -5
  612. package/{color-b7f211a8.js.map → color-1383d4ab.js.map} +1 -1
  613. package/compareIds-b56b02f1.js +16 -0
  614. package/compareIds-b56b02f1.js.map +1 -0
  615. package/{const-74ec9eb4.js → const-4bc3721f.js} +4 -4
  616. package/{const-74ec9eb4.js.map → const-4bc3721f.js.map} +1 -1
  617. package/const-e3326913.js +13 -0
  618. package/{const-711048c3.js.map → const-e3326913.js.map} +1 -1
  619. package/consts-7f4d53a3.js +4 -0
  620. package/consts-7f4d53a3.js.map +1 -0
  621. package/consts-833420ed.js +4 -0
  622. package/{consts-6ee24012.js.map → consts-833420ed.js.map} +1 -1
  623. package/consts-aa64aca8.js +30 -0
  624. package/{consts-691a3935.js.map → consts-aa64aca8.js.map} +1 -1
  625. package/consts-f0ba9b80.js +4 -0
  626. package/consts-f0ba9b80.js.map +1 -0
  627. package/context-ae47ac54.js +12 -0
  628. package/{context-b4c70964.js.map → context-ae47ac54.js.map} +1 -1
  629. package/dist/index.css +110 -95
  630. package/dist/index.css.map +1 -1
  631. package/handlers/OpenChannelHandler.js.map +1 -1
  632. package/handlers/SessionHandler.js.map +1 -1
  633. package/hooks/useModal.js +73 -0
  634. package/hooks/useModal.js.map +1 -0
  635. package/{index-aa520474.js → index-12103973.js} +2 -2
  636. package/{index-aa520474.js.map → index-12103973.js.map} +1 -1
  637. package/index-124a5766.js +298 -0
  638. package/{index-e15f6b6a.js.map → index-124a5766.js.map} +1 -1
  639. package/{index-13401b87.js → index-1432c287.js} +2 -4
  640. package/index-1432c287.js.map +1 -0
  641. package/{index-b22c4150.js → index-1969ccd8.js} +25 -28
  642. package/{index-b22c4150.js.map → index-1969ccd8.js.map} +1 -1
  643. package/index-3d508585.js +53 -0
  644. package/{index-ae7ef8cf.js.map → index-3d508585.js.map} +1 -1
  645. package/{index-8a01c364.js → index-40447645.js} +73 -81
  646. package/{index-8a01c364.js.map → index-40447645.js.map} +1 -1
  647. package/{index-c421b228.js → index-7a1085b6.js} +99 -109
  648. package/index-7a1085b6.js.map +1 -0
  649. package/index-89b3b8ba.js +362 -0
  650. package/index-89b3b8ba.js.map +1 -0
  651. package/index-8c72f0bd.js +182 -0
  652. package/{index-98138798.js.map → index-8c72f0bd.js.map} +1 -1
  653. package/index-942c5fa2.js +161 -0
  654. package/index-942c5fa2.js.map +1 -0
  655. package/index-c6095960.js +4 -0
  656. package/index-c6095960.js.map +1 -0
  657. package/index-c7ed4aef.js +13 -0
  658. package/index-c7ed4aef.js.map +1 -0
  659. package/{index-daa3ae67.js → index-c81fd6ec.js} +56 -193
  660. package/index-c81fd6ec.js.map +1 -0
  661. package/{index-7700a436.js → index-d3f61405.js} +10 -30
  662. package/index-d3f61405.js.map +1 -0
  663. package/{index-5cb32ab5.js → index-dc1827ea.js} +3 -12
  664. package/index-dc1827ea.js.map +1 -0
  665. package/{index-3530f4f6.js → index-ec0c048b.js} +39 -37
  666. package/{index-3530f4f6.js.map → index-ec0c048b.js.map} +1 -1
  667. package/{index-b25ffa7e.js → index-eec0ce47.js} +166 -154
  668. package/index-eec0ce47.js.map +1 -0
  669. package/index-fc1642cb.js +692 -0
  670. package/index-fc1642cb.js.map +1 -0
  671. package/index.d.ts +143 -79
  672. package/index.js +66 -63
  673. package/index.js.map +1 -1
  674. package/lame.all.js.map +1 -1
  675. package/package.json +3 -3
  676. package/{topics-5659403d.js → pubSub/topics.js} +4 -3
  677. package/pubSub/topics.js.map +1 -0
  678. package/{resolvedReplyType-1a128514.js → resolvedReplyType-0532593c.js} +1 -1
  679. package/{resolvedReplyType-1a128514.js.map → resolvedReplyType-0532593c.js.map} +1 -1
  680. package/sendbirdSelectors.js +381 -332
  681. package/sendbirdSelectors.js.map +1 -1
  682. package/stringFormatterUtils-444f6f4c.js +14 -0
  683. package/{stringFormatterUtils-dbad592d.js.map → stringFormatterUtils-444f6f4c.js.map} +1 -1
  684. package/{stringSet-2814bf17.js → stringSet-1106c8ec.js} +9 -2
  685. package/stringSet-1106c8ec.js.map +1 -0
  686. package/{tokenize-4b153552.js → tokenize-d17bf862.js} +56 -61
  687. package/{tokenize-4b153552.js.map → tokenize-d17bf862.js.map} +1 -1
  688. package/tslib.es6-0c779aab.js +97 -0
  689. package/tslib.es6-0c779aab.js.map +1 -0
  690. package/types-4ffc52f6.js +15 -0
  691. package/types-4ffc52f6.js.map +1 -0
  692. package/types-50e412d8.js +9 -0
  693. package/types-50e412d8.js.map +1 -0
  694. package/ui/Accordion.js +18 -19
  695. package/ui/Accordion.js.map +1 -1
  696. package/ui/AccordionGroup.js +11 -10
  697. package/ui/AccordionGroup.js.map +1 -1
  698. package/ui/AdminMessage.js +10 -10
  699. package/ui/AdminMessage.js.map +1 -1
  700. package/ui/Avatar.js +59 -55
  701. package/ui/Avatar.js.map +1 -1
  702. package/ui/Badge.js +15 -16
  703. package/ui/Badge.js.map +1 -1
  704. package/ui/BottomSheet.js +15 -17
  705. package/ui/BottomSheet.js.map +1 -1
  706. package/ui/Button.js +19 -26
  707. package/ui/Button.js.map +1 -1
  708. package/ui/ChannelAvatar.js +41 -38
  709. package/ui/ChannelAvatar.js.map +1 -1
  710. package/ui/Checkbox.js +10 -9
  711. package/ui/Checkbox.js.map +1 -1
  712. package/ui/ConnectionStatus.js +5 -7
  713. package/ui/ConnectionStatus.js.map +1 -1
  714. package/ui/ContextMenu.js +143 -144
  715. package/ui/ContextMenu.js.map +1 -1
  716. package/ui/DateSeparator.js +14 -12
  717. package/ui/DateSeparator.js.map +1 -1
  718. package/ui/EmojiReactions.js +207 -177
  719. package/ui/EmojiReactions.js.map +1 -1
  720. package/ui/FileMessageItemBody.js +23 -23
  721. package/ui/FileMessageItemBody.js.map +1 -1
  722. package/ui/FileViewer.js +14 -12
  723. package/ui/FileViewer.js.map +1 -1
  724. package/ui/Icon.js +2 -2
  725. package/ui/Icon.js.map +1 -1
  726. package/ui/IconButton.js +28 -20
  727. package/ui/IconButton.js.map +1 -1
  728. package/ui/ImageRenderer.js +84 -65
  729. package/ui/ImageRenderer.js.map +1 -1
  730. package/ui/Input.js +14 -16
  731. package/ui/Input.js.map +1 -1
  732. package/ui/Label.js +2 -2
  733. package/ui/LinkLabel.js +2 -2
  734. package/ui/LinkLabel.js.map +1 -1
  735. package/ui/Loader.js +12 -10
  736. package/ui/Loader.js.map +1 -1
  737. package/ui/MentionLabel.js +64 -60
  738. package/ui/MentionLabel.js.map +1 -1
  739. package/ui/MentionUserLabel.js +10 -10
  740. package/ui/MentionUserLabel.js.map +1 -1
  741. package/ui/MessageContent.js +186 -170
  742. package/ui/MessageContent.js.map +1 -1
  743. package/ui/MessageInput/hooks/usePaste.js +5 -4
  744. package/ui/MessageInput/hooks/usePaste.js.map +1 -1
  745. package/ui/MessageInput.js +48 -50
  746. package/ui/MessageInput.js.map +1 -1
  747. package/ui/MessageItemMenu.js +93 -72
  748. package/ui/MessageItemMenu.js.map +1 -1
  749. package/ui/MessageItemReactionMenu.js +64 -56
  750. package/ui/MessageItemReactionMenu.js.map +1 -1
  751. package/ui/MessageSearchFileItem.js +40 -49
  752. package/ui/MessageSearchFileItem.js.map +1 -1
  753. package/ui/MessageSearchItem.js +32 -40
  754. package/ui/MessageSearchItem.js.map +1 -1
  755. package/ui/MessageStatus.js +11 -11
  756. package/ui/Modal.js +57 -59
  757. package/ui/Modal.js.map +1 -1
  758. package/ui/MutedAvatarOverlay.js +10 -10
  759. package/ui/MutedAvatarOverlay.js.map +1 -1
  760. package/ui/OGMessageItemBody.js +47 -47
  761. package/ui/OGMessageItemBody.js.map +1 -1
  762. package/ui/OpenChannelAdminMessage.js +7 -8
  763. package/ui/OpenChannelAdminMessage.js.map +1 -1
  764. package/ui/OpenChannelAvatar.js +17 -18
  765. package/ui/OpenChannelAvatar.js.map +1 -1
  766. package/ui/OpenchannelConversationHeader.js +13 -17
  767. package/ui/OpenchannelConversationHeader.js.map +1 -1
  768. package/ui/OpenchannelFileMessage.js +147 -139
  769. package/ui/OpenchannelFileMessage.js.map +1 -1
  770. package/ui/OpenchannelOGMessage.js +185 -178
  771. package/ui/OpenchannelOGMessage.js.map +1 -1
  772. package/ui/OpenchannelThumbnailMessage.js +220 -213
  773. package/ui/OpenchannelThumbnailMessage.js.map +1 -1
  774. package/ui/OpenchannelUserMessage.js +172 -164
  775. package/ui/OpenchannelUserMessage.js.map +1 -1
  776. package/ui/PlaceHolder.js +106 -8
  777. package/ui/PlaceHolder.js.map +1 -1
  778. package/ui/PlaybackTime.js +16 -15
  779. package/ui/PlaybackTime.js.map +1 -1
  780. package/ui/ProgressBar.js +15 -13
  781. package/ui/ProgressBar.js.map +1 -1
  782. package/ui/QuoteMessage.js +41 -44
  783. package/ui/QuoteMessage.js.map +1 -1
  784. package/ui/QuoteMessageInput.js +45 -31
  785. package/ui/QuoteMessageInput.js.map +1 -1
  786. package/ui/ReactionBadge.js +17 -13
  787. package/ui/ReactionBadge.js.map +1 -1
  788. package/ui/ReactionButton.js +19 -19
  789. package/ui/ReactionButton.js.map +1 -1
  790. package/ui/SortByRow.js +14 -14
  791. package/ui/SortByRow.js.map +1 -1
  792. package/ui/TextButton.js +21 -13
  793. package/ui/TextButton.js.map +1 -1
  794. package/ui/TextMessageItemBody.js +33 -31
  795. package/ui/TextMessageItemBody.js.map +1 -1
  796. package/ui/ThreadReplies.js +21 -25
  797. package/ui/ThreadReplies.js.map +1 -1
  798. package/ui/ThumbnailMessageItemBody.js +37 -28
  799. package/ui/ThumbnailMessageItemBody.js.map +1 -1
  800. package/ui/Toggle.js +86 -78
  801. package/ui/Toggle.js.map +1 -1
  802. package/ui/Tooltip.js +9 -8
  803. package/ui/Tooltip.js.map +1 -1
  804. package/ui/TooltipWrapper.js +18 -17
  805. package/ui/TooltipWrapper.js.map +1 -1
  806. package/ui/UnknownMessageItemBody.js +19 -20
  807. package/ui/UnknownMessageItemBody.js.map +1 -1
  808. package/ui/UserListItem.js +80 -75
  809. package/ui/UserListItem.js.map +1 -1
  810. package/ui/UserProfile.js +29 -34
  811. package/ui/UserProfile.js.map +1 -1
  812. package/ui/VoiceMessageItemBody.js +49 -43
  813. package/ui/VoiceMessageItemBody.js.map +1 -1
  814. package/ui/VoiceMessgeInput.js +8 -7
  815. package/ui/VoiceMessgeInput.js.map +1 -1
  816. package/ui/Word.js +29 -27
  817. package/ui/Word.js.map +1 -1
  818. package/{useHandleUploadFiles-406a6c9c.js → useHandleUploadFiles-33aff88e.js} +111 -124
  819. package/useHandleUploadFiles-33aff88e.js.map +1 -0
  820. package/useLongPress-322bb6a3.js +103 -0
  821. package/useLongPress-322bb6a3.js.map +1 -0
  822. package/useSendMultipleFilesMessage-4489a0f6.js +283 -0
  823. package/useSendMultipleFilesMessage-4489a0f6.js.map +1 -0
  824. package/useSendbirdStateContext.js +5 -3
  825. package/useSendbirdStateContext.js.map +1 -1
  826. package/useStatefulFileInfoList-dd95f949.js +219 -0
  827. package/useStatefulFileInfoList-dd95f949.js.map +1 -0
  828. package/utils/message/getOutgoingMessageState.js +8 -9
  829. package/utils/message/getOutgoingMessageState.js.map +1 -1
  830. package/utils/message/isVoiceMessage.js +4 -4
  831. package/utils/message/isVoiceMessage.js.map +1 -1
  832. package/{utils-7cc92ac2.js → utils-158c1683.js} +3 -3
  833. package/{utils-7cc92ac2.js.map → utils-158c1683.js.map} +1 -1
  834. package/utils-3660243c.js +25 -0
  835. package/utils-3660243c.js.map +1 -0
  836. package/utils-40040f8e.js +157 -0
  837. package/utils-40040f8e.js.map +1 -0
  838. package/utils-48a3ef27.js +31 -0
  839. package/utils-48a3ef27.js.map +1 -0
  840. package/utils-74c161a0.js +7 -0
  841. package/utils-74c161a0.js.map +1 -0
  842. package/utils-e98a7f8c.js +57 -0
  843. package/utils-e98a7f8c.js.map +1 -0
  844. package/uuid-3c77ef7b.js +15 -0
  845. package/{uuid-16373bba.js.map → uuid-3c77ef7b.js.map} +1 -1
  846. package/withSendbird.js +16 -22
  847. package/withSendbird.js.map +1 -1
  848. package/ChannelListProvider-1188e373.js +0 -1028
  849. package/ChannelListProvider-1188e373.js.map +0 -1
  850. package/ChannelProvider-9de00431.js +0 -1933
  851. package/ChannelProvider-9de00431.js.map +0 -1
  852. package/CreateChannelProvider-a2fad282.js +0 -44
  853. package/LocalizationContext-2463058b.js +0 -20
  854. package/MediaQueryContext-e3429d12.js +0 -87
  855. package/MediaQueryContext-e3429d12.js.map +0 -1
  856. package/MemberList-593867cb.js +0 -404
  857. package/OpenChannelProvider-3e4b8c8e.js +0 -1890
  858. package/RemoveMessageModal-9162aebe.js +0 -38
  859. package/RemoveMessageModal-9162aebe.js.map +0 -1
  860. package/ThreadProvider-9a3b145f.js +0 -1778
  861. package/ThreadProvider-9a3b145f.js.map +0 -1
  862. package/UserProfileContext-4ae968eb.js +0 -41
  863. package/UserProfileContext-4ae968eb.js.map +0 -1
  864. package/_rollupPluginBabelHelpers-50c9576f.js.map +0 -1
  865. package/cjs/ChannelListProvider-e55e6242.js +0 -1037
  866. package/cjs/ChannelListProvider-e55e6242.js.map +0 -1
  867. package/cjs/ChannelProvider-6fa73019.js +0 -1941
  868. package/cjs/ChannelProvider-6fa73019.js.map +0 -1
  869. package/cjs/CreateChannelProvider-8b8a557c.js +0 -52
  870. package/cjs/MediaQueryContext-73aac8cf.js +0 -94
  871. package/cjs/MediaQueryContext-73aac8cf.js.map +0 -1
  872. package/cjs/MemberList-26b8de48.js +0 -410
  873. package/cjs/OpenChannelListProvider-2e3ee48d.js +0 -439
  874. package/cjs/OpenChannelProvider-8577ea58.js +0 -1899
  875. package/cjs/RemoveMessageModal-dfeeb36a.js +0 -44
  876. package/cjs/RemoveMessageModal-dfeeb36a.js.map +0 -1
  877. package/cjs/ThreadProvider-8b0cf491.js +0 -1787
  878. package/cjs/ThreadProvider-8b0cf491.js.map +0 -1
  879. package/cjs/UserProfileContext-fa8d0383.js +0 -49
  880. package/cjs/UserProfileContext-fa8d0383.js.map +0 -1
  881. package/cjs/_rollupPluginBabelHelpers-83d7e84b.js.map +0 -1
  882. package/cjs/color-d83b77ac.js.map +0 -1
  883. package/cjs/compareIds-bef997cb.js.map +0 -1
  884. package/cjs/const-67ff9e34.js +0 -20
  885. package/cjs/consts-b018b1ed.js +0 -6
  886. package/cjs/consts-b018b1ed.js.map +0 -1
  887. package/cjs/consts-bf228385.js +0 -6
  888. package/cjs/consts-d3b53f23.js +0 -6
  889. package/cjs/index-11f9cc0f.js.map +0 -1
  890. package/cjs/index-1a9fdbb4.js +0 -368
  891. package/cjs/index-1a9fdbb4.js.map +0 -1
  892. package/cjs/index-1f6b30ea.js +0 -330
  893. package/cjs/index-2ab19f9b.js +0 -57
  894. package/cjs/index-4b5a006d.js +0 -139
  895. package/cjs/index-4b5a006d.js.map +0 -1
  896. package/cjs/index-4eb7e2b5.js.map +0 -1
  897. package/cjs/index-56a25735.js +0 -171
  898. package/cjs/index-56a25735.js.map +0 -1
  899. package/cjs/index-6ab9a40d.js +0 -202
  900. package/cjs/index-7f41c4b6.js +0 -118
  901. package/cjs/index-7f41c4b6.js.map +0 -1
  902. package/cjs/index-81baccd0.js.map +0 -1
  903. package/cjs/index-857630c5.js.map +0 -1
  904. package/cjs/index-8ec12d1d.js +0 -164
  905. package/cjs/index-8ec12d1d.js.map +0 -1
  906. package/cjs/index-c9b003b3.js.map +0 -1
  907. package/cjs/index-cbcacbee.js +0 -9
  908. package/cjs/index-cbcacbee.js.map +0 -1
  909. package/cjs/index-d04f312e.js.map +0 -1
  910. package/cjs/index-e9ac5ae1.js +0 -58
  911. package/cjs/index-e9ac5ae1.js.map +0 -1
  912. package/cjs/index-fbe9cc73.js +0 -647
  913. package/cjs/index-fbe9cc73.js.map +0 -1
  914. package/cjs/index.module-a24e9cd7.js +0 -6
  915. package/cjs/index.module-a24e9cd7.js.map +0 -1
  916. package/cjs/stringFormatterUtils-8d6592ca.js +0 -16
  917. package/cjs/stringSet-d00535a5.js.map +0 -1
  918. package/cjs/topics-adde627b.js.map +0 -1
  919. package/cjs/types-0b5148cb.js +0 -17
  920. package/cjs/types-0b5148cb.js.map +0 -1
  921. package/cjs/useHandleUploadFiles-b2fc56e5.js.map +0 -1
  922. package/cjs/useLongPress-1c0f4696.js +0 -87
  923. package/cjs/useLongPress-1c0f4696.js.map +0 -1
  924. package/cjs/useSendMultipleFilesMessage-81cdc9d0.js +0 -109
  925. package/cjs/useSendMultipleFilesMessage-81cdc9d0.js.map +0 -1
  926. package/cjs/utils-418b4438.js +0 -62
  927. package/cjs/utils-418b4438.js.map +0 -1
  928. package/cjs/utils-5bfb4516.js +0 -35
  929. package/cjs/utils-5bfb4516.js.map +0 -1
  930. package/cjs/utils-68aa6bf6.js +0 -345
  931. package/cjs/utils-68aa6bf6.js.map +0 -1
  932. package/cjs/utils-b34d4e2c.js +0 -31
  933. package/cjs/utils-b34d4e2c.js.map +0 -1
  934. package/cjs/utils-c47c68b1.js +0 -6
  935. package/cjs/utils-c47c68b1.js.map +0 -1
  936. package/cjs/uuid-b2806cf5.js +0 -15
  937. package/compareIds-8ed6e36a.js +0 -15
  938. package/compareIds-8ed6e36a.js.map +0 -1
  939. package/const-711048c3.js +0 -13
  940. package/consts-675764c9.js +0 -4
  941. package/consts-675764c9.js.map +0 -1
  942. package/consts-691a3935.js +0 -37
  943. package/consts-6ee24012.js +0 -4
  944. package/consts-eb77e905.js +0 -4
  945. package/consts-eb77e905.js.map +0 -1
  946. package/context-b4c70964.js +0 -13
  947. package/index-128523eb.js +0 -110
  948. package/index-128523eb.js.map +0 -1
  949. package/index-13401b87.js.map +0 -1
  950. package/index-5cb32ab5.js.map +0 -1
  951. package/index-5d6a0f12.js +0 -598
  952. package/index-5d6a0f12.js.map +0 -1
  953. package/index-60a7bf91.js +0 -164
  954. package/index-60a7bf91.js.map +0 -1
  955. package/index-7700a436.js.map +0 -1
  956. package/index-7946293f.js +0 -152
  957. package/index-7946293f.js.map +0 -1
  958. package/index-7b7478f5.js +0 -132
  959. package/index-7b7478f5.js.map +0 -1
  960. package/index-82178c6a.js +0 -361
  961. package/index-82178c6a.js.map +0 -1
  962. package/index-98138798.js +0 -187
  963. package/index-98887e8d.js +0 -7
  964. package/index-98887e8d.js.map +0 -1
  965. package/index-ae7ef8cf.js +0 -51
  966. package/index-b25ffa7e.js.map +0 -1
  967. package/index-c421b228.js.map +0 -1
  968. package/index-d99155f7.js +0 -51
  969. package/index-d99155f7.js.map +0 -1
  970. package/index-daa3ae67.js.map +0 -1
  971. package/index-e15f6b6a.js +0 -320
  972. package/index.module-60af77d3.js +0 -4
  973. package/index.module-60af77d3.js.map +0 -1
  974. package/stringFormatterUtils-dbad592d.js +0 -14
  975. package/stringSet-2814bf17.js.map +0 -1
  976. package/topics-5659403d.js.map +0 -1
  977. package/types-89092633.js +0 -15
  978. package/types-89092633.js.map +0 -1
  979. package/useHandleUploadFiles-406a6c9c.js.map +0 -1
  980. package/useLongPress-5e1ad951.js +0 -85
  981. package/useLongPress-5e1ad951.js.map +0 -1
  982. package/useSendMultipleFilesMessage-a3a2c84b.js +0 -107
  983. package/useSendMultipleFilesMessage-a3a2c84b.js.map +0 -1
  984. package/utils-0c22998a.js +0 -306
  985. package/utils-0c22998a.js.map +0 -1
  986. package/utils-407da489.js +0 -4
  987. package/utils-407da489.js.map +0 -1
  988. package/utils-b97d5113.js +0 -57
  989. package/utils-b97d5113.js.map +0 -1
  990. package/utils-cae84d8a.js +0 -29
  991. package/utils-cae84d8a.js.map +0 -1
  992. package/utils-ebf008e2.js +0 -31
  993. package/utils-ebf008e2.js.map +0 -1
  994. package/uuid-16373bba.js +0 -13
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-b995f638.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 BaseMessage,\n FileMessage,\n MessageListParams,\n MultipleFilesMessage,\n Reaction,\n UploadedFileInfo,\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';\nimport { match } from 'ts-pattern';\n\n// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types\nexport const 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 'video/quicktime', // .mov\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 DOCUMENT: [\n 'text/plain',\n 'text/css',\n 'text/csv',\n 'text/html',\n 'text/calendar',\n 'text/javascript',\n 'text/xml',\n ],\n APPLICATION: [\n 'application/x-abiword',\n 'application/x-freearc',\n 'application/vnd.amazon.ebook',\n 'application/octet-stream',\n 'application/x-bzip',\n 'application/x-bzip2',\n 'application/x-cdf',\n 'application/x-csh',\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/vnd.ms-fontobject',\n 'application/epub+zip',\n 'application/gzip',\n 'application/java-archive',\n 'application/json',\n 'application/ld+json',\n 'application/vnd.apple.installer+xml',\n 'application/vnd.oasis.opendocument.presentation',\n 'application/vnd.oasis.opendocument.spreadsheet',\n 'application/vnd.oasis.opendocument.text',\n 'application/ogg',\n 'application/pdf',\n 'application/x-httpd-php',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.rar',\n 'application/rtf',\n 'application/x-sh',\n 'application/x-tar',\n 'application/vnd.visio',\n 'application/xhtml+xml',\n 'application/vnd.ms-excel',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/xml',\n 'application/vnd.mozilla.xul+xml',\n 'application/zip',\n 'application/x-7z-compressed',\n ],\n};\n\nexport const getMimeTypesUIKitAccepts = (acceptableMimeTypes?: Array<string>): string => {\n const { IMAGE, VIDEO, AUDIO } = SUPPORTED_MIMES;\n\n if (Array.isArray(acceptableMimeTypes) && acceptableMimeTypes.length > 0) {\n return (\n acceptableMimeTypes\n .reduce((accumulator: Array<string>, acceptableMimeType: string): Array<string> => (\n accumulator.concat(\n match(acceptableMimeType)\n .with('image', () => IMAGE)\n .with('video', () => VIDEO)\n .with('audio', () => AUDIO)\n .otherwise(() => []),\n )\n ), [])\n .join()\n );\n }\n return (\n Object.values(SUPPORTED_MIMES)\n .reduce((accumulator: Array<string>, mimeTypes: Array<string>) => (\n accumulator.concat(mimeTypes)\n ), [])\n .join()\n );\n // concat() is fater than flat()\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(message, '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 isImageFileInfo = (fileInfo: UploadedFileInfo): boolean => fileInfo\n && (isImage(fileInfo.mimeType) || isGif(fileInfo.mimeType));\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<SendableMessageType>): 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 });\n\n/**\n * Do not use this for MultipleFilesMessage. Use isMultipleFilesMessage() instead.\n */\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 // This is only a safeguard to not return UNKNOWN for MFM.\n if (isMultipleFilesMessage(message as FileMessage)) {\n return UIKitMessageTypes.MULTIPLE_FILES;\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};\n/**\n * @deprecated use SendingStatus of @sendbird/chat instead\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 const {\n includeEmpty,\n includeFrozen,\n searchFilter,\n userIdsFilter,\n customTypesFilter,\n channelUrlsFilter,\n customTypeStartsWithFilter,\n channelNameContainsFilter,\n nicknameContainsFilter,\n myMemberStateFilter,\n hiddenChannelFilter,\n unreadChannelFilter,\n publicChannelFilter,\n superChannelFilter,\n metadataKey = '',\n metadataValues = ['a', 'b'],\n metadataValueStartsWith,\n } = params;\n\n if (!includeEmpty && channel?.lastMessage === null) {\n return false;\n }\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 if (userIdsFilter?.userIds?.length > 0) {\n const { includeMode, queryType } = userIdsFilter;\n const userIds: Array<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 (includeEmpty === false && channel?.lastMessage === null) {\n return false;\n }\n if (includeFrozen === false && channel?.isFrozen === true) {\n return false;\n }\n if (customTypesFilter && !customTypesFilter.includes(channel?.customType)) {\n return false;\n }\n if (customTypeStartsWithFilter && !new RegExp(`^${customTypeStartsWithFilter}`).test(channel?.customType)) {\n return false;\n }\n if (channelNameContainsFilter && !channel?.name?.toLowerCase().includes(channelNameContainsFilter.toLowerCase())) {\n return false;\n }\n if (nicknameContainsFilter) {\n const lowerCasedSubString = nicknameContainsFilter.toLowerCase();\n if (channel?.members?.every((member: Member) => !member.nickname.toLowerCase().includes(lowerCasedSubString))) {\n return false;\n }\n }\n if (channelUrlsFilter && !channelUrlsFilter.includes(channel?.url)) {\n return false;\n }\n if (myMemberStateFilter) {\n switch (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 (hiddenChannelFilter) {\n switch (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 (unreadChannelFilter) {\n switch (unreadChannelFilter) {\n case 'unread_message':\n if (channel?.unreadMessageCount === 0) {\n return false;\n }\n break;\n }\n }\n if (publicChannelFilter) {\n switch (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 (superChannelFilter) {\n switch (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 const { cachedMetaData = {} } = channel;\n if (metadataKey && (metadataValues || metadataValueStartsWith)) {\n const metadataValue: string = cachedMetaData[metadataKey];\n if (!metadataValue) {\n return false;\n }\n if (metadataValues && !metadataValues.every(value => metadataValue.includes(value))) {\n return false;\n }\n if (metadataValueStartsWith && !metadataValue.startsWith(metadataValueStartsWith)) {\n return false;\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\nexport const isSendableMessage = (message?: BaseMessage | null): message is SendableMessageType => {\n return Boolean(message) && 'sender' in message;\n};\n"],"names":["SUPPORTED_MIMES","IMAGE","VIDEO","AUDIO","DOCUMENT","APPLICATION","getMimeTypesUIKitAccepts","acceptableMimeTypes","Array","isArray","length","reduce","accumulator","acceptableMimeType","concat","match","with","otherwise","join","Object","values","mimeTypes","UIKitMessageTypes","ADMIN","TEXT","FILE","MULTIPLE_FILES","THUMBNAIL","OG","UNKNOWN","UIKitFileTypes","GIF","VOICE","OTHERS","isTextuallyNull","text","isImage","type","indexOf","isVideo","isGif","isSupportedFileView","isAudio","getUIKitFileTypes","__assign","getUIKitFileType","isSentMessage","message","sendingStatus","isReadMessage","channel","getOutgoingMessageState","OutgoingMessageStates","READ","isFailedMessage","isPendingMessage","isSentStatus","state","SENT","DELIVERED","isAdminMessage","messageType","isUserMessage","isFileMessage","isMultipleFilesMessage","prototype","hasOwnProperty","call","isThreadMessage","parentMessageId","parentMessage","isOGMessage","ogMetaData","_a","url","_b","title","_c","description","_d","defaultImage","isTextMessage","isThumbnailMessage","isImageMessage","isImageFileInfo","fileInfo","mimeType","isVideoMessage","isGifMessage","isAudioMessage","isAudioMessageMimeType","test","isVoiceMessageMimeType","isVoiceMessage","_e","split","typeParameter","_f","key","value","metaArrays","find","metaArray","isEditedMessage","updatedAt","getUIKitMessageTypes","getUIKitMessageType","reducer","currentValue","__spreadArray","push","getClassName","classNames","isReactedBy","userId","reaction","userIds","some","reactorUserId","getEmojiTooltipString","memberNicknamesMap","stringSet","you","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","emojiCategories","emojiCategory","emojis","prevArr","currArr","getEmojiMapAll","emojiMap","Map","forEach","category","emoji","set","findEmojiUrl","targetKey","getEmojiUrl","emojiKey","isFindingKey","getUserName","user","friendName","nickname","getSenderName","sender","hasSameMembers","a","b","sortedA","sort","sortedB","i","isFriend","friendDiscoveryKey","filterMessageListParams","params","customTypesFilter","messageTypeFilter","customTypes","item","includes","customType","senderUserIdsFilter","messageSender","includeParentMessageInfo","filterChannelListParams","currentUserId","includeEmpty","includeFrozen","searchFilter","userIdsFilter","channelUrlsFilter","customTypeStartsWithFilter","channelNameContainsFilter","nicknameContainsFilter","myMemberStateFilter","hiddenChannelFilter","unreadChannelFilter","publicChannelFilter","superChannelFilter","_h","metadataKey","_j","metadataValues","metadataValueStartsWith","lastMessage","query","fields","searchQuery_1","searchFields","searchField","name","toLowerCase","members","member","includeMode","queryType","memberIds_1","every","isFrozen","RegExp","lowerCasedSubString_1","_g","myMemberState","inviter","isHidden","hiddenState","unreadMessageCount","isPublic","isSuper","_k","cachedMetaData","metadataValue_1","startsWith","binarySearch","list","number","pivot","leftList","slice","rightList","getChannelsWithUpsertedChannel","channels","ch","targetIndex","createdAt","StringObjType","convertWordToStringObj","word","_users","_template","users","template","resultArray","regex","excutionResult","lastIndex","template_1","endIndex","startIndex","normalText","normal","mentionedUser","mention","exec","arrayEqual","array1","array2","isSendableMessage","Boolean"],"mappings":"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"}
@@ -2,28 +2,27 @@
2
2
 
3
3
  var React = require('react');
4
4
  var DOMPurify = require('dompurify');
5
- var consts = require('./consts-b018b1ed.js');
6
- var consts$2 = require('./consts-d3b53f23.js');
7
- var consts$1 = require('./consts-bf228385.js');
5
+ var tslib_es6 = require('./tslib.es6-2f2b0bca.js');
6
+ var consts = require('./consts-54f5c12d.js');
7
+ var consts$2 = require('./consts-a3b7ae99.js');
8
+ var consts$1 = require('./consts-85cd42fa.js');
8
9
 
9
10
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
11
 
11
12
  var DOMPurify__default = /*#__PURE__*/_interopDefaultLegacy(DOMPurify);
12
13
 
13
- // cretes a sanitized string from a mention user label
14
- function renderToString(_ref) {
15
- let {
16
- userId,
17
- nickname
18
- } = _ref;
14
+ function renderToString(_a) {
15
+ var userId = _a.userId,
16
+ nickname = _a.nickname;
19
17
  // donot change this template, it wont work
20
- const el = `<span data-userid="${userId}" data-sb-mention="true" class="${consts.MENTION_USER_LABEL_CLASSNAME}">${nickname}</span>`;
21
- const purifier = DOMPurify__default["default"](window);
22
- const sanitized_ = purifier.sanitize(el);
23
- const token = sanitized_.split(' ');
24
- const [spanTag, ...rest] = token;
18
+ var el = "<span data-userid=\"".concat(userId, "\" data-sb-mention=\"true\" class=\"").concat(consts.MENTION_USER_LABEL_CLASSNAME, "\">").concat(nickname, "</span>");
19
+ var purifier = DOMPurify__default["default"](window);
20
+ var sanitized_ = purifier.sanitize(el);
21
+ var token = sanitized_.split(' ');
22
+ var spanTag = token[0],
23
+ rest = token.slice(1);
25
24
  // we do this because DOMPurify removes the contenteditable attribute
26
- const sanitized = [spanTag, 'contenteditable="false"', ...rest].join(' ');
25
+ var sanitized = tslib_es6.__spreadArray([spanTag, 'contenteditable="false"'], rest, true).join(' ');
27
26
  return sanitized;
28
27
  }
29
28
 
@@ -46,18 +45,16 @@ const nodeListToArray = childNodes => {
46
45
  };
47
46
  function isChannelTypeSupportsMultipleFilesMessage(channel) {
48
47
  var _channel$isGroupChann;
49
- return channel && (channel === null || channel === void 0 ? void 0 : (_channel$isGroupChann = channel.isGroupChannel) === null || _channel$isGroupChann === void 0 ? void 0 : _channel$isGroupChann.call(channel)) && !channel.isBroadcast && !channel.isSuper;
48
+ return channel && (channel === null || channel === void 0 || (_channel$isGroupChann = channel.isGroupChannel) === null || _channel$isGroupChann === void 0 ? void 0 : _channel$isGroupChann.call(channel)) && !channel.isBroadcast && !channel.isSuper;
50
49
  }
51
50
 
52
51
  function inserTemplateToDOM(templateList) {
53
- const nodes = templateList.map(template => {
54
- const {
55
- text,
56
- userId
57
- } = template;
52
+ var nodes = templateList.map(function (template) {
53
+ var text = template.text,
54
+ userId = template.userId;
58
55
  if (userId) {
59
56
  return renderToString({
60
- userId,
57
+ userId: userId,
61
58
  nickname: text
62
59
  });
63
60
  }
@@ -68,53 +65,53 @@ function inserTemplateToDOM(templateList) {
68
65
  document.execCommand('insertHTML', false, nodes);
69
66
  }
70
67
 
71
- const PASTE_NODE = 'sendbird-uikit__paste-node';
72
- const TEXT_MESSAGE_CLASS = 'sendbird-word';
73
- const MENTION_CLASS = 'sendbird-word__mention';
74
- const MENTION_CLASS_IN_INPUT = 'sendbird-mention-user-label';
75
- const MENTION_CLASS_COMBINED_QUERY = `.${MENTION_CLASS}, .${MENTION_CLASS_IN_INPUT}`;
68
+ var PASTE_NODE = 'sendbird-uikit__paste-node';
69
+ var TEXT_MESSAGE_CLASS = 'sendbird-word';
70
+ var MENTION_CLASS = 'sendbird-word__mention';
71
+ var MENTION_CLASS_IN_INPUT = 'sendbird-mention-user-label';
72
+ var MENTION_CLASS_COMBINED_QUERY = ".".concat(MENTION_CLASS, ", .").concat(MENTION_CLASS_IN_INPUT);
76
73
 
77
74
  function querySelectorIncludingSelf(master, selector) {
78
- const result = [master, ...Array.from(master.querySelectorAll(selector))].find(el => el.matches(selector));
75
+ var result = tslib_es6.__spreadArray([master], Array.from(master.querySelectorAll(selector)), true).find(function (el) {
76
+ return el.matches(selector);
77
+ });
79
78
  return result;
80
79
  }
81
-
82
80
  // Pasted dom node can be OG_MESSAGE or partial message or full message
83
81
  // full messsage would have TEXT_MESSAGE_BODY_CLASSNAME and have childNodes
84
82
  // partial message would not have TEXT_MESSAGE_BODY_CLASSNAME
85
83
  function getLeafNodes(master) {
86
84
  // og message
87
- const ogMessage = querySelectorIncludingSelf(master, `.${consts$1.OG_MESSAGE_BODY_CLASSNAME}`);
85
+ var ogMessage = querySelectorIncludingSelf(master, ".".concat(consts$1.OG_MESSAGE_BODY_CLASSNAME));
88
86
  if (ogMessage) {
89
87
  return nodeListToArray(ogMessage.childNodes);
90
88
  }
91
- const textMessageBody = querySelectorIncludingSelf(master, `.${consts$2.TEXT_MESSAGE_BODY_CLASSNAME}`);
89
+ var textMessageBody = querySelectorIncludingSelf(master, ".".concat(consts$2.TEXT_MESSAGE_BODY_CLASSNAME));
92
90
  if (textMessageBody) {
93
91
  return nodeListToArray(textMessageBody.childNodes);
94
92
  }
95
93
  return nodeListToArray(master.childNodes);
96
94
  }
97
95
  function createPasteNode() {
98
- const pasteNode = document.body.querySelector(`#${PASTE_NODE}`);
96
+ var pasteNode = document.body.querySelector("#".concat(PASTE_NODE));
99
97
  // remove existing paste node
100
98
  if (pasteNode) {
101
99
  pasteNode === null || pasteNode === void 0 ? void 0 : pasteNode.remove();
102
100
  }
103
-
104
101
  // create new paste node and return
105
- const node = document.createElement('div');
102
+ var node = document.createElement('div');
106
103
  node.id = PASTE_NODE;
107
104
  node.style.display = 'none';
108
105
  return node;
109
106
  }
110
107
  function hasMention(parent) {
111
- return parent !== null && parent !== void 0 && parent.querySelector(MENTION_CLASS_COMBINED_QUERY) ? true : false;
108
+ return (parent === null || parent === void 0 ? void 0 : parent.querySelector(MENTION_CLASS_COMBINED_QUERY)) ? true : false;
112
109
  }
113
- const extractTextFromNodes = nodes => {
114
- let text = '';
115
- nodes.forEach(node => {
110
+ var extractTextFromNodes = function (nodes) {
111
+ var text = '';
112
+ nodes.forEach(function (node) {
116
113
  // to preserve space between words
117
- const textNodes = node.querySelectorAll(`.${TEXT_MESSAGE_CLASS}`);
114
+ var textNodes = node.querySelectorAll(".".concat(TEXT_MESSAGE_CLASS));
118
115
  if (textNodes.length > 0) {
119
116
  text += extractTextFromNodes(Array.from(textNodes)) + ' ';
120
117
  }
@@ -123,12 +120,12 @@ const extractTextFromNodes = nodes => {
123
120
  return text;
124
121
  };
125
122
  function domToMessageTemplate(nodeArray) {
126
- const templates = nodeArray === null || nodeArray === void 0 ? void 0 : nodeArray.reduce((accumulator, currentValue) => {
123
+ var templates = nodeArray === null || nodeArray === void 0 ? void 0 : nodeArray.reduce(function (accumulator, currentValue) {
124
+ var _a;
127
125
  // currentValue can be node(from messageBody or messageInput) or text
128
- let mentionNode;
126
+ var mentionNode;
129
127
  // this looks awkward, but it is a fallback to set default text
130
- let text = currentValue === null || currentValue === void 0 ? void 0 : currentValue.innerText;
131
-
128
+ var text = currentValue === null || currentValue === void 0 ? void 0 : currentValue.innerText;
132
129
  // if text node, set text
133
130
  if (currentValue instanceof Text) {
134
131
  mentionNode = false;
@@ -137,29 +134,29 @@ function domToMessageTemplate(nodeArray) {
137
134
  if (currentValue instanceof HTMLElement) {
138
135
  mentionNode = currentValue.classList.contains(MENTION_CLASS) || currentValue.classList.contains(MENTION_CLASS_IN_INPUT) ? currentValue : currentValue.querySelector(MENTION_CLASS_COMBINED_QUERY);
139
136
  }
140
-
141
137
  // if mentionNode is not null, it is a mention
142
138
  if (mentionNode) {
143
- var _mentionNode$dataset;
144
- const text = currentValue === null || currentValue === void 0 ? void 0 : currentValue.innerText;
145
- const userId = (_mentionNode$dataset = mentionNode.dataset) === null || _mentionNode$dataset === void 0 ? void 0 : _mentionNode$dataset.userid;
146
- return [...accumulator, {
147
- text,
148
- userId
149
- }];
139
+ var text_1 = currentValue === null || currentValue === void 0 ? void 0 : currentValue.innerText;
140
+ var userId = (_a = mentionNode.dataset) === null || _a === void 0 ? void 0 : _a.userid;
141
+ return tslib_es6.__spreadArray(tslib_es6.__spreadArray([], accumulator, true), [{
142
+ text: text_1,
143
+ userId: userId
144
+ }], false);
150
145
  }
151
- return [...accumulator, {
152
- text
153
- }];
146
+ return tslib_es6.__spreadArray(tslib_es6.__spreadArray([], accumulator, true), [{
147
+ text: text
148
+ }], false);
154
149
  }, []);
155
150
  return templates;
156
151
  }
157
152
  function getUsersFromWords(templates, channel) {
158
- const userMap = {};
159
- const users = channel.members;
160
- templates.forEach(template => {
153
+ var userMap = {};
154
+ var users = channel.members;
155
+ templates.forEach(function (template) {
161
156
  if (template.userId) {
162
- const mentionedMember = users.find(user => user.userId === template.userId);
157
+ var mentionedMember = users.find(function (user) {
158
+ return user.userId === template.userId;
159
+ });
163
160
  // Object.values would return array-> [undefined] if the user is not in the channel
164
161
  if (mentionedMember) {
165
162
  userMap[template.userId] = mentionedMember;
@@ -177,47 +174,42 @@ function getUsersFromWords(templates, channel) {
177
174
  // 4. paste text with mention and text and paste again before and after
178
175
  // 5. copy message with mention(only one mention, no other text) and paste
179
176
  // 6. copy message with mention from input and paste(before and after)
180
- function usePaste(_ref) {
181
- let {
182
- ref,
183
- setIsInput,
184
- setHeight,
185
- channel,
186
- setMentionedUsers
187
- } = _ref;
188
- return React.useCallback(e => {
177
+ function usePaste(_a) {
178
+ var ref = _a.ref,
179
+ setIsInput = _a.setIsInput,
180
+ setHeight = _a.setHeight,
181
+ channel = _a.channel,
182
+ setMentionedUsers = _a.setMentionedUsers;
183
+ return React.useCallback(function (e) {
189
184
  e.preventDefault();
190
- const html = e === null || e === void 0 ? void 0 : e.clipboardData.getData('text/html');
185
+ var html = e === null || e === void 0 ? void 0 : e.clipboardData.getData('text/html');
191
186
  // simple text, continue as normal
192
187
  if (!html) {
193
- const text = e === null || e === void 0 ? void 0 : e.clipboardData.getData('text');
188
+ var text = e === null || e === void 0 ? void 0 : e.clipboardData.getData('text');
194
189
  document.execCommand('insertHTML', false, sanitizeString(text));
195
190
  setIsInput(true);
196
191
  setHeight();
197
192
  return;
198
193
  }
199
-
200
194
  // has html, check if there are mentions, sanitize and insert
201
- const purifier = DOMPurify__default["default"](window);
202
- const clean = purifier.sanitize(html);
203
- const pasteNode = createPasteNode();
195
+ var purifier = DOMPurify__default["default"](window);
196
+ var clean = purifier.sanitize(html);
197
+ var pasteNode = createPasteNode();
204
198
  pasteNode.innerHTML = clean;
205
199
  // does not have mention, continue as normal
206
200
  if (!hasMention(pasteNode)) {
207
201
  // to preserve space between words
208
- const text = extractTextFromNodes(Array.from(pasteNode.children));
202
+ var text = extractTextFromNodes(Array.from(pasteNode.children));
209
203
  document.execCommand('insertHTML', false, sanitizeString(text));
210
204
  pasteNode.remove();
211
205
  setIsInput(true);
212
206
  setHeight();
213
207
  return;
214
208
  }
215
-
216
209
  // has mention, collect leaf nodes and parse words
217
- const leafNodes = getLeafNodes(pasteNode);
218
- const words = domToMessageTemplate(leafNodes);
219
- const mentionedUsers = getUsersFromWords(words, channel);
220
-
210
+ var leafNodes = getLeafNodes(pasteNode);
211
+ var words = domToMessageTemplate(leafNodes);
212
+ var mentionedUsers = getUsersFromWords(words, channel);
221
213
  // side effects
222
214
  setMentionedUsers(mentionedUsers);
223
215
  inserTemplateToDOM(words);
@@ -232,4 +224,4 @@ exports.nodeListToArray = nodeListToArray;
232
224
  exports.renderToString = renderToString;
233
225
  exports.sanitizeString = sanitizeString;
234
226
  exports.usePaste = usePaste;
235
- //# sourceMappingURL=index-759f2a26.js.map
227
+ //# sourceMappingURL=index-bdf7089c.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-759f2a26.js","sources":["../../src/ui/MentionUserLabel/renderToString.ts","../../src/ui/MessageInput/utils.js","../../src/ui/MessageInput/hooks/usePaste/insertTemplate.ts","../../src/ui/MessageInput/hooks/usePaste/consts.ts","../../src/ui/MessageInput/hooks/usePaste/utils.ts","../../src/ui/MessageInput/hooks/usePaste/index.ts"],"sourcesContent":["// cretes a sanitized string from a mention user label\nimport DOMPurify from 'dompurify';\nimport { MENTION_USER_LABEL_CLASSNAME } from './consts';\n\ntype renderToStringParams = {\n userId: string;\n nickname: string;\n};\n\nexport default function renderToString({ userId, nickname }: renderToStringParams): string {\n // donot change this template, it wont work\n const el = `<span data-userid=\"${userId}\" data-sb-mention=\"true\" class=\"${MENTION_USER_LABEL_CLASSNAME}\">${nickname}</span>`;\n const purifier = DOMPurify(window);\n const sanitized_ = purifier.sanitize(el);\n const token = sanitized_.split(' ');\n const [spanTag, ...rest] = token;\n // we do this because DOMPurify removes the contenteditable attribute\n const sanitized = [spanTag, 'contenteditable=\"false\"', ...rest].join(' ');\n return sanitized;\n}\n","// https://davidwalsh.name/javascript-debounce-function\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\nexport function debounce(func, wait, immediate) {\n let timeout;\n return function _debounce() {\n const context = this;\n // eslint-disable-next-line prefer-rest-params\n const args = arguments;\n const later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n}\n\n// Sanitize that special characters of HTML tags cause XSS issue\nexport const sanitizeString = (str) => (\n str?.replace(/[\\u00A0-\\u9999<>]/gim, (i) => ''.concat('&#', i.charCodeAt(0), ';'))\n);\n\n/**\n * NodeList cannot be used with Array methods\n * @param {childNodes} NodeList\n * @returns Array of child nodes\n */\nexport const nodeListToArray = (childNodes) => {\n try {\n return Array.from(childNodes);\n } catch (error) {\n return [];\n }\n};\n\nexport function isChannelTypeSupportsMultipleFilesMessage(channel) {\n return channel\n && channel?.isGroupChannel?.()\n && !channel.isBroadcast\n && !channel.isSuper;\n}\n","import { Word } from './types';\nimport { sanitizeString } from '../../utils';\nimport renderMentionLabelToString from '../../../MentionUserLabel/renderToString';\n\nexport function inserTemplateToDOM(templateList: Word[]): void {\n const nodes = templateList.map((template) => {\n const { text, userId } = template;\n if (userId) {\n return renderMentionLabelToString({ userId, nickname: text });\n }\n return sanitizeString(text);\n })\n .join(' ')\n // add a space at the end of the mention, else cursor/caret wont work\n .concat(' ');\n document.execCommand('insertHTML', false, nodes);\n}\n","export const PASTE_NODE = 'sendbird-uikit__paste-node';\nexport const TEXT_MESSAGE_CLASS = 'sendbird-word';\nexport const MENTION_CLASS = 'sendbird-word__mention';\nexport const MENTION_CLASS_IN_INPUT = 'sendbird-mention-user-label';\nexport const MENTION_CLASS_COMBINED_QUERY = `.${MENTION_CLASS}, .${MENTION_CLASS_IN_INPUT}`;\n","import { GroupChannel } from '@sendbird/chat/groupChannel';\nimport { User } from '@sendbird/chat';\n\nimport {\n PASTE_NODE,\n MENTION_CLASS,\n TEXT_MESSAGE_CLASS,\n MENTION_CLASS_COMBINED_QUERY,\n MENTION_CLASS_IN_INPUT,\n} from './consts';\nimport { Word } from './types';\nimport { TEXT_MESSAGE_BODY_CLASSNAME } from '../../../TextMessageItemBody/consts';\nimport { OG_MESSAGE_BODY_CLASSNAME } from '../../../OGMessageItemBody/consts';\nimport { nodeListToArray } from '../../utils';\n\nexport function querySelectorIncludingSelf(\n master: HTMLElement,\n selector: string,\n): HTMLElement | null {\n const result = [\n master,\n ...Array.from(master.querySelectorAll(selector)),\n ].find((el) => el.matches(selector)) as HTMLElement | null;\n return result;\n}\n\n// Pasted dom node can be OG_MESSAGE or partial message or full message\n// full messsage would have TEXT_MESSAGE_BODY_CLASSNAME and have childNodes\n// partial message would not have TEXT_MESSAGE_BODY_CLASSNAME\nexport function getLeafNodes(master: HTMLElement): ChildNode[] {\n // og message\n const ogMessage = querySelectorIncludingSelf(master, `.${OG_MESSAGE_BODY_CLASSNAME}`);\n if (ogMessage) {\n return nodeListToArray(ogMessage.childNodes);\n }\n\n const textMessageBody = querySelectorIncludingSelf(master, `.${TEXT_MESSAGE_BODY_CLASSNAME}`);\n if (textMessageBody) {\n return nodeListToArray(textMessageBody.childNodes);\n }\n\n return nodeListToArray(master.childNodes);\n}\n\nexport function createPasteNode(): HTMLDivElement | null {\n const pasteNode = document.body.querySelector(`#${PASTE_NODE}`);\n // remove existing paste node\n if (pasteNode) {\n pasteNode?.remove();\n }\n\n // create new paste node and return\n const node = document.createElement('div');\n node.id = PASTE_NODE;\n node.style.display = 'none';\n return node;\n}\n\nexport function hasMention(parent: HTMLDivElement): boolean {\n return parent?.querySelector(MENTION_CLASS_COMBINED_QUERY) ? true : false;\n}\n\nexport const extractTextFromNodes = (nodes: HTMLSpanElement[]): string => {\n let text = '';\n nodes.forEach((node) => {\n // to preserve space between words\n const textNodes = node.querySelectorAll(`.${TEXT_MESSAGE_CLASS}`);\n if (textNodes.length > 0) {\n text += ((extractTextFromNodes(Array.from(textNodes) as HTMLSpanElement[])) + ' ');\n }\n text += (node.innerText + ' ');\n });\n return text;\n};\n\nexport function domToMessageTemplate(nodeArray: ChildNode[]): Word[] {\n const templates: Word[] = nodeArray?.reduce((accumulator, currentValue) => {\n // currentValue can be node(from messageBody or messageInput) or text\n let mentionNode;\n // this looks awkward, but it is a fallback to set default text\n let text = (currentValue as HTMLSpanElement)?.innerText;\n\n // if text node, set text\n if (currentValue instanceof Text) {\n mentionNode = false;\n text = currentValue.textContent;\n }\n\n if (currentValue instanceof HTMLElement) {\n mentionNode = (currentValue.classList.contains(MENTION_CLASS) || currentValue.classList.contains(MENTION_CLASS_IN_INPUT))\n ? currentValue\n : currentValue.querySelector(MENTION_CLASS_COMBINED_QUERY);\n }\n\n // if mentionNode is not null, it is a mention\n if (mentionNode) {\n const text = (currentValue as HTMLSpanElement)?.innerText;\n const userId = mentionNode.dataset?.userid;\n return [\n ...accumulator,\n {\n text,\n userId,\n },\n ];\n }\n\n return [\n ...accumulator,\n {\n text,\n },\n ];\n }, [] as Word[]);\n return templates;\n}\n\nexport function getUsersFromWords(templates: Word[], channel: GroupChannel): User[] {\n const userMap = {};\n const users = channel.members;\n templates.forEach((template) => {\n if (template.userId) {\n const mentionedMember = users.find((user) => user.userId === template.userId);\n // Object.values would return array-> [undefined] if the user is not in the channel\n if (mentionedMember) {\n userMap[template.userId] = mentionedMember;\n }\n }\n });\n return Object.values(userMap);\n}\n","import { useCallback } from 'react';\nimport DOMPurify from 'dompurify';\n\nimport { inserTemplateToDOM } from './insertTemplate';\nimport { sanitizeString } from '../../utils';\nimport { DynamicProps } from './types';\nimport {\n createPasteNode,\n hasMention,\n domToMessageTemplate,\n getUsersFromWords,\n extractTextFromNodes,\n getLeafNodes,\n} from './utils';\n\n// exported, should be backward compatible\n// conditions to test:\n// 1. paste simple text\n// 2. paste text with mention\n// 3. paste text with mention and text\n// 4. paste text with mention and text and paste again before and after\n// 5. copy message with mention(only one mention, no other text) and paste\n// 6. copy message with mention from input and paste(before and after)\nexport function usePaste({\n ref,\n setIsInput,\n setHeight,\n channel,\n setMentionedUsers,\n}: DynamicProps): (e: React.ClipboardEvent<HTMLDivElement>) => void {\n return useCallback((e) => {\n e.preventDefault();\n const html = e?.clipboardData.getData('text/html');\n // simple text, continue as normal\n if (!html) {\n const text = e?.clipboardData.getData('text');\n document.execCommand('insertHTML', false, sanitizeString(text));\n setIsInput(true);\n setHeight();\n return;\n }\n\n // has html, check if there are mentions, sanitize and insert\n const purifier = DOMPurify(window);\n const clean = purifier.sanitize(html);\n const pasteNode = createPasteNode();\n pasteNode.innerHTML = clean;\n // does not have mention, continue as normal\n if (!hasMention(pasteNode)) {\n // to preserve space between words\n const text = extractTextFromNodes(Array.from(pasteNode.children) as HTMLSpanElement[]);\n document.execCommand('insertHTML', false, sanitizeString(text));\n pasteNode.remove();\n setIsInput(true);\n setHeight();\n return;\n }\n\n // has mention, collect leaf nodes and parse words\n const leafNodes = getLeafNodes(pasteNode);\n const words = domToMessageTemplate(leafNodes);\n const mentionedUsers = getUsersFromWords(words, channel);\n\n // side effects\n setMentionedUsers(mentionedUsers);\n inserTemplateToDOM(words);\n pasteNode.remove();\n setIsInput(true);\n setHeight();\n }, [ref, setIsInput, setHeight, channel, setMentionedUsers]);\n}\n\n// to do -> In the future donot export default\nexport default usePaste;\n"],"names":["renderToString","_ref","userId","nickname","el","MENTION_USER_LABEL_CLASSNAME","purifier","DOMPurify","window","sanitized_","sanitize","token","split","spanTag","rest","sanitized","join","sanitizeString","str","replace","i","concat","charCodeAt","nodeListToArray","childNodes","Array","from","error","isChannelTypeSupportsMultipleFilesMessage","channel","_channel$isGroupChann","isGroupChannel","call","isBroadcast","isSuper","inserTemplateToDOM","templateList","nodes","map","template","text","renderMentionLabelToString","document","execCommand","PASTE_NODE","TEXT_MESSAGE_CLASS","MENTION_CLASS","MENTION_CLASS_IN_INPUT","MENTION_CLASS_COMBINED_QUERY","querySelectorIncludingSelf","master","selector","result","querySelectorAll","find","matches","getLeafNodes","ogMessage","OG_MESSAGE_BODY_CLASSNAME","textMessageBody","TEXT_MESSAGE_BODY_CLASSNAME","createPasteNode","pasteNode","body","querySelector","remove","node","createElement","id","style","display","hasMention","parent","extractTextFromNodes","forEach","textNodes","length","innerText","domToMessageTemplate","nodeArray","templates","reduce","accumulator","currentValue","mentionNode","Text","textContent","HTMLElement","classList","contains","_mentionNode$dataset","dataset","userid","getUsersFromWords","userMap","users","members","mentionedMember","user","Object","values","usePaste","ref","setIsInput","setHeight","setMentionedUsers","useCallback","e","preventDefault","html","clipboardData","getData","clean","innerHTML","children","leafNodes","words","mentionedUsers"],"mappings":"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"}
1
+ {"version":3,"file":"index-bdf7089c.js","sources":["../../src/ui/MentionUserLabel/renderToString.ts","../../src/ui/MessageInput/utils.js","../../src/ui/MessageInput/hooks/usePaste/insertTemplate.ts","../../src/ui/MessageInput/hooks/usePaste/consts.ts","../../src/ui/MessageInput/hooks/usePaste/utils.ts","../../src/ui/MessageInput/hooks/usePaste/index.ts"],"sourcesContent":["// cretes a sanitized string from a mention user label\nimport DOMPurify from 'dompurify';\nimport { MENTION_USER_LABEL_CLASSNAME } from './consts';\n\ntype renderToStringParams = {\n userId: string;\n nickname: string;\n};\n\nexport default function renderToString({ userId, nickname }: renderToStringParams): string {\n // donot change this template, it wont work\n const el = `<span data-userid=\"${userId}\" data-sb-mention=\"true\" class=\"${MENTION_USER_LABEL_CLASSNAME}\">${nickname}</span>`;\n const purifier = DOMPurify(window);\n const sanitized_ = purifier.sanitize(el);\n const token = sanitized_.split(' ');\n const [spanTag, ...rest] = token;\n // we do this because DOMPurify removes the contenteditable attribute\n const sanitized = [spanTag, 'contenteditable=\"false\"', ...rest].join(' ');\n return sanitized;\n}\n","// https://davidwalsh.name/javascript-debounce-function\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\nexport function debounce(func, wait, immediate) {\n let timeout;\n return function _debounce() {\n const context = this;\n // eslint-disable-next-line prefer-rest-params\n const args = arguments;\n const later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n}\n\n// Sanitize that special characters of HTML tags cause XSS issue\nexport const sanitizeString = (str) => (\n str?.replace(/[\\u00A0-\\u9999<>]/gim, (i) => ''.concat('&#', i.charCodeAt(0), ';'))\n);\n\n/**\n * NodeList cannot be used with Array methods\n * @param {childNodes} NodeList\n * @returns Array of child nodes\n */\nexport const nodeListToArray = (childNodes) => {\n try {\n return Array.from(childNodes);\n } catch (error) {\n return [];\n }\n};\n\nexport function isChannelTypeSupportsMultipleFilesMessage(channel) {\n return channel\n && channel?.isGroupChannel?.()\n && !channel.isBroadcast\n && !channel.isSuper;\n}\n","import { Word } from './types';\nimport { sanitizeString } from '../../utils';\nimport renderMentionLabelToString from '../../../MentionUserLabel/renderToString';\n\nexport function inserTemplateToDOM(templateList: Word[]): void {\n const nodes = templateList.map((template) => {\n const { text, userId } = template;\n if (userId) {\n return renderMentionLabelToString({ userId, nickname: text });\n }\n return sanitizeString(text);\n })\n .join(' ')\n // add a space at the end of the mention, else cursor/caret wont work\n .concat(' ');\n document.execCommand('insertHTML', false, nodes);\n}\n","export const PASTE_NODE = 'sendbird-uikit__paste-node';\nexport const TEXT_MESSAGE_CLASS = 'sendbird-word';\nexport const MENTION_CLASS = 'sendbird-word__mention';\nexport const MENTION_CLASS_IN_INPUT = 'sendbird-mention-user-label';\nexport const MENTION_CLASS_COMBINED_QUERY = `.${MENTION_CLASS}, .${MENTION_CLASS_IN_INPUT}`;\n","import { GroupChannel } from '@sendbird/chat/groupChannel';\nimport { User } from '@sendbird/chat';\n\nimport {\n PASTE_NODE,\n MENTION_CLASS,\n TEXT_MESSAGE_CLASS,\n MENTION_CLASS_COMBINED_QUERY,\n MENTION_CLASS_IN_INPUT,\n} from './consts';\nimport { Word } from './types';\nimport { TEXT_MESSAGE_BODY_CLASSNAME } from '../../../TextMessageItemBody/consts';\nimport { OG_MESSAGE_BODY_CLASSNAME } from '../../../OGMessageItemBody/consts';\nimport { nodeListToArray } from '../../utils';\n\nexport function querySelectorIncludingSelf(\n master: HTMLElement,\n selector: string,\n): HTMLElement | null {\n const result = [\n master,\n ...Array.from(master.querySelectorAll(selector)),\n ].find((el) => el.matches(selector)) as HTMLElement | null;\n return result;\n}\n\n// Pasted dom node can be OG_MESSAGE or partial message or full message\n// full messsage would have TEXT_MESSAGE_BODY_CLASSNAME and have childNodes\n// partial message would not have TEXT_MESSAGE_BODY_CLASSNAME\nexport function getLeafNodes(master: HTMLElement): ChildNode[] {\n // og message\n const ogMessage = querySelectorIncludingSelf(master, `.${OG_MESSAGE_BODY_CLASSNAME}`);\n if (ogMessage) {\n return nodeListToArray(ogMessage.childNodes);\n }\n\n const textMessageBody = querySelectorIncludingSelf(master, `.${TEXT_MESSAGE_BODY_CLASSNAME}`);\n if (textMessageBody) {\n return nodeListToArray(textMessageBody.childNodes);\n }\n\n return nodeListToArray(master.childNodes);\n}\n\nexport function createPasteNode(): HTMLDivElement | null {\n const pasteNode = document.body.querySelector(`#${PASTE_NODE}`);\n // remove existing paste node\n if (pasteNode) {\n pasteNode?.remove();\n }\n\n // create new paste node and return\n const node = document.createElement('div');\n node.id = PASTE_NODE;\n node.style.display = 'none';\n return node;\n}\n\nexport function hasMention(parent: HTMLDivElement): boolean {\n return parent?.querySelector(MENTION_CLASS_COMBINED_QUERY) ? true : false;\n}\n\nexport const extractTextFromNodes = (nodes: HTMLSpanElement[]): string => {\n let text = '';\n nodes.forEach((node) => {\n // to preserve space between words\n const textNodes = node.querySelectorAll(`.${TEXT_MESSAGE_CLASS}`);\n if (textNodes.length > 0) {\n text += ((extractTextFromNodes(Array.from(textNodes) as HTMLSpanElement[])) + ' ');\n }\n text += (node.innerText + ' ');\n });\n return text;\n};\n\nexport function domToMessageTemplate(nodeArray: ChildNode[]): Word[] {\n const templates: Word[] = nodeArray?.reduce((accumulator, currentValue) => {\n // currentValue can be node(from messageBody or messageInput) or text\n let mentionNode;\n // this looks awkward, but it is a fallback to set default text\n let text = (currentValue as HTMLSpanElement)?.innerText;\n\n // if text node, set text\n if (currentValue instanceof Text) {\n mentionNode = false;\n text = currentValue.textContent;\n }\n\n if (currentValue instanceof HTMLElement) {\n mentionNode = (currentValue.classList.contains(MENTION_CLASS) || currentValue.classList.contains(MENTION_CLASS_IN_INPUT))\n ? currentValue\n : currentValue.querySelector(MENTION_CLASS_COMBINED_QUERY);\n }\n\n // if mentionNode is not null, it is a mention\n if (mentionNode) {\n const text = (currentValue as HTMLSpanElement)?.innerText;\n const userId = mentionNode.dataset?.userid;\n return [\n ...accumulator,\n {\n text,\n userId,\n },\n ];\n }\n\n return [\n ...accumulator,\n {\n text,\n },\n ];\n }, [] as Word[]);\n return templates;\n}\n\nexport function getUsersFromWords(templates: Word[], channel: GroupChannel): User[] {\n const userMap = {};\n const users = channel.members;\n templates.forEach((template) => {\n if (template.userId) {\n const mentionedMember = users.find((user) => user.userId === template.userId);\n // Object.values would return array-> [undefined] if the user is not in the channel\n if (mentionedMember) {\n userMap[template.userId] = mentionedMember;\n }\n }\n });\n return Object.values(userMap);\n}\n","import { useCallback } from 'react';\nimport DOMPurify from 'dompurify';\n\nimport { inserTemplateToDOM } from './insertTemplate';\nimport { sanitizeString } from '../../utils';\nimport { DynamicProps } from './types';\nimport {\n createPasteNode,\n hasMention,\n domToMessageTemplate,\n getUsersFromWords,\n extractTextFromNodes,\n getLeafNodes,\n} from './utils';\n\n// exported, should be backward compatible\n// conditions to test:\n// 1. paste simple text\n// 2. paste text with mention\n// 3. paste text with mention and text\n// 4. paste text with mention and text and paste again before and after\n// 5. copy message with mention(only one mention, no other text) and paste\n// 6. copy message with mention from input and paste(before and after)\nexport function usePaste({\n ref,\n setIsInput,\n setHeight,\n channel,\n setMentionedUsers,\n}: DynamicProps): (e: React.ClipboardEvent<HTMLDivElement>) => void {\n return useCallback((e) => {\n e.preventDefault();\n const html = e?.clipboardData.getData('text/html');\n // simple text, continue as normal\n if (!html) {\n const text = e?.clipboardData.getData('text');\n document.execCommand('insertHTML', false, sanitizeString(text));\n setIsInput(true);\n setHeight();\n return;\n }\n\n // has html, check if there are mentions, sanitize and insert\n const purifier = DOMPurify(window);\n const clean = purifier.sanitize(html);\n const pasteNode = createPasteNode();\n pasteNode.innerHTML = clean;\n // does not have mention, continue as normal\n if (!hasMention(pasteNode)) {\n // to preserve space between words\n const text = extractTextFromNodes(Array.from(pasteNode.children) as HTMLSpanElement[]);\n document.execCommand('insertHTML', false, sanitizeString(text));\n pasteNode.remove();\n setIsInput(true);\n setHeight();\n return;\n }\n\n // has mention, collect leaf nodes and parse words\n const leafNodes = getLeafNodes(pasteNode);\n const words = domToMessageTemplate(leafNodes);\n const mentionedUsers = getUsersFromWords(words, channel);\n\n // side effects\n setMentionedUsers(mentionedUsers);\n inserTemplateToDOM(words);\n pasteNode.remove();\n setIsInput(true);\n setHeight();\n }, [ref, setIsInput, setHeight, channel, setMentionedUsers]);\n}\n\n// to do -> In the future donot export default\nexport default usePaste;\n"],"names":["renderToString","_a","userId","nickname","el","concat","MENTION_USER_LABEL_CLASSNAME","purifier","DOMPurify","window","sanitized_","sanitize","token","split","spanTag","rest","slice","sanitized","__spreadArray","join","sanitizeString","str","replace","i","charCodeAt","nodeListToArray","childNodes","Array","from","error","isChannelTypeSupportsMultipleFilesMessage","channel","_channel$isGroupChann","isGroupChannel","call","isBroadcast","isSuper","inserTemplateToDOM","templateList","nodes","map","template","text","renderMentionLabelToString","document","execCommand","PASTE_NODE","TEXT_MESSAGE_CLASS","MENTION_CLASS","MENTION_CLASS_IN_INPUT","MENTION_CLASS_COMBINED_QUERY","querySelectorIncludingSelf","master","selector","result","querySelectorAll","find","matches","getLeafNodes","ogMessage","OG_MESSAGE_BODY_CLASSNAME","textMessageBody","TEXT_MESSAGE_BODY_CLASSNAME","createPasteNode","pasteNode","body","querySelector","remove","node","createElement","id","style","display","hasMention","parent","extractTextFromNodes","forEach","textNodes","length","innerText","domToMessageTemplate","nodeArray","templates","reduce","accumulator","currentValue","mentionNode","Text","textContent","HTMLElement","classList","contains","text_1","dataset","userid","getUsersFromWords","userMap","users","members","mentionedMember","user","Object","values","usePaste","ref","setIsInput","setHeight","setMentionedUsers","useCallback","e","preventDefault","html","clipboardData","getData","clean","innerHTML","children","leafNodes","words","mentionedUsers"],"mappings":"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"}