@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,46 +1,296 @@
1
1
  'use strict';
2
2
 
3
- var _rollupPluginBabelHelpers = require('../_rollupPluginBabelHelpers-bd6baf0a.js');
3
+ var _rollupPluginBabelHelpers = require('../_rollupPluginBabelHelpers-c89f311a.js');
4
4
  var React = require('react');
5
- var server = require('react-dom/server');
6
5
  var PropTypes = require('prop-types');
7
- var _const$1 = require('../const-8785e4ad.js');
8
- var _const = require('../const-beb25e10.js');
6
+ var _const$1 = require('../const-d8cece19.js');
7
+ var _const = require('../const-a85f3364.js');
9
8
  var ui_IconButton = require('./IconButton.js');
10
9
  var ui_Button = require('./Button.js');
11
- var ui_MentionUserLabel = require('./MentionUserLabel.js');
10
+ var DOMPurify = require('dompurify');
11
+ var consts = require('../consts-1c3020ad.js');
12
12
  var ui_Icon = require('./Icon.js');
13
- var ui_Label = require('../index-bdd889a2.js');
14
- var LocalizationContext = require('../LocalizationContext-8780a64e.js');
15
- var index = require('../index-b3371ef2.js');
16
- require('../tslib.es6-5a7eb30d.js');
17
- require('../stringSet-60660a99.js');
18
- require('../index-48d85d8f.js');
13
+ var ui_Label = require('../index-6cb0d040.js');
14
+ var LocalizationContext = require('../LocalizationContext-0e429c3d.js');
15
+ var useSendbirdStateContext = require('../useSendbirdStateContext.js');
16
+ var index = require('../index-5231fde8.js');
17
+ var consts$2 = require('../consts-1d94dc61.js');
18
+ var consts$1 = require('../consts-740f60b8.js');
19
+ var tokenize = require('../tokenize-2aa0f876.js');
20
+ var index_module = require('../index.module-0585715f.js');
21
+ require('../stringSet-106da549.js');
22
+ require('../index-016f7106.js');
23
+ require('../withSendbird.js');
19
24
  require('../utils/message/getOutgoingMessageState.js');
20
25
 
21
26
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
27
 
23
28
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
29
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
30
+ var DOMPurify__default = /*#__PURE__*/_interopDefaultLegacy(DOMPurify);
31
+
32
+ // cretes a sanitized string from a mention user label
33
+ function renderToString(_ref) {
34
+ let {
35
+ userId,
36
+ nickname
37
+ } = _ref;
38
+ // donot change this template, it wont work
39
+ const el = `<span data-userid="${userId}" data-sb-mention="true" class="${consts.MENTION_USER_LABEL_CLASSNAME}">${nickname}</span>`;
40
+ const purifier = DOMPurify__default["default"](window);
41
+ const sanitized_ = purifier.sanitize(el);
42
+ const token = sanitized_.split(' ');
43
+ const [spanTag, ...rest] = token;
44
+ // we do this because DOMPurify removes the contenteditable attribute
45
+ const sanitized = [spanTag, 'contenteditable="false"', ...rest].join(' ');
46
+ return sanitized;
47
+ }
25
48
 
26
49
  // https://davidwalsh.name/javascript-debounce-function
27
50
 
51
+ // Sanitize that special characters of HTML tags cause XSS issue
28
52
  const sanitizeString = str => str === null || str === void 0 ? void 0 : str.replace(/[\u00A0-\u9999<>]/gim, i => ''.concat('&#', i.charCodeAt(0), ';'));
29
53
 
54
+ /**
55
+ * NodeList cannot be used with Array methods
56
+ * @param {childNodes} NodeList
57
+ * @returns Array of child nodes
58
+ */
59
+ const nodeListToArray = childNodes => {
60
+ try {
61
+ return Array.from(childNodes);
62
+ } catch (error) {
63
+ return [];
64
+ }
65
+ };
66
+
67
+ function inserTemplateToDOM(templateList) {
68
+ const nodes = templateList.map(template => {
69
+ const {
70
+ text,
71
+ userId
72
+ } = template;
73
+ if (userId) {
74
+ return renderToString({
75
+ userId,
76
+ nickname: text
77
+ });
78
+ }
79
+ return sanitizeString(text);
80
+ }).join(' ')
81
+ // add a space at the end of the mention, else cursor/caret wont work
82
+ .concat(' ');
83
+ document.execCommand('insertHTML', false, nodes);
84
+ }
85
+
86
+ const PASTE_NODE = 'sendbird-uikit__paste-node';
87
+ const TEXT_MESSAGE_CLASS = 'sendbird-word';
88
+ const MENTION_CLASS = 'sendbird-word__mention';
89
+ const MENTION_CLASS_IN_INPUT = 'sendbird-mention-user-label';
90
+ const MENTION_CLASS_COMBINED_QUERY = `.${MENTION_CLASS}, .${MENTION_CLASS_IN_INPUT}`;
91
+
92
+ function querySelectorIncludingSelf(master, selector) {
93
+ const result = [master, ...Array.from(master.querySelectorAll(selector))].find(el => el.matches(selector));
94
+ return result;
95
+ }
96
+
97
+ // Pasted dom node can be OG_MESSAGE or partial message or full message
98
+ // full messsage would have TEXT_MESSAGE_BODY_CLASSNAME and have childNodes
99
+ // partial message would not have TEXT_MESSAGE_BODY_CLASSNAME
100
+ function getLeafNodes(master) {
101
+ // og message
102
+ const ogMessage = querySelectorIncludingSelf(master, `.${consts$1.OG_MESSAGE_BODY_CLASSNAME}`);
103
+ if (ogMessage) {
104
+ return nodeListToArray(ogMessage.childNodes);
105
+ }
106
+ const textMessageBody = querySelectorIncludingSelf(master, `.${consts$2.TEXT_MESSAGE_BODY_CLASSNAME}`);
107
+ if (textMessageBody) {
108
+ return nodeListToArray(textMessageBody.childNodes);
109
+ }
110
+ return nodeListToArray(master.childNodes);
111
+ }
112
+ function createPasteNode() {
113
+ const pasteNode = document.body.querySelector(`#${PASTE_NODE}`);
114
+ // remove existing paste node
115
+ if (pasteNode) {
116
+ pasteNode === null || pasteNode === void 0 ? void 0 : pasteNode.remove();
117
+ }
118
+
119
+ // create new paste node and return
120
+ const node = document.createElement('div');
121
+ node.id = PASTE_NODE;
122
+ node.style.display = 'none';
123
+ return node;
124
+ }
125
+ function hasMention(parent) {
126
+ return parent !== null && parent !== void 0 && parent.querySelector(MENTION_CLASS_COMBINED_QUERY) ? true : false;
127
+ }
128
+ const extractTextFromNodes = nodes => {
129
+ let text = '';
130
+ nodes.forEach(node => {
131
+ // to preserve space between words
132
+ const textNodes = node.querySelectorAll(`.${TEXT_MESSAGE_CLASS}`);
133
+ if (textNodes.length > 0) {
134
+ text += extractTextFromNodes(Array.from(textNodes)) + ' ';
135
+ }
136
+ text += node.innerText + ' ';
137
+ });
138
+ return text;
139
+ };
140
+ function domToMessageTemplate(nodeArray) {
141
+ const templates = nodeArray === null || nodeArray === void 0 ? void 0 : nodeArray.reduce((accumulator, currentValue) => {
142
+ // currentValue can be node(from messageBody or messageInput) or text
143
+ let mentionNode;
144
+ // this looks awkward, but it is a fallback to set default text
145
+ let text = currentValue === null || currentValue === void 0 ? void 0 : currentValue.innerText;
146
+
147
+ // if text node, set text
148
+ if (currentValue instanceof Text) {
149
+ mentionNode = false;
150
+ text = currentValue.textContent;
151
+ }
152
+ if (currentValue instanceof HTMLElement) {
153
+ mentionNode = currentValue.classList.contains(MENTION_CLASS) || currentValue.classList.contains(MENTION_CLASS_IN_INPUT) ? currentValue : currentValue.querySelector(MENTION_CLASS_COMBINED_QUERY);
154
+ }
155
+
156
+ // if mentionNode is not null, it is a mention
157
+ if (mentionNode) {
158
+ var _mentionNode$dataset;
159
+ const text = currentValue === null || currentValue === void 0 ? void 0 : currentValue.innerText;
160
+ const userId = (_mentionNode$dataset = mentionNode.dataset) === null || _mentionNode$dataset === void 0 ? void 0 : _mentionNode$dataset.userid;
161
+ return [...accumulator, {
162
+ text,
163
+ userId
164
+ }];
165
+ }
166
+ return [...accumulator, {
167
+ text
168
+ }];
169
+ }, []);
170
+ return templates;
171
+ }
172
+ function getUsersFromWords(templates, channel) {
173
+ const userMap = {};
174
+ const users = channel.members;
175
+ templates.forEach(template => {
176
+ if (template.userId) {
177
+ const mentionedMember = users.find(user => user.userId === template.userId);
178
+ // Object.values would return array-> [undefined] if the user is not in the channel
179
+ if (mentionedMember) {
180
+ userMap[template.userId] = mentionedMember;
181
+ }
182
+ }
183
+ });
184
+ return Object.values(userMap);
185
+ }
186
+
187
+ // conditions to test:
188
+ // 1. paste simple text
189
+ // 2. paste text with mention
190
+ // 3. paste text with mention and text
191
+ // 4. paste text with mention and text and paste again before and after
192
+ // 5. copy message with mention(only one mention, no other text) and paste
193
+ // 6. copy message with mention from input and paste(before and after)
194
+ function usePaste(_ref) {
195
+ let {
196
+ ref,
197
+ setIsInput,
198
+ setHeight,
199
+ channel,
200
+ setMentionedUsers
201
+ } = _ref;
202
+ return React.useCallback(e => {
203
+ e.preventDefault();
204
+ const html = e === null || e === void 0 ? void 0 : e.clipboardData.getData('text/html');
205
+ // simple text, continue as normal
206
+ if (!html) {
207
+ const text = e === null || e === void 0 ? void 0 : e.clipboardData.getData('text');
208
+ document.execCommand('insertHTML', false, sanitizeString(text));
209
+ setIsInput(true);
210
+ setHeight();
211
+ return;
212
+ }
213
+
214
+ // has html, check if there are mentions, sanitize and insert
215
+ const purifier = DOMPurify__default["default"](window);
216
+ const clean = purifier.sanitize(html);
217
+ const pasteNode = createPasteNode();
218
+ pasteNode.innerHTML = clean;
219
+ // does not have mention, continue as normal
220
+ if (!hasMention(pasteNode)) {
221
+ // to preserve space between words
222
+ const text = extractTextFromNodes(Array.from(pasteNode.children));
223
+ document.execCommand('insertHTML', false, sanitizeString(text));
224
+ pasteNode.remove();
225
+ setIsInput(true);
226
+ setHeight();
227
+ return;
228
+ }
229
+
230
+ // has mention, collect leaf nodes and parse words
231
+ const leafNodes = getLeafNodes(pasteNode);
232
+ const words = domToMessageTemplate(leafNodes);
233
+ const mentionedUsers = getUsersFromWords(words, channel);
234
+
235
+ // side effects
236
+ setMentionedUsers(mentionedUsers);
237
+ inserTemplateToDOM(words);
238
+ pasteNode.remove();
239
+ setIsInput(true);
240
+ setHeight();
241
+ }, [ref, setIsInput, setHeight, channel, setMentionedUsers]);
242
+ }
243
+
244
+ /**
245
+ * Write new utils here
246
+ * Migrate old utils as needed, and delete utils.js
247
+ */
248
+ /**
249
+ * FIXME:
250
+ * Import this ChannelType enum from @sendbird/chat
251
+ * once MessageInput.spec unit tests can be run \wo jest <-> ESM issue
252
+ */
253
+ var ChannelType = /*#__PURE__*/function (ChannelType) {
254
+ ChannelType["BASE"] = "base";
255
+ ChannelType["GROUP"] = "group";
256
+ ChannelType["OPEN"] = "open";
257
+ return ChannelType;
258
+ }(ChannelType || {});
259
+ /**
260
+ * FIXME: Simplify this in UIKit@v4
261
+ * If customer is using MessageInput inside our modules(ie: Channel, Thread, etc),
262
+ * we should use the config from the module.
263
+ * If customer is using MessageInput outside our modules(ie: custom UI),
264
+ * we expect Channel to be undefined and customer gets control to show/hide file-upload.
265
+ * @param {*} channel GroupChannel | OpenChannel
266
+ * @param {*} config SendBirdStateConfig
267
+ * @returns boolean
268
+ */
269
+ const checkIfFileUploadEnabled = _ref => {
270
+ let {
271
+ channel,
272
+ config
273
+ } = _ref;
274
+ const isEnabled = index_module.K(channel === null || channel === void 0 ? void 0 : channel.channelType).with(ChannelType.GROUP, () => {
275
+ var _config$groupChannel;
276
+ return config === null || config === void 0 ? void 0 : (_config$groupChannel = config.groupChannel) === null || _config$groupChannel === void 0 ? void 0 : _config$groupChannel.enableDocument;
277
+ }).with(ChannelType.OPEN, () => {
278
+ var _config$openChannel;
279
+ return config === null || config === void 0 ? void 0 : (_config$openChannel = config.openChannel) === null || _config$openChannel === void 0 ? void 0 : _config$openChannel.enableDocument;
280
+ }).otherwise(() => true);
281
+ return isEnabled;
282
+ };
283
+
30
284
  const TEXT_FIELD_ID = 'sendbird-message-input-text-field';
31
285
  const LINE_HEIGHT = 76;
32
-
33
286
  const noop = () => {};
34
-
35
287
  const handleUploadFile = callback => event => {
36
288
  if (event.target.files && event.target.files[0]) {
37
289
  callback(event.target.files[0]);
38
- } // eslint-disable-next-line no-param-reassign
39
-
40
-
290
+ }
291
+ // eslint-disable-next-line no-param-reassign
41
292
  event.target.value = '';
42
293
  };
43
-
44
294
  const displayCaret = (element, position) => {
45
295
  const range = document.createRange();
46
296
  const sel = window.getSelection();
@@ -50,14 +300,14 @@ const displayCaret = (element, position) => {
50
300
  sel.addRange(range);
51
301
  element.focus();
52
302
  };
53
-
54
303
  const resetInput = ref => {
55
304
  try {
305
+ /* eslint-disable no-param-reassign */
56
306
  ref.current.innerHTML = '';
57
- } catch (_unused) {//
307
+ } catch (_unused) {
308
+ //
58
309
  }
59
310
  };
60
-
61
311
  const initialTargetStringInfo = {
62
312
  targetString: '',
63
313
  startNodeIndex: null,
@@ -66,13 +316,13 @@ const initialTargetStringInfo = {
66
316
  endOffsetIndex: null
67
317
  };
68
318
  const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => {
69
- var _ref$current, _ref$current$innerTex;
70
-
319
+ var _ref$current, _ref$current$textCont, _textField$innerText;
71
320
  const {
72
321
  className,
73
322
  messageFieldId,
74
323
  isEdit,
75
324
  isMentionEnabled,
325
+ isVoiceMessageEnabled,
76
326
  disabled,
77
327
  message,
78
328
  placeholder,
@@ -83,17 +333,30 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
83
333
  onCancelEdit,
84
334
  onStartTyping,
85
335
  channelUrl,
336
+ channel,
86
337
  mentionSelectedUser,
87
338
  onUserMentioned,
88
339
  onMentionStringChange,
89
340
  onMentionedUserIdsUpdated,
341
+ onVoiceMessageIconClick,
90
342
  onKeyUp,
91
- onKeyDown
343
+ onKeyDown,
344
+ renderFileUploadIcon,
345
+ renderVoiceMessageIcon,
346
+ renderSendMessageIcon,
347
+ setMentionedUsers
92
348
  } = props;
93
349
  const textFieldId = messageFieldId || TEXT_FIELD_ID;
94
350
  const {
95
351
  stringSet
96
- } = React.useContext(LocalizationContext.LocalizationContext);
352
+ } = LocalizationContext.useLocalization();
353
+ const {
354
+ config
355
+ } = useSendbirdStateContext();
356
+ const isFileUploadEnabled = checkIfFileUploadEnabled({
357
+ channel,
358
+ config
359
+ });
97
360
  const fileInputRef = React.useRef(null);
98
361
  const [isInput, setIsInput] = React.useState(false);
99
362
  const [mentionedUserIds, setMentionedUserIds] = React.useState([]);
@@ -102,7 +365,6 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
102
365
  try {
103
366
  const elem = ref === null || ref === void 0 ? void 0 : ref.current;
104
367
  const MAX_HEIGHT = window.document.body.offsetHeight * 0.6;
105
-
106
368
  if (elem && elem.scrollHeight >= LINE_HEIGHT) {
107
369
  if (MAX_HEIGHT < elem.scrollHeight) {
108
370
  elem.style.height = 'auto';
@@ -114,99 +376,95 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
114
376
  } else {
115
377
  elem.style.height = '';
116
378
  }
117
- } catch (error) {// error
379
+ } catch (error) {
380
+ // error
118
381
  }
119
- }, []); // #Edit mode
382
+ }, []);
383
+
384
+ // #Edit mode
120
385
  // for easilly initialize input value from outside, but
121
386
  // useEffect(_, [channelUrl]) erase it
122
-
123
387
  const initialValue = props === null || props === void 0 ? void 0 : props.value;
124
388
  React.useEffect(() => {
125
- var _textField$innerText;
126
-
389
+ var _textField$textConten;
127
390
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
128
-
129
391
  try {
130
392
  textField.innerHTML = initialValue;
131
393
  displayCaret(textField, initialValue === null || initialValue === void 0 ? void 0 : initialValue.length);
132
- } catch (_unused2) {}
133
-
394
+ } catch (_unused2) {
395
+ //
396
+ }
134
397
  setMentionedUserIds([]);
135
- setIsInput((textField === null || textField === void 0 ? void 0 : (_textField$innerText = textField.innerText) === null || _textField$innerText === void 0 ? void 0 : _textField$innerText.length) > 0);
398
+ setIsInput((textField === null || textField === void 0 ? void 0 : (_textField$textConten = textField.textContent) === null || _textField$textConten === void 0 ? void 0 : _textField$textConten.trim().length) > 0);
136
399
  setHeight();
137
- }, [initialValue]); // #Mention | Clear input value when channel changes
400
+ }, [initialValue]);
138
401
 
402
+ // #Mention | Clear input value when channel changes
139
403
  React.useEffect(() => {
140
404
  if (!isEdit) {
141
405
  setIsInput(false);
142
406
  resetInput(ref);
143
407
  }
144
- }, [channelUrl]); // #Mention & #Edit | Fill message input values
408
+ }, [channelUrl]);
145
409
 
410
+ // #Mention & #Edit | Fill message input values
146
411
  React.useEffect(() => {
147
412
  if (isEdit && message !== null && message !== void 0 && message.messageId) {
148
- var _message$mentionedUse, _message$mentionedMes, _textField$innerText2;
149
-
413
+ var _message$mentionedUse, _message$mentionedMes, _textField$textConten2;
150
414
  // const textField = document.getElementById(textFieldId);
151
415
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
152
-
153
416
  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) {
154
- var _message$mentionedMes2;
155
-
156
417
  /* mention enabled */
157
418
  const {
158
419
  mentionedUsers = []
159
420
  } = message;
160
- 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 => index.convertWordToStringObj(word, mentionedUsers).map(stringObj => {
161
- const {
162
- type,
163
- value,
164
- userId
165
- } = stringObj;
166
-
167
- if (type === index.StringObjType.mention && mentionedUsers.some(user => (user === null || user === void 0 ? void 0 : user.userId) === userId)) {
168
- var _mentionedUsers$find;
169
-
170
- return server.renderToString( /*#__PURE__*/React__default["default"].createElement(ui_MentionUserLabel, {
171
- userId: userId
172
- }, `${_const.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}`));
421
+ const tokens = tokenize.tokenizeMessage({
422
+ messageText: message === null || message === void 0 ? void 0 : message.mentionedMessageTemplate,
423
+ mentionedUsers
424
+ });
425
+ textField.innerHTML = tokens.map(token => {
426
+ if (token.type === tokenize.TOKEN_TYPES.mention) {
427
+ const mentionedUser = mentionedUsers.find(user => user.userId === token.userId);
428
+ const nickname = `${tokenize.USER_MENTION_PREFIX}${(mentionedUser === null || mentionedUser === void 0 ? void 0 : mentionedUser.nickname) || token.value || stringSet.MENTION_NAME__NO_NAME}`;
429
+ return renderToString({
430
+ userId: token.userId,
431
+ nickname
432
+ });
173
433
  }
174
-
175
- return sanitizeString(value);
176
- }).join('')).join(' ');
434
+ return sanitizeString(token.value);
435
+ }).join(' ');
177
436
  } else {
178
437
  /* mention disabled */
179
438
  try {
180
439
  textField.innerHTML = sanitizeString(message === null || message === void 0 ? void 0 : message.message);
181
- } catch (_unused3) {}
182
-
440
+ } catch (_unused3) {
441
+ //
442
+ }
183
443
  setMentionedUserIds([]);
184
444
  }
185
-
186
- setIsInput((textField === null || textField === void 0 ? void 0 : (_textField$innerText2 = textField.innerText) === null || _textField$innerText2 === void 0 ? void 0 : _textField$innerText2.length) > 0);
445
+ setIsInput((textField === null || textField === void 0 ? void 0 : (_textField$textConten2 = textField.textContent) === null || _textField$textConten2 === void 0 ? void 0 : _textField$textConten2.trim().length) > 0);
187
446
  setHeight();
188
447
  }
189
- }, [isEdit, message]); // #Mention | Detect MentionedLabel modified
448
+ }, [isEdit, message]);
190
449
 
450
+ // #Mention | Detect MentionedLabel modified
191
451
  const useMentionedLabelDetection = React.useCallback(() => {
452
+ var _textField$textConten3;
192
453
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
193
-
194
454
  if (isMentionEnabled) {
195
455
  const newMentionedUserIds = [...textField.getElementsByClassName('sendbird-mention-user-label')].map(node => {
196
456
  var _node$dataset;
197
-
198
457
  return node === null || node === void 0 ? void 0 : (_node$dataset = node.dataset) === null || _node$dataset === void 0 ? void 0 : _node$dataset.userid;
199
458
  });
200
-
201
459
  if (!index.arrayEqual(mentionedUserIds, newMentionedUserIds) || newMentionedUserIds.length === 0) {
202
460
  onMentionedUserIdsUpdated(newMentionedUserIds);
203
461
  setMentionedUserIds(newMentionedUserIds);
204
462
  }
205
463
  }
464
+ setIsInput(((_textField$textConten3 = textField.textContent) === null || _textField$textConten3 === void 0 ? void 0 : _textField$textConten3.trim().length) > 0);
465
+ }, [targetStringInfo, isMentionEnabled]);
206
466
 
207
- setIsInput(textField.innerText.length > 0);
208
- }, [targetStringInfo, isMentionEnabled]); // #Mention | Replace selected user nickname to the MentionedUserLabel
209
-
467
+ // #Mention | Replace selected user nickname to the MentionedUserLabel
210
468
  React.useEffect(() => {
211
469
  if (isMentionEnabled && mentionSelectedUser) {
212
470
  const {
@@ -216,18 +474,17 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
216
474
  endNodeIndex,
217
475
  endOffsetIndex
218
476
  } = targetStringInfo;
219
-
220
477
  if (targetString && startNodeIndex !== null && startOffsetIndex !== null) {
221
478
  var _document, _childNodes$startNode, _document2, _childNodes$endNodeIn;
222
-
223
479
  // const textField = document.getElementById(textFieldId);
224
480
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
225
- const childNodes = [...(textField === null || textField === void 0 ? void 0 : textField.childNodes)];
481
+ const childNodes = nodeListToArray(textField === null || textField === void 0 ? void 0 : textField.childNodes);
226
482
  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));
227
483
  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)}`);
228
- const mentionLabel = server.renderToString( /*#__PURE__*/React__default["default"].createElement(ui_MentionUserLabel, {
229
- userId: mentionSelectedUser === null || mentionSelectedUser === void 0 ? void 0 : mentionSelectedUser.userId
230
- }, `${_const.USER_MENTION_TEMP_CHAR}${(mentionSelectedUser === null || mentionSelectedUser === void 0 ? void 0 : mentionSelectedUser.nickname) || stringSet.MENTION_NAME__NO_NAME}`));
484
+ const mentionLabel = renderToString({
485
+ userId: mentionSelectedUser === null || mentionSelectedUser === void 0 ? void 0 : mentionSelectedUser.userId,
486
+ nickname: `${_const.USER_MENTION_TEMP_CHAR}${(mentionSelectedUser === null || mentionSelectedUser === void 0 ? void 0 : mentionSelectedUser.nickname) || stringSet.MENTION_NAME__NO_NAME}`
487
+ });
231
488
  const div = document.createElement('div');
232
489
  div.innerHTML = mentionLabel;
233
490
  const newNodes = [...childNodes.slice(0, startNodeIndex), frontTextNode, div.childNodes[0], backTextNode, ...childNodes.slice(endNodeIndex + 1)];
@@ -236,7 +493,6 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
236
493
  textField.appendChild(newNode);
237
494
  });
238
495
  onUserMentioned(mentionSelectedUser);
239
-
240
496
  if (window.getSelection || document.getSelection) {
241
497
  // set caret postion
242
498
  const selection = window.getSelection() || document.getSelection();
@@ -249,41 +505,34 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
249
505
  selection.addRange(range);
250
506
  textField.focus();
251
507
  }
252
-
253
508
  setTargetStringInfo(_rollupPluginBabelHelpers._objectSpread2({}, initialTargetStringInfo));
254
509
  setHeight();
255
510
  useMentionedLabelDetection();
256
511
  }
257
512
  }
258
- }, [mentionSelectedUser, isMentionEnabled]); // #Mention | Detect mentioning user nickname
513
+ }, [mentionSelectedUser, isMentionEnabled]);
259
514
 
515
+ // #Mention | Detect mentioning user nickname
260
516
  const useMentionInputDetection = React.useCallback(() => {
261
517
  var _window, _window$getSelection, _document3, _document3$getSelecti;
262
-
263
518
  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));
264
519
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
265
-
266
520
  if (selection.anchorNode === textField) {
267
521
  onMentionStringChange('');
268
522
  }
269
-
270
523
  if (isMentionEnabled && selection && selection.anchorNode === selection.focusNode && selection.anchorOffset === selection.focusOffset) {
271
524
  let textStack = '';
272
525
  let startNodeIndex = null;
273
526
  let startOffsetIndex = null;
274
-
275
527
  for (let index = 0; index < textField.childNodes.length; index += 1) {
276
528
  const currentNode = textField.childNodes[index];
277
-
278
529
  if (currentNode.nodeType === _const$1.NodeTypes.TextNode) {
279
530
  /* text node */
280
531
  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) || '';
281
-
282
532
  if (textStack.length > 0) {
283
533
  textStack += textContent;
284
534
  } else {
285
535
  let charLastIndex = textContent.lastIndexOf(_const.USER_MENTION_TEMP_CHAR);
286
-
287
536
  for (let i = charLastIndex - 1; i > -1; i -= 1) {
288
537
  if (textContent[i] === _const.USER_MENTION_TEMP_CHAR) {
289
538
  charLastIndex = i;
@@ -291,7 +540,6 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
291
540
  break;
292
541
  }
293
542
  }
294
-
295
543
  if (charLastIndex > -1) {
296
544
  textStack = textContent;
297
545
  startNodeIndex = index;
@@ -304,14 +552,12 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
304
552
  startNodeIndex = null;
305
553
  startOffsetIndex = null;
306
554
  }
307
-
308
555
  if (currentNode === selection.anchorNode) {
309
556
  /**
310
557
  * targetString could be ''
311
558
  * startNodeIndex and startOffsetIndex could be null
312
559
  */
313
560
  const targetString = textStack ? textStack.slice(startOffsetIndex) : ''; // include template character
314
-
315
561
  setTargetStringInfo({
316
562
  targetString,
317
563
  startNodeIndex,
@@ -325,11 +571,9 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
325
571
  }
326
572
  }
327
573
  }, [isMentionEnabled]);
328
-
329
574
  const sendMessage = () => {
330
575
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
331
-
332
- if (!isEdit && textField !== null && textField !== void 0 && textField.innerText) {
576
+ if (!isEdit && textField !== null && textField !== void 0 && textField.textContent) {
333
577
  let messageText = '';
334
578
  let mentionTemplate = '';
335
579
  textField.childNodes.forEach(node => {
@@ -346,6 +590,13 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
346
590
  } else if (node.nodeType === _const$1.NodeTypes.ElementNode && node.nodeName === _const$1.NodeNames.Br) {
347
591
  messageText += '\n';
348
592
  mentionTemplate += '\n';
593
+ } else if ((node === null || node === void 0 ? void 0 : node.nodeType) === _const$1.NodeTypes.ElementNode && (node === null || node === void 0 ? void 0 : node.nodeName) === _const$1.NodeNames.Div) {
594
+ // handles newline in safari
595
+ const {
596
+ textContent = ''
597
+ } = node;
598
+ messageText += `\n${textContent}`;
599
+ mentionTemplate += `\n${textContent}`;
349
600
  } else {
350
601
  // other nodes including text node
351
602
  const {
@@ -365,13 +616,10 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
365
616
  setHeight();
366
617
  }
367
618
  };
368
-
369
- 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());
370
-
619
+ 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());
371
620
  const editMessage = () => {
372
621
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
373
622
  const messageId = message === null || message === void 0 ? void 0 : message.messageId;
374
-
375
623
  if (isEdit && messageId) {
376
624
  let messageText = '';
377
625
  let mentionTemplate = '';
@@ -386,7 +634,6 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
386
634
  } = dataset;
387
635
  messageText += innerText;
388
636
  mentionTemplate += `${_const.USER_MENTION_TEMP_CHAR}{${userid}}`;
389
- } else if (node.nodeType === _const$1.NodeTypes.ElementNode && node.nodeName === _const$1.NodeNames.Span) {
390
637
  messageText += '\n';
391
638
  mentionTemplate += '\n';
392
639
  } else {
@@ -407,7 +654,15 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
407
654
  resetInput(ref);
408
655
  }
409
656
  };
410
-
657
+ const onPaste = usePaste({
658
+ ref,
659
+ setMentionedUserIds,
660
+ setMentionedUsers,
661
+ channel,
662
+ setIsInput,
663
+ setHeight
664
+ });
665
+ const textField = ref === null || ref === void 0 ? void 0 : ref.current;
411
666
  return /*#__PURE__*/React__default["default"].createElement("form", {
412
667
  className: index.getClassName([className, isEdit ? 'sendbird-message-input__edit' : '', disabled ? 'sendbird-message-input-form__disabled' : ''])
413
668
  }, /*#__PURE__*/React__default["default"].createElement("div", {
@@ -423,17 +678,14 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
423
678
  maxLength: maxLength,
424
679
  onKeyDown: e => {
425
680
  const preventEvent = onKeyDown(e);
426
-
427
681
  if (preventEvent) {
428
682
  e.preventDefault();
429
683
  } else {
430
- var _e$nativeEvent, _ref$current2, _ref$current2$childNo, _ref$current3, _ref$current3$childNo, _ref$current3$childNo2, _ref$current$childNod, _ref$current$childNod2;
431
-
432
- if (!e.shiftKey && e.key === _const$1.MessageInputKeys.Enter && (e === null || e === void 0 ? void 0 : (_e$nativeEvent = e.nativeEvent) === null || _e$nativeEvent === void 0 ? void 0 : _e$nativeEvent.isComposing) !== true) {
684
+ var _textField$textConten4, _e$nativeEvent, _ref$current2, _ref$current2$childNo, _ref$current3, _ref$current3$childNo, _ref$current3$childNo2, _ref$current$childNod, _ref$current$childNod2;
685
+ if (!e.shiftKey && e.key === _const$1.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) {
433
686
  e.preventDefault();
434
687
  sendMessage();
435
688
  }
436
-
437
689
  if (e.key === _const$1.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) === _const$1.NodeTypes.ElementNode) {
438
690
  ref === null || ref === void 0 ? void 0 : ref.current.removeChild(ref === null || ref === void 0 ? void 0 : ref.current.childNodes[1]);
439
691
  }
@@ -441,7 +693,6 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
441
693
  },
442
694
  onKeyUp: e => {
443
695
  const preventEvent = onKeyUp(e);
444
-
445
696
  if (preventEvent) {
446
697
  e.preventDefault();
447
698
  } else {
@@ -452,44 +703,41 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
452
703
  useMentionInputDetection();
453
704
  },
454
705
  onInput: () => {
455
- var _ref$current4, _ref$current4$innerTe;
456
-
706
+ var _textField$textConten5;
457
707
  setHeight();
458
708
  onStartTyping();
459
- 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);
709
+ setIsInput((textField === null || textField === void 0 ? void 0 : (_textField$textConten5 = textField.textContent) === null || _textField$textConten5 === void 0 ? void 0 : _textField$textConten5.trim().length) > 0);
460
710
  useMentionedLabelDetection();
461
711
  },
462
- onPaste: e => {
463
- e.preventDefault();
464
- document.execCommand("insertHTML", false, sanitizeString(e === null || e === void 0 ? void 0 : e.clipboardData.getData('text')));
465
- }
466
- }), !isInput && /*#__PURE__*/React__default["default"].createElement(ui_Label.Label, {
712
+ onPaste: onPaste
713
+ }), (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["default"].createElement(ui_Label.Label, {
467
714
  className: "sendbird-message-input--placeholder",
468
715
  type: ui_Label.LabelTypography.BODY_1,
469
- color: ui_Label.LabelColors.ONBACKGROUND_3
716
+ color: disabled ? ui_Label.LabelColors.ONBACKGROUND_4 : ui_Label.LabelColors.ONBACKGROUND_3
470
717
  }, placeholder || stringSet.MESSAGE_INPUT__PLACE_HOLDER), !isEdit && isInput && /*#__PURE__*/React__default["default"].createElement(ui_IconButton, {
471
718
  className: "sendbird-message-input--send",
472
719
  height: "32px",
473
720
  width: "32px",
474
721
  onClick: () => sendMessage()
475
- }, /*#__PURE__*/React__default["default"].createElement(ui_Icon["default"], {
722
+ }, (renderSendMessageIcon === null || renderSendMessageIcon === void 0 ? void 0 : renderSendMessageIcon()) || /*#__PURE__*/React__default["default"].createElement(ui_Icon["default"], {
476
723
  type: ui_Icon.IconTypes.SEND,
477
- fillColor: ui_Icon.IconColors.PRIMARY,
724
+ fillColor: disabled ? ui_Icon.IconColors.ON_BACKGROUND_4 : ui_Icon.IconColors.PRIMARY,
478
725
  width: "20px",
479
726
  height: "20px"
480
- })), !isEdit && !isInput && /*#__PURE__*/React__default["default"].createElement(ui_IconButton, {
481
- className: "sendbird-message-input--attach",
727
+ })), !isEdit && !isInput && ((renderFileUploadIcon === null || renderFileUploadIcon === void 0 ? void 0 : renderFileUploadIcon() // UIKit Dashboard configuration should have lower priority than
728
+ // renderFileUploadIcon which is set in code level
729
+ ) || isFileUploadEnabled && /*#__PURE__*/React__default["default"].createElement(ui_IconButton, {
730
+ className: `sendbird-message-input--attach ${isVoiceMessageEnabled ? 'is-voice-message-enabled' : ''}`,
482
731
  height: "32px",
483
732
  width: "32px",
484
733
  onClick: () => {
485
734
  var _fileInputRef$current, _fileInputRef$current2;
486
-
487
735
  // todo: clear previous input
488
736
  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);
489
737
  }
490
738
  }, /*#__PURE__*/React__default["default"].createElement(ui_Icon["default"], {
491
739
  type: ui_Icon.IconTypes.ATTACH,
492
- fillColor: ui_Icon.IconColors.CONTENT_INVERSE,
740
+ fillColor: disabled ? ui_Icon.IconColors.ON_BACKGROUND_4 : ui_Icon.IconColors.CONTENT_INVERSE,
493
741
  width: "20px",
494
742
  height: "20px"
495
743
  }), /*#__PURE__*/React__default["default"].createElement("input", {
@@ -497,6 +745,16 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
497
745
  type: "file",
498
746
  ref: fileInputRef,
499
747
  onChange: handleUploadFile(onFileUpload)
748
+ }))), isVoiceMessageEnabled && !isEdit && !isInput && /*#__PURE__*/React__default["default"].createElement(ui_IconButton, {
749
+ className: "sendbird-message-input--voice-message",
750
+ width: "32px",
751
+ height: "32px",
752
+ onClick: onVoiceMessageIconClick
753
+ }, (renderVoiceMessageIcon === null || renderVoiceMessageIcon === void 0 ? void 0 : renderVoiceMessageIcon()) || /*#__PURE__*/React__default["default"].createElement(ui_Icon["default"], {
754
+ type: ui_Icon.IconTypes.AUDIO_ON_LINED,
755
+ fillColor: disabled ? ui_Icon.IconColors.ON_BACKGROUND_4 : ui_Icon.IconColors.CONTENT_INVERSE,
756
+ width: "20px",
757
+ height: "20px"
500
758
  }))), isEdit && /*#__PURE__*/React__default["default"].createElement("div", {
501
759
  className: "sendbird-message-input--edit-action"
502
760
  }, /*#__PURE__*/React__default["default"].createElement(ui_Button["default"], {
@@ -519,6 +777,8 @@ MessageInput.propTypes = {
519
777
  value: PropTypes__default["default"].string,
520
778
  isEdit: PropTypes__default["default"].bool,
521
779
  isMentionEnabled: PropTypes__default["default"].bool,
780
+ isVoiceMessageEnabled: PropTypes__default["default"].bool,
781
+ onVoiceMessageIconClick: PropTypes__default["default"].func,
522
782
  message: PropTypes__default["default"].shape({
523
783
  messageId: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number]),
524
784
  message: PropTypes__default["default"].string,
@@ -537,11 +797,18 @@ MessageInput.propTypes = {
537
797
  userId: PropTypes__default["default"].string,
538
798
  nickname: PropTypes__default["default"].string
539
799
  }),
800
+ setMentionedUsers: PropTypes__default["default"].func,
540
801
  onUserMentioned: PropTypes__default["default"].func,
541
802
  onMentionStringChange: PropTypes__default["default"].func,
542
803
  onMentionedUserIdsUpdated: PropTypes__default["default"].func,
543
804
  onKeyUp: PropTypes__default["default"].func,
544
- onKeyDown: PropTypes__default["default"].func
805
+ onKeyDown: PropTypes__default["default"].func,
806
+ renderVoiceMessageIcon: PropTypes__default["default"].func,
807
+ renderSendMessageIcon: PropTypes__default["default"].func,
808
+ renderFileUploadIcon: PropTypes__default["default"].func,
809
+ channel: PropTypes__default["default"].shape({
810
+ channelType: PropTypes__default["default"].string
811
+ }).isRequired
545
812
  };
546
813
  MessageInput.defaultProps = {
547
814
  className: '',
@@ -553,6 +820,8 @@ MessageInput.defaultProps = {
553
820
  message: null,
554
821
  isEdit: false,
555
822
  isMentionEnabled: false,
823
+ isVoiceMessageEnabled: true,
824
+ onVoiceMessageIconClick: noop,
556
825
  disabled: false,
557
826
  placeholder: '',
558
827
  maxLength: 5000,
@@ -564,7 +833,11 @@ MessageInput.defaultProps = {
564
833
  onMentionStringChange: noop,
565
834
  onMentionedUserIdsUpdated: noop,
566
835
  onKeyUp: noop,
567
- onKeyDown: noop
836
+ onKeyDown: noop,
837
+ setMentionedUsers: noop,
838
+ renderVoiceMessageIcon: noop,
839
+ renderFileUploadIcon: noop,
840
+ renderSendMessageIcon: noop
568
841
  };
569
842
 
570
843
  module.exports = MessageInput;