@sendbird/uikit-react 3.5.0-beta.0 → 3.5.0-mobile-web-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 (932) hide show
  1. package/App.js +276 -218
  2. package/App.js.map +1 -1
  3. package/CHANGELOG.md +428 -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 +146 -128
  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 +34 -35
  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-42fb305a.js} +233 -285
  45. package/ChannelListProvider-42fb305a.js.map +1 -0
  46. package/{ChannelProvider-554e7116.js → ChannelProvider-42ea1a96.js} +610 -716
  47. package/ChannelProvider-42ea1a96.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 +516 -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-37af96d2.js +44 -0
  76. package/CreateChannelProvider-37af96d2.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-1839d2db.js +20 -0
  90. package/{LocalizationContext-4df0cc32.js.map → LocalizationContext-1839d2db.js.map} +1 -1
  91. package/MediaQueryContext-0e0b3a1b.js +87 -0
  92. package/MediaQueryContext-0e0b3a1b.js.map +1 -0
  93. package/MemberList-28589b39.js +395 -0
  94. package/MemberList-28589b39.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 +36 -31
  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-71a32f2d.js +429 -0
  128. package/OpenChannelListProvider-71a32f2d.js.map +1 -0
  129. package/OpenChannelProvider-377a0b6e.js +1885 -0
  130. package/OpenChannelProvider-377a0b6e.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 +508 -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-558db27f.js +36 -0
  147. package/RemoveMessageModal-558db27f.js.map +1 -0
  148. package/SendbirdProvider.js +830 -409
  149. package/SendbirdProvider.js.map +1 -1
  150. package/Thread/components/ParentMessageInfo.js +230 -216
  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 +292 -272
  159. package/Thread/components/ThreadListItem.js.map +1 -1
  160. package/Thread/components/ThreadMessageInput.js +144 -111
  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-0b73628e.js +1695 -0
  170. package/ThreadProvider-0b73628e.js.map +1 -0
  171. package/{UserProfileContext-c58a7b86.js → UserProfileContext-7e645551.js} +1 -4
  172. package/{UserProfileContext-c58a7b86.js.map → UserProfileContext-7e645551.js.map} +1 -1
  173. package/VoiceMessageInputWrapper-0b5a78a1.js +169 -0
  174. package/VoiceMessageInputWrapper-0b5a78a1.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-fbdb41cd.js +123 -0
  184. package/WebAudioUtils-fbdb41cd.js.map +1 -0
  185. package/{_rollupPluginBabelHelpers-498add61.js → _rollupPluginBabelHelpers-ce69e916.js} +17 -11
  186. package/_rollupPluginBabelHelpers-ce69e916.js.map +1 -0
  187. package/actionTypes-a5283c75.js +8 -0
  188. package/actionTypes-a5283c75.js.map +1 -0
  189. package/cjs/App.js +276 -218
  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 +145 -127
  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 +34 -35
  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-b3ffe21a.js} +232 -284
  232. package/cjs/ChannelListProvider-b3ffe21a.js.map +1 -0
  233. package/cjs/{ChannelProvider-cf5dc7e3.js → ChannelProvider-b6890429.js} +608 -714
  234. package/cjs/ChannelProvider-b6890429.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 +516 -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-e1376032.js +52 -0
  263. package/cjs/CreateChannelProvider-e1376032.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-461a0816.js} +9 -11
  277. package/cjs/{LocalizationContext-2b3f310d.js.map → LocalizationContext-461a0816.js.map} +1 -1
  278. package/cjs/MediaQueryContext-de7c63bc.js +94 -0
  279. package/cjs/MediaQueryContext-de7c63bc.js.map +1 -0
  280. package/cjs/MemberList-593809cb.js +401 -0
  281. package/cjs/MemberList-593809cb.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 +36 -31
  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-39c11f87.js +439 -0
  315. package/cjs/OpenChannelListProvider-39c11f87.js.map +1 -0
  316. package/cjs/OpenChannelProvider-e794e881.js +1894 -0
  317. package/cjs/OpenChannelProvider-e794e881.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 +508 -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-29fa1a05.js} +19 -14
  333. package/cjs/RemoveMessageModal-29fa1a05.js.map +1 -0
  334. package/cjs/SendbirdProvider.js +830 -410
  335. package/cjs/SendbirdProvider.js.map +1 -1
  336. package/cjs/Thread/components/ParentMessageInfo.js +229 -215
  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 +291 -271
  345. package/cjs/Thread/components/ThreadListItem.js.map +1 -1
  346. package/cjs/Thread/components/ThreadMessageInput.js +144 -111
  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-e2098298.js +1704 -0
  356. package/cjs/ThreadProvider-e2098298.js.map +1 -0
  357. package/cjs/{UserProfileContext-9d60cdc4.js → UserProfileContext-1bcc48a2.js} +1 -4
  358. package/cjs/{UserProfileContext-9d60cdc4.js.map → UserProfileContext-1bcc48a2.js.map} +1 -1
  359. package/cjs/VoiceMessageInputWrapper-f18d6a5e.js +175 -0
  360. package/cjs/VoiceMessageInputWrapper-f18d6a5e.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-aedad0b1.js +126 -0
  370. package/cjs/WebAudioUtils-aedad0b1.js.map +1 -0
  371. package/cjs/{_rollupPluginBabelHelpers-a7254c9d.js → _rollupPluginBabelHelpers-919a4db3.js} +17 -10
  372. package/cjs/_rollupPluginBabelHelpers-919a4db3.js.map +1 -0
  373. package/cjs/actionTypes-1e75e6e9.js +10 -0
  374. package/cjs/actionTypes-1e75e6e9.js.map +1 -0
  375. package/cjs/{color-89f33656.js → color-48ff06b2.js} +13 -21
  376. package/cjs/color-48ff06b2.js.map +1 -0
  377. package/cjs/{compareIds-ca869c2e.js → compareIds-8ed822c1.js} +5 -6
  378. package/cjs/compareIds-8ed822c1.js.map +1 -0
  379. package/cjs/{const-db71e993.js → const-49de651c.js} +4 -4
  380. package/cjs/const-49de651c.js.map +1 -0
  381. package/cjs/const-852d5677.js +20 -0
  382. package/cjs/const-852d5677.js.map +1 -0
  383. package/cjs/consts-2580246d.js +6 -0
  384. package/cjs/consts-2580246d.js.map +1 -0
  385. package/cjs/consts-5851f376.js +6 -0
  386. package/cjs/consts-5851f376.js.map +1 -0
  387. package/cjs/consts-6f02fcc4.js +41 -0
  388. package/cjs/consts-6f02fcc4.js.map +1 -0
  389. package/cjs/consts-e9ee4cf4.js +6 -0
  390. package/cjs/consts-e9ee4cf4.js.map +1 -0
  391. package/cjs/{context-2f5d47fd.js → context-4d89551f.js} +6 -5
  392. package/cjs/{context-2f5d47fd.js.map → context-4d89551f.js.map} +1 -1
  393. package/cjs/dist/index.css +901 -481
  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-0126dbb4.js +161 -0
  398. package/cjs/index-0126dbb4.js.map +1 -0
  399. package/cjs/index-1a223893.js +362 -0
  400. package/cjs/index-1a223893.js.map +1 -0
  401. package/cjs/index-223e9372.js +79 -0
  402. package/cjs/index-223e9372.js.map +1 -0
  403. package/cjs/{index-621e74bd.js → index-420b8e6d.js} +29 -37
  404. package/cjs/index-420b8e6d.js.map +1 -0
  405. package/cjs/{index-d6ef2a60.js → index-44186883.js} +11 -25
  406. package/cjs/index-44186883.js.map +1 -0
  407. package/cjs/{index-de151767.js → index-5e6194f8.js} +1 -1
  408. package/cjs/{index-de151767.js.map → index-5e6194f8.js.map} +1 -1
  409. package/cjs/{index-73467e1d.js → index-60bf4d5c.js} +2 -2
  410. package/cjs/{index-73467e1d.js.map → index-60bf4d5c.js.map} +1 -1
  411. package/cjs/{index-0988ab25.js → index-60ea6503.js} +57 -3
  412. package/cjs/index-60ea6503.js.map +1 -0
  413. package/cjs/index-6a46ed00.js +292 -0
  414. package/cjs/index-6a46ed00.js.map +1 -0
  415. package/cjs/{index-c4d4ef49.js → index-7a68d56f.js} +1 -1
  416. package/cjs/index-7a68d56f.js.map +1 -0
  417. package/cjs/index-81aad270.js +197 -0
  418. package/cjs/index-81aad270.js.map +1 -0
  419. package/cjs/{index-2c5dd48c.js → index-849c0736.js} +2 -2
  420. package/cjs/{index-2c5dd48c.js.map → index-849c0736.js.map} +1 -1
  421. package/cjs/{index-be9c6237.js → index-a51f1b7d.js} +55 -63
  422. package/cjs/index-a51f1b7d.js.map +1 -0
  423. package/cjs/{index-e240e852.js → index-a7025294.js} +42 -51
  424. package/cjs/index-a7025294.js.map +1 -0
  425. package/cjs/index-bca3d144.js +587 -0
  426. package/cjs/index-bca3d144.js.map +1 -0
  427. package/cjs/index-f4682499.js +57 -0
  428. package/cjs/index-f4682499.js.map +1 -0
  429. package/cjs/index-f5399132.js +419 -0
  430. package/cjs/index-f5399132.js.map +1 -0
  431. package/cjs/index.js +77 -58
  432. package/cjs/index.js.map +1 -1
  433. package/cjs/index.module-10ef9afc.js +6 -0
  434. package/cjs/index.module-10ef9afc.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-d1cee26a.js} +110 -90
  440. package/cjs/stringSet-d1cee26a.js.map +1 -0
  441. package/cjs/tokenize-d3bb1637.js +164 -0
  442. package/cjs/tokenize-d3bb1637.js.map +1 -0
  443. package/cjs/topics-00c67dd6.js +18 -0
  444. package/cjs/topics-00c67dd6.js.map +1 -0
  445. package/cjs/types-2e9e46b2.js +17 -0
  446. package/cjs/types-2e9e46b2.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 +172 -198
  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 +297 -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 +203 -545
  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 +70 -77
  499. package/cjs/ui/MessageItemMenu.js.map +1 -1
  500. package/cjs/ui/MessageItemReactionMenu.js +56 -61
  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 +136 -149
  521. package/cjs/ui/OpenchannelFileMessage.js.map +1 -1
  522. package/cjs/ui/OpenchannelOGMessage.js +200 -233
  523. package/cjs/ui/OpenchannelOGMessage.js.map +1 -1
  524. package/cjs/ui/OpenchannelThumbnailMessage.js +211 -220
  525. package/cjs/ui/OpenchannelThumbnailMessage.js.map +1 -1
  526. package/cjs/ui/OpenchannelUserMessage.js +160 -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 +27 -26
  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-7b6c8a19.js +77 -0
  571. package/cjs/useDirtyGetMentions-7b6c8a19.js.map +1 -0
  572. package/cjs/useLongPress-4c2e9a3b.js +87 -0
  573. package/cjs/useLongPress-4c2e9a3b.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-3714e90e.js → utils-22d05a53.js} +3 -7
  581. package/cjs/{utils-3714e90e.js.map → utils-22d05a53.js.map} +1 -1
  582. package/cjs/{utils-1f6c6626.js → utils-3dacb9bc.js} +1 -1
  583. package/cjs/{utils-1f6c6626.js.map → utils-3dacb9bc.js.map} +1 -1
  584. package/cjs/utils-c5d4c36e.js +35 -0
  585. package/cjs/utils-c5d4c36e.js.map +1 -0
  586. package/cjs/utils-f1c09ec3.js +31 -0
  587. package/cjs/utils-f1c09ec3.js.map +1 -0
  588. package/cjs/uuid-d86ea01f.js +15 -0
  589. package/cjs/{uuid-11d4efe8.js.map → uuid-d86ea01f.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-4ca8a2ea.js} +5 -14
  593. package/{color-ff5f9069.js.map → color-4ca8a2ea.js.map} +1 -1
  594. package/{compareIds-9430f9d8.js → compareIds-08858dd3.js} +5 -6
  595. package/compareIds-08858dd3.js.map +1 -0
  596. package/{const-83764204.js → const-714046e0.js} +4 -4
  597. package/const-714046e0.js.map +1 -0
  598. package/const-a77c08c9.js +13 -0
  599. package/const-a77c08c9.js.map +1 -0
  600. package/consts-9393e7c8.js +27 -0
  601. package/consts-9393e7c8.js.map +1 -0
  602. package/consts-aecb8fab.js +4 -0
  603. package/consts-aecb8fab.js.map +1 -0
  604. package/consts-d46e0fc1.js +4 -0
  605. package/consts-d46e0fc1.js.map +1 -0
  606. package/consts-decd9c7d.js +4 -0
  607. package/consts-decd9c7d.js.map +1 -0
  608. package/context-9a6b8b8a.js +13 -0
  609. package/{context-9a69e846.js.map → context-9a6b8b8a.js.map} +1 -1
  610. package/dist/index.css +901 -481
  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-3f26a31c.js → index-06f34585.js} +2 -2
  615. package/{index-3f26a31c.js.map → index-06f34585.js.map} +1 -1
  616. package/{index-134314e2.js → index-20880943.js} +29 -37
  617. package/index-20880943.js.map +1 -0
  618. package/index-3130ac38.js +51 -0
  619. package/index-3130ac38.js.map +1 -0
  620. package/{index-e5b78039.js → index-3165e396.js} +1 -1
  621. package/index-3165e396.js.map +1 -0
  622. package/index-400417a1.js +154 -0
  623. package/index-400417a1.js.map +1 -0
  624. package/index-5644a6c0.js +283 -0
  625. package/index-5644a6c0.js.map +1 -0
  626. package/{index-defabece.js → index-5db37327.js} +57 -4
  627. package/index-5db37327.js.map +1 -0
  628. package/{index-fc4702b7.js → index-7c9ebc67.js} +55 -63
  629. package/index-7c9ebc67.js.map +1 -0
  630. package/{index-d3f6dbb9.js → index-9781d2b9.js} +2 -2
  631. package/{index-d3f6dbb9.js.map → index-9781d2b9.js.map} +1 -1
  632. package/index-b96440b7.js +76 -0
  633. package/index-b96440b7.js.map +1 -0
  634. package/index-bf72ef7c.js +355 -0
  635. package/index-bf72ef7c.js.map +1 -0
  636. package/{index-1b91b116.js → index-c6df8184.js} +39 -48
  637. package/index-c6df8184.js.map +1 -0
  638. package/{index-07e060cd.js → index-d9c12cf4.js} +1 -1
  639. package/{index-07e060cd.js.map → index-d9c12cf4.js.map} +1 -1
  640. package/{index-44470dab.js → index-e1cd2fcf.js} +11 -25
  641. package/index-e1cd2fcf.js.map +1 -0
  642. package/index-edfb3327.js +413 -0
  643. package/index-edfb3327.js.map +1 -0
  644. package/index-fd51c7d1.js +541 -0
  645. package/index-fd51c7d1.js.map +1 -0
  646. package/index-fd95258e.js +182 -0
  647. package/index-fd95258e.js.map +1 -0
  648. package/index.d.ts +169 -122
  649. package/index.js +77 -58
  650. package/index.js.map +1 -1
  651. package/index.module-8c144786.js +4 -0
  652. package/index.module-8c144786.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-d368e289.js} +110 -90
  659. package/stringSet-d368e289.js.map +1 -0
  660. package/tokenize-7056afb7.js +159 -0
  661. package/tokenize-7056afb7.js.map +1 -0
  662. package/topics-f9628f1f.js +16 -0
  663. package/topics-f9628f1f.js.map +1 -0
  664. package/types-2b508dbc.js +15 -0
  665. package/types-2b508dbc.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 +173 -199
  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 +298 -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 +206 -548
  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 +70 -77
  718. package/ui/MessageItemMenu.js.map +1 -1
  719. package/ui/MessageItemReactionMenu.js +56 -61
  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 +136 -149
  740. package/ui/OpenchannelFileMessage.js.map +1 -1
  741. package/ui/OpenchannelOGMessage.js +200 -233
  742. package/ui/OpenchannelOGMessage.js.map +1 -1
  743. package/ui/OpenchannelThumbnailMessage.js +211 -220
  744. package/ui/OpenchannelThumbnailMessage.js.map +1 -1
  745. package/ui/OpenchannelUserMessage.js +160 -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 +27 -26
  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-e0c0f521.js +75 -0
  790. package/useDirtyGetMentions-e0c0f521.js.map +1 -0
  791. package/useLongPress-685c7391.js +85 -0
  792. package/useLongPress-685c7391.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-e720e03a.js → utils-256f157f.js} +1 -1
  800. package/{utils-e720e03a.js.map → utils-256f157f.js.map} +1 -1
  801. package/utils-4979f950.js +31 -0
  802. package/utils-4979f950.js.map +1 -0
  803. package/{utils-8b11ff42.js → utils-f82ad058.js} +3 -7
  804. package/{utils-8b11ff42.js.map → utils-f82ad058.js.map} +1 -1
  805. package/utils-fbc09760.js +29 -0
  806. package/utils-fbc09760.js.map +1 -0
  807. package/uuid-720c99c0.js +13 -0
  808. package/{uuid-286ed926.js.map → uuid-720c99c0.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,46 +1,253 @@
1
1
  'use strict';
2
2
 
3
- var _rollupPluginBabelHelpers = require('../_rollupPluginBabelHelpers-a7254c9d.js');
3
+ var _rollupPluginBabelHelpers = require('../_rollupPluginBabelHelpers-919a4db3.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-db71e993.js');
8
- var _const = require('../const-55d167ca.js');
6
+ var _const$1 = require('../const-49de651c.js');
7
+ var _const = require('../const-852d5677.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-e9ee4cf4.js');
12
12
  var ui_Icon = require('./Icon.js');
13
- var ui_Label = require('../index-d6ef2a60.js');
14
- var LocalizationContext = require('../LocalizationContext-2b3f310d.js');
15
- var index = require('../index-21b2339d.js');
16
- require('../tslib.es6-43854eb1.js');
17
- require('../stringSet-91b919f6.js');
18
- require('../index-de151767.js');
13
+ var ui_Label = require('../index-44186883.js');
14
+ var LocalizationContext = require('../LocalizationContext-461a0816.js');
15
+ var index = require('../index-bca3d144.js');
16
+ var consts$2 = require('../consts-2580246d.js');
17
+ var consts$1 = require('../consts-5851f376.js');
18
+ var tokenize = require('../tokenize-d3bb1637.js');
19
+ require('../stringSet-d1cee26a.js');
20
+ require('../index-5e6194f8.js');
19
21
  require('../utils/message/getOutgoingMessageState.js');
20
22
 
21
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
24
 
23
25
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
26
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
27
+ var DOMPurify__default = /*#__PURE__*/_interopDefaultLegacy(DOMPurify);
28
+
29
+ // cretes a sanitized string from a mention user label
30
+ function renderToString(_ref) {
31
+ let {
32
+ userId,
33
+ nickname
34
+ } = _ref;
35
+ // donot change this template, it wont work
36
+ const el = `<span data-userid="${userId}" data-sb-mention="true" class="${consts.MENTION_USER_LABEL_CLASSNAME}">${nickname}</span>`;
37
+ const purifier = DOMPurify__default["default"](window);
38
+ const sanitized_ = purifier.sanitize(el);
39
+ const token = sanitized_.split(' ');
40
+ const [spanTag, ...rest] = token;
41
+ // we do this because DOMPurify removes the contenteditable attribute
42
+ const sanitized = [spanTag, 'contenteditable="false"', ...rest].join(' ');
43
+ return sanitized;
44
+ }
25
45
 
26
46
  // https://davidwalsh.name/javascript-debounce-function
27
47
 
48
+ // Sanitize that special characters of HTML tags cause XSS issue
28
49
  const sanitizeString = str => str === null || str === void 0 ? void 0 : str.replace(/[\u00A0-\u9999<>]/gim, i => ''.concat('&#', i.charCodeAt(0), ';'));
29
50
 
51
+ /**
52
+ * NodeList cannot be used with Array methods
53
+ * @param {childNodes} NodeList
54
+ * @returns Array of child nodes
55
+ */
56
+ const nodeListToArray = childNodes => {
57
+ try {
58
+ return Array.from(childNodes);
59
+ } catch (error) {
60
+ return [];
61
+ }
62
+ };
63
+
64
+ function inserTemplateToDOM(templateList) {
65
+ const nodes = templateList.map(template => {
66
+ const {
67
+ text,
68
+ userId
69
+ } = template;
70
+ if (userId) {
71
+ return renderToString({
72
+ userId,
73
+ nickname: text
74
+ });
75
+ }
76
+ return sanitizeString(text);
77
+ }).join(' ')
78
+ // add a space at the end of the mention, else cursor/caret wont work
79
+ .concat(' ');
80
+ document.execCommand('insertHTML', false, nodes);
81
+ }
82
+
83
+ const PASTE_NODE = 'sendbird-uikit__paste-node';
84
+ const TEXT_MESSAGE_CLASS = 'sendbird-word';
85
+ const MENTION_CLASS = 'sendbird-word__mention';
86
+ const MENTION_CLASS_IN_INPUT = 'sendbird-mention-user-label';
87
+ const MENTION_CLASS_COMBINED_QUERY = `.${MENTION_CLASS}, .${MENTION_CLASS_IN_INPUT}`;
88
+
89
+ function querySelectorIncludingSelf(master, selector) {
90
+ const result = [master, ...Array.from(master.querySelectorAll(selector))].find(el => el.matches(selector));
91
+ return result;
92
+ }
93
+
94
+ // Pasted dom node can be OG_MESSAGE or partial message or full message
95
+ // full messsage would have TEXT_MESSAGE_BODY_CLASSNAME and have childNodes
96
+ // partial message would not have TEXT_MESSAGE_BODY_CLASSNAME
97
+ function getLeafNodes(master) {
98
+ // og message
99
+ const ogMessage = querySelectorIncludingSelf(master, `.${consts$1.OG_MESSAGE_BODY_CLASSNAME}`);
100
+ if (ogMessage) {
101
+ return nodeListToArray(ogMessage.childNodes);
102
+ }
103
+ const textMessageBody = querySelectorIncludingSelf(master, `.${consts$2.TEXT_MESSAGE_BODY_CLASSNAME}`);
104
+ if (textMessageBody) {
105
+ return nodeListToArray(textMessageBody.childNodes);
106
+ }
107
+ return nodeListToArray(master.childNodes);
108
+ }
109
+ function createPasteNode() {
110
+ const pasteNode = document.body.querySelector(`#${PASTE_NODE}`);
111
+ // remove existing paste node
112
+ if (pasteNode) {
113
+ pasteNode === null || pasteNode === void 0 ? void 0 : pasteNode.remove();
114
+ }
115
+
116
+ // create new paste node and return
117
+ const node = document.createElement('div');
118
+ node.id = PASTE_NODE;
119
+ node.style.display = 'none';
120
+ return node;
121
+ }
122
+ function hasMention(parent) {
123
+ return parent !== null && parent !== void 0 && parent.querySelector(MENTION_CLASS_COMBINED_QUERY) ? true : false;
124
+ }
125
+ const extractTextFromNodes = nodes => {
126
+ let text = '';
127
+ nodes.forEach(node => {
128
+ // to preserve space between words
129
+ const textNodes = node.querySelectorAll(`.${TEXT_MESSAGE_CLASS}`);
130
+ if (textNodes.length > 0) {
131
+ text += extractTextFromNodes(Array.from(textNodes)) + ' ';
132
+ }
133
+ text += node.innerText + ' ';
134
+ });
135
+ return text;
136
+ };
137
+ function domToMessageTemplate(nodeArray) {
138
+ const templates = nodeArray === null || nodeArray === void 0 ? void 0 : nodeArray.reduce((accumulator, currentValue) => {
139
+ // currentValue can be node(from messageBody or messageInput) or text
140
+ let mentionNode;
141
+ // this looks awkward, but it is a fallback to set default text
142
+ let text = currentValue === null || currentValue === void 0 ? void 0 : currentValue.innerText;
143
+
144
+ // if text node, set text
145
+ if (currentValue instanceof Text) {
146
+ mentionNode = false;
147
+ text = currentValue.textContent;
148
+ }
149
+ if (currentValue instanceof HTMLElement) {
150
+ mentionNode = currentValue.classList.contains(MENTION_CLASS) || currentValue.classList.contains(MENTION_CLASS_IN_INPUT) ? currentValue : currentValue.querySelector(MENTION_CLASS_COMBINED_QUERY);
151
+ }
152
+
153
+ // if mentionNode is not null, it is a mention
154
+ if (mentionNode) {
155
+ var _mentionNode$dataset;
156
+ const text = currentValue === null || currentValue === void 0 ? void 0 : currentValue.innerText;
157
+ const userId = (_mentionNode$dataset = mentionNode.dataset) === null || _mentionNode$dataset === void 0 ? void 0 : _mentionNode$dataset.userid;
158
+ return [...accumulator, {
159
+ text,
160
+ userId
161
+ }];
162
+ }
163
+ return [...accumulator, {
164
+ text
165
+ }];
166
+ }, []);
167
+ return templates;
168
+ }
169
+ function getUsersFromWords(templates, channel) {
170
+ const userMap = {};
171
+ const users = channel.members;
172
+ templates.forEach(template => {
173
+ if (template.userId) {
174
+ const mentionedMember = users.find(user => user.userId === template.userId);
175
+ // Object.values would return array-> [undefined] if the user is not in the channel
176
+ if (mentionedMember) {
177
+ userMap[template.userId] = mentionedMember;
178
+ }
179
+ }
180
+ });
181
+ return Object.values(userMap);
182
+ }
183
+
184
+ // conditions to test:
185
+ // 1. paste simple text
186
+ // 2. paste text with mention
187
+ // 3. paste text with mention and text
188
+ // 4. paste text with mention and text and paste again before and after
189
+ // 5. copy message with mention(only one mention, no other text) and paste
190
+ // 6. copy message with mention from input and paste(before and after)
191
+ function usePaste(_ref) {
192
+ let {
193
+ ref,
194
+ setIsInput,
195
+ setHeight,
196
+ channel,
197
+ setMentionedUsers
198
+ } = _ref;
199
+ return React.useCallback(e => {
200
+ e.preventDefault();
201
+ const html = e === null || e === void 0 ? void 0 : e.clipboardData.getData('text/html');
202
+ // simple text, continue as normal
203
+ if (!html) {
204
+ const text = e === null || e === void 0 ? void 0 : e.clipboardData.getData('text');
205
+ document.execCommand('insertHTML', false, sanitizeString(text));
206
+ setIsInput(true);
207
+ setHeight();
208
+ return;
209
+ }
210
+
211
+ // has html, check if there are mentions, sanitize and insert
212
+ const purifier = DOMPurify__default["default"](window);
213
+ const clean = purifier.sanitize(html);
214
+ const pasteNode = createPasteNode();
215
+ pasteNode.innerHTML = clean;
216
+ // does not have mention, continue as normal
217
+ if (!hasMention(pasteNode)) {
218
+ // to preserve space between words
219
+ const text = extractTextFromNodes(Array.from(pasteNode.children));
220
+ document.execCommand('insertHTML', false, sanitizeString(text));
221
+ pasteNode.remove();
222
+ setIsInput(true);
223
+ setHeight();
224
+ return;
225
+ }
226
+
227
+ // has mention, collect leaf nodes and parse words
228
+ const leafNodes = getLeafNodes(pasteNode);
229
+ const words = domToMessageTemplate(leafNodes);
230
+ const mentionedUsers = getUsersFromWords(words, channel);
231
+
232
+ // side effects
233
+ setMentionedUsers(mentionedUsers);
234
+ inserTemplateToDOM(words);
235
+ pasteNode.remove();
236
+ setIsInput(true);
237
+ setHeight();
238
+ }, [ref, setIsInput, setHeight, channel, setMentionedUsers]);
239
+ }
240
+
30
241
  const TEXT_FIELD_ID = 'sendbird-message-input-text-field';
31
242
  const LINE_HEIGHT = 76;
32
-
33
243
  const noop = () => {};
34
-
35
244
  const handleUploadFile = callback => event => {
36
245
  if (event.target.files && event.target.files[0]) {
37
246
  callback(event.target.files[0]);
38
- } // eslint-disable-next-line no-param-reassign
39
-
40
-
247
+ }
248
+ // eslint-disable-next-line no-param-reassign
41
249
  event.target.value = '';
42
250
  };
43
-
44
251
  const displayCaret = (element, position) => {
45
252
  const range = document.createRange();
46
253
  const sel = window.getSelection();
@@ -50,14 +257,14 @@ const displayCaret = (element, position) => {
50
257
  sel.addRange(range);
51
258
  element.focus();
52
259
  };
53
-
54
260
  const resetInput = ref => {
55
261
  try {
262
+ /* eslint-disable no-param-reassign */
56
263
  ref.current.innerHTML = '';
57
- } catch (_unused) {//
264
+ } catch (_unused) {
265
+ //
58
266
  }
59
267
  };
60
-
61
268
  const initialTargetStringInfo = {
62
269
  targetString: '',
63
270
  startNodeIndex: null,
@@ -66,13 +273,13 @@ const initialTargetStringInfo = {
66
273
  endOffsetIndex: null
67
274
  };
68
275
  const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, ref) => {
69
- var _ref$current, _ref$current$innerTex;
70
-
276
+ var _ref$current, _ref$current$textCont, _textField$innerText;
71
277
  const {
72
278
  className,
73
279
  messageFieldId,
74
280
  isEdit,
75
281
  isMentionEnabled,
282
+ isVoiceMessageEnabled,
76
283
  disabled,
77
284
  message,
78
285
  placeholder,
@@ -83,12 +290,18 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
83
290
  onCancelEdit,
84
291
  onStartTyping,
85
292
  channelUrl,
293
+ channel,
86
294
  mentionSelectedUser,
87
295
  onUserMentioned,
88
296
  onMentionStringChange,
89
297
  onMentionedUserIdsUpdated,
298
+ onVoiceMessageIconClick,
90
299
  onKeyUp,
91
- onKeyDown
300
+ onKeyDown,
301
+ renderFileUploadIcon,
302
+ renderVoiceMessageIcon,
303
+ renderSendMessageIcon,
304
+ setMentionedUsers
92
305
  } = props;
93
306
  const textFieldId = messageFieldId || TEXT_FIELD_ID;
94
307
  const {
@@ -102,7 +315,6 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
102
315
  try {
103
316
  const elem = ref === null || ref === void 0 ? void 0 : ref.current;
104
317
  const MAX_HEIGHT = window.document.body.offsetHeight * 0.6;
105
-
106
318
  if (elem && elem.scrollHeight >= LINE_HEIGHT) {
107
319
  if (MAX_HEIGHT < elem.scrollHeight) {
108
320
  elem.style.height = 'auto';
@@ -114,99 +326,95 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
114
326
  } else {
115
327
  elem.style.height = '';
116
328
  }
117
- } catch (error) {// error
329
+ } catch (error) {
330
+ // error
118
331
  }
119
- }, []); // #Edit mode
332
+ }, []);
333
+
334
+ // #Edit mode
120
335
  // for easilly initialize input value from outside, but
121
336
  // useEffect(_, [channelUrl]) erase it
122
-
123
337
  const initialValue = props === null || props === void 0 ? void 0 : props.value;
124
338
  React.useEffect(() => {
125
- var _textField$innerText;
126
-
339
+ var _textField$textConten;
127
340
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
128
-
129
341
  try {
130
342
  textField.innerHTML = initialValue;
131
343
  displayCaret(textField, initialValue === null || initialValue === void 0 ? void 0 : initialValue.length);
132
- } catch (_unused2) {}
133
-
344
+ } catch (_unused2) {
345
+ //
346
+ }
134
347
  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);
348
+ 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
349
  setHeight();
137
- }, [initialValue]); // #Mention | Clear input value when channel changes
350
+ }, [initialValue]);
138
351
 
352
+ // #Mention | Clear input value when channel changes
139
353
  React.useEffect(() => {
140
354
  if (!isEdit) {
141
355
  setIsInput(false);
142
356
  resetInput(ref);
143
357
  }
144
- }, [channelUrl]); // #Mention & #Edit | Fill message input values
358
+ }, [channelUrl]);
145
359
 
360
+ // #Mention & #Edit | Fill message input values
146
361
  React.useEffect(() => {
147
362
  if (isEdit && message !== null && message !== void 0 && message.messageId) {
148
- var _message$mentionedUse, _message$mentionedMes, _textField$innerText2;
149
-
363
+ var _message$mentionedUse, _message$mentionedMes, _textField$textConten2;
150
364
  // const textField = document.getElementById(textFieldId);
151
365
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
152
-
153
366
  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
367
  /* mention enabled */
157
368
  const {
158
369
  mentionedUsers = []
159
370
  } = 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}`));
371
+ const tokens = tokenize.tokenizeMessage({
372
+ messageText: message === null || message === void 0 ? void 0 : message.mentionedMessageTemplate,
373
+ mentionedUsers
374
+ });
375
+ textField.innerHTML = tokens.map(token => {
376
+ if (token.type === tokenize.TOKEN_TYPES.mention) {
377
+ const mentionedUser = mentionedUsers.find(user => user.userId === token.userId);
378
+ const nickname = `${tokenize.USER_MENTION_PREFIX}${(mentionedUser === null || mentionedUser === void 0 ? void 0 : mentionedUser.nickname) || token.value || stringSet.MENTION_NAME__NO_NAME}`;
379
+ return renderToString({
380
+ userId: token.userId,
381
+ nickname
382
+ });
173
383
  }
174
-
175
- return sanitizeString(value);
176
- }).join('')).join(' ');
384
+ return sanitizeString(token.value);
385
+ }).join(' ');
177
386
  } else {
178
387
  /* mention disabled */
179
388
  try {
180
389
  textField.innerHTML = sanitizeString(message === null || message === void 0 ? void 0 : message.message);
181
- } catch (_unused3) {}
182
-
390
+ } catch (_unused3) {
391
+ //
392
+ }
183
393
  setMentionedUserIds([]);
184
394
  }
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);
395
+ 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
396
  setHeight();
188
397
  }
189
- }, [isEdit, message]); // #Mention | Detect MentionedLabel modified
398
+ }, [isEdit, message]);
190
399
 
400
+ // #Mention | Detect MentionedLabel modified
191
401
  const useMentionedLabelDetection = React.useCallback(() => {
402
+ var _textField$textConten3;
192
403
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
193
-
194
404
  if (isMentionEnabled) {
195
405
  const newMentionedUserIds = [...textField.getElementsByClassName('sendbird-mention-user-label')].map(node => {
196
406
  var _node$dataset;
197
-
198
407
  return node === null || node === void 0 ? void 0 : (_node$dataset = node.dataset) === null || _node$dataset === void 0 ? void 0 : _node$dataset.userid;
199
408
  });
200
-
201
409
  if (!index.arrayEqual(mentionedUserIds, newMentionedUserIds) || newMentionedUserIds.length === 0) {
202
410
  onMentionedUserIdsUpdated(newMentionedUserIds);
203
411
  setMentionedUserIds(newMentionedUserIds);
204
412
  }
205
413
  }
414
+ setIsInput(((_textField$textConten3 = textField.textContent) === null || _textField$textConten3 === void 0 ? void 0 : _textField$textConten3.trim().length) > 0);
415
+ }, [targetStringInfo, isMentionEnabled]);
206
416
 
207
- setIsInput(textField.innerText.length > 0);
208
- }, [targetStringInfo, isMentionEnabled]); // #Mention | Replace selected user nickname to the MentionedUserLabel
209
-
417
+ // #Mention | Replace selected user nickname to the MentionedUserLabel
210
418
  React.useEffect(() => {
211
419
  if (isMentionEnabled && mentionSelectedUser) {
212
420
  const {
@@ -216,18 +424,17 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
216
424
  endNodeIndex,
217
425
  endOffsetIndex
218
426
  } = targetStringInfo;
219
-
220
427
  if (targetString && startNodeIndex !== null && startOffsetIndex !== null) {
221
428
  var _document, _childNodes$startNode, _document2, _childNodes$endNodeIn;
222
-
223
429
  // const textField = document.getElementById(textFieldId);
224
430
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
225
- const childNodes = [...(textField === null || textField === void 0 ? void 0 : textField.childNodes)];
431
+ const childNodes = nodeListToArray(textField === null || textField === void 0 ? void 0 : textField.childNodes);
226
432
  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
433
  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}`));
434
+ const mentionLabel = renderToString({
435
+ userId: mentionSelectedUser === null || mentionSelectedUser === void 0 ? void 0 : mentionSelectedUser.userId,
436
+ nickname: `${_const.USER_MENTION_TEMP_CHAR}${(mentionSelectedUser === null || mentionSelectedUser === void 0 ? void 0 : mentionSelectedUser.nickname) || stringSet.MENTION_NAME__NO_NAME}`
437
+ });
231
438
  const div = document.createElement('div');
232
439
  div.innerHTML = mentionLabel;
233
440
  const newNodes = [...childNodes.slice(0, startNodeIndex), frontTextNode, div.childNodes[0], backTextNode, ...childNodes.slice(endNodeIndex + 1)];
@@ -236,7 +443,6 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
236
443
  textField.appendChild(newNode);
237
444
  });
238
445
  onUserMentioned(mentionSelectedUser);
239
-
240
446
  if (window.getSelection || document.getSelection) {
241
447
  // set caret postion
242
448
  const selection = window.getSelection() || document.getSelection();
@@ -249,41 +455,34 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
249
455
  selection.addRange(range);
250
456
  textField.focus();
251
457
  }
252
-
253
458
  setTargetStringInfo(_rollupPluginBabelHelpers._objectSpread2({}, initialTargetStringInfo));
254
459
  setHeight();
255
460
  useMentionedLabelDetection();
256
461
  }
257
462
  }
258
- }, [mentionSelectedUser, isMentionEnabled]); // #Mention | Detect mentioning user nickname
463
+ }, [mentionSelectedUser, isMentionEnabled]);
259
464
 
465
+ // #Mention | Detect mentioning user nickname
260
466
  const useMentionInputDetection = React.useCallback(() => {
261
467
  var _window, _window$getSelection, _document3, _document3$getSelecti;
262
-
263
468
  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
469
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
265
-
266
470
  if (selection.anchorNode === textField) {
267
471
  onMentionStringChange('');
268
472
  }
269
-
270
473
  if (isMentionEnabled && selection && selection.anchorNode === selection.focusNode && selection.anchorOffset === selection.focusOffset) {
271
474
  let textStack = '';
272
475
  let startNodeIndex = null;
273
476
  let startOffsetIndex = null;
274
-
275
477
  for (let index = 0; index < textField.childNodes.length; index += 1) {
276
478
  const currentNode = textField.childNodes[index];
277
-
278
479
  if (currentNode.nodeType === _const$1.NodeTypes.TextNode) {
279
480
  /* text node */
280
481
  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
482
  if (textStack.length > 0) {
283
483
  textStack += textContent;
284
484
  } else {
285
485
  let charLastIndex = textContent.lastIndexOf(_const.USER_MENTION_TEMP_CHAR);
286
-
287
486
  for (let i = charLastIndex - 1; i > -1; i -= 1) {
288
487
  if (textContent[i] === _const.USER_MENTION_TEMP_CHAR) {
289
488
  charLastIndex = i;
@@ -291,7 +490,6 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
291
490
  break;
292
491
  }
293
492
  }
294
-
295
493
  if (charLastIndex > -1) {
296
494
  textStack = textContent;
297
495
  startNodeIndex = index;
@@ -304,14 +502,12 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
304
502
  startNodeIndex = null;
305
503
  startOffsetIndex = null;
306
504
  }
307
-
308
505
  if (currentNode === selection.anchorNode) {
309
506
  /**
310
507
  * targetString could be ''
311
508
  * startNodeIndex and startOffsetIndex could be null
312
509
  */
313
510
  const targetString = textStack ? textStack.slice(startOffsetIndex) : ''; // include template character
314
-
315
511
  setTargetStringInfo({
316
512
  targetString,
317
513
  startNodeIndex,
@@ -325,11 +521,9 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
325
521
  }
326
522
  }
327
523
  }, [isMentionEnabled]);
328
-
329
524
  const sendMessage = () => {
330
525
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
331
-
332
- if (!isEdit && textField !== null && textField !== void 0 && textField.innerText) {
526
+ if (!isEdit && textField !== null && textField !== void 0 && textField.textContent) {
333
527
  let messageText = '';
334
528
  let mentionTemplate = '';
335
529
  textField.childNodes.forEach(node => {
@@ -346,6 +540,13 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
346
540
  } else if (node.nodeType === _const$1.NodeTypes.ElementNode && node.nodeName === _const$1.NodeNames.Br) {
347
541
  messageText += '\n';
348
542
  mentionTemplate += '\n';
543
+ } 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) {
544
+ // handles newline in safari
545
+ const {
546
+ textContent = ''
547
+ } = node;
548
+ messageText += `\n${textContent}`;
549
+ mentionTemplate += `\n${textContent}`;
349
550
  } else {
350
551
  // other nodes including text node
351
552
  const {
@@ -365,13 +566,10 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
365
566
  setHeight();
366
567
  }
367
568
  };
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
-
569
+ 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
570
  const editMessage = () => {
372
571
  const textField = ref === null || ref === void 0 ? void 0 : ref.current;
373
572
  const messageId = message === null || message === void 0 ? void 0 : message.messageId;
374
-
375
573
  if (isEdit && messageId) {
376
574
  let messageText = '';
377
575
  let mentionTemplate = '';
@@ -386,7 +584,6 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
386
584
  } = dataset;
387
585
  messageText += innerText;
388
586
  mentionTemplate += `${_const.USER_MENTION_TEMP_CHAR}{${userid}}`;
389
- } else if (node.nodeType === _const$1.NodeTypes.ElementNode && node.nodeName === _const$1.NodeNames.Span) {
390
587
  messageText += '\n';
391
588
  mentionTemplate += '\n';
392
589
  } else {
@@ -407,7 +604,15 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
407
604
  resetInput(ref);
408
605
  }
409
606
  };
410
-
607
+ const onPaste = usePaste({
608
+ ref,
609
+ setMentionedUserIds,
610
+ setMentionedUsers,
611
+ channel,
612
+ setIsInput,
613
+ setHeight
614
+ });
615
+ const textField = ref === null || ref === void 0 ? void 0 : ref.current;
411
616
  return /*#__PURE__*/React__default["default"].createElement("form", {
412
617
  className: index.getClassName([className, isEdit ? 'sendbird-message-input__edit' : '', disabled ? 'sendbird-message-input-form__disabled' : ''])
413
618
  }, /*#__PURE__*/React__default["default"].createElement("div", {
@@ -423,17 +628,14 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
423
628
  maxLength: maxLength,
424
629
  onKeyDown: e => {
425
630
  const preventEvent = onKeyDown(e);
426
-
427
631
  if (preventEvent) {
428
632
  e.preventDefault();
429
633
  } 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) {
634
+ var _textField$textConten4, _e$nativeEvent, _ref$current2, _ref$current2$childNo, _ref$current3, _ref$current3$childNo, _ref$current3$childNo2, _ref$current$childNod, _ref$current$childNod2;
635
+ 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
636
  e.preventDefault();
434
637
  sendMessage();
435
638
  }
436
-
437
639
  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
640
  ref === null || ref === void 0 ? void 0 : ref.current.removeChild(ref === null || ref === void 0 ? void 0 : ref.current.childNodes[1]);
439
641
  }
@@ -441,7 +643,6 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
441
643
  },
442
644
  onKeyUp: e => {
443
645
  const preventEvent = onKeyUp(e);
444
-
445
646
  if (preventEvent) {
446
647
  e.preventDefault();
447
648
  } else {
@@ -452,44 +653,39 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
452
653
  useMentionInputDetection();
453
654
  },
454
655
  onInput: () => {
455
- var _ref$current4, _ref$current4$innerTe;
456
-
656
+ var _textField$textConten5;
457
657
  setHeight();
458
658
  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);
659
+ 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
660
  useMentionedLabelDetection();
461
661
  },
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, {
662
+ onPaste: onPaste
663
+ }), (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
664
  className: "sendbird-message-input--placeholder",
468
665
  type: ui_Label.LabelTypography.BODY_1,
469
- color: ui_Label.LabelColors.ONBACKGROUND_3
666
+ color: disabled ? ui_Label.LabelColors.ONBACKGROUND_4 : ui_Label.LabelColors.ONBACKGROUND_3
470
667
  }, placeholder || stringSet.MESSAGE_INPUT__PLACE_HOLDER), !isEdit && isInput && /*#__PURE__*/React__default["default"].createElement(ui_IconButton, {
471
668
  className: "sendbird-message-input--send",
472
669
  height: "32px",
473
670
  width: "32px",
474
671
  onClick: () => sendMessage()
475
- }, /*#__PURE__*/React__default["default"].createElement(ui_Icon["default"], {
672
+ }, (renderSendMessageIcon === null || renderSendMessageIcon === void 0 ? void 0 : renderSendMessageIcon()) || /*#__PURE__*/React__default["default"].createElement(ui_Icon["default"], {
476
673
  type: ui_Icon.IconTypes.SEND,
477
- fillColor: ui_Icon.IconColors.PRIMARY,
674
+ fillColor: disabled ? ui_Icon.IconColors.ON_BACKGROUND_4 : ui_Icon.IconColors.PRIMARY,
478
675
  width: "20px",
479
676
  height: "20px"
480
- })), !isEdit && !isInput && /*#__PURE__*/React__default["default"].createElement(ui_IconButton, {
481
- className: "sendbird-message-input--attach",
677
+ })), !isEdit && !isInput && ((renderFileUploadIcon === null || renderFileUploadIcon === void 0 ? void 0 : renderFileUploadIcon()) || /*#__PURE__*/React__default["default"].createElement(ui_IconButton, {
678
+ className: `sendbird-message-input--attach ${isVoiceMessageEnabled ? 'is-voice-message-enabled' : ''}`,
482
679
  height: "32px",
483
680
  width: "32px",
484
681
  onClick: () => {
485
682
  var _fileInputRef$current, _fileInputRef$current2;
486
-
487
683
  // todo: clear previous input
488
684
  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
685
  }
490
686
  }, /*#__PURE__*/React__default["default"].createElement(ui_Icon["default"], {
491
687
  type: ui_Icon.IconTypes.ATTACH,
492
- fillColor: ui_Icon.IconColors.CONTENT_INVERSE,
688
+ fillColor: disabled ? ui_Icon.IconColors.ON_BACKGROUND_4 : ui_Icon.IconColors.CONTENT_INVERSE,
493
689
  width: "20px",
494
690
  height: "20px"
495
691
  }), /*#__PURE__*/React__default["default"].createElement("input", {
@@ -497,6 +693,16 @@ const MessageInput = /*#__PURE__*/React__default["default"].forwardRef((props, r
497
693
  type: "file",
498
694
  ref: fileInputRef,
499
695
  onChange: handleUploadFile(onFileUpload)
696
+ }))), isVoiceMessageEnabled && !isEdit && !isInput && /*#__PURE__*/React__default["default"].createElement(ui_IconButton, {
697
+ className: "sendbird-message-input--voice-message",
698
+ width: "32px",
699
+ height: "32px",
700
+ onClick: onVoiceMessageIconClick
701
+ }, (renderVoiceMessageIcon === null || renderVoiceMessageIcon === void 0 ? void 0 : renderVoiceMessageIcon()) || /*#__PURE__*/React__default["default"].createElement(ui_Icon["default"], {
702
+ type: ui_Icon.IconTypes.AUDIO_ON_LINED,
703
+ fillColor: disabled ? ui_Icon.IconColors.ON_BACKGROUND_4 : ui_Icon.IconColors.CONTENT_INVERSE,
704
+ width: "20px",
705
+ height: "20px"
500
706
  }))), isEdit && /*#__PURE__*/React__default["default"].createElement("div", {
501
707
  className: "sendbird-message-input--edit-action"
502
708
  }, /*#__PURE__*/React__default["default"].createElement(ui_Button["default"], {
@@ -519,6 +725,8 @@ MessageInput.propTypes = {
519
725
  value: PropTypes__default["default"].string,
520
726
  isEdit: PropTypes__default["default"].bool,
521
727
  isMentionEnabled: PropTypes__default["default"].bool,
728
+ isVoiceMessageEnabled: PropTypes__default["default"].bool,
729
+ onVoiceMessageIconClick: PropTypes__default["default"].func,
522
730
  message: PropTypes__default["default"].shape({
523
731
  messageId: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number]),
524
732
  message: PropTypes__default["default"].string,
@@ -537,11 +745,16 @@ MessageInput.propTypes = {
537
745
  userId: PropTypes__default["default"].string,
538
746
  nickname: PropTypes__default["default"].string
539
747
  }),
748
+ setMentionedUsers: PropTypes__default["default"].func,
540
749
  onUserMentioned: PropTypes__default["default"].func,
541
750
  onMentionStringChange: PropTypes__default["default"].func,
542
751
  onMentionedUserIdsUpdated: PropTypes__default["default"].func,
543
752
  onKeyUp: PropTypes__default["default"].func,
544
- onKeyDown: PropTypes__default["default"].func
753
+ onKeyDown: PropTypes__default["default"].func,
754
+ renderVoiceMessageIcon: PropTypes__default["default"].func,
755
+ renderSendMessageIcon: PropTypes__default["default"].func,
756
+ renderFileUploadIcon: PropTypes__default["default"].func,
757
+ channel: PropTypes__default["default"].shape({})
545
758
  };
546
759
  MessageInput.defaultProps = {
547
760
  className: '',
@@ -553,6 +766,8 @@ MessageInput.defaultProps = {
553
766
  message: null,
554
767
  isEdit: false,
555
768
  isMentionEnabled: false,
769
+ isVoiceMessageEnabled: true,
770
+ onVoiceMessageIconClick: noop,
556
771
  disabled: false,
557
772
  placeholder: '',
558
773
  maxLength: 5000,
@@ -564,7 +779,12 @@ MessageInput.defaultProps = {
564
779
  onMentionStringChange: noop,
565
780
  onMentionedUserIdsUpdated: noop,
566
781
  onKeyUp: noop,
567
- onKeyDown: noop
782
+ onKeyDown: noop,
783
+ setMentionedUsers: noop,
784
+ renderVoiceMessageIcon: noop,
785
+ renderFileUploadIcon: noop,
786
+ renderSendMessageIcon: noop,
787
+ channel: {}
568
788
  };
569
789
 
570
790
  module.exports = MessageInput;