@sendbird/uikit-react 3.5.0-beta.0 → 3.5.0-mobile-web-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (932) hide show
  1. package/App.js +284 -226
  2. package/App.js.map +1 -1
  3. package/CHANGELOG.md +470 -0
  4. package/Channel/components/ChannelHeader.js +45 -41
  5. package/Channel/components/ChannelHeader.js.map +1 -1
  6. package/Channel/components/ChannelUI.js +101 -129
  7. package/Channel/components/ChannelUI.js.map +1 -1
  8. package/Channel/components/FileViewer.js +55 -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 +238 -230
  13. package/Channel/components/Message.js.map +1 -1
  14. package/Channel/components/MessageInput.js +150 -129
  15. package/Channel/components/MessageInput.js.map +1 -1
  16. package/Channel/components/MessageList.js +258 -174
  17. package/Channel/components/MessageList.js.map +1 -1
  18. package/Channel/components/RemoveMessageModal.js +33 -30
  19. package/Channel/components/RemoveMessageModal.js.map +1 -1
  20. package/Channel/components/SuggestedMentionList.js +138 -193
  21. package/Channel/components/SuggestedMentionList.js.map +1 -1
  22. package/Channel/components/TypingIndicator.js +43 -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 +11 -19
  27. package/Channel/context.js.map +1 -1
  28. package/Channel.js +67 -43
  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 +100 -142
  35. package/ChannelList/components/ChannelListUI.js.map +1 -1
  36. package/ChannelList/components/ChannelPreview.js +71 -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 +31 -31
  43. package/ChannelList.js.map +1 -1
  44. package/{ChannelListProvider-f461d265.js → ChannelListProvider-86b6d956.js} +233 -285
  45. package/ChannelListProvider-86b6d956.js.map +1 -0
  46. package/{ChannelProvider-554e7116.js → ChannelProvider-b41fde4c.js} +627 -716
  47. package/ChannelProvider-b41fde4c.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-2b669e7e.js +44 -0
  76. package/CreateChannelProvider-2b669e7e.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-57b46f6c.js +20 -0
  90. package/{LocalizationContext-4df0cc32.js.map → LocalizationContext-57b46f6c.js.map} +1 -1
  91. package/MediaQueryContext-fbe7af77.js +87 -0
  92. package/MediaQueryContext-fbe7af77.js.map +1 -0
  93. package/MemberList-6ff1e7fa.js +401 -0
  94. package/MemberList-6ff1e7fa.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 +46 -33
  108. package/OpenChannel/components/OpenChannelInput.js.map +1 -1
  109. package/OpenChannel/components/OpenChannelMessage.js +168 -190
  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 +34 -28
  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-700cf3de.js +429 -0
  128. package/OpenChannelListProvider-700cf3de.js.map +1 -0
  129. package/OpenChannelProvider-b634e564.js +1885 -0
  130. package/OpenChannelProvider-b634e564.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-625b3778.js +36 -0
  147. package/RemoveMessageModal-625b3778.js.map +1 -0
  148. package/SendbirdProvider.js +897 -408
  149. package/SendbirdProvider.js.map +1 -1
  150. package/Thread/components/ParentMessageInfo.js +235 -217
  151. package/Thread/components/ParentMessageInfo.js.map +1 -1
  152. package/Thread/components/ParentMessageInfoItem.js +110 -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 +107 -83
  157. package/Thread/components/ThreadList.js.map +1 -1
  158. package/Thread/components/ThreadListItem.js +297 -273
  159. package/Thread/components/ThreadListItem.js.map +1 -1
  160. package/Thread/components/ThreadMessageInput.js +144 -113
  161. package/Thread/components/ThreadMessageInput.js.map +1 -1
  162. package/Thread/components/ThreadUI.js +168 -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 +86 -57
  168. package/Thread.js.map +1 -1
  169. package/ThreadProvider-a3d3b241.js +1695 -0
  170. package/ThreadProvider-a3d3b241.js.map +1 -0
  171. package/{UserProfileContext-c58a7b86.js → UserProfileContext-29074346.js} +1 -4
  172. package/{UserProfileContext-c58a7b86.js.map → UserProfileContext-29074346.js.map} +1 -1
  173. package/VoiceMessageInputWrapper-bdc53de4.js +169 -0
  174. package/VoiceMessageInputWrapper-bdc53de4.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 +72 -0
  178. package/VoicePlayer/useVoicePlayer.js.map +1 -0
  179. package/VoiceRecorder/context.js +118 -0
  180. package/VoiceRecorder/context.js.map +1 -0
  181. package/VoiceRecorder/useVoiceRecorder.js +109 -0
  182. package/VoiceRecorder/useVoiceRecorder.js.map +1 -0
  183. package/WebAudioUtils-c3ea2db7.js +123 -0
  184. package/WebAudioUtils-c3ea2db7.js.map +1 -0
  185. package/{_rollupPluginBabelHelpers-498add61.js → _rollupPluginBabelHelpers-0bc76382.js} +17 -11
  186. package/_rollupPluginBabelHelpers-0bc76382.js.map +1 -0
  187. package/actionTypes-45ec82e6.js +8 -0
  188. package/actionTypes-45ec82e6.js.map +1 -0
  189. package/cjs/App.js +284 -226
  190. package/cjs/App.js.map +1 -1
  191. package/cjs/Channel/components/ChannelHeader.js +45 -41
  192. package/cjs/Channel/components/ChannelHeader.js.map +1 -1
  193. package/cjs/Channel/components/ChannelUI.js +99 -127
  194. package/cjs/Channel/components/ChannelUI.js.map +1 -1
  195. package/cjs/Channel/components/FileViewer.js +55 -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 +241 -233
  200. package/cjs/Channel/components/Message.js.map +1 -1
  201. package/cjs/Channel/components/MessageInput.js +149 -128
  202. package/cjs/Channel/components/MessageInput.js.map +1 -1
  203. package/cjs/Channel/components/MessageList.js +258 -174
  204. package/cjs/Channel/components/MessageList.js.map +1 -1
  205. package/cjs/Channel/components/RemoveMessageModal.js +33 -30
  206. package/cjs/Channel/components/RemoveMessageModal.js.map +1 -1
  207. package/cjs/Channel/components/SuggestedMentionList.js +138 -193
  208. package/cjs/Channel/components/SuggestedMentionList.js.map +1 -1
  209. package/cjs/Channel/components/TypingIndicator.js +43 -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 +67 -43
  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 +99 -141
  222. package/cjs/ChannelList/components/ChannelListUI.js.map +1 -1
  223. package/cjs/ChannelList/components/ChannelPreview.js +71 -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 +31 -31
  230. package/cjs/ChannelList.js.map +1 -1
  231. package/cjs/{ChannelListProvider-c2148b43.js → ChannelListProvider-46e379c7.js} +232 -284
  232. package/cjs/ChannelListProvider-46e379c7.js.map +1 -0
  233. package/cjs/{ChannelProvider-cf5dc7e3.js → ChannelProvider-2bfafa25.js} +626 -714
  234. package/cjs/ChannelProvider-2bfafa25.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-ef7e4c91.js +52 -0
  263. package/cjs/CreateChannelProvider-ef7e4c91.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-2b3f310d.js → LocalizationContext-b42fa07d.js} +9 -11
  277. package/cjs/{LocalizationContext-2b3f310d.js.map → LocalizationContext-b42fa07d.js.map} +1 -1
  278. package/cjs/MediaQueryContext-372b55a6.js +94 -0
  279. package/cjs/MediaQueryContext-372b55a6.js.map +1 -0
  280. package/cjs/MemberList-d878307c.js +407 -0
  281. package/cjs/MemberList-d878307c.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 +46 -33
  295. package/cjs/OpenChannel/components/OpenChannelInput.js.map +1 -1
  296. package/cjs/OpenChannel/components/OpenChannelMessage.js +168 -190
  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 +34 -28
  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-d1cbe71b.js +439 -0
  315. package/cjs/OpenChannelListProvider-d1cbe71b.js.map +1 -0
  316. package/cjs/OpenChannelProvider-94eb45b4.js +1894 -0
  317. package/cjs/OpenChannelProvider-94eb45b4.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-c01eb93b.js → RemoveMessageModal-83d3158a.js} +19 -14
  333. package/cjs/RemoveMessageModal-83d3158a.js.map +1 -0
  334. package/cjs/SendbirdProvider.js +897 -409
  335. package/cjs/SendbirdProvider.js.map +1 -1
  336. package/cjs/Thread/components/ParentMessageInfo.js +234 -216
  337. package/cjs/Thread/components/ParentMessageInfo.js.map +1 -1
  338. package/cjs/Thread/components/ParentMessageInfoItem.js +109 -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 +107 -83
  343. package/cjs/Thread/components/ThreadList.js.map +1 -1
  344. package/cjs/Thread/components/ThreadListItem.js +296 -272
  345. package/cjs/Thread/components/ThreadListItem.js.map +1 -1
  346. package/cjs/Thread/components/ThreadMessageInput.js +144 -113
  347. package/cjs/Thread/components/ThreadMessageInput.js.map +1 -1
  348. package/cjs/Thread/components/ThreadUI.js +169 -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 +86 -57
  354. package/cjs/Thread.js.map +1 -1
  355. package/cjs/ThreadProvider-3ff0ff63.js +1704 -0
  356. package/cjs/ThreadProvider-3ff0ff63.js.map +1 -0
  357. package/cjs/{UserProfileContext-9d60cdc4.js → UserProfileContext-c87514d3.js} +1 -4
  358. package/cjs/{UserProfileContext-9d60cdc4.js.map → UserProfileContext-c87514d3.js.map} +1 -1
  359. package/cjs/VoiceMessageInputWrapper-6e1d03d7.js +175 -0
  360. package/cjs/VoiceMessageInputWrapper-6e1d03d7.js.map +1 -0
  361. package/cjs/VoicePlayer/context.js +16 -0
  362. package/cjs/{NotificationChannel → VoicePlayer}/context.js.map +1 -1
  363. package/cjs/VoicePlayer/useVoicePlayer.js +76 -0
  364. package/cjs/VoicePlayer/useVoicePlayer.js.map +1 -0
  365. package/cjs/VoiceRecorder/context.js +128 -0
  366. package/cjs/VoiceRecorder/context.js.map +1 -0
  367. package/cjs/VoiceRecorder/useVoiceRecorder.js +114 -0
  368. package/cjs/VoiceRecorder/useVoiceRecorder.js.map +1 -0
  369. package/cjs/WebAudioUtils-de98e939.js +126 -0
  370. package/cjs/WebAudioUtils-de98e939.js.map +1 -0
  371. package/cjs/{_rollupPluginBabelHelpers-a7254c9d.js → _rollupPluginBabelHelpers-3a9d1641.js} +17 -10
  372. package/cjs/_rollupPluginBabelHelpers-3a9d1641.js.map +1 -0
  373. package/cjs/actionTypes-ecb5bef6.js +10 -0
  374. package/cjs/actionTypes-ecb5bef6.js.map +1 -0
  375. package/cjs/{color-89f33656.js → color-a4e73e6f.js} +13 -21
  376. package/cjs/color-a4e73e6f.js.map +1 -0
  377. package/cjs/{compareIds-ca869c2e.js → compareIds-a7029d6a.js} +5 -6
  378. package/cjs/compareIds-a7029d6a.js.map +1 -0
  379. package/cjs/{const-db71e993.js → const-3ab3e45c.js} +4 -4
  380. package/cjs/const-3ab3e45c.js.map +1 -0
  381. package/cjs/const-68cf2709.js +20 -0
  382. package/cjs/const-68cf2709.js.map +1 -0
  383. package/cjs/consts-26d4668c.js +6 -0
  384. package/cjs/consts-26d4668c.js.map +1 -0
  385. package/cjs/consts-ad8ba629.js +6 -0
  386. package/cjs/consts-ad8ba629.js.map +1 -0
  387. package/cjs/consts-bb2a67c7.js +6 -0
  388. package/cjs/consts-bb2a67c7.js.map +1 -0
  389. package/cjs/consts-f71467c8.js +41 -0
  390. package/cjs/consts-f71467c8.js.map +1 -0
  391. package/cjs/{context-2f5d47fd.js → context-b81d493d.js} +6 -5
  392. package/cjs/{context-2f5d47fd.js.map → context-b81d493d.js.map} +1 -1
  393. package/cjs/dist/index.css +970 -532
  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-0b8a1074.js +590 -0
  398. package/cjs/index-0b8a1074.js.map +1 -0
  399. package/cjs/index-1c18afa8.js +57 -0
  400. package/cjs/index-1c18afa8.js.map +1 -0
  401. package/cjs/index-3f079f3e.js +367 -0
  402. package/cjs/index-3f079f3e.js.map +1 -0
  403. package/cjs/{index-d6ef2a60.js → index-72e412f7.js} +11 -25
  404. package/cjs/index-72e412f7.js.map +1 -0
  405. package/cjs/{index-0988ab25.js → index-7ec4fe06.js} +57 -3
  406. package/cjs/index-7ec4fe06.js.map +1 -0
  407. package/cjs/{index-be9c6237.js → index-811da6ee.js} +55 -63
  408. package/cjs/index-811da6ee.js.map +1 -0
  409. package/cjs/{index-73467e1d.js → index-849f44b0.js} +2 -2
  410. package/cjs/{index-73467e1d.js.map → index-849f44b0.js.map} +1 -1
  411. package/cjs/{index-de151767.js → index-97005534.js} +1 -1
  412. package/cjs/{index-de151767.js.map → index-97005534.js.map} +1 -1
  413. package/cjs/index-9b23b5c2.js +161 -0
  414. package/cjs/index-9b23b5c2.js.map +1 -0
  415. package/cjs/{index-621e74bd.js → index-9d9e563e.js} +29 -37
  416. package/cjs/index-9d9e563e.js.map +1 -0
  417. package/cjs/index-a401f2b6.js +441 -0
  418. package/cjs/index-a401f2b6.js.map +1 -0
  419. package/cjs/{index-2c5dd48c.js → index-afada680.js} +2 -2
  420. package/cjs/{index-2c5dd48c.js.map → index-afada680.js.map} +1 -1
  421. package/cjs/index-c38404d2.js +79 -0
  422. package/cjs/index-c38404d2.js.map +1 -0
  423. package/cjs/index-cb1d7ac4.js +292 -0
  424. package/cjs/index-cb1d7ac4.js.map +1 -0
  425. package/cjs/{index-e240e852.js → index-e1d69370.js} +42 -51
  426. package/cjs/index-e1d69370.js.map +1 -0
  427. package/cjs/{index-c4d4ef49.js → index-e8b83547.js} +1 -1
  428. package/cjs/index-e8b83547.js.map +1 -0
  429. package/cjs/index-f4f6d794.js +202 -0
  430. package/cjs/index-f4f6d794.js.map +1 -0
  431. package/cjs/index.js +77 -58
  432. package/cjs/index.js.map +1 -1
  433. package/cjs/index.module-d2876b1c.js +6 -0
  434. package/cjs/index.module-d2876b1c.js.map +1 -0
  435. package/cjs/lame.all.js +2541 -0
  436. package/cjs/lame.all.js.map +1 -0
  437. package/cjs/sendbirdSelectors.js +307 -417
  438. package/cjs/sendbirdSelectors.js.map +1 -1
  439. package/cjs/{stringSet-91b919f6.js → stringSet-4f30313f.js} +110 -90
  440. package/cjs/stringSet-4f30313f.js.map +1 -0
  441. package/cjs/tokenize-e944d548.js +164 -0
  442. package/cjs/tokenize-e944d548.js.map +1 -0
  443. package/cjs/topics-3226c6ee.js +18 -0
  444. package/cjs/topics-3226c6ee.js.map +1 -0
  445. package/cjs/types-31174fcc.js +17 -0
  446. package/cjs/types-31174fcc.js.map +1 -0
  447. package/cjs/ui/Accordion.js +21 -24
  448. package/cjs/ui/Accordion.js.map +1 -1
  449. package/cjs/ui/AccordionGroup.js +10 -13
  450. package/cjs/ui/AccordionGroup.js.map +1 -1
  451. package/cjs/ui/AdminMessage.js +10 -13
  452. package/cjs/ui/AdminMessage.js.map +1 -1
  453. package/cjs/ui/Avatar.js +57 -79
  454. package/cjs/ui/Avatar.js.map +1 -1
  455. package/cjs/ui/Badge.js +16 -15
  456. package/cjs/ui/Badge.js.map +1 -1
  457. package/cjs/ui/BottomSheet.js +14 -12
  458. package/cjs/ui/BottomSheet.js.map +1 -1
  459. package/cjs/ui/Button.js +20 -35
  460. package/cjs/ui/Button.js.map +1 -1
  461. package/cjs/ui/ChannelAvatar.js +38 -41
  462. package/cjs/ui/ChannelAvatar.js.map +1 -1
  463. package/cjs/ui/Checkbox.js +11 -13
  464. package/cjs/ui/Checkbox.js.map +1 -1
  465. package/cjs/ui/ConnectionStatus.js +7 -5
  466. package/cjs/ui/ConnectionStatus.js.map +1 -1
  467. package/cjs/ui/ContextMenu.js +175 -199
  468. package/cjs/ui/ContextMenu.js.map +1 -1
  469. package/cjs/ui/DateSeparator.js +12 -14
  470. package/cjs/ui/DateSeparator.js.map +1 -1
  471. package/cjs/ui/EmojiReactions.js +299 -107
  472. package/cjs/ui/EmojiReactions.js.map +1 -1
  473. package/cjs/ui/FileMessageItemBody.js +22 -23
  474. package/cjs/ui/FileMessageItemBody.js.map +1 -1
  475. package/cjs/ui/FileViewer.js +36 -36
  476. package/cjs/ui/FileViewer.js.map +1 -1
  477. package/cjs/ui/Icon.js +447 -623
  478. package/cjs/ui/Icon.js.map +1 -1
  479. package/cjs/ui/IconButton.js +20 -31
  480. package/cjs/ui/IconButton.js.map +1 -1
  481. package/cjs/ui/ImageRenderer.js +34 -43
  482. package/cjs/ui/ImageRenderer.js.map +1 -1
  483. package/cjs/ui/Input.js +16 -16
  484. package/cjs/ui/Input.js.map +1 -1
  485. package/cjs/ui/Label.js +2 -2
  486. package/cjs/ui/LinkLabel.js +4 -3
  487. package/cjs/ui/LinkLabel.js.map +1 -1
  488. package/cjs/ui/Loader.js +10 -12
  489. package/cjs/ui/Loader.js.map +1 -1
  490. package/cjs/ui/MentionLabel.js +58 -65
  491. package/cjs/ui/MentionLabel.js.map +1 -1
  492. package/cjs/ui/MentionUserLabel.js +12 -10
  493. package/cjs/ui/MentionUserLabel.js.map +1 -1
  494. package/cjs/ui/MessageContent.js +208 -546
  495. package/cjs/ui/MessageContent.js.map +1 -1
  496. package/cjs/ui/MessageInput.js +338 -118
  497. package/cjs/ui/MessageInput.js.map +1 -1
  498. package/cjs/ui/MessageItemMenu.js +83 -83
  499. package/cjs/ui/MessageItemMenu.js.map +1 -1
  500. package/cjs/ui/MessageItemReactionMenu.js +58 -62
  501. package/cjs/ui/MessageItemReactionMenu.js.map +1 -1
  502. package/cjs/ui/MessageSearchFileItem.js +56 -51
  503. package/cjs/ui/MessageSearchFileItem.js.map +1 -1
  504. package/cjs/ui/MessageSearchItem.js +42 -41
  505. package/cjs/ui/MessageSearchItem.js.map +1 -1
  506. package/cjs/ui/MessageStatus.js +10 -11
  507. package/cjs/ui/MessageStatus.js.map +1 -1
  508. package/cjs/ui/Modal.js +52 -46
  509. package/cjs/ui/Modal.js.map +1 -1
  510. package/cjs/ui/MutedAvatarOverlay.js +10 -10
  511. package/cjs/ui/MutedAvatarOverlay.js.map +1 -1
  512. package/cjs/ui/OGMessageItemBody.js +67 -63
  513. package/cjs/ui/OGMessageItemBody.js.map +1 -1
  514. package/cjs/ui/OpenChannelAdminMessage.js +8 -7
  515. package/cjs/ui/OpenChannelAdminMessage.js.map +1 -1
  516. package/cjs/ui/OpenChannelAvatar.js +18 -17
  517. package/cjs/ui/OpenChannelAvatar.js.map +1 -1
  518. package/cjs/ui/OpenchannelConversationHeader.js +17 -13
  519. package/cjs/ui/OpenchannelConversationHeader.js.map +1 -1
  520. package/cjs/ui/OpenchannelFileMessage.js +138 -149
  521. package/cjs/ui/OpenchannelFileMessage.js.map +1 -1
  522. package/cjs/ui/OpenchannelOGMessage.js +204 -233
  523. package/cjs/ui/OpenchannelOGMessage.js.map +1 -1
  524. package/cjs/ui/OpenchannelThumbnailMessage.js +213 -220
  525. package/cjs/ui/OpenchannelThumbnailMessage.js.map +1 -1
  526. package/cjs/ui/OpenchannelUserMessage.js +164 -173
  527. package/cjs/ui/OpenchannelUserMessage.js.map +1 -1
  528. package/cjs/ui/PlaceHolder.js +5 -6
  529. package/cjs/ui/PlaceHolder.js.map +1 -1
  530. package/cjs/ui/PlaybackTime.js +35 -0
  531. package/cjs/ui/PlaybackTime.js.map +1 -0
  532. package/cjs/ui/ProgressBar.js +40 -0
  533. package/cjs/ui/ProgressBar.js.map +1 -0
  534. package/cjs/ui/QuoteMessage.js +50 -44
  535. package/cjs/ui/QuoteMessage.js.map +1 -1
  536. package/cjs/ui/QuoteMessageInput.js +31 -29
  537. package/cjs/ui/QuoteMessageInput.js.map +1 -1
  538. package/cjs/ui/ReactionBadge.js +13 -21
  539. package/cjs/ui/ReactionBadge.js.map +1 -1
  540. package/cjs/ui/ReactionButton.js +30 -27
  541. package/cjs/ui/ReactionButton.js.map +1 -1
  542. package/cjs/ui/SortByRow.js +14 -18
  543. package/cjs/ui/SortByRow.js.map +1 -1
  544. package/cjs/ui/TextButton.js +13 -21
  545. package/cjs/ui/TextButton.js.map +1 -1
  546. package/cjs/ui/TextMessageItemBody.js +41 -48
  547. package/cjs/ui/TextMessageItemBody.js.map +1 -1
  548. package/cjs/ui/ThreadReplies.js +25 -22
  549. package/cjs/ui/ThreadReplies.js.map +1 -1
  550. package/cjs/ui/ThumbnailMessageItemBody.js +43 -45
  551. package/cjs/ui/ThumbnailMessageItemBody.js.map +1 -1
  552. package/cjs/ui/Toggle.js +202 -0
  553. package/cjs/ui/Toggle.js.map +1 -0
  554. package/cjs/ui/Tooltip.js +8 -9
  555. package/cjs/ui/Tooltip.js.map +1 -1
  556. package/cjs/ui/TooltipWrapper.js +17 -20
  557. package/cjs/ui/TooltipWrapper.js.map +1 -1
  558. package/cjs/ui/UnknownMessageItemBody.js +21 -22
  559. package/cjs/ui/UnknownMessageItemBody.js.map +1 -1
  560. package/cjs/ui/UserListItem.js +76 -76
  561. package/cjs/ui/UserListItem.js.map +1 -1
  562. package/cjs/ui/UserProfile.js +31 -29
  563. package/cjs/ui/UserProfile.js.map +1 -1
  564. package/cjs/ui/VoiceMessageItemBody.js +108 -0
  565. package/cjs/ui/VoiceMessageItemBody.js.map +1 -0
  566. package/cjs/ui/VoiceMessgeInput.js +22 -0
  567. package/cjs/ui/VoiceMessgeInput.js.map +1 -0
  568. package/cjs/ui/Word.js +31 -39
  569. package/cjs/ui/Word.js.map +1 -1
  570. package/cjs/useDirtyGetMentions-97c6e05a.js +77 -0
  571. package/cjs/useDirtyGetMentions-97c6e05a.js.map +1 -0
  572. package/cjs/useLongPress-bf1e8eee.js +87 -0
  573. package/cjs/useLongPress-bf1e8eee.js.map +1 -0
  574. package/cjs/useSendbirdStateContext.js +2 -3
  575. package/cjs/useSendbirdStateContext.js.map +1 -1
  576. package/cjs/utils/message/getOutgoingMessageState.js +16 -21
  577. package/cjs/utils/message/getOutgoingMessageState.js.map +1 -1
  578. package/cjs/utils/message/isVoiceMessage.js +12 -0
  579. package/cjs/utils/message/isVoiceMessage.js.map +1 -0
  580. package/cjs/{utils-1f6c6626.js → utils-146517a9.js} +1 -1
  581. package/cjs/{utils-1f6c6626.js.map → utils-146517a9.js.map} +1 -1
  582. package/cjs/utils-411a893e.js +31 -0
  583. package/cjs/utils-411a893e.js.map +1 -0
  584. package/cjs/{utils-3714e90e.js → utils-dbaff0d0.js} +3 -7
  585. package/cjs/{utils-3714e90e.js.map → utils-dbaff0d0.js.map} +1 -1
  586. package/cjs/utils-de654d3c.js +35 -0
  587. package/cjs/utils-de654d3c.js.map +1 -0
  588. package/cjs/uuid-5ab4f88b.js +15 -0
  589. package/cjs/{uuid-11d4efe8.js.map → uuid-5ab4f88b.js.map} +1 -1
  590. package/cjs/withSendbird.js +5 -6
  591. package/cjs/withSendbird.js.map +1 -1
  592. package/{color-ff5f9069.js → color-2ed716e6.js} +5 -14
  593. package/{color-ff5f9069.js.map → color-2ed716e6.js.map} +1 -1
  594. package/{compareIds-9430f9d8.js → compareIds-bc881fe7.js} +5 -6
  595. package/compareIds-bc881fe7.js.map +1 -0
  596. package/{const-83764204.js → const-8daee9fc.js} +4 -4
  597. package/const-8daee9fc.js.map +1 -0
  598. package/const-e51dda0c.js +13 -0
  599. package/const-e51dda0c.js.map +1 -0
  600. package/consts-3c0ff1ed.js +27 -0
  601. package/consts-3c0ff1ed.js.map +1 -0
  602. package/consts-7aab5aff.js +4 -0
  603. package/consts-7aab5aff.js.map +1 -0
  604. package/consts-d0b365df.js +4 -0
  605. package/consts-d0b365df.js.map +1 -0
  606. package/consts-d0cfee49.js +4 -0
  607. package/consts-d0cfee49.js.map +1 -0
  608. package/context-cde5c2bf.js +13 -0
  609. package/{context-9a69e846.js.map → context-cde5c2bf.js.map} +1 -1
  610. package/dist/index.css +970 -532
  611. package/dist/index.css.map +1 -1
  612. package/handlers/OpenChannelHandler.js.map +1 -1
  613. package/handlers/SessionHandler.js.map +1 -1
  614. package/{index-134314e2.js → index-0f22e96e.js} +29 -37
  615. package/index-0f22e96e.js.map +1 -0
  616. package/index-1e5cf284.js +154 -0
  617. package/index-1e5cf284.js.map +1 -0
  618. package/{index-defabece.js → index-1ec11afb.js} +57 -4
  619. package/index-1ec11afb.js.map +1 -0
  620. package/{index-d3f6dbb9.js → index-37531f98.js} +2 -2
  621. package/{index-d3f6dbb9.js.map → index-37531f98.js.map} +1 -1
  622. package/index-3f1fa3f9.js +76 -0
  623. package/index-3f1fa3f9.js.map +1 -0
  624. package/{index-44470dab.js → index-4023d1b2.js} +11 -25
  625. package/index-4023d1b2.js.map +1 -0
  626. package/index-5141f766.js +51 -0
  627. package/index-5141f766.js.map +1 -0
  628. package/{index-fc4702b7.js → index-5a1c1956.js} +55 -63
  629. package/index-5a1c1956.js.map +1 -0
  630. package/index-735cb5a3.js +360 -0
  631. package/index-735cb5a3.js.map +1 -0
  632. package/{index-e5b78039.js → index-7bff4ce0.js} +1 -1
  633. package/index-7bff4ce0.js.map +1 -0
  634. package/{index-07e060cd.js → index-865112db.js} +1 -1
  635. package/{index-07e060cd.js.map → index-865112db.js.map} +1 -1
  636. package/index-ac642e0b.js +435 -0
  637. package/index-ac642e0b.js.map +1 -0
  638. package/index-d847a382.js +283 -0
  639. package/index-d847a382.js.map +1 -0
  640. package/index-e2601165.js +544 -0
  641. package/index-e2601165.js.map +1 -0
  642. package/{index-3f26a31c.js → index-f1701c11.js} +2 -2
  643. package/{index-3f26a31c.js.map → index-f1701c11.js.map} +1 -1
  644. package/{index-1b91b116.js → index-fa140763.js} +39 -48
  645. package/index-fa140763.js.map +1 -0
  646. package/index-fa37119a.js +187 -0
  647. package/index-fa37119a.js.map +1 -0
  648. package/index.d.ts +171 -123
  649. package/index.js +77 -58
  650. package/index.js.map +1 -1
  651. package/index.module-9202ebbd.js +4 -0
  652. package/index.module-9202ebbd.js.map +1 -0
  653. package/lame.all.js +2537 -0
  654. package/lame.all.js.map +1 -0
  655. package/package.json +61 -41
  656. package/sendbirdSelectors.js +307 -417
  657. package/sendbirdSelectors.js.map +1 -1
  658. package/{stringSet-d555d877.js → stringSet-7a8ce1ce.js} +110 -90
  659. package/stringSet-7a8ce1ce.js.map +1 -0
  660. package/tokenize-003bf3f7.js +159 -0
  661. package/tokenize-003bf3f7.js.map +1 -0
  662. package/topics-5ff88d6f.js +16 -0
  663. package/topics-5ff88d6f.js.map +1 -0
  664. package/types-bffbc5f5.js +15 -0
  665. package/types-bffbc5f5.js.map +1 -0
  666. package/ui/Accordion.js +21 -24
  667. package/ui/Accordion.js.map +1 -1
  668. package/ui/AccordionGroup.js +10 -13
  669. package/ui/AccordionGroup.js.map +1 -1
  670. package/ui/AdminMessage.js +10 -13
  671. package/ui/AdminMessage.js.map +1 -1
  672. package/ui/Avatar.js +57 -79
  673. package/ui/Avatar.js.map +1 -1
  674. package/ui/Badge.js +16 -15
  675. package/ui/Badge.js.map +1 -1
  676. package/ui/BottomSheet.js +14 -12
  677. package/ui/BottomSheet.js.map +1 -1
  678. package/ui/Button.js +20 -35
  679. package/ui/Button.js.map +1 -1
  680. package/ui/ChannelAvatar.js +38 -41
  681. package/ui/ChannelAvatar.js.map +1 -1
  682. package/ui/Checkbox.js +11 -13
  683. package/ui/Checkbox.js.map +1 -1
  684. package/ui/ConnectionStatus.js +7 -5
  685. package/ui/ConnectionStatus.js.map +1 -1
  686. package/ui/ContextMenu.js +176 -200
  687. package/ui/ContextMenu.js.map +1 -1
  688. package/ui/DateSeparator.js +12 -14
  689. package/ui/DateSeparator.js.map +1 -1
  690. package/ui/EmojiReactions.js +300 -108
  691. package/ui/EmojiReactions.js.map +1 -1
  692. package/ui/FileMessageItemBody.js +22 -23
  693. package/ui/FileMessageItemBody.js.map +1 -1
  694. package/ui/FileViewer.js +36 -36
  695. package/ui/FileViewer.js.map +1 -1
  696. package/ui/Icon.js +448 -622
  697. package/ui/Icon.js.map +1 -1
  698. package/ui/IconButton.js +20 -31
  699. package/ui/IconButton.js.map +1 -1
  700. package/ui/ImageRenderer.js +34 -43
  701. package/ui/ImageRenderer.js.map +1 -1
  702. package/ui/Input.js +16 -16
  703. package/ui/Input.js.map +1 -1
  704. package/ui/Label.js +2 -2
  705. package/ui/LinkLabel.js +4 -3
  706. package/ui/LinkLabel.js.map +1 -1
  707. package/ui/Loader.js +10 -12
  708. package/ui/Loader.js.map +1 -1
  709. package/ui/MentionLabel.js +58 -65
  710. package/ui/MentionLabel.js.map +1 -1
  711. package/ui/MentionUserLabel.js +12 -10
  712. package/ui/MentionUserLabel.js.map +1 -1
  713. package/ui/MessageContent.js +211 -549
  714. package/ui/MessageContent.js.map +1 -1
  715. package/ui/MessageInput.js +338 -119
  716. package/ui/MessageInput.js.map +1 -1
  717. package/ui/MessageItemMenu.js +83 -83
  718. package/ui/MessageItemMenu.js.map +1 -1
  719. package/ui/MessageItemReactionMenu.js +58 -62
  720. package/ui/MessageItemReactionMenu.js.map +1 -1
  721. package/ui/MessageSearchFileItem.js +55 -50
  722. package/ui/MessageSearchFileItem.js.map +1 -1
  723. package/ui/MessageSearchItem.js +41 -40
  724. package/ui/MessageSearchItem.js.map +1 -1
  725. package/ui/MessageStatus.js +10 -11
  726. package/ui/MessageStatus.js.map +1 -1
  727. package/ui/Modal.js +52 -46
  728. package/ui/Modal.js.map +1 -1
  729. package/ui/MutedAvatarOverlay.js +10 -10
  730. package/ui/MutedAvatarOverlay.js.map +1 -1
  731. package/ui/OGMessageItemBody.js +68 -64
  732. package/ui/OGMessageItemBody.js.map +1 -1
  733. package/ui/OpenChannelAdminMessage.js +8 -7
  734. package/ui/OpenChannelAdminMessage.js.map +1 -1
  735. package/ui/OpenChannelAvatar.js +18 -17
  736. package/ui/OpenChannelAvatar.js.map +1 -1
  737. package/ui/OpenchannelConversationHeader.js +17 -13
  738. package/ui/OpenchannelConversationHeader.js.map +1 -1
  739. package/ui/OpenchannelFileMessage.js +138 -149
  740. package/ui/OpenchannelFileMessage.js.map +1 -1
  741. package/ui/OpenchannelOGMessage.js +204 -233
  742. package/ui/OpenchannelOGMessage.js.map +1 -1
  743. package/ui/OpenchannelThumbnailMessage.js +213 -220
  744. package/ui/OpenchannelThumbnailMessage.js.map +1 -1
  745. package/ui/OpenchannelUserMessage.js +164 -173
  746. package/ui/OpenchannelUserMessage.js.map +1 -1
  747. package/ui/PlaceHolder.js +5 -6
  748. package/ui/PlaceHolder.js.map +1 -1
  749. package/ui/PlaybackTime.js +26 -0
  750. package/ui/PlaybackTime.js.map +1 -0
  751. package/ui/ProgressBar.js +30 -0
  752. package/ui/ProgressBar.js.map +1 -0
  753. package/ui/QuoteMessage.js +50 -44
  754. package/ui/QuoteMessage.js.map +1 -1
  755. package/ui/QuoteMessageInput.js +31 -29
  756. package/ui/QuoteMessageInput.js.map +1 -1
  757. package/ui/ReactionBadge.js +13 -21
  758. package/ui/ReactionBadge.js.map +1 -1
  759. package/ui/ReactionButton.js +30 -27
  760. package/ui/ReactionButton.js.map +1 -1
  761. package/ui/SortByRow.js +14 -18
  762. package/ui/SortByRow.js.map +1 -1
  763. package/ui/TextButton.js +13 -21
  764. package/ui/TextButton.js.map +1 -1
  765. package/ui/TextMessageItemBody.js +41 -48
  766. package/ui/TextMessageItemBody.js.map +1 -1
  767. package/ui/ThreadReplies.js +25 -22
  768. package/ui/ThreadReplies.js.map +1 -1
  769. package/ui/ThumbnailMessageItemBody.js +43 -45
  770. package/ui/ThumbnailMessageItemBody.js.map +1 -1
  771. package/ui/Toggle.js +191 -0
  772. package/ui/Toggle.js.map +1 -0
  773. package/ui/Tooltip.js +8 -9
  774. package/ui/Tooltip.js.map +1 -1
  775. package/ui/TooltipWrapper.js +17 -20
  776. package/ui/TooltipWrapper.js.map +1 -1
  777. package/ui/UnknownMessageItemBody.js +21 -22
  778. package/ui/UnknownMessageItemBody.js.map +1 -1
  779. package/ui/UserListItem.js +76 -76
  780. package/ui/UserListItem.js.map +1 -1
  781. package/ui/UserProfile.js +31 -29
  782. package/ui/UserProfile.js.map +1 -1
  783. package/ui/VoiceMessageItemBody.js +99 -0
  784. package/ui/VoiceMessageItemBody.js.map +1 -0
  785. package/ui/VoiceMessgeInput.js +14 -0
  786. package/ui/VoiceMessgeInput.js.map +1 -0
  787. package/ui/Word.js +31 -39
  788. package/ui/Word.js.map +1 -1
  789. package/useDirtyGetMentions-aac697f4.js +75 -0
  790. package/useDirtyGetMentions-aac697f4.js.map +1 -0
  791. package/useLongPress-fbab35a9.js +85 -0
  792. package/useLongPress-fbab35a9.js.map +1 -0
  793. package/useSendbirdStateContext.js +2 -3
  794. package/useSendbirdStateContext.js.map +1 -1
  795. package/utils/message/getOutgoingMessageState.js +9 -15
  796. package/utils/message/getOutgoingMessageState.js.map +1 -1
  797. package/utils/message/isVoiceMessage.js +8 -0
  798. package/utils/message/isVoiceMessage.js.map +1 -0
  799. package/{utils-8b11ff42.js → utils-0d88f863.js} +3 -7
  800. package/{utils-8b11ff42.js.map → utils-0d88f863.js.map} +1 -1
  801. package/{utils-e720e03a.js → utils-388a790e.js} +1 -1
  802. package/{utils-e720e03a.js.map → utils-388a790e.js.map} +1 -1
  803. package/utils-6f2bb331.js +31 -0
  804. package/utils-6f2bb331.js.map +1 -0
  805. package/utils-af761f03.js +29 -0
  806. package/utils-af761f03.js.map +1 -0
  807. package/uuid-1f1bbd9c.js +13 -0
  808. package/{uuid-286ed926.js.map → uuid-1f1bbd9c.js.map} +1 -1
  809. package/withSendbird.js +5 -6
  810. package/withSendbird.js.map +1 -1
  811. package/ChannelListProvider-f461d265.js.map +0 -1
  812. package/ChannelProvider-554e7116.js.map +0 -1
  813. package/CreateChannelProvider-250cd98e.js +0 -55
  814. package/CreateChannelProvider-250cd98e.js.map +0 -1
  815. package/LocalizationContext-4df0cc32.js +0 -22
  816. package/MediaQueryContext-74183e34.js +0 -90
  817. package/MediaQueryContext-74183e34.js.map +0 -1
  818. package/MemberList-51c7afaa.js +0 -435
  819. package/MemberList-51c7afaa.js.map +0 -1
  820. package/NotificationChannel/components/NotificationChannelUI.js +0 -119
  821. package/NotificationChannel/components/NotificationChannelUI.js.map +0 -1
  822. package/NotificationChannel/components/NotificationList.js +0 -111
  823. package/NotificationChannel/components/NotificationList.js.map +0 -1
  824. package/NotificationChannel/components/NotificationMessageWrap.js +0 -136
  825. package/NotificationChannel/components/NotificationMessageWrap.js.map +0 -1
  826. package/NotificationChannel/context.js +0 -12
  827. package/NotificationChannel.js +0 -58
  828. package/NotificationChannel.js.map +0 -1
  829. package/NotificationChannelProvider-0d8be1ad.js +0 -535
  830. package/NotificationChannelProvider-0d8be1ad.js.map +0 -1
  831. package/OpenChannelListProvider-8c753945.js +0 -434
  832. package/OpenChannelListProvider-8c753945.js.map +0 -1
  833. package/OpenChannelProvider-2fa01820.js +0 -2000
  834. package/OpenChannelProvider-2fa01820.js.map +0 -1
  835. package/RemoveMessageModal-9762fed1.js +0 -31
  836. package/RemoveMessageModal-9762fed1.js.map +0 -1
  837. package/ThreadProvider-6974fb3e.js +0 -1644
  838. package/ThreadProvider-6974fb3e.js.map +0 -1
  839. package/_rollupPluginBabelHelpers-498add61.js.map +0 -1
  840. package/actionTypes-ad2cbd73.js +0 -6
  841. package/actionTypes-ad2cbd73.js.map +0 -1
  842. package/cjs/ChannelListProvider-c2148b43.js.map +0 -1
  843. package/cjs/ChannelProvider-cf5dc7e3.js.map +0 -1
  844. package/cjs/CreateChannelProvider-c98de398.js +0 -62
  845. package/cjs/CreateChannelProvider-c98de398.js.map +0 -1
  846. package/cjs/MediaQueryContext-71862be1.js +0 -97
  847. package/cjs/MediaQueryContext-71862be1.js.map +0 -1
  848. package/cjs/MemberList-13566703.js +0 -441
  849. package/cjs/MemberList-13566703.js.map +0 -1
  850. package/cjs/NotificationChannel/components/NotificationChannelUI.js +0 -125
  851. package/cjs/NotificationChannel/components/NotificationChannelUI.js.map +0 -1
  852. package/cjs/NotificationChannel/components/NotificationList.js +0 -117
  853. package/cjs/NotificationChannel/components/NotificationList.js.map +0 -1
  854. package/cjs/NotificationChannel/components/NotificationMessageWrap.js +0 -142
  855. package/cjs/NotificationChannel/components/NotificationMessageWrap.js.map +0 -1
  856. package/cjs/NotificationChannel/context.js +0 -21
  857. package/cjs/NotificationChannel.js +0 -64
  858. package/cjs/NotificationChannel.js.map +0 -1
  859. package/cjs/NotificationChannelProvider-8f3b7320.js +0 -543
  860. package/cjs/NotificationChannelProvider-8f3b7320.js.map +0 -1
  861. package/cjs/OpenChannelListProvider-64043b4f.js +0 -443
  862. package/cjs/OpenChannelListProvider-64043b4f.js.map +0 -1
  863. package/cjs/OpenChannelProvider-5b56e629.js +0 -2009
  864. package/cjs/OpenChannelProvider-5b56e629.js.map +0 -1
  865. package/cjs/RemoveMessageModal-c01eb93b.js.map +0 -1
  866. package/cjs/ThreadProvider-d3c0c877.js +0 -1653
  867. package/cjs/ThreadProvider-d3c0c877.js.map +0 -1
  868. package/cjs/_rollupPluginBabelHelpers-a7254c9d.js.map +0 -1
  869. package/cjs/actionTypes-0e8bea91.js +0 -10
  870. package/cjs/actionTypes-0e8bea91.js.map +0 -1
  871. package/cjs/color-89f33656.js.map +0 -1
  872. package/cjs/compareIds-ca869c2e.js.map +0 -1
  873. package/cjs/const-55d167ca.js +0 -20
  874. package/cjs/const-55d167ca.js.map +0 -1
  875. package/cjs/const-db71e993.js.map +0 -1
  876. package/cjs/index-0988ab25.js.map +0 -1
  877. package/cjs/index-21b2339d.js +0 -701
  878. package/cjs/index-21b2339d.js.map +0 -1
  879. package/cjs/index-5c81f847.js +0 -194
  880. package/cjs/index-5c81f847.js.map +0 -1
  881. package/cjs/index-621e74bd.js.map +0 -1
  882. package/cjs/index-8de59744.js +0 -59
  883. package/cjs/index-8de59744.js.map +0 -1
  884. package/cjs/index-a52859ed.js +0 -360
  885. package/cjs/index-a52859ed.js.map +0 -1
  886. package/cjs/index-be9c6237.js.map +0 -1
  887. package/cjs/index-c4d4ef49.js.map +0 -1
  888. package/cjs/index-d6ef2a60.js.map +0 -1
  889. package/cjs/index-e240e852.js.map +0 -1
  890. package/cjs/stringSet-91b919f6.js.map +0 -1
  891. package/cjs/topics-ac9cf7ed.js +0 -22
  892. package/cjs/topics-ac9cf7ed.js.map +0 -1
  893. package/cjs/tslib.es6-43854eb1.js +0 -110
  894. package/cjs/tslib.es6-43854eb1.js.map +0 -1
  895. package/cjs/useLongPress-c7bf12b1.js +0 -118
  896. package/cjs/useLongPress-c7bf12b1.js.map +0 -1
  897. package/cjs/utils-4b529d96.js +0 -38
  898. package/cjs/utils-4b529d96.js.map +0 -1
  899. package/cjs/utils-65a380e8.js +0 -32
  900. package/cjs/utils-65a380e8.js.map +0 -1
  901. package/cjs/uuid-11d4efe8.js +0 -19
  902. package/compareIds-9430f9d8.js.map +0 -1
  903. package/const-83764204.js.map +0 -1
  904. package/const-9d11f204.js +0 -14
  905. package/const-9d11f204.js.map +0 -1
  906. package/context-9a69e846.js +0 -12
  907. package/index-134314e2.js.map +0 -1
  908. package/index-1572c90f.js +0 -57
  909. package/index-1572c90f.js.map +0 -1
  910. package/index-1b91b116.js.map +0 -1
  911. package/index-44470dab.js.map +0 -1
  912. package/index-5f08f486.js +0 -662
  913. package/index-5f08f486.js.map +0 -1
  914. package/index-d8e3ccee.js +0 -179
  915. package/index-d8e3ccee.js.map +0 -1
  916. package/index-defabece.js.map +0 -1
  917. package/index-e5b78039.js.map +0 -1
  918. package/index-ed65ee3b.js +0 -353
  919. package/index-ed65ee3b.js.map +0 -1
  920. package/index-fc4702b7.js.map +0 -1
  921. package/stringSet-d555d877.js.map +0 -1
  922. package/topics-351ea731.js +0 -13
  923. package/topics-351ea731.js.map +0 -1
  924. package/tslib.es6-bcead7e6.js +0 -104
  925. package/tslib.es6-bcead7e6.js.map +0 -1
  926. package/useLongPress-794838b8.js +0 -116
  927. package/useLongPress-794838b8.js.map +0 -1
  928. package/utils-00ac1a7d.js +0 -34
  929. package/utils-00ac1a7d.js.map +0 -1
  930. package/utils-01e76a0c.js +0 -30
  931. package/utils-01e76a0c.js.map +0 -1
  932. package/uuid-286ed926.js +0 -17
@@ -1,39 +1,245 @@
1
- import { _ as _objectSpread2 } from '../_rollupPluginBabelHelpers-498add61.js';
2
- import React__default, { useContext, useRef, useState, useMemo, useEffect, useCallback } from 'react';
3
- import { renderToString } from 'react-dom/server';
1
+ import { _ as _objectSpread2 } from '../_rollupPluginBabelHelpers-0bc76382.js';
2
+ import React__default, { useCallback, useContext, useRef, useState, useMemo, useEffect } from 'react';
4
3
  import PropTypes from 'prop-types';
5
- import { N as NodeTypes, M as MessageInputKeys, a as NodeNames } from '../const-83764204.js';
6
- import { U as USER_MENTION_TEMP_CHAR } from '../const-9d11f204.js';
4
+ import { N as NodeTypes, M as MessageInputKeys, a as NodeNames } from '../const-8daee9fc.js';
5
+ import { U as USER_MENTION_TEMP_CHAR } from '../const-e51dda0c.js';
7
6
  import IconButton from './IconButton.js';
8
7
  import Button, { ButtonTypes, ButtonSizes } from './Button.js';
9
- import MentionUserLabel from './MentionUserLabel.js';
8
+ import DOMPurify from 'dompurify';
9
+ import { M as MENTION_USER_LABEL_CLASSNAME } from '../consts-d0b365df.js';
10
10
  import Icon, { IconTypes, IconColors } from './Icon.js';
11
- import { L as Label, a as LabelTypography, b as LabelColors } from '../index-44470dab.js';
12
- import { a as LocalizationContext } from '../LocalizationContext-4df0cc32.js';
13
- import { j as convertWordToStringObj, S as StringObjType, k as arrayEqual, h as getClassName } from '../index-5f08f486.js';
14
- import '../tslib.es6-bcead7e6.js';
15
- import '../stringSet-d555d877.js';
16
- import '../index-07e060cd.js';
11
+ import { L as Label, a as LabelTypography, b as LabelColors } from '../index-4023d1b2.js';
12
+ import { a as LocalizationContext } from '../LocalizationContext-57b46f6c.js';
13
+ import { j as arrayEqual, h as getClassName } from '../index-e2601165.js';
14
+ import { T as TEXT_MESSAGE_BODY_CLASSNAME } from '../consts-d0cfee49.js';
15
+ import { O as OG_MESSAGE_BODY_CLASSNAME } from '../consts-7aab5aff.js';
16
+ import { t as tokenizeMessage, T as TOKEN_TYPES, U as USER_MENTION_PREFIX } from '../tokenize-003bf3f7.js';
17
+ import '../stringSet-7a8ce1ce.js';
18
+ import '../index-865112db.js';
17
19
  import '../utils/message/getOutgoingMessageState.js';
18
20
 
21
+ // cretes a sanitized string from a mention user label
22
+ function renderToString(_ref) {
23
+ let {
24
+ userId,
25
+ nickname
26
+ } = _ref;
27
+ // donot change this template, it wont work
28
+ const el = `<span data-userid="${userId}" data-sb-mention="true" class="${MENTION_USER_LABEL_CLASSNAME}">${nickname}</span>`;
29
+ const purifier = DOMPurify(window);
30
+ const sanitized_ = purifier.sanitize(el);
31
+ const token = sanitized_.split(' ');
32
+ const [spanTag, ...rest] = token;
33
+ // we do this because DOMPurify removes the contenteditable attribute
34
+ const sanitized = [spanTag, 'contenteditable="false"', ...rest].join(' ');
35
+ return sanitized;
36
+ }
37
+
19
38
  // https://davidwalsh.name/javascript-debounce-function
20
39
 
40
+ // Sanitize that special characters of HTML tags cause XSS issue
21
41
  const sanitizeString = str => str === null || str === void 0 ? void 0 : str.replace(/[\u00A0-\u9999<>]/gim, i => ''.concat('&#', i.charCodeAt(0), ';'));
22
42
 
43
+ /**
44
+ * NodeList cannot be used with Array methods
45
+ * @param {childNodes} NodeList
46
+ * @returns Array of child nodes
47
+ */
48
+ const nodeListToArray = childNodes => {
49
+ try {
50
+ return Array.from(childNodes);
51
+ } catch (error) {
52
+ return [];
53
+ }
54
+ };
55
+
56
+ function inserTemplateToDOM(templateList) {
57
+ const nodes = templateList.map(template => {
58
+ const {
59
+ text,
60
+ userId
61
+ } = template;
62
+ if (userId) {
63
+ return renderToString({
64
+ userId,
65
+ nickname: text
66
+ });
67
+ }
68
+ return sanitizeString(text);
69
+ }).join(' ')
70
+ // add a space at the end of the mention, else cursor/caret wont work
71
+ .concat(' ');
72
+ document.execCommand('insertHTML', false, nodes);
73
+ }
74
+
75
+ const PASTE_NODE = 'sendbird-uikit__paste-node';
76
+ const TEXT_MESSAGE_CLASS = 'sendbird-word';
77
+ const MENTION_CLASS = 'sendbird-word__mention';
78
+ const MENTION_CLASS_IN_INPUT = 'sendbird-mention-user-label';
79
+ const MENTION_CLASS_COMBINED_QUERY = `.${MENTION_CLASS}, .${MENTION_CLASS_IN_INPUT}`;
80
+
81
+ function querySelectorIncludingSelf(master, selector) {
82
+ const result = [master, ...Array.from(master.querySelectorAll(selector))].find(el => el.matches(selector));
83
+ return result;
84
+ }
85
+
86
+ // Pasted dom node can be OG_MESSAGE or partial message or full message
87
+ // full messsage would have TEXT_MESSAGE_BODY_CLASSNAME and have childNodes
88
+ // partial message would not have TEXT_MESSAGE_BODY_CLASSNAME
89
+ function getLeafNodes(master) {
90
+ // og message
91
+ const ogMessage = querySelectorIncludingSelf(master, `.${OG_MESSAGE_BODY_CLASSNAME}`);
92
+ if (ogMessage) {
93
+ return nodeListToArray(ogMessage.childNodes);
94
+ }
95
+ const textMessageBody = querySelectorIncludingSelf(master, `.${TEXT_MESSAGE_BODY_CLASSNAME}`);
96
+ if (textMessageBody) {
97
+ return nodeListToArray(textMessageBody.childNodes);
98
+ }
99
+ return nodeListToArray(master.childNodes);
100
+ }
101
+ function createPasteNode() {
102
+ const pasteNode = document.body.querySelector(`#${PASTE_NODE}`);
103
+ // remove existing paste node
104
+ if (pasteNode) {
105
+ pasteNode === null || pasteNode === void 0 ? void 0 : pasteNode.remove();
106
+ }
107
+
108
+ // create new paste node and return
109
+ const node = document.createElement('div');
110
+ node.id = PASTE_NODE;
111
+ node.style.display = 'none';
112
+ return node;
113
+ }
114
+ function hasMention(parent) {
115
+ return parent !== null && parent !== void 0 && parent.querySelector(MENTION_CLASS_COMBINED_QUERY) ? true : false;
116
+ }
117
+ const extractTextFromNodes = nodes => {
118
+ let text = '';
119
+ nodes.forEach(node => {
120
+ // to preserve space between words
121
+ const textNodes = node.querySelectorAll(`.${TEXT_MESSAGE_CLASS}`);
122
+ if (textNodes.length > 0) {
123
+ text += extractTextFromNodes(Array.from(textNodes)) + ' ';
124
+ }
125
+ text += node.innerText + ' ';
126
+ });
127
+ return text;
128
+ };
129
+ function domToMessageTemplate(nodeArray) {
130
+ const templates = nodeArray === null || nodeArray === void 0 ? void 0 : nodeArray.reduce((accumulator, currentValue) => {
131
+ // currentValue can be node(from messageBody or messageInput) or text
132
+ let mentionNode;
133
+ // this looks awkward, but it is a fallback to set default text
134
+ let text = currentValue === null || currentValue === void 0 ? void 0 : currentValue.innerText;
135
+
136
+ // if text node, set text
137
+ if (currentValue instanceof Text) {
138
+ mentionNode = false;
139
+ text = currentValue.textContent;
140
+ }
141
+ if (currentValue instanceof HTMLElement) {
142
+ mentionNode = currentValue.classList.contains(MENTION_CLASS) || currentValue.classList.contains(MENTION_CLASS_IN_INPUT) ? currentValue : currentValue.querySelector(MENTION_CLASS_COMBINED_QUERY);
143
+ }
144
+
145
+ // if mentionNode is not null, it is a mention
146
+ if (mentionNode) {
147
+ var _mentionNode$dataset;
148
+ const text = currentValue === null || currentValue === void 0 ? void 0 : currentValue.innerText;
149
+ const userId = (_mentionNode$dataset = mentionNode.dataset) === null || _mentionNode$dataset === void 0 ? void 0 : _mentionNode$dataset.userid;
150
+ return [...accumulator, {
151
+ text,
152
+ userId
153
+ }];
154
+ }
155
+ return [...accumulator, {
156
+ text
157
+ }];
158
+ }, []);
159
+ return templates;
160
+ }
161
+ function getUsersFromWords(templates, channel) {
162
+ const userMap = {};
163
+ const users = channel.members;
164
+ templates.forEach(template => {
165
+ if (template.userId) {
166
+ const mentionedMember = users.find(user => user.userId === template.userId);
167
+ // Object.values would return array-> [undefined] if the user is not in the channel
168
+ if (mentionedMember) {
169
+ userMap[template.userId] = mentionedMember;
170
+ }
171
+ }
172
+ });
173
+ return Object.values(userMap);
174
+ }
175
+
176
+ // conditions to test:
177
+ // 1. paste simple text
178
+ // 2. paste text with mention
179
+ // 3. paste text with mention and text
180
+ // 4. paste text with mention and text and paste again before and after
181
+ // 5. copy message with mention(only one mention, no other text) and paste
182
+ // 6. copy message with mention from input and paste(before and after)
183
+ function usePaste(_ref) {
184
+ let {
185
+ ref,
186
+ setIsInput,
187
+ setHeight,
188
+ channel,
189
+ setMentionedUsers
190
+ } = _ref;
191
+ return useCallback(e => {
192
+ e.preventDefault();
193
+ const html = e === null || e === void 0 ? void 0 : e.clipboardData.getData('text/html');
194
+ // simple text, continue as normal
195
+ if (!html) {
196
+ const text = e === null || e === void 0 ? void 0 : e.clipboardData.getData('text');
197
+ document.execCommand('insertHTML', false, sanitizeString(text));
198
+ setIsInput(true);
199
+ setHeight();
200
+ return;
201
+ }
202
+
203
+ // has html, check if there are mentions, sanitize and insert
204
+ const purifier = DOMPurify(window);
205
+ const clean = purifier.sanitize(html);
206
+ const pasteNode = createPasteNode();
207
+ pasteNode.innerHTML = clean;
208
+ // does not have mention, continue as normal
209
+ if (!hasMention(pasteNode)) {
210
+ // to preserve space between words
211
+ const text = extractTextFromNodes(Array.from(pasteNode.children));
212
+ document.execCommand('insertHTML', false, sanitizeString(text));
213
+ pasteNode.remove();
214
+ setIsInput(true);
215
+ setHeight();
216
+ return;
217
+ }
218
+
219
+ // has mention, collect leaf nodes and parse words
220
+ const leafNodes = getLeafNodes(pasteNode);
221
+ const words = domToMessageTemplate(leafNodes);
222
+ const mentionedUsers = getUsersFromWords(words, channel);
223
+
224
+ // side effects
225
+ setMentionedUsers(mentionedUsers);
226
+ inserTemplateToDOM(words);
227
+ pasteNode.remove();
228
+ setIsInput(true);
229
+ setHeight();
230
+ }, [ref, setIsInput, setHeight, channel, setMentionedUsers]);
231
+ }
232
+
23
233
  const TEXT_FIELD_ID = 'sendbird-message-input-text-field';
24
234
  const LINE_HEIGHT = 76;
25
-
26
235
  const noop = () => {};
27
-
28
236
  const handleUploadFile = callback => event => {
29
237
  if (event.target.files && event.target.files[0]) {
30
238
  callback(event.target.files[0]);
31
- } // eslint-disable-next-line no-param-reassign
32
-
33
-
239
+ }
240
+ // eslint-disable-next-line no-param-reassign
34
241
  event.target.value = '';
35
242
  };
36
-
37
243
  const displayCaret = (element, position) => {
38
244
  const range = document.createRange();
39
245
  const sel = window.getSelection();
@@ -43,14 +249,14 @@ const displayCaret = (element, position) => {
43
249
  sel.addRange(range);
44
250
  element.focus();
45
251
  };
46
-
47
252
  const resetInput = ref => {
48
253
  try {
254
+ /* eslint-disable no-param-reassign */
49
255
  ref.current.innerHTML = '';
50
- } catch (_unused) {//
256
+ } catch (_unused) {
257
+ //
51
258
  }
52
259
  };
53
-
54
260
  const initialTargetStringInfo = {
55
261
  targetString: '',
56
262
  startNodeIndex: null,
@@ -59,13 +265,13 @@ const initialTargetStringInfo = {
59
265
  endOffsetIndex: null
60
266
  };
61
267
  const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
62
- var _ref$current, _ref$current$innerTex;
63
-
268
+ var _ref$current, _ref$current$textCont, _textField$innerText;
64
269
  const {
65
270
  className,
66
271
  messageFieldId,
67
272
  isEdit,
68
273
  isMentionEnabled,
274
+ isVoiceMessageEnabled,
69
275
  disabled,
70
276
  message,
71
277
  placeholder,
@@ -76,12 +282,18 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
76
282
  onCancelEdit,
77
283
  onStartTyping,
78
284
  channelUrl,
285
+ channel,
79
286
  mentionSelectedUser,
80
287
  onUserMentioned,
81
288
  onMentionStringChange,
82
289
  onMentionedUserIdsUpdated,
290
+ onVoiceMessageIconClick,
83
291
  onKeyUp,
84
- onKeyDown
292
+ onKeyDown,
293
+ renderFileUploadIcon,
294
+ renderVoiceMessageIcon,
295
+ renderSendMessageIcon,
296
+ setMentionedUsers
85
297
  } = props;
86
298
  const textFieldId = messageFieldId || TEXT_FIELD_ID;
87
299
  const {
@@ -95,7 +307,6 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
95
307
  try {
96
308
  const elem = ref === null || ref === void 0 ? void 0 : ref.current;
97
309
  const MAX_HEIGHT = window.document.body.offsetHeight * 0.6;
98
-
99
310
  if (elem && elem.scrollHeight >= LINE_HEIGHT) {
100
311
  if (MAX_HEIGHT < elem.scrollHeight) {
101
312
  elem.style.height = 'auto';
@@ -107,99 +318,95 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
107
318
  } else {
108
319
  elem.style.height = '';
109
320
  }
110
- } catch (error) {// error
321
+ } catch (error) {
322
+ // error
111
323
  }
112
- }, []); // #Edit mode
324
+ }, []);
325
+
326
+ // #Edit mode
113
327
  // for easilly initialize input value from outside, but
114
328
  // useEffect(_, [channelUrl]) erase it
115
-
116
329
  const initialValue = props === null || props === void 0 ? void 0 : props.value;
117
330
  useEffect(() => {
118
- var _textField$innerText;
119
-
331
+ var _textField$textConten;
120
332
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
121
-
122
333
  try {
123
334
  textField.innerHTML = initialValue;
124
335
  displayCaret(textField, initialValue === null || initialValue === void 0 ? void 0 : initialValue.length);
125
- } catch (_unused2) {}
126
-
336
+ } catch (_unused2) {
337
+ //
338
+ }
127
339
  setMentionedUserIds([]);
128
- setIsInput((textField === null || textField === void 0 ? void 0 : (_textField$innerText = textField.innerText) === null || _textField$innerText === void 0 ? void 0 : _textField$innerText.length) > 0);
340
+ setIsInput((textField === null || textField === void 0 ? void 0 : (_textField$textConten = textField.textContent) === null || _textField$textConten === void 0 ? void 0 : _textField$textConten.trim().length) > 0);
129
341
  setHeight();
130
- }, [initialValue]); // #Mention | Clear input value when channel changes
342
+ }, [initialValue]);
131
343
 
344
+ // #Mention | Clear input value when channel changes
132
345
  useEffect(() => {
133
346
  if (!isEdit) {
134
347
  setIsInput(false);
135
348
  resetInput(ref);
136
349
  }
137
- }, [channelUrl]); // #Mention & #Edit | Fill message input values
350
+ }, [channelUrl]);
138
351
 
352
+ // #Mention & #Edit | Fill message input values
139
353
  useEffect(() => {
140
354
  if (isEdit && message !== null && message !== void 0 && message.messageId) {
141
- var _message$mentionedUse, _message$mentionedMes, _textField$innerText2;
142
-
355
+ var _message$mentionedUse, _message$mentionedMes, _textField$textConten2;
143
356
  // const textField = document.getElementById(textFieldId);
144
357
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
145
-
146
358
  if (isMentionEnabled && (message === null || message === void 0 ? void 0 : (_message$mentionedUse = message.mentionedUsers) === null || _message$mentionedUse === void 0 ? void 0 : _message$mentionedUse.length) > 0 && (message === null || message === void 0 ? void 0 : (_message$mentionedMes = message.mentionedMessageTemplate) === null || _message$mentionedMes === void 0 ? void 0 : _message$mentionedMes.length) > 0) {
147
- var _message$mentionedMes2;
148
-
149
359
  /* mention enabled */
150
360
  const {
151
361
  mentionedUsers = []
152
362
  } = message;
153
- textField.innerHTML = message === null || message === void 0 ? void 0 : (_message$mentionedMes2 = message.mentionedMessageTemplate) === null || _message$mentionedMes2 === void 0 ? void 0 : _message$mentionedMes2.split(' ').map(word => convertWordToStringObj(word, mentionedUsers).map(stringObj => {
154
- const {
155
- type,
156
- value,
157
- userId
158
- } = stringObj;
159
-
160
- if (type === StringObjType.mention && mentionedUsers.some(user => (user === null || user === void 0 ? void 0 : user.userId) === userId)) {
161
- var _mentionedUsers$find;
162
-
163
- return renderToString( /*#__PURE__*/React__default.createElement(MentionUserLabel, {
164
- userId: userId
165
- }, `${USER_MENTION_TEMP_CHAR}${((_mentionedUsers$find = mentionedUsers.find(user => (user === null || user === void 0 ? void 0 : user.userId) === userId)) === null || _mentionedUsers$find === void 0 ? void 0 : _mentionedUsers$find.nickname) || value || stringSet.MENTION_NAME__NO_NAME}`));
363
+ const tokens = tokenizeMessage({
364
+ messageText: message === null || message === void 0 ? void 0 : message.mentionedMessageTemplate,
365
+ mentionedUsers
366
+ });
367
+ textField.innerHTML = tokens.map(token => {
368
+ if (token.type === TOKEN_TYPES.mention) {
369
+ const mentionedUser = mentionedUsers.find(user => user.userId === token.userId);
370
+ const nickname = `${USER_MENTION_PREFIX}${(mentionedUser === null || mentionedUser === void 0 ? void 0 : mentionedUser.nickname) || token.value || stringSet.MENTION_NAME__NO_NAME}`;
371
+ return renderToString({
372
+ userId: token.userId,
373
+ nickname
374
+ });
166
375
  }
167
-
168
- return sanitizeString(value);
169
- }).join('')).join(' ');
376
+ return sanitizeString(token.value);
377
+ }).join(' ');
170
378
  } else {
171
379
  /* mention disabled */
172
380
  try {
173
381
  textField.innerHTML = sanitizeString(message === null || message === void 0 ? void 0 : message.message);
174
- } catch (_unused3) {}
175
-
382
+ } catch (_unused3) {
383
+ //
384
+ }
176
385
  setMentionedUserIds([]);
177
386
  }
178
-
179
- setIsInput((textField === null || textField === void 0 ? void 0 : (_textField$innerText2 = textField.innerText) === null || _textField$innerText2 === void 0 ? void 0 : _textField$innerText2.length) > 0);
387
+ setIsInput((textField === null || textField === void 0 ? void 0 : (_textField$textConten2 = textField.textContent) === null || _textField$textConten2 === void 0 ? void 0 : _textField$textConten2.trim().length) > 0);
180
388
  setHeight();
181
389
  }
182
- }, [isEdit, message]); // #Mention | Detect MentionedLabel modified
390
+ }, [isEdit, message]);
183
391
 
392
+ // #Mention | Detect MentionedLabel modified
184
393
  const useMentionedLabelDetection = useCallback(() => {
394
+ var _textField$textConten3;
185
395
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
186
-
187
396
  if (isMentionEnabled) {
188
397
  const newMentionedUserIds = [...textField.getElementsByClassName('sendbird-mention-user-label')].map(node => {
189
398
  var _node$dataset;
190
-
191
399
  return node === null || node === void 0 ? void 0 : (_node$dataset = node.dataset) === null || _node$dataset === void 0 ? void 0 : _node$dataset.userid;
192
400
  });
193
-
194
401
  if (!arrayEqual(mentionedUserIds, newMentionedUserIds) || newMentionedUserIds.length === 0) {
195
402
  onMentionedUserIdsUpdated(newMentionedUserIds);
196
403
  setMentionedUserIds(newMentionedUserIds);
197
404
  }
198
405
  }
406
+ setIsInput(((_textField$textConten3 = textField.textContent) === null || _textField$textConten3 === void 0 ? void 0 : _textField$textConten3.trim().length) > 0);
407
+ }, [targetStringInfo, isMentionEnabled]);
199
408
 
200
- setIsInput(textField.innerText.length > 0);
201
- }, [targetStringInfo, isMentionEnabled]); // #Mention | Replace selected user nickname to the MentionedUserLabel
202
-
409
+ // #Mention | Replace selected user nickname to the MentionedUserLabel
203
410
  useEffect(() => {
204
411
  if (isMentionEnabled && mentionSelectedUser) {
205
412
  const {
@@ -209,18 +416,17 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
209
416
  endNodeIndex,
210
417
  endOffsetIndex
211
418
  } = targetStringInfo;
212
-
213
419
  if (targetString && startNodeIndex !== null && startOffsetIndex !== null) {
214
420
  var _document, _childNodes$startNode, _document2, _childNodes$endNodeIn;
215
-
216
421
  // const textField = document.getElementById(textFieldId);
217
422
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
218
- const childNodes = [...(textField === null || textField === void 0 ? void 0 : textField.childNodes)];
423
+ const childNodes = nodeListToArray(textField === null || textField === void 0 ? void 0 : textField.childNodes);
219
424
  const frontTextNode = (_document = document) === null || _document === void 0 ? void 0 : _document.createTextNode((_childNodes$startNode = childNodes[startNodeIndex]) === null || _childNodes$startNode === void 0 ? void 0 : _childNodes$startNode.textContent.slice(0, startOffsetIndex));
220
425
  const backTextNode = (_document2 = document) === null || _document2 === void 0 ? void 0 : _document2.createTextNode(`\u00A0${(_childNodes$endNodeIn = childNodes[endNodeIndex]) === null || _childNodes$endNodeIn === void 0 ? void 0 : _childNodes$endNodeIn.textContent.slice(endOffsetIndex)}`);
221
- const mentionLabel = renderToString( /*#__PURE__*/React__default.createElement(MentionUserLabel, {
222
- userId: mentionSelectedUser === null || mentionSelectedUser === void 0 ? void 0 : mentionSelectedUser.userId
223
- }, `${USER_MENTION_TEMP_CHAR}${(mentionSelectedUser === null || mentionSelectedUser === void 0 ? void 0 : mentionSelectedUser.nickname) || stringSet.MENTION_NAME__NO_NAME}`));
426
+ const mentionLabel = renderToString({
427
+ userId: mentionSelectedUser === null || mentionSelectedUser === void 0 ? void 0 : mentionSelectedUser.userId,
428
+ nickname: `${USER_MENTION_TEMP_CHAR}${(mentionSelectedUser === null || mentionSelectedUser === void 0 ? void 0 : mentionSelectedUser.nickname) || stringSet.MENTION_NAME__NO_NAME}`
429
+ });
224
430
  const div = document.createElement('div');
225
431
  div.innerHTML = mentionLabel;
226
432
  const newNodes = [...childNodes.slice(0, startNodeIndex), frontTextNode, div.childNodes[0], backTextNode, ...childNodes.slice(endNodeIndex + 1)];
@@ -229,7 +435,6 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
229
435
  textField.appendChild(newNode);
230
436
  });
231
437
  onUserMentioned(mentionSelectedUser);
232
-
233
438
  if (window.getSelection || document.getSelection) {
234
439
  // set caret postion
235
440
  const selection = window.getSelection() || document.getSelection();
@@ -242,41 +447,34 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
242
447
  selection.addRange(range);
243
448
  textField.focus();
244
449
  }
245
-
246
450
  setTargetStringInfo(_objectSpread2({}, initialTargetStringInfo));
247
451
  setHeight();
248
452
  useMentionedLabelDetection();
249
453
  }
250
454
  }
251
- }, [mentionSelectedUser, isMentionEnabled]); // #Mention | Detect mentioning user nickname
455
+ }, [mentionSelectedUser, isMentionEnabled]);
252
456
 
457
+ // #Mention | Detect mentioning user nickname
253
458
  const useMentionInputDetection = useCallback(() => {
254
459
  var _window, _window$getSelection, _document3, _document3$getSelecti;
255
-
256
460
  const selection = ((_window = window) === null || _window === void 0 ? void 0 : (_window$getSelection = _window.getSelection) === null || _window$getSelection === void 0 ? void 0 : _window$getSelection.call(_window)) || ((_document3 = document) === null || _document3 === void 0 ? void 0 : (_document3$getSelecti = _document3.getSelection) === null || _document3$getSelecti === void 0 ? void 0 : _document3$getSelecti.call(_document3));
257
461
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
258
-
259
462
  if (selection.anchorNode === textField) {
260
463
  onMentionStringChange('');
261
464
  }
262
-
263
465
  if (isMentionEnabled && selection && selection.anchorNode === selection.focusNode && selection.anchorOffset === selection.focusOffset) {
264
466
  let textStack = '';
265
467
  let startNodeIndex = null;
266
468
  let startOffsetIndex = null;
267
-
268
469
  for (let index = 0; index < textField.childNodes.length; index += 1) {
269
470
  const currentNode = textField.childNodes[index];
270
-
271
471
  if (currentNode.nodeType === NodeTypes.TextNode) {
272
472
  /* text node */
273
473
  const textContent = currentNode === selection.anchorNode ? (currentNode === null || currentNode === void 0 ? void 0 : currentNode.textContent.slice(0, selection.anchorOffset)) || '' : (currentNode === null || currentNode === void 0 ? void 0 : currentNode.textContent) || '';
274
-
275
474
  if (textStack.length > 0) {
276
475
  textStack += textContent;
277
476
  } else {
278
477
  let charLastIndex = textContent.lastIndexOf(USER_MENTION_TEMP_CHAR);
279
-
280
478
  for (let i = charLastIndex - 1; i > -1; i -= 1) {
281
479
  if (textContent[i] === USER_MENTION_TEMP_CHAR) {
282
480
  charLastIndex = i;
@@ -284,7 +482,6 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
284
482
  break;
285
483
  }
286
484
  }
287
-
288
485
  if (charLastIndex > -1) {
289
486
  textStack = textContent;
290
487
  startNodeIndex = index;
@@ -297,14 +494,12 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
297
494
  startNodeIndex = null;
298
495
  startOffsetIndex = null;
299
496
  }
300
-
301
497
  if (currentNode === selection.anchorNode) {
302
498
  /**
303
499
  * targetString could be ''
304
500
  * startNodeIndex and startOffsetIndex could be null
305
501
  */
306
502
  const targetString = textStack ? textStack.slice(startOffsetIndex) : ''; // include template character
307
-
308
503
  setTargetStringInfo({
309
504
  targetString,
310
505
  startNodeIndex,
@@ -318,11 +513,9 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
318
513
  }
319
514
  }
320
515
  }, [isMentionEnabled]);
321
-
322
516
  const sendMessage = () => {
323
517
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
324
-
325
- if (!isEdit && textField !== null && textField !== void 0 && textField.innerText) {
518
+ if (!isEdit && textField !== null && textField !== void 0 && textField.textContent) {
326
519
  let messageText = '';
327
520
  let mentionTemplate = '';
328
521
  textField.childNodes.forEach(node => {
@@ -339,6 +532,13 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
339
532
  } else if (node.nodeType === NodeTypes.ElementNode && node.nodeName === NodeNames.Br) {
340
533
  messageText += '\n';
341
534
  mentionTemplate += '\n';
535
+ } else if ((node === null || node === void 0 ? void 0 : node.nodeType) === NodeTypes.ElementNode && (node === null || node === void 0 ? void 0 : node.nodeName) === NodeNames.Div) {
536
+ // handles newline in safari
537
+ const {
538
+ textContent = ''
539
+ } = node;
540
+ messageText += `\n${textContent}`;
541
+ mentionTemplate += `\n${textContent}`;
342
542
  } else {
343
543
  // other nodes including text node
344
544
  const {
@@ -358,13 +558,10 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
358
558
  setHeight();
359
559
  }
360
560
  };
361
-
362
- const isEditDisabled = !(ref !== null && ref !== void 0 && (_ref$current = ref.current) !== null && _ref$current !== void 0 && (_ref$current$innerTex = _ref$current.innerText) !== null && _ref$current$innerTex !== void 0 && _ref$current$innerTex.trim());
363
-
561
+ const isEditDisabled = !(ref !== null && ref !== void 0 && (_ref$current = ref.current) !== null && _ref$current !== void 0 && (_ref$current$textCont = _ref$current.textContent) !== null && _ref$current$textCont !== void 0 && _ref$current$textCont.trim());
364
562
  const editMessage = () => {
365
563
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
366
564
  const messageId = message === null || message === void 0 ? void 0 : message.messageId;
367
-
368
565
  if (isEdit && messageId) {
369
566
  let messageText = '';
370
567
  let mentionTemplate = '';
@@ -379,7 +576,6 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
379
576
  } = dataset;
380
577
  messageText += innerText;
381
578
  mentionTemplate += `${USER_MENTION_TEMP_CHAR}{${userid}}`;
382
- } else if (node.nodeType === NodeTypes.ElementNode && node.nodeName === NodeNames.Span) {
383
579
  messageText += '\n';
384
580
  mentionTemplate += '\n';
385
581
  } else {
@@ -400,7 +596,15 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
400
596
  resetInput(ref);
401
597
  }
402
598
  };
403
-
599
+ const onPaste = usePaste({
600
+ ref,
601
+ setMentionedUserIds,
602
+ setMentionedUsers,
603
+ channel,
604
+ setIsInput,
605
+ setHeight
606
+ });
607
+ const textField = ref === null || ref === void 0 ? void 0 : ref.current;
404
608
  return /*#__PURE__*/React__default.createElement("form", {
405
609
  className: getClassName([className, isEdit ? 'sendbird-message-input__edit' : '', disabled ? 'sendbird-message-input-form__disabled' : ''])
406
610
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -416,17 +620,14 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
416
620
  maxLength: maxLength,
417
621
  onKeyDown: e => {
418
622
  const preventEvent = onKeyDown(e);
419
-
420
623
  if (preventEvent) {
421
624
  e.preventDefault();
422
625
  } else {
423
- var _e$nativeEvent, _ref$current2, _ref$current2$childNo, _ref$current3, _ref$current3$childNo, _ref$current3$childNo2, _ref$current$childNod, _ref$current$childNod2;
424
-
425
- if (!e.shiftKey && e.key === MessageInputKeys.Enter && (e === null || e === void 0 ? void 0 : (_e$nativeEvent = e.nativeEvent) === null || _e$nativeEvent === void 0 ? void 0 : _e$nativeEvent.isComposing) !== true) {
626
+ var _textField$textConten4, _e$nativeEvent, _ref$current2, _ref$current2$childNo, _ref$current3, _ref$current3$childNo, _ref$current3$childNo2, _ref$current$childNod, _ref$current$childNod2;
627
+ if (!e.shiftKey && e.key === MessageInputKeys.Enter && (textField === null || textField === void 0 ? void 0 : (_textField$textConten4 = textField.textContent) === null || _textField$textConten4 === void 0 ? void 0 : _textField$textConten4.trim().length) > 0 && (e === null || e === void 0 ? void 0 : (_e$nativeEvent = e.nativeEvent) === null || _e$nativeEvent === void 0 ? void 0 : _e$nativeEvent.isComposing) !== true) {
426
628
  e.preventDefault();
427
629
  sendMessage();
428
630
  }
429
-
430
631
  if (e.key === MessageInputKeys.Backspace && (ref === null || ref === void 0 ? void 0 : (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : (_ref$current2$childNo = _ref$current2.childNodes) === null || _ref$current2$childNo === void 0 ? void 0 : _ref$current2$childNo.length) === 2 && !(ref !== null && ref !== void 0 && (_ref$current3 = ref.current) !== null && _ref$current3 !== void 0 && (_ref$current3$childNo = _ref$current3.childNodes) !== null && _ref$current3$childNo !== void 0 && (_ref$current3$childNo2 = _ref$current3$childNo[0]) !== null && _ref$current3$childNo2 !== void 0 && _ref$current3$childNo2.textContent) && (ref === null || ref === void 0 ? void 0 : (_ref$current$childNod = ref.current.childNodes) === null || _ref$current$childNod === void 0 ? void 0 : (_ref$current$childNod2 = _ref$current$childNod[1]) === null || _ref$current$childNod2 === void 0 ? void 0 : _ref$current$childNod2.nodeType) === NodeTypes.ElementNode) {
431
632
  ref === null || ref === void 0 ? void 0 : ref.current.removeChild(ref === null || ref === void 0 ? void 0 : ref.current.childNodes[1]);
432
633
  }
@@ -434,7 +635,6 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
434
635
  },
435
636
  onKeyUp: e => {
436
637
  const preventEvent = onKeyUp(e);
437
-
438
638
  if (preventEvent) {
439
639
  e.preventDefault();
440
640
  } else {
@@ -445,44 +645,39 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
445
645
  useMentionInputDetection();
446
646
  },
447
647
  onInput: () => {
448
- var _ref$current4, _ref$current4$innerTe;
449
-
648
+ var _textField$textConten5;
450
649
  setHeight();
451
650
  onStartTyping();
452
- setIsInput((ref === null || ref === void 0 ? void 0 : (_ref$current4 = ref.current) === null || _ref$current4 === void 0 ? void 0 : (_ref$current4$innerTe = _ref$current4.innerText) === null || _ref$current4$innerTe === void 0 ? void 0 : _ref$current4$innerTe.length) > 0);
651
+ setIsInput((textField === null || textField === void 0 ? void 0 : (_textField$textConten5 = textField.textContent) === null || _textField$textConten5 === void 0 ? void 0 : _textField$textConten5.trim().length) > 0);
453
652
  useMentionedLabelDetection();
454
653
  },
455
- onPaste: e => {
456
- e.preventDefault();
457
- document.execCommand("insertHTML", false, sanitizeString(e === null || e === void 0 ? void 0 : e.clipboardData.getData('text')));
458
- }
459
- }), !isInput && /*#__PURE__*/React__default.createElement(Label, {
654
+ onPaste: onPaste
655
+ }), (textField === null || textField === void 0 ? void 0 : (_textField$innerText = textField.innerText) === null || _textField$innerText === void 0 ? void 0 : _textField$innerText.length) === 0 && /*#__PURE__*/React__default.createElement(Label, {
460
656
  className: "sendbird-message-input--placeholder",
461
657
  type: LabelTypography.BODY_1,
462
- color: LabelColors.ONBACKGROUND_3
658
+ color: disabled ? LabelColors.ONBACKGROUND_4 : LabelColors.ONBACKGROUND_3
463
659
  }, placeholder || stringSet.MESSAGE_INPUT__PLACE_HOLDER), !isEdit && isInput && /*#__PURE__*/React__default.createElement(IconButton, {
464
660
  className: "sendbird-message-input--send",
465
661
  height: "32px",
466
662
  width: "32px",
467
663
  onClick: () => sendMessage()
468
- }, /*#__PURE__*/React__default.createElement(Icon, {
664
+ }, (renderSendMessageIcon === null || renderSendMessageIcon === void 0 ? void 0 : renderSendMessageIcon()) || /*#__PURE__*/React__default.createElement(Icon, {
469
665
  type: IconTypes.SEND,
470
- fillColor: IconColors.PRIMARY,
666
+ fillColor: disabled ? IconColors.ON_BACKGROUND_4 : IconColors.PRIMARY,
471
667
  width: "20px",
472
668
  height: "20px"
473
- })), !isEdit && !isInput && /*#__PURE__*/React__default.createElement(IconButton, {
474
- className: "sendbird-message-input--attach",
669
+ })), !isEdit && !isInput && ((renderFileUploadIcon === null || renderFileUploadIcon === void 0 ? void 0 : renderFileUploadIcon()) || /*#__PURE__*/React__default.createElement(IconButton, {
670
+ className: `sendbird-message-input--attach ${isVoiceMessageEnabled ? 'is-voice-message-enabled' : ''}`,
475
671
  height: "32px",
476
672
  width: "32px",
477
673
  onClick: () => {
478
674
  var _fileInputRef$current, _fileInputRef$current2;
479
-
480
675
  // todo: clear previous input
481
676
  fileInputRef === null || fileInputRef === void 0 ? void 0 : (_fileInputRef$current = fileInputRef.current) === null || _fileInputRef$current === void 0 ? void 0 : (_fileInputRef$current2 = _fileInputRef$current.click) === null || _fileInputRef$current2 === void 0 ? void 0 : _fileInputRef$current2.call(_fileInputRef$current);
482
677
  }
483
678
  }, /*#__PURE__*/React__default.createElement(Icon, {
484
679
  type: IconTypes.ATTACH,
485
- fillColor: IconColors.CONTENT_INVERSE,
680
+ fillColor: disabled ? IconColors.ON_BACKGROUND_4 : IconColors.CONTENT_INVERSE,
486
681
  width: "20px",
487
682
  height: "20px"
488
683
  }), /*#__PURE__*/React__default.createElement("input", {
@@ -490,6 +685,16 @@ const MessageInput = /*#__PURE__*/React__default.forwardRef((props, ref) => {
490
685
  type: "file",
491
686
  ref: fileInputRef,
492
687
  onChange: handleUploadFile(onFileUpload)
688
+ }))), isVoiceMessageEnabled && !isEdit && !isInput && /*#__PURE__*/React__default.createElement(IconButton, {
689
+ className: "sendbird-message-input--voice-message",
690
+ width: "32px",
691
+ height: "32px",
692
+ onClick: onVoiceMessageIconClick
693
+ }, (renderVoiceMessageIcon === null || renderVoiceMessageIcon === void 0 ? void 0 : renderVoiceMessageIcon()) || /*#__PURE__*/React__default.createElement(Icon, {
694
+ type: IconTypes.AUDIO_ON_LINED,
695
+ fillColor: disabled ? IconColors.ON_BACKGROUND_4 : IconColors.CONTENT_INVERSE,
696
+ width: "20px",
697
+ height: "20px"
493
698
  }))), isEdit && /*#__PURE__*/React__default.createElement("div", {
494
699
  className: "sendbird-message-input--edit-action"
495
700
  }, /*#__PURE__*/React__default.createElement(Button, {
@@ -512,6 +717,8 @@ MessageInput.propTypes = {
512
717
  value: PropTypes.string,
513
718
  isEdit: PropTypes.bool,
514
719
  isMentionEnabled: PropTypes.bool,
720
+ isVoiceMessageEnabled: PropTypes.bool,
721
+ onVoiceMessageIconClick: PropTypes.func,
515
722
  message: PropTypes.shape({
516
723
  messageId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
517
724
  message: PropTypes.string,
@@ -530,11 +737,16 @@ MessageInput.propTypes = {
530
737
  userId: PropTypes.string,
531
738
  nickname: PropTypes.string
532
739
  }),
740
+ setMentionedUsers: PropTypes.func,
533
741
  onUserMentioned: PropTypes.func,
534
742
  onMentionStringChange: PropTypes.func,
535
743
  onMentionedUserIdsUpdated: PropTypes.func,
536
744
  onKeyUp: PropTypes.func,
537
- onKeyDown: PropTypes.func
745
+ onKeyDown: PropTypes.func,
746
+ renderVoiceMessageIcon: PropTypes.func,
747
+ renderSendMessageIcon: PropTypes.func,
748
+ renderFileUploadIcon: PropTypes.func,
749
+ channel: PropTypes.shape({})
538
750
  };
539
751
  MessageInput.defaultProps = {
540
752
  className: '',
@@ -546,6 +758,8 @@ MessageInput.defaultProps = {
546
758
  message: null,
547
759
  isEdit: false,
548
760
  isMentionEnabled: false,
761
+ isVoiceMessageEnabled: true,
762
+ onVoiceMessageIconClick: noop,
549
763
  disabled: false,
550
764
  placeholder: '',
551
765
  maxLength: 5000,
@@ -557,7 +771,12 @@ MessageInput.defaultProps = {
557
771
  onMentionStringChange: noop,
558
772
  onMentionedUserIdsUpdated: noop,
559
773
  onKeyUp: noop,
560
- onKeyDown: noop
774
+ onKeyDown: noop,
775
+ setMentionedUsers: noop,
776
+ renderVoiceMessageIcon: noop,
777
+ renderFileUploadIcon: noop,
778
+ renderSendMessageIcon: noop,
779
+ channel: {}
561
780
  };
562
781
 
563
782
  export { MessageInput as default };