@sendbird/uikit-react 3.5.0-rc.0 → 3.5.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 (936) hide show
  1. package/App.js +312 -235
  2. package/App.js.map +1 -1
  3. package/CHANGELOG.md +544 -0
  4. package/Channel/components/ChannelHeader.js +46 -41
  5. package/Channel/components/ChannelHeader.js.map +1 -1
  6. package/Channel/components/ChannelUI.js +104 -131
  7. package/Channel/components/ChannelUI.js.map +1 -1
  8. package/Channel/components/FileViewer.js +56 -52
  9. package/Channel/components/FileViewer.js.map +1 -1
  10. package/Channel/components/FrozenNotification.js +12 -7
  11. package/Channel/components/FrozenNotification.js.map +1 -1
  12. package/Channel/components/Message.js +240 -230
  13. package/Channel/components/Message.js.map +1 -1
  14. package/Channel/components/MessageInput.js +152 -129
  15. package/Channel/components/MessageInput.js.map +1 -1
  16. package/Channel/components/MessageList.js +260 -175
  17. package/Channel/components/MessageList.js.map +1 -1
  18. package/Channel/components/RemoveMessageModal.js +34 -30
  19. package/Channel/components/RemoveMessageModal.js.map +1 -1
  20. package/Channel/components/SuggestedMentionList.js +139 -193
  21. package/Channel/components/SuggestedMentionList.js.map +1 -1
  22. package/Channel/components/TypingIndicator.js +44 -61
  23. package/Channel/components/TypingIndicator.js.map +1 -1
  24. package/Channel/components/UnreadCount.js +18 -20
  25. package/Channel/components/UnreadCount.js.map +1 -1
  26. package/Channel/context.js +12 -19
  27. package/Channel/context.js.map +1 -1
  28. package/Channel.js +69 -44
  29. package/Channel.js.map +1 -1
  30. package/ChannelList/components/AddChannel.js +29 -30
  31. package/ChannelList/components/AddChannel.js.map +1 -1
  32. package/ChannelList/components/ChannelListHeader.js +32 -28
  33. package/ChannelList/components/ChannelListHeader.js.map +1 -1
  34. package/ChannelList/components/ChannelListUI.js +101 -142
  35. package/ChannelList/components/ChannelListUI.js.map +1 -1
  36. package/ChannelList/components/ChannelPreview.js +72 -82
  37. package/ChannelList/components/ChannelPreview.js.map +1 -1
  38. package/ChannelList/components/ChannelPreviewAction.js +36 -36
  39. package/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  40. package/ChannelList/context.js +7 -8
  41. package/ChannelList/context.js.map +1 -1
  42. package/ChannelList.js +32 -31
  43. package/ChannelList.js.map +1 -1
  44. package/{ChannelListProvider-ade145a7.js → ChannelListProvider-4cf5c0f5.js} +233 -285
  45. package/ChannelListProvider-4cf5c0f5.js.map +1 -0
  46. package/{ChannelProvider-c9db10c0.js → ChannelProvider-6e8e99df.js} +659 -726
  47. package/ChannelProvider-6e8e99df.js.map +1 -0
  48. package/ChannelSettings/components/ChannelProfile.js +33 -46
  49. package/ChannelSettings/components/ChannelProfile.js.map +1 -1
  50. package/ChannelSettings/components/ChannelSettingsUI.js +45 -48
  51. package/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  52. package/ChannelSettings/components/EditDetailsModal.js +47 -58
  53. package/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  54. package/ChannelSettings/components/LeaveChannel.js +40 -46
  55. package/ChannelSettings/components/LeaveChannel.js.map +1 -1
  56. package/ChannelSettings/components/ModerationPanel.js +522 -605
  57. package/ChannelSettings/components/ModerationPanel.js.map +1 -1
  58. package/ChannelSettings/components/UserListItem.js +71 -72
  59. package/ChannelSettings/components/UserListItem.js.map +1 -1
  60. package/ChannelSettings/components/UserPanel.js +29 -32
  61. package/ChannelSettings/components/UserPanel.js.map +1 -1
  62. package/ChannelSettings/context.js +53 -57
  63. package/ChannelSettings/context.js.map +1 -1
  64. package/ChannelSettings.js +20 -20
  65. package/ChannelSettings.js.map +1 -1
  66. package/CreateChannel/components/CreateChannelUI.js +24 -24
  67. package/CreateChannel/components/CreateChannelUI.js.map +1 -1
  68. package/CreateChannel/components/InviteUsers.js +102 -124
  69. package/CreateChannel/components/InviteUsers.js.map +1 -1
  70. package/CreateChannel/components/SelectChannelType.js +41 -42
  71. package/CreateChannel/components/SelectChannelType.js.map +1 -1
  72. package/CreateChannel/context.js +4 -4
  73. package/CreateChannel.js +22 -21
  74. package/CreateChannel.js.map +1 -1
  75. package/CreateChannelProvider-34603fa5.js +44 -0
  76. package/CreateChannelProvider-34603fa5.js.map +1 -0
  77. package/CreateOpenChannel/components/CreateOpenChannelUI.js +33 -43
  78. package/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  79. package/CreateOpenChannel/context.js +33 -33
  80. package/CreateOpenChannel/context.js.map +1 -1
  81. package/CreateOpenChannel.js +18 -17
  82. package/CreateOpenChannel.js.map +1 -1
  83. package/EditUserProfile/components/EditUserProfileUI.js +12 -13
  84. package/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  85. package/EditUserProfile/context.js +0 -2
  86. package/EditUserProfile/context.js.map +1 -1
  87. package/EditUserProfile.js +18 -17
  88. package/EditUserProfile.js.map +1 -1
  89. package/LocalizationContext-04c0c9dc.js +20 -0
  90. package/{LocalizationContext-60894e38.js.map → LocalizationContext-04c0c9dc.js.map} +1 -1
  91. package/MediaQueryContext-ff9dca2b.js +87 -0
  92. package/MediaQueryContext-ff9dca2b.js.map +1 -0
  93. package/MemberList-9bf26111.js +403 -0
  94. package/MemberList-9bf26111.js.map +1 -0
  95. package/Message/context.js +31 -0
  96. package/Message/context.js.map +1 -0
  97. package/MessageSearch/components/MessageSearchUI.js +62 -71
  98. package/MessageSearch/components/MessageSearchUI.js.map +1 -1
  99. package/MessageSearch/context.js +201 -224
  100. package/MessageSearch/context.js.map +1 -1
  101. package/MessageSearch.js +46 -58
  102. package/MessageSearch.js.map +1 -1
  103. package/OpenChannel/components/FrozenChannelNotification.js +8 -6
  104. package/OpenChannel/components/FrozenChannelNotification.js.map +1 -1
  105. package/OpenChannel/components/OpenChannelHeader.js +27 -25
  106. package/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  107. package/OpenChannel/components/OpenChannelInput.js +50 -35
  108. package/OpenChannel/components/OpenChannelInput.js.map +1 -1
  109. package/OpenChannel/components/OpenChannelMessage.js +174 -191
  110. package/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  111. package/OpenChannel/components/OpenChannelMessageList.js +72 -92
  112. package/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  113. package/OpenChannel/components/OpenChannelUI.js +52 -49
  114. package/OpenChannel/components/OpenChannelUI.js.map +1 -1
  115. package/OpenChannel/context.js +8 -9
  116. package/OpenChannel/context.js.map +1 -1
  117. package/OpenChannel.js +36 -30
  118. package/OpenChannel.js.map +1 -1
  119. package/OpenChannelList/components/OpenChannelListUI.js +61 -76
  120. package/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  121. package/OpenChannelList/components/OpenChannelPreview.js +21 -22
  122. package/OpenChannelList/components/OpenChannelPreview.js.map +1 -1
  123. package/OpenChannelList/context.js +3 -4
  124. package/OpenChannelList/context.js.map +1 -1
  125. package/OpenChannelList.js +26 -24
  126. package/OpenChannelList.js.map +1 -1
  127. package/OpenChannelListProvider-d7372692.js +429 -0
  128. package/OpenChannelListProvider-d7372692.js.map +1 -0
  129. package/OpenChannelProvider-24cd68b9.js +1885 -0
  130. package/OpenChannelProvider-24cd68b9.js.map +1 -0
  131. package/OpenChannelSettings/components/EditDetailsModal.js +47 -56
  132. package/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  133. package/OpenChannelSettings/components/OpenChannelProfile.js +26 -31
  134. package/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  135. package/OpenChannelSettings/components/OpenChannelSettingsUI.js +45 -43
  136. package/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  137. package/OpenChannelSettings/components/OperatorUI.js +516 -586
  138. package/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  139. package/OpenChannelSettings/components/ParticipantUI.js +15 -16
  140. package/OpenChannelSettings/components/ParticipantUI.js.map +1 -1
  141. package/OpenChannelSettings/context.js +56 -69
  142. package/OpenChannelSettings/context.js.map +1 -1
  143. package/OpenChannelSettings.js +19 -20
  144. package/OpenChannelSettings.js.map +1 -1
  145. package/README.md +62 -13
  146. package/RemoveMessageModal-94e2bf9e.js +36 -0
  147. package/RemoveMessageModal-94e2bf9e.js.map +1 -0
  148. package/SendbirdProvider.js +749 -408
  149. package/SendbirdProvider.js.map +1 -1
  150. package/Thread/components/ParentMessageInfo.js +238 -217
  151. package/Thread/components/ParentMessageInfo.js.map +1 -1
  152. package/Thread/components/ParentMessageInfoItem.js +112 -89
  153. package/Thread/components/ParentMessageInfoItem.js.map +1 -1
  154. package/Thread/components/ThreadHeader.js +22 -23
  155. package/Thread/components/ThreadHeader.js.map +1 -1
  156. package/Thread/components/ThreadList.js +108 -83
  157. package/Thread/components/ThreadList.js.map +1 -1
  158. package/Thread/components/ThreadListItem.js +306 -276
  159. package/Thread/components/ThreadListItem.js.map +1 -1
  160. package/Thread/components/ThreadMessageInput.js +146 -113
  161. package/Thread/components/ThreadMessageInput.js.map +1 -1
  162. package/Thread/components/ThreadUI.js +169 -138
  163. package/Thread/components/ThreadUI.js.map +1 -1
  164. package/Thread/context/types.js +9 -14
  165. package/Thread/context/types.js.map +1 -1
  166. package/Thread/context.js +8 -8
  167. package/Thread.js +87 -57
  168. package/Thread.js.map +1 -1
  169. package/ThreadProvider-203b94f3.js +1695 -0
  170. package/ThreadProvider-203b94f3.js.map +1 -0
  171. package/{UserProfileContext-33a26cc4.js → UserProfileContext-c776d522.js} +1 -4
  172. package/{UserProfileContext-33a26cc4.js.map → UserProfileContext-c776d522.js.map} +1 -1
  173. package/VoiceMessageInputWrapper-77d8f487.js +170 -0
  174. package/VoiceMessageInputWrapper-77d8f487.js.map +1 -0
  175. package/VoicePlayer/context.js +7 -0
  176. package/{NotificationChannel → VoicePlayer}/context.js.map +1 -1
  177. package/VoicePlayer/useVoicePlayer.js +84 -0
  178. package/VoicePlayer/useVoicePlayer.js.map +1 -0
  179. package/VoiceRecorder/context.js +156 -0
  180. package/VoiceRecorder/context.js.map +1 -0
  181. package/VoiceRecorder/useVoiceRecorder.js +121 -0
  182. package/VoiceRecorder/useVoiceRecorder.js.map +1 -0
  183. package/WebAudioUtils-62e6d3a7.js +123 -0
  184. package/WebAudioUtils-62e6d3a7.js.map +1 -0
  185. package/{_rollupPluginBabelHelpers-ed44209e.js → _rollupPluginBabelHelpers-fb0e05a4.js} +17 -11
  186. package/_rollupPluginBabelHelpers-fb0e05a4.js.map +1 -0
  187. package/actionTypes-1db5749d.js +8 -0
  188. package/actionTypes-1db5749d.js.map +1 -0
  189. package/cjs/App.js +312 -235
  190. package/cjs/App.js.map +1 -1
  191. package/cjs/Channel/components/ChannelHeader.js +46 -41
  192. package/cjs/Channel/components/ChannelHeader.js.map +1 -1
  193. package/cjs/Channel/components/ChannelUI.js +102 -129
  194. package/cjs/Channel/components/ChannelUI.js.map +1 -1
  195. package/cjs/Channel/components/FileViewer.js +56 -52
  196. package/cjs/Channel/components/FileViewer.js.map +1 -1
  197. package/cjs/Channel/components/FrozenNotification.js +12 -7
  198. package/cjs/Channel/components/FrozenNotification.js.map +1 -1
  199. package/cjs/Channel/components/Message.js +243 -233
  200. package/cjs/Channel/components/Message.js.map +1 -1
  201. package/cjs/Channel/components/MessageInput.js +151 -128
  202. package/cjs/Channel/components/MessageInput.js.map +1 -1
  203. package/cjs/Channel/components/MessageList.js +260 -175
  204. package/cjs/Channel/components/MessageList.js.map +1 -1
  205. package/cjs/Channel/components/RemoveMessageModal.js +34 -30
  206. package/cjs/Channel/components/RemoveMessageModal.js.map +1 -1
  207. package/cjs/Channel/components/SuggestedMentionList.js +139 -193
  208. package/cjs/Channel/components/SuggestedMentionList.js.map +1 -1
  209. package/cjs/Channel/components/TypingIndicator.js +44 -61
  210. package/cjs/Channel/components/TypingIndicator.js.map +1 -1
  211. package/cjs/Channel/components/UnreadCount.js +18 -20
  212. package/cjs/Channel/components/UnreadCount.js.map +1 -1
  213. package/cjs/Channel/context.js +12 -23
  214. package/cjs/Channel/context.js.map +1 -1
  215. package/cjs/Channel.js +69 -44
  216. package/cjs/Channel.js.map +1 -1
  217. package/cjs/ChannelList/components/AddChannel.js +29 -30
  218. package/cjs/ChannelList/components/AddChannel.js.map +1 -1
  219. package/cjs/ChannelList/components/ChannelListHeader.js +32 -28
  220. package/cjs/ChannelList/components/ChannelListHeader.js.map +1 -1
  221. package/cjs/ChannelList/components/ChannelListUI.js +100 -141
  222. package/cjs/ChannelList/components/ChannelListUI.js.map +1 -1
  223. package/cjs/ChannelList/components/ChannelPreview.js +72 -82
  224. package/cjs/ChannelList/components/ChannelPreview.js.map +1 -1
  225. package/cjs/ChannelList/components/ChannelPreviewAction.js +36 -36
  226. package/cjs/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  227. package/cjs/ChannelList/context.js +7 -8
  228. package/cjs/ChannelList/context.js.map +1 -1
  229. package/cjs/ChannelList.js +32 -31
  230. package/cjs/ChannelList.js.map +1 -1
  231. package/cjs/{ChannelListProvider-65473831.js → ChannelListProvider-e0ce316a.js} +232 -284
  232. package/cjs/ChannelListProvider-e0ce316a.js.map +1 -0
  233. package/cjs/{ChannelProvider-1e08a7a9.js → ChannelProvider-0df75472.js} +657 -724
  234. package/cjs/ChannelProvider-0df75472.js.map +1 -0
  235. package/cjs/ChannelSettings/components/ChannelProfile.js +33 -46
  236. package/cjs/ChannelSettings/components/ChannelProfile.js.map +1 -1
  237. package/cjs/ChannelSettings/components/ChannelSettingsUI.js +45 -48
  238. package/cjs/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  239. package/cjs/ChannelSettings/components/EditDetailsModal.js +47 -58
  240. package/cjs/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  241. package/cjs/ChannelSettings/components/LeaveChannel.js +40 -46
  242. package/cjs/ChannelSettings/components/LeaveChannel.js.map +1 -1
  243. package/cjs/ChannelSettings/components/ModerationPanel.js +522 -605
  244. package/cjs/ChannelSettings/components/ModerationPanel.js.map +1 -1
  245. package/cjs/ChannelSettings/components/UserListItem.js +71 -72
  246. package/cjs/ChannelSettings/components/UserListItem.js.map +1 -1
  247. package/cjs/ChannelSettings/components/UserPanel.js +29 -32
  248. package/cjs/ChannelSettings/components/UserPanel.js.map +1 -1
  249. package/cjs/ChannelSettings/context.js +55 -59
  250. package/cjs/ChannelSettings/context.js.map +1 -1
  251. package/cjs/ChannelSettings.js +20 -20
  252. package/cjs/ChannelSettings.js.map +1 -1
  253. package/cjs/CreateChannel/components/CreateChannelUI.js +24 -24
  254. package/cjs/CreateChannel/components/CreateChannelUI.js.map +1 -1
  255. package/cjs/CreateChannel/components/InviteUsers.js +102 -124
  256. package/cjs/CreateChannel/components/InviteUsers.js.map +1 -1
  257. package/cjs/CreateChannel/components/SelectChannelType.js +41 -42
  258. package/cjs/CreateChannel/components/SelectChannelType.js.map +1 -1
  259. package/cjs/CreateChannel/context.js +4 -4
  260. package/cjs/CreateChannel.js +22 -21
  261. package/cjs/CreateChannel.js.map +1 -1
  262. package/cjs/CreateChannelProvider-c0fca0a5.js +52 -0
  263. package/cjs/CreateChannelProvider-c0fca0a5.js.map +1 -0
  264. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js +33 -43
  265. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  266. package/cjs/CreateOpenChannel/context.js +33 -33
  267. package/cjs/CreateOpenChannel/context.js.map +1 -1
  268. package/cjs/CreateOpenChannel.js +18 -17
  269. package/cjs/CreateOpenChannel.js.map +1 -1
  270. package/cjs/EditUserProfile/components/EditUserProfileUI.js +12 -13
  271. package/cjs/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  272. package/cjs/EditUserProfile/context.js +0 -2
  273. package/cjs/EditUserProfile/context.js.map +1 -1
  274. package/cjs/EditUserProfile.js +18 -17
  275. package/cjs/EditUserProfile.js.map +1 -1
  276. package/cjs/{LocalizationContext-8780a64e.js → LocalizationContext-0e429c3d.js} +9 -11
  277. package/cjs/{LocalizationContext-8780a64e.js.map → LocalizationContext-0e429c3d.js.map} +1 -1
  278. package/cjs/MediaQueryContext-33fc3b17.js +94 -0
  279. package/cjs/MediaQueryContext-33fc3b17.js.map +1 -0
  280. package/cjs/MemberList-a45a51c4.js +409 -0
  281. package/cjs/MemberList-a45a51c4.js.map +1 -0
  282. package/cjs/Message/context.js +40 -0
  283. package/cjs/Message/context.js.map +1 -0
  284. package/cjs/MessageSearch/components/MessageSearchUI.js +61 -70
  285. package/cjs/MessageSearch/components/MessageSearchUI.js.map +1 -1
  286. package/cjs/MessageSearch/context.js +201 -224
  287. package/cjs/MessageSearch/context.js.map +1 -1
  288. package/cjs/MessageSearch.js +46 -58
  289. package/cjs/MessageSearch.js.map +1 -1
  290. package/cjs/OpenChannel/components/FrozenChannelNotification.js +8 -6
  291. package/cjs/OpenChannel/components/FrozenChannelNotification.js.map +1 -1
  292. package/cjs/OpenChannel/components/OpenChannelHeader.js +27 -25
  293. package/cjs/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  294. package/cjs/OpenChannel/components/OpenChannelInput.js +50 -35
  295. package/cjs/OpenChannel/components/OpenChannelInput.js.map +1 -1
  296. package/cjs/OpenChannel/components/OpenChannelMessage.js +174 -191
  297. package/cjs/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  298. package/cjs/OpenChannel/components/OpenChannelMessageList.js +72 -92
  299. package/cjs/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  300. package/cjs/OpenChannel/components/OpenChannelUI.js +52 -49
  301. package/cjs/OpenChannel/components/OpenChannelUI.js.map +1 -1
  302. package/cjs/OpenChannel/context.js +8 -9
  303. package/cjs/OpenChannel/context.js.map +1 -1
  304. package/cjs/OpenChannel.js +36 -30
  305. package/cjs/OpenChannel.js.map +1 -1
  306. package/cjs/OpenChannelList/components/OpenChannelListUI.js +61 -76
  307. package/cjs/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  308. package/cjs/OpenChannelList/components/OpenChannelPreview.js +21 -22
  309. package/cjs/OpenChannelList/components/OpenChannelPreview.js.map +1 -1
  310. package/cjs/OpenChannelList/context.js +3 -4
  311. package/cjs/OpenChannelList/context.js.map +1 -1
  312. package/cjs/OpenChannelList.js +26 -24
  313. package/cjs/OpenChannelList.js.map +1 -1
  314. package/cjs/OpenChannelListProvider-fc8b53ee.js +439 -0
  315. package/cjs/OpenChannelListProvider-fc8b53ee.js.map +1 -0
  316. package/cjs/OpenChannelProvider-217a8ac2.js +1894 -0
  317. package/cjs/OpenChannelProvider-217a8ac2.js.map +1 -0
  318. package/cjs/OpenChannelSettings/components/EditDetailsModal.js +47 -56
  319. package/cjs/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  320. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +26 -31
  321. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  322. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +45 -43
  323. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  324. package/cjs/OpenChannelSettings/components/OperatorUI.js +516 -586
  325. package/cjs/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  326. package/cjs/OpenChannelSettings/components/ParticipantUI.js +15 -16
  327. package/cjs/OpenChannelSettings/components/ParticipantUI.js.map +1 -1
  328. package/cjs/OpenChannelSettings/context.js +57 -70
  329. package/cjs/OpenChannelSettings/context.js.map +1 -1
  330. package/cjs/OpenChannelSettings.js +19 -20
  331. package/cjs/OpenChannelSettings.js.map +1 -1
  332. package/cjs/{RemoveMessageModal-0da4f94b.js → RemoveMessageModal-5903f232.js} +19 -14
  333. package/cjs/RemoveMessageModal-5903f232.js.map +1 -0
  334. package/cjs/SendbirdProvider.js +748 -408
  335. package/cjs/SendbirdProvider.js.map +1 -1
  336. package/cjs/Thread/components/ParentMessageInfo.js +237 -216
  337. package/cjs/Thread/components/ParentMessageInfo.js.map +1 -1
  338. package/cjs/Thread/components/ParentMessageInfoItem.js +111 -88
  339. package/cjs/Thread/components/ParentMessageInfoItem.js.map +1 -1
  340. package/cjs/Thread/components/ThreadHeader.js +22 -23
  341. package/cjs/Thread/components/ThreadHeader.js.map +1 -1
  342. package/cjs/Thread/components/ThreadList.js +108 -83
  343. package/cjs/Thread/components/ThreadList.js.map +1 -1
  344. package/cjs/Thread/components/ThreadListItem.js +305 -275
  345. package/cjs/Thread/components/ThreadListItem.js.map +1 -1
  346. package/cjs/Thread/components/ThreadMessageInput.js +146 -113
  347. package/cjs/Thread/components/ThreadMessageInput.js.map +1 -1
  348. package/cjs/Thread/components/ThreadUI.js +170 -139
  349. package/cjs/Thread/components/ThreadUI.js.map +1 -1
  350. package/cjs/Thread/context/types.js +13 -14
  351. package/cjs/Thread/context/types.js.map +1 -1
  352. package/cjs/Thread/context.js +8 -8
  353. package/cjs/Thread.js +87 -57
  354. package/cjs/Thread.js.map +1 -1
  355. package/cjs/ThreadProvider-8ee179c2.js +1704 -0
  356. package/cjs/ThreadProvider-8ee179c2.js.map +1 -0
  357. package/cjs/{UserProfileContext-0808e413.js → UserProfileContext-87580795.js} +1 -4
  358. package/cjs/{UserProfileContext-0808e413.js.map → UserProfileContext-87580795.js.map} +1 -1
  359. package/cjs/VoiceMessageInputWrapper-4fdc8ef1.js +176 -0
  360. package/cjs/VoiceMessageInputWrapper-4fdc8ef1.js.map +1 -0
  361. package/cjs/VoicePlayer/context.js +17 -0
  362. package/cjs/{NotificationChannel → VoicePlayer}/context.js.map +1 -1
  363. package/cjs/VoicePlayer/useVoicePlayer.js +88 -0
  364. package/cjs/VoicePlayer/useVoicePlayer.js.map +1 -0
  365. package/cjs/VoiceRecorder/context.js +166 -0
  366. package/cjs/VoiceRecorder/context.js.map +1 -0
  367. package/cjs/VoiceRecorder/useVoiceRecorder.js +126 -0
  368. package/cjs/VoiceRecorder/useVoiceRecorder.js.map +1 -0
  369. package/cjs/WebAudioUtils-e226789c.js +126 -0
  370. package/cjs/WebAudioUtils-e226789c.js.map +1 -0
  371. package/cjs/{_rollupPluginBabelHelpers-bd6baf0a.js → _rollupPluginBabelHelpers-c89f311a.js} +17 -10
  372. package/cjs/_rollupPluginBabelHelpers-c89f311a.js.map +1 -0
  373. package/cjs/actionTypes-0fa2943d.js +10 -0
  374. package/cjs/actionTypes-0fa2943d.js.map +1 -0
  375. package/cjs/{color-fdbe394d.js → color-bada0fc7.js} +13 -21
  376. package/cjs/color-bada0fc7.js.map +1 -0
  377. package/cjs/{compareIds-d0c02eca.js → compareIds-ccccfe86.js} +5 -6
  378. package/cjs/compareIds-ccccfe86.js.map +1 -0
  379. package/cjs/const-a85f3364.js +20 -0
  380. package/cjs/const-a85f3364.js.map +1 -0
  381. package/cjs/{const-8785e4ad.js → const-d8cece19.js} +4 -4
  382. package/cjs/const-d8cece19.js.map +1 -0
  383. package/cjs/consts-1c3020ad.js +6 -0
  384. package/cjs/consts-1c3020ad.js.map +1 -0
  385. package/cjs/consts-1d94dc61.js +6 -0
  386. package/cjs/consts-1d94dc61.js.map +1 -0
  387. package/cjs/consts-5e0f96b3.js +41 -0
  388. package/cjs/consts-5e0f96b3.js.map +1 -0
  389. package/cjs/consts-740f60b8.js +6 -0
  390. package/cjs/consts-740f60b8.js.map +1 -0
  391. package/cjs/{context-012aecd1.js → context-8e7e8457.js} +6 -5
  392. package/cjs/{context-012aecd1.js.map → context-8e7e8457.js.map} +1 -1
  393. package/cjs/dist/index.css +1682 -1229
  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/{index-48d85d8f.js → index-016f7106.js} +1 -1
  398. package/cjs/{index-48d85d8f.js.map → index-016f7106.js.map} +1 -1
  399. package/cjs/{index-e8544e24.js → index-1613ae03.js} +29 -37
  400. package/cjs/index-1613ae03.js.map +1 -0
  401. package/cjs/index-2be14d85.js +57 -0
  402. package/cjs/index-2be14d85.js.map +1 -0
  403. package/cjs/index-3b30939e.js +79 -0
  404. package/cjs/index-3b30939e.js.map +1 -0
  405. package/cjs/index-5231fde8.js +585 -0
  406. package/cjs/index-5231fde8.js.map +1 -0
  407. package/cjs/index-648c06ed.js +330 -0
  408. package/cjs/index-648c06ed.js.map +1 -0
  409. package/cjs/{index-bdd889a2.js → index-6cb0d040.js} +11 -25
  410. package/cjs/index-6cb0d040.js.map +1 -0
  411. package/cjs/{index-ebb542c3.js → index-71fdaa1b.js} +55 -63
  412. package/cjs/index-71fdaa1b.js.map +1 -0
  413. package/cjs/{index-abe135e6.js → index-7d125728.js} +2 -2
  414. package/cjs/{index-abe135e6.js.map → index-7d125728.js.map} +1 -1
  415. package/cjs/{index-e191d245.js → index-7f6bbe0c.js} +42 -51
  416. package/cjs/index-7f6bbe0c.js.map +1 -0
  417. package/cjs/{index-5ea12b7a.js → index-869e9a94.js} +2 -2
  418. package/cjs/{index-5ea12b7a.js.map → index-869e9a94.js.map} +1 -1
  419. package/cjs/index-89d81dad.js +456 -0
  420. package/cjs/index-89d81dad.js.map +1 -0
  421. package/cjs/{index-c13771a7.js → index-8affdde5.js} +57 -3
  422. package/cjs/index-8affdde5.js.map +1 -0
  423. package/cjs/index-99f16473.js +202 -0
  424. package/cjs/index-99f16473.js.map +1 -0
  425. package/cjs/index-c9d348b6.js +367 -0
  426. package/cjs/index-c9d348b6.js.map +1 -0
  427. package/cjs/index-e8c0080f.js +161 -0
  428. package/cjs/index-e8c0080f.js.map +1 -0
  429. package/cjs/{index-08d232f8.js → index-f570d25c.js} +1 -1
  430. package/cjs/index-f570d25c.js.map +1 -0
  431. package/cjs/index.js +84 -63
  432. package/cjs/index.js.map +1 -1
  433. package/cjs/index.module-0585715f.js +6 -0
  434. package/cjs/index.module-0585715f.js.map +1 -0
  435. package/cjs/lame.all.js +2541 -0
  436. package/cjs/lame.all.js.map +1 -0
  437. package/cjs/resolvedReplyType-67e78c63.js +32 -0
  438. package/cjs/resolvedReplyType-67e78c63.js.map +1 -0
  439. package/cjs/sendbirdSelectors.js +307 -417
  440. package/cjs/sendbirdSelectors.js.map +1 -1
  441. package/cjs/{stringSet-60660a99.js → stringSet-106da549.js} +112 -90
  442. package/cjs/stringSet-106da549.js.map +1 -0
  443. package/cjs/tokenize-2aa0f876.js +164 -0
  444. package/cjs/tokenize-2aa0f876.js.map +1 -0
  445. package/cjs/topics-b384e6b3.js +18 -0
  446. package/cjs/topics-b384e6b3.js.map +1 -0
  447. package/cjs/types-e0b77c8c.js +17 -0
  448. package/cjs/types-e0b77c8c.js.map +1 -0
  449. package/cjs/ui/Accordion.js +21 -24
  450. package/cjs/ui/Accordion.js.map +1 -1
  451. package/cjs/ui/AccordionGroup.js +10 -13
  452. package/cjs/ui/AccordionGroup.js.map +1 -1
  453. package/cjs/ui/AdminMessage.js +10 -13
  454. package/cjs/ui/AdminMessage.js.map +1 -1
  455. package/cjs/ui/Avatar.js +57 -79
  456. package/cjs/ui/Avatar.js.map +1 -1
  457. package/cjs/ui/Badge.js +16 -15
  458. package/cjs/ui/Badge.js.map +1 -1
  459. package/cjs/ui/BottomSheet.js +14 -12
  460. package/cjs/ui/BottomSheet.js.map +1 -1
  461. package/cjs/ui/Button.js +20 -35
  462. package/cjs/ui/Button.js.map +1 -1
  463. package/cjs/ui/ChannelAvatar.js +38 -41
  464. package/cjs/ui/ChannelAvatar.js.map +1 -1
  465. package/cjs/ui/Checkbox.js +11 -13
  466. package/cjs/ui/Checkbox.js.map +1 -1
  467. package/cjs/ui/ConnectionStatus.js +7 -5
  468. package/cjs/ui/ConnectionStatus.js.map +1 -1
  469. package/cjs/ui/ContextMenu.js +175 -199
  470. package/cjs/ui/ContextMenu.js.map +1 -1
  471. package/cjs/ui/DateSeparator.js +12 -14
  472. package/cjs/ui/DateSeparator.js.map +1 -1
  473. package/cjs/ui/EmojiReactions.js +299 -107
  474. package/cjs/ui/EmojiReactions.js.map +1 -1
  475. package/cjs/ui/FileMessageItemBody.js +22 -23
  476. package/cjs/ui/FileMessageItemBody.js.map +1 -1
  477. package/cjs/ui/FileViewer.js +36 -36
  478. package/cjs/ui/FileViewer.js.map +1 -1
  479. package/cjs/ui/Icon.js +447 -623
  480. package/cjs/ui/Icon.js.map +1 -1
  481. package/cjs/ui/IconButton.js +20 -31
  482. package/cjs/ui/IconButton.js.map +1 -1
  483. package/cjs/ui/ImageRenderer.js +34 -43
  484. package/cjs/ui/ImageRenderer.js.map +1 -1
  485. package/cjs/ui/Input.js +16 -16
  486. package/cjs/ui/Input.js.map +1 -1
  487. package/cjs/ui/Label.js +2 -2
  488. package/cjs/ui/LinkLabel.js +4 -3
  489. package/cjs/ui/LinkLabel.js.map +1 -1
  490. package/cjs/ui/Loader.js +10 -12
  491. package/cjs/ui/Loader.js.map +1 -1
  492. package/cjs/ui/MentionLabel.js +58 -65
  493. package/cjs/ui/MentionLabel.js.map +1 -1
  494. package/cjs/ui/MentionUserLabel.js +12 -10
  495. package/cjs/ui/MentionUserLabel.js.map +1 -1
  496. package/cjs/ui/MessageContent.js +212 -548
  497. package/cjs/ui/MessageContent.js.map +1 -1
  498. package/cjs/ui/MessageInput.js +392 -119
  499. package/cjs/ui/MessageInput.js.map +1 -1
  500. package/cjs/ui/MessageItemMenu.js +83 -83
  501. package/cjs/ui/MessageItemMenu.js.map +1 -1
  502. package/cjs/ui/MessageItemReactionMenu.js +58 -62
  503. package/cjs/ui/MessageItemReactionMenu.js.map +1 -1
  504. package/cjs/ui/MessageSearchFileItem.js +56 -51
  505. package/cjs/ui/MessageSearchFileItem.js.map +1 -1
  506. package/cjs/ui/MessageSearchItem.js +42 -41
  507. package/cjs/ui/MessageSearchItem.js.map +1 -1
  508. package/cjs/ui/MessageStatus.js +10 -11
  509. package/cjs/ui/MessageStatus.js.map +1 -1
  510. package/cjs/ui/Modal.js +52 -46
  511. package/cjs/ui/Modal.js.map +1 -1
  512. package/cjs/ui/MutedAvatarOverlay.js +10 -10
  513. package/cjs/ui/MutedAvatarOverlay.js.map +1 -1
  514. package/cjs/ui/OGMessageItemBody.js +67 -63
  515. package/cjs/ui/OGMessageItemBody.js.map +1 -1
  516. package/cjs/ui/OpenChannelAdminMessage.js +8 -7
  517. package/cjs/ui/OpenChannelAdminMessage.js.map +1 -1
  518. package/cjs/ui/OpenChannelAvatar.js +18 -17
  519. package/cjs/ui/OpenChannelAvatar.js.map +1 -1
  520. package/cjs/ui/OpenchannelConversationHeader.js +17 -13
  521. package/cjs/ui/OpenchannelConversationHeader.js.map +1 -1
  522. package/cjs/ui/OpenchannelFileMessage.js +140 -151
  523. package/cjs/ui/OpenchannelFileMessage.js.map +1 -1
  524. package/cjs/ui/OpenchannelOGMessage.js +204 -233
  525. package/cjs/ui/OpenchannelOGMessage.js.map +1 -1
  526. package/cjs/ui/OpenchannelThumbnailMessage.js +215 -222
  527. package/cjs/ui/OpenchannelThumbnailMessage.js.map +1 -1
  528. package/cjs/ui/OpenchannelUserMessage.js +168 -178
  529. package/cjs/ui/OpenchannelUserMessage.js.map +1 -1
  530. package/cjs/ui/PlaceHolder.js +5 -6
  531. package/cjs/ui/PlaceHolder.js.map +1 -1
  532. package/cjs/ui/PlaybackTime.js +35 -0
  533. package/cjs/ui/PlaybackTime.js.map +1 -0
  534. package/cjs/ui/ProgressBar.js +40 -0
  535. package/cjs/ui/ProgressBar.js.map +1 -0
  536. package/cjs/ui/QuoteMessage.js +50 -44
  537. package/cjs/ui/QuoteMessage.js.map +1 -1
  538. package/cjs/ui/QuoteMessageInput.js +31 -29
  539. package/cjs/ui/QuoteMessageInput.js.map +1 -1
  540. package/cjs/ui/ReactionBadge.js +13 -21
  541. package/cjs/ui/ReactionBadge.js.map +1 -1
  542. package/cjs/ui/ReactionButton.js +30 -27
  543. package/cjs/ui/ReactionButton.js.map +1 -1
  544. package/cjs/ui/SortByRow.js +14 -18
  545. package/cjs/ui/SortByRow.js.map +1 -1
  546. package/cjs/ui/TextButton.js +13 -21
  547. package/cjs/ui/TextButton.js.map +1 -1
  548. package/cjs/ui/TextMessageItemBody.js +41 -48
  549. package/cjs/ui/TextMessageItemBody.js.map +1 -1
  550. package/cjs/ui/ThreadReplies.js +25 -22
  551. package/cjs/ui/ThreadReplies.js.map +1 -1
  552. package/cjs/ui/ThumbnailMessageItemBody.js +36 -45
  553. package/cjs/ui/ThumbnailMessageItemBody.js.map +1 -1
  554. package/cjs/ui/Toggle.js +202 -0
  555. package/cjs/ui/Toggle.js.map +1 -0
  556. package/cjs/ui/Tooltip.js +8 -9
  557. package/cjs/ui/Tooltip.js.map +1 -1
  558. package/cjs/ui/TooltipWrapper.js +17 -20
  559. package/cjs/ui/TooltipWrapper.js.map +1 -1
  560. package/cjs/ui/UnknownMessageItemBody.js +21 -22
  561. package/cjs/ui/UnknownMessageItemBody.js.map +1 -1
  562. package/cjs/ui/UserListItem.js +76 -76
  563. package/cjs/ui/UserListItem.js.map +1 -1
  564. package/cjs/ui/UserProfile.js +31 -29
  565. package/cjs/ui/UserProfile.js.map +1 -1
  566. package/cjs/ui/VoiceMessageItemBody.js +119 -0
  567. package/cjs/ui/VoiceMessageItemBody.js.map +1 -0
  568. package/cjs/ui/VoiceMessgeInput.js +22 -0
  569. package/cjs/ui/VoiceMessgeInput.js.map +1 -0
  570. package/cjs/ui/Word.js +31 -39
  571. package/cjs/ui/Word.js.map +1 -1
  572. package/cjs/useDirtyGetMentions-b8ca5675.js +77 -0
  573. package/cjs/useDirtyGetMentions-b8ca5675.js.map +1 -0
  574. package/cjs/useLongPress-8037894e.js +87 -0
  575. package/cjs/useLongPress-8037894e.js.map +1 -0
  576. package/cjs/useSendbirdStateContext.js +2 -3
  577. package/cjs/useSendbirdStateContext.js.map +1 -1
  578. package/cjs/utils/message/getOutgoingMessageState.js +16 -21
  579. package/cjs/utils/message/getOutgoingMessageState.js.map +1 -1
  580. package/cjs/utils/message/isVoiceMessage.js +12 -0
  581. package/cjs/utils/message/isVoiceMessage.js.map +1 -0
  582. package/cjs/{utils-ba58eacf.js → utils-01ff5332.js} +3 -7
  583. package/cjs/{utils-ba58eacf.js.map → utils-01ff5332.js.map} +1 -1
  584. package/cjs/utils-2edcddc8.js +35 -0
  585. package/cjs/utils-2edcddc8.js.map +1 -0
  586. package/cjs/utils-5ac3db44.js +31 -0
  587. package/cjs/utils-5ac3db44.js.map +1 -0
  588. package/cjs/{utils-708aa730.js → utils-ad7b5b82.js} +1 -1
  589. package/cjs/{utils-708aa730.js.map → utils-ad7b5b82.js.map} +1 -1
  590. package/cjs/uuid-12b01f73.js +15 -0
  591. package/cjs/{uuid-a9006ea2.js.map → uuid-12b01f73.js.map} +1 -1
  592. package/cjs/withSendbird.js +5 -6
  593. package/cjs/withSendbird.js.map +1 -1
  594. package/{color-c39702d1.js → color-347926b6.js} +5 -14
  595. package/{color-c39702d1.js.map → color-347926b6.js.map} +1 -1
  596. package/{compareIds-063e5503.js → compareIds-3a43c11b.js} +5 -6
  597. package/compareIds-3a43c11b.js.map +1 -0
  598. package/const-18dba7a4.js +13 -0
  599. package/const-18dba7a4.js.map +1 -0
  600. package/{const-1510a671.js → const-c608f749.js} +4 -4
  601. package/const-c608f749.js.map +1 -0
  602. package/consts-6bca01c7.js +4 -0
  603. package/consts-6bca01c7.js.map +1 -0
  604. package/consts-7a169a0f.js +4 -0
  605. package/consts-7a169a0f.js.map +1 -0
  606. package/consts-c1baf70a.js +27 -0
  607. package/consts-c1baf70a.js.map +1 -0
  608. package/consts-fb4d475a.js +4 -0
  609. package/consts-fb4d475a.js.map +1 -0
  610. package/context-786ef1a2.js +13 -0
  611. package/{context-d5dc28c9.js.map → context-786ef1a2.js.map} +1 -1
  612. package/dist/index.css +1682 -1229
  613. package/dist/index.css.map +1 -1
  614. package/handlers/OpenChannelHandler.js.map +1 -1
  615. package/handlers/SessionHandler.js.map +1 -1
  616. package/{index-7c1f570b.js → index-06b854f7.js} +55 -63
  617. package/index-06b854f7.js.map +1 -0
  618. package/index-2673effb.js +360 -0
  619. package/index-2673effb.js.map +1 -0
  620. package/{index-5e776774.js → index-319984d0.js} +1 -1
  621. package/{index-5e776774.js.map → index-319984d0.js.map} +1 -1
  622. package/{index-eadca08d.js → index-4455855e.js} +2 -2
  623. package/{index-eadca08d.js.map → index-4455855e.js.map} +1 -1
  624. package/index-6663ce18.js +450 -0
  625. package/index-6663ce18.js.map +1 -0
  626. package/{index-b19486f5.js → index-6c252d25.js} +2 -2
  627. package/{index-b19486f5.js.map → index-6c252d25.js.map} +1 -1
  628. package/index-71a20863.js +320 -0
  629. package/index-71a20863.js.map +1 -0
  630. package/index-7d71b26c.js +154 -0
  631. package/index-7d71b26c.js.map +1 -0
  632. package/{index-d81c515b.js → index-9a4e0846.js} +1 -1
  633. package/index-9a4e0846.js.map +1 -0
  634. package/{index-fd15e3b0.js → index-9cd77b08.js} +29 -37
  635. package/index-9cd77b08.js.map +1 -0
  636. package/index-c149ea48.js +187 -0
  637. package/index-c149ea48.js.map +1 -0
  638. package/index-cf3939c6.js +76 -0
  639. package/index-cf3939c6.js.map +1 -0
  640. package/index-cf859f03.js +540 -0
  641. package/index-cf859f03.js.map +1 -0
  642. package/{index-95ac9232.js → index-e33f7f55.js} +11 -25
  643. package/index-e33f7f55.js.map +1 -0
  644. package/{index-b8de16d6.js → index-eabd1e7e.js} +39 -48
  645. package/index-eabd1e7e.js.map +1 -0
  646. package/index-ebb62af1.js +51 -0
  647. package/index-ebb62af1.js.map +1 -0
  648. package/{index-0fd24497.js → index-edf844f0.js} +57 -4
  649. package/index-edf844f0.js.map +1 -0
  650. package/index.d.ts +176 -124
  651. package/index.js +84 -63
  652. package/index.js.map +1 -1
  653. package/index.module-6b7ed635.js +4 -0
  654. package/index.module-6b7ed635.js.map +1 -0
  655. package/lame.all.js +2537 -0
  656. package/lame.all.js.map +1 -0
  657. package/package.json +62 -41
  658. package/resolvedReplyType-8776d777.js +29 -0
  659. package/resolvedReplyType-8776d777.js.map +1 -0
  660. package/sendbirdSelectors.js +307 -417
  661. package/sendbirdSelectors.js.map +1 -1
  662. package/{stringSet-7ace5726.js → stringSet-e0ee1265.js} +112 -90
  663. package/stringSet-e0ee1265.js.map +1 -0
  664. package/tokenize-1b053c86.js +159 -0
  665. package/tokenize-1b053c86.js.map +1 -0
  666. package/topics-70f569e9.js +16 -0
  667. package/topics-70f569e9.js.map +1 -0
  668. package/types-77bbdda6.js +15 -0
  669. package/types-77bbdda6.js.map +1 -0
  670. package/ui/Accordion.js +21 -24
  671. package/ui/Accordion.js.map +1 -1
  672. package/ui/AccordionGroup.js +10 -13
  673. package/ui/AccordionGroup.js.map +1 -1
  674. package/ui/AdminMessage.js +10 -13
  675. package/ui/AdminMessage.js.map +1 -1
  676. package/ui/Avatar.js +57 -79
  677. package/ui/Avatar.js.map +1 -1
  678. package/ui/Badge.js +16 -15
  679. package/ui/Badge.js.map +1 -1
  680. package/ui/BottomSheet.js +14 -12
  681. package/ui/BottomSheet.js.map +1 -1
  682. package/ui/Button.js +20 -35
  683. package/ui/Button.js.map +1 -1
  684. package/ui/ChannelAvatar.js +38 -41
  685. package/ui/ChannelAvatar.js.map +1 -1
  686. package/ui/Checkbox.js +11 -13
  687. package/ui/Checkbox.js.map +1 -1
  688. package/ui/ConnectionStatus.js +7 -5
  689. package/ui/ConnectionStatus.js.map +1 -1
  690. package/ui/ContextMenu.js +176 -200
  691. package/ui/ContextMenu.js.map +1 -1
  692. package/ui/DateSeparator.js +12 -14
  693. package/ui/DateSeparator.js.map +1 -1
  694. package/ui/EmojiReactions.js +300 -108
  695. package/ui/EmojiReactions.js.map +1 -1
  696. package/ui/FileMessageItemBody.js +22 -23
  697. package/ui/FileMessageItemBody.js.map +1 -1
  698. package/ui/FileViewer.js +36 -36
  699. package/ui/FileViewer.js.map +1 -1
  700. package/ui/Icon.js +448 -622
  701. package/ui/Icon.js.map +1 -1
  702. package/ui/IconButton.js +20 -31
  703. package/ui/IconButton.js.map +1 -1
  704. package/ui/ImageRenderer.js +34 -43
  705. package/ui/ImageRenderer.js.map +1 -1
  706. package/ui/Input.js +16 -16
  707. package/ui/Input.js.map +1 -1
  708. package/ui/Label.js +2 -2
  709. package/ui/LinkLabel.js +4 -3
  710. package/ui/LinkLabel.js.map +1 -1
  711. package/ui/Loader.js +10 -12
  712. package/ui/Loader.js.map +1 -1
  713. package/ui/MentionLabel.js +58 -65
  714. package/ui/MentionLabel.js.map +1 -1
  715. package/ui/MentionUserLabel.js +12 -10
  716. package/ui/MentionUserLabel.js.map +1 -1
  717. package/ui/MessageContent.js +215 -551
  718. package/ui/MessageContent.js.map +1 -1
  719. package/ui/MessageInput.js +392 -120
  720. package/ui/MessageInput.js.map +1 -1
  721. package/ui/MessageItemMenu.js +83 -83
  722. package/ui/MessageItemMenu.js.map +1 -1
  723. package/ui/MessageItemReactionMenu.js +58 -62
  724. package/ui/MessageItemReactionMenu.js.map +1 -1
  725. package/ui/MessageSearchFileItem.js +55 -50
  726. package/ui/MessageSearchFileItem.js.map +1 -1
  727. package/ui/MessageSearchItem.js +41 -40
  728. package/ui/MessageSearchItem.js.map +1 -1
  729. package/ui/MessageStatus.js +10 -11
  730. package/ui/MessageStatus.js.map +1 -1
  731. package/ui/Modal.js +52 -46
  732. package/ui/Modal.js.map +1 -1
  733. package/ui/MutedAvatarOverlay.js +10 -10
  734. package/ui/MutedAvatarOverlay.js.map +1 -1
  735. package/ui/OGMessageItemBody.js +68 -64
  736. package/ui/OGMessageItemBody.js.map +1 -1
  737. package/ui/OpenChannelAdminMessage.js +8 -7
  738. package/ui/OpenChannelAdminMessage.js.map +1 -1
  739. package/ui/OpenChannelAvatar.js +18 -17
  740. package/ui/OpenChannelAvatar.js.map +1 -1
  741. package/ui/OpenchannelConversationHeader.js +17 -13
  742. package/ui/OpenchannelConversationHeader.js.map +1 -1
  743. package/ui/OpenchannelFileMessage.js +140 -151
  744. package/ui/OpenchannelFileMessage.js.map +1 -1
  745. package/ui/OpenchannelOGMessage.js +204 -233
  746. package/ui/OpenchannelOGMessage.js.map +1 -1
  747. package/ui/OpenchannelThumbnailMessage.js +215 -222
  748. package/ui/OpenchannelThumbnailMessage.js.map +1 -1
  749. package/ui/OpenchannelUserMessage.js +168 -178
  750. package/ui/OpenchannelUserMessage.js.map +1 -1
  751. package/ui/PlaceHolder.js +5 -6
  752. package/ui/PlaceHolder.js.map +1 -1
  753. package/ui/PlaybackTime.js +26 -0
  754. package/ui/PlaybackTime.js.map +1 -0
  755. package/ui/ProgressBar.js +30 -0
  756. package/ui/ProgressBar.js.map +1 -0
  757. package/ui/QuoteMessage.js +50 -44
  758. package/ui/QuoteMessage.js.map +1 -1
  759. package/ui/QuoteMessageInput.js +31 -29
  760. package/ui/QuoteMessageInput.js.map +1 -1
  761. package/ui/ReactionBadge.js +13 -21
  762. package/ui/ReactionBadge.js.map +1 -1
  763. package/ui/ReactionButton.js +30 -27
  764. package/ui/ReactionButton.js.map +1 -1
  765. package/ui/SortByRow.js +14 -18
  766. package/ui/SortByRow.js.map +1 -1
  767. package/ui/TextButton.js +13 -21
  768. package/ui/TextButton.js.map +1 -1
  769. package/ui/TextMessageItemBody.js +41 -48
  770. package/ui/TextMessageItemBody.js.map +1 -1
  771. package/ui/ThreadReplies.js +25 -22
  772. package/ui/ThreadReplies.js.map +1 -1
  773. package/ui/ThumbnailMessageItemBody.js +36 -45
  774. package/ui/ThumbnailMessageItemBody.js.map +1 -1
  775. package/ui/Toggle.js +191 -0
  776. package/ui/Toggle.js.map +1 -0
  777. package/ui/Tooltip.js +8 -9
  778. package/ui/Tooltip.js.map +1 -1
  779. package/ui/TooltipWrapper.js +17 -20
  780. package/ui/TooltipWrapper.js.map +1 -1
  781. package/ui/UnknownMessageItemBody.js +21 -22
  782. package/ui/UnknownMessageItemBody.js.map +1 -1
  783. package/ui/UserListItem.js +76 -76
  784. package/ui/UserListItem.js.map +1 -1
  785. package/ui/UserProfile.js +31 -29
  786. package/ui/UserProfile.js.map +1 -1
  787. package/ui/VoiceMessageItemBody.js +110 -0
  788. package/ui/VoiceMessageItemBody.js.map +1 -0
  789. package/ui/VoiceMessgeInput.js +14 -0
  790. package/ui/VoiceMessgeInput.js.map +1 -0
  791. package/ui/Word.js +31 -39
  792. package/ui/Word.js.map +1 -1
  793. package/useDirtyGetMentions-f00f1f94.js +75 -0
  794. package/useDirtyGetMentions-f00f1f94.js.map +1 -0
  795. package/useLongPress-1ab49410.js +85 -0
  796. package/useLongPress-1ab49410.js.map +1 -0
  797. package/useSendbirdStateContext.js +2 -3
  798. package/useSendbirdStateContext.js.map +1 -1
  799. package/utils/message/getOutgoingMessageState.js +9 -15
  800. package/utils/message/getOutgoingMessageState.js.map +1 -1
  801. package/utils/message/isVoiceMessage.js +8 -0
  802. package/utils/message/isVoiceMessage.js.map +1 -0
  803. package/{utils-30c326f7.js → utils-56cb7de5.js} +1 -1
  804. package/{utils-30c326f7.js.map → utils-56cb7de5.js.map} +1 -1
  805. package/utils-77f7e8b2.js +29 -0
  806. package/utils-77f7e8b2.js.map +1 -0
  807. package/{utils-ded73fa5.js → utils-7f3d0d8c.js} +3 -7
  808. package/{utils-ded73fa5.js.map → utils-7f3d0d8c.js.map} +1 -1
  809. package/utils-af9b1c06.js +31 -0
  810. package/utils-af9b1c06.js.map +1 -0
  811. package/uuid-92d22300.js +13 -0
  812. package/{uuid-968941a0.js.map → uuid-92d22300.js.map} +1 -1
  813. package/withSendbird.js +5 -6
  814. package/withSendbird.js.map +1 -1
  815. package/ChannelListProvider-ade145a7.js.map +0 -1
  816. package/ChannelProvider-c9db10c0.js.map +0 -1
  817. package/CreateChannelProvider-be2dfe96.js +0 -55
  818. package/CreateChannelProvider-be2dfe96.js.map +0 -1
  819. package/LocalizationContext-60894e38.js +0 -22
  820. package/MediaQueryContext-bcf72e28.js +0 -90
  821. package/MediaQueryContext-bcf72e28.js.map +0 -1
  822. package/MemberList-ce1fd162.js +0 -435
  823. package/MemberList-ce1fd162.js.map +0 -1
  824. package/NotificationChannel/components/NotificationChannelUI.js +0 -119
  825. package/NotificationChannel/components/NotificationChannelUI.js.map +0 -1
  826. package/NotificationChannel/components/NotificationList.js +0 -111
  827. package/NotificationChannel/components/NotificationList.js.map +0 -1
  828. package/NotificationChannel/components/NotificationMessageWrap.js +0 -136
  829. package/NotificationChannel/components/NotificationMessageWrap.js.map +0 -1
  830. package/NotificationChannel/context.js +0 -12
  831. package/NotificationChannel.js +0 -58
  832. package/NotificationChannel.js.map +0 -1
  833. package/NotificationChannelProvider-2cb7ca21.js +0 -535
  834. package/NotificationChannelProvider-2cb7ca21.js.map +0 -1
  835. package/OpenChannelListProvider-0bdafda1.js +0 -434
  836. package/OpenChannelListProvider-0bdafda1.js.map +0 -1
  837. package/OpenChannelProvider-a72c6fb7.js +0 -2000
  838. package/OpenChannelProvider-a72c6fb7.js.map +0 -1
  839. package/RemoveMessageModal-b025d4a7.js +0 -31
  840. package/RemoveMessageModal-b025d4a7.js.map +0 -1
  841. package/ThreadProvider-de5a7889.js +0 -1644
  842. package/ThreadProvider-de5a7889.js.map +0 -1
  843. package/_rollupPluginBabelHelpers-ed44209e.js.map +0 -1
  844. package/actionTypes-aa58fd27.js +0 -6
  845. package/actionTypes-aa58fd27.js.map +0 -1
  846. package/cjs/ChannelListProvider-65473831.js.map +0 -1
  847. package/cjs/ChannelProvider-1e08a7a9.js.map +0 -1
  848. package/cjs/CreateChannelProvider-cbf490c6.js +0 -62
  849. package/cjs/CreateChannelProvider-cbf490c6.js.map +0 -1
  850. package/cjs/MediaQueryContext-e455934a.js +0 -97
  851. package/cjs/MediaQueryContext-e455934a.js.map +0 -1
  852. package/cjs/MemberList-aee91fce.js +0 -441
  853. package/cjs/MemberList-aee91fce.js.map +0 -1
  854. package/cjs/NotificationChannel/components/NotificationChannelUI.js +0 -125
  855. package/cjs/NotificationChannel/components/NotificationChannelUI.js.map +0 -1
  856. package/cjs/NotificationChannel/components/NotificationList.js +0 -117
  857. package/cjs/NotificationChannel/components/NotificationList.js.map +0 -1
  858. package/cjs/NotificationChannel/components/NotificationMessageWrap.js +0 -142
  859. package/cjs/NotificationChannel/components/NotificationMessageWrap.js.map +0 -1
  860. package/cjs/NotificationChannel/context.js +0 -21
  861. package/cjs/NotificationChannel.js +0 -64
  862. package/cjs/NotificationChannel.js.map +0 -1
  863. package/cjs/NotificationChannelProvider-4cc9575f.js +0 -543
  864. package/cjs/NotificationChannelProvider-4cc9575f.js.map +0 -1
  865. package/cjs/OpenChannelListProvider-4aab4391.js +0 -443
  866. package/cjs/OpenChannelListProvider-4aab4391.js.map +0 -1
  867. package/cjs/OpenChannelProvider-a763b71c.js +0 -2009
  868. package/cjs/OpenChannelProvider-a763b71c.js.map +0 -1
  869. package/cjs/RemoveMessageModal-0da4f94b.js.map +0 -1
  870. package/cjs/ThreadProvider-51be09a5.js +0 -1653
  871. package/cjs/ThreadProvider-51be09a5.js.map +0 -1
  872. package/cjs/_rollupPluginBabelHelpers-bd6baf0a.js.map +0 -1
  873. package/cjs/actionTypes-561bdde9.js +0 -10
  874. package/cjs/actionTypes-561bdde9.js.map +0 -1
  875. package/cjs/color-fdbe394d.js.map +0 -1
  876. package/cjs/compareIds-d0c02eca.js.map +0 -1
  877. package/cjs/const-8785e4ad.js.map +0 -1
  878. package/cjs/const-beb25e10.js +0 -20
  879. package/cjs/const-beb25e10.js.map +0 -1
  880. package/cjs/index-08d232f8.js.map +0 -1
  881. package/cjs/index-8a4b2f10.js +0 -59
  882. package/cjs/index-8a4b2f10.js.map +0 -1
  883. package/cjs/index-8c350889.js +0 -194
  884. package/cjs/index-8c350889.js.map +0 -1
  885. package/cjs/index-b3371ef2.js +0 -701
  886. package/cjs/index-b3371ef2.js.map +0 -1
  887. package/cjs/index-bdd889a2.js.map +0 -1
  888. package/cjs/index-c13771a7.js.map +0 -1
  889. package/cjs/index-e191d245.js.map +0 -1
  890. package/cjs/index-e8544e24.js.map +0 -1
  891. package/cjs/index-ebb542c3.js.map +0 -1
  892. package/cjs/index-f032bd2c.js +0 -360
  893. package/cjs/index-f032bd2c.js.map +0 -1
  894. package/cjs/stringSet-60660a99.js.map +0 -1
  895. package/cjs/topics-f3f74edc.js +0 -22
  896. package/cjs/topics-f3f74edc.js.map +0 -1
  897. package/cjs/tslib.es6-5a7eb30d.js +0 -110
  898. package/cjs/tslib.es6-5a7eb30d.js.map +0 -1
  899. package/cjs/useLongPress-e7140087.js +0 -118
  900. package/cjs/useLongPress-e7140087.js.map +0 -1
  901. package/cjs/utils-693dd952.js +0 -38
  902. package/cjs/utils-693dd952.js.map +0 -1
  903. package/cjs/utils-b6001dd4.js +0 -32
  904. package/cjs/utils-b6001dd4.js.map +0 -1
  905. package/cjs/uuid-a9006ea2.js +0 -19
  906. package/compareIds-063e5503.js.map +0 -1
  907. package/const-14919575.js +0 -14
  908. package/const-14919575.js.map +0 -1
  909. package/const-1510a671.js.map +0 -1
  910. package/context-d5dc28c9.js +0 -12
  911. package/index-0fd24497.js.map +0 -1
  912. package/index-2561104e.js +0 -179
  913. package/index-2561104e.js.map +0 -1
  914. package/index-54843058.js +0 -57
  915. package/index-54843058.js.map +0 -1
  916. package/index-58e5d82d.js +0 -662
  917. package/index-58e5d82d.js.map +0 -1
  918. package/index-7c1f570b.js.map +0 -1
  919. package/index-95ac9232.js.map +0 -1
  920. package/index-b8de16d6.js.map +0 -1
  921. package/index-d07faed8.js +0 -353
  922. package/index-d07faed8.js.map +0 -1
  923. package/index-d81c515b.js.map +0 -1
  924. package/index-fd15e3b0.js.map +0 -1
  925. package/stringSet-7ace5726.js.map +0 -1
  926. package/topics-d390daf6.js +0 -13
  927. package/topics-d390daf6.js.map +0 -1
  928. package/tslib.es6-d9fa3716.js +0 -104
  929. package/tslib.es6-d9fa3716.js.map +0 -1
  930. package/useLongPress-7d9a5f67.js +0 -116
  931. package/useLongPress-7d9a5f67.js.map +0 -1
  932. package/utils-40ce4da5.js +0 -34
  933. package/utils-40ce4da5.js.map +0 -1
  934. package/utils-d485030c.js +0 -30
  935. package/utils-d485030c.js.map +0 -1
  936. package/uuid-968941a0.js +0 -17
@@ -1,39 +1,288 @@
1
- import { _ as _objectSpread2 } from '../_rollupPluginBabelHelpers-ed44209e.js';
2
- import React__default, { useContext, useRef, useState, useMemo, useEffect, useCallback } from 'react';
3
- import { renderToString } from 'react-dom/server';
1
+ import { _ as _objectSpread2 } from '../_rollupPluginBabelHelpers-fb0e05a4.js';
2
+ import React__default, { useCallback, useRef, useState, useMemo, useEffect } from 'react';
4
3
  import PropTypes from 'prop-types';
5
- import { N as NodeTypes, M as MessageInputKeys, a as NodeNames } from '../const-1510a671.js';
6
- import { U as USER_MENTION_TEMP_CHAR } from '../const-14919575.js';
4
+ import { N as NodeTypes, M as MessageInputKeys, a as NodeNames } from '../const-c608f749.js';
5
+ import { U as USER_MENTION_TEMP_CHAR } from '../const-18dba7a4.js';
7
6
  import IconButton from './IconButton.js';
8
7
  import Button, { ButtonTypes, ButtonSizes } from './Button.js';
9
- import MentionUserLabel from './MentionUserLabel.js';
8
+ import DOMPurify from 'dompurify';
9
+ import { M as MENTION_USER_LABEL_CLASSNAME } from '../consts-fb4d475a.js';
10
10
  import Icon, { IconTypes, IconColors } from './Icon.js';
11
- import { L as Label, a as LabelTypography, b as LabelColors } from '../index-95ac9232.js';
12
- import { a as LocalizationContext } from '../LocalizationContext-60894e38.js';
13
- import { j as convertWordToStringObj, S as StringObjType, k as arrayEqual, h as getClassName } from '../index-58e5d82d.js';
14
- import '../tslib.es6-d9fa3716.js';
15
- import '../stringSet-7ace5726.js';
16
- import '../index-5e776774.js';
11
+ import { L as Label, a as LabelTypography, b as LabelColors } from '../index-e33f7f55.js';
12
+ import { u as useLocalization } from '../LocalizationContext-04c0c9dc.js';
13
+ import useSendbirdStateContext from '../useSendbirdStateContext.js';
14
+ import { j as arrayEqual, h as getClassName } from '../index-cf859f03.js';
15
+ import { T as TEXT_MESSAGE_BODY_CLASSNAME } from '../consts-7a169a0f.js';
16
+ import { O as OG_MESSAGE_BODY_CLASSNAME } from '../consts-6bca01c7.js';
17
+ import { t as tokenizeMessage, T as TOKEN_TYPES, U as USER_MENTION_PREFIX } from '../tokenize-1b053c86.js';
18
+ import { K } from '../index.module-6b7ed635.js';
19
+ import '../stringSet-e0ee1265.js';
20
+ import '../index-319984d0.js';
21
+ import '../withSendbird.js';
17
22
  import '../utils/message/getOutgoingMessageState.js';
18
23
 
24
+ // cretes a sanitized string from a mention user label
25
+ function renderToString(_ref) {
26
+ let {
27
+ userId,
28
+ nickname
29
+ } = _ref;
30
+ // donot change this template, it wont work
31
+ const el = `<span data-userid="${userId}" data-sb-mention="true" class="${MENTION_USER_LABEL_CLASSNAME}">${nickname}</span>`;
32
+ const purifier = DOMPurify(window);
33
+ const sanitized_ = purifier.sanitize(el);
34
+ const token = sanitized_.split(' ');
35
+ const [spanTag, ...rest] = token;
36
+ // we do this because DOMPurify removes the contenteditable attribute
37
+ const sanitized = [spanTag, 'contenteditable="false"', ...rest].join(' ');
38
+ return sanitized;
39
+ }
40
+
19
41
  // https://davidwalsh.name/javascript-debounce-function
20
42
 
43
+ // Sanitize that special characters of HTML tags cause XSS issue
21
44
  const sanitizeString = str => str === null || str === void 0 ? void 0 : str.replace(/[\u00A0-\u9999<>]/gim, i => ''.concat('&#', i.charCodeAt(0), ';'));
22
45
 
46
+ /**
47
+ * NodeList cannot be used with Array methods
48
+ * @param {childNodes} NodeList
49
+ * @returns Array of child nodes
50
+ */
51
+ const nodeListToArray = childNodes => {
52
+ try {
53
+ return Array.from(childNodes);
54
+ } catch (error) {
55
+ return [];
56
+ }
57
+ };
58
+
59
+ function inserTemplateToDOM(templateList) {
60
+ const nodes = templateList.map(template => {
61
+ const {
62
+ text,
63
+ userId
64
+ } = template;
65
+ if (userId) {
66
+ return renderToString({
67
+ userId,
68
+ nickname: text
69
+ });
70
+ }
71
+ return sanitizeString(text);
72
+ }).join(' ')
73
+ // add a space at the end of the mention, else cursor/caret wont work
74
+ .concat(' ');
75
+ document.execCommand('insertHTML', false, nodes);
76
+ }
77
+
78
+ const PASTE_NODE = 'sendbird-uikit__paste-node';
79
+ const TEXT_MESSAGE_CLASS = 'sendbird-word';
80
+ const MENTION_CLASS = 'sendbird-word__mention';
81
+ const MENTION_CLASS_IN_INPUT = 'sendbird-mention-user-label';
82
+ const MENTION_CLASS_COMBINED_QUERY = `.${MENTION_CLASS}, .${MENTION_CLASS_IN_INPUT}`;
83
+
84
+ function querySelectorIncludingSelf(master, selector) {
85
+ const result = [master, ...Array.from(master.querySelectorAll(selector))].find(el => el.matches(selector));
86
+ return result;
87
+ }
88
+
89
+ // Pasted dom node can be OG_MESSAGE or partial message or full message
90
+ // full messsage would have TEXT_MESSAGE_BODY_CLASSNAME and have childNodes
91
+ // partial message would not have TEXT_MESSAGE_BODY_CLASSNAME
92
+ function getLeafNodes(master) {
93
+ // og message
94
+ const ogMessage = querySelectorIncludingSelf(master, `.${OG_MESSAGE_BODY_CLASSNAME}`);
95
+ if (ogMessage) {
96
+ return nodeListToArray(ogMessage.childNodes);
97
+ }
98
+ const textMessageBody = querySelectorIncludingSelf(master, `.${TEXT_MESSAGE_BODY_CLASSNAME}`);
99
+ if (textMessageBody) {
100
+ return nodeListToArray(textMessageBody.childNodes);
101
+ }
102
+ return nodeListToArray(master.childNodes);
103
+ }
104
+ function createPasteNode() {
105
+ const pasteNode = document.body.querySelector(`#${PASTE_NODE}`);
106
+ // remove existing paste node
107
+ if (pasteNode) {
108
+ pasteNode === null || pasteNode === void 0 ? void 0 : pasteNode.remove();
109
+ }
110
+
111
+ // create new paste node and return
112
+ const node = document.createElement('div');
113
+ node.id = PASTE_NODE;
114
+ node.style.display = 'none';
115
+ return node;
116
+ }
117
+ function hasMention(parent) {
118
+ return parent !== null && parent !== void 0 && parent.querySelector(MENTION_CLASS_COMBINED_QUERY) ? true : false;
119
+ }
120
+ const extractTextFromNodes = nodes => {
121
+ let text = '';
122
+ nodes.forEach(node => {
123
+ // to preserve space between words
124
+ const textNodes = node.querySelectorAll(`.${TEXT_MESSAGE_CLASS}`);
125
+ if (textNodes.length > 0) {
126
+ text += extractTextFromNodes(Array.from(textNodes)) + ' ';
127
+ }
128
+ text += node.innerText + ' ';
129
+ });
130
+ return text;
131
+ };
132
+ function domToMessageTemplate(nodeArray) {
133
+ const templates = nodeArray === null || nodeArray === void 0 ? void 0 : nodeArray.reduce((accumulator, currentValue) => {
134
+ // currentValue can be node(from messageBody or messageInput) or text
135
+ let mentionNode;
136
+ // this looks awkward, but it is a fallback to set default text
137
+ let text = currentValue === null || currentValue === void 0 ? void 0 : currentValue.innerText;
138
+
139
+ // if text node, set text
140
+ if (currentValue instanceof Text) {
141
+ mentionNode = false;
142
+ text = currentValue.textContent;
143
+ }
144
+ if (currentValue instanceof HTMLElement) {
145
+ mentionNode = currentValue.classList.contains(MENTION_CLASS) || currentValue.classList.contains(MENTION_CLASS_IN_INPUT) ? currentValue : currentValue.querySelector(MENTION_CLASS_COMBINED_QUERY);
146
+ }
147
+
148
+ // if mentionNode is not null, it is a mention
149
+ if (mentionNode) {
150
+ var _mentionNode$dataset;
151
+ const text = currentValue === null || currentValue === void 0 ? void 0 : currentValue.innerText;
152
+ const userId = (_mentionNode$dataset = mentionNode.dataset) === null || _mentionNode$dataset === void 0 ? void 0 : _mentionNode$dataset.userid;
153
+ return [...accumulator, {
154
+ text,
155
+ userId
156
+ }];
157
+ }
158
+ return [...accumulator, {
159
+ text
160
+ }];
161
+ }, []);
162
+ return templates;
163
+ }
164
+ function getUsersFromWords(templates, channel) {
165
+ const userMap = {};
166
+ const users = channel.members;
167
+ templates.forEach(template => {
168
+ if (template.userId) {
169
+ const mentionedMember = users.find(user => user.userId === template.userId);
170
+ // Object.values would return array-> [undefined] if the user is not in the channel
171
+ if (mentionedMember) {
172
+ userMap[template.userId] = mentionedMember;
173
+ }
174
+ }
175
+ });
176
+ return Object.values(userMap);
177
+ }
178
+
179
+ // conditions to test:
180
+ // 1. paste simple text
181
+ // 2. paste text with mention
182
+ // 3. paste text with mention and text
183
+ // 4. paste text with mention and text and paste again before and after
184
+ // 5. copy message with mention(only one mention, no other text) and paste
185
+ // 6. copy message with mention from input and paste(before and after)
186
+ function usePaste(_ref) {
187
+ let {
188
+ ref,
189
+ setIsInput,
190
+ setHeight,
191
+ channel,
192
+ setMentionedUsers
193
+ } = _ref;
194
+ return useCallback(e => {
195
+ e.preventDefault();
196
+ const html = e === null || e === void 0 ? void 0 : e.clipboardData.getData('text/html');
197
+ // simple text, continue as normal
198
+ if (!html) {
199
+ const text = e === null || e === void 0 ? void 0 : e.clipboardData.getData('text');
200
+ document.execCommand('insertHTML', false, sanitizeString(text));
201
+ setIsInput(true);
202
+ setHeight();
203
+ return;
204
+ }
205
+
206
+ // has html, check if there are mentions, sanitize and insert
207
+ const purifier = DOMPurify(window);
208
+ const clean = purifier.sanitize(html);
209
+ const pasteNode = createPasteNode();
210
+ pasteNode.innerHTML = clean;
211
+ // does not have mention, continue as normal
212
+ if (!hasMention(pasteNode)) {
213
+ // to preserve space between words
214
+ const text = extractTextFromNodes(Array.from(pasteNode.children));
215
+ document.execCommand('insertHTML', false, sanitizeString(text));
216
+ pasteNode.remove();
217
+ setIsInput(true);
218
+ setHeight();
219
+ return;
220
+ }
221
+
222
+ // has mention, collect leaf nodes and parse words
223
+ const leafNodes = getLeafNodes(pasteNode);
224
+ const words = domToMessageTemplate(leafNodes);
225
+ const mentionedUsers = getUsersFromWords(words, channel);
226
+
227
+ // side effects
228
+ setMentionedUsers(mentionedUsers);
229
+ inserTemplateToDOM(words);
230
+ pasteNode.remove();
231
+ setIsInput(true);
232
+ setHeight();
233
+ }, [ref, setIsInput, setHeight, channel, setMentionedUsers]);
234
+ }
235
+
236
+ /**
237
+ * Write new utils here
238
+ * Migrate old utils as needed, and delete utils.js
239
+ */
240
+ /**
241
+ * FIXME:
242
+ * Import this ChannelType enum from @sendbird/chat
243
+ * once MessageInput.spec unit tests can be run \wo jest <-> ESM issue
244
+ */
245
+ var ChannelType = /*#__PURE__*/function (ChannelType) {
246
+ ChannelType["BASE"] = "base";
247
+ ChannelType["GROUP"] = "group";
248
+ ChannelType["OPEN"] = "open";
249
+ return ChannelType;
250
+ }(ChannelType || {});
251
+ /**
252
+ * FIXME: Simplify this in UIKit@v4
253
+ * If customer is using MessageInput inside our modules(ie: Channel, Thread, etc),
254
+ * we should use the config from the module.
255
+ * If customer is using MessageInput outside our modules(ie: custom UI),
256
+ * we expect Channel to be undefined and customer gets control to show/hide file-upload.
257
+ * @param {*} channel GroupChannel | OpenChannel
258
+ * @param {*} config SendBirdStateConfig
259
+ * @returns boolean
260
+ */
261
+ const checkIfFileUploadEnabled = _ref => {
262
+ let {
263
+ channel,
264
+ config
265
+ } = _ref;
266
+ const isEnabled = K(channel === null || channel === void 0 ? void 0 : channel.channelType).with(ChannelType.GROUP, () => {
267
+ var _config$groupChannel;
268
+ return config === null || config === void 0 ? void 0 : (_config$groupChannel = config.groupChannel) === null || _config$groupChannel === void 0 ? void 0 : _config$groupChannel.enableDocument;
269
+ }).with(ChannelType.OPEN, () => {
270
+ var _config$openChannel;
271
+ return config === null || config === void 0 ? void 0 : (_config$openChannel = config.openChannel) === null || _config$openChannel === void 0 ? void 0 : _config$openChannel.enableDocument;
272
+ }).otherwise(() => true);
273
+ return isEnabled;
274
+ };
275
+
23
276
  const TEXT_FIELD_ID = 'sendbird-message-input-text-field';
24
277
  const LINE_HEIGHT = 76;
25
-
26
278
  const noop = () => {};
27
-
28
279
  const handleUploadFile = callback => event => {
29
280
  if (event.target.files && event.target.files[0]) {
30
281
  callback(event.target.files[0]);
31
- } // eslint-disable-next-line no-param-reassign
32
-
33
-
282
+ }
283
+ // eslint-disable-next-line no-param-reassign
34
284
  event.target.value = '';
35
285
  };
36
-
37
286
  const displayCaret = (element, position) => {
38
287
  const range = document.createRange();
39
288
  const sel = window.getSelection();
@@ -43,14 +292,14 @@ const displayCaret = (element, position) => {
43
292
  sel.addRange(range);
44
293
  element.focus();
45
294
  };
46
-
47
295
  const resetInput = ref => {
48
296
  try {
297
+ /* eslint-disable no-param-reassign */
49
298
  ref.current.innerHTML = '';
50
- } catch (_unused) {//
299
+ } catch (_unused) {
300
+ //
51
301
  }
52
302
  };
53
-
54
303
  const initialTargetStringInfo = {
55
304
  targetString: '',
56
305
  startNodeIndex: null,
@@ -59,13 +308,13 @@ const initialTargetStringInfo = {
59
308
  endOffsetIndex: null
60
309
  };
61
310
  const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
62
- var _ref$current, _ref$current$innerTex;
63
-
311
+ var _ref$current, _ref$current$textCont, _textField$innerText;
64
312
  const {
65
313
  className,
66
314
  messageFieldId,
67
315
  isEdit,
68
316
  isMentionEnabled,
317
+ isVoiceMessageEnabled,
69
318
  disabled,
70
319
  message,
71
320
  placeholder,
@@ -76,17 +325,30 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
76
325
  onCancelEdit,
77
326
  onStartTyping,
78
327
  channelUrl,
328
+ channel,
79
329
  mentionSelectedUser,
80
330
  onUserMentioned,
81
331
  onMentionStringChange,
82
332
  onMentionedUserIdsUpdated,
333
+ onVoiceMessageIconClick,
83
334
  onKeyUp,
84
- onKeyDown
335
+ onKeyDown,
336
+ renderFileUploadIcon,
337
+ renderVoiceMessageIcon,
338
+ renderSendMessageIcon,
339
+ setMentionedUsers
85
340
  } = props;
86
341
  const textFieldId = messageFieldId || TEXT_FIELD_ID;
87
342
  const {
88
343
  stringSet
89
- } = useContext(LocalizationContext);
344
+ } = useLocalization();
345
+ const {
346
+ config
347
+ } = useSendbirdStateContext();
348
+ const isFileUploadEnabled = checkIfFileUploadEnabled({
349
+ channel,
350
+ config
351
+ });
90
352
  const fileInputRef = useRef(null);
91
353
  const [isInput, setIsInput] = useState(false);
92
354
  const [mentionedUserIds, setMentionedUserIds] = useState([]);
@@ -95,7 +357,6 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
95
357
  try {
96
358
  const elem = ref === null || ref === void 0 ? void 0 : ref.current;
97
359
  const MAX_HEIGHT = window.document.body.offsetHeight * 0.6;
98
-
99
360
  if (elem && elem.scrollHeight >= LINE_HEIGHT) {
100
361
  if (MAX_HEIGHT < elem.scrollHeight) {
101
362
  elem.style.height = 'auto';
@@ -107,99 +368,95 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
107
368
  } else {
108
369
  elem.style.height = '';
109
370
  }
110
- } catch (error) {// error
371
+ } catch (error) {
372
+ // error
111
373
  }
112
- }, []); // #Edit mode
374
+ }, []);
375
+
376
+ // #Edit mode
113
377
  // for easilly initialize input value from outside, but
114
378
  // useEffect(_, [channelUrl]) erase it
115
-
116
379
  const initialValue = props === null || props === void 0 ? void 0 : props.value;
117
380
  useEffect(() => {
118
- var _textField$innerText;
119
-
381
+ var _textField$textConten;
120
382
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
121
-
122
383
  try {
123
384
  textField.innerHTML = initialValue;
124
385
  displayCaret(textField, initialValue === null || initialValue === void 0 ? void 0 : initialValue.length);
125
- } catch (_unused2) {}
126
-
386
+ } catch (_unused2) {
387
+ //
388
+ }
127
389
  setMentionedUserIds([]);
128
- setIsInput((textField === null || textField === void 0 ? void 0 : (_textField$innerText = textField.innerText) === null || _textField$innerText === void 0 ? void 0 : _textField$innerText.length) > 0);
390
+ setIsInput((textField === null || textField === void 0 ? void 0 : (_textField$textConten = textField.textContent) === null || _textField$textConten === void 0 ? void 0 : _textField$textConten.trim().length) > 0);
129
391
  setHeight();
130
- }, [initialValue]); // #Mention | Clear input value when channel changes
392
+ }, [initialValue]);
131
393
 
394
+ // #Mention | Clear input value when channel changes
132
395
  useEffect(() => {
133
396
  if (!isEdit) {
134
397
  setIsInput(false);
135
398
  resetInput(ref);
136
399
  }
137
- }, [channelUrl]); // #Mention & #Edit | Fill message input values
400
+ }, [channelUrl]);
138
401
 
402
+ // #Mention & #Edit | Fill message input values
139
403
  useEffect(() => {
140
404
  if (isEdit && message !== null && message !== void 0 && message.messageId) {
141
- var _message$mentionedUse, _message$mentionedMes, _textField$innerText2;
142
-
405
+ var _message$mentionedUse, _message$mentionedMes, _textField$textConten2;
143
406
  // const textField = document.getElementById(textFieldId);
144
407
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
145
-
146
408
  if (isMentionEnabled && (message === null || message === void 0 ? void 0 : (_message$mentionedUse = message.mentionedUsers) === null || _message$mentionedUse === void 0 ? void 0 : _message$mentionedUse.length) > 0 && (message === null || message === void 0 ? void 0 : (_message$mentionedMes = message.mentionedMessageTemplate) === null || _message$mentionedMes === void 0 ? void 0 : _message$mentionedMes.length) > 0) {
147
- var _message$mentionedMes2;
148
-
149
409
  /* mention enabled */
150
410
  const {
151
411
  mentionedUsers = []
152
412
  } = message;
153
- textField.innerHTML = message === null || message === void 0 ? void 0 : (_message$mentionedMes2 = message.mentionedMessageTemplate) === null || _message$mentionedMes2 === void 0 ? void 0 : _message$mentionedMes2.split(' ').map(word => convertWordToStringObj(word, mentionedUsers).map(stringObj => {
154
- const {
155
- type,
156
- value,
157
- userId
158
- } = stringObj;
159
-
160
- if (type === StringObjType.mention && mentionedUsers.some(user => (user === null || user === void 0 ? void 0 : user.userId) === userId)) {
161
- var _mentionedUsers$find;
162
-
163
- return renderToString( /*#__PURE__*/React__default.createElement(MentionUserLabel, {
164
- userId: userId
165
- }, `${USER_MENTION_TEMP_CHAR}${((_mentionedUsers$find = mentionedUsers.find(user => (user === null || user === void 0 ? void 0 : user.userId) === userId)) === null || _mentionedUsers$find === void 0 ? void 0 : _mentionedUsers$find.nickname) || value || stringSet.MENTION_NAME__NO_NAME}`));
413
+ const tokens = tokenizeMessage({
414
+ messageText: message === null || message === void 0 ? void 0 : message.mentionedMessageTemplate,
415
+ mentionedUsers
416
+ });
417
+ textField.innerHTML = tokens.map(token => {
418
+ if (token.type === TOKEN_TYPES.mention) {
419
+ const mentionedUser = mentionedUsers.find(user => user.userId === token.userId);
420
+ const nickname = `${USER_MENTION_PREFIX}${(mentionedUser === null || mentionedUser === void 0 ? void 0 : mentionedUser.nickname) || token.value || stringSet.MENTION_NAME__NO_NAME}`;
421
+ return renderToString({
422
+ userId: token.userId,
423
+ nickname
424
+ });
166
425
  }
167
-
168
- return sanitizeString(value);
169
- }).join('')).join(' ');
426
+ return sanitizeString(token.value);
427
+ }).join(' ');
170
428
  } else {
171
429
  /* mention disabled */
172
430
  try {
173
431
  textField.innerHTML = sanitizeString(message === null || message === void 0 ? void 0 : message.message);
174
- } catch (_unused3) {}
175
-
432
+ } catch (_unused3) {
433
+ //
434
+ }
176
435
  setMentionedUserIds([]);
177
436
  }
178
-
179
- setIsInput((textField === null || textField === void 0 ? void 0 : (_textField$innerText2 = textField.innerText) === null || _textField$innerText2 === void 0 ? void 0 : _textField$innerText2.length) > 0);
437
+ setIsInput((textField === null || textField === void 0 ? void 0 : (_textField$textConten2 = textField.textContent) === null || _textField$textConten2 === void 0 ? void 0 : _textField$textConten2.trim().length) > 0);
180
438
  setHeight();
181
439
  }
182
- }, [isEdit, message]); // #Mention | Detect MentionedLabel modified
440
+ }, [isEdit, message]);
183
441
 
442
+ // #Mention | Detect MentionedLabel modified
184
443
  const useMentionedLabelDetection = useCallback(() => {
444
+ var _textField$textConten3;
185
445
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
186
-
187
446
  if (isMentionEnabled) {
188
447
  const newMentionedUserIds = [...textField.getElementsByClassName('sendbird-mention-user-label')].map(node => {
189
448
  var _node$dataset;
190
-
191
449
  return node === null || node === void 0 ? void 0 : (_node$dataset = node.dataset) === null || _node$dataset === void 0 ? void 0 : _node$dataset.userid;
192
450
  });
193
-
194
451
  if (!arrayEqual(mentionedUserIds, newMentionedUserIds) || newMentionedUserIds.length === 0) {
195
452
  onMentionedUserIdsUpdated(newMentionedUserIds);
196
453
  setMentionedUserIds(newMentionedUserIds);
197
454
  }
198
455
  }
456
+ setIsInput(((_textField$textConten3 = textField.textContent) === null || _textField$textConten3 === void 0 ? void 0 : _textField$textConten3.trim().length) > 0);
457
+ }, [targetStringInfo, isMentionEnabled]);
199
458
 
200
- setIsInput(textField.innerText.length > 0);
201
- }, [targetStringInfo, isMentionEnabled]); // #Mention | Replace selected user nickname to the MentionedUserLabel
202
-
459
+ // #Mention | Replace selected user nickname to the MentionedUserLabel
203
460
  useEffect(() => {
204
461
  if (isMentionEnabled && mentionSelectedUser) {
205
462
  const {
@@ -209,18 +466,17 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
209
466
  endNodeIndex,
210
467
  endOffsetIndex
211
468
  } = targetStringInfo;
212
-
213
469
  if (targetString && startNodeIndex !== null && startOffsetIndex !== null) {
214
470
  var _document, _childNodes$startNode, _document2, _childNodes$endNodeIn;
215
-
216
471
  // const textField = document.getElementById(textFieldId);
217
472
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
218
- const childNodes = [...(textField === null || textField === void 0 ? void 0 : textField.childNodes)];
473
+ const childNodes = nodeListToArray(textField === null || textField === void 0 ? void 0 : textField.childNodes);
219
474
  const frontTextNode = (_document = document) === null || _document === void 0 ? void 0 : _document.createTextNode((_childNodes$startNode = childNodes[startNodeIndex]) === null || _childNodes$startNode === void 0 ? void 0 : _childNodes$startNode.textContent.slice(0, startOffsetIndex));
220
475
  const backTextNode = (_document2 = document) === null || _document2 === void 0 ? void 0 : _document2.createTextNode(`\u00A0${(_childNodes$endNodeIn = childNodes[endNodeIndex]) === null || _childNodes$endNodeIn === void 0 ? void 0 : _childNodes$endNodeIn.textContent.slice(endOffsetIndex)}`);
221
- const mentionLabel = renderToString( /*#__PURE__*/React__default.createElement(MentionUserLabel, {
222
- userId: mentionSelectedUser === null || mentionSelectedUser === void 0 ? void 0 : mentionSelectedUser.userId
223
- }, `${USER_MENTION_TEMP_CHAR}${(mentionSelectedUser === null || mentionSelectedUser === void 0 ? void 0 : mentionSelectedUser.nickname) || stringSet.MENTION_NAME__NO_NAME}`));
476
+ const mentionLabel = renderToString({
477
+ userId: mentionSelectedUser === null || mentionSelectedUser === void 0 ? void 0 : mentionSelectedUser.userId,
478
+ nickname: `${USER_MENTION_TEMP_CHAR}${(mentionSelectedUser === null || mentionSelectedUser === void 0 ? void 0 : mentionSelectedUser.nickname) || stringSet.MENTION_NAME__NO_NAME}`
479
+ });
224
480
  const div = document.createElement('div');
225
481
  div.innerHTML = mentionLabel;
226
482
  const newNodes = [...childNodes.slice(0, startNodeIndex), frontTextNode, div.childNodes[0], backTextNode, ...childNodes.slice(endNodeIndex + 1)];
@@ -229,7 +485,6 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
229
485
  textField.appendChild(newNode);
230
486
  });
231
487
  onUserMentioned(mentionSelectedUser);
232
-
233
488
  if (window.getSelection || document.getSelection) {
234
489
  // set caret postion
235
490
  const selection = window.getSelection() || document.getSelection();
@@ -242,41 +497,34 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
242
497
  selection.addRange(range);
243
498
  textField.focus();
244
499
  }
245
-
246
500
  setTargetStringInfo(_objectSpread2({}, initialTargetStringInfo));
247
501
  setHeight();
248
502
  useMentionedLabelDetection();
249
503
  }
250
504
  }
251
- }, [mentionSelectedUser, isMentionEnabled]); // #Mention | Detect mentioning user nickname
505
+ }, [mentionSelectedUser, isMentionEnabled]);
252
506
 
507
+ // #Mention | Detect mentioning user nickname
253
508
  const useMentionInputDetection = useCallback(() => {
254
509
  var _window, _window$getSelection, _document3, _document3$getSelecti;
255
-
256
510
  const selection = ((_window = window) === null || _window === void 0 ? void 0 : (_window$getSelection = _window.getSelection) === null || _window$getSelection === void 0 ? void 0 : _window$getSelection.call(_window)) || ((_document3 = document) === null || _document3 === void 0 ? void 0 : (_document3$getSelecti = _document3.getSelection) === null || _document3$getSelecti === void 0 ? void 0 : _document3$getSelecti.call(_document3));
257
511
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
258
-
259
512
  if (selection.anchorNode === textField) {
260
513
  onMentionStringChange('');
261
514
  }
262
-
263
515
  if (isMentionEnabled && selection && selection.anchorNode === selection.focusNode && selection.anchorOffset === selection.focusOffset) {
264
516
  let textStack = '';
265
517
  let startNodeIndex = null;
266
518
  let startOffsetIndex = null;
267
-
268
519
  for (let index = 0; index < textField.childNodes.length; index += 1) {
269
520
  const currentNode = textField.childNodes[index];
270
-
271
521
  if (currentNode.nodeType === NodeTypes.TextNode) {
272
522
  /* text node */
273
523
  const textContent = currentNode === selection.anchorNode ? (currentNode === null || currentNode === void 0 ? void 0 : currentNode.textContent.slice(0, selection.anchorOffset)) || '' : (currentNode === null || currentNode === void 0 ? void 0 : currentNode.textContent) || '';
274
-
275
524
  if (textStack.length > 0) {
276
525
  textStack += textContent;
277
526
  } else {
278
527
  let charLastIndex = textContent.lastIndexOf(USER_MENTION_TEMP_CHAR);
279
-
280
528
  for (let i = charLastIndex - 1; i > -1; i -= 1) {
281
529
  if (textContent[i] === USER_MENTION_TEMP_CHAR) {
282
530
  charLastIndex = i;
@@ -284,7 +532,6 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
284
532
  break;
285
533
  }
286
534
  }
287
-
288
535
  if (charLastIndex > -1) {
289
536
  textStack = textContent;
290
537
  startNodeIndex = index;
@@ -297,14 +544,12 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
297
544
  startNodeIndex = null;
298
545
  startOffsetIndex = null;
299
546
  }
300
-
301
547
  if (currentNode === selection.anchorNode) {
302
548
  /**
303
549
  * targetString could be ''
304
550
  * startNodeIndex and startOffsetIndex could be null
305
551
  */
306
552
  const targetString = textStack ? textStack.slice(startOffsetIndex) : ''; // include template character
307
-
308
553
  setTargetStringInfo({
309
554
  targetString,
310
555
  startNodeIndex,
@@ -318,11 +563,9 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
318
563
  }
319
564
  }
320
565
  }, [isMentionEnabled]);
321
-
322
566
  const sendMessage = () => {
323
567
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
324
-
325
- if (!isEdit && textField !== null && textField !== void 0 && textField.innerText) {
568
+ if (!isEdit && textField !== null && textField !== void 0 && textField.textContent) {
326
569
  let messageText = '';
327
570
  let mentionTemplate = '';
328
571
  textField.childNodes.forEach(node => {
@@ -339,6 +582,13 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
339
582
  } else if (node.nodeType === NodeTypes.ElementNode && node.nodeName === NodeNames.Br) {
340
583
  messageText += '\n';
341
584
  mentionTemplate += '\n';
585
+ } else if ((node === null || node === void 0 ? void 0 : node.nodeType) === NodeTypes.ElementNode && (node === null || node === void 0 ? void 0 : node.nodeName) === NodeNames.Div) {
586
+ // handles newline in safari
587
+ const {
588
+ textContent = ''
589
+ } = node;
590
+ messageText += `\n${textContent}`;
591
+ mentionTemplate += `\n${textContent}`;
342
592
  } else {
343
593
  // other nodes including text node
344
594
  const {
@@ -358,13 +608,10 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
358
608
  setHeight();
359
609
  }
360
610
  };
361
-
362
- const isEditDisabled = !(ref !== null && ref !== void 0 && (_ref$current = ref.current) !== null && _ref$current !== void 0 && (_ref$current$innerTex = _ref$current.innerText) !== null && _ref$current$innerTex !== void 0 && _ref$current$innerTex.trim());
363
-
611
+ const isEditDisabled = !(ref !== null && ref !== void 0 && (_ref$current = ref.current) !== null && _ref$current !== void 0 && (_ref$current$textCont = _ref$current.textContent) !== null && _ref$current$textCont !== void 0 && _ref$current$textCont.trim());
364
612
  const editMessage = () => {
365
613
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
366
614
  const messageId = message === null || message === void 0 ? void 0 : message.messageId;
367
-
368
615
  if (isEdit && messageId) {
369
616
  let messageText = '';
370
617
  let mentionTemplate = '';
@@ -379,7 +626,6 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
379
626
  } = dataset;
380
627
  messageText += innerText;
381
628
  mentionTemplate += `${USER_MENTION_TEMP_CHAR}{${userid}}`;
382
- } else if (node.nodeType === NodeTypes.ElementNode && node.nodeName === NodeNames.Span) {
383
629
  messageText += '\n';
384
630
  mentionTemplate += '\n';
385
631
  } else {
@@ -400,7 +646,15 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
400
646
  resetInput(ref);
401
647
  }
402
648
  };
403
-
649
+ const onPaste = usePaste({
650
+ ref,
651
+ setMentionedUserIds,
652
+ setMentionedUsers,
653
+ channel,
654
+ setIsInput,
655
+ setHeight
656
+ });
657
+ const textField = ref === null || ref === void 0 ? void 0 : ref.current;
404
658
  return /*#__PURE__*/React__default.createElement("form", {
405
659
  className: getClassName([className, isEdit ? 'sendbird-message-input__edit' : '', disabled ? 'sendbird-message-input-form__disabled' : ''])
406
660
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -416,17 +670,14 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
416
670
  maxLength: maxLength,
417
671
  onKeyDown: e => {
418
672
  const preventEvent = onKeyDown(e);
419
-
420
673
  if (preventEvent) {
421
674
  e.preventDefault();
422
675
  } else {
423
- var _e$nativeEvent, _ref$current2, _ref$current2$childNo, _ref$current3, _ref$current3$childNo, _ref$current3$childNo2, _ref$current$childNod, _ref$current$childNod2;
424
-
425
- if (!e.shiftKey && e.key === MessageInputKeys.Enter && (e === null || e === void 0 ? void 0 : (_e$nativeEvent = e.nativeEvent) === null || _e$nativeEvent === void 0 ? void 0 : _e$nativeEvent.isComposing) !== true) {
676
+ var _textField$textConten4, _e$nativeEvent, _ref$current2, _ref$current2$childNo, _ref$current3, _ref$current3$childNo, _ref$current3$childNo2, _ref$current$childNod, _ref$current$childNod2;
677
+ if (!e.shiftKey && e.key === MessageInputKeys.Enter && (textField === null || textField === void 0 ? void 0 : (_textField$textConten4 = textField.textContent) === null || _textField$textConten4 === void 0 ? void 0 : _textField$textConten4.trim().length) > 0 && (e === null || e === void 0 ? void 0 : (_e$nativeEvent = e.nativeEvent) === null || _e$nativeEvent === void 0 ? void 0 : _e$nativeEvent.isComposing) !== true) {
426
678
  e.preventDefault();
427
679
  sendMessage();
428
680
  }
429
-
430
681
  if (e.key === MessageInputKeys.Backspace && (ref === null || ref === void 0 ? void 0 : (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : (_ref$current2$childNo = _ref$current2.childNodes) === null || _ref$current2$childNo === void 0 ? void 0 : _ref$current2$childNo.length) === 2 && !(ref !== null && ref !== void 0 && (_ref$current3 = ref.current) !== null && _ref$current3 !== void 0 && (_ref$current3$childNo = _ref$current3.childNodes) !== null && _ref$current3$childNo !== void 0 && (_ref$current3$childNo2 = _ref$current3$childNo[0]) !== null && _ref$current3$childNo2 !== void 0 && _ref$current3$childNo2.textContent) && (ref === null || ref === void 0 ? void 0 : (_ref$current$childNod = ref.current.childNodes) === null || _ref$current$childNod === void 0 ? void 0 : (_ref$current$childNod2 = _ref$current$childNod[1]) === null || _ref$current$childNod2 === void 0 ? void 0 : _ref$current$childNod2.nodeType) === NodeTypes.ElementNode) {
431
682
  ref === null || ref === void 0 ? void 0 : ref.current.removeChild(ref === null || ref === void 0 ? void 0 : ref.current.childNodes[1]);
432
683
  }
@@ -434,7 +685,6 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
434
685
  },
435
686
  onKeyUp: e => {
436
687
  const preventEvent = onKeyUp(e);
437
-
438
688
  if (preventEvent) {
439
689
  e.preventDefault();
440
690
  } else {
@@ -445,44 +695,41 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
445
695
  useMentionInputDetection();
446
696
  },
447
697
  onInput: () => {
448
- var _ref$current4, _ref$current4$innerTe;
449
-
698
+ var _textField$textConten5;
450
699
  setHeight();
451
700
  onStartTyping();
452
- setIsInput((ref === null || ref === void 0 ? void 0 : (_ref$current4 = ref.current) === null || _ref$current4 === void 0 ? void 0 : (_ref$current4$innerTe = _ref$current4.innerText) === null || _ref$current4$innerTe === void 0 ? void 0 : _ref$current4$innerTe.length) > 0);
701
+ setIsInput((textField === null || textField === void 0 ? void 0 : (_textField$textConten5 = textField.textContent) === null || _textField$textConten5 === void 0 ? void 0 : _textField$textConten5.trim().length) > 0);
453
702
  useMentionedLabelDetection();
454
703
  },
455
- onPaste: e => {
456
- e.preventDefault();
457
- document.execCommand("insertHTML", false, sanitizeString(e === null || e === void 0 ? void 0 : e.clipboardData.getData('text')));
458
- }
459
- }), !isInput && /*#__PURE__*/React__default.createElement(Label, {
704
+ onPaste: onPaste
705
+ }), (textField === null || textField === void 0 ? void 0 : (_textField$innerText = textField.innerText) === null || _textField$innerText === void 0 ? void 0 : _textField$innerText.length) === 0 && /*#__PURE__*/React__default.createElement(Label, {
460
706
  className: "sendbird-message-input--placeholder",
461
707
  type: LabelTypography.BODY_1,
462
- color: LabelColors.ONBACKGROUND_3
708
+ color: disabled ? LabelColors.ONBACKGROUND_4 : LabelColors.ONBACKGROUND_3
463
709
  }, placeholder || stringSet.MESSAGE_INPUT__PLACE_HOLDER), !isEdit && isInput && /*#__PURE__*/React__default.createElement(IconButton, {
464
710
  className: "sendbird-message-input--send",
465
711
  height: "32px",
466
712
  width: "32px",
467
713
  onClick: () => sendMessage()
468
- }, /*#__PURE__*/React__default.createElement(Icon, {
714
+ }, (renderSendMessageIcon === null || renderSendMessageIcon === void 0 ? void 0 : renderSendMessageIcon()) || /*#__PURE__*/React__default.createElement(Icon, {
469
715
  type: IconTypes.SEND,
470
- fillColor: IconColors.PRIMARY,
716
+ fillColor: disabled ? IconColors.ON_BACKGROUND_4 : IconColors.PRIMARY,
471
717
  width: "20px",
472
718
  height: "20px"
473
- })), !isEdit && !isInput && /*#__PURE__*/React__default.createElement(IconButton, {
474
- className: "sendbird-message-input--attach",
719
+ })), !isEdit && !isInput && ((renderFileUploadIcon === null || renderFileUploadIcon === void 0 ? void 0 : renderFileUploadIcon() // UIKit Dashboard configuration should have lower priority than
720
+ // renderFileUploadIcon which is set in code level
721
+ ) || isFileUploadEnabled && /*#__PURE__*/React__default.createElement(IconButton, {
722
+ className: `sendbird-message-input--attach ${isVoiceMessageEnabled ? 'is-voice-message-enabled' : ''}`,
475
723
  height: "32px",
476
724
  width: "32px",
477
725
  onClick: () => {
478
726
  var _fileInputRef$current, _fileInputRef$current2;
479
-
480
727
  // todo: clear previous input
481
728
  fileInputRef === null || fileInputRef === void 0 ? void 0 : (_fileInputRef$current = fileInputRef.current) === null || _fileInputRef$current === void 0 ? void 0 : (_fileInputRef$current2 = _fileInputRef$current.click) === null || _fileInputRef$current2 === void 0 ? void 0 : _fileInputRef$current2.call(_fileInputRef$current);
482
729
  }
483
730
  }, /*#__PURE__*/React__default.createElement(Icon, {
484
731
  type: IconTypes.ATTACH,
485
- fillColor: IconColors.CONTENT_INVERSE,
732
+ fillColor: disabled ? IconColors.ON_BACKGROUND_4 : IconColors.CONTENT_INVERSE,
486
733
  width: "20px",
487
734
  height: "20px"
488
735
  }), /*#__PURE__*/React__default.createElement("input", {
@@ -490,6 +737,16 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
490
737
  type: "file",
491
738
  ref: fileInputRef,
492
739
  onChange: handleUploadFile(onFileUpload)
740
+ }))), isVoiceMessageEnabled && !isEdit && !isInput && /*#__PURE__*/React__default.createElement(IconButton, {
741
+ className: "sendbird-message-input--voice-message",
742
+ width: "32px",
743
+ height: "32px",
744
+ onClick: onVoiceMessageIconClick
745
+ }, (renderVoiceMessageIcon === null || renderVoiceMessageIcon === void 0 ? void 0 : renderVoiceMessageIcon()) || /*#__PURE__*/React__default.createElement(Icon, {
746
+ type: IconTypes.AUDIO_ON_LINED,
747
+ fillColor: disabled ? IconColors.ON_BACKGROUND_4 : IconColors.CONTENT_INVERSE,
748
+ width: "20px",
749
+ height: "20px"
493
750
  }))), isEdit && /*#__PURE__*/React__default.createElement("div", {
494
751
  className: "sendbird-message-input--edit-action"
495
752
  }, /*#__PURE__*/React__default.createElement(Button, {
@@ -512,6 +769,8 @@ MessageInput.propTypes = {
512
769
  value: PropTypes.string,
513
770
  isEdit: PropTypes.bool,
514
771
  isMentionEnabled: PropTypes.bool,
772
+ isVoiceMessageEnabled: PropTypes.bool,
773
+ onVoiceMessageIconClick: PropTypes.func,
515
774
  message: PropTypes.shape({
516
775
  messageId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
517
776
  message: PropTypes.string,
@@ -530,11 +789,18 @@ MessageInput.propTypes = {
530
789
  userId: PropTypes.string,
531
790
  nickname: PropTypes.string
532
791
  }),
792
+ setMentionedUsers: PropTypes.func,
533
793
  onUserMentioned: PropTypes.func,
534
794
  onMentionStringChange: PropTypes.func,
535
795
  onMentionedUserIdsUpdated: PropTypes.func,
536
796
  onKeyUp: PropTypes.func,
537
- onKeyDown: PropTypes.func
797
+ onKeyDown: PropTypes.func,
798
+ renderVoiceMessageIcon: PropTypes.func,
799
+ renderSendMessageIcon: PropTypes.func,
800
+ renderFileUploadIcon: PropTypes.func,
801
+ channel: PropTypes.shape({
802
+ channelType: PropTypes.string
803
+ }).isRequired
538
804
  };
539
805
  MessageInput.defaultProps = {
540
806
  className: '',
@@ -546,6 +812,8 @@ MessageInput.defaultProps = {
546
812
  message: null,
547
813
  isEdit: false,
548
814
  isMentionEnabled: false,
815
+ isVoiceMessageEnabled: true,
816
+ onVoiceMessageIconClick: noop,
549
817
  disabled: false,
550
818
  placeholder: '',
551
819
  maxLength: 5000,
@@ -557,7 +825,11 @@ MessageInput.defaultProps = {
557
825
  onMentionStringChange: noop,
558
826
  onMentionedUserIdsUpdated: noop,
559
827
  onKeyUp: noop,
560
- onKeyDown: noop
828
+ onKeyDown: noop,
829
+ setMentionedUsers: noop,
830
+ renderVoiceMessageIcon: noop,
831
+ renderFileUploadIcon: noop,
832
+ renderSendMessageIcon: noop
561
833
  };
562
834
 
563
835
  export { MessageInput as default };