@sendbird/uikit-react 3.4.5 → 3.4.6-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (832) hide show
  1. package/App.js +103 -128
  2. package/App.js.map +1 -1
  3. package/CHANGELOG.md +14 -0
  4. package/Channel/components/ChannelHeader.js +26 -27
  5. package/Channel/components/ChannelHeader.js.map +1 -1
  6. package/Channel/components/ChannelUI.js +54 -59
  7. package/Channel/components/ChannelUI.js.map +1 -1
  8. package/Channel/components/FileViewer.js +36 -37
  9. package/Channel/components/FileViewer.js.map +1 -1
  10. package/Channel/components/FrozenNotification.js +5 -5
  11. package/Channel/components/FrozenNotification.js.map +1 -1
  12. package/Channel/components/Message.js +106 -136
  13. package/Channel/components/Message.js.map +1 -1
  14. package/Channel/components/MessageInput.js +67 -87
  15. package/Channel/components/MessageInput.js.map +1 -1
  16. package/Channel/components/MessageList.js +95 -140
  17. package/Channel/components/MessageList.js.map +1 -1
  18. package/Channel/components/RemoveMessageModal.js +20 -21
  19. package/Channel/components/RemoveMessageModal.js.map +1 -1
  20. package/Channel/components/SuggestedMentionList.js +59 -90
  21. package/Channel/components/SuggestedMentionList.js.map +1 -1
  22. package/Channel/components/TypingIndicator.js +19 -33
  23. package/Channel/components/TypingIndicator.js.map +1 -1
  24. package/Channel/components/UnreadCount.js +9 -10
  25. package/Channel/components/UnreadCount.js.map +1 -1
  26. package/Channel/context.js +14 -14
  27. package/Channel.js +39 -38
  28. package/Channel.js.map +1 -1
  29. package/ChannelList/components/AddChannel.js +19 -23
  30. package/ChannelList/components/AddChannel.js.map +1 -1
  31. package/ChannelList/components/ChannelListHeader.js +14 -18
  32. package/ChannelList/components/ChannelListHeader.js.map +1 -1
  33. package/ChannelList/components/ChannelListUI.js +49 -64
  34. package/ChannelList/components/ChannelListUI.js.map +1 -1
  35. package/ChannelList/components/ChannelPreview.js +43 -49
  36. package/ChannelList/components/ChannelPreview.js.map +1 -1
  37. package/ChannelList/components/ChannelPreviewAction.js +19 -22
  38. package/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  39. package/ChannelList/context.js +8 -8
  40. package/ChannelList.js +29 -30
  41. package/ChannelList.js.map +1 -1
  42. package/{ChannelListProvider-10fe7340.js → ChannelListProvider-45cf488b.js} +77 -172
  43. package/ChannelListProvider-45cf488b.js.map +1 -0
  44. package/{ChannelProvider-4ac82784.js → ChannelProvider-9a52ed96.js} +185 -340
  45. package/ChannelProvider-9a52ed96.js.map +1 -0
  46. package/ChannelSettings/components/ChannelProfile.js +13 -21
  47. package/ChannelSettings/components/ChannelProfile.js.map +1 -1
  48. package/ChannelSettings/components/ChannelSettingsUI.js +24 -31
  49. package/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  50. package/ChannelSettings/components/EditDetailsModal.js +20 -29
  51. package/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  52. package/ChannelSettings/components/LeaveChannel.js +18 -26
  53. package/ChannelSettings/components/LeaveChannel.js.map +1 -1
  54. package/ChannelSettings/components/ModerationPanel.js +66 -109
  55. package/ChannelSettings/components/ModerationPanel.js.map +1 -1
  56. package/ChannelSettings/components/UserListItem.js +21 -21
  57. package/ChannelSettings/components/UserListItem.js.map +1 -1
  58. package/ChannelSettings/components/UserPanel.js +16 -19
  59. package/ChannelSettings/components/UserPanel.js.map +1 -1
  60. package/ChannelSettings/context.js +22 -30
  61. package/ChannelSettings/context.js.map +1 -1
  62. package/ChannelSettings.js +17 -17
  63. package/ChannelSettings.js.map +1 -1
  64. package/CreateChannel/components/CreateChannelUI.js +17 -19
  65. package/CreateChannel/components/CreateChannelUI.js.map +1 -1
  66. package/CreateChannel/components/InviteUsers.js +35 -56
  67. package/CreateChannel/components/InviteUsers.js.map +1 -1
  68. package/CreateChannel/components/SelectChannelType.js +11 -17
  69. package/CreateChannel/components/SelectChannelType.js.map +1 -1
  70. package/CreateChannel/context.js +4 -4
  71. package/CreateChannel.js +18 -18
  72. package/CreateChannel.js.map +1 -1
  73. package/{CreateChannelProvider-11045f46.js → CreateChannelProvider-8c395571.js} +9 -16
  74. package/{CreateChannelProvider-11045f46.js.map → CreateChannelProvider-8c395571.js.map} +1 -1
  75. package/CreateOpenChannel/components/CreateOpenChannelUI.js +17 -25
  76. package/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  77. package/CreateOpenChannel/context.js +7 -12
  78. package/CreateOpenChannel/context.js.map +1 -1
  79. package/CreateOpenChannel.js +14 -14
  80. package/CreateOpenChannel.js.map +1 -1
  81. package/EditUserProfile/components/EditUserProfileUI.js +11 -12
  82. package/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  83. package/EditUserProfile/context.js +0 -2
  84. package/EditUserProfile/context.js.map +1 -1
  85. package/EditUserProfile.js +13 -14
  86. package/EditUserProfile.js.map +1 -1
  87. package/{LocalizationContext-654ae04f.js → LocalizationContext-428ea690.js} +3 -5
  88. package/{LocalizationContext-654ae04f.js.map → LocalizationContext-428ea690.js.map} +1 -1
  89. package/{MediaQueryContext-e791a4d1.js → MediaQueryContext-e4d4fb2a.js} +14 -24
  90. package/MediaQueryContext-e4d4fb2a.js.map +1 -0
  91. package/{MemberList-6f3c8288.js → MemberList-f0614320.js} +35 -68
  92. package/MemberList-f0614320.js.map +1 -0
  93. package/Message/context.js +3 -7
  94. package/Message/context.js.map +1 -1
  95. package/MessageSearch/components/MessageSearchUI.js +33 -47
  96. package/MessageSearch/components/MessageSearchUI.js.map +1 -1
  97. package/MessageSearch/context.js +44 -79
  98. package/MessageSearch/context.js.map +1 -1
  99. package/MessageSearch.js +25 -35
  100. package/MessageSearch.js.map +1 -1
  101. package/OpenChannel/components/FrozenChannelNotification.js +4 -4
  102. package/OpenChannel/components/FrozenChannelNotification.js.map +1 -1
  103. package/OpenChannel/components/OpenChannelHeader.js +16 -18
  104. package/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  105. package/OpenChannel/components/OpenChannelInput.js +25 -28
  106. package/OpenChannel/components/OpenChannelInput.js.map +1 -1
  107. package/OpenChannel/components/OpenChannelMessage.js +46 -70
  108. package/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  109. package/OpenChannel/components/OpenChannelMessageList.js +44 -90
  110. package/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  111. package/OpenChannel/components/OpenChannelUI.js +43 -47
  112. package/OpenChannel/components/OpenChannelUI.js.map +1 -1
  113. package/OpenChannel/context.js +8 -8
  114. package/OpenChannel.js +32 -30
  115. package/OpenChannel.js.map +1 -1
  116. package/OpenChannelList/components/OpenChannelListUI.js +31 -45
  117. package/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  118. package/OpenChannelList/components/OpenChannelPreview.js +7 -7
  119. package/OpenChannelList/components/OpenChannelPreview.js.map +1 -1
  120. package/OpenChannelList/context.js +3 -3
  121. package/OpenChannelList.js +24 -23
  122. package/OpenChannelList.js.map +1 -1
  123. package/{OpenChannelListProvider-eb189b41.js → OpenChannelListProvider-1657d7da.js} +39 -66
  124. package/OpenChannelListProvider-1657d7da.js.map +1 -0
  125. package/{OpenChannelProvider-e418b369.js → OpenChannelProvider-de3ddd2b.js} +137 -293
  126. package/OpenChannelProvider-de3ddd2b.js.map +1 -0
  127. package/OpenChannelSettings/components/EditDetailsModal.js +23 -31
  128. package/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  129. package/OpenChannelSettings/components/OpenChannelProfile.js +14 -18
  130. package/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  131. package/OpenChannelSettings/components/OpenChannelSettingsUI.js +21 -27
  132. package/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  133. package/OpenChannelSettings/components/OperatorUI.js +58 -110
  134. package/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  135. package/OpenChannelSettings/components/ParticipantUI.js +14 -14
  136. package/OpenChannelSettings/context.js +15 -26
  137. package/OpenChannelSettings/context.js.map +1 -1
  138. package/OpenChannelSettings.js +17 -17
  139. package/OpenChannelSettings.js.map +1 -1
  140. package/README.md +25 -5
  141. package/{RemoveMessageModal-938b400d.js → RemoveMessageModal-cced59b5.js} +5 -6
  142. package/{RemoveMessageModal-938b400d.js.map → RemoveMessageModal-cced59b5.js.map} +1 -1
  143. package/SendbirdProvider.js +260 -285
  144. package/SendbirdProvider.js.map +1 -1
  145. package/Thread/components/ParentMessageInfo.js +81 -109
  146. package/Thread/components/ParentMessageInfo.js.map +1 -1
  147. package/Thread/components/ParentMessageInfoItem.js +34 -41
  148. package/Thread/components/ParentMessageInfoItem.js.map +1 -1
  149. package/Thread/components/ThreadHeader.js +10 -11
  150. package/Thread/components/ThreadHeader.js.map +1 -1
  151. package/Thread/components/ThreadList.js +45 -53
  152. package/Thread/components/ThreadList.js.map +1 -1
  153. package/Thread/components/ThreadListItem.js +120 -148
  154. package/Thread/components/ThreadListItem.js.map +1 -1
  155. package/Thread/components/ThreadMessageInput.js +65 -83
  156. package/Thread/components/ThreadMessageInput.js.map +1 -1
  157. package/Thread/components/ThreadUI.js +75 -94
  158. package/Thread/components/ThreadUI.js.map +1 -1
  159. package/Thread/context/types.js +0 -5
  160. package/Thread/context/types.js.map +1 -1
  161. package/Thread/context.js +8 -8
  162. package/Thread.js +56 -55
  163. package/Thread.js.map +1 -1
  164. package/{ThreadProvider-faf3df5d.js → ThreadProvider-c33f66a4.js} +164 -282
  165. package/ThreadProvider-c33f66a4.js.map +1 -0
  166. package/{UserProfileContext-1996d4d2.js → UserProfileContext-576f1ef9.js} +1 -4
  167. package/{UserProfileContext-1996d4d2.js.map → UserProfileContext-576f1ef9.js.map} +1 -1
  168. package/{VoiceMessageInputWrapper-59373f20.js → VoiceMessageInputWrapper-8f6bfd36.js} +48 -57
  169. package/VoiceMessageInputWrapper-8f6bfd36.js.map +1 -0
  170. package/VoicePlayer/context.js +3 -3
  171. package/VoicePlayer/useVoicePlayer.js +14 -26
  172. package/VoicePlayer/useVoicePlayer.js.map +1 -1
  173. package/VoiceRecorder/context.js +26 -172
  174. package/VoiceRecorder/context.js.map +1 -1
  175. package/VoiceRecorder/useVoiceRecorder.js +14 -26
  176. package/VoiceRecorder/useVoiceRecorder.js.map +1 -1
  177. package/WebAudioUtils-f9237c94.js +123 -0
  178. package/WebAudioUtils-f9237c94.js.map +1 -0
  179. package/{_rollupPluginBabelHelpers-e908c50d.js → _rollupPluginBabelHelpers-6e60e429.js} +16 -10
  180. package/_rollupPluginBabelHelpers-6e60e429.js.map +1 -0
  181. package/cjs/App.js +103 -128
  182. package/cjs/App.js.map +1 -1
  183. package/cjs/Channel/components/ChannelHeader.js +26 -27
  184. package/cjs/Channel/components/ChannelHeader.js.map +1 -1
  185. package/cjs/Channel/components/ChannelUI.js +54 -59
  186. package/cjs/Channel/components/ChannelUI.js.map +1 -1
  187. package/cjs/Channel/components/FileViewer.js +36 -37
  188. package/cjs/Channel/components/FileViewer.js.map +1 -1
  189. package/cjs/Channel/components/FrozenNotification.js +5 -5
  190. package/cjs/Channel/components/FrozenNotification.js.map +1 -1
  191. package/cjs/Channel/components/Message.js +110 -140
  192. package/cjs/Channel/components/Message.js.map +1 -1
  193. package/cjs/Channel/components/MessageInput.js +67 -87
  194. package/cjs/Channel/components/MessageInput.js.map +1 -1
  195. package/cjs/Channel/components/MessageList.js +95 -140
  196. package/cjs/Channel/components/MessageList.js.map +1 -1
  197. package/cjs/Channel/components/RemoveMessageModal.js +20 -21
  198. package/cjs/Channel/components/RemoveMessageModal.js.map +1 -1
  199. package/cjs/Channel/components/SuggestedMentionList.js +59 -90
  200. package/cjs/Channel/components/SuggestedMentionList.js.map +1 -1
  201. package/cjs/Channel/components/TypingIndicator.js +19 -33
  202. package/cjs/Channel/components/TypingIndicator.js.map +1 -1
  203. package/cjs/Channel/components/UnreadCount.js +9 -10
  204. package/cjs/Channel/components/UnreadCount.js.map +1 -1
  205. package/cjs/Channel/context.js +14 -14
  206. package/cjs/Channel.js +39 -38
  207. package/cjs/Channel.js.map +1 -1
  208. package/cjs/ChannelList/components/AddChannel.js +19 -23
  209. package/cjs/ChannelList/components/AddChannel.js.map +1 -1
  210. package/cjs/ChannelList/components/ChannelListHeader.js +14 -18
  211. package/cjs/ChannelList/components/ChannelListHeader.js.map +1 -1
  212. package/cjs/ChannelList/components/ChannelListUI.js +49 -64
  213. package/cjs/ChannelList/components/ChannelListUI.js.map +1 -1
  214. package/cjs/ChannelList/components/ChannelPreview.js +43 -49
  215. package/cjs/ChannelList/components/ChannelPreview.js.map +1 -1
  216. package/cjs/ChannelList/components/ChannelPreviewAction.js +19 -22
  217. package/cjs/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  218. package/cjs/ChannelList/context.js +8 -8
  219. package/cjs/ChannelList.js +29 -30
  220. package/cjs/ChannelList.js.map +1 -1
  221. package/cjs/{ChannelListProvider-d4f91fc4.js → ChannelListProvider-f74d4451.js} +77 -172
  222. package/cjs/ChannelListProvider-f74d4451.js.map +1 -0
  223. package/cjs/{ChannelProvider-af0b997c.js → ChannelProvider-fcb80591.js} +185 -340
  224. package/cjs/ChannelProvider-fcb80591.js.map +1 -0
  225. package/cjs/ChannelSettings/components/ChannelProfile.js +13 -21
  226. package/cjs/ChannelSettings/components/ChannelProfile.js.map +1 -1
  227. package/cjs/ChannelSettings/components/ChannelSettingsUI.js +24 -31
  228. package/cjs/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  229. package/cjs/ChannelSettings/components/EditDetailsModal.js +20 -29
  230. package/cjs/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  231. package/cjs/ChannelSettings/components/LeaveChannel.js +18 -26
  232. package/cjs/ChannelSettings/components/LeaveChannel.js.map +1 -1
  233. package/cjs/ChannelSettings/components/ModerationPanel.js +66 -109
  234. package/cjs/ChannelSettings/components/ModerationPanel.js.map +1 -1
  235. package/cjs/ChannelSettings/components/UserListItem.js +21 -21
  236. package/cjs/ChannelSettings/components/UserListItem.js.map +1 -1
  237. package/cjs/ChannelSettings/components/UserPanel.js +16 -19
  238. package/cjs/ChannelSettings/components/UserPanel.js.map +1 -1
  239. package/cjs/ChannelSettings/context.js +22 -30
  240. package/cjs/ChannelSettings/context.js.map +1 -1
  241. package/cjs/ChannelSettings.js +17 -17
  242. package/cjs/ChannelSettings.js.map +1 -1
  243. package/cjs/CreateChannel/components/CreateChannelUI.js +17 -19
  244. package/cjs/CreateChannel/components/CreateChannelUI.js.map +1 -1
  245. package/cjs/CreateChannel/components/InviteUsers.js +35 -56
  246. package/cjs/CreateChannel/components/InviteUsers.js.map +1 -1
  247. package/cjs/CreateChannel/components/SelectChannelType.js +11 -17
  248. package/cjs/CreateChannel/components/SelectChannelType.js.map +1 -1
  249. package/cjs/CreateChannel/context.js +4 -4
  250. package/cjs/CreateChannel.js +18 -18
  251. package/cjs/CreateChannel.js.map +1 -1
  252. package/cjs/{CreateChannelProvider-c4ad28a8.js → CreateChannelProvider-1be5d0c0.js} +9 -16
  253. package/cjs/{CreateChannelProvider-c4ad28a8.js.map → CreateChannelProvider-1be5d0c0.js.map} +1 -1
  254. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js +17 -25
  255. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  256. package/cjs/CreateOpenChannel/context.js +7 -12
  257. package/cjs/CreateOpenChannel/context.js.map +1 -1
  258. package/cjs/CreateOpenChannel.js +14 -14
  259. package/cjs/CreateOpenChannel.js.map +1 -1
  260. package/cjs/EditUserProfile/components/EditUserProfileUI.js +11 -12
  261. package/cjs/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  262. package/cjs/EditUserProfile/context.js +0 -2
  263. package/cjs/EditUserProfile/context.js.map +1 -1
  264. package/cjs/EditUserProfile.js +13 -14
  265. package/cjs/EditUserProfile.js.map +1 -1
  266. package/cjs/{LocalizationContext-01fceac0.js → LocalizationContext-9b216d02.js} +3 -5
  267. package/cjs/{LocalizationContext-01fceac0.js.map → LocalizationContext-9b216d02.js.map} +1 -1
  268. package/cjs/{MediaQueryContext-4978c777.js → MediaQueryContext-ea137add.js} +14 -24
  269. package/cjs/MediaQueryContext-ea137add.js.map +1 -0
  270. package/cjs/{MemberList-5c05b62f.js → MemberList-4f805690.js} +35 -68
  271. package/cjs/MemberList-4f805690.js.map +1 -0
  272. package/cjs/Message/context.js +3 -7
  273. package/cjs/Message/context.js.map +1 -1
  274. package/cjs/MessageSearch/components/MessageSearchUI.js +33 -47
  275. package/cjs/MessageSearch/components/MessageSearchUI.js.map +1 -1
  276. package/cjs/MessageSearch/context.js +44 -79
  277. package/cjs/MessageSearch/context.js.map +1 -1
  278. package/cjs/MessageSearch.js +25 -35
  279. package/cjs/MessageSearch.js.map +1 -1
  280. package/cjs/OpenChannel/components/FrozenChannelNotification.js +4 -4
  281. package/cjs/OpenChannel/components/FrozenChannelNotification.js.map +1 -1
  282. package/cjs/OpenChannel/components/OpenChannelHeader.js +16 -18
  283. package/cjs/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  284. package/cjs/OpenChannel/components/OpenChannelInput.js +25 -28
  285. package/cjs/OpenChannel/components/OpenChannelInput.js.map +1 -1
  286. package/cjs/OpenChannel/components/OpenChannelMessage.js +46 -70
  287. package/cjs/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  288. package/cjs/OpenChannel/components/OpenChannelMessageList.js +48 -94
  289. package/cjs/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  290. package/cjs/OpenChannel/components/OpenChannelUI.js +43 -47
  291. package/cjs/OpenChannel/components/OpenChannelUI.js.map +1 -1
  292. package/cjs/OpenChannel/context.js +8 -8
  293. package/cjs/OpenChannel.js +32 -30
  294. package/cjs/OpenChannel.js.map +1 -1
  295. package/cjs/OpenChannelList/components/OpenChannelListUI.js +31 -45
  296. package/cjs/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  297. package/cjs/OpenChannelList/components/OpenChannelPreview.js +7 -7
  298. package/cjs/OpenChannelList/components/OpenChannelPreview.js.map +1 -1
  299. package/cjs/OpenChannelList/context.js +3 -3
  300. package/cjs/OpenChannelList.js +24 -23
  301. package/cjs/OpenChannelList.js.map +1 -1
  302. package/cjs/{OpenChannelListProvider-3be4b8a5.js → OpenChannelListProvider-6883fa4a.js} +39 -66
  303. package/cjs/OpenChannelListProvider-6883fa4a.js.map +1 -0
  304. package/cjs/{OpenChannelProvider-56af9a0e.js → OpenChannelProvider-cb41bba9.js} +137 -293
  305. package/cjs/OpenChannelProvider-cb41bba9.js.map +1 -0
  306. package/cjs/OpenChannelSettings/components/EditDetailsModal.js +23 -31
  307. package/cjs/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  308. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +14 -18
  309. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  310. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +21 -27
  311. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  312. package/cjs/OpenChannelSettings/components/OperatorUI.js +58 -110
  313. package/cjs/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  314. package/cjs/OpenChannelSettings/components/ParticipantUI.js +14 -14
  315. package/cjs/OpenChannelSettings/context.js +15 -26
  316. package/cjs/OpenChannelSettings/context.js.map +1 -1
  317. package/cjs/OpenChannelSettings.js +17 -17
  318. package/cjs/OpenChannelSettings.js.map +1 -1
  319. package/cjs/{RemoveMessageModal-31ff9edc.js → RemoveMessageModal-193a514d.js} +5 -6
  320. package/cjs/{RemoveMessageModal-31ff9edc.js.map → RemoveMessageModal-193a514d.js.map} +1 -1
  321. package/cjs/SendbirdProvider.js +264 -289
  322. package/cjs/SendbirdProvider.js.map +1 -1
  323. package/cjs/Thread/components/ParentMessageInfo.js +81 -109
  324. package/cjs/Thread/components/ParentMessageInfo.js.map +1 -1
  325. package/cjs/Thread/components/ParentMessageInfoItem.js +34 -41
  326. package/cjs/Thread/components/ParentMessageInfoItem.js.map +1 -1
  327. package/cjs/Thread/components/ThreadHeader.js +10 -11
  328. package/cjs/Thread/components/ThreadHeader.js.map +1 -1
  329. package/cjs/Thread/components/ThreadList.js +45 -53
  330. package/cjs/Thread/components/ThreadList.js.map +1 -1
  331. package/cjs/Thread/components/ThreadListItem.js +120 -148
  332. package/cjs/Thread/components/ThreadListItem.js.map +1 -1
  333. package/cjs/Thread/components/ThreadMessageInput.js +65 -83
  334. package/cjs/Thread/components/ThreadMessageInput.js.map +1 -1
  335. package/cjs/Thread/components/ThreadUI.js +75 -94
  336. package/cjs/Thread/components/ThreadUI.js.map +1 -1
  337. package/cjs/Thread/context/types.js +0 -5
  338. package/cjs/Thread/context/types.js.map +1 -1
  339. package/cjs/Thread/context.js +8 -8
  340. package/cjs/Thread.js +56 -55
  341. package/cjs/Thread.js.map +1 -1
  342. package/cjs/{ThreadProvider-12784adf.js → ThreadProvider-c3623e5f.js} +164 -282
  343. package/cjs/ThreadProvider-c3623e5f.js.map +1 -0
  344. package/cjs/{UserProfileContext-c4642438.js → UserProfileContext-ad079e6d.js} +1 -4
  345. package/cjs/{UserProfileContext-c4642438.js.map → UserProfileContext-ad079e6d.js.map} +1 -1
  346. package/cjs/{VoiceMessageInputWrapper-3b5db880.js → VoiceMessageInputWrapper-1c4004d1.js} +47 -56
  347. package/cjs/VoiceMessageInputWrapper-1c4004d1.js.map +1 -0
  348. package/cjs/VoicePlayer/context.js +3 -3
  349. package/cjs/VoicePlayer/useVoicePlayer.js +14 -26
  350. package/cjs/VoicePlayer/useVoicePlayer.js.map +1 -1
  351. package/cjs/VoiceRecorder/context.js +25 -171
  352. package/cjs/VoiceRecorder/context.js.map +1 -1
  353. package/cjs/VoiceRecorder/useVoiceRecorder.js +14 -26
  354. package/cjs/VoiceRecorder/useVoiceRecorder.js.map +1 -1
  355. package/cjs/WebAudioUtils-33ee4d42.js +126 -0
  356. package/cjs/WebAudioUtils-33ee4d42.js.map +1 -0
  357. package/cjs/{_rollupPluginBabelHelpers-994cd1da.js → _rollupPluginBabelHelpers-440ec6e2.js} +16 -10
  358. package/cjs/_rollupPluginBabelHelpers-440ec6e2.js.map +1 -0
  359. package/cjs/{color-8f9fe57f.js → color-8b30623d.js} +1 -10
  360. package/cjs/color-8b30623d.js.map +1 -0
  361. package/cjs/{compareIds-b77b66f3.js → compareIds-3dbb4f79.js} +4 -5
  362. package/cjs/compareIds-3dbb4f79.js.map +1 -0
  363. package/cjs/{const-e03cb4c1.js → const-1e096998.js} +1 -2
  364. package/cjs/{const-e03cb4c1.js.map → const-1e096998.js.map} +1 -1
  365. package/cjs/{const-35f8be84.js → const-7bb85121.js} +1 -1
  366. package/cjs/{const-35f8be84.js.map → const-7bb85121.js.map} +1 -1
  367. package/cjs/{consts-69fc20be.js → consts-02c09d93.js} +8 -11
  368. package/cjs/{consts-69fc20be.js.map → consts-02c09d93.js.map} +1 -1
  369. package/cjs/{consts-aabb33e0.js → consts-3ebe6f94.js} +1 -1
  370. package/cjs/{consts-aabb33e0.js.map → consts-3ebe6f94.js.map} +1 -1
  371. package/cjs/{consts-b29bd4d5.js → consts-54b7b2b1.js} +1 -1
  372. package/cjs/{consts-b29bd4d5.js.map → consts-54b7b2b1.js.map} +1 -1
  373. package/cjs/{consts-956b1221.js → consts-d1f579c4.js} +1 -1
  374. package/cjs/{consts-956b1221.js.map → consts-d1f579c4.js.map} +1 -1
  375. package/cjs/{context-d9e248df.js → context-855dcb8e.js} +2 -2
  376. package/cjs/{context-d9e248df.js.map → context-855dcb8e.js.map} +1 -1
  377. package/cjs/dist/index.css +2 -1
  378. package/cjs/dist/index.css.map +1 -1
  379. package/cjs/handlers/OpenChannelHandler.js.map +1 -1
  380. package/cjs/handlers/SessionHandler.js.map +1 -1
  381. package/cjs/{index-7c5d21c4.js → index-02729806.js} +1 -1
  382. package/cjs/{index-7c5d21c4.js.map → index-02729806.js.map} +1 -1
  383. package/cjs/{index-b9fbe704.js → index-15a62d58.js} +18 -27
  384. package/cjs/index-15a62d58.js.map +1 -0
  385. package/cjs/{index-26a1e861.js → index-3d6159df.js} +2 -22
  386. package/cjs/{index-26a1e861.js.map → index-3d6159df.js.map} +1 -1
  387. package/cjs/index-5bba1fd5.js +41 -0
  388. package/cjs/index-5bba1fd5.js.map +1 -0
  389. package/cjs/{index-d41db9c1.js → index-6d24cef9.js} +30 -44
  390. package/cjs/index-6d24cef9.js.map +1 -0
  391. package/cjs/{index-aa908fcf.js → index-7f214e91.js} +13 -32
  392. package/cjs/index-7f214e91.js.map +1 -0
  393. package/cjs/{index-e3f00fd1.js → index-8a187344.js} +3 -3
  394. package/cjs/{index-e3f00fd1.js.map → index-8a187344.js.map} +1 -1
  395. package/cjs/{index-1e57cbdb.js → index-8a64de0e.js} +17 -33
  396. package/cjs/index-8a64de0e.js.map +1 -0
  397. package/cjs/{index-a7fa406f.js → index-8d42b734.js} +23 -27
  398. package/cjs/index-8d42b734.js.map +1 -0
  399. package/cjs/{index-603c2a7c.js → index-9e320445.js} +29 -33
  400. package/cjs/index-9e320445.js.map +1 -0
  401. package/cjs/{index-aeba3b06.js → index-a1141d68.js} +21 -22
  402. package/cjs/index-a1141d68.js.map +1 -0
  403. package/cjs/{index-1f02e60f.js → index-b95c8165.js} +2 -2
  404. package/cjs/{index-1f02e60f.js.map → index-b95c8165.js.map} +1 -1
  405. package/cjs/{index-72fd0294.js → index-d6f14382.js} +38 -142
  406. package/cjs/index-d6f14382.js.map +1 -0
  407. package/cjs/{index-36aaf992.js → index-d85616b2.js} +1 -1
  408. package/cjs/{index-36aaf992.js.map → index-d85616b2.js.map} +1 -1
  409. package/cjs/{index-959a4ab1.js → index-ecfe08c9.js} +2 -2
  410. package/cjs/{index-959a4ab1.js.map → index-ecfe08c9.js.map} +1 -1
  411. package/cjs/{index-c825cf5b.js → index-f8237241.js} +25 -52
  412. package/cjs/index-f8237241.js.map +1 -0
  413. package/cjs/index.js +49 -49
  414. package/cjs/lame.all.js.map +1 -1
  415. package/cjs/sendbirdSelectors.js +36 -94
  416. package/cjs/sendbirdSelectors.js.map +1 -1
  417. package/cjs/{stringSet-7330b627.js → stringSet-e52248ab.js} +2 -1
  418. package/cjs/stringSet-e52248ab.js.map +1 -0
  419. package/cjs/{tokenize-a5a20ef3.js → tokenize-c5dd544b.js} +30 -23
  420. package/cjs/tokenize-c5dd544b.js.map +1 -0
  421. package/cjs/{topics-7547922a.js → topics-09d72ec0.js} +1 -1
  422. package/cjs/topics-09d72ec0.js.map +1 -0
  423. package/cjs/{tslib.es6-ee1122c5.js → tslib.es6-957ba986.js} +2 -2
  424. package/cjs/tslib.es6-957ba986.js.map +1 -0
  425. package/cjs/{types-7daeb4a1.js → types-68cc0fcf.js} +1 -1
  426. package/cjs/types-68cc0fcf.js.map +1 -0
  427. package/cjs/ui/Accordion.js +12 -16
  428. package/cjs/ui/Accordion.js.map +1 -1
  429. package/cjs/ui/AccordionGroup.js +6 -8
  430. package/cjs/ui/AccordionGroup.js.map +1 -1
  431. package/cjs/ui/AdminMessage.js +5 -8
  432. package/cjs/ui/AdminMessage.js.map +1 -1
  433. package/cjs/ui/Avatar.js +23 -41
  434. package/cjs/ui/Avatar.js.map +1 -1
  435. package/cjs/ui/Badge.js +9 -9
  436. package/cjs/ui/Badge.js.map +1 -1
  437. package/cjs/ui/BottomSheet.js +5 -7
  438. package/cjs/ui/BottomSheet.js.map +1 -1
  439. package/cjs/ui/Button.js +13 -24
  440. package/cjs/ui/Button.js.map +1 -1
  441. package/cjs/ui/ChannelAvatar.js +9 -9
  442. package/cjs/ui/ChannelAvatar.js.map +1 -1
  443. package/cjs/ui/Checkbox.js +8 -10
  444. package/cjs/ui/Checkbox.js.map +1 -1
  445. package/cjs/ui/ConnectionStatus.js +4 -4
  446. package/cjs/ui/ConnectionStatus.js.map +1 -1
  447. package/cjs/ui/ContextMenu.js +40 -86
  448. package/cjs/ui/ContextMenu.js.map +1 -1
  449. package/cjs/ui/DateSeparator.js +9 -9
  450. package/cjs/ui/DateSeparator.js.map +1 -1
  451. package/cjs/ui/EmojiReactions.js +19 -24
  452. package/cjs/ui/EmojiReactions.js.map +1 -1
  453. package/cjs/ui/FileMessageItemBody.js +15 -16
  454. package/cjs/ui/FileMessageItemBody.js.map +1 -1
  455. package/cjs/ui/FileViewer.js +22 -23
  456. package/cjs/ui/FileViewer.js.map +1 -1
  457. package/cjs/ui/Icon.js +0 -241
  458. package/cjs/ui/Icon.js.map +1 -1
  459. package/cjs/ui/IconButton.js +19 -22
  460. package/cjs/ui/IconButton.js.map +1 -1
  461. package/cjs/ui/ImageRenderer.js +27 -30
  462. package/cjs/ui/ImageRenderer.js.map +1 -1
  463. package/cjs/ui/Input.js +8 -10
  464. package/cjs/ui/Input.js.map +1 -1
  465. package/cjs/ui/Label.js +2 -2
  466. package/cjs/ui/LinkLabel.js +4 -3
  467. package/cjs/ui/LinkLabel.js.map +1 -1
  468. package/cjs/ui/Loader.js +7 -7
  469. package/cjs/ui/Loader.js.map +1 -1
  470. package/cjs/ui/MentionLabel.js +16 -22
  471. package/cjs/ui/MentionLabel.js.map +1 -1
  472. package/cjs/ui/MentionUserLabel.js +7 -7
  473. package/cjs/ui/MentionUserLabel.js.map +1 -1
  474. package/cjs/ui/MessageContent.js +118 -137
  475. package/cjs/ui/MessageContent.js.map +1 -1
  476. package/cjs/ui/MessageInput.js +82 -134
  477. package/cjs/ui/MessageInput.js.map +1 -1
  478. package/cjs/ui/MessageItemMenu.js +25 -31
  479. package/cjs/ui/MessageItemMenu.js.map +1 -1
  480. package/cjs/ui/MessageItemReactionMenu.js +12 -16
  481. package/cjs/ui/MessageItemReactionMenu.js.map +1 -1
  482. package/cjs/ui/MessageSearchFileItem.js +22 -30
  483. package/cjs/ui/MessageSearchFileItem.js.map +1 -1
  484. package/cjs/ui/MessageSearchItem.js +18 -24
  485. package/cjs/ui/MessageSearchItem.js.map +1 -1
  486. package/cjs/ui/MessageStatus.js +10 -10
  487. package/cjs/ui/Modal.js +33 -34
  488. package/cjs/ui/Modal.js.map +1 -1
  489. package/cjs/ui/MutedAvatarOverlay.js +3 -3
  490. package/cjs/ui/MutedAvatarOverlay.js.map +1 -1
  491. package/cjs/ui/OGMessageItemBody.js +27 -30
  492. package/cjs/ui/OGMessageItemBody.js.map +1 -1
  493. package/cjs/ui/OpenChannelAdminMessage.js +4 -4
  494. package/cjs/ui/OpenChannelAdminMessage.js.map +1 -1
  495. package/cjs/ui/OpenChannelAvatar.js +11 -11
  496. package/cjs/ui/OpenChannelAvatar.js.map +1 -1
  497. package/cjs/ui/OpenchannelConversationHeader.js +10 -10
  498. package/cjs/ui/OpenchannelConversationHeader.js.map +1 -1
  499. package/cjs/ui/OpenchannelFileMessage.js +31 -44
  500. package/cjs/ui/OpenchannelFileMessage.js.map +1 -1
  501. package/cjs/ui/OpenchannelOGMessage.js +39 -53
  502. package/cjs/ui/OpenchannelOGMessage.js.map +1 -1
  503. package/cjs/ui/OpenchannelThumbnailMessage.js +36 -46
  504. package/cjs/ui/OpenchannelThumbnailMessage.js.map +1 -1
  505. package/cjs/ui/OpenchannelUserMessage.js +39 -49
  506. package/cjs/ui/OpenchannelUserMessage.js.map +1 -1
  507. package/cjs/ui/PlaceHolder.js +6 -6
  508. package/cjs/ui/PlaybackTime.js +8 -8
  509. package/cjs/ui/PlaybackTime.js.map +1 -1
  510. package/cjs/ui/ProgressBar.js +8 -8
  511. package/cjs/ui/ProgressBar.js.map +1 -1
  512. package/cjs/ui/QuoteMessage.js +16 -20
  513. package/cjs/ui/QuoteMessage.js.map +1 -1
  514. package/cjs/ui/QuoteMessageInput.js +8 -11
  515. package/cjs/ui/QuoteMessageInput.js.map +1 -1
  516. package/cjs/ui/ReactionBadge.js +13 -17
  517. package/cjs/ui/ReactionBadge.js.map +1 -1
  518. package/cjs/ui/ReactionButton.js +8 -8
  519. package/cjs/ui/ReactionButton.js.map +1 -1
  520. package/cjs/ui/SortByRow.js +7 -11
  521. package/cjs/ui/SortByRow.js.map +1 -1
  522. package/cjs/ui/TextButton.js +12 -12
  523. package/cjs/ui/TextButton.js.map +1 -1
  524. package/cjs/ui/TextMessageItemBody.js +23 -24
  525. package/cjs/ui/TextMessageItemBody.js.map +1 -1
  526. package/cjs/ui/ThreadReplies.js +10 -11
  527. package/cjs/ui/ThreadReplies.js.map +1 -1
  528. package/cjs/ui/ThumbnailMessageItemBody.js +17 -20
  529. package/cjs/ui/ThumbnailMessageItemBody.js.map +1 -1
  530. package/cjs/ui/Tooltip.js +6 -6
  531. package/cjs/ui/Tooltip.js.map +1 -1
  532. package/cjs/ui/TooltipWrapper.js +6 -8
  533. package/cjs/ui/TooltipWrapper.js.map +1 -1
  534. package/cjs/ui/UnknownMessageItemBody.js +13 -14
  535. package/cjs/ui/UnknownMessageItemBody.js.map +1 -1
  536. package/cjs/ui/UserListItem.js +28 -27
  537. package/cjs/ui/UserListItem.js.map +1 -1
  538. package/cjs/ui/UserProfile.js +15 -17
  539. package/cjs/ui/UserProfile.js.map +1 -1
  540. package/cjs/ui/VoiceMessageItemBody.js +24 -32
  541. package/cjs/ui/VoiceMessageItemBody.js.map +1 -1
  542. package/cjs/ui/VoiceMessgeInput.js +8 -8
  543. package/cjs/ui/Word.js +19 -30
  544. package/cjs/ui/Word.js.map +1 -1
  545. package/cjs/{useLongPress-3e3b1188.js → useLongPress-640ea281.js} +13 -31
  546. package/cjs/useLongPress-640ea281.js.map +1 -0
  547. package/cjs/useSendbirdStateContext.js +1 -2
  548. package/cjs/useSendbirdStateContext.js.map +1 -1
  549. package/cjs/utils/message/getOutgoingMessageState.js +0 -7
  550. package/cjs/utils/message/getOutgoingMessageState.js.map +1 -1
  551. package/cjs/utils/message/isVoiceMessage.js +2 -2
  552. package/cjs/utils/message/isVoiceMessage.js.map +1 -1
  553. package/cjs/{utils-e4cd6a0c.js → utils-7346a672.js} +1 -5
  554. package/cjs/{utils-e4cd6a0c.js.map → utils-7346a672.js.map} +1 -1
  555. package/cjs/{utils-de779857.js → utils-93739833.js} +2 -7
  556. package/cjs/utils-93739833.js.map +1 -0
  557. package/cjs/{utils-5ca88bb6.js → utils-a82eaed9.js} +1 -1
  558. package/cjs/{utils-5ca88bb6.js.map → utils-a82eaed9.js.map} +1 -1
  559. package/cjs/{utils-5905fc1a.js → utils-dd55b959.js} +1 -4
  560. package/cjs/utils-dd55b959.js.map +1 -0
  561. package/cjs/{uuid-26b61f16.js → uuid-a8af0c03.js} +1 -3
  562. package/cjs/{uuid-26b61f16.js.map → uuid-a8af0c03.js.map} +1 -1
  563. package/cjs/withSendbird.js +5 -7
  564. package/cjs/withSendbird.js.map +1 -1
  565. package/{color-f6e2214f.js → color-2037c3b8.js} +1 -10
  566. package/{color-f6e2214f.js.map → color-2037c3b8.js.map} +1 -1
  567. package/{compareIds-d958887d.js → compareIds-b858e41a.js} +4 -5
  568. package/compareIds-b858e41a.js.map +1 -0
  569. package/{const-735bcf5b.js → const-10a01327.js} +1 -2
  570. package/{const-735bcf5b.js.map → const-10a01327.js.map} +1 -1
  571. package/{const-c7334190.js → const-85ec8faf.js} +1 -1
  572. package/{const-c7334190.js.map → const-85ec8faf.js.map} +1 -1
  573. package/{consts-ddb92249.js → consts-3fe926ac.js} +1 -1
  574. package/{consts-ddb92249.js.map → consts-3fe926ac.js.map} +1 -1
  575. package/{consts-8f50899e.js → consts-89b1e965.js} +1 -1
  576. package/{consts-8f50899e.js.map → consts-89b1e965.js.map} +1 -1
  577. package/{consts-12512664.js → consts-ef58410d.js} +1 -1
  578. package/{consts-12512664.js.map → consts-ef58410d.js.map} +1 -1
  579. package/{consts-9422accf.js → consts-f3b2a046.js} +8 -11
  580. package/{consts-9422accf.js.map → consts-f3b2a046.js.map} +1 -1
  581. package/{context-7465b898.js → context-8436b333.js} +2 -2
  582. package/{context-7465b898.js.map → context-8436b333.js.map} +1 -1
  583. package/dist/index.css +2 -1
  584. package/dist/index.css.map +1 -1
  585. package/handlers/OpenChannelHandler.js.map +1 -1
  586. package/handlers/SessionHandler.js.map +1 -1
  587. package/{index-0ecbda20.js → index-10da4b99.js} +21 -22
  588. package/index-10da4b99.js.map +1 -0
  589. package/index-23251a75.js +39 -0
  590. package/index-23251a75.js.map +1 -0
  591. package/{index-4c3eaeb7.js → index-2f83ba2a.js} +2 -2
  592. package/{index-4c3eaeb7.js.map → index-2f83ba2a.js.map} +1 -1
  593. package/index-390c0bba.js +53 -0
  594. package/index-390c0bba.js.map +1 -0
  595. package/{index-a52a0b76.js → index-4a1325ab.js} +13 -32
  596. package/index-4a1325ab.js.map +1 -0
  597. package/{index-437c0f3c.js → index-5cbdbcf9.js} +30 -44
  598. package/index-5cbdbcf9.js.map +1 -0
  599. package/{index-63e7b57b.js → index-84b28e71.js} +18 -27
  600. package/index-84b28e71.js.map +1 -0
  601. package/{index-cf141ad7.js → index-8b3cd0b6.js} +1 -1
  602. package/{index-cf141ad7.js.map → index-8b3cd0b6.js.map} +1 -1
  603. package/{index-aced8439.js → index-8d6fa44a.js} +2 -2
  604. package/{index-aced8439.js.map → index-8d6fa44a.js.map} +1 -1
  605. package/{index-8e901b57.js → index-8efe881f.js} +2 -22
  606. package/{index-8e901b57.js.map → index-8efe881f.js.map} +1 -1
  607. package/{index-6e33b2e0.js → index-b41d07df.js} +3 -3
  608. package/{index-6e33b2e0.js.map → index-b41d07df.js.map} +1 -1
  609. package/{index-12c44496.js → index-d5a761b9.js} +1 -1
  610. package/{index-12c44496.js.map → index-d5a761b9.js.map} +1 -1
  611. package/{index-9626a87e.js → index-e01f2743.js} +25 -52
  612. package/index-e01f2743.js.map +1 -0
  613. package/{index-47d179f2.js → index-e0325c33.js} +23 -27
  614. package/index-e0325c33.js.map +1 -0
  615. package/{index-7b8ea67e.js → index-f0fa0260.js} +17 -33
  616. package/index-f0fa0260.js.map +1 -0
  617. package/{index-83ae3ffe.js → index-f87c5aab.js} +38 -142
  618. package/index-f87c5aab.js.map +1 -0
  619. package/index.d.ts +1 -1
  620. package/index.js +49 -49
  621. package/lame.all.js.map +1 -1
  622. package/package.json +4 -2
  623. package/sendbirdSelectors.js +36 -94
  624. package/sendbirdSelectors.js.map +1 -1
  625. package/{stringSet-7c7d84fc.js → stringSet-fa7e0d83.js} +2 -1
  626. package/stringSet-fa7e0d83.js.map +1 -0
  627. package/{tokenize-8f238f49.js → tokenize-7bcc2072.js} +30 -24
  628. package/tokenize-7bcc2072.js.map +1 -0
  629. package/{topics-4697c2b3.js → topics-2647294d.js} +1 -1
  630. package/topics-2647294d.js.map +1 -0
  631. package/{tslib.es6-209c9f08.js → tslib.es6-debac48c.js} +2 -2
  632. package/tslib.es6-debac48c.js.map +1 -0
  633. package/{types-41ea68c8.js → types-abb04b7a.js} +1 -1
  634. package/types-abb04b7a.js.map +1 -0
  635. package/ui/Accordion.js +12 -16
  636. package/ui/Accordion.js.map +1 -1
  637. package/ui/AccordionGroup.js +6 -8
  638. package/ui/AccordionGroup.js.map +1 -1
  639. package/ui/AdminMessage.js +5 -8
  640. package/ui/AdminMessage.js.map +1 -1
  641. package/ui/Avatar.js +23 -41
  642. package/ui/Avatar.js.map +1 -1
  643. package/ui/Badge.js +9 -9
  644. package/ui/Badge.js.map +1 -1
  645. package/ui/BottomSheet.js +5 -7
  646. package/ui/BottomSheet.js.map +1 -1
  647. package/ui/Button.js +13 -24
  648. package/ui/Button.js.map +1 -1
  649. package/ui/ChannelAvatar.js +9 -9
  650. package/ui/ChannelAvatar.js.map +1 -1
  651. package/ui/Checkbox.js +8 -10
  652. package/ui/Checkbox.js.map +1 -1
  653. package/ui/ConnectionStatus.js +4 -4
  654. package/ui/ConnectionStatus.js.map +1 -1
  655. package/ui/ContextMenu.js +40 -86
  656. package/ui/ContextMenu.js.map +1 -1
  657. package/ui/DateSeparator.js +9 -9
  658. package/ui/DateSeparator.js.map +1 -1
  659. package/ui/EmojiReactions.js +19 -24
  660. package/ui/EmojiReactions.js.map +1 -1
  661. package/ui/FileMessageItemBody.js +15 -16
  662. package/ui/FileMessageItemBody.js.map +1 -1
  663. package/ui/FileViewer.js +22 -23
  664. package/ui/FileViewer.js.map +1 -1
  665. package/ui/Icon.js +0 -241
  666. package/ui/Icon.js.map +1 -1
  667. package/ui/IconButton.js +19 -22
  668. package/ui/IconButton.js.map +1 -1
  669. package/ui/ImageRenderer.js +27 -30
  670. package/ui/ImageRenderer.js.map +1 -1
  671. package/ui/Input.js +8 -10
  672. package/ui/Input.js.map +1 -1
  673. package/ui/Label.js +2 -2
  674. package/ui/LinkLabel.js +4 -3
  675. package/ui/LinkLabel.js.map +1 -1
  676. package/ui/Loader.js +7 -7
  677. package/ui/Loader.js.map +1 -1
  678. package/ui/MentionLabel.js +16 -22
  679. package/ui/MentionLabel.js.map +1 -1
  680. package/ui/MentionUserLabel.js +7 -7
  681. package/ui/MentionUserLabel.js.map +1 -1
  682. package/ui/MessageContent.js +118 -137
  683. package/ui/MessageContent.js.map +1 -1
  684. package/ui/MessageInput.js +82 -134
  685. package/ui/MessageInput.js.map +1 -1
  686. package/ui/MessageItemMenu.js +25 -31
  687. package/ui/MessageItemMenu.js.map +1 -1
  688. package/ui/MessageItemReactionMenu.js +12 -16
  689. package/ui/MessageItemReactionMenu.js.map +1 -1
  690. package/ui/MessageSearchFileItem.js +22 -30
  691. package/ui/MessageSearchFileItem.js.map +1 -1
  692. package/ui/MessageSearchItem.js +18 -24
  693. package/ui/MessageSearchItem.js.map +1 -1
  694. package/ui/MessageStatus.js +10 -10
  695. package/ui/Modal.js +33 -34
  696. package/ui/Modal.js.map +1 -1
  697. package/ui/MutedAvatarOverlay.js +3 -3
  698. package/ui/MutedAvatarOverlay.js.map +1 -1
  699. package/ui/OGMessageItemBody.js +27 -30
  700. package/ui/OGMessageItemBody.js.map +1 -1
  701. package/ui/OpenChannelAdminMessage.js +4 -4
  702. package/ui/OpenChannelAdminMessage.js.map +1 -1
  703. package/ui/OpenChannelAvatar.js +11 -11
  704. package/ui/OpenChannelAvatar.js.map +1 -1
  705. package/ui/OpenchannelConversationHeader.js +10 -10
  706. package/ui/OpenchannelConversationHeader.js.map +1 -1
  707. package/ui/OpenchannelFileMessage.js +31 -44
  708. package/ui/OpenchannelFileMessage.js.map +1 -1
  709. package/ui/OpenchannelOGMessage.js +39 -53
  710. package/ui/OpenchannelOGMessage.js.map +1 -1
  711. package/ui/OpenchannelThumbnailMessage.js +36 -46
  712. package/ui/OpenchannelThumbnailMessage.js.map +1 -1
  713. package/ui/OpenchannelUserMessage.js +39 -49
  714. package/ui/OpenchannelUserMessage.js.map +1 -1
  715. package/ui/PlaceHolder.js +6 -6
  716. package/ui/PlaybackTime.js +8 -8
  717. package/ui/PlaybackTime.js.map +1 -1
  718. package/ui/ProgressBar.js +8 -8
  719. package/ui/ProgressBar.js.map +1 -1
  720. package/ui/QuoteMessage.js +16 -20
  721. package/ui/QuoteMessage.js.map +1 -1
  722. package/ui/QuoteMessageInput.js +8 -11
  723. package/ui/QuoteMessageInput.js.map +1 -1
  724. package/ui/ReactionBadge.js +13 -17
  725. package/ui/ReactionBadge.js.map +1 -1
  726. package/ui/ReactionButton.js +8 -8
  727. package/ui/ReactionButton.js.map +1 -1
  728. package/ui/SortByRow.js +7 -11
  729. package/ui/SortByRow.js.map +1 -1
  730. package/ui/TextButton.js +12 -12
  731. package/ui/TextButton.js.map +1 -1
  732. package/ui/TextMessageItemBody.js +23 -24
  733. package/ui/TextMessageItemBody.js.map +1 -1
  734. package/ui/ThreadReplies.js +10 -11
  735. package/ui/ThreadReplies.js.map +1 -1
  736. package/ui/ThumbnailMessageItemBody.js +17 -20
  737. package/ui/ThumbnailMessageItemBody.js.map +1 -1
  738. package/ui/Tooltip.js +6 -6
  739. package/ui/Tooltip.js.map +1 -1
  740. package/ui/TooltipWrapper.js +6 -8
  741. package/ui/TooltipWrapper.js.map +1 -1
  742. package/ui/UnknownMessageItemBody.js +13 -14
  743. package/ui/UnknownMessageItemBody.js.map +1 -1
  744. package/ui/UserListItem.js +28 -27
  745. package/ui/UserListItem.js.map +1 -1
  746. package/ui/UserProfile.js +15 -17
  747. package/ui/UserProfile.js.map +1 -1
  748. package/ui/VoiceMessageItemBody.js +24 -32
  749. package/ui/VoiceMessageItemBody.js.map +1 -1
  750. package/ui/VoiceMessgeInput.js +8 -8
  751. package/ui/Word.js +19 -30
  752. package/ui/Word.js.map +1 -1
  753. package/{useLongPress-e2570976.js → useLongPress-42dc7c5d.js} +13 -31
  754. package/useLongPress-42dc7c5d.js.map +1 -0
  755. package/useSendbirdStateContext.js +1 -2
  756. package/useSendbirdStateContext.js.map +1 -1
  757. package/utils/message/getOutgoingMessageState.js +0 -7
  758. package/utils/message/getOutgoingMessageState.js.map +1 -1
  759. package/utils/message/isVoiceMessage.js +2 -2
  760. package/utils/message/isVoiceMessage.js.map +1 -1
  761. package/{utils-4942106c.js → utils-1905e84d.js} +2 -7
  762. package/utils-1905e84d.js.map +1 -0
  763. package/{utils-3d03001e.js → utils-19ce54ee.js} +1 -5
  764. package/{utils-3d03001e.js.map → utils-19ce54ee.js.map} +1 -1
  765. package/{utils-04bd857d.js → utils-87be98af.js} +1 -1
  766. package/{utils-04bd857d.js.map → utils-87be98af.js.map} +1 -1
  767. package/{utils-12a3467f.js → utils-b568cd44.js} +1 -4
  768. package/utils-b568cd44.js.map +1 -0
  769. package/{uuid-31c6ecb2.js → uuid-e979d613.js} +1 -3
  770. package/{uuid-31c6ecb2.js.map → uuid-e979d613.js.map} +1 -1
  771. package/withSendbird.js +5 -7
  772. package/withSendbird.js.map +1 -1
  773. package/ChannelListProvider-10fe7340.js.map +0 -1
  774. package/ChannelProvider-4ac82784.js.map +0 -1
  775. package/MediaQueryContext-e791a4d1.js.map +0 -1
  776. package/MemberList-6f3c8288.js.map +0 -1
  777. package/OpenChannelListProvider-eb189b41.js.map +0 -1
  778. package/OpenChannelProvider-e418b369.js.map +0 -1
  779. package/ThreadProvider-faf3df5d.js.map +0 -1
  780. package/VoiceMessageInputWrapper-59373f20.js.map +0 -1
  781. package/_rollupPluginBabelHelpers-e908c50d.js.map +0 -1
  782. package/actionTypes-ee7f96a9.js +0 -6
  783. package/actionTypes-ee7f96a9.js.map +0 -1
  784. package/cjs/ChannelListProvider-d4f91fc4.js.map +0 -1
  785. package/cjs/ChannelProvider-af0b997c.js.map +0 -1
  786. package/cjs/MediaQueryContext-4978c777.js.map +0 -1
  787. package/cjs/MemberList-5c05b62f.js.map +0 -1
  788. package/cjs/OpenChannelListProvider-3be4b8a5.js.map +0 -1
  789. package/cjs/OpenChannelProvider-56af9a0e.js.map +0 -1
  790. package/cjs/ThreadProvider-12784adf.js.map +0 -1
  791. package/cjs/VoiceMessageInputWrapper-3b5db880.js.map +0 -1
  792. package/cjs/_rollupPluginBabelHelpers-994cd1da.js.map +0 -1
  793. package/cjs/actionTypes-38d53eaf.js +0 -10
  794. package/cjs/actionTypes-38d53eaf.js.map +0 -1
  795. package/cjs/color-8f9fe57f.js.map +0 -1
  796. package/cjs/compareIds-b77b66f3.js.map +0 -1
  797. package/cjs/index-1e57cbdb.js.map +0 -1
  798. package/cjs/index-603c2a7c.js.map +0 -1
  799. package/cjs/index-72fd0294.js.map +0 -1
  800. package/cjs/index-a7fa406f.js.map +0 -1
  801. package/cjs/index-aa908fcf.js.map +0 -1
  802. package/cjs/index-aeba3b06.js.map +0 -1
  803. package/cjs/index-b9fbe704.js.map +0 -1
  804. package/cjs/index-c825cf5b.js.map +0 -1
  805. package/cjs/index-d41db9c1.js.map +0 -1
  806. package/cjs/stringSet-7330b627.js.map +0 -1
  807. package/cjs/tokenize-a5a20ef3.js.map +0 -1
  808. package/cjs/topics-7547922a.js.map +0 -1
  809. package/cjs/tslib.es6-ee1122c5.js.map +0 -1
  810. package/cjs/types-7daeb4a1.js.map +0 -1
  811. package/cjs/useLongPress-3e3b1188.js.map +0 -1
  812. package/cjs/utils-5905fc1a.js.map +0 -1
  813. package/cjs/utils-de779857.js.map +0 -1
  814. package/compareIds-d958887d.js.map +0 -1
  815. package/index-0ecbda20.js.map +0 -1
  816. package/index-437c0f3c.js.map +0 -1
  817. package/index-47d179f2.js.map +0 -1
  818. package/index-63e7b57b.js.map +0 -1
  819. package/index-7b8ea67e.js.map +0 -1
  820. package/index-83ae3ffe.js.map +0 -1
  821. package/index-9626a87e.js.map +0 -1
  822. package/index-a52a0b76.js.map +0 -1
  823. package/index-ace292c2.js +0 -57
  824. package/index-ace292c2.js.map +0 -1
  825. package/stringSet-7c7d84fc.js.map +0 -1
  826. package/tokenize-8f238f49.js.map +0 -1
  827. package/topics-4697c2b3.js.map +0 -1
  828. package/tslib.es6-209c9f08.js.map +0 -1
  829. package/types-41ea68c8.js.map +0 -1
  830. package/useLongPress-e2570976.js.map +0 -1
  831. package/utils-12a3467f.js.map +0 -1
  832. package/utils-4942106c.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import 'react';
2
- export { V as VoicePlayerProvider, u as useVoicePlayerContext } from '../index-9626a87e.js';
3
- import '../consts-9422accf.js';
2
+ export { V as VoicePlayerProvider, u as useVoicePlayerContext } from '../index-e01f2743.js';
3
+ import '../consts-f3b2a046.js';
4
4
  import '../useSendbirdStateContext.js';
5
- import '../tslib.es6-209c9f08.js';
5
+ import '../tslib.es6-debac48c.js';
6
6
  import '../withSendbird.js';
7
7
  //# sourceMappingURL=context.js.map
@@ -1,46 +1,39 @@
1
1
  import { useState, useEffect } from 'react';
2
- import { u as useVoicePlayerContext, A as AudioUnitDefaultValue } from '../index-9626a87e.js';
3
- import { g as VOICE_PLAYER_AUDIO_ID } from '../consts-9422accf.js';
2
+ import { u as useVoicePlayerContext, A as AudioUnitDefaultValue } from '../index-e01f2743.js';
3
+ import { g as VOICE_PLAYER_AUDIO_ID } from '../consts-f3b2a046.js';
4
4
  import { useVoiceRecorderContext } from '../VoiceRecorder/context.js';
5
- import '../tslib.es6-209c9f08.js';
5
+ import '../tslib.es6-debac48c.js';
6
6
  import '../useSendbirdStateContext.js';
7
7
  import '../withSendbird.js';
8
- import '../lame.all.js';
9
8
 
10
9
  var generateGroupKey = function (channelUrl, key) {
11
10
  if (channelUrl === void 0) {
12
11
  channelUrl = '';
13
12
  }
14
-
15
13
  if (key === void 0) {
16
14
  key = '';
17
15
  }
18
-
19
16
  return "".concat(channelUrl, "-").concat(key);
20
17
  };
21
18
 
22
19
  var useVoicePlayer = function (_a) {
23
20
  var _b;
24
-
25
21
  var _c = _a.key,
26
- key = _c === void 0 ? '' : _c,
27
- _d = _a.channelUrl,
28
- channelUrl = _d === void 0 ? '' : _d,
29
- _e = _a.audioFile,
30
- audioFile = _e === void 0 ? null : _e,
31
- _f = _a.audioFileUrl,
32
- audioFileUrl = _f === void 0 ? '' : _f;
22
+ key = _c === void 0 ? '' : _c,
23
+ _d = _a.channelUrl,
24
+ channelUrl = _d === void 0 ? '' : _d,
25
+ _e = _a.audioFile,
26
+ audioFile = _e === void 0 ? null : _e,
27
+ _f = _a.audioFileUrl,
28
+ audioFileUrl = _f === void 0 ? '' : _f;
33
29
  var groupKey = useState(generateGroupKey(channelUrl, key))[0];
34
-
35
30
  var _g = useVoicePlayerContext(),
36
- play = _g.play,
37
- pause = _g.pause,
38
- stop = _g.stop,
39
- voicePlayerStore = _g.voicePlayerStore;
40
-
31
+ play = _g.play,
32
+ pause = _g.pause,
33
+ stop = _g.stop,
34
+ voicePlayerStore = _g.voicePlayerStore;
41
35
  var isRecordable = useVoiceRecorderContext().isRecordable;
42
36
  var currentAudioUnit = ((_b = voicePlayerStore === null || voicePlayerStore === void 0 ? void 0 : voicePlayerStore.audioStorage) === null || _b === void 0 ? void 0 : _b[groupKey]) || AudioUnitDefaultValue();
43
-
44
37
  var playVoicePlayer = function () {
45
38
  if (!isRecordable) {
46
39
  play === null || play === void 0 ? void 0 : play({
@@ -50,23 +43,18 @@ var useVoicePlayer = function (_a) {
50
43
  });
51
44
  }
52
45
  };
53
-
54
46
  var pauseVoicePlayer = function () {
55
47
  pause === null || pause === void 0 ? void 0 : pause(groupKey);
56
48
  };
57
-
58
49
  var stopVoicePlayer = function (text) {
59
50
  if (text === void 0) {
60
51
  text = '';
61
52
  }
62
-
63
53
  stop === null || stop === void 0 ? void 0 : stop(text);
64
54
  };
65
-
66
55
  useEffect(function () {
67
56
  return function () {
68
57
  var _a;
69
-
70
58
  if (audioFile || audioFileUrl) {
71
59
  // Can't get the current AudioPlayer through the React hooks(useReducer or useState) in this scope
72
60
  var voiceAudioPlayerElement = document.getElementById(VOICE_PLAYER_AUDIO_ID);
@@ -1 +1 @@
1
- {"version":3,"file":"useVoicePlayer.js","sources":["../../src/hooks/VoicePlayer/utils.ts","../../src/hooks/VoicePlayer/useVoicePlayer.tsx"],"sourcesContent":["export type GroupKey = string;\nexport const generateGroupKey = (channelUrl = '', key = ''): GroupKey => (`${channelUrl}-${key}`);\n","import { useEffect, useState } from \"react\";\nimport { useVoicePlayerContext } from \".\";\nimport { VOICE_PLAYER_AUDIO_ID } from \"../../utils/consts\";\nimport { useVoiceRecorderContext } from \"../VoiceRecorder\";\n\nimport { AudioUnitDefaultValue, VoicePlayerStatus } from \"./dux/initialState\";\nimport { generateGroupKey } from \"./utils\";\n\nexport interface UseVoicePlayerProps {\n key: string;\n channelUrl: string;\n audioFile?: File;\n audioFileUrl?: string;\n}\n\nexport interface UseVoicePlayerContext {\n play: () => void;\n pause: () => void;\n stop: (text?: string) => void;\n playbackTime: number;\n duration: number;\n playingStatus: VoicePlayerStatus;\n}\n\nexport const useVoicePlayer = ({\n key = '',\n channelUrl = '',\n audioFile = null,\n audioFileUrl = '',\n}: UseVoicePlayerProps): UseVoicePlayerContext => {\n const [groupKey] = useState<string>(generateGroupKey(channelUrl, key));\n const {\n play,\n pause,\n stop,\n voicePlayerStore,\n } = useVoicePlayerContext();\n const { isRecordable } = useVoiceRecorderContext();\n const currentAudioUnit = voicePlayerStore?.audioStorage?.[groupKey] || AudioUnitDefaultValue();\n\n const playVoicePlayer = () => {\n if (!isRecordable) {\n play?.({\n groupKey,\n audioFile,\n audioFileUrl,\n });\n }\n };\n\n const pauseVoicePlayer = () => {\n pause?.(groupKey);\n };\n\n const stopVoicePlayer = (text = '') => {\n stop?.(text);\n };\n\n useEffect(() => {\n return () => {\n if (audioFile || audioFileUrl) {\n // Can't get the current AudioPlayer through the React hooks(useReducer or useState) in this scope\n const voiceAudioPlayerElement = document.getElementById(VOICE_PLAYER_AUDIO_ID);\n (voiceAudioPlayerElement as HTMLAudioElement)?.pause?.();\n }\n }\n }, []);\n\n return ({\n play: playVoicePlayer,\n pause: pauseVoicePlayer,\n stop: stopVoicePlayer,\n playbackTime: currentAudioUnit?.playbackTime * 1000,\n duration: currentAudioUnit?.duration * 1000,\n // the unit of playbackTime and duration should be millisecond\n playingStatus: currentAudioUnit?.playingStatus,\n });\n};\n"],"names":["generateGroupKey","channelUrl","key","concat","useVoicePlayer","_a","_c","_d","_e","audioFile","_f","audioFileUrl","groupKey","useState","_g","useVoicePlayerContext","play","pause","stop","voicePlayerStore","isRecordable","useVoiceRecorderContext","currentAudioUnit","_b","audioStorage","AudioUnitDefaultValue","playVoicePlayer","pauseVoicePlayer","stopVoicePlayer","text","useEffect","voiceAudioPlayerElement","document","getElementById","VOICE_PLAYER_AUDIO_ID","playbackTime","duration","playingStatus"],"mappings":"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"}
1
+ {"version":3,"file":"useVoicePlayer.js","sources":["../../src/hooks/VoicePlayer/utils.ts","../../src/hooks/VoicePlayer/useVoicePlayer.tsx"],"sourcesContent":["export type GroupKey = string;\nexport const generateGroupKey = (channelUrl = '', key = ''): GroupKey => (`${channelUrl}-${key}`);\n","import { useEffect, useState } from 'react';\nimport { useVoicePlayerContext } from '.';\nimport { VOICE_PLAYER_AUDIO_ID } from '../../utils/consts';\nimport { useVoiceRecorderContext } from '../VoiceRecorder';\n\nimport { AudioUnitDefaultValue, VoicePlayerStatus } from './dux/initialState';\nimport { generateGroupKey } from './utils';\n\nexport interface UseVoicePlayerProps {\n key: string;\n channelUrl: string;\n audioFile?: File;\n audioFileUrl?: string;\n}\n\nexport interface UseVoicePlayerContext {\n play: () => void;\n pause: () => void;\n stop: (text?: string) => void;\n playbackTime: number;\n duration: number;\n playingStatus: VoicePlayerStatus;\n}\n\nexport const useVoicePlayer = ({\n key = '',\n channelUrl = '',\n audioFile = null,\n audioFileUrl = '',\n}: UseVoicePlayerProps): UseVoicePlayerContext => {\n const [groupKey] = useState<string>(generateGroupKey(channelUrl, key));\n const {\n play,\n pause,\n stop,\n voicePlayerStore,\n } = useVoicePlayerContext();\n const { isRecordable } = useVoiceRecorderContext();\n const currentAudioUnit = voicePlayerStore?.audioStorage?.[groupKey] || AudioUnitDefaultValue();\n\n const playVoicePlayer = () => {\n if (!isRecordable) {\n play?.({\n groupKey,\n audioFile,\n audioFileUrl,\n });\n }\n };\n\n const pauseVoicePlayer = () => {\n pause?.(groupKey);\n };\n\n const stopVoicePlayer = (text = '') => {\n stop?.(text);\n };\n\n useEffect(() => {\n return () => {\n if (audioFile || audioFileUrl) {\n // Can't get the current AudioPlayer through the React hooks(useReducer or useState) in this scope\n const voiceAudioPlayerElement = document.getElementById(VOICE_PLAYER_AUDIO_ID);\n (voiceAudioPlayerElement as HTMLAudioElement)?.pause?.();\n }\n }\n }, []);\n\n return ({\n play: playVoicePlayer,\n pause: pauseVoicePlayer,\n stop: stopVoicePlayer,\n playbackTime: currentAudioUnit?.playbackTime * 1000,\n duration: currentAudioUnit?.duration * 1000,\n // the unit of playbackTime and duration should be millisecond\n playingStatus: currentAudioUnit?.playingStatus,\n });\n};\n"],"names":["generateGroupKey","channelUrl","key","concat","useVoicePlayer","_a","_c","_d","_e","audioFile","_f","audioFileUrl","groupKey","useState","_g","useVoicePlayerContext","play","pause","stop","voicePlayerStore","isRecordable","useVoiceRecorderContext","currentAudioUnit","_b","audioStorage","AudioUnitDefaultValue","playVoicePlayer","pauseVoicePlayer","stopVoicePlayer","text","useEffect","voiceAudioPlayerElement","document","getElementById","VOICE_PLAYER_AUDIO_ID","playbackTime","duration","playingStatus"],"mappings":"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"}
@@ -1,162 +1,10 @@
1
- import React__default, { useState, useCallback, useContext, createContext } from 'react';
2
- import { WavHeader as $dd7ee3788d91dcb8$export$cb948f2d6837f136, Mp3Encoder as $dd7ee3788d91dcb8$export$9ca5d136ebf61cf2 } from '../lame.all.js';
3
- import { h as VOICE_RECORDER_MIME_TYPE, i as VOICE_RECORDER_AUDIO_BITS, b as VOICE_MESSAGE_FILE_NAME, c as VOICE_MESSAGE_MIME_TYPE } from '../consts-9422accf.js';
1
+ import React__default, { useState, useEffect, useCallback, useContext, createContext } from 'react';
2
+ import { h as VOICE_RECORDER_MIME_TYPE, i as VOICE_RECORDER_AUDIO_BITS, b as VOICE_MESSAGE_FILE_NAME, c as VOICE_MESSAGE_MIME_TYPE } from '../consts-f3b2a046.js';
4
3
  import useSendbirdStateContext from '../useSendbirdStateContext.js';
5
4
  import '../withSendbird.js';
6
- import '../tslib.es6-209c9f08.js';
7
-
8
- // Thanks to https://codesandbox.io/s/media-recorder-api-downsampling-16k-mp3-encode-using-lame-js-forked-n1pblw
9
-
10
- function encodeMp3(arrayBuffer) {
11
- var wav = $dd7ee3788d91dcb8$export$cb948f2d6837f136.readHeader(new DataView(arrayBuffer));
12
- var dataView = new Int16Array(arrayBuffer, wav.dataOffset, wav.dataLen / 2);
13
- var mp3Encoder = new $dd7ee3788d91dcb8$export$9ca5d136ebf61cf2(wav.channels, wav.sampleRate, 128);
14
- var maxSamples = 1152;
15
- var samplesLeft = wav.channels === 1 ? dataView : new Int16Array(wav.dataLen / (2 * wav.channels));
16
- var samplesRight = wav.channels === 2 ? new Int16Array(wav.dataLen / (2 * wav.channels)) : undefined;
17
-
18
- if (wav.channels > 1) {
19
- for (var j = 0; j < samplesLeft.length; j++) {
20
- samplesLeft[j] = dataView[j * 2];
21
- samplesRight[j] = dataView[j * 2 + 1];
22
- }
23
- }
24
-
25
- var dataBuffer = [];
26
- var remaining = samplesLeft.length;
27
-
28
- for (var i = 0; remaining >= maxSamples; i += maxSamples) {
29
- var left = samplesLeft.subarray(i, i + maxSamples);
30
- var right = void 0;
31
-
32
- if (samplesRight) {
33
- right = samplesRight.subarray(i, i + maxSamples);
34
- }
35
-
36
- var mp3buf = mp3Encoder.encodeBuffer(left, right);
37
- dataBuffer.push(new Int8Array(mp3buf));
38
- remaining -= maxSamples;
39
- }
40
-
41
- var mp3Lastbuf = mp3Encoder.flush();
42
- dataBuffer.push(new Int8Array(mp3Lastbuf));
43
- return dataBuffer;
44
- } // Convert audioFile to arrayBuffer, because Mp3Encoder requires a parameter of ArrayBuffer type
45
-
46
-
47
- function downsampleToWav(file, callback) {
48
- //Browser compatibility
49
- // https://caniuse.com/?search=AudioContext
50
- var audioCtx = new AudioContext();
51
- var fileReader = new FileReader();
52
-
53
- fileReader.onload = function (ev) {
54
- // Decode audio
55
- audioCtx.decodeAudioData(ev.target.result, function (buffer) {
56
- // this is where you down sample the audio, usually is 44100 samples per second
57
- var usingWebkit = !window.OfflineAudioContext;
58
- var offlineAudioCtx = new OfflineAudioContext(1, 16000 * buffer.duration, 16000);
59
- var soundSource = offlineAudioCtx.createBufferSource();
60
- soundSource.buffer = buffer;
61
- soundSource.connect(offlineAudioCtx.destination);
62
- var reader = new FileReader();
63
-
64
- reader.onload = function () {
65
- var renderCompleteHandler = function (evt) {
66
- var renderedBuffer = usingWebkit ? evt.renderedBuffer : evt;
67
- var buffer = bufferToWav(renderedBuffer, renderedBuffer.length);
68
-
69
- if (callback) {
70
- callback(buffer);
71
- }
72
- };
73
-
74
- if (usingWebkit) {
75
- offlineAudioCtx.oncomplete = renderCompleteHandler;
76
- offlineAudioCtx.startRendering();
77
- } else {
78
- offlineAudioCtx.startRendering().then(renderCompleteHandler).catch(function (err) {
79
- return console.warn(err);
80
- });
81
- }
82
- };
83
-
84
- reader.readAsArrayBuffer(file);
85
- soundSource.start(0);
86
- });
87
- };
88
-
89
- fileReader.readAsArrayBuffer(file);
90
- }
91
-
92
- function bufferToWav(abuffer, len) {
93
- var numOfChan = abuffer.numberOfChannels;
94
- var length = len * numOfChan * 2 + 44;
95
- var buffer = new ArrayBuffer(length);
96
- var view = new DataView(buffer);
97
- var channels = [];
98
- var i = 0;
99
- var sample;
100
- var offset = 0;
101
- var pos = 0; // write WAVE header
102
-
103
- setUint32(0x46464952); // "RIFF"
104
-
105
- setUint32(length - 8); // file length - 8
106
-
107
- setUint32(0x45564157); // "WAVE"
108
-
109
- setUint32(0x20746d66); // "fmt " chunk
110
-
111
- setUint32(16); // length = 16
112
-
113
- setUint16(1); // PCM (uncompressed)
114
-
115
- setUint16(numOfChan);
116
- setUint32(abuffer.sampleRate);
117
- setUint32(abuffer.sampleRate * 2 * numOfChan); // avg. bytes/sec
118
-
119
- setUint16(numOfChan * 2); // block-align
120
-
121
- setUint16(16); // 16-bit (hardcoded in this demo)
122
-
123
- setUint32(0x61746164); // "data" - chunk
124
-
125
- setUint32(length - pos - 4); // chunk length
126
- // write interleaved data
127
-
128
- for (i = 0; i < abuffer.numberOfChannels; i++) channels.push(abuffer.getChannelData(i));
129
-
130
- while (pos < length) {
131
- for (i = 0; i < numOfChan; i++) {
132
- // interleave channels
133
- sample = Math.max(-1, Math.min(1, channels[i][offset])); // clamp
134
-
135
- sample = (0.5 + sample < 0 ? sample * 32768 : sample * 32767) | 0; // scale to 16-bit signed int
136
-
137
- view.setInt16(pos, sample, true); // write 16-bit sample
138
-
139
- pos += 2;
140
- }
141
-
142
- offset++; // next source sample
143
- }
144
-
145
- return buffer;
146
-
147
- function setUint16(data) {
148
- view.setUint16(pos, data, true);
149
- pos += 2;
150
- }
151
-
152
- function setUint32(data) {
153
- view.setUint32(pos, data, true);
154
- pos += 4;
155
- }
156
- }
5
+ import '../tslib.es6-debac48c.js';
157
6
 
158
7
  var noop = function () {};
159
-
160
8
  var VoiceRecorderContext = /*#__PURE__*/createContext({
161
9
  start: noop,
162
10
  stop: noop,
@@ -165,26 +13,35 @@ var VoiceRecorderContext = /*#__PURE__*/createContext({
165
13
  var VoiceRecorderProvider = function (props) {
166
14
  var children = props.children;
167
15
  var config = useSendbirdStateContext().config;
168
- var logger = config.logger;
169
-
16
+ var logger = config.logger,
17
+ isVoiceMessageEnabled = config.isVoiceMessageEnabled;
170
18
  var _a = useState(null),
171
- mediaRecorder = _a[0],
172
- setMediaRecorder = _a[1];
173
-
19
+ mediaRecorder = _a[0],
20
+ setMediaRecorder = _a[1];
174
21
  var _b = useState(false),
175
- isRecordable = _b[0],
176
- setIsRecordable = _b[1];
177
-
22
+ isRecordable = _b[0],
23
+ setIsRecordable = _b[1];
24
+ var _c = useState(null),
25
+ webAudioUtils = _c[0],
26
+ setWebAudioUtils = _c[1];
27
+ useEffect(function () {
28
+ if (isVoiceMessageEnabled && !webAudioUtils) {
29
+ import('../WebAudioUtils-f9237c94.js').then(function (data) {
30
+ setWebAudioUtils(data);
31
+ });
32
+ }
33
+ }, []);
178
34
  var start = useCallback(function (eventHandler) {
179
35
  var _a, _b;
180
-
36
+ if (isVoiceMessageEnabled && !webAudioUtils) {
37
+ logger.error('VoiceRecorder: Recording audio processor is being loaded.');
38
+ return;
39
+ }
181
40
  logger.info('VoiceRecorder: Start recording.');
182
-
183
41
  if (mediaRecorder) {
184
42
  stop();
185
43
  logger.info('VoiceRecorder: Previous mediaRecorder is stopped.');
186
44
  }
187
-
188
45
  (_b = (_a = navigator === null || navigator === void 0 ? void 0 : navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.getUserMedia) === null || _b === void 0 ? void 0 : _b.call(_a, {
189
46
  audio: true
190
47
  }).then(function (stream) {
@@ -194,17 +51,15 @@ var VoiceRecorderProvider = function (props) {
194
51
  mimeType: VOICE_RECORDER_MIME_TYPE,
195
52
  audioBitsPerSecond: VOICE_RECORDER_AUDIO_BITS
196
53
  });
197
-
198
54
  mediaRecorder.ondataavailable = function (e) {
199
55
  var _a, _b, _c;
200
-
201
56
  logger.info('VoiceRecorder: Succeeded getting an available data.', e.data);
202
57
  var audioFile = new File([e.data], VOICE_MESSAGE_FILE_NAME, {
203
58
  lastModified: new Date().getTime(),
204
59
  type: VOICE_MESSAGE_MIME_TYPE
205
60
  });
206
- downsampleToWav(audioFile, function (buffer) {
207
- var mp3Buffer = encodeMp3(buffer);
61
+ webAudioUtils === null || webAudioUtils === void 0 ? void 0 : webAudioUtils.downsampleToWav(audioFile, function (buffer) {
62
+ var mp3Buffer = webAudioUtils === null || webAudioUtils === void 0 ? void 0 : webAudioUtils.encodeMp3(buffer);
208
63
  var mp3blob = new Blob(mp3Buffer, {
209
64
  type: VOICE_MESSAGE_MIME_TYPE
210
65
  });
@@ -220,7 +75,6 @@ var VoiceRecorderProvider = function (props) {
220
75
  });
221
76
  setIsRecordable(false);
222
77
  };
223
-
224
78
  mediaRecorder === null || mediaRecorder === void 0 ? void 0 : mediaRecorder.start();
225
79
  setMediaRecorder(mediaRecorder);
226
80
  eventHandler === null || eventHandler === void 0 ? void 0 : eventHandler.onRecordingStarted();
@@ -228,7 +82,7 @@ var VoiceRecorderProvider = function (props) {
228
82
  logger.error('VoiceRecorder: Failed getting media stream.', err);
229
83
  setMediaRecorder(null);
230
84
  });
231
- }, [mediaRecorder]);
85
+ }, [mediaRecorder, webAudioUtils]);
232
86
  var stop = useCallback(function () {
233
87
  // Stop recording
234
88
  mediaRecorder === null || mediaRecorder === void 0 ? void 0 : mediaRecorder.stop();
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sources":["../../src/hooks/VoiceRecorder/WebAudioUtils.ts","../../src/hooks/VoiceRecorder/index.tsx"],"sourcesContent":["// Thanks to https://codesandbox.io/s/media-recorder-api-downsampling-16k-mp3-encode-using-lame-js-forked-n1pblw\nimport { WavHeader, Mp3Encoder } from \"../../_externals/lamejs/lame.all.js\";\n\nfunction encodeMp3(arrayBuffer: ArrayBuffer): WavHeader {\n const wav = WavHeader.readHeader(new DataView(arrayBuffer));\n const dataView = new Int16Array(arrayBuffer, wav.dataOffset, wav.dataLen / 2);\n const mp3Encoder = new Mp3Encoder(wav.channels, wav.sampleRate, 128);\n const maxSamples = 1152;\n\n const samplesLeft = (wav.channels === 1) ? dataView : new Int16Array(wav.dataLen / (2 * wav.channels));\n const samplesRight = (wav.channels === 2) ? new Int16Array(wav.dataLen / (2 * wav.channels)) : undefined;\n\n if (wav.channels > 1) {\n for (let j = 0; j < samplesLeft.length; j++) {\n samplesLeft[j] = dataView[j * 2];\n samplesRight[j] = dataView[j * 2 + 1];\n }\n }\n\n const dataBuffer = [];\n let remaining = samplesLeft.length;\n for (let i = 0; remaining >= maxSamples; i += maxSamples) {\n const left = samplesLeft.subarray(i, i + maxSamples);\n let right;\n if (samplesRight) {\n right = samplesRight.subarray(i, i + maxSamples);\n }\n const mp3buf = mp3Encoder.encodeBuffer(left, right);\n dataBuffer.push(new Int8Array(mp3buf));\n remaining -= maxSamples;\n }\n\n const mp3Lastbuf = mp3Encoder.flush();\n dataBuffer.push(new Int8Array(mp3Lastbuf));\n return dataBuffer;\n}\n\n// Convert audioFile to arrayBuffer, because Mp3Encoder requires a parameter of ArrayBuffer type\nfunction downsampleToWav(file: File, callback: (buffer: ArrayBuffer) => void): void {\n //Browser compatibility\n // https://caniuse.com/?search=AudioContext\n const audioCtx = new AudioContext();\n const fileReader = new FileReader();\n fileReader.onload = function (ev) {\n // Decode audio\n audioCtx.decodeAudioData(ev.target.result as ArrayBuffer, (buffer) => {\n // this is where you down sample the audio, usually is 44100 samples per second\n const usingWebkit = !window.OfflineAudioContext;\n const offlineAudioCtx = new OfflineAudioContext(1, 16000 * buffer.duration, 16000);\n\n const soundSource = offlineAudioCtx.createBufferSource();\n soundSource.buffer = buffer;\n soundSource.connect(offlineAudioCtx.destination);\n\n const reader = new FileReader();\n reader.onload = function () {\n const renderCompleteHandler = (evt): void => {\n const renderedBuffer = usingWebkit ? evt.renderedBuffer : evt;\n const buffer = bufferToWav(renderedBuffer, renderedBuffer.length);\n if (callback) {\n callback(buffer);\n }\n };\n if (usingWebkit) {\n offlineAudioCtx.oncomplete = renderCompleteHandler;\n offlineAudioCtx.startRendering();\n } else {\n offlineAudioCtx\n .startRendering()\n .then(renderCompleteHandler)\n .catch((err) => console.warn(err));\n }\n };\n reader.readAsArrayBuffer(file);\n soundSource.start(0);\n });\n };\n fileReader.readAsArrayBuffer(file);\n}\n\nfunction bufferToWav(abuffer, len) {\n const numOfChan = abuffer.numberOfChannels;\n const length = len * numOfChan * 2 + 44;\n const buffer = new ArrayBuffer(length);\n const view = new DataView(buffer);\n const channels = [];\n let i = 0;\n let sample;\n let offset = 0;\n let pos = 0;\n\n // write WAVE header\n setUint32(0x46464952); // \"RIFF\"\n setUint32(length - 8); // file length - 8\n setUint32(0x45564157); // \"WAVE\"\n setUint32(0x20746d66); // \"fmt \" chunk\n setUint32(16); // length = 16\n setUint16(1); // PCM (uncompressed)\n setUint16(numOfChan);\n setUint32(abuffer.sampleRate);\n setUint32(abuffer.sampleRate * 2 * numOfChan); // avg. bytes/sec\n setUint16(numOfChan * 2); // block-align\n setUint16(16); // 16-bit (hardcoded in this demo)\n setUint32(0x61746164); // \"data\" - chunk\n setUint32(length - pos - 4); // chunk length\n // write interleaved data\n for (i = 0; i < abuffer.numberOfChannels; i++)\n channels.push(abuffer.getChannelData(i));\n\n while (pos < length) {\n for (i = 0; i < numOfChan; i++) {\n // interleave channels\n sample = Math.max(-1, Math.min(1, channels[i][offset])); // clamp\n sample = (0.5 + sample < 0 ? sample * 32768 : sample * 32767) | 0; // scale to 16-bit signed int\n view.setInt16(pos, sample, true); // write 16-bit sample\n pos += 2;\n }\n offset++; // next source sample\n }\n\n return buffer;\n\n function setUint16(data) {\n view.setUint16(pos, data, true);\n pos += 2;\n }\n\n function setUint32(data) {\n view.setUint32(pos, data, true);\n pos += 4;\n }\n}\n\nexport { downsampleToWav, encodeMp3 };\n","import React, { createContext, useCallback, useContext, useState } from 'react';\nimport { downsampleToWav, encodeMp3 } from './WebAudioUtils';\nimport {\n VOICE_MESSAGE_FILE_NAME,\n VOICE_MESSAGE_MIME_TYPE,\n VOICE_RECORDER_AUDIO_BITS,\n VOICE_RECORDER_MIME_TYPE,\n} from '../../utils/consts';\nimport useSendbirdStateContext from '../useSendbirdStateContext';\n\n// Input props of VoiceRecorder\nexport interface VoiceRecorderProps {\n children: React.ReactElement;\n}\n\nexport interface VoiceRecorderEventHandler {\n onRecordingStarted?: () => void;\n onRecordingEnded?: (props: null | File) => void;\n}\n\n// Output of VoiceRecorder\nexport interface VoiceRecorderContext {\n start: (eventHandler?: VoiceRecorderEventHandler) => void,\n stop: () => void,\n isRecordable: boolean;\n}\nconst noop = () => {/* noop */ };\nconst VoiceRecorderContext = createContext<VoiceRecorderContext>({\n start: noop,\n stop: noop,\n isRecordable: false,\n});\n\nexport const VoiceRecorderProvider = (props: VoiceRecorderProps): React.ReactElement => {\n const { children } = props;\n const { config } = useSendbirdStateContext();\n const { logger } = config;\n const [mediaRecorder, setMediaRecorder] = useState<MediaRecorder>(null);\n const [isRecordable, setIsRecordable] = useState<boolean>(false);\n\n const start = useCallback((eventHandler: VoiceRecorderEventHandler): void => {\n logger.info('VoiceRecorder: Start recording.');\n if (mediaRecorder) {\n stop();\n logger.info('VoiceRecorder: Previous mediaRecorder is stopped.');\n }\n navigator?.mediaDevices?.getUserMedia?.({ audio: true })\n .then((stream) => {\n logger.info('VoiceRecorder: Succeeded getting media stream.', stream);\n setIsRecordable(true);\n const mediaRecorder = new MediaRecorder(stream, {\n mimeType: VOICE_RECORDER_MIME_TYPE,\n audioBitsPerSecond: VOICE_RECORDER_AUDIO_BITS,\n });\n mediaRecorder.ondataavailable = (e) => {// when recording stops\n logger.info('VoiceRecorder: Succeeded getting an available data.', e.data);\n const audioFile = new File([e.data], VOICE_MESSAGE_FILE_NAME, {\n lastModified: new Date().getTime(),\n type: VOICE_MESSAGE_MIME_TYPE,\n });\n downsampleToWav(audioFile, (buffer) => {\n const mp3Buffer = encodeMp3(buffer);\n const mp3blob = new Blob(mp3Buffer, { type: VOICE_MESSAGE_MIME_TYPE });\n const convertedAudioFile = new File([mp3blob], VOICE_MESSAGE_FILE_NAME, {\n lastModified: new Date().getTime(),\n type: VOICE_MESSAGE_MIME_TYPE,\n });\n eventHandler?.onRecordingEnded(convertedAudioFile);\n logger.info('VoiceRecorder: Succeeded converting audio file.', convertedAudioFile);\n });\n stream?.getAudioTracks?.().forEach?.(track => track?.stop());\n setIsRecordable(false);\n };\n mediaRecorder?.start();\n setMediaRecorder(mediaRecorder);\n eventHandler?.onRecordingStarted();\n })\n .catch((err) => {\n logger.error('VoiceRecorder: Failed getting media stream.', err);\n setMediaRecorder(null);\n });\n }, [mediaRecorder]);\n\n const stop = useCallback((): void => {\n // Stop recording\n mediaRecorder?.stop();\n setMediaRecorder(null);\n setIsRecordable(false);\n logger.info('VoiceRecorder: Stop recording.');\n }, [mediaRecorder]);\n\n return (\n <VoiceRecorderContext.Provider value={{\n start,\n stop,\n isRecordable,\n }}>\n {children}\n </VoiceRecorderContext.Provider>\n )\n};\n\nexport const useVoiceRecorderContext = (): VoiceRecorderContext => useContext(VoiceRecorderContext);\n\nexport default {\n VoiceRecorderProvider,\n useVoiceRecorderContext,\n};\n"],"names":["encodeMp3","arrayBuffer","wav","WavHeader","readHeader","DataView","dataView","Int16Array","dataOffset","dataLen","mp3Encoder","Mp3Encoder","channels","sampleRate","maxSamples","samplesLeft","samplesRight","undefined","j","length","dataBuffer","remaining","i","left","subarray","right","mp3buf","encodeBuffer","push","Int8Array","mp3Lastbuf","flush","downsampleToWav","file","callback","audioCtx","AudioContext","fileReader","FileReader","onload","ev","decodeAudioData","target","result","buffer","usingWebkit","window","OfflineAudioContext","offlineAudioCtx","duration","soundSource","createBufferSource","connect","destination","reader","renderCompleteHandler","evt","renderedBuffer","bufferToWav","oncomplete","startRendering","then","catch","err","console","warn","readAsArrayBuffer","start","abuffer","len","numOfChan","numberOfChannels","ArrayBuffer","view","sample","offset","pos","setUint32","setUint16","getChannelData","Math","max","min","setInt16","data","noop","VoiceRecorderContext","createContext","stop","isRecordable","VoiceRecorderProvider","props","children","config","useSendbirdStateContext","logger","_a","useState","mediaRecorder","setMediaRecorder","_b","setIsRecordable","useCallback","eventHandler","info","navigator","mediaDevices","getUserMedia","audio","stream","MediaRecorder","mimeType","VOICE_RECORDER_MIME_TYPE","audioBitsPerSecond","VOICE_RECORDER_AUDIO_BITS","ondataavailable","e","audioFile","File","VOICE_MESSAGE_FILE_NAME","lastModified","Date","getTime","type","VOICE_MESSAGE_MIME_TYPE","mp3Buffer","mp3blob","Blob","convertedAudioFile","onRecordingEnded","_c","getAudioTracks","call","forEach","track","onRecordingStarted","error","React","useVoiceRecorderContext","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sources":["../../src/hooks/VoiceRecorder/index.tsx"],"sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useState } from 'react';\nimport {\n VOICE_MESSAGE_FILE_NAME,\n VOICE_MESSAGE_MIME_TYPE,\n VOICE_RECORDER_AUDIO_BITS,\n VOICE_RECORDER_MIME_TYPE,\n} from '../../utils/consts';\nimport useSendbirdStateContext from '../useSendbirdStateContext';\n\n// Input props of VoiceRecorder\nexport interface VoiceRecorderProps {\n children: React.ReactElement;\n}\n\nexport interface VoiceRecorderEventHandler {\n onRecordingStarted?: () => void;\n onRecordingEnded?: (props: null | File) => void;\n}\n\n// Output of VoiceRecorder\nexport interface VoiceRecorderContext {\n start: (eventHandler?: VoiceRecorderEventHandler) => void,\n stop: () => void,\n isRecordable: boolean;\n}\nconst noop = () => { /* noop */ };\nconst VoiceRecorderContext = createContext<VoiceRecorderContext>({\n start: noop,\n stop: noop,\n isRecordable: false,\n});\n\nexport const VoiceRecorderProvider = (props: VoiceRecorderProps): React.ReactElement => {\n const { children } = props;\n const { config } = useSendbirdStateContext();\n const { logger, isVoiceMessageEnabled } = config;\n const [mediaRecorder, setMediaRecorder] = useState<MediaRecorder>(null);\n const [isRecordable, setIsRecordable] = useState<boolean>(false);\n\n const [webAudioUtils, setWebAudioUtils] = useState(null);\n useEffect(() => {\n if (isVoiceMessageEnabled && !webAudioUtils) {\n import('./WebAudioUtils').then((data) => {\n setWebAudioUtils(data);\n })\n }\n }, []);\n\n const start = useCallback((eventHandler: VoiceRecorderEventHandler): void => {\n if (isVoiceMessageEnabled && !webAudioUtils) {\n logger.error('VoiceRecorder: Recording audio processor is being loaded.');\n return;\n }\n\n logger.info('VoiceRecorder: Start recording.');\n if (mediaRecorder) {\n stop();\n logger.info('VoiceRecorder: Previous mediaRecorder is stopped.');\n }\n navigator?.mediaDevices?.getUserMedia?.({ audio: true })\n .then((stream) => {\n logger.info('VoiceRecorder: Succeeded getting media stream.', stream);\n setIsRecordable(true);\n const mediaRecorder = new MediaRecorder(stream, {\n mimeType: VOICE_RECORDER_MIME_TYPE,\n audioBitsPerSecond: VOICE_RECORDER_AUDIO_BITS,\n });\n mediaRecorder.ondataavailable = (e) => { // when recording stops\n logger.info('VoiceRecorder: Succeeded getting an available data.', e.data);\n const audioFile = new File([e.data], VOICE_MESSAGE_FILE_NAME, {\n lastModified: new Date().getTime(),\n type: VOICE_MESSAGE_MIME_TYPE,\n });\n webAudioUtils?.downsampleToWav(audioFile, (buffer) => {\n const mp3Buffer = webAudioUtils?.encodeMp3(buffer);\n const mp3blob = new Blob(mp3Buffer, { type: VOICE_MESSAGE_MIME_TYPE });\n const convertedAudioFile = new File([mp3blob], VOICE_MESSAGE_FILE_NAME, {\n lastModified: new Date().getTime(),\n type: VOICE_MESSAGE_MIME_TYPE,\n });\n eventHandler?.onRecordingEnded(convertedAudioFile);\n logger.info('VoiceRecorder: Succeeded converting audio file.', convertedAudioFile);\n });\n stream?.getAudioTracks?.().forEach?.(track => track?.stop());\n setIsRecordable(false);\n };\n mediaRecorder?.start();\n setMediaRecorder(mediaRecorder);\n eventHandler?.onRecordingStarted();\n })\n .catch((err) => {\n logger.error('VoiceRecorder: Failed getting media stream.', err);\n setMediaRecorder(null);\n });\n }, [mediaRecorder, webAudioUtils]);\n\n const stop = useCallback((): void => {\n // Stop recording\n mediaRecorder?.stop();\n setMediaRecorder(null);\n setIsRecordable(false);\n logger.info('VoiceRecorder: Stop recording.');\n }, [mediaRecorder]);\n\n return (\n <VoiceRecorderContext.Provider value={{\n start,\n stop,\n isRecordable,\n }}>\n {children}\n </VoiceRecorderContext.Provider>\n )\n};\n\nexport const useVoiceRecorderContext = (): VoiceRecorderContext => useContext(VoiceRecorderContext);\n\nexport default {\n VoiceRecorderProvider,\n useVoiceRecorderContext,\n};\n"],"names":["noop","VoiceRecorderContext","createContext","start","stop","isRecordable","VoiceRecorderProvider","props","children","config","useSendbirdStateContext","logger","isVoiceMessageEnabled","_a","useState","mediaRecorder","setMediaRecorder","_b","setIsRecordable","_c","webAudioUtils","setWebAudioUtils","useEffect","then","data","useCallback","eventHandler","error","info","navigator","mediaDevices","getUserMedia","audio","stream","MediaRecorder","mimeType","VOICE_RECORDER_MIME_TYPE","audioBitsPerSecond","VOICE_RECORDER_AUDIO_BITS","ondataavailable","e","audioFile","File","VOICE_MESSAGE_FILE_NAME","lastModified","Date","getTime","type","VOICE_MESSAGE_MIME_TYPE","downsampleToWav","buffer","mp3Buffer","encodeMp3","mp3blob","Blob","convertedAudioFile","onRecordingEnded","getAudioTracks","call","forEach","track","onRecordingStarted","catch","err","React","createElement","Provider","value","useVoiceRecorderContext","useContext"],"mappings":"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"}
@@ -1,45 +1,39 @@
1
1
  import { useState, useEffect, useCallback } from 'react';
2
2
  import { useVoiceRecorderContext } from './context.js';
3
3
  import useSendbirdStateContext from '../useSendbirdStateContext.js';
4
- import '../lame.all.js';
5
- import '../consts-9422accf.js';
4
+ import '../consts-f3b2a046.js';
6
5
  import '../withSendbird.js';
7
- import '../tslib.es6-209c9f08.js';
6
+ import '../tslib.es6-debac48c.js';
8
7
 
8
+ // export interface UseVoiceRecorderProps extends VoiceRecorderEventHandler {
9
9
  // /**
10
10
  // * onRecordingStarted
11
11
  // * onRecordingEnded
12
12
  // */
13
13
  // }
14
-
15
14
  var VoiceRecorderStatus = {
16
15
  PREPARING: 'PREPARING',
17
16
  READY_TO_RECORD: 'READY_TO_RECORD',
18
17
  RECORDING: 'RECORDING',
19
18
  COMPLETED: 'COMPLETED'
20
19
  };
21
-
22
20
  var noop = function () {};
23
-
24
21
  var useVoiceRecorder = function (_a) {
25
22
  var _b = _a.onRecordingStarted,
26
- onRecordingStarted = _b === void 0 ? noop : _b,
27
- _c = _a.onRecordingEnded,
28
- onRecordingEnded = _c === void 0 ? noop : _c;
23
+ onRecordingStarted = _b === void 0 ? noop : _b,
24
+ _c = _a.onRecordingEnded,
25
+ onRecordingEnded = _c === void 0 ? noop : _c;
29
26
  var config = useSendbirdStateContext().config;
30
27
  var voiceRecord = config.voiceRecord;
31
28
  var maxRecordingTime = voiceRecord.maxRecordingTime;
32
29
  var voiceRecorder = useVoiceRecorderContext();
33
30
  var isRecordable = voiceRecorder.isRecordable;
34
-
35
31
  var _d = useState(null),
36
- recordedFile = _d[0],
37
- setRecordedFile = _d[1];
38
-
32
+ recordedFile = _d[0],
33
+ setRecordedFile = _d[1];
39
34
  var _e = useState(VoiceRecorderStatus.PREPARING),
40
- recordingStatus = _e[0],
41
- setRecordingStatus = _e[1];
42
-
35
+ recordingStatus = _e[0],
36
+ setRecordingStatus = _e[1];
43
37
  useEffect(function () {
44
38
  if (isRecordable && recordingStatus === VoiceRecorderStatus.PREPARING) {
45
39
  setRecordingStatus(VoiceRecorderStatus.READY_TO_RECORD);
@@ -67,36 +61,30 @@ var useVoiceRecorder = function (_a) {
67
61
  var cancel = useCallback(function () {
68
62
  stop();
69
63
  setRecordedFile(null);
70
- }, [voiceRecorder]); // Timer
71
-
64
+ }, [voiceRecorder]);
65
+ // Timer
72
66
  var _f = useState(0),
73
- recordingTime = _f[0],
74
- setRecordingTime = _f[1];
75
-
67
+ recordingTime = _f[0],
68
+ setRecordingTime = _f[1];
76
69
  var timer = null;
77
-
78
70
  function startTimer() {
79
71
  stopTimer();
80
72
  setRecordingTime(0);
81
73
  var interval = setInterval(function () {
82
74
  setRecordingTime(function (prevTime) {
83
75
  var newTime = prevTime + 100;
84
-
85
76
  if (newTime > maxRecordingTime) {
86
77
  stopTimer();
87
78
  }
88
-
89
79
  return newTime;
90
80
  });
91
81
  }, 100);
92
82
  timer = interval;
93
83
  }
94
-
95
84
  function stopTimer() {
96
85
  clearInterval(timer);
97
86
  timer = null;
98
87
  }
99
-
100
88
  useEffect(function () {
101
89
  if (recordingTime > maxRecordingTime) {
102
90
  stop();
@@ -1 +1 @@
1
- {"version":3,"file":"useVoiceRecorder.js","sources":["../../src/hooks/VoiceRecorder/useVoiceRecorder.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { VoiceRecorderEventHandler, useVoiceRecorderContext } from '.';\nimport useSendbirdStateContext from '../useSendbirdStateContext';\n\n// export interface UseVoiceRecorderProps extends VoiceRecorderEventHandler {\n// /**\n// * onRecordingStarted\n// * onRecordingEnded\n// */\n// }\nexport const VoiceRecorderStatus = {\n PREPARING: 'PREPARING',\n READY_TO_RECORD: 'READY_TO_RECORD',\n RECORDING: 'RECORDING',\n COMPLETED: 'COMPLETED',\n} as const;\nexport type VoiceRecorderStatus = typeof VoiceRecorderStatus[keyof typeof VoiceRecorderStatus];\nexport interface UseVoiceRecorderContext {\n start: () => void;\n stop: () => void;\n cancel: () => void;\n recordingLimit: number;\n recordingTime: number;\n recordedFile: File;\n recordingStatus: VoiceRecorderStatus;\n}\n\nconst noop = () => {/* noop */};\n\nexport const useVoiceRecorder = ({\n onRecordingStarted = noop,\n onRecordingEnded = noop,\n}: VoiceRecorderEventHandler): UseVoiceRecorderContext => {\n const { config } = useSendbirdStateContext();\n const { voiceRecord } = config;\n const { maxRecordingTime } = voiceRecord;\n const voiceRecorder = useVoiceRecorderContext();\n const { isRecordable } = voiceRecorder;\n\n const [recordedFile, setRecordedFile] = useState<File>(null);\n const [recordingStatus, setRecordingStatus] = useState<VoiceRecorderStatus>(VoiceRecorderStatus.PREPARING);\n useEffect(() => {\n if (isRecordable && recordingStatus === VoiceRecorderStatus.PREPARING) {\n setRecordingStatus(VoiceRecorderStatus.READY_TO_RECORD);\n }\n }, [isRecordable]);\n\n const start = useCallback(() => {\n voiceRecorder?.start({\n onRecordingStarted: () => {\n setRecordingStatus(VoiceRecorderStatus.RECORDING);\n onRecordingStarted();\n startTimer();\n },\n onRecordingEnded: (audioFile) => {\n setRecordingStatus(VoiceRecorderStatus.COMPLETED);\n onRecordingEnded(audioFile);\n setRecordedFile(audioFile);\n stopTimer();\n },\n });\n }, [onRecordingStarted, onRecordingEnded]);\n const stop = useCallback(() => {\n voiceRecorder?.stop();\n stopTimer();\n }, [voiceRecorder]);\n const cancel = useCallback(() => {\n stop();\n setRecordedFile(null);\n }, [voiceRecorder]);\n\n // Timer\n const [recordingTime, setRecordingTime] = useState<number>(0);\n let timer: ReturnType<typeof setInterval> = null;\n function startTimer() {\n stopTimer();\n setRecordingTime(0);\n const interval = setInterval(() => {\n setRecordingTime(prevTime => {\n const newTime = prevTime + 100;\n if (newTime > maxRecordingTime) {\n stopTimer();\n }\n return newTime;\n });\n }, 100);\n timer = interval;\n }\n function stopTimer() {\n clearInterval(timer);\n timer = null;\n }\n useEffect(() => {\n if (recordingTime > maxRecordingTime) {\n stop();\n }\n }, [recordingTime, maxRecordingTime, stop]);\n\n return ({\n start,\n stop,\n cancel,\n recordingStatus,\n recordingTime,\n recordedFile,\n recordingLimit: maxRecordingTime,\n });\n};\n"],"names":["VoiceRecorderStatus","PREPARING","READY_TO_RECORD","RECORDING","COMPLETED","noop","useVoiceRecorder","_a","_b","onRecordingStarted","_c","onRecordingEnded","config","useSendbirdStateContext","voiceRecord","maxRecordingTime","voiceRecorder","useVoiceRecorderContext","isRecordable","_d","useState","recordedFile","setRecordedFile","_e","recordingStatus","setRecordingStatus","useEffect","start","useCallback","startTimer","audioFile","stopTimer","stop","cancel","_f","recordingTime","setRecordingTime","timer","interval","setInterval","prevTime","newTime","clearInterval","recordingLimit"],"mappings":"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"}
1
+ {"version":3,"file":"useVoiceRecorder.js","sources":["../../src/hooks/VoiceRecorder/useVoiceRecorder.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { VoiceRecorderEventHandler, useVoiceRecorderContext } from '.';\nimport useSendbirdStateContext from '../useSendbirdStateContext';\n\n// export interface UseVoiceRecorderProps extends VoiceRecorderEventHandler {\n// /**\n// * onRecordingStarted\n// * onRecordingEnded\n// */\n// }\nexport const VoiceRecorderStatus = {\n PREPARING: 'PREPARING',\n READY_TO_RECORD: 'READY_TO_RECORD',\n RECORDING: 'RECORDING',\n COMPLETED: 'COMPLETED',\n} as const;\nexport type VoiceRecorderStatus = typeof VoiceRecorderStatus[keyof typeof VoiceRecorderStatus];\nexport interface UseVoiceRecorderContext {\n start: () => void;\n stop: () => void;\n cancel: () => void;\n recordingLimit: number;\n recordingTime: number;\n recordedFile: File;\n recordingStatus: VoiceRecorderStatus;\n}\n\nconst noop = () => { /* noop */ };\n\nexport const useVoiceRecorder = ({\n onRecordingStarted = noop,\n onRecordingEnded = noop,\n}: VoiceRecorderEventHandler): UseVoiceRecorderContext => {\n const { config } = useSendbirdStateContext();\n const { voiceRecord } = config;\n const { maxRecordingTime } = voiceRecord;\n const voiceRecorder = useVoiceRecorderContext();\n const { isRecordable } = voiceRecorder;\n\n const [recordedFile, setRecordedFile] = useState<File>(null);\n const [recordingStatus, setRecordingStatus] = useState<VoiceRecorderStatus>(VoiceRecorderStatus.PREPARING);\n useEffect(() => {\n if (isRecordable && recordingStatus === VoiceRecorderStatus.PREPARING) {\n setRecordingStatus(VoiceRecorderStatus.READY_TO_RECORD);\n }\n }, [isRecordable]);\n\n const start = useCallback(() => {\n voiceRecorder?.start({\n onRecordingStarted: () => {\n setRecordingStatus(VoiceRecorderStatus.RECORDING);\n onRecordingStarted();\n startTimer();\n },\n onRecordingEnded: (audioFile) => {\n setRecordingStatus(VoiceRecorderStatus.COMPLETED);\n onRecordingEnded(audioFile);\n setRecordedFile(audioFile);\n stopTimer();\n },\n });\n }, [onRecordingStarted, onRecordingEnded]);\n const stop = useCallback(() => {\n voiceRecorder?.stop();\n stopTimer();\n }, [voiceRecorder]);\n const cancel = useCallback(() => {\n stop();\n setRecordedFile(null);\n }, [voiceRecorder]);\n\n // Timer\n const [recordingTime, setRecordingTime] = useState<number>(0);\n let timer: ReturnType<typeof setInterval> = null;\n function startTimer() {\n stopTimer();\n setRecordingTime(0);\n const interval = setInterval(() => {\n setRecordingTime(prevTime => {\n const newTime = prevTime + 100;\n if (newTime > maxRecordingTime) {\n stopTimer();\n }\n return newTime;\n });\n }, 100);\n timer = interval;\n }\n function stopTimer() {\n clearInterval(timer);\n timer = null;\n }\n useEffect(() => {\n if (recordingTime > maxRecordingTime) {\n stop();\n }\n }, [recordingTime, maxRecordingTime, stop]);\n\n return ({\n start,\n stop,\n cancel,\n recordingStatus,\n recordingTime,\n recordedFile,\n recordingLimit: maxRecordingTime,\n });\n};\n"],"names":["VoiceRecorderStatus","PREPARING","READY_TO_RECORD","RECORDING","COMPLETED","noop","useVoiceRecorder","_a","_b","onRecordingStarted","_c","onRecordingEnded","config","useSendbirdStateContext","voiceRecord","maxRecordingTime","voiceRecorder","useVoiceRecorderContext","isRecordable","_d","useState","recordedFile","setRecordedFile","_e","recordingStatus","setRecordingStatus","useEffect","start","useCallback","startTimer","audioFile","stopTimer","stop","cancel","_f","recordingTime","setRecordingTime","timer","interval","setInterval","prevTime","newTime","clearInterval","recordingLimit"],"mappings":"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"}