@sendbird/uikit-react 3.5.0-rc.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (936) hide show
  1. package/App.js +312 -235
  2. package/App.js.map +1 -1
  3. package/CHANGELOG.md +544 -0
  4. package/Channel/components/ChannelHeader.js +46 -41
  5. package/Channel/components/ChannelHeader.js.map +1 -1
  6. package/Channel/components/ChannelUI.js +104 -131
  7. package/Channel/components/ChannelUI.js.map +1 -1
  8. package/Channel/components/FileViewer.js +56 -52
  9. package/Channel/components/FileViewer.js.map +1 -1
  10. package/Channel/components/FrozenNotification.js +12 -7
  11. package/Channel/components/FrozenNotification.js.map +1 -1
  12. package/Channel/components/Message.js +240 -230
  13. package/Channel/components/Message.js.map +1 -1
  14. package/Channel/components/MessageInput.js +152 -129
  15. package/Channel/components/MessageInput.js.map +1 -1
  16. package/Channel/components/MessageList.js +260 -175
  17. package/Channel/components/MessageList.js.map +1 -1
  18. package/Channel/components/RemoveMessageModal.js +34 -30
  19. package/Channel/components/RemoveMessageModal.js.map +1 -1
  20. package/Channel/components/SuggestedMentionList.js +139 -193
  21. package/Channel/components/SuggestedMentionList.js.map +1 -1
  22. package/Channel/components/TypingIndicator.js +44 -61
  23. package/Channel/components/TypingIndicator.js.map +1 -1
  24. package/Channel/components/UnreadCount.js +18 -20
  25. package/Channel/components/UnreadCount.js.map +1 -1
  26. package/Channel/context.js +12 -19
  27. package/Channel/context.js.map +1 -1
  28. package/Channel.js +69 -44
  29. package/Channel.js.map +1 -1
  30. package/ChannelList/components/AddChannel.js +29 -30
  31. package/ChannelList/components/AddChannel.js.map +1 -1
  32. package/ChannelList/components/ChannelListHeader.js +32 -28
  33. package/ChannelList/components/ChannelListHeader.js.map +1 -1
  34. package/ChannelList/components/ChannelListUI.js +101 -142
  35. package/ChannelList/components/ChannelListUI.js.map +1 -1
  36. package/ChannelList/components/ChannelPreview.js +72 -82
  37. package/ChannelList/components/ChannelPreview.js.map +1 -1
  38. package/ChannelList/components/ChannelPreviewAction.js +36 -36
  39. package/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  40. package/ChannelList/context.js +7 -8
  41. package/ChannelList/context.js.map +1 -1
  42. package/ChannelList.js +32 -31
  43. package/ChannelList.js.map +1 -1
  44. package/{ChannelListProvider-ade145a7.js → ChannelListProvider-4cf5c0f5.js} +233 -285
  45. package/ChannelListProvider-4cf5c0f5.js.map +1 -0
  46. package/{ChannelProvider-c9db10c0.js → ChannelProvider-6e8e99df.js} +659 -726
  47. package/ChannelProvider-6e8e99df.js.map +1 -0
  48. package/ChannelSettings/components/ChannelProfile.js +33 -46
  49. package/ChannelSettings/components/ChannelProfile.js.map +1 -1
  50. package/ChannelSettings/components/ChannelSettingsUI.js +45 -48
  51. package/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  52. package/ChannelSettings/components/EditDetailsModal.js +47 -58
  53. package/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  54. package/ChannelSettings/components/LeaveChannel.js +40 -46
  55. package/ChannelSettings/components/LeaveChannel.js.map +1 -1
  56. package/ChannelSettings/components/ModerationPanel.js +522 -605
  57. package/ChannelSettings/components/ModerationPanel.js.map +1 -1
  58. package/ChannelSettings/components/UserListItem.js +71 -72
  59. package/ChannelSettings/components/UserListItem.js.map +1 -1
  60. package/ChannelSettings/components/UserPanel.js +29 -32
  61. package/ChannelSettings/components/UserPanel.js.map +1 -1
  62. package/ChannelSettings/context.js +53 -57
  63. package/ChannelSettings/context.js.map +1 -1
  64. package/ChannelSettings.js +20 -20
  65. package/ChannelSettings.js.map +1 -1
  66. package/CreateChannel/components/CreateChannelUI.js +24 -24
  67. package/CreateChannel/components/CreateChannelUI.js.map +1 -1
  68. package/CreateChannel/components/InviteUsers.js +102 -124
  69. package/CreateChannel/components/InviteUsers.js.map +1 -1
  70. package/CreateChannel/components/SelectChannelType.js +41 -42
  71. package/CreateChannel/components/SelectChannelType.js.map +1 -1
  72. package/CreateChannel/context.js +4 -4
  73. package/CreateChannel.js +22 -21
  74. package/CreateChannel.js.map +1 -1
  75. package/CreateChannelProvider-34603fa5.js +44 -0
  76. package/CreateChannelProvider-34603fa5.js.map +1 -0
  77. package/CreateOpenChannel/components/CreateOpenChannelUI.js +33 -43
  78. package/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  79. package/CreateOpenChannel/context.js +33 -33
  80. package/CreateOpenChannel/context.js.map +1 -1
  81. package/CreateOpenChannel.js +18 -17
  82. package/CreateOpenChannel.js.map +1 -1
  83. package/EditUserProfile/components/EditUserProfileUI.js +12 -13
  84. package/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  85. package/EditUserProfile/context.js +0 -2
  86. package/EditUserProfile/context.js.map +1 -1
  87. package/EditUserProfile.js +18 -17
  88. package/EditUserProfile.js.map +1 -1
  89. package/LocalizationContext-04c0c9dc.js +20 -0
  90. package/{LocalizationContext-60894e38.js.map → LocalizationContext-04c0c9dc.js.map} +1 -1
  91. package/MediaQueryContext-ff9dca2b.js +87 -0
  92. package/MediaQueryContext-ff9dca2b.js.map +1 -0
  93. package/MemberList-9bf26111.js +403 -0
  94. package/MemberList-9bf26111.js.map +1 -0
  95. package/Message/context.js +31 -0
  96. package/Message/context.js.map +1 -0
  97. package/MessageSearch/components/MessageSearchUI.js +62 -71
  98. package/MessageSearch/components/MessageSearchUI.js.map +1 -1
  99. package/MessageSearch/context.js +201 -224
  100. package/MessageSearch/context.js.map +1 -1
  101. package/MessageSearch.js +46 -58
  102. package/MessageSearch.js.map +1 -1
  103. package/OpenChannel/components/FrozenChannelNotification.js +8 -6
  104. package/OpenChannel/components/FrozenChannelNotification.js.map +1 -1
  105. package/OpenChannel/components/OpenChannelHeader.js +27 -25
  106. package/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  107. package/OpenChannel/components/OpenChannelInput.js +50 -35
  108. package/OpenChannel/components/OpenChannelInput.js.map +1 -1
  109. package/OpenChannel/components/OpenChannelMessage.js +174 -191
  110. package/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  111. package/OpenChannel/components/OpenChannelMessageList.js +72 -92
  112. package/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  113. package/OpenChannel/components/OpenChannelUI.js +52 -49
  114. package/OpenChannel/components/OpenChannelUI.js.map +1 -1
  115. package/OpenChannel/context.js +8 -9
  116. package/OpenChannel/context.js.map +1 -1
  117. package/OpenChannel.js +36 -30
  118. package/OpenChannel.js.map +1 -1
  119. package/OpenChannelList/components/OpenChannelListUI.js +61 -76
  120. package/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  121. package/OpenChannelList/components/OpenChannelPreview.js +21 -22
  122. package/OpenChannelList/components/OpenChannelPreview.js.map +1 -1
  123. package/OpenChannelList/context.js +3 -4
  124. package/OpenChannelList/context.js.map +1 -1
  125. package/OpenChannelList.js +26 -24
  126. package/OpenChannelList.js.map +1 -1
  127. package/OpenChannelListProvider-d7372692.js +429 -0
  128. package/OpenChannelListProvider-d7372692.js.map +1 -0
  129. package/OpenChannelProvider-24cd68b9.js +1885 -0
  130. package/OpenChannelProvider-24cd68b9.js.map +1 -0
  131. package/OpenChannelSettings/components/EditDetailsModal.js +47 -56
  132. package/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  133. package/OpenChannelSettings/components/OpenChannelProfile.js +26 -31
  134. package/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  135. package/OpenChannelSettings/components/OpenChannelSettingsUI.js +45 -43
  136. package/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  137. package/OpenChannelSettings/components/OperatorUI.js +516 -586
  138. package/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  139. package/OpenChannelSettings/components/ParticipantUI.js +15 -16
  140. package/OpenChannelSettings/components/ParticipantUI.js.map +1 -1
  141. package/OpenChannelSettings/context.js +56 -69
  142. package/OpenChannelSettings/context.js.map +1 -1
  143. package/OpenChannelSettings.js +19 -20
  144. package/OpenChannelSettings.js.map +1 -1
  145. package/README.md +62 -13
  146. package/RemoveMessageModal-94e2bf9e.js +36 -0
  147. package/RemoveMessageModal-94e2bf9e.js.map +1 -0
  148. package/SendbirdProvider.js +749 -408
  149. package/SendbirdProvider.js.map +1 -1
  150. package/Thread/components/ParentMessageInfo.js +238 -217
  151. package/Thread/components/ParentMessageInfo.js.map +1 -1
  152. package/Thread/components/ParentMessageInfoItem.js +112 -89
  153. package/Thread/components/ParentMessageInfoItem.js.map +1 -1
  154. package/Thread/components/ThreadHeader.js +22 -23
  155. package/Thread/components/ThreadHeader.js.map +1 -1
  156. package/Thread/components/ThreadList.js +108 -83
  157. package/Thread/components/ThreadList.js.map +1 -1
  158. package/Thread/components/ThreadListItem.js +306 -276
  159. package/Thread/components/ThreadListItem.js.map +1 -1
  160. package/Thread/components/ThreadMessageInput.js +146 -113
  161. package/Thread/components/ThreadMessageInput.js.map +1 -1
  162. package/Thread/components/ThreadUI.js +169 -138
  163. package/Thread/components/ThreadUI.js.map +1 -1
  164. package/Thread/context/types.js +9 -14
  165. package/Thread/context/types.js.map +1 -1
  166. package/Thread/context.js +8 -8
  167. package/Thread.js +87 -57
  168. package/Thread.js.map +1 -1
  169. package/ThreadProvider-203b94f3.js +1695 -0
  170. package/ThreadProvider-203b94f3.js.map +1 -0
  171. package/{UserProfileContext-33a26cc4.js → UserProfileContext-c776d522.js} +1 -4
  172. package/{UserProfileContext-33a26cc4.js.map → UserProfileContext-c776d522.js.map} +1 -1
  173. package/VoiceMessageInputWrapper-77d8f487.js +170 -0
  174. package/VoiceMessageInputWrapper-77d8f487.js.map +1 -0
  175. package/VoicePlayer/context.js +7 -0
  176. package/{NotificationChannel → VoicePlayer}/context.js.map +1 -1
  177. package/VoicePlayer/useVoicePlayer.js +84 -0
  178. package/VoicePlayer/useVoicePlayer.js.map +1 -0
  179. package/VoiceRecorder/context.js +156 -0
  180. package/VoiceRecorder/context.js.map +1 -0
  181. package/VoiceRecorder/useVoiceRecorder.js +121 -0
  182. package/VoiceRecorder/useVoiceRecorder.js.map +1 -0
  183. package/WebAudioUtils-62e6d3a7.js +123 -0
  184. package/WebAudioUtils-62e6d3a7.js.map +1 -0
  185. package/{_rollupPluginBabelHelpers-ed44209e.js → _rollupPluginBabelHelpers-fb0e05a4.js} +17 -11
  186. package/_rollupPluginBabelHelpers-fb0e05a4.js.map +1 -0
  187. package/actionTypes-1db5749d.js +8 -0
  188. package/actionTypes-1db5749d.js.map +1 -0
  189. package/cjs/App.js +312 -235
  190. package/cjs/App.js.map +1 -1
  191. package/cjs/Channel/components/ChannelHeader.js +46 -41
  192. package/cjs/Channel/components/ChannelHeader.js.map +1 -1
  193. package/cjs/Channel/components/ChannelUI.js +102 -129
  194. package/cjs/Channel/components/ChannelUI.js.map +1 -1
  195. package/cjs/Channel/components/FileViewer.js +56 -52
  196. package/cjs/Channel/components/FileViewer.js.map +1 -1
  197. package/cjs/Channel/components/FrozenNotification.js +12 -7
  198. package/cjs/Channel/components/FrozenNotification.js.map +1 -1
  199. package/cjs/Channel/components/Message.js +243 -233
  200. package/cjs/Channel/components/Message.js.map +1 -1
  201. package/cjs/Channel/components/MessageInput.js +151 -128
  202. package/cjs/Channel/components/MessageInput.js.map +1 -1
  203. package/cjs/Channel/components/MessageList.js +260 -175
  204. package/cjs/Channel/components/MessageList.js.map +1 -1
  205. package/cjs/Channel/components/RemoveMessageModal.js +34 -30
  206. package/cjs/Channel/components/RemoveMessageModal.js.map +1 -1
  207. package/cjs/Channel/components/SuggestedMentionList.js +139 -193
  208. package/cjs/Channel/components/SuggestedMentionList.js.map +1 -1
  209. package/cjs/Channel/components/TypingIndicator.js +44 -61
  210. package/cjs/Channel/components/TypingIndicator.js.map +1 -1
  211. package/cjs/Channel/components/UnreadCount.js +18 -20
  212. package/cjs/Channel/components/UnreadCount.js.map +1 -1
  213. package/cjs/Channel/context.js +12 -23
  214. package/cjs/Channel/context.js.map +1 -1
  215. package/cjs/Channel.js +69 -44
  216. package/cjs/Channel.js.map +1 -1
  217. package/cjs/ChannelList/components/AddChannel.js +29 -30
  218. package/cjs/ChannelList/components/AddChannel.js.map +1 -1
  219. package/cjs/ChannelList/components/ChannelListHeader.js +32 -28
  220. package/cjs/ChannelList/components/ChannelListHeader.js.map +1 -1
  221. package/cjs/ChannelList/components/ChannelListUI.js +100 -141
  222. package/cjs/ChannelList/components/ChannelListUI.js.map +1 -1
  223. package/cjs/ChannelList/components/ChannelPreview.js +72 -82
  224. package/cjs/ChannelList/components/ChannelPreview.js.map +1 -1
  225. package/cjs/ChannelList/components/ChannelPreviewAction.js +36 -36
  226. package/cjs/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  227. package/cjs/ChannelList/context.js +7 -8
  228. package/cjs/ChannelList/context.js.map +1 -1
  229. package/cjs/ChannelList.js +32 -31
  230. package/cjs/ChannelList.js.map +1 -1
  231. package/cjs/{ChannelListProvider-65473831.js → ChannelListProvider-e0ce316a.js} +232 -284
  232. package/cjs/ChannelListProvider-e0ce316a.js.map +1 -0
  233. package/cjs/{ChannelProvider-1e08a7a9.js → ChannelProvider-0df75472.js} +657 -724
  234. package/cjs/ChannelProvider-0df75472.js.map +1 -0
  235. package/cjs/ChannelSettings/components/ChannelProfile.js +33 -46
  236. package/cjs/ChannelSettings/components/ChannelProfile.js.map +1 -1
  237. package/cjs/ChannelSettings/components/ChannelSettingsUI.js +45 -48
  238. package/cjs/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  239. package/cjs/ChannelSettings/components/EditDetailsModal.js +47 -58
  240. package/cjs/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  241. package/cjs/ChannelSettings/components/LeaveChannel.js +40 -46
  242. package/cjs/ChannelSettings/components/LeaveChannel.js.map +1 -1
  243. package/cjs/ChannelSettings/components/ModerationPanel.js +522 -605
  244. package/cjs/ChannelSettings/components/ModerationPanel.js.map +1 -1
  245. package/cjs/ChannelSettings/components/UserListItem.js +71 -72
  246. package/cjs/ChannelSettings/components/UserListItem.js.map +1 -1
  247. package/cjs/ChannelSettings/components/UserPanel.js +29 -32
  248. package/cjs/ChannelSettings/components/UserPanel.js.map +1 -1
  249. package/cjs/ChannelSettings/context.js +55 -59
  250. package/cjs/ChannelSettings/context.js.map +1 -1
  251. package/cjs/ChannelSettings.js +20 -20
  252. package/cjs/ChannelSettings.js.map +1 -1
  253. package/cjs/CreateChannel/components/CreateChannelUI.js +24 -24
  254. package/cjs/CreateChannel/components/CreateChannelUI.js.map +1 -1
  255. package/cjs/CreateChannel/components/InviteUsers.js +102 -124
  256. package/cjs/CreateChannel/components/InviteUsers.js.map +1 -1
  257. package/cjs/CreateChannel/components/SelectChannelType.js +41 -42
  258. package/cjs/CreateChannel/components/SelectChannelType.js.map +1 -1
  259. package/cjs/CreateChannel/context.js +4 -4
  260. package/cjs/CreateChannel.js +22 -21
  261. package/cjs/CreateChannel.js.map +1 -1
  262. package/cjs/CreateChannelProvider-c0fca0a5.js +52 -0
  263. package/cjs/CreateChannelProvider-c0fca0a5.js.map +1 -0
  264. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js +33 -43
  265. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  266. package/cjs/CreateOpenChannel/context.js +33 -33
  267. package/cjs/CreateOpenChannel/context.js.map +1 -1
  268. package/cjs/CreateOpenChannel.js +18 -17
  269. package/cjs/CreateOpenChannel.js.map +1 -1
  270. package/cjs/EditUserProfile/components/EditUserProfileUI.js +12 -13
  271. package/cjs/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  272. package/cjs/EditUserProfile/context.js +0 -2
  273. package/cjs/EditUserProfile/context.js.map +1 -1
  274. package/cjs/EditUserProfile.js +18 -17
  275. package/cjs/EditUserProfile.js.map +1 -1
  276. package/cjs/{LocalizationContext-8780a64e.js → LocalizationContext-0e429c3d.js} +9 -11
  277. package/cjs/{LocalizationContext-8780a64e.js.map → LocalizationContext-0e429c3d.js.map} +1 -1
  278. package/cjs/MediaQueryContext-33fc3b17.js +94 -0
  279. package/cjs/MediaQueryContext-33fc3b17.js.map +1 -0
  280. package/cjs/MemberList-a45a51c4.js +409 -0
  281. package/cjs/MemberList-a45a51c4.js.map +1 -0
  282. package/cjs/Message/context.js +40 -0
  283. package/cjs/Message/context.js.map +1 -0
  284. package/cjs/MessageSearch/components/MessageSearchUI.js +61 -70
  285. package/cjs/MessageSearch/components/MessageSearchUI.js.map +1 -1
  286. package/cjs/MessageSearch/context.js +201 -224
  287. package/cjs/MessageSearch/context.js.map +1 -1
  288. package/cjs/MessageSearch.js +46 -58
  289. package/cjs/MessageSearch.js.map +1 -1
  290. package/cjs/OpenChannel/components/FrozenChannelNotification.js +8 -6
  291. package/cjs/OpenChannel/components/FrozenChannelNotification.js.map +1 -1
  292. package/cjs/OpenChannel/components/OpenChannelHeader.js +27 -25
  293. package/cjs/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  294. package/cjs/OpenChannel/components/OpenChannelInput.js +50 -35
  295. package/cjs/OpenChannel/components/OpenChannelInput.js.map +1 -1
  296. package/cjs/OpenChannel/components/OpenChannelMessage.js +174 -191
  297. package/cjs/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  298. package/cjs/OpenChannel/components/OpenChannelMessageList.js +72 -92
  299. package/cjs/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  300. package/cjs/OpenChannel/components/OpenChannelUI.js +52 -49
  301. package/cjs/OpenChannel/components/OpenChannelUI.js.map +1 -1
  302. package/cjs/OpenChannel/context.js +8 -9
  303. package/cjs/OpenChannel/context.js.map +1 -1
  304. package/cjs/OpenChannel.js +36 -30
  305. package/cjs/OpenChannel.js.map +1 -1
  306. package/cjs/OpenChannelList/components/OpenChannelListUI.js +61 -76
  307. package/cjs/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  308. package/cjs/OpenChannelList/components/OpenChannelPreview.js +21 -22
  309. package/cjs/OpenChannelList/components/OpenChannelPreview.js.map +1 -1
  310. package/cjs/OpenChannelList/context.js +3 -4
  311. package/cjs/OpenChannelList/context.js.map +1 -1
  312. package/cjs/OpenChannelList.js +26 -24
  313. package/cjs/OpenChannelList.js.map +1 -1
  314. package/cjs/OpenChannelListProvider-fc8b53ee.js +439 -0
  315. package/cjs/OpenChannelListProvider-fc8b53ee.js.map +1 -0
  316. package/cjs/OpenChannelProvider-217a8ac2.js +1894 -0
  317. package/cjs/OpenChannelProvider-217a8ac2.js.map +1 -0
  318. package/cjs/OpenChannelSettings/components/EditDetailsModal.js +47 -56
  319. package/cjs/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  320. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +26 -31
  321. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  322. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +45 -43
  323. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  324. package/cjs/OpenChannelSettings/components/OperatorUI.js +516 -586
  325. package/cjs/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  326. package/cjs/OpenChannelSettings/components/ParticipantUI.js +15 -16
  327. package/cjs/OpenChannelSettings/components/ParticipantUI.js.map +1 -1
  328. package/cjs/OpenChannelSettings/context.js +57 -70
  329. package/cjs/OpenChannelSettings/context.js.map +1 -1
  330. package/cjs/OpenChannelSettings.js +19 -20
  331. package/cjs/OpenChannelSettings.js.map +1 -1
  332. package/cjs/{RemoveMessageModal-0da4f94b.js → RemoveMessageModal-5903f232.js} +19 -14
  333. package/cjs/RemoveMessageModal-5903f232.js.map +1 -0
  334. package/cjs/SendbirdProvider.js +748 -408
  335. package/cjs/SendbirdProvider.js.map +1 -1
  336. package/cjs/Thread/components/ParentMessageInfo.js +237 -216
  337. package/cjs/Thread/components/ParentMessageInfo.js.map +1 -1
  338. package/cjs/Thread/components/ParentMessageInfoItem.js +111 -88
  339. package/cjs/Thread/components/ParentMessageInfoItem.js.map +1 -1
  340. package/cjs/Thread/components/ThreadHeader.js +22 -23
  341. package/cjs/Thread/components/ThreadHeader.js.map +1 -1
  342. package/cjs/Thread/components/ThreadList.js +108 -83
  343. package/cjs/Thread/components/ThreadList.js.map +1 -1
  344. package/cjs/Thread/components/ThreadListItem.js +305 -275
  345. package/cjs/Thread/components/ThreadListItem.js.map +1 -1
  346. package/cjs/Thread/components/ThreadMessageInput.js +146 -113
  347. package/cjs/Thread/components/ThreadMessageInput.js.map +1 -1
  348. package/cjs/Thread/components/ThreadUI.js +170 -139
  349. package/cjs/Thread/components/ThreadUI.js.map +1 -1
  350. package/cjs/Thread/context/types.js +13 -14
  351. package/cjs/Thread/context/types.js.map +1 -1
  352. package/cjs/Thread/context.js +8 -8
  353. package/cjs/Thread.js +87 -57
  354. package/cjs/Thread.js.map +1 -1
  355. package/cjs/ThreadProvider-8ee179c2.js +1704 -0
  356. package/cjs/ThreadProvider-8ee179c2.js.map +1 -0
  357. package/cjs/{UserProfileContext-0808e413.js → UserProfileContext-87580795.js} +1 -4
  358. package/cjs/{UserProfileContext-0808e413.js.map → UserProfileContext-87580795.js.map} +1 -1
  359. package/cjs/VoiceMessageInputWrapper-4fdc8ef1.js +176 -0
  360. package/cjs/VoiceMessageInputWrapper-4fdc8ef1.js.map +1 -0
  361. package/cjs/VoicePlayer/context.js +17 -0
  362. package/cjs/{NotificationChannel → VoicePlayer}/context.js.map +1 -1
  363. package/cjs/VoicePlayer/useVoicePlayer.js +88 -0
  364. package/cjs/VoicePlayer/useVoicePlayer.js.map +1 -0
  365. package/cjs/VoiceRecorder/context.js +166 -0
  366. package/cjs/VoiceRecorder/context.js.map +1 -0
  367. package/cjs/VoiceRecorder/useVoiceRecorder.js +126 -0
  368. package/cjs/VoiceRecorder/useVoiceRecorder.js.map +1 -0
  369. package/cjs/WebAudioUtils-e226789c.js +126 -0
  370. package/cjs/WebAudioUtils-e226789c.js.map +1 -0
  371. package/cjs/{_rollupPluginBabelHelpers-bd6baf0a.js → _rollupPluginBabelHelpers-c89f311a.js} +17 -10
  372. package/cjs/_rollupPluginBabelHelpers-c89f311a.js.map +1 -0
  373. package/cjs/actionTypes-0fa2943d.js +10 -0
  374. package/cjs/actionTypes-0fa2943d.js.map +1 -0
  375. package/cjs/{color-fdbe394d.js → color-bada0fc7.js} +13 -21
  376. package/cjs/color-bada0fc7.js.map +1 -0
  377. package/cjs/{compareIds-d0c02eca.js → compareIds-ccccfe86.js} +5 -6
  378. package/cjs/compareIds-ccccfe86.js.map +1 -0
  379. package/cjs/const-a85f3364.js +20 -0
  380. package/cjs/const-a85f3364.js.map +1 -0
  381. package/cjs/{const-8785e4ad.js → const-d8cece19.js} +4 -4
  382. package/cjs/const-d8cece19.js.map +1 -0
  383. package/cjs/consts-1c3020ad.js +6 -0
  384. package/cjs/consts-1c3020ad.js.map +1 -0
  385. package/cjs/consts-1d94dc61.js +6 -0
  386. package/cjs/consts-1d94dc61.js.map +1 -0
  387. package/cjs/consts-5e0f96b3.js +41 -0
  388. package/cjs/consts-5e0f96b3.js.map +1 -0
  389. package/cjs/consts-740f60b8.js +6 -0
  390. package/cjs/consts-740f60b8.js.map +1 -0
  391. package/cjs/{context-012aecd1.js → context-8e7e8457.js} +6 -5
  392. package/cjs/{context-012aecd1.js.map → context-8e7e8457.js.map} +1 -1
  393. package/cjs/dist/index.css +1682 -1229
  394. package/cjs/dist/index.css.map +1 -1
  395. package/cjs/handlers/OpenChannelHandler.js.map +1 -1
  396. package/cjs/handlers/SessionHandler.js.map +1 -1
  397. package/cjs/{index-48d85d8f.js → index-016f7106.js} +1 -1
  398. package/cjs/{index-48d85d8f.js.map → index-016f7106.js.map} +1 -1
  399. package/cjs/{index-e8544e24.js → index-1613ae03.js} +29 -37
  400. package/cjs/index-1613ae03.js.map +1 -0
  401. package/cjs/index-2be14d85.js +57 -0
  402. package/cjs/index-2be14d85.js.map +1 -0
  403. package/cjs/index-3b30939e.js +79 -0
  404. package/cjs/index-3b30939e.js.map +1 -0
  405. package/cjs/index-5231fde8.js +585 -0
  406. package/cjs/index-5231fde8.js.map +1 -0
  407. package/cjs/index-648c06ed.js +330 -0
  408. package/cjs/index-648c06ed.js.map +1 -0
  409. package/cjs/{index-bdd889a2.js → index-6cb0d040.js} +11 -25
  410. package/cjs/index-6cb0d040.js.map +1 -0
  411. package/cjs/{index-ebb542c3.js → index-71fdaa1b.js} +55 -63
  412. package/cjs/index-71fdaa1b.js.map +1 -0
  413. package/cjs/{index-abe135e6.js → index-7d125728.js} +2 -2
  414. package/cjs/{index-abe135e6.js.map → index-7d125728.js.map} +1 -1
  415. package/cjs/{index-e191d245.js → index-7f6bbe0c.js} +42 -51
  416. package/cjs/index-7f6bbe0c.js.map +1 -0
  417. package/cjs/{index-5ea12b7a.js → index-869e9a94.js} +2 -2
  418. package/cjs/{index-5ea12b7a.js.map → index-869e9a94.js.map} +1 -1
  419. package/cjs/index-89d81dad.js +456 -0
  420. package/cjs/index-89d81dad.js.map +1 -0
  421. package/cjs/{index-c13771a7.js → index-8affdde5.js} +57 -3
  422. package/cjs/index-8affdde5.js.map +1 -0
  423. package/cjs/index-99f16473.js +202 -0
  424. package/cjs/index-99f16473.js.map +1 -0
  425. package/cjs/index-c9d348b6.js +367 -0
  426. package/cjs/index-c9d348b6.js.map +1 -0
  427. package/cjs/index-e8c0080f.js +161 -0
  428. package/cjs/index-e8c0080f.js.map +1 -0
  429. package/cjs/{index-08d232f8.js → index-f570d25c.js} +1 -1
  430. package/cjs/index-f570d25c.js.map +1 -0
  431. package/cjs/index.js +84 -63
  432. package/cjs/index.js.map +1 -1
  433. package/cjs/index.module-0585715f.js +6 -0
  434. package/cjs/index.module-0585715f.js.map +1 -0
  435. package/cjs/lame.all.js +2541 -0
  436. package/cjs/lame.all.js.map +1 -0
  437. package/cjs/resolvedReplyType-67e78c63.js +32 -0
  438. package/cjs/resolvedReplyType-67e78c63.js.map +1 -0
  439. package/cjs/sendbirdSelectors.js +307 -417
  440. package/cjs/sendbirdSelectors.js.map +1 -1
  441. package/cjs/{stringSet-60660a99.js → stringSet-106da549.js} +112 -90
  442. package/cjs/stringSet-106da549.js.map +1 -0
  443. package/cjs/tokenize-2aa0f876.js +164 -0
  444. package/cjs/tokenize-2aa0f876.js.map +1 -0
  445. package/cjs/topics-b384e6b3.js +18 -0
  446. package/cjs/topics-b384e6b3.js.map +1 -0
  447. package/cjs/types-e0b77c8c.js +17 -0
  448. package/cjs/types-e0b77c8c.js.map +1 -0
  449. package/cjs/ui/Accordion.js +21 -24
  450. package/cjs/ui/Accordion.js.map +1 -1
  451. package/cjs/ui/AccordionGroup.js +10 -13
  452. package/cjs/ui/AccordionGroup.js.map +1 -1
  453. package/cjs/ui/AdminMessage.js +10 -13
  454. package/cjs/ui/AdminMessage.js.map +1 -1
  455. package/cjs/ui/Avatar.js +57 -79
  456. package/cjs/ui/Avatar.js.map +1 -1
  457. package/cjs/ui/Badge.js +16 -15
  458. package/cjs/ui/Badge.js.map +1 -1
  459. package/cjs/ui/BottomSheet.js +14 -12
  460. package/cjs/ui/BottomSheet.js.map +1 -1
  461. package/cjs/ui/Button.js +20 -35
  462. package/cjs/ui/Button.js.map +1 -1
  463. package/cjs/ui/ChannelAvatar.js +38 -41
  464. package/cjs/ui/ChannelAvatar.js.map +1 -1
  465. package/cjs/ui/Checkbox.js +11 -13
  466. package/cjs/ui/Checkbox.js.map +1 -1
  467. package/cjs/ui/ConnectionStatus.js +7 -5
  468. package/cjs/ui/ConnectionStatus.js.map +1 -1
  469. package/cjs/ui/ContextMenu.js +175 -199
  470. package/cjs/ui/ContextMenu.js.map +1 -1
  471. package/cjs/ui/DateSeparator.js +12 -14
  472. package/cjs/ui/DateSeparator.js.map +1 -1
  473. package/cjs/ui/EmojiReactions.js +299 -107
  474. package/cjs/ui/EmojiReactions.js.map +1 -1
  475. package/cjs/ui/FileMessageItemBody.js +22 -23
  476. package/cjs/ui/FileMessageItemBody.js.map +1 -1
  477. package/cjs/ui/FileViewer.js +36 -36
  478. package/cjs/ui/FileViewer.js.map +1 -1
  479. package/cjs/ui/Icon.js +447 -623
  480. package/cjs/ui/Icon.js.map +1 -1
  481. package/cjs/ui/IconButton.js +20 -31
  482. package/cjs/ui/IconButton.js.map +1 -1
  483. package/cjs/ui/ImageRenderer.js +34 -43
  484. package/cjs/ui/ImageRenderer.js.map +1 -1
  485. package/cjs/ui/Input.js +16 -16
  486. package/cjs/ui/Input.js.map +1 -1
  487. package/cjs/ui/Label.js +2 -2
  488. package/cjs/ui/LinkLabel.js +4 -3
  489. package/cjs/ui/LinkLabel.js.map +1 -1
  490. package/cjs/ui/Loader.js +10 -12
  491. package/cjs/ui/Loader.js.map +1 -1
  492. package/cjs/ui/MentionLabel.js +58 -65
  493. package/cjs/ui/MentionLabel.js.map +1 -1
  494. package/cjs/ui/MentionUserLabel.js +12 -10
  495. package/cjs/ui/MentionUserLabel.js.map +1 -1
  496. package/cjs/ui/MessageContent.js +212 -548
  497. package/cjs/ui/MessageContent.js.map +1 -1
  498. package/cjs/ui/MessageInput.js +392 -119
  499. package/cjs/ui/MessageInput.js.map +1 -1
  500. package/cjs/ui/MessageItemMenu.js +83 -83
  501. package/cjs/ui/MessageItemMenu.js.map +1 -1
  502. package/cjs/ui/MessageItemReactionMenu.js +58 -62
  503. package/cjs/ui/MessageItemReactionMenu.js.map +1 -1
  504. package/cjs/ui/MessageSearchFileItem.js +56 -51
  505. package/cjs/ui/MessageSearchFileItem.js.map +1 -1
  506. package/cjs/ui/MessageSearchItem.js +42 -41
  507. package/cjs/ui/MessageSearchItem.js.map +1 -1
  508. package/cjs/ui/MessageStatus.js +10 -11
  509. package/cjs/ui/MessageStatus.js.map +1 -1
  510. package/cjs/ui/Modal.js +52 -46
  511. package/cjs/ui/Modal.js.map +1 -1
  512. package/cjs/ui/MutedAvatarOverlay.js +10 -10
  513. package/cjs/ui/MutedAvatarOverlay.js.map +1 -1
  514. package/cjs/ui/OGMessageItemBody.js +67 -63
  515. package/cjs/ui/OGMessageItemBody.js.map +1 -1
  516. package/cjs/ui/OpenChannelAdminMessage.js +8 -7
  517. package/cjs/ui/OpenChannelAdminMessage.js.map +1 -1
  518. package/cjs/ui/OpenChannelAvatar.js +18 -17
  519. package/cjs/ui/OpenChannelAvatar.js.map +1 -1
  520. package/cjs/ui/OpenchannelConversationHeader.js +17 -13
  521. package/cjs/ui/OpenchannelConversationHeader.js.map +1 -1
  522. package/cjs/ui/OpenchannelFileMessage.js +140 -151
  523. package/cjs/ui/OpenchannelFileMessage.js.map +1 -1
  524. package/cjs/ui/OpenchannelOGMessage.js +204 -233
  525. package/cjs/ui/OpenchannelOGMessage.js.map +1 -1
  526. package/cjs/ui/OpenchannelThumbnailMessage.js +215 -222
  527. package/cjs/ui/OpenchannelThumbnailMessage.js.map +1 -1
  528. package/cjs/ui/OpenchannelUserMessage.js +168 -178
  529. package/cjs/ui/OpenchannelUserMessage.js.map +1 -1
  530. package/cjs/ui/PlaceHolder.js +5 -6
  531. package/cjs/ui/PlaceHolder.js.map +1 -1
  532. package/cjs/ui/PlaybackTime.js +35 -0
  533. package/cjs/ui/PlaybackTime.js.map +1 -0
  534. package/cjs/ui/ProgressBar.js +40 -0
  535. package/cjs/ui/ProgressBar.js.map +1 -0
  536. package/cjs/ui/QuoteMessage.js +50 -44
  537. package/cjs/ui/QuoteMessage.js.map +1 -1
  538. package/cjs/ui/QuoteMessageInput.js +31 -29
  539. package/cjs/ui/QuoteMessageInput.js.map +1 -1
  540. package/cjs/ui/ReactionBadge.js +13 -21
  541. package/cjs/ui/ReactionBadge.js.map +1 -1
  542. package/cjs/ui/ReactionButton.js +30 -27
  543. package/cjs/ui/ReactionButton.js.map +1 -1
  544. package/cjs/ui/SortByRow.js +14 -18
  545. package/cjs/ui/SortByRow.js.map +1 -1
  546. package/cjs/ui/TextButton.js +13 -21
  547. package/cjs/ui/TextButton.js.map +1 -1
  548. package/cjs/ui/TextMessageItemBody.js +41 -48
  549. package/cjs/ui/TextMessageItemBody.js.map +1 -1
  550. package/cjs/ui/ThreadReplies.js +25 -22
  551. package/cjs/ui/ThreadReplies.js.map +1 -1
  552. package/cjs/ui/ThumbnailMessageItemBody.js +36 -45
  553. package/cjs/ui/ThumbnailMessageItemBody.js.map +1 -1
  554. package/cjs/ui/Toggle.js +202 -0
  555. package/cjs/ui/Toggle.js.map +1 -0
  556. package/cjs/ui/Tooltip.js +8 -9
  557. package/cjs/ui/Tooltip.js.map +1 -1
  558. package/cjs/ui/TooltipWrapper.js +17 -20
  559. package/cjs/ui/TooltipWrapper.js.map +1 -1
  560. package/cjs/ui/UnknownMessageItemBody.js +21 -22
  561. package/cjs/ui/UnknownMessageItemBody.js.map +1 -1
  562. package/cjs/ui/UserListItem.js +76 -76
  563. package/cjs/ui/UserListItem.js.map +1 -1
  564. package/cjs/ui/UserProfile.js +31 -29
  565. package/cjs/ui/UserProfile.js.map +1 -1
  566. package/cjs/ui/VoiceMessageItemBody.js +119 -0
  567. package/cjs/ui/VoiceMessageItemBody.js.map +1 -0
  568. package/cjs/ui/VoiceMessgeInput.js +22 -0
  569. package/cjs/ui/VoiceMessgeInput.js.map +1 -0
  570. package/cjs/ui/Word.js +31 -39
  571. package/cjs/ui/Word.js.map +1 -1
  572. package/cjs/useDirtyGetMentions-b8ca5675.js +77 -0
  573. package/cjs/useDirtyGetMentions-b8ca5675.js.map +1 -0
  574. package/cjs/useLongPress-8037894e.js +87 -0
  575. package/cjs/useLongPress-8037894e.js.map +1 -0
  576. package/cjs/useSendbirdStateContext.js +2 -3
  577. package/cjs/useSendbirdStateContext.js.map +1 -1
  578. package/cjs/utils/message/getOutgoingMessageState.js +16 -21
  579. package/cjs/utils/message/getOutgoingMessageState.js.map +1 -1
  580. package/cjs/utils/message/isVoiceMessage.js +12 -0
  581. package/cjs/utils/message/isVoiceMessage.js.map +1 -0
  582. package/cjs/{utils-ba58eacf.js → utils-01ff5332.js} +3 -7
  583. package/cjs/{utils-ba58eacf.js.map → utils-01ff5332.js.map} +1 -1
  584. package/cjs/utils-2edcddc8.js +35 -0
  585. package/cjs/utils-2edcddc8.js.map +1 -0
  586. package/cjs/utils-5ac3db44.js +31 -0
  587. package/cjs/utils-5ac3db44.js.map +1 -0
  588. package/cjs/{utils-708aa730.js → utils-ad7b5b82.js} +1 -1
  589. package/cjs/{utils-708aa730.js.map → utils-ad7b5b82.js.map} +1 -1
  590. package/cjs/uuid-12b01f73.js +15 -0
  591. package/cjs/{uuid-a9006ea2.js.map → uuid-12b01f73.js.map} +1 -1
  592. package/cjs/withSendbird.js +5 -6
  593. package/cjs/withSendbird.js.map +1 -1
  594. package/{color-c39702d1.js → color-347926b6.js} +5 -14
  595. package/{color-c39702d1.js.map → color-347926b6.js.map} +1 -1
  596. package/{compareIds-063e5503.js → compareIds-3a43c11b.js} +5 -6
  597. package/compareIds-3a43c11b.js.map +1 -0
  598. package/const-18dba7a4.js +13 -0
  599. package/const-18dba7a4.js.map +1 -0
  600. package/{const-1510a671.js → const-c608f749.js} +4 -4
  601. package/const-c608f749.js.map +1 -0
  602. package/consts-6bca01c7.js +4 -0
  603. package/consts-6bca01c7.js.map +1 -0
  604. package/consts-7a169a0f.js +4 -0
  605. package/consts-7a169a0f.js.map +1 -0
  606. package/consts-c1baf70a.js +27 -0
  607. package/consts-c1baf70a.js.map +1 -0
  608. package/consts-fb4d475a.js +4 -0
  609. package/consts-fb4d475a.js.map +1 -0
  610. package/context-786ef1a2.js +13 -0
  611. package/{context-d5dc28c9.js.map → context-786ef1a2.js.map} +1 -1
  612. package/dist/index.css +1682 -1229
  613. package/dist/index.css.map +1 -1
  614. package/handlers/OpenChannelHandler.js.map +1 -1
  615. package/handlers/SessionHandler.js.map +1 -1
  616. package/{index-7c1f570b.js → index-06b854f7.js} +55 -63
  617. package/index-06b854f7.js.map +1 -0
  618. package/index-2673effb.js +360 -0
  619. package/index-2673effb.js.map +1 -0
  620. package/{index-5e776774.js → index-319984d0.js} +1 -1
  621. package/{index-5e776774.js.map → index-319984d0.js.map} +1 -1
  622. package/{index-eadca08d.js → index-4455855e.js} +2 -2
  623. package/{index-eadca08d.js.map → index-4455855e.js.map} +1 -1
  624. package/index-6663ce18.js +450 -0
  625. package/index-6663ce18.js.map +1 -0
  626. package/{index-b19486f5.js → index-6c252d25.js} +2 -2
  627. package/{index-b19486f5.js.map → index-6c252d25.js.map} +1 -1
  628. package/index-71a20863.js +320 -0
  629. package/index-71a20863.js.map +1 -0
  630. package/index-7d71b26c.js +154 -0
  631. package/index-7d71b26c.js.map +1 -0
  632. package/{index-d81c515b.js → index-9a4e0846.js} +1 -1
  633. package/index-9a4e0846.js.map +1 -0
  634. package/{index-fd15e3b0.js → index-9cd77b08.js} +29 -37
  635. package/index-9cd77b08.js.map +1 -0
  636. package/index-c149ea48.js +187 -0
  637. package/index-c149ea48.js.map +1 -0
  638. package/index-cf3939c6.js +76 -0
  639. package/index-cf3939c6.js.map +1 -0
  640. package/index-cf859f03.js +540 -0
  641. package/index-cf859f03.js.map +1 -0
  642. package/{index-95ac9232.js → index-e33f7f55.js} +11 -25
  643. package/index-e33f7f55.js.map +1 -0
  644. package/{index-b8de16d6.js → index-eabd1e7e.js} +39 -48
  645. package/index-eabd1e7e.js.map +1 -0
  646. package/index-ebb62af1.js +51 -0
  647. package/index-ebb62af1.js.map +1 -0
  648. package/{index-0fd24497.js → index-edf844f0.js} +57 -4
  649. package/index-edf844f0.js.map +1 -0
  650. package/index.d.ts +176 -124
  651. package/index.js +84 -63
  652. package/index.js.map +1 -1
  653. package/index.module-6b7ed635.js +4 -0
  654. package/index.module-6b7ed635.js.map +1 -0
  655. package/lame.all.js +2537 -0
  656. package/lame.all.js.map +1 -0
  657. package/package.json +62 -41
  658. package/resolvedReplyType-8776d777.js +29 -0
  659. package/resolvedReplyType-8776d777.js.map +1 -0
  660. package/sendbirdSelectors.js +307 -417
  661. package/sendbirdSelectors.js.map +1 -1
  662. package/{stringSet-7ace5726.js → stringSet-e0ee1265.js} +112 -90
  663. package/stringSet-e0ee1265.js.map +1 -0
  664. package/tokenize-1b053c86.js +159 -0
  665. package/tokenize-1b053c86.js.map +1 -0
  666. package/topics-70f569e9.js +16 -0
  667. package/topics-70f569e9.js.map +1 -0
  668. package/types-77bbdda6.js +15 -0
  669. package/types-77bbdda6.js.map +1 -0
  670. package/ui/Accordion.js +21 -24
  671. package/ui/Accordion.js.map +1 -1
  672. package/ui/AccordionGroup.js +10 -13
  673. package/ui/AccordionGroup.js.map +1 -1
  674. package/ui/AdminMessage.js +10 -13
  675. package/ui/AdminMessage.js.map +1 -1
  676. package/ui/Avatar.js +57 -79
  677. package/ui/Avatar.js.map +1 -1
  678. package/ui/Badge.js +16 -15
  679. package/ui/Badge.js.map +1 -1
  680. package/ui/BottomSheet.js +14 -12
  681. package/ui/BottomSheet.js.map +1 -1
  682. package/ui/Button.js +20 -35
  683. package/ui/Button.js.map +1 -1
  684. package/ui/ChannelAvatar.js +38 -41
  685. package/ui/ChannelAvatar.js.map +1 -1
  686. package/ui/Checkbox.js +11 -13
  687. package/ui/Checkbox.js.map +1 -1
  688. package/ui/ConnectionStatus.js +7 -5
  689. package/ui/ConnectionStatus.js.map +1 -1
  690. package/ui/ContextMenu.js +176 -200
  691. package/ui/ContextMenu.js.map +1 -1
  692. package/ui/DateSeparator.js +12 -14
  693. package/ui/DateSeparator.js.map +1 -1
  694. package/ui/EmojiReactions.js +300 -108
  695. package/ui/EmojiReactions.js.map +1 -1
  696. package/ui/FileMessageItemBody.js +22 -23
  697. package/ui/FileMessageItemBody.js.map +1 -1
  698. package/ui/FileViewer.js +36 -36
  699. package/ui/FileViewer.js.map +1 -1
  700. package/ui/Icon.js +448 -622
  701. package/ui/Icon.js.map +1 -1
  702. package/ui/IconButton.js +20 -31
  703. package/ui/IconButton.js.map +1 -1
  704. package/ui/ImageRenderer.js +34 -43
  705. package/ui/ImageRenderer.js.map +1 -1
  706. package/ui/Input.js +16 -16
  707. package/ui/Input.js.map +1 -1
  708. package/ui/Label.js +2 -2
  709. package/ui/LinkLabel.js +4 -3
  710. package/ui/LinkLabel.js.map +1 -1
  711. package/ui/Loader.js +10 -12
  712. package/ui/Loader.js.map +1 -1
  713. package/ui/MentionLabel.js +58 -65
  714. package/ui/MentionLabel.js.map +1 -1
  715. package/ui/MentionUserLabel.js +12 -10
  716. package/ui/MentionUserLabel.js.map +1 -1
  717. package/ui/MessageContent.js +215 -551
  718. package/ui/MessageContent.js.map +1 -1
  719. package/ui/MessageInput.js +392 -120
  720. package/ui/MessageInput.js.map +1 -1
  721. package/ui/MessageItemMenu.js +83 -83
  722. package/ui/MessageItemMenu.js.map +1 -1
  723. package/ui/MessageItemReactionMenu.js +58 -62
  724. package/ui/MessageItemReactionMenu.js.map +1 -1
  725. package/ui/MessageSearchFileItem.js +55 -50
  726. package/ui/MessageSearchFileItem.js.map +1 -1
  727. package/ui/MessageSearchItem.js +41 -40
  728. package/ui/MessageSearchItem.js.map +1 -1
  729. package/ui/MessageStatus.js +10 -11
  730. package/ui/MessageStatus.js.map +1 -1
  731. package/ui/Modal.js +52 -46
  732. package/ui/Modal.js.map +1 -1
  733. package/ui/MutedAvatarOverlay.js +10 -10
  734. package/ui/MutedAvatarOverlay.js.map +1 -1
  735. package/ui/OGMessageItemBody.js +68 -64
  736. package/ui/OGMessageItemBody.js.map +1 -1
  737. package/ui/OpenChannelAdminMessage.js +8 -7
  738. package/ui/OpenChannelAdminMessage.js.map +1 -1
  739. package/ui/OpenChannelAvatar.js +18 -17
  740. package/ui/OpenChannelAvatar.js.map +1 -1
  741. package/ui/OpenchannelConversationHeader.js +17 -13
  742. package/ui/OpenchannelConversationHeader.js.map +1 -1
  743. package/ui/OpenchannelFileMessage.js +140 -151
  744. package/ui/OpenchannelFileMessage.js.map +1 -1
  745. package/ui/OpenchannelOGMessage.js +204 -233
  746. package/ui/OpenchannelOGMessage.js.map +1 -1
  747. package/ui/OpenchannelThumbnailMessage.js +215 -222
  748. package/ui/OpenchannelThumbnailMessage.js.map +1 -1
  749. package/ui/OpenchannelUserMessage.js +168 -178
  750. package/ui/OpenchannelUserMessage.js.map +1 -1
  751. package/ui/PlaceHolder.js +5 -6
  752. package/ui/PlaceHolder.js.map +1 -1
  753. package/ui/PlaybackTime.js +26 -0
  754. package/ui/PlaybackTime.js.map +1 -0
  755. package/ui/ProgressBar.js +30 -0
  756. package/ui/ProgressBar.js.map +1 -0
  757. package/ui/QuoteMessage.js +50 -44
  758. package/ui/QuoteMessage.js.map +1 -1
  759. package/ui/QuoteMessageInput.js +31 -29
  760. package/ui/QuoteMessageInput.js.map +1 -1
  761. package/ui/ReactionBadge.js +13 -21
  762. package/ui/ReactionBadge.js.map +1 -1
  763. package/ui/ReactionButton.js +30 -27
  764. package/ui/ReactionButton.js.map +1 -1
  765. package/ui/SortByRow.js +14 -18
  766. package/ui/SortByRow.js.map +1 -1
  767. package/ui/TextButton.js +13 -21
  768. package/ui/TextButton.js.map +1 -1
  769. package/ui/TextMessageItemBody.js +41 -48
  770. package/ui/TextMessageItemBody.js.map +1 -1
  771. package/ui/ThreadReplies.js +25 -22
  772. package/ui/ThreadReplies.js.map +1 -1
  773. package/ui/ThumbnailMessageItemBody.js +36 -45
  774. package/ui/ThumbnailMessageItemBody.js.map +1 -1
  775. package/ui/Toggle.js +191 -0
  776. package/ui/Toggle.js.map +1 -0
  777. package/ui/Tooltip.js +8 -9
  778. package/ui/Tooltip.js.map +1 -1
  779. package/ui/TooltipWrapper.js +17 -20
  780. package/ui/TooltipWrapper.js.map +1 -1
  781. package/ui/UnknownMessageItemBody.js +21 -22
  782. package/ui/UnknownMessageItemBody.js.map +1 -1
  783. package/ui/UserListItem.js +76 -76
  784. package/ui/UserListItem.js.map +1 -1
  785. package/ui/UserProfile.js +31 -29
  786. package/ui/UserProfile.js.map +1 -1
  787. package/ui/VoiceMessageItemBody.js +110 -0
  788. package/ui/VoiceMessageItemBody.js.map +1 -0
  789. package/ui/VoiceMessgeInput.js +14 -0
  790. package/ui/VoiceMessgeInput.js.map +1 -0
  791. package/ui/Word.js +31 -39
  792. package/ui/Word.js.map +1 -1
  793. package/useDirtyGetMentions-f00f1f94.js +75 -0
  794. package/useDirtyGetMentions-f00f1f94.js.map +1 -0
  795. package/useLongPress-1ab49410.js +85 -0
  796. package/useLongPress-1ab49410.js.map +1 -0
  797. package/useSendbirdStateContext.js +2 -3
  798. package/useSendbirdStateContext.js.map +1 -1
  799. package/utils/message/getOutgoingMessageState.js +9 -15
  800. package/utils/message/getOutgoingMessageState.js.map +1 -1
  801. package/utils/message/isVoiceMessage.js +8 -0
  802. package/utils/message/isVoiceMessage.js.map +1 -0
  803. package/{utils-30c326f7.js → utils-56cb7de5.js} +1 -1
  804. package/{utils-30c326f7.js.map → utils-56cb7de5.js.map} +1 -1
  805. package/utils-77f7e8b2.js +29 -0
  806. package/utils-77f7e8b2.js.map +1 -0
  807. package/{utils-ded73fa5.js → utils-7f3d0d8c.js} +3 -7
  808. package/{utils-ded73fa5.js.map → utils-7f3d0d8c.js.map} +1 -1
  809. package/utils-af9b1c06.js +31 -0
  810. package/utils-af9b1c06.js.map +1 -0
  811. package/uuid-92d22300.js +13 -0
  812. package/{uuid-968941a0.js.map → uuid-92d22300.js.map} +1 -1
  813. package/withSendbird.js +5 -6
  814. package/withSendbird.js.map +1 -1
  815. package/ChannelListProvider-ade145a7.js.map +0 -1
  816. package/ChannelProvider-c9db10c0.js.map +0 -1
  817. package/CreateChannelProvider-be2dfe96.js +0 -55
  818. package/CreateChannelProvider-be2dfe96.js.map +0 -1
  819. package/LocalizationContext-60894e38.js +0 -22
  820. package/MediaQueryContext-bcf72e28.js +0 -90
  821. package/MediaQueryContext-bcf72e28.js.map +0 -1
  822. package/MemberList-ce1fd162.js +0 -435
  823. package/MemberList-ce1fd162.js.map +0 -1
  824. package/NotificationChannel/components/NotificationChannelUI.js +0 -119
  825. package/NotificationChannel/components/NotificationChannelUI.js.map +0 -1
  826. package/NotificationChannel/components/NotificationList.js +0 -111
  827. package/NotificationChannel/components/NotificationList.js.map +0 -1
  828. package/NotificationChannel/components/NotificationMessageWrap.js +0 -136
  829. package/NotificationChannel/components/NotificationMessageWrap.js.map +0 -1
  830. package/NotificationChannel/context.js +0 -12
  831. package/NotificationChannel.js +0 -58
  832. package/NotificationChannel.js.map +0 -1
  833. package/NotificationChannelProvider-2cb7ca21.js +0 -535
  834. package/NotificationChannelProvider-2cb7ca21.js.map +0 -1
  835. package/OpenChannelListProvider-0bdafda1.js +0 -434
  836. package/OpenChannelListProvider-0bdafda1.js.map +0 -1
  837. package/OpenChannelProvider-a72c6fb7.js +0 -2000
  838. package/OpenChannelProvider-a72c6fb7.js.map +0 -1
  839. package/RemoveMessageModal-b025d4a7.js +0 -31
  840. package/RemoveMessageModal-b025d4a7.js.map +0 -1
  841. package/ThreadProvider-de5a7889.js +0 -1644
  842. package/ThreadProvider-de5a7889.js.map +0 -1
  843. package/_rollupPluginBabelHelpers-ed44209e.js.map +0 -1
  844. package/actionTypes-aa58fd27.js +0 -6
  845. package/actionTypes-aa58fd27.js.map +0 -1
  846. package/cjs/ChannelListProvider-65473831.js.map +0 -1
  847. package/cjs/ChannelProvider-1e08a7a9.js.map +0 -1
  848. package/cjs/CreateChannelProvider-cbf490c6.js +0 -62
  849. package/cjs/CreateChannelProvider-cbf490c6.js.map +0 -1
  850. package/cjs/MediaQueryContext-e455934a.js +0 -97
  851. package/cjs/MediaQueryContext-e455934a.js.map +0 -1
  852. package/cjs/MemberList-aee91fce.js +0 -441
  853. package/cjs/MemberList-aee91fce.js.map +0 -1
  854. package/cjs/NotificationChannel/components/NotificationChannelUI.js +0 -125
  855. package/cjs/NotificationChannel/components/NotificationChannelUI.js.map +0 -1
  856. package/cjs/NotificationChannel/components/NotificationList.js +0 -117
  857. package/cjs/NotificationChannel/components/NotificationList.js.map +0 -1
  858. package/cjs/NotificationChannel/components/NotificationMessageWrap.js +0 -142
  859. package/cjs/NotificationChannel/components/NotificationMessageWrap.js.map +0 -1
  860. package/cjs/NotificationChannel/context.js +0 -21
  861. package/cjs/NotificationChannel.js +0 -64
  862. package/cjs/NotificationChannel.js.map +0 -1
  863. package/cjs/NotificationChannelProvider-4cc9575f.js +0 -543
  864. package/cjs/NotificationChannelProvider-4cc9575f.js.map +0 -1
  865. package/cjs/OpenChannelListProvider-4aab4391.js +0 -443
  866. package/cjs/OpenChannelListProvider-4aab4391.js.map +0 -1
  867. package/cjs/OpenChannelProvider-a763b71c.js +0 -2009
  868. package/cjs/OpenChannelProvider-a763b71c.js.map +0 -1
  869. package/cjs/RemoveMessageModal-0da4f94b.js.map +0 -1
  870. package/cjs/ThreadProvider-51be09a5.js +0 -1653
  871. package/cjs/ThreadProvider-51be09a5.js.map +0 -1
  872. package/cjs/_rollupPluginBabelHelpers-bd6baf0a.js.map +0 -1
  873. package/cjs/actionTypes-561bdde9.js +0 -10
  874. package/cjs/actionTypes-561bdde9.js.map +0 -1
  875. package/cjs/color-fdbe394d.js.map +0 -1
  876. package/cjs/compareIds-d0c02eca.js.map +0 -1
  877. package/cjs/const-8785e4ad.js.map +0 -1
  878. package/cjs/const-beb25e10.js +0 -20
  879. package/cjs/const-beb25e10.js.map +0 -1
  880. package/cjs/index-08d232f8.js.map +0 -1
  881. package/cjs/index-8a4b2f10.js +0 -59
  882. package/cjs/index-8a4b2f10.js.map +0 -1
  883. package/cjs/index-8c350889.js +0 -194
  884. package/cjs/index-8c350889.js.map +0 -1
  885. package/cjs/index-b3371ef2.js +0 -701
  886. package/cjs/index-b3371ef2.js.map +0 -1
  887. package/cjs/index-bdd889a2.js.map +0 -1
  888. package/cjs/index-c13771a7.js.map +0 -1
  889. package/cjs/index-e191d245.js.map +0 -1
  890. package/cjs/index-e8544e24.js.map +0 -1
  891. package/cjs/index-ebb542c3.js.map +0 -1
  892. package/cjs/index-f032bd2c.js +0 -360
  893. package/cjs/index-f032bd2c.js.map +0 -1
  894. package/cjs/stringSet-60660a99.js.map +0 -1
  895. package/cjs/topics-f3f74edc.js +0 -22
  896. package/cjs/topics-f3f74edc.js.map +0 -1
  897. package/cjs/tslib.es6-5a7eb30d.js +0 -110
  898. package/cjs/tslib.es6-5a7eb30d.js.map +0 -1
  899. package/cjs/useLongPress-e7140087.js +0 -118
  900. package/cjs/useLongPress-e7140087.js.map +0 -1
  901. package/cjs/utils-693dd952.js +0 -38
  902. package/cjs/utils-693dd952.js.map +0 -1
  903. package/cjs/utils-b6001dd4.js +0 -32
  904. package/cjs/utils-b6001dd4.js.map +0 -1
  905. package/cjs/uuid-a9006ea2.js +0 -19
  906. package/compareIds-063e5503.js.map +0 -1
  907. package/const-14919575.js +0 -14
  908. package/const-14919575.js.map +0 -1
  909. package/const-1510a671.js.map +0 -1
  910. package/context-d5dc28c9.js +0 -12
  911. package/index-0fd24497.js.map +0 -1
  912. package/index-2561104e.js +0 -179
  913. package/index-2561104e.js.map +0 -1
  914. package/index-54843058.js +0 -57
  915. package/index-54843058.js.map +0 -1
  916. package/index-58e5d82d.js +0 -662
  917. package/index-58e5d82d.js.map +0 -1
  918. package/index-7c1f570b.js.map +0 -1
  919. package/index-95ac9232.js.map +0 -1
  920. package/index-b8de16d6.js.map +0 -1
  921. package/index-d07faed8.js +0 -353
  922. package/index-d07faed8.js.map +0 -1
  923. package/index-d81c515b.js.map +0 -1
  924. package/index-fd15e3b0.js.map +0 -1
  925. package/stringSet-7ace5726.js.map +0 -1
  926. package/topics-d390daf6.js +0 -13
  927. package/topics-d390daf6.js.map +0 -1
  928. package/tslib.es6-d9fa3716.js +0 -104
  929. package/tslib.es6-d9fa3716.js.map +0 -1
  930. package/useLongPress-7d9a5f67.js +0 -116
  931. package/useLongPress-7d9a5f67.js.map +0 -1
  932. package/utils-40ce4da5.js +0 -34
  933. package/utils-40ce4da5.js.map +0 -1
  934. package/utils-d485030c.js +0 -30
  935. package/utils-d485030c.js.map +0 -1
  936. package/uuid-968941a0.js +0 -17
@@ -0,0 +1,1704 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var index = require('./index-869e9a94.js');
5
+ var utils_message_getOutgoingMessageState = require('./utils/message/getOutgoingMessageState.js');
6
+ var UserProfileContext = require('./UserProfileContext-87580795.js');
7
+ var useSendbirdStateContext = require('./useSendbirdStateContext.js');
8
+ var _rollupPluginBabelHelpers = require('./_rollupPluginBabelHelpers-c89f311a.js');
9
+ var Thread_context_types = require('./Thread/context/types.js');
10
+ var SendbirdChat = require('@sendbird/chat');
11
+ var topics = require('./topics-b384e6b3.js');
12
+ var groupChannel = require('@sendbird/chat/groupChannel');
13
+ var uuid = require('./uuid-12b01f73.js');
14
+ var message = require('@sendbird/chat/message');
15
+ var consts = require('./consts-5e0f96b3.js');
16
+
17
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
+
19
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
20
+
21
+ const getNicknamesMapFromMembers = function () {
22
+ let members = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
23
+ const nicknamesMap = new Map();
24
+ for (let memberIndex = 0; memberIndex < members.length; memberIndex += 1) {
25
+ const {
26
+ userId,
27
+ nickname
28
+ } = members[memberIndex];
29
+ nicknamesMap.set(userId, nickname);
30
+ }
31
+ return nicknamesMap;
32
+ };
33
+ const getParentMessageFrom = message => {
34
+ if (!message) {
35
+ return null;
36
+ }
37
+ if (isParentMessage(message)) {
38
+ return message;
39
+ }
40
+ if (isThreadMessage(message)) {
41
+ return (message === null || message === void 0 ? void 0 : message.parentMessage) || null;
42
+ }
43
+ return null;
44
+ };
45
+ const isParentMessage = message => {
46
+ return (message === null || message === void 0 ? void 0 : message.parentMessage) === null && typeof (message === null || message === void 0 ? void 0 : message.parentMessageId) === 'number' && !(message !== null && message !== void 0 && message.parentMessageId);
47
+ };
48
+ const isThreadMessage = message => {
49
+ return (message === null || message === void 0 ? void 0 : message.parentMessage) !== null && typeof (message === null || message === void 0 ? void 0 : message.parentMessageId) === 'number' && (message === null || message === void 0 ? void 0 : message.parentMessageId) > 0 && (message === null || message === void 0 ? void 0 : message.threadInfo) === null;
50
+ };
51
+ const isAboutSame = (a, b, px) => Math.abs(a - b) <= px;
52
+ const isEmpty = val => val === null || val === undefined;
53
+
54
+ // Some Ids return string and number inconsistently
55
+ // only use to comapre IDs
56
+ function compareIds(a, b) {
57
+ if (isEmpty(a) || isEmpty(b)) {
58
+ return false;
59
+ }
60
+ const aString = a.toString();
61
+ const bString = b.toString();
62
+ return aString === bString;
63
+ }
64
+ const getMessageCreatedAt = message => index.format(message.createdAt, 'p');
65
+ const isReadMessage = (channel, message) => utils_message_getOutgoingMessageState.getOutgoingMessageState(channel, message) === utils_message_getOutgoingMessageState.OutgoingMessageStates.READ;
66
+ const isSameGroup = (message, comparingMessage, currentChannel) => {
67
+ var _message$sender, _comparingMessage$sen, _message$sender2, _comparingMessage$sen2;
68
+ if (!(message && comparingMessage && message.messageType && message.messageType !== 'admin' && comparingMessage.messageType && (comparingMessage === null || comparingMessage === void 0 ? void 0 : comparingMessage.messageType) !== 'admin' && message !== null && message !== void 0 && message.sender && comparingMessage !== null && comparingMessage !== void 0 && comparingMessage.sender && message !== null && message !== void 0 && message.createdAt && comparingMessage !== null && comparingMessage !== void 0 && comparingMessage.createdAt && message !== null && message !== void 0 && (_message$sender = message.sender) !== null && _message$sender !== void 0 && _message$sender.userId && comparingMessage !== null && comparingMessage !== void 0 && (_comparingMessage$sen = comparingMessage.sender) !== null && _comparingMessage$sen !== void 0 && _comparingMessage$sen.userId)) {
69
+ return false;
70
+ }
71
+ return (message === null || message === void 0 ? void 0 : message.sendingStatus) === (comparingMessage === null || comparingMessage === void 0 ? void 0 : comparingMessage.sendingStatus) && (message === null || message === void 0 ? void 0 : (_message$sender2 = message.sender) === null || _message$sender2 === void 0 ? void 0 : _message$sender2.userId) === (comparingMessage === null || comparingMessage === void 0 ? void 0 : (_comparingMessage$sen2 = comparingMessage.sender) === null || _comparingMessage$sen2 === void 0 ? void 0 : _comparingMessage$sen2.userId) && getMessageCreatedAt(message) === getMessageCreatedAt(comparingMessage) && isReadMessage(currentChannel, message) === isReadMessage(currentChannel, comparingMessage);
72
+ };
73
+ const compareMessagesForGrouping = (prevMessage, currMessage, nextMessage, currentChannel, replyType) => {
74
+ if (replyType === 'THREAD' && currMessage !== null && currMessage !== void 0 && currMessage.threadInfo) {
75
+ return [false, false];
76
+ }
77
+ const sendingStatus = (currMessage === null || currMessage === void 0 ? void 0 : currMessage.sendingStatus) || '';
78
+ const isAcceptable = sendingStatus !== 'pending' && sendingStatus !== 'failed';
79
+ return [isSameGroup(prevMessage, currMessage, currentChannel) && isAcceptable, isSameGroup(currMessage, nextMessage, currentChannel) && isAcceptable];
80
+ };
81
+ const scrollIntoLast = function () {
82
+ let intialTry = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
83
+ const MAX_TRIES = 10;
84
+ const currentTry = intialTry;
85
+ if (currentTry > MAX_TRIES) {
86
+ return;
87
+ }
88
+ try {
89
+ const scrollDOM = document.querySelector('.sendbird-thread-ui--scroll');
90
+ // eslint-disable-next-line no-multi-assign
91
+ scrollDOM.scrollTop = scrollDOM.scrollHeight;
92
+ } catch (error) {
93
+ setTimeout(() => {
94
+ scrollIntoLast(currentTry + 1);
95
+ }, 500 * currentTry);
96
+ }
97
+ };
98
+
99
+ const PREV_THREADS_FETCH_SIZE = 30;
100
+ const NEXT_THREADS_FETCH_SIZE = 30;
101
+
102
+ let ThreadContextActionTypes = /*#__PURE__*/function (ThreadContextActionTypes) {
103
+ ThreadContextActionTypes["INIT_USER_ID"] = "INIT_USER_ID";
104
+ ThreadContextActionTypes["GET_CHANNEL_START"] = "GET_CHANNEL_START";
105
+ ThreadContextActionTypes["GET_CHANNEL_SUCCESS"] = "GET_CHANNEL_SUCCESS";
106
+ ThreadContextActionTypes["GET_CHANNEL_FAILURE"] = "GET_CHANNEL_FAILURE";
107
+ ThreadContextActionTypes["SET_EMOJI_CONTAINER"] = "SET_EMOJI_CONTAINER";
108
+ ThreadContextActionTypes["GET_PARENT_MESSAGE_START"] = "GET_PARENT_MESSAGE_START";
109
+ ThreadContextActionTypes["GET_PARENT_MESSAGE_SUCCESS"] = "GET_PARENT_MESSAGE_SUCCESS";
110
+ ThreadContextActionTypes["GET_PARENT_MESSAGE_FAILURE"] = "GET_PARENT_MESSAGE_FAILURE";
111
+ ThreadContextActionTypes["INITIALIZE_THREAD_LIST_START"] = "INITIALIZE_THREAD_LIST_START";
112
+ ThreadContextActionTypes["INITIALIZE_THREAD_LIST_SUCCESS"] = "INITIALIZE_THREAD_LIST_SUCCESS";
113
+ ThreadContextActionTypes["INITIALIZE_THREAD_LIST_FAILURE"] = "INITIALIZE_THREAD_LIST_FAILURE";
114
+ ThreadContextActionTypes["GET_PREV_MESSAGES_START"] = "GET_PREV_MESSAGES_START";
115
+ ThreadContextActionTypes["GET_PREV_MESSAGES_SUCESS"] = "GET_PREV_MESSAGES_SUCESS";
116
+ ThreadContextActionTypes["GET_PREV_MESSAGES_FAILURE"] = "GET_PREV_MESSAGES_FAILURE";
117
+ ThreadContextActionTypes["GET_NEXT_MESSAGES_START"] = "GET_NEXT_MESSAGES_START";
118
+ ThreadContextActionTypes["GET_NEXT_MESSAGES_SUCESS"] = "GET_NEXT_MESSAGES_SUCESS";
119
+ ThreadContextActionTypes["GET_NEXT_MESSAGES_FAILURE"] = "GET_NEXT_MESSAGES_FAILURE";
120
+ ThreadContextActionTypes["SEND_MESSAGE_START"] = "SEND_MESSAGE_START";
121
+ ThreadContextActionTypes["SEND_MESSAGE_SUCESS"] = "SEND_MESSAGE_SUCESS";
122
+ ThreadContextActionTypes["SEND_MESSAGE_FAILURE"] = "SEND_MESSAGE_FAILURE";
123
+ ThreadContextActionTypes["RESEND_MESSAGE_START"] = "RESEND_MESSAGE_START";
124
+ ThreadContextActionTypes["ON_MESSAGE_DELETED_BY_REQ_ID"] = "ON_MESSAGE_DELETED_BY_REQ_ID";
125
+ ThreadContextActionTypes["ON_MESSAGE_RECEIVED"] = "ON_MESSAGE_RECEIVED";
126
+ ThreadContextActionTypes["ON_MESSAGE_UPDATED"] = "ON_MESSAGE_UPDATED";
127
+ ThreadContextActionTypes["ON_MESSAGE_DELETED"] = "ON_MESSAGE_DELETED";
128
+ ThreadContextActionTypes["ON_REACTION_UPDATED"] = "ON_REACTION_UPDATED";
129
+ ThreadContextActionTypes["ON_USER_MUTED"] = "ON_USER_MUTED";
130
+ ThreadContextActionTypes["ON_USER_UNMUTED"] = "ON_USER_UNMUTED";
131
+ ThreadContextActionTypes["ON_USER_BANNED"] = "ON_USER_BANNED";
132
+ ThreadContextActionTypes["ON_USER_UNBANNED"] = "ON_USER_UNBANNED";
133
+ ThreadContextActionTypes["ON_USER_LEFT"] = "ON_USER_LEFT";
134
+ ThreadContextActionTypes["ON_CHANNEL_FROZEN"] = "ON_CHANNEL_FROZEN";
135
+ ThreadContextActionTypes["ON_CHANNEL_UNFROZEN"] = "ON_CHANNEL_UNFROZEN";
136
+ ThreadContextActionTypes["ON_OPERATOR_UPDATED"] = "ON_OPERATOR_UPDATED";
137
+ return ThreadContextActionTypes;
138
+ }({});
139
+
140
+ function reducer(state, action) {
141
+ switch (action.type) {
142
+ // initialize
143
+ case ThreadContextActionTypes.INIT_USER_ID:
144
+ {
145
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
146
+ currentUserId: action.payload
147
+ });
148
+ }
149
+ case ThreadContextActionTypes.GET_CHANNEL_START:
150
+ {
151
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
152
+ channelState: Thread_context_types.ChannelStateTypes.LOADING,
153
+ currentChannel: null
154
+ });
155
+ }
156
+ case ThreadContextActionTypes.GET_CHANNEL_SUCCESS:
157
+ {
158
+ var _groupChannel$members, _groupChannel$members2;
159
+ const groupChannel = action.payload.groupChannel;
160
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
161
+ channelState: Thread_context_types.ChannelStateTypes.INITIALIZED,
162
+ currentChannel: groupChannel,
163
+ // only support in normal group channel
164
+ isMuted: (groupChannel === null || groupChannel === void 0 ? void 0 : (_groupChannel$members = groupChannel.members) === null || _groupChannel$members === void 0 ? void 0 : (_groupChannel$members2 = _groupChannel$members.find(member => (member === null || member === void 0 ? void 0 : member.userId) === state.currentUserId)) === null || _groupChannel$members2 === void 0 ? void 0 : _groupChannel$members2.isMuted) || false,
165
+ isChannelFrozen: (groupChannel === null || groupChannel === void 0 ? void 0 : groupChannel.isFrozen) || false
166
+ });
167
+ }
168
+ case ThreadContextActionTypes.GET_CHANNEL_FAILURE:
169
+ {
170
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
171
+ channelState: Thread_context_types.ChannelStateTypes.INVALID,
172
+ currentChannel: null
173
+ });
174
+ }
175
+ case ThreadContextActionTypes.SET_EMOJI_CONTAINER:
176
+ {
177
+ const {
178
+ emojiContainer
179
+ } = action.payload;
180
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
181
+ emojiContainer: emojiContainer
182
+ });
183
+ }
184
+ case ThreadContextActionTypes.GET_PARENT_MESSAGE_START:
185
+ {
186
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
187
+ parentMessageState: Thread_context_types.ParentMessageStateTypes.LOADING,
188
+ parentMessage: null
189
+ });
190
+ }
191
+ case ThreadContextActionTypes.GET_PARENT_MESSAGE_SUCCESS:
192
+ {
193
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
194
+ parentMessageState: Thread_context_types.ParentMessageStateTypes.INITIALIZED,
195
+ parentMessage: action.payload.parentMessage
196
+ });
197
+ }
198
+ case ThreadContextActionTypes.GET_PARENT_MESSAGE_FAILURE:
199
+ {
200
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
201
+ parentMessageState: Thread_context_types.ParentMessageStateTypes.INVALID,
202
+ parentMessage: null
203
+ });
204
+ }
205
+ // fetch threads
206
+ case ThreadContextActionTypes.INITIALIZE_THREAD_LIST_START:
207
+ {
208
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
209
+ threadListState: Thread_context_types.ThreadListStateTypes.LOADING,
210
+ allThreadMessages: []
211
+ });
212
+ }
213
+ case ThreadContextActionTypes.INITIALIZE_THREAD_LIST_SUCCESS:
214
+ {
215
+ const {
216
+ parentMessage,
217
+ anchorMessage,
218
+ threadedMessages
219
+ } = action.payload;
220
+ const anchorMessageCreatedAt = !(anchorMessage !== null && anchorMessage !== void 0 && anchorMessage.messageId) ? parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.createdAt : anchorMessage === null || anchorMessage === void 0 ? void 0 : anchorMessage.createdAt;
221
+ const anchorIndex = threadedMessages.findIndex(message => (message === null || message === void 0 ? void 0 : message.createdAt) > anchorMessageCreatedAt);
222
+ const prevThreadMessages = anchorIndex > -1 ? threadedMessages.slice(0, anchorIndex) : threadedMessages;
223
+ const anchorThreadMessage = anchorMessage !== null && anchorMessage !== void 0 && anchorMessage.messageId ? [anchorMessage] : [];
224
+ const nextThreadMessages = anchorIndex > -1 ? threadedMessages.slice(anchorIndex) : [];
225
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
226
+ threadListState: Thread_context_types.ThreadListStateTypes.INITIALIZED,
227
+ hasMorePrev: anchorIndex === -1 || anchorIndex === PREV_THREADS_FETCH_SIZE,
228
+ hasMoreNext: threadedMessages.length - anchorIndex === NEXT_THREADS_FETCH_SIZE,
229
+ allThreadMessages: [prevThreadMessages, anchorThreadMessage, nextThreadMessages].flat()
230
+ });
231
+ }
232
+ case ThreadContextActionTypes.INITIALIZE_THREAD_LIST_FAILURE:
233
+ {
234
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
235
+ threadListState: Thread_context_types.ThreadListStateTypes.INVALID,
236
+ allThreadMessages: []
237
+ });
238
+ }
239
+ case ThreadContextActionTypes.GET_NEXT_MESSAGES_START:
240
+ {
241
+ return _rollupPluginBabelHelpers._objectSpread2({}, state);
242
+ }
243
+ case ThreadContextActionTypes.GET_NEXT_MESSAGES_SUCESS:
244
+ {
245
+ const {
246
+ threadedMessages
247
+ } = action.payload;
248
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
249
+ hasMoreNext: threadedMessages.length === NEXT_THREADS_FETCH_SIZE,
250
+ allThreadMessages: [...state.allThreadMessages, ...threadedMessages]
251
+ });
252
+ }
253
+ case ThreadContextActionTypes.GET_NEXT_MESSAGES_FAILURE:
254
+ {
255
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
256
+ hasMoreNext: false
257
+ });
258
+ }
259
+ case ThreadContextActionTypes.GET_PREV_MESSAGES_START:
260
+ {
261
+ return _rollupPluginBabelHelpers._objectSpread2({}, state);
262
+ }
263
+ case ThreadContextActionTypes.GET_PREV_MESSAGES_SUCESS:
264
+ {
265
+ const {
266
+ threadedMessages
267
+ } = action.payload;
268
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
269
+ hasMorePrev: threadedMessages.length === PREV_THREADS_FETCH_SIZE,
270
+ allThreadMessages: [...threadedMessages, ...state.allThreadMessages]
271
+ });
272
+ }
273
+ case ThreadContextActionTypes.GET_PREV_MESSAGES_FAILURE:
274
+ {
275
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
276
+ hasMorePrev: false
277
+ });
278
+ }
279
+ // event handlers - message status change
280
+ case ThreadContextActionTypes.ON_MESSAGE_RECEIVED:
281
+ {
282
+ var _state$currentChannel, _message$parentMessag, _state$parentMessage, _state$parentMessage2;
283
+ const {
284
+ channel,
285
+ message
286
+ } = action.payload;
287
+ if (((_state$currentChannel = state.currentChannel) === null || _state$currentChannel === void 0 ? void 0 : _state$currentChannel.url) !== (channel === null || channel === void 0 ? void 0 : channel.url) || state.hasMoreNext || (message === null || message === void 0 ? void 0 : (_message$parentMessag = message.parentMessage) === null || _message$parentMessag === void 0 ? void 0 : _message$parentMessag.messageId) !== (state === null || state === void 0 ? void 0 : (_state$parentMessage = state.parentMessage) === null || _state$parentMessage === void 0 ? void 0 : _state$parentMessage.messageId)) {
288
+ return state;
289
+ }
290
+ const isAlreadyReceived = state.allThreadMessages.findIndex(m => m.messageId === message.messageId) > -1;
291
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
292
+ parentMessage: ((_state$parentMessage2 = state.parentMessage) === null || _state$parentMessage2 === void 0 ? void 0 : _state$parentMessage2.messageId) === (message === null || message === void 0 ? void 0 : message.messageId) ? message : state.parentMessage,
293
+ allThreadMessages: isAlreadyReceived ? state.allThreadMessages.map(m => m.messageId === message.messageId ? message : m) : [...state.allThreadMessages.filter(m => (m === null || m === void 0 ? void 0 : m.reqId) !== (message === null || message === void 0 ? void 0 : message.reqId)), message]
294
+ });
295
+ }
296
+ case ThreadContextActionTypes.ON_MESSAGE_UPDATED:
297
+ {
298
+ var _state$currentChannel2, _state$parentMessage3, _state$allThreadMessa;
299
+ const {
300
+ channel,
301
+ message
302
+ } = action.payload;
303
+ if (((_state$currentChannel2 = state.currentChannel) === null || _state$currentChannel2 === void 0 ? void 0 : _state$currentChannel2.url) !== (channel === null || channel === void 0 ? void 0 : channel.url)) {
304
+ return state;
305
+ }
306
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
307
+ parentMessage: ((_state$parentMessage3 = state.parentMessage) === null || _state$parentMessage3 === void 0 ? void 0 : _state$parentMessage3.messageId) === (message === null || message === void 0 ? void 0 : message.messageId) ? message : state.parentMessage,
308
+ allThreadMessages: (_state$allThreadMessa = state.allThreadMessages) === null || _state$allThreadMessa === void 0 ? void 0 : _state$allThreadMessa.map(msg => (msg === null || msg === void 0 ? void 0 : msg.messageId) === (message === null || message === void 0 ? void 0 : message.messageId) ? message : msg)
309
+ });
310
+ }
311
+ case ThreadContextActionTypes.ON_MESSAGE_DELETED:
312
+ {
313
+ var _state$currentChannel3, _state$parentMessage4, _state$allThreadMessa2;
314
+ const {
315
+ channel,
316
+ messageId
317
+ } = action.payload;
318
+ if (((_state$currentChannel3 = state.currentChannel) === null || _state$currentChannel3 === void 0 ? void 0 : _state$currentChannel3.url) !== (channel === null || channel === void 0 ? void 0 : channel.url)) {
319
+ return state;
320
+ }
321
+ if ((state === null || state === void 0 ? void 0 : (_state$parentMessage4 = state.parentMessage) === null || _state$parentMessage4 === void 0 ? void 0 : _state$parentMessage4.messageId) === messageId) {
322
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
323
+ parentMessage: null,
324
+ parentMessageState: Thread_context_types.ParentMessageStateTypes.NIL,
325
+ allThreadMessages: []
326
+ });
327
+ }
328
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
329
+ allThreadMessages: (_state$allThreadMessa2 = state.allThreadMessages) === null || _state$allThreadMessa2 === void 0 ? void 0 : _state$allThreadMessa2.filter(msg => (msg === null || msg === void 0 ? void 0 : msg.messageId) !== messageId)
330
+ });
331
+ }
332
+ case ThreadContextActionTypes.ON_MESSAGE_DELETED_BY_REQ_ID:
333
+ {
334
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
335
+ allThreadMessages: state.allThreadMessages.filter(m => !compareIds(m.reqId, action.payload))
336
+ });
337
+ }
338
+ case ThreadContextActionTypes.ON_REACTION_UPDATED:
339
+ {
340
+ var _action$payload, _state$parentMessage5;
341
+ const reactionEvent = (_action$payload = action.payload) === null || _action$payload === void 0 ? void 0 : _action$payload.reactionEvent;
342
+ if ((state === null || state === void 0 ? void 0 : (_state$parentMessage5 = state.parentMessage) === null || _state$parentMessage5 === void 0 ? void 0 : _state$parentMessage5.messageId) === (reactionEvent === null || reactionEvent === void 0 ? void 0 : reactionEvent.messageId)) {
343
+ var _state$parentMessage6, _state$parentMessage7;
344
+ (_state$parentMessage6 = state.parentMessage) === null || _state$parentMessage6 === void 0 ? void 0 : (_state$parentMessage7 = _state$parentMessage6.applyReactionEvent) === null || _state$parentMessage7 === void 0 ? void 0 : _state$parentMessage7.call(_state$parentMessage6, reactionEvent);
345
+ }
346
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
347
+ allThreadMessages: state.allThreadMessages.map(m => {
348
+ if ((reactionEvent === null || reactionEvent === void 0 ? void 0 : reactionEvent.messageId) === (m === null || m === void 0 ? void 0 : m.messageId)) {
349
+ var _m$applyReactionEvent;
350
+ m === null || m === void 0 ? void 0 : (_m$applyReactionEvent = m.applyReactionEvent) === null || _m$applyReactionEvent === void 0 ? void 0 : _m$applyReactionEvent.call(m, reactionEvent);
351
+ return m;
352
+ }
353
+ return m;
354
+ })
355
+ });
356
+ }
357
+ // event handlers - user status change
358
+ case ThreadContextActionTypes.ON_USER_MUTED:
359
+ {
360
+ var _state$currentChannel4;
361
+ const {
362
+ channel,
363
+ user
364
+ } = action.payload;
365
+ if (((_state$currentChannel4 = state.currentChannel) === null || _state$currentChannel4 === void 0 ? void 0 : _state$currentChannel4.url) !== (channel === null || channel === void 0 ? void 0 : channel.url) || state.currentUserId !== (user === null || user === void 0 ? void 0 : user.userId)) {
366
+ return state;
367
+ }
368
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
369
+ isMuted: true
370
+ });
371
+ }
372
+ case ThreadContextActionTypes.ON_USER_UNMUTED:
373
+ {
374
+ var _state$currentChannel5;
375
+ const {
376
+ channel,
377
+ user
378
+ } = action.payload;
379
+ if (((_state$currentChannel5 = state.currentChannel) === null || _state$currentChannel5 === void 0 ? void 0 : _state$currentChannel5.url) !== (channel === null || channel === void 0 ? void 0 : channel.url) || state.currentUserId !== (user === null || user === void 0 ? void 0 : user.userId)) {
380
+ return state;
381
+ }
382
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
383
+ isMuted: false
384
+ });
385
+ }
386
+ case ThreadContextActionTypes.ON_USER_BANNED:
387
+ {
388
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
389
+ channelState: Thread_context_types.ChannelStateTypes.NIL,
390
+ threadListState: Thread_context_types.ThreadListStateTypes.NIL,
391
+ parentMessageState: Thread_context_types.ParentMessageStateTypes.NIL,
392
+ currentChannel: null,
393
+ parentMessage: null,
394
+ allThreadMessages: [],
395
+ hasMorePrev: false,
396
+ hasMoreNext: false
397
+ });
398
+ }
399
+ case ThreadContextActionTypes.ON_USER_UNBANNED:
400
+ {
401
+ return _rollupPluginBabelHelpers._objectSpread2({}, state);
402
+ }
403
+ case ThreadContextActionTypes.ON_USER_LEFT:
404
+ {
405
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
406
+ channelState: Thread_context_types.ChannelStateTypes.NIL,
407
+ threadListState: Thread_context_types.ThreadListStateTypes.NIL,
408
+ parentMessageState: Thread_context_types.ParentMessageStateTypes.NIL,
409
+ currentChannel: null,
410
+ parentMessage: null,
411
+ allThreadMessages: [],
412
+ hasMorePrev: false,
413
+ hasMoreNext: false
414
+ });
415
+ }
416
+ // event handler - channel status change
417
+ case ThreadContextActionTypes.ON_CHANNEL_FROZEN:
418
+ {
419
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
420
+ isChannelFrozen: true
421
+ });
422
+ }
423
+ case ThreadContextActionTypes.ON_CHANNEL_UNFROZEN:
424
+ {
425
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
426
+ isChannelFrozen: false
427
+ });
428
+ }
429
+ case ThreadContextActionTypes.ON_OPERATOR_UPDATED:
430
+ {
431
+ var _state$currentChannel6;
432
+ const {
433
+ channel
434
+ } = action.payload;
435
+ if ((channel === null || channel === void 0 ? void 0 : channel.url) === ((_state$currentChannel6 = state.currentChannel) === null || _state$currentChannel6 === void 0 ? void 0 : _state$currentChannel6.url)) {
436
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
437
+ currentChannel: channel
438
+ });
439
+ }
440
+ return state;
441
+ }
442
+ // message
443
+ case ThreadContextActionTypes.SEND_MESSAGE_START:
444
+ {
445
+ const {
446
+ message
447
+ } = action.payload;
448
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
449
+ allThreadMessages: [...state.allThreadMessages, message]
450
+ });
451
+ }
452
+ case ThreadContextActionTypes.SEND_MESSAGE_SUCESS:
453
+ {
454
+ const {
455
+ message
456
+ } = action.payload;
457
+ const filteredThreadMessages = state.allThreadMessages.filter(m => !compareIds(m === null || m === void 0 ? void 0 : m.reqId, message === null || message === void 0 ? void 0 : message.reqId));
458
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
459
+ allThreadMessages: [...filteredThreadMessages, message]
460
+ });
461
+ }
462
+ case ThreadContextActionTypes.SEND_MESSAGE_FAILURE:
463
+ {
464
+ const {
465
+ message
466
+ } = action.payload;
467
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
468
+ allThreadMessages: state.allThreadMessages.map(m => compareIds(m === null || m === void 0 ? void 0 : m.reqId, message === null || message === void 0 ? void 0 : message.reqId) ? message : m)
469
+ });
470
+ }
471
+ case ThreadContextActionTypes.RESEND_MESSAGE_START:
472
+ {
473
+ return _rollupPluginBabelHelpers._objectSpread2({}, state);
474
+ }
475
+ default:
476
+ {
477
+ return state;
478
+ }
479
+ }
480
+ }
481
+
482
+ const initialState = {
483
+ currentChannel: null,
484
+ allThreadMessages: [],
485
+ parentMessage: null,
486
+ channelState: Thread_context_types.ChannelStateTypes.NIL,
487
+ parentMessageState: Thread_context_types.ParentMessageStateTypes.NIL,
488
+ threadListState: Thread_context_types.ThreadListStateTypes.NIL,
489
+ hasMorePrev: false,
490
+ hasMoreNext: false,
491
+ emojiContainer: {},
492
+ isMuted: false,
493
+ isChannelFrozen: false,
494
+ currentUserId: ''
495
+ };
496
+
497
+ function useGetChannel(_ref, _ref2) {
498
+ let {
499
+ channelUrl,
500
+ sdkInit,
501
+ message
502
+ } = _ref;
503
+ let {
504
+ sdk,
505
+ logger,
506
+ threadDispatcher
507
+ } = _ref2;
508
+ React.useEffect(() => {
509
+ // validation check
510
+ if (sdkInit && channelUrl && sdk !== null && sdk !== void 0 && sdk.groupChannel) {
511
+ var _sdk$groupChannel$get, _sdk$groupChannel;
512
+ threadDispatcher({
513
+ type: ThreadContextActionTypes.GET_CHANNEL_START,
514
+ payload: null
515
+ });
516
+ (_sdk$groupChannel$get = (_sdk$groupChannel = sdk.groupChannel).getChannel) === null || _sdk$groupChannel$get === void 0 ? void 0 : _sdk$groupChannel$get.call(_sdk$groupChannel, channelUrl).then(groupChannel => {
517
+ logger.info('Thread | useInitialize: Get channel succeeded', groupChannel);
518
+ threadDispatcher({
519
+ type: ThreadContextActionTypes.GET_CHANNEL_SUCCESS,
520
+ payload: {
521
+ groupChannel
522
+ }
523
+ });
524
+ }).catch(error => {
525
+ logger.info('Thread | useInitialize: Get channel failed', error);
526
+ threadDispatcher({
527
+ type: ThreadContextActionTypes.GET_CHANNEL_FAILURE,
528
+ payload: error
529
+ });
530
+ });
531
+ }
532
+ }, [message, sdkInit]);
533
+ /**
534
+ * We don't use channelUrl here,
535
+ * because Thread must operate independently of the channel.
536
+ */
537
+ }
538
+
539
+ function useGetAllEmoji(_ref, _ref2) {
540
+ let {
541
+ sdk
542
+ } = _ref;
543
+ let {
544
+ logger,
545
+ threadDispatcher
546
+ } = _ref2;
547
+ React.useEffect(() => {
548
+ if (sdk !== null && sdk !== void 0 && sdk.getAllEmoji) {
549
+ // validation check
550
+ sdk === null || sdk === void 0 ? void 0 : sdk.getAllEmoji().then(emojiContainer => {
551
+ logger.info('Thread | useGetAllEmoji: Getting emojis succeeded.', emojiContainer);
552
+ threadDispatcher({
553
+ type: ThreadContextActionTypes.SET_EMOJI_CONTAINER,
554
+ payload: {
555
+ emojiContainer
556
+ }
557
+ });
558
+ }).catch(error => {
559
+ logger.info('Thread | useGetAllEmoji: Getting emojis failed.', error);
560
+ });
561
+ }
562
+ }, [sdk]);
563
+ }
564
+
565
+ function useGetThreadList(_ref, _ref2) {
566
+ let {
567
+ sdkInit,
568
+ parentMessage,
569
+ anchorMessage,
570
+ isReactionEnabled
571
+ } = _ref;
572
+ let {
573
+ logger,
574
+ threadDispatcher
575
+ } = _ref2;
576
+ React.useEffect(() => {
577
+ // validation check
578
+ if (sdkInit && parentMessage !== null && parentMessage !== void 0 && parentMessage.getThreadedMessagesByTimestamp) {
579
+ var _parentMessage$getThr;
580
+ threadDispatcher({
581
+ type: ThreadContextActionTypes.INITIALIZE_THREAD_LIST_START,
582
+ payload: null
583
+ });
584
+ const timeStamp = (anchorMessage === null || anchorMessage === void 0 ? void 0 : anchorMessage.createdAt) || 0;
585
+ const params = {
586
+ prevResultSize: PREV_THREADS_FETCH_SIZE,
587
+ nextResultSize: NEXT_THREADS_FETCH_SIZE,
588
+ includeReactions: isReactionEnabled,
589
+ includeMetaArray: true
590
+ };
591
+ logger.info('Thread | useGetThreadList: Initialize thread list start.', {
592
+ timeStamp,
593
+ params
594
+ });
595
+ (_parentMessage$getThr = parentMessage.getThreadedMessagesByTimestamp) === null || _parentMessage$getThr === void 0 ? void 0 : _parentMessage$getThr.call(parentMessage, timeStamp, params).then(_ref3 => {
596
+ let {
597
+ parentMessage,
598
+ threadedMessages
599
+ } = _ref3;
600
+ logger.info('Thread | useGetThreadList: Initialize thread list succeeded.', {
601
+ parentMessage,
602
+ threadedMessages
603
+ });
604
+ threadDispatcher({
605
+ type: ThreadContextActionTypes.INITIALIZE_THREAD_LIST_SUCCESS,
606
+ payload: {
607
+ parentMessage,
608
+ anchorMessage,
609
+ threadedMessages
610
+ }
611
+ });
612
+ }).catch(error => {
613
+ logger.info('Therad | useGetThreadList: Initialize thread list failed.', error);
614
+ threadDispatcher({
615
+ type: ThreadContextActionTypes.INITIALIZE_THREAD_LIST_FAILURE,
616
+ payload: error
617
+ });
618
+ });
619
+ }
620
+ }, [sdkInit, parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.messageId, anchorMessage]);
621
+ }
622
+
623
+ function useGetParentMessage(_ref, _ref2) {
624
+ let {
625
+ channelUrl,
626
+ sdkInit,
627
+ parentMessage
628
+ } = _ref;
629
+ let {
630
+ sdk,
631
+ logger,
632
+ threadDispatcher
633
+ } = _ref2;
634
+ React.useEffect(() => {
635
+ var _sdk$message;
636
+ // validation check
637
+ if (sdkInit && sdk !== null && sdk !== void 0 && (_sdk$message = sdk.message) !== null && _sdk$message !== void 0 && _sdk$message.getMessage) {
638
+ threadDispatcher({
639
+ type: ThreadContextActionTypes.GET_PARENT_MESSAGE_START,
640
+ payload: null
641
+ });
642
+ const params = {
643
+ channelUrl,
644
+ channelType: SendbirdChat.ChannelType.GROUP,
645
+ messageId: parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.messageId,
646
+ includeMetaArray: true,
647
+ includeReactions: true,
648
+ includeThreadInfo: true,
649
+ includeParentMessageInfo: true
650
+ };
651
+ logger.info('Thread | useGetParentMessage: Get parent message start.', params);
652
+ const fetchParentMessage = async () => {
653
+ var _sdk$message$getMessa, _sdk$message2;
654
+ const data = await ((_sdk$message$getMessa = (_sdk$message2 = sdk.message).getMessage) === null || _sdk$message$getMessa === void 0 ? void 0 : _sdk$message$getMessa.call(_sdk$message2, params));
655
+ return data;
656
+ };
657
+ fetchParentMessage().then(parentMsg => {
658
+ logger.info('Thread | useGetParentMessage: Get parent message succeeded.', parentMessage);
659
+ parentMsg.ogMetaData = (parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.ogMetaData) || null; // ogMetaData is not included for now
660
+ threadDispatcher({
661
+ type: ThreadContextActionTypes.GET_PARENT_MESSAGE_SUCCESS,
662
+ payload: {
663
+ parentMessage: parentMsg
664
+ }
665
+ });
666
+ }).catch(error => {
667
+ logger.info('Thread | useGetParentMessage: Get parent message failed.', error);
668
+ threadDispatcher({
669
+ type: ThreadContextActionTypes.GET_PARENT_MESSAGE_FAILURE,
670
+ payload: error
671
+ });
672
+ });
673
+ }
674
+ }, [sdkInit, parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.messageId]);
675
+ /**
676
+ * We don't use channelUrl here,
677
+ * because Thread must operate independently of the channel.
678
+ */
679
+ }
680
+
681
+ function useHandlePubsubEvents(_ref, _ref2) {
682
+ let {
683
+ sdkInit,
684
+ currentChannel,
685
+ parentMessage
686
+ } = _ref;
687
+ let {
688
+ pubSub,
689
+ threadDispatcher
690
+ } = _ref2;
691
+ React.useEffect(() => {
692
+ const pubSubHandler = () => {
693
+ const subscriber = new Map();
694
+ if (!pubSub || !pubSub.subscribe) {
695
+ return subscriber;
696
+ }
697
+ subscriber.set(topics.PUBSUB_TOPICS.SEND_USER_MESSAGE, pubSub.subscribe(topics.PUBSUB_TOPICS.SEND_USER_MESSAGE, props => {
698
+ const {
699
+ channel,
700
+ message
701
+ } = props;
702
+ if ((currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.url) === (channel === null || channel === void 0 ? void 0 : channel.url) && (message === null || message === void 0 ? void 0 : message.parentMessageId) === (parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.messageId)) {
703
+ threadDispatcher({
704
+ type: ThreadContextActionTypes.SEND_MESSAGE_SUCESS,
705
+ payload: {
706
+ message
707
+ }
708
+ });
709
+ }
710
+ scrollIntoLast === null || scrollIntoLast === void 0 ? void 0 : scrollIntoLast();
711
+ }));
712
+ subscriber.set(topics.PUBSUB_TOPICS.SEND_FILE_MESSAGE, pubSub.subscribe(topics.PUBSUB_TOPICS.SEND_FILE_MESSAGE, props => {
713
+ const {
714
+ channel,
715
+ message
716
+ } = props;
717
+ if ((currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.url) === (channel === null || channel === void 0 ? void 0 : channel.url)) {
718
+ threadDispatcher({
719
+ type: ThreadContextActionTypes.SEND_MESSAGE_SUCESS,
720
+ payload: {
721
+ message
722
+ }
723
+ });
724
+ }
725
+ scrollIntoLast === null || scrollIntoLast === void 0 ? void 0 : scrollIntoLast();
726
+ }));
727
+ subscriber.set(topics.PUBSUB_TOPICS.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.PUBSUB_TOPICS.UPDATE_USER_MESSAGE, msg => {
728
+ const {
729
+ channel,
730
+ message
731
+ } = msg;
732
+ if ((currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.url) === (channel === null || channel === void 0 ? void 0 : channel.url)) {
733
+ threadDispatcher({
734
+ type: ThreadContextActionTypes.ON_MESSAGE_UPDATED,
735
+ payload: {
736
+ channel,
737
+ message
738
+ }
739
+ });
740
+ }
741
+ }));
742
+ subscriber.set(topics.PUBSUB_TOPICS.DELETE_MESSAGE, pubSub.subscribe(topics.PUBSUB_TOPICS.DELETE_MESSAGE, msg => {
743
+ const {
744
+ channel,
745
+ messageId
746
+ } = msg;
747
+ if ((currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.url) === (channel === null || channel === void 0 ? void 0 : channel.url)) {
748
+ threadDispatcher({
749
+ type: ThreadContextActionTypes.ON_MESSAGE_DELETED,
750
+ payload: {
751
+ messageId
752
+ }
753
+ });
754
+ }
755
+ }));
756
+ };
757
+ const subscriber = pubSubHandler();
758
+ return () => {
759
+ subscriber === null || subscriber === void 0 ? void 0 : subscriber.forEach(s => {
760
+ try {
761
+ s === null || s === void 0 ? void 0 : s.remove();
762
+ } catch (_unused) {
763
+ //
764
+ }
765
+ });
766
+ };
767
+ }, [sdkInit, currentChannel]);
768
+ }
769
+
770
+ function useHandleChannelEvents(_ref, _ref2) {
771
+ let {
772
+ sdk,
773
+ currentChannel
774
+ } = _ref;
775
+ let {
776
+ logger,
777
+ threadDispatcher
778
+ } = _ref2;
779
+ React.useEffect(() => {
780
+ var _sdk$groupChannel;
781
+ const handlerId = uuid.uuidv4();
782
+ // validation check
783
+ if (sdk !== null && sdk !== void 0 && (_sdk$groupChannel = sdk.groupChannel) !== null && _sdk$groupChannel !== void 0 && _sdk$groupChannel.addGroupChannelHandler && currentChannel) {
784
+ var _sdk$groupChannel$add, _sdk$groupChannel2;
785
+ const channelHandlerParams = {
786
+ // message status change
787
+ onMessageReceived(channel, message) {
788
+ logger.info('Thread | useHandleChannelEvents: onMessageReceived', {
789
+ channel,
790
+ message
791
+ });
792
+ threadDispatcher({
793
+ type: ThreadContextActionTypes.ON_MESSAGE_RECEIVED,
794
+ payload: {
795
+ channel,
796
+ message
797
+ }
798
+ });
799
+ },
800
+ onMessageUpdated(channel, message) {
801
+ logger.info('Thread | useHandleChannelEvents: onMessageUpdated', {
802
+ channel,
803
+ message
804
+ });
805
+ threadDispatcher({
806
+ type: ThreadContextActionTypes.ON_MESSAGE_UPDATED,
807
+ payload: {
808
+ channel,
809
+ message
810
+ }
811
+ });
812
+ },
813
+ onMessageDeleted(channel, messageId) {
814
+ logger.info('Thread | useHandleChannelEvents: onMessageDeleted', {
815
+ channel,
816
+ messageId
817
+ });
818
+ threadDispatcher({
819
+ type: ThreadContextActionTypes.ON_MESSAGE_DELETED,
820
+ payload: {
821
+ channel,
822
+ messageId
823
+ }
824
+ });
825
+ },
826
+ onReactionUpdated(channel, reactionEvent) {
827
+ logger.info('Thread | useHandleChannelEvents: onReactionUpdated', {
828
+ channel,
829
+ reactionEvent
830
+ });
831
+ threadDispatcher({
832
+ type: ThreadContextActionTypes.ON_REACTION_UPDATED,
833
+ payload: {
834
+ channel,
835
+ reactionEvent
836
+ }
837
+ });
838
+ },
839
+ // user status change
840
+ onUserMuted(channel, user) {
841
+ logger.info('Thread | useHandleChannelEvents: onUserMuted', {
842
+ channel,
843
+ user
844
+ });
845
+ threadDispatcher({
846
+ type: ThreadContextActionTypes.ON_USER_MUTED,
847
+ payload: {
848
+ channel,
849
+ user
850
+ }
851
+ });
852
+ },
853
+ onUserUnmuted(channel, user) {
854
+ logger.info('Thread | useHandleChannelEvents: onUserUnmuted', {
855
+ channel,
856
+ user
857
+ });
858
+ threadDispatcher({
859
+ type: ThreadContextActionTypes.ON_USER_UNMUTED,
860
+ payload: {
861
+ channel,
862
+ user
863
+ }
864
+ });
865
+ },
866
+ onUserBanned(channel, user) {
867
+ logger.info('Thread | useHandleChannelEvents: onUserBanned', {
868
+ channel,
869
+ user
870
+ });
871
+ threadDispatcher({
872
+ type: ThreadContextActionTypes.ON_USER_BANNED,
873
+ payload: {
874
+ channel,
875
+ user
876
+ }
877
+ });
878
+ },
879
+ onUserUnbanned(channel, user) {
880
+ logger.info('Thread | useHandleChannelEvents: onUserUnbanned', {
881
+ channel,
882
+ user
883
+ });
884
+ threadDispatcher({
885
+ type: ThreadContextActionTypes.ON_USER_UNBANNED,
886
+ payload: {
887
+ channel,
888
+ user
889
+ }
890
+ });
891
+ },
892
+ onUserLeft(channel, user) {
893
+ logger.info('Thread | useHandleChannelEvents: onUserLeft', {
894
+ channel,
895
+ user
896
+ });
897
+ threadDispatcher({
898
+ type: ThreadContextActionTypes.ON_USER_LEFT,
899
+ payload: {
900
+ channel,
901
+ user
902
+ }
903
+ });
904
+ },
905
+ // channel status change
906
+ onChannelFrozen(channel) {
907
+ logger.info('Thread | useHandleChannelEvents: onChannelFrozen', {
908
+ channel
909
+ });
910
+ threadDispatcher({
911
+ type: ThreadContextActionTypes.ON_CHANNEL_FROZEN,
912
+ payload: {
913
+ channel
914
+ }
915
+ });
916
+ },
917
+ onChannelUnfrozen(channel) {
918
+ logger.info('Thread | useHandleChannelEvents: onChannelUnfrozen', {
919
+ channel
920
+ });
921
+ threadDispatcher({
922
+ type: ThreadContextActionTypes.ON_CHANNEL_UNFROZEN,
923
+ payload: {
924
+ channel
925
+ }
926
+ });
927
+ },
928
+ onOperatorUpdated(channel, users) {
929
+ logger.info('Thread | useHandleChannelEvents: onOperatorUpdated', {
930
+ channel,
931
+ users
932
+ });
933
+ threadDispatcher({
934
+ type: ThreadContextActionTypes.ON_OPERATOR_UPDATED,
935
+ payload: {
936
+ channel,
937
+ users
938
+ }
939
+ });
940
+ }
941
+ };
942
+ const channelHandler = new groupChannel.GroupChannelHandler(channelHandlerParams);
943
+ (_sdk$groupChannel$add = (_sdk$groupChannel2 = sdk.groupChannel).addGroupChannelHandler) === null || _sdk$groupChannel$add === void 0 ? void 0 : _sdk$groupChannel$add.call(_sdk$groupChannel2, handlerId, channelHandler);
944
+ logger.info('Thread | useHandleChannelEvents: Added channelHandler in Thread', {
945
+ handlerId,
946
+ channelHandler
947
+ });
948
+ }
949
+ return () => {
950
+ var _sdk$groupChannel3;
951
+ // validation check
952
+ if (handlerId && sdk !== null && sdk !== void 0 && (_sdk$groupChannel3 = sdk.groupChannel) !== null && _sdk$groupChannel3 !== void 0 && _sdk$groupChannel3.removeGroupChannelHandler) {
953
+ var _sdk$groupChannel$rem, _sdk$groupChannel4;
954
+ (_sdk$groupChannel$rem = (_sdk$groupChannel4 = sdk.groupChannel).removeGroupChannelHandler) === null || _sdk$groupChannel$rem === void 0 ? void 0 : _sdk$groupChannel$rem.call(_sdk$groupChannel4, handlerId);
955
+ logger.info('Thread | useHandleChannelEvents: Removed channelHandler in Thread.', handlerId);
956
+ }
957
+ };
958
+ }, [sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel, currentChannel]);
959
+ }
960
+
961
+ function useSendFileMessageCallback(_ref, _ref2) {
962
+ let {
963
+ currentChannel
964
+ } = _ref;
965
+ let {
966
+ logger,
967
+ pubSub,
968
+ threadDispatcher
969
+ } = _ref2;
970
+ const sendMessage = React.useCallback((file, quoteMessage) => {
971
+ const createParamsDefault = () => {
972
+ const params = {};
973
+ params.file = file;
974
+ if (quoteMessage) {
975
+ params.isReplyToChannel = true;
976
+ params.parentMessageId = quoteMessage.messageId;
977
+ }
978
+ return params;
979
+ };
980
+ const params = createParamsDefault();
981
+ logger.info('Thread | useSendFileMessageCallback: Sending file message start.', params);
982
+ currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.sendFileMessage(params).onPending(pendingMessage => {
983
+ threadDispatcher({
984
+ type: ThreadContextActionTypes.SEND_MESSAGE_START,
985
+ payload: {
986
+ /* pubSub is used instead of messagesDispatcher
987
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
988
+ message: _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, pendingMessage), {}, {
989
+ url: URL.createObjectURL(file),
990
+ // pending thumbnail message seems to be failed
991
+ requestState: 'pending'
992
+ })
993
+ }
994
+ });
995
+ setTimeout(() => scrollIntoLast(), 1000);
996
+ }).onFailed((error, message) => {
997
+ message.localUrl = URL.createObjectURL(file);
998
+ message.file = file;
999
+ logger.info('Thread | useSendFileMessageCallback: Sending file message failed.', {
1000
+ message,
1001
+ error
1002
+ });
1003
+ threadDispatcher({
1004
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1005
+ payload: {
1006
+ message,
1007
+ error
1008
+ }
1009
+ });
1010
+ }).onSucceeded(message => {
1011
+ logger.info('Thread | useSendFileMessageCallback: Sending file message succeeded.', message);
1012
+ pubSub.publish(topics.PUBSUB_TOPICS.SEND_FILE_MESSAGE, {
1013
+ channel: currentChannel,
1014
+ message: message
1015
+ });
1016
+ });
1017
+ }, [currentChannel]);
1018
+ return sendMessage;
1019
+ }
1020
+
1021
+ function useUpdateMessageCallback(_ref, _ref2) {
1022
+ let {
1023
+ currentChannel,
1024
+ isMentionEnabled
1025
+ } = _ref;
1026
+ let {
1027
+ logger,
1028
+ pubSub,
1029
+ threadDispatcher
1030
+ } = _ref2;
1031
+ return React.useCallback(props => {
1032
+ var _currentChannel$updat;
1033
+ const {
1034
+ messageId,
1035
+ message,
1036
+ mentionedUsers,
1037
+ mentionTemplate
1038
+ } = props;
1039
+ const createParamsDefault = () => {
1040
+ const params = {};
1041
+ params.message = message;
1042
+ if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1043
+ params.mentionedUsers = mentionedUsers;
1044
+ }
1045
+ if (isMentionEnabled && mentionTemplate) {
1046
+ params.mentionedMessageTemplate = mentionTemplate;
1047
+ } else {
1048
+ params.mentionedMessageTemplate = message;
1049
+ }
1050
+ return params;
1051
+ };
1052
+ const params = createParamsDefault();
1053
+ logger.info('Thread | useUpdateMessageCallback: Message update start.', params);
1054
+ currentChannel === null || currentChannel === void 0 ? void 0 : (_currentChannel$updat = currentChannel.updateUserMessage) === null || _currentChannel$updat === void 0 ? void 0 : _currentChannel$updat.call(currentChannel, messageId, params).then(message => {
1055
+ logger.info('Thread | useUpdateMessageCallback: Message update succeeded.', message);
1056
+ threadDispatcher({
1057
+ type: ThreadContextActionTypes.ON_MESSAGE_UPDATED,
1058
+ payload: {
1059
+ channel: currentChannel,
1060
+ message: message
1061
+ }
1062
+ });
1063
+ pubSub.publish(topics.PUBSUB_TOPICS.UPDATE_USER_MESSAGE, {
1064
+ fromSelector: true,
1065
+ channel: currentChannel,
1066
+ message: message
1067
+ });
1068
+ });
1069
+ }, [currentChannel, isMentionEnabled]);
1070
+ }
1071
+
1072
+ function useDeleteMessageCallback(_ref, _ref2) {
1073
+ let {
1074
+ currentChannel,
1075
+ threadDispatcher
1076
+ } = _ref;
1077
+ let {
1078
+ logger
1079
+ } = _ref2;
1080
+ return React.useCallback(message => {
1081
+ logger.info('Thread | useDeleteMessageCallback: Deleting message.', message);
1082
+ const {
1083
+ sendingStatus
1084
+ } = message;
1085
+ return new Promise((resolve, reject) => {
1086
+ var _currentChannel$delet;
1087
+ logger.info('Thread | useDeleteMessageCallback: Deleting message requestState:', sendingStatus);
1088
+ // Message is only on local
1089
+ if (sendingStatus === 'failed' || sendingStatus === 'pending') {
1090
+ logger.info('Thread | useDeleteMessageCallback: Deleted message from local:', message);
1091
+ threadDispatcher({
1092
+ type: ThreadContextActionTypes.ON_MESSAGE_DELETED_BY_REQ_ID,
1093
+ payload: message.reqId
1094
+ });
1095
+ resolve(message);
1096
+ }
1097
+ logger.info('Thread | useDeleteMessageCallback: Deleting message from remote:', sendingStatus);
1098
+ currentChannel === null || currentChannel === void 0 ? void 0 : (_currentChannel$delet = currentChannel.deleteMessage) === null || _currentChannel$delet === void 0 ? void 0 : _currentChannel$delet.call(currentChannel, message).then(() => {
1099
+ logger.info('Thread | useDeleteMessageCallback: Deleting message success!', message);
1100
+ threadDispatcher({
1101
+ type: ThreadContextActionTypes.ON_MESSAGE_DELETED,
1102
+ payload: {
1103
+ message,
1104
+ channel: currentChannel
1105
+ }
1106
+ });
1107
+ resolve(message);
1108
+ }).catch(err => {
1109
+ logger.warning('Thread | useDeleteMessageCallback: Deleting message failed!', err);
1110
+ reject(err);
1111
+ });
1112
+ });
1113
+ }, [currentChannel]);
1114
+ }
1115
+
1116
+ function useGetPrevThreadsCallback(_ref, _ref2) {
1117
+ let {
1118
+ hasMorePrev,
1119
+ parentMessage,
1120
+ threadListState,
1121
+ oldestMessageTimeStamp,
1122
+ isReactionEnabled
1123
+ } = _ref;
1124
+ let {
1125
+ logger,
1126
+ threadDispatcher
1127
+ } = _ref2;
1128
+ return React.useCallback(callback => {
1129
+ // validation check
1130
+ if (threadListState === Thread_context_types.ThreadListStateTypes.INITIALIZED && parentMessage !== null && parentMessage !== void 0 && parentMessage.getThreadedMessagesByTimestamp && oldestMessageTimeStamp !== 0) {
1131
+ var _parentMessage$getThr;
1132
+ threadDispatcher({
1133
+ type: ThreadContextActionTypes.GET_PREV_MESSAGES_START,
1134
+ payload: null
1135
+ });
1136
+ (_parentMessage$getThr = parentMessage.getThreadedMessagesByTimestamp) === null || _parentMessage$getThr === void 0 ? void 0 : _parentMessage$getThr.call(parentMessage, oldestMessageTimeStamp, {
1137
+ prevResultSize: PREV_THREADS_FETCH_SIZE,
1138
+ nextResultSize: 0,
1139
+ includeReactions: isReactionEnabled,
1140
+ includeMetaArray: true
1141
+ }).then(_ref3 => {
1142
+ let {
1143
+ parentMessage,
1144
+ threadedMessages
1145
+ } = _ref3;
1146
+ logger.info('Thread | useGetPrevThreadsCallback: Fetch prev threads succeeded.', {
1147
+ parentMessage,
1148
+ threadedMessages
1149
+ });
1150
+ threadDispatcher({
1151
+ type: ThreadContextActionTypes.GET_PREV_MESSAGES_SUCESS,
1152
+ payload: {
1153
+ parentMessage,
1154
+ threadedMessages
1155
+ }
1156
+ });
1157
+ callback(threadedMessages);
1158
+ }).catch(error => {
1159
+ logger.info('Thread | useGetPrevThreadsCallback: Fetch prev threads failed.', error);
1160
+ threadDispatcher({
1161
+ type: ThreadContextActionTypes.GET_PREV_MESSAGES_FAILURE,
1162
+ payload: error
1163
+ });
1164
+ });
1165
+ }
1166
+ }, [hasMorePrev, parentMessage, threadListState, oldestMessageTimeStamp]);
1167
+ }
1168
+
1169
+ function useGetNextThreadsCallback(_ref, _ref2) {
1170
+ let {
1171
+ hasMoreNext,
1172
+ parentMessage,
1173
+ threadListState,
1174
+ latestMessageTimeStamp,
1175
+ isReactionEnabled
1176
+ } = _ref;
1177
+ let {
1178
+ logger,
1179
+ threadDispatcher
1180
+ } = _ref2;
1181
+ return React.useCallback(callback => {
1182
+ // validation check
1183
+ if (threadListState === Thread_context_types.ThreadListStateTypes.INITIALIZED && parentMessage !== null && parentMessage !== void 0 && parentMessage.getThreadedMessagesByTimestamp && latestMessageTimeStamp !== 0) {
1184
+ var _parentMessage$getThr;
1185
+ threadDispatcher({
1186
+ type: ThreadContextActionTypes.GET_NEXT_MESSAGES_START,
1187
+ payload: null
1188
+ });
1189
+ (_parentMessage$getThr = parentMessage.getThreadedMessagesByTimestamp) === null || _parentMessage$getThr === void 0 ? void 0 : _parentMessage$getThr.call(parentMessage, latestMessageTimeStamp, {
1190
+ prevResultSize: 0,
1191
+ nextResultSize: NEXT_THREADS_FETCH_SIZE,
1192
+ includeReactions: isReactionEnabled,
1193
+ includeMetaArray: true
1194
+ }).then(_ref3 => {
1195
+ let {
1196
+ parentMessage,
1197
+ threadedMessages
1198
+ } = _ref3;
1199
+ logger.info('Thread | useGetNextThreadsCallback: Fetch next threads succeeded.', {
1200
+ parentMessage,
1201
+ threadedMessages
1202
+ });
1203
+ threadDispatcher({
1204
+ type: ThreadContextActionTypes.GET_NEXT_MESSAGES_SUCESS,
1205
+ payload: {
1206
+ parentMessage,
1207
+ threadedMessages
1208
+ }
1209
+ });
1210
+ callback(threadedMessages);
1211
+ }).catch(error => {
1212
+ logger.info('Thread | useGetNextThreadsCallback: Fetch next threads failed.', error);
1213
+ threadDispatcher({
1214
+ type: ThreadContextActionTypes.GET_NEXT_MESSAGES_FAILURE,
1215
+ payload: error
1216
+ });
1217
+ });
1218
+ }
1219
+ }, [hasMoreNext, parentMessage, threadListState, latestMessageTimeStamp]);
1220
+ }
1221
+
1222
+ function useToggleReactionCallback(_ref, _ref2) {
1223
+ let {
1224
+ currentChannel
1225
+ } = _ref;
1226
+ let {
1227
+ logger
1228
+ } = _ref2;
1229
+ return React.useCallback((message, key, isReacted) => {
1230
+ var _currentChannel$addRe;
1231
+ if (isReacted) {
1232
+ var _currentChannel$delet;
1233
+ currentChannel === null || currentChannel === void 0 ? void 0 : (_currentChannel$delet = currentChannel.deleteReaction) === null || _currentChannel$delet === void 0 ? void 0 : _currentChannel$delet.call(currentChannel, message, key).then(res => {
1234
+ logger.info('Thread | useToggleReactionsCallback: Delete reaction succeeded.', res);
1235
+ }).catch(err => {
1236
+ logger.warning('Thread | useToggleReactionsCallback: Delete reaction failed.', err);
1237
+ });
1238
+ return;
1239
+ }
1240
+ currentChannel === null || currentChannel === void 0 ? void 0 : (_currentChannel$addRe = currentChannel.addReaction) === null || _currentChannel$addRe === void 0 ? void 0 : _currentChannel$addRe.call(currentChannel, message, key).then(res => {
1241
+ logger.info('Thread | useToggleReactionsCallback: Add reaction succeeded.', res);
1242
+ }).catch(err => {
1243
+ logger.warning('Thread | useToggleReactionsCallback: Add reaction failed.', err);
1244
+ });
1245
+ }, [currentChannel]);
1246
+ }
1247
+
1248
+ function useSendUserMessageCallback(_ref, _ref2) {
1249
+ let {
1250
+ isMentionEnabled,
1251
+ currentChannel
1252
+ } = _ref;
1253
+ let {
1254
+ logger,
1255
+ pubSub,
1256
+ threadDispatcher
1257
+ } = _ref2;
1258
+ const sendMessage = React.useCallback(props => {
1259
+ const {
1260
+ message,
1261
+ quoteMessage = null,
1262
+ mentionTemplate,
1263
+ mentionedUsers
1264
+ } = props;
1265
+ const createDefaultParams = () => {
1266
+ const params = {};
1267
+ params.message = message;
1268
+ if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1269
+ params.mentionedUsers = mentionedUsers;
1270
+ }
1271
+ if (isMentionEnabled && mentionTemplate && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1272
+ params.mentionedMessageTemplate = mentionTemplate;
1273
+ }
1274
+ if (quoteMessage) {
1275
+ params.isReplyToChannel = true;
1276
+ params.parentMessageId = quoteMessage.messageId;
1277
+ }
1278
+ return params;
1279
+ };
1280
+ const params = createDefaultParams();
1281
+ logger.info('Thread | useSendUserMessageCallback: Sending user message start.', params);
1282
+ if (currentChannel !== null && currentChannel !== void 0 && currentChannel.sendUserMessage) {
1283
+ currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.sendUserMessage(params).onPending(pendingMessage => {
1284
+ threadDispatcher({
1285
+ type: ThreadContextActionTypes.SEND_MESSAGE_START,
1286
+ payload: {
1287
+ message: pendingMessage
1288
+ }
1289
+ });
1290
+ }).onFailed((error, message) => {
1291
+ logger.info('Thread | useSendUserMessageCallback: Sending user message failed.', {
1292
+ message,
1293
+ error
1294
+ });
1295
+ threadDispatcher({
1296
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1297
+ payload: {
1298
+ error,
1299
+ message
1300
+ }
1301
+ });
1302
+ }).onSucceeded(message => {
1303
+ logger.info('Thread | useSendUserMessageCallback: Sending user message succeeded.', message);
1304
+ threadDispatcher({
1305
+ type: ThreadContextActionTypes.SEND_MESSAGE_SUCESS,
1306
+ payload: {
1307
+ message
1308
+ }
1309
+ });
1310
+ // because Thread doesn't subscribe SEND_USER_MESSAGE
1311
+ pubSub.publish(topics.PUBSUB_TOPICS.SEND_USER_MESSAGE, {
1312
+ channel: currentChannel,
1313
+ message: message
1314
+ });
1315
+ });
1316
+ }
1317
+ }, [isMentionEnabled, currentChannel]);
1318
+ return sendMessage;
1319
+ }
1320
+
1321
+ function useResendMessageCallback(_ref, _ref2) {
1322
+ let {
1323
+ currentChannel
1324
+ } = _ref;
1325
+ let {
1326
+ logger,
1327
+ pubSub,
1328
+ threadDispatcher
1329
+ } = _ref2;
1330
+ return React.useCallback(failedMessage => {
1331
+ if (failedMessage !== null && failedMessage !== void 0 && failedMessage.isResendable) {
1332
+ var _failedMessage$isUser, _failedMessage$isFile;
1333
+ failedMessage.sendingStatus = message.SendingStatus.PENDING;
1334
+ logger.info('Thread | useResendMessageCallback: Resending failedMessage start.', failedMessage);
1335
+ threadDispatcher({
1336
+ type: ThreadContextActionTypes.RESEND_MESSAGE_START,
1337
+ payload: failedMessage
1338
+ });
1339
+ if (failedMessage !== null && failedMessage !== void 0 && (_failedMessage$isUser = failedMessage.isUserMessage) !== null && _failedMessage$isUser !== void 0 && _failedMessage$isUser.call(failedMessage) || (failedMessage === null || failedMessage === void 0 ? void 0 : failedMessage.messageType) === message.MessageType.USER) {
1340
+ currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.resendUserMessage(failedMessage).then(message => {
1341
+ logger.info('Thread | useResendMessageCallback: Resending failedMessage succeeded.', message);
1342
+ threadDispatcher({
1343
+ type: ThreadContextActionTypes.SEND_MESSAGE_SUCESS,
1344
+ payload: {
1345
+ message
1346
+ }
1347
+ });
1348
+ pubSub.publish(topics.PUBSUB_TOPICS.SEND_USER_MESSAGE, {
1349
+ channel: currentChannel,
1350
+ message: message
1351
+ });
1352
+ }).catch(error => {
1353
+ logger.warning('Thread | useResendMessageCallback: Resending failedMessage failed.', error);
1354
+ failedMessage.sendingStatus = message.SendingStatus.FAILED;
1355
+ threadDispatcher({
1356
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1357
+ payload: {
1358
+ message: failedMessage
1359
+ }
1360
+ });
1361
+ });
1362
+ } else if (failedMessage !== null && failedMessage !== void 0 && (_failedMessage$isFile = failedMessage.isFileMessage) !== null && _failedMessage$isFile !== void 0 && _failedMessage$isFile.call(failedMessage) || (failedMessage === null || failedMessage === void 0 ? void 0 : failedMessage.messageType) === message.MessageType.FILE) {
1363
+ var _currentChannel$resen;
1364
+ currentChannel === null || currentChannel === void 0 ? void 0 : (_currentChannel$resen = currentChannel.resendFileMessage) === null || _currentChannel$resen === void 0 ? void 0 : _currentChannel$resen.call(currentChannel, failedMessage).then(message => {
1365
+ logger.info('Thread | useResendMessageCallback: Resending failedMessage succeeded.', message);
1366
+ threadDispatcher({
1367
+ type: ThreadContextActionTypes.SEND_MESSAGE_SUCESS,
1368
+ payload: {
1369
+ message
1370
+ }
1371
+ });
1372
+ }).catch(error => {
1373
+ logger.warning('Thread | useResendMessageCallback: Resending failedMessage failed.', error);
1374
+ failedMessage.sendingStatus = message.SendingStatus.FAILED;
1375
+ threadDispatcher({
1376
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1377
+ payload: {
1378
+ message: failedMessage
1379
+ }
1380
+ });
1381
+ pubSub.publish(topics.PUBSUB_TOPICS.SEND_FILE_MESSAGE, {
1382
+ channel: currentChannel,
1383
+ message: failedMessage
1384
+ });
1385
+ });
1386
+ } else {
1387
+ logger.warning('Thread | useResendMessageCallback: Message is not resendable.', failedMessage);
1388
+ failedMessage.sendingStatus = message.SendingStatus.FAILED;
1389
+ threadDispatcher({
1390
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1391
+ payload: {
1392
+ message: failedMessage
1393
+ }
1394
+ });
1395
+ }
1396
+ }
1397
+ }, [currentChannel]);
1398
+ }
1399
+
1400
+ const useSendVoiceMessageCallback = (_ref, _ref2) => {
1401
+ let {
1402
+ currentChannel,
1403
+ onBeforeSendVoiceMessage
1404
+ } = _ref;
1405
+ let {
1406
+ logger,
1407
+ pubSub,
1408
+ threadDispatcher
1409
+ } = _ref2;
1410
+ const sendMessage = React.useCallback((file, duration, quoteMessage) => {
1411
+ const messageParams = onBeforeSendVoiceMessage && typeof onBeforeSendVoiceMessage === 'function' ? onBeforeSendVoiceMessage(file, quoteMessage) : {
1412
+ file,
1413
+ fileName: consts.VOICE_MESSAGE_FILE_NAME,
1414
+ mimeType: consts.VOICE_MESSAGE_MIME_TYPE,
1415
+ metaArrays: [new message.MessageMetaArray({
1416
+ key: consts.META_ARRAY_VOICE_DURATION_KEY,
1417
+ value: [`${duration}`]
1418
+ }), new message.MessageMetaArray({
1419
+ key: consts.META_ARRAY_MESSAGE_TYPE_KEY,
1420
+ value: [consts.META_ARRAY_MESSAGE_TYPE_VALUE__VOICE]
1421
+ })]
1422
+ };
1423
+ if (quoteMessage) {
1424
+ messageParams.isReplyToChannel = true;
1425
+ messageParams.parentMessageId = quoteMessage.messageId;
1426
+ }
1427
+ logger.info('Thread | useSendVoiceMessageCallback: Start sending voice message', messageParams);
1428
+ currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.sendFileMessage(messageParams).onPending(pendingMessage => {
1429
+ threadDispatcher({
1430
+ type: ThreadContextActionTypes.SEND_MESSAGE_START,
1431
+ payload: {
1432
+ /* pubSub is used instead of messagesDispatcher
1433
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
1434
+ message: _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, pendingMessage), {}, {
1435
+ url: URL.createObjectURL(file),
1436
+ // pending thumbnail message seems to be failed
1437
+ requestState: 'pending'
1438
+ })
1439
+ }
1440
+ });
1441
+ setTimeout(() => scrollIntoLast(), 1000);
1442
+ }).onFailed((error, message) => {
1443
+ message.localUrl = URL.createObjectURL(file);
1444
+ message.file = file;
1445
+ logger.info('Thread | useSendVoiceMessageCallback: Sending voice message failed.', {
1446
+ message,
1447
+ error
1448
+ });
1449
+ threadDispatcher({
1450
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1451
+ payload: {
1452
+ message,
1453
+ error
1454
+ }
1455
+ });
1456
+ }).onSucceeded(message => {
1457
+ logger.info('Thread | useSendVoiceMessageCallback: Sending voice message succeeded.', message);
1458
+ pubSub.publish(topics.PUBSUB_TOPICS.SEND_FILE_MESSAGE, {
1459
+ channel: currentChannel,
1460
+ message: message
1461
+ });
1462
+ });
1463
+ }, [currentChannel, onBeforeSendVoiceMessage]);
1464
+ return sendMessage;
1465
+ };
1466
+
1467
+ const ThreadContext = /*#__PURE__*/React__default["default"].createContext(null);
1468
+ const ThreadProvider = props => {
1469
+ var _allThreadMessages$, _allThreadMessages;
1470
+ const {
1471
+ children,
1472
+ channelUrl,
1473
+ onHeaderActionClick,
1474
+ onMoveToParentMessage,
1475
+ onBeforeSendVoiceMessage,
1476
+ // User Profile
1477
+ disableUserProfile,
1478
+ renderUserProfile
1479
+ } = props;
1480
+ const propsMessage = props === null || props === void 0 ? void 0 : props.message;
1481
+ const propsParentMessage = getParentMessageFrom(propsMessage);
1482
+ // Context from SendbirdProvider
1483
+ const globalStore = useSendbirdStateContext();
1484
+ const {
1485
+ stores,
1486
+ config
1487
+ } = globalStore;
1488
+ // // stores
1489
+ const {
1490
+ sdkStore,
1491
+ userStore
1492
+ } = stores;
1493
+ const {
1494
+ sdk
1495
+ } = sdkStore;
1496
+ const {
1497
+ user
1498
+ } = userStore;
1499
+ const sdkInit = sdkStore === null || sdkStore === void 0 ? void 0 : sdkStore.initialized;
1500
+ // // config
1501
+ const {
1502
+ logger,
1503
+ pubSub,
1504
+ replyType,
1505
+ isMentionEnabled,
1506
+ isReactionEnabled,
1507
+ onUserProfileMessage
1508
+ } = config;
1509
+
1510
+ // dux of Thread
1511
+ const [threadStore, threadDispatcher] = React.useReducer(reducer, initialState);
1512
+ const {
1513
+ currentChannel,
1514
+ allThreadMessages,
1515
+ parentMessage,
1516
+ channelState,
1517
+ threadListState,
1518
+ parentMessageState,
1519
+ hasMorePrev,
1520
+ hasMoreNext,
1521
+ emojiContainer,
1522
+ isMuted,
1523
+ isChannelFrozen,
1524
+ currentUserId
1525
+ } = threadStore;
1526
+
1527
+ // Initialization
1528
+ React.useEffect(() => {
1529
+ threadDispatcher({
1530
+ type: ThreadContextActionTypes.INIT_USER_ID,
1531
+ payload: user === null || user === void 0 ? void 0 : user.userId
1532
+ });
1533
+ }, [user]);
1534
+ useGetChannel({
1535
+ channelUrl,
1536
+ sdkInit,
1537
+ message: propsMessage
1538
+ }, {
1539
+ sdk,
1540
+ logger,
1541
+ threadDispatcher
1542
+ });
1543
+ useGetParentMessage({
1544
+ channelUrl,
1545
+ sdkInit,
1546
+ parentMessage: propsParentMessage
1547
+ }, {
1548
+ sdk,
1549
+ logger,
1550
+ threadDispatcher
1551
+ });
1552
+ useGetThreadList({
1553
+ sdkInit,
1554
+ parentMessage,
1555
+ isReactionEnabled,
1556
+ anchorMessage: (propsMessage === null || propsMessage === void 0 ? void 0 : propsMessage.messageId) !== (propsParentMessage === null || propsParentMessage === void 0 ? void 0 : propsParentMessage.messageId) ? propsMessage : null
1557
+ // anchorMessage should be null when parentMessage doesn't exist
1558
+ }, {
1559
+ logger,
1560
+ threadDispatcher
1561
+ });
1562
+ useGetAllEmoji({
1563
+ sdk
1564
+ }, {
1565
+ logger,
1566
+ threadDispatcher
1567
+ });
1568
+ // Handle channel events
1569
+ useHandleChannelEvents({
1570
+ sdk,
1571
+ currentChannel
1572
+ }, {
1573
+ logger,
1574
+ threadDispatcher
1575
+ });
1576
+ useHandlePubsubEvents({
1577
+ sdkInit,
1578
+ currentChannel,
1579
+ parentMessage
1580
+ }, {
1581
+ logger,
1582
+ pubSub,
1583
+ threadDispatcher
1584
+ });
1585
+
1586
+ // callbacks
1587
+ const fetchPrevThreads = useGetPrevThreadsCallback({
1588
+ hasMorePrev,
1589
+ parentMessage,
1590
+ threadListState,
1591
+ isReactionEnabled,
1592
+ oldestMessageTimeStamp: ((_allThreadMessages$ = allThreadMessages[0]) === null || _allThreadMessages$ === void 0 ? void 0 : _allThreadMessages$.createdAt) || 0
1593
+ }, {
1594
+ logger,
1595
+ threadDispatcher
1596
+ });
1597
+ const fetchNextThreads = useGetNextThreadsCallback({
1598
+ hasMoreNext,
1599
+ parentMessage,
1600
+ threadListState,
1601
+ isReactionEnabled,
1602
+ latestMessageTimeStamp: ((_allThreadMessages = allThreadMessages[allThreadMessages.length - 1]) === null || _allThreadMessages === void 0 ? void 0 : _allThreadMessages.createdAt) || 0
1603
+ }, {
1604
+ logger,
1605
+ threadDispatcher
1606
+ });
1607
+ const toggleReaction = useToggleReactionCallback({
1608
+ currentChannel
1609
+ }, {
1610
+ logger
1611
+ });
1612
+ const sendMessage = useSendUserMessageCallback({
1613
+ isMentionEnabled,
1614
+ currentChannel
1615
+ }, {
1616
+ logger,
1617
+ pubSub,
1618
+ threadDispatcher
1619
+ });
1620
+ const sendFileMessage = useSendFileMessageCallback({
1621
+ currentChannel
1622
+ }, {
1623
+ logger,
1624
+ pubSub,
1625
+ threadDispatcher
1626
+ });
1627
+ const sendVoiceMessage = useSendVoiceMessageCallback({
1628
+ currentChannel,
1629
+ onBeforeSendVoiceMessage
1630
+ }, {
1631
+ logger,
1632
+ pubSub,
1633
+ threadDispatcher
1634
+ });
1635
+ const resendMessage = useResendMessageCallback({
1636
+ currentChannel
1637
+ }, {
1638
+ logger,
1639
+ pubSub,
1640
+ threadDispatcher
1641
+ });
1642
+ const updateMessage = useUpdateMessageCallback({
1643
+ currentChannel,
1644
+ isMentionEnabled
1645
+ }, {
1646
+ logger,
1647
+ pubSub,
1648
+ threadDispatcher
1649
+ });
1650
+ const deleteMessage = useDeleteMessageCallback({
1651
+ currentChannel,
1652
+ threadDispatcher
1653
+ }, {
1654
+ logger
1655
+ });
1656
+
1657
+ // memo
1658
+ const nicknamesMap = React.useMemo(() => replyType && currentChannel ? getNicknamesMapFromMembers(currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.members) : new Map(), [currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.members]);
1659
+ return /*#__PURE__*/React__default["default"].createElement(ThreadContext.Provider, {
1660
+ value: {
1661
+ // ThreadProviderProps
1662
+ channelUrl,
1663
+ message: propsMessage,
1664
+ onHeaderActionClick,
1665
+ onMoveToParentMessage,
1666
+ // ThreadContextInitialState
1667
+ currentChannel,
1668
+ allThreadMessages,
1669
+ parentMessage,
1670
+ channelState,
1671
+ threadListState,
1672
+ parentMessageState,
1673
+ hasMorePrev,
1674
+ hasMoreNext,
1675
+ emojiContainer,
1676
+ // hooks
1677
+ fetchPrevThreads,
1678
+ fetchNextThreads,
1679
+ toggleReaction,
1680
+ sendMessage,
1681
+ sendFileMessage,
1682
+ sendVoiceMessage,
1683
+ resendMessage,
1684
+ updateMessage,
1685
+ deleteMessage,
1686
+ // context
1687
+ nicknamesMap,
1688
+ isMuted,
1689
+ isChannelFrozen,
1690
+ currentUserId
1691
+ }
1692
+ }, /*#__PURE__*/React__default["default"].createElement(UserProfileContext.UserProfileProvider, {
1693
+ disableUserProfile: disableUserProfile,
1694
+ renderUserProfile: renderUserProfile,
1695
+ onUserProfileMessage: onUserProfileMessage
1696
+ }, children));
1697
+ };
1698
+ const useThreadContext = () => React__default["default"].useContext(ThreadContext);
1699
+
1700
+ exports.ThreadProvider = ThreadProvider;
1701
+ exports.compareMessagesForGrouping = compareMessagesForGrouping;
1702
+ exports.isAboutSame = isAboutSame;
1703
+ exports.useThreadContext = useThreadContext;
1704
+ //# sourceMappingURL=ThreadProvider-8ee179c2.js.map