@sendbird/uikit-react 3.0.0-beta → 3.0.0-beta.2

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 (438) hide show
  1. package/App.js +41 -30
  2. package/App.js.map +1 -1
  3. package/CHANGELOG.md +50 -0
  4. package/Channel/components/ChannelHeader.js +15 -14
  5. package/Channel/components/ChannelHeader.js.map +1 -1
  6. package/Channel/components/ChannelUI.js +28 -21
  7. package/Channel/components/ChannelUI.js.map +1 -1
  8. package/Channel/components/FileViewer.js +14 -13
  9. package/Channel/components/FileViewer.js.map +1 -1
  10. package/Channel/components/FrozenNotification.js +5 -5
  11. package/Channel/components/Message.js +178 -62
  12. package/Channel/components/Message.js.map +1 -1
  13. package/Channel/components/MessageInput.js +145 -30
  14. package/Channel/components/MessageInput.js.map +1 -1
  15. package/Channel/components/MessageList.js +71 -59
  16. package/Channel/components/MessageList.js.map +1 -1
  17. package/Channel/components/RemoveMessageModal.js +17 -16
  18. package/Channel/components/RemoveMessageModal.js.map +1 -1
  19. package/Channel/components/SuggestedMentionList.js +250 -0
  20. package/Channel/components/SuggestedMentionList.js.map +1 -0
  21. package/Channel/components/TypingIndicator.js +14 -13
  22. package/Channel/components/TypingIndicator.js.map +1 -1
  23. package/Channel/components/UnreadCount.js +5 -5
  24. package/Channel/context.js +13 -12
  25. package/Channel/context.js.map +1 -1
  26. package/Channel.js +28 -21
  27. package/Channel.js.map +1 -1
  28. package/ChannelList/components/AddChannel.js +14 -14
  29. package/ChannelList/components/ChannelListHeader.js +7 -7
  30. package/ChannelList/components/ChannelListUI.js +24 -23
  31. package/ChannelList/components/ChannelListUI.js.map +1 -1
  32. package/ChannelList/components/ChannelPreview.js +23 -19
  33. package/ChannelList/components/ChannelPreview.js.map +1 -1
  34. package/ChannelList/components/ChannelPreviewAction.js +14 -14
  35. package/ChannelList/context.js +8 -8
  36. package/ChannelList.js +24 -23
  37. package/ChannelList.js.map +1 -1
  38. package/{ChannelListProvider-0b0c2c40.js → ChannelListProvider-7c351968.js} +8 -8
  39. package/{ChannelListProvider-0b0c2c40.js.map → ChannelListProvider-7c351968.js.map} +1 -1
  40. package/{ChannelProvider-459e463f.js → ChannelProvider-d5126903.js} +72 -41
  41. package/ChannelProvider-d5126903.js.map +1 -0
  42. package/ChannelSettings/components/AdminPanel.js +15 -15
  43. package/ChannelSettings/components/ChannelProfile.js +13 -13
  44. package/ChannelSettings/components/ChannelSettingsUI.js +18 -18
  45. package/ChannelSettings/components/EditDetailsModal.js +13 -13
  46. package/ChannelSettings/components/LeaveChannel.js +10 -10
  47. package/ChannelSettings/components/UserListItem.js +11 -11
  48. package/ChannelSettings/components/UserPanel.js +14 -14
  49. package/ChannelSettings/context.js +3 -3
  50. package/ChannelSettings.js +18 -18
  51. package/CreateChannel/components/CreateChannelUI.js +14 -14
  52. package/CreateChannel/components/InviteMembers.js +14 -14
  53. package/CreateChannel/components/SelectChannelType.js +10 -10
  54. package/CreateChannel/context.js +3 -3
  55. package/CreateChannel.js +14 -14
  56. package/{CreateChannelProvider-c617a1bb.js → CreateChannelProvider-ddfd92e6.js} +1 -1
  57. package/{CreateChannelProvider-c617a1bb.js.map → CreateChannelProvider-ddfd92e6.js.map} +1 -1
  58. package/EditUserProfile/components/EditUserProfileUI.js +13 -13
  59. package/EditUserProfile.js +13 -13
  60. package/{LocalizationContext-e4391013.js → LocalizationContext-b021af8f.js} +3 -3
  61. package/{LocalizationContext-e4391013.js.map → LocalizationContext-b021af8f.js.map} +1 -1
  62. package/{MemberList-6655cba0.js → MemberList-323e7517.js} +5 -5
  63. package/{MemberList-6655cba0.js.map → MemberList-323e7517.js.map} +1 -1
  64. package/MessageSearch/components/MessageSearchUI.js +11 -11
  65. package/MessageSearch/context.js +2 -2
  66. package/MessageSearch.js +11 -11
  67. package/OpenChannel/components/FrozenChannelNotification.js +5 -5
  68. package/OpenChannel/components/OpenChannelHeader.js +12 -12
  69. package/OpenChannel/components/OpenChannelInput.js +18 -14
  70. package/OpenChannel/components/OpenChannelInput.js.map +1 -1
  71. package/OpenChannel/components/OpenChannelMessage.js +23 -19
  72. package/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  73. package/OpenChannel/components/OpenChannelMessageList.js +25 -21
  74. package/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  75. package/OpenChannel/components/OpenChannelUI.js +25 -21
  76. package/OpenChannel/components/OpenChannelUI.js.map +1 -1
  77. package/OpenChannel/context.js +9 -9
  78. package/OpenChannel.js +25 -21
  79. package/OpenChannel.js.map +1 -1
  80. package/{OpenChannelProvider-a7691eb4.js → OpenChannelProvider-abc4ab98.js} +7 -7
  81. package/{OpenChannelProvider-a7691eb4.js.map → OpenChannelProvider-abc4ab98.js.map} +1 -1
  82. package/OpenChannelSettings/components/EditDetailsModal.js +13 -13
  83. package/OpenChannelSettings/components/OpenChannelProfile.js +13 -13
  84. package/OpenChannelSettings/components/OpenChannelSettingsUI.js +17 -17
  85. package/OpenChannelSettings/components/OperatorUI.js +16 -16
  86. package/OpenChannelSettings/components/ParticipantUI.js +14 -14
  87. package/OpenChannelSettings/context.js +2 -2
  88. package/OpenChannelSettings.js +17 -17
  89. package/README.md +9 -1
  90. package/SendbirdProvider.js +27 -13
  91. package/SendbirdProvider.js.map +1 -1
  92. package/{UserProfileContext-865db5e6.js → UserProfileContext-daa99f9b.js} +1 -1
  93. package/{UserProfileContext-865db5e6.js.map → UserProfileContext-daa99f9b.js.map} +1 -1
  94. package/{_rollupPluginBabelHelpers-20904f21.js → _rollupPluginBabelHelpers-8e4fae98.js} +1 -1
  95. package/{_rollupPluginBabelHelpers-20904f21.js.map → _rollupPluginBabelHelpers-8e4fae98.js.map} +1 -1
  96. package/{actionTypes-1e3a4074.js → actionTypes-189daf51.js} +1 -1
  97. package/{actionTypes-1e3a4074.js.map → actionTypes-189daf51.js.map} +1 -1
  98. package/cjs/App.js +41 -30
  99. package/cjs/App.js.map +1 -1
  100. package/cjs/Channel/components/ChannelHeader.js +15 -14
  101. package/cjs/Channel/components/ChannelHeader.js.map +1 -1
  102. package/cjs/Channel/components/ChannelUI.js +28 -21
  103. package/cjs/Channel/components/ChannelUI.js.map +1 -1
  104. package/cjs/Channel/components/FileViewer.js +14 -13
  105. package/cjs/Channel/components/FileViewer.js.map +1 -1
  106. package/cjs/Channel/components/FrozenNotification.js +5 -5
  107. package/cjs/Channel/components/Message.js +177 -61
  108. package/cjs/Channel/components/Message.js.map +1 -1
  109. package/cjs/Channel/components/MessageInput.js +144 -29
  110. package/cjs/Channel/components/MessageInput.js.map +1 -1
  111. package/cjs/Channel/components/MessageList.js +70 -58
  112. package/cjs/Channel/components/MessageList.js.map +1 -1
  113. package/cjs/Channel/components/RemoveMessageModal.js +17 -16
  114. package/cjs/Channel/components/RemoveMessageModal.js.map +1 -1
  115. package/cjs/Channel/components/SuggestedMentionList.js +256 -0
  116. package/cjs/Channel/components/SuggestedMentionList.js.map +1 -0
  117. package/cjs/Channel/components/TypingIndicator.js +14 -13
  118. package/cjs/Channel/components/TypingIndicator.js.map +1 -1
  119. package/cjs/Channel/components/UnreadCount.js +5 -5
  120. package/cjs/Channel/context.js +13 -12
  121. package/cjs/Channel/context.js.map +1 -1
  122. package/cjs/Channel.js +28 -21
  123. package/cjs/Channel.js.map +1 -1
  124. package/cjs/ChannelList/components/AddChannel.js +14 -14
  125. package/cjs/ChannelList/components/ChannelListHeader.js +7 -7
  126. package/cjs/ChannelList/components/ChannelListUI.js +24 -23
  127. package/cjs/ChannelList/components/ChannelListUI.js.map +1 -1
  128. package/cjs/ChannelList/components/ChannelPreview.js +23 -19
  129. package/cjs/ChannelList/components/ChannelPreview.js.map +1 -1
  130. package/cjs/ChannelList/components/ChannelPreviewAction.js +14 -14
  131. package/cjs/ChannelList/context.js +8 -8
  132. package/cjs/ChannelList.js +24 -23
  133. package/cjs/ChannelList.js.map +1 -1
  134. package/cjs/{ChannelListProvider-5a152618.js → ChannelListProvider-44dde549.js} +8 -8
  135. package/cjs/{ChannelListProvider-5a152618.js.map → ChannelListProvider-44dde549.js.map} +1 -1
  136. package/cjs/{ChannelProvider-f1fb0108.js → ChannelProvider-e0aaab26.js} +79 -48
  137. package/cjs/ChannelProvider-e0aaab26.js.map +1 -0
  138. package/cjs/ChannelSettings/components/AdminPanel.js +15 -15
  139. package/cjs/ChannelSettings/components/ChannelProfile.js +13 -13
  140. package/cjs/ChannelSettings/components/ChannelSettingsUI.js +18 -18
  141. package/cjs/ChannelSettings/components/EditDetailsModal.js +13 -13
  142. package/cjs/ChannelSettings/components/LeaveChannel.js +10 -10
  143. package/cjs/ChannelSettings/components/UserListItem.js +11 -11
  144. package/cjs/ChannelSettings/components/UserPanel.js +14 -14
  145. package/cjs/ChannelSettings/context.js +3 -3
  146. package/cjs/ChannelSettings.js +18 -18
  147. package/cjs/CreateChannel/components/CreateChannelUI.js +14 -14
  148. package/cjs/CreateChannel/components/InviteMembers.js +14 -14
  149. package/cjs/CreateChannel/components/SelectChannelType.js +10 -10
  150. package/cjs/CreateChannel/context.js +3 -3
  151. package/cjs/CreateChannel.js +14 -14
  152. package/cjs/{CreateChannelProvider-df42106f.js → CreateChannelProvider-bdf9c39b.js} +1 -1
  153. package/cjs/{CreateChannelProvider-df42106f.js.map → CreateChannelProvider-bdf9c39b.js.map} +1 -1
  154. package/cjs/EditUserProfile/components/EditUserProfileUI.js +13 -13
  155. package/cjs/EditUserProfile.js +13 -13
  156. package/cjs/{LocalizationContext-68e55e2a.js → LocalizationContext-3b5ce8ae.js} +3 -3
  157. package/cjs/{LocalizationContext-68e55e2a.js.map → LocalizationContext-3b5ce8ae.js.map} +1 -1
  158. package/cjs/{MemberList-dc84e303.js → MemberList-ef9e43c3.js} +5 -5
  159. package/cjs/{MemberList-dc84e303.js.map → MemberList-ef9e43c3.js.map} +1 -1
  160. package/cjs/MessageSearch/components/MessageSearchUI.js +11 -11
  161. package/cjs/MessageSearch/context.js +2 -2
  162. package/cjs/MessageSearch.js +11 -11
  163. package/cjs/OpenChannel/components/FrozenChannelNotification.js +5 -5
  164. package/cjs/OpenChannel/components/OpenChannelHeader.js +12 -12
  165. package/cjs/OpenChannel/components/OpenChannelInput.js +18 -14
  166. package/cjs/OpenChannel/components/OpenChannelInput.js.map +1 -1
  167. package/cjs/OpenChannel/components/OpenChannelMessage.js +23 -19
  168. package/cjs/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  169. package/cjs/OpenChannel/components/OpenChannelMessageList.js +25 -21
  170. package/cjs/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  171. package/cjs/OpenChannel/components/OpenChannelUI.js +25 -21
  172. package/cjs/OpenChannel/components/OpenChannelUI.js.map +1 -1
  173. package/cjs/OpenChannel/context.js +9 -9
  174. package/cjs/OpenChannel.js +25 -21
  175. package/cjs/OpenChannel.js.map +1 -1
  176. package/cjs/{OpenChannelProvider-7a1a996f.js → OpenChannelProvider-9ce7c998.js} +7 -7
  177. package/cjs/{OpenChannelProvider-7a1a996f.js.map → OpenChannelProvider-9ce7c998.js.map} +1 -1
  178. package/cjs/OpenChannelSettings/components/EditDetailsModal.js +13 -13
  179. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +13 -13
  180. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +17 -17
  181. package/cjs/OpenChannelSettings/components/OperatorUI.js +16 -16
  182. package/cjs/OpenChannelSettings/components/ParticipantUI.js +14 -14
  183. package/cjs/OpenChannelSettings/context.js +2 -2
  184. package/cjs/OpenChannelSettings.js +17 -17
  185. package/cjs/SendbirdProvider.js +27 -13
  186. package/cjs/SendbirdProvider.js.map +1 -1
  187. package/cjs/{UserProfileContext-3533547d.js → UserProfileContext-f0bdfbb8.js} +1 -1
  188. package/cjs/{UserProfileContext-3533547d.js.map → UserProfileContext-f0bdfbb8.js.map} +1 -1
  189. package/cjs/{_rollupPluginBabelHelpers-fc14118c.js → _rollupPluginBabelHelpers-e54d2387.js} +1 -1
  190. package/cjs/{_rollupPluginBabelHelpers-fc14118c.js.map → _rollupPluginBabelHelpers-e54d2387.js.map} +1 -1
  191. package/cjs/{actionTypes-bc47f97a.js → actionTypes-267d4c79.js} +1 -1
  192. package/cjs/{actionTypes-bc47f97a.js.map → actionTypes-267d4c79.js.map} +1 -1
  193. package/cjs/{color-4afb15fb.js → color-0f078673.js} +1 -1
  194. package/cjs/{color-4afb15fb.js.map → color-0f078673.js.map} +1 -1
  195. package/cjs/{compareIds-01306377.js → compareIds-176a582b.js} +1 -1
  196. package/cjs/{compareIds-01306377.js.map → compareIds-176a582b.js.map} +1 -1
  197. package/cjs/const-4bf0e8b4.js +22 -0
  198. package/cjs/const-4bf0e8b4.js.map +1 -0
  199. package/cjs/const-ccf192c5.js +14 -0
  200. package/cjs/const-ccf192c5.js.map +1 -0
  201. package/cjs/{context-c1f9d650.js → context-0cbe196d.js} +2 -2
  202. package/cjs/{context-c1f9d650.js.map → context-0cbe196d.js.map} +1 -1
  203. package/cjs/{index-d4880236.js → index-002a349d.js} +84 -3
  204. package/cjs/index-002a349d.js.map +1 -0
  205. package/cjs/{index-905331fa.js → index-0159bc57.js} +2 -2
  206. package/cjs/{index-905331fa.js.map → index-0159bc57.js.map} +1 -1
  207. package/cjs/{index-4987c8b2.js → index-081c9614.js} +6 -6
  208. package/cjs/{index-4987c8b2.js.map → index-081c9614.js.map} +1 -1
  209. package/cjs/{index-1468d245.js → index-21f31180.js} +3 -3
  210. package/cjs/{index-1468d245.js.map → index-21f31180.js.map} +1 -1
  211. package/cjs/{index-1044f1ed.js → index-22f07209.js} +3 -3
  212. package/cjs/{index-1044f1ed.js.map → index-22f07209.js.map} +1 -1
  213. package/cjs/{index-8becccd8.js → index-46522cf0.js} +4 -4
  214. package/cjs/{index-8becccd8.js.map → index-46522cf0.js.map} +1 -1
  215. package/cjs/index-723733db.js +54 -0
  216. package/cjs/index-723733db.js.map +1 -0
  217. package/cjs/{index-9dc3863f.js → index-c0693be4.js} +2 -2
  218. package/cjs/{index-9dc3863f.js.map → index-c0693be4.js.map} +1 -1
  219. package/cjs/{index-659c9ca5.js → index-d4f42e73.js} +4 -4
  220. package/cjs/{index-659c9ca5.js.map → index-d4f42e73.js.map} +1 -1
  221. package/cjs/{index-e2bb862c.js → index-d9439e95.js} +1 -1
  222. package/cjs/{index-e2bb862c.js.map → index-d9439e95.js.map} +1 -1
  223. package/cjs/{index-aecc8d24.js → index-ed053e45.js} +1 -1
  224. package/cjs/{index-aecc8d24.js.map → index-ed053e45.js.map} +1 -1
  225. package/cjs/index.css +165 -59
  226. package/cjs/index.css.map +1 -1
  227. package/cjs/index.js +38 -31
  228. package/cjs/index.js.map +1 -1
  229. package/cjs/{openChannelUtils-37919a36.js → openChannelUtils-cecaf987.js} +1 -1
  230. package/cjs/{openChannelUtils-37919a36.js.map → openChannelUtils-cecaf987.js.map} +1 -1
  231. package/cjs/sendBirdSelectors.js +1 -1
  232. package/cjs/{stringSet-aa544ce5.js → stringSet-f4da182b.js} +4 -2
  233. package/cjs/stringSet-f4da182b.js.map +1 -0
  234. package/cjs/{topics-8314d425.js → topics-c2c30f09.js} +1 -1
  235. package/cjs/{topics-8314d425.js.map → topics-c2c30f09.js.map} +1 -1
  236. package/cjs/{tslib.es6-4a281a05.js → tslib.es6-d7d0a427.js} +1 -1
  237. package/cjs/{tslib.es6-4a281a05.js.map → tslib.es6-d7d0a427.js.map} +1 -1
  238. package/cjs/ui/Accordion.js +4 -4
  239. package/cjs/ui/AccordionGroup.js +2 -2
  240. package/cjs/ui/AdminMessage.js +3 -3
  241. package/cjs/ui/Avatar.js +3 -3
  242. package/cjs/ui/Badge.js +5 -5
  243. package/cjs/ui/Button.js +4 -4
  244. package/cjs/ui/ChannelAvatar.js +4 -4
  245. package/cjs/ui/ChannelPreview.js +12 -12
  246. package/cjs/ui/ChatHeader.js +8 -8
  247. package/cjs/ui/Checkbox.js +1 -1
  248. package/cjs/ui/ConnectionStatus.js +5 -5
  249. package/cjs/ui/ContextMenu.js +5 -5
  250. package/cjs/ui/DateSeparator.js +4 -4
  251. package/cjs/ui/Dropdown.js +3 -3
  252. package/cjs/ui/EmojiReactions.js +7 -7
  253. package/cjs/ui/FileMessageItemBody.js +6 -6
  254. package/cjs/ui/FileViewer.js +7 -7
  255. package/cjs/ui/Icon.js +1 -1
  256. package/cjs/ui/IconButton.js +1 -1
  257. package/cjs/ui/ImageRenderer.js +1 -1
  258. package/cjs/ui/Input.js +3 -3
  259. package/cjs/ui/Label.js +3 -3
  260. package/cjs/ui/LinkLabel.js +3 -3
  261. package/cjs/ui/Loader.js +1 -1
  262. package/cjs/ui/MentionUserLabel.js +25 -0
  263. package/cjs/ui/MentionUserLabel.js.map +1 -0
  264. package/cjs/ui/MessageContent.js +25 -62
  265. package/cjs/ui/MessageContent.js.map +1 -1
  266. package/cjs/ui/MessageInput.js +4900 -84
  267. package/cjs/ui/MessageInput.js.map +1 -1
  268. package/cjs/ui/MessageItemMenu.js +7 -7
  269. package/cjs/ui/MessageItemReactionMenu.js +5 -5
  270. package/cjs/ui/MessageSearchFileItem.js +10 -10
  271. package/cjs/ui/MessageSearchItem.js +10 -10
  272. package/cjs/ui/MessageStatus.js +66 -0
  273. package/cjs/ui/MessageStatus.js.map +1 -0
  274. package/cjs/ui/Modal.js +8 -8
  275. package/cjs/ui/MutedAvatarOverlay.js +1 -1
  276. package/cjs/ui/OGMessageItemBody.js +38 -28
  277. package/cjs/ui/OGMessageItemBody.js.map +1 -1
  278. package/cjs/ui/OpenChannelAdminMessage.js +4 -4
  279. package/cjs/ui/OpenChannelAvatar.js +7 -7
  280. package/cjs/ui/OpenchannelConversationHeader.js +7 -7
  281. package/cjs/ui/OpenchannelFileMessage.js +14 -14
  282. package/cjs/ui/OpenchannelOGMessage.js +14 -14
  283. package/cjs/ui/OpenchannelThumbnailMessage.js +13 -13
  284. package/cjs/ui/OpenchannelUserMessage.js +14 -14
  285. package/cjs/ui/PlaceHolder.js +6 -6
  286. package/cjs/ui/QuoteMessage.js +7 -7
  287. package/cjs/ui/QuoteMessageInput.js +7 -7
  288. package/cjs/ui/QuoteMessageInput.js.map +1 -1
  289. package/cjs/ui/ReactionBadge.js +3 -3
  290. package/cjs/ui/ReactionButton.js +1 -1
  291. package/cjs/ui/SortByRow.js +1 -1
  292. package/cjs/ui/TextButton.js +2 -2
  293. package/cjs/ui/TextMessageItemBody.js +36 -14
  294. package/cjs/ui/TextMessageItemBody.js.map +1 -1
  295. package/cjs/ui/ThumbnailMessageItemBody.js +3 -3
  296. package/cjs/ui/Tooltip.js +3 -3
  297. package/cjs/ui/TooltipWrapper.js +1 -1
  298. package/cjs/ui/UnknownMessageItemBody.js +7 -7
  299. package/cjs/ui/UserListItem.js +11 -11
  300. package/cjs/ui/UserProfile.js +9 -9
  301. package/cjs/useSendbirdStateContext.js +1 -1
  302. package/cjs/{utils-cbd3ed99.js → utils-3e73a146.js} +1 -1
  303. package/cjs/{utils-cbd3ed99.js.map → utils-3e73a146.js.map} +1 -1
  304. package/cjs/{utils-66b3f4ec.js → utils-b95288a8.js} +1 -1
  305. package/cjs/{utils-66b3f4ec.js.map → utils-b95288a8.js.map} +1 -1
  306. package/cjs/{utils-3b0815dc.js → utils-c55d20dc.js} +1 -1
  307. package/cjs/{utils-3b0815dc.js.map → utils-c55d20dc.js.map} +1 -1
  308. package/cjs/{uuid-1d5ec8b2.js → uuid-ba6cc3c5.js} +1 -1
  309. package/cjs/{uuid-1d5ec8b2.js.map → uuid-ba6cc3c5.js.map} +1 -1
  310. package/cjs/withSendBird.js +1 -1
  311. package/{color-ee3fc5ee.js → color-2863fbbe.js} +1 -1
  312. package/{color-ee3fc5ee.js.map → color-2863fbbe.js.map} +1 -1
  313. package/{compareIds-808956f2.js → compareIds-48d87cc5.js} +1 -1
  314. package/{compareIds-808956f2.js.map → compareIds-48d87cc5.js.map} +1 -1
  315. package/const-09c22c50.js +18 -0
  316. package/const-09c22c50.js.map +1 -0
  317. package/const-3f63e129.js +8 -0
  318. package/const-3f63e129.js.map +1 -0
  319. package/{context-98ce535c.js → context-7877e5bb.js} +2 -2
  320. package/{context-98ce535c.js.map → context-7877e5bb.js.map} +1 -1
  321. package/dist/index.css +165 -59
  322. package/dist/index.css.map +1 -1
  323. package/{index-942c85a6.js → index-1fd114b0.js} +1 -1
  324. package/{index-942c85a6.js.map → index-1fd114b0.js.map} +1 -1
  325. package/{index-e818a8a3.js → index-303a3b6e.js} +4 -4
  326. package/{index-e818a8a3.js.map → index-303a3b6e.js.map} +1 -1
  327. package/{index-6ebf7894.js → index-353f13f3.js} +1 -1
  328. package/{index-6ebf7894.js.map → index-353f13f3.js.map} +1 -1
  329. package/{index-5c2c81bc.js → index-358226c7.js} +6 -6
  330. package/{index-5c2c81bc.js.map → index-358226c7.js.map} +1 -1
  331. package/{index-acebc2ff.js → index-41a6f4f2.js} +3 -3
  332. package/{index-acebc2ff.js.map → index-41a6f4f2.js.map} +1 -1
  333. package/index-4889e530.js +48 -0
  334. package/index-4889e530.js.map +1 -0
  335. package/{index-770d7112.js → index-4a59a866.js} +2 -2
  336. package/{index-770d7112.js.map → index-4a59a866.js.map} +1 -1
  337. package/{index-1718324d.js → index-86b0a341.js} +4 -4
  338. package/{index-1718324d.js.map → index-86b0a341.js.map} +1 -1
  339. package/{index-7a51bd16.js → index-a611bd38.js} +3 -3
  340. package/{index-7a51bd16.js.map → index-a611bd38.js.map} +1 -1
  341. package/{index-8c72a94a.js → index-ad4c9e58.js} +83 -3
  342. package/index-ad4c9e58.js.map +1 -0
  343. package/{index-cd21929d.js → index-f119413c.js} +2 -2
  344. package/{index-cd21929d.js.map → index-f119413c.js.map} +1 -1
  345. package/index.css +165 -59
  346. package/index.css.map +1 -1
  347. package/index.d.ts +237 -209
  348. package/index.js +38 -31
  349. package/index.js.map +1 -1
  350. package/{openChannelUtils-56a372e7.js → openChannelUtils-024b797a.js} +1 -1
  351. package/{openChannelUtils-56a372e7.js.map → openChannelUtils-024b797a.js.map} +1 -1
  352. package/package.json +2 -2
  353. package/sendBirdSelectors.js +1 -1
  354. package/{stringSet-4f6eaa60.js → stringSet-91746bf1.js} +4 -2
  355. package/stringSet-91746bf1.js.map +1 -0
  356. package/{topics-9442035c.js → topics-17d99dd6.js} +1 -1
  357. package/{topics-9442035c.js.map → topics-17d99dd6.js.map} +1 -1
  358. package/{tslib.es6-e3c44017.js → tslib.es6-83aa13f5.js} +1 -1
  359. package/{tslib.es6-e3c44017.js.map → tslib.es6-83aa13f5.js.map} +1 -1
  360. package/ui/Accordion.js +4 -4
  361. package/ui/AccordionGroup.js +2 -2
  362. package/ui/AdminMessage.js +3 -3
  363. package/ui/Avatar.js +3 -3
  364. package/ui/Badge.js +5 -5
  365. package/ui/Button.js +4 -4
  366. package/ui/ChannelAvatar.js +4 -4
  367. package/ui/ChannelPreview.js +12 -12
  368. package/ui/ChatHeader.js +8 -8
  369. package/ui/Checkbox.js +1 -1
  370. package/ui/ConnectionStatus.js +5 -5
  371. package/ui/ContextMenu.js +5 -5
  372. package/ui/DateSeparator.js +4 -4
  373. package/ui/Dropdown.js +3 -3
  374. package/ui/EmojiReactions.js +7 -7
  375. package/ui/FileMessageItemBody.js +6 -6
  376. package/ui/FileViewer.js +7 -7
  377. package/ui/Icon.js +1 -1
  378. package/ui/IconButton.js +1 -1
  379. package/ui/ImageRenderer.js +1 -1
  380. package/ui/Input.js +3 -3
  381. package/ui/Label.js +3 -3
  382. package/ui/LinkLabel.js +3 -3
  383. package/ui/Loader.js +1 -1
  384. package/ui/MentionUserLabel.js +19 -0
  385. package/ui/MentionUserLabel.js.map +1 -0
  386. package/ui/MessageContent.js +25 -62
  387. package/ui/MessageContent.js.map +1 -1
  388. package/ui/MessageInput.js +4900 -85
  389. package/ui/MessageInput.js.map +1 -1
  390. package/ui/MessageItemMenu.js +7 -7
  391. package/ui/MessageItemReactionMenu.js +5 -5
  392. package/ui/MessageSearchFileItem.js +10 -10
  393. package/ui/MessageSearchItem.js +10 -10
  394. package/ui/MessageStatus.js +57 -0
  395. package/ui/MessageStatus.js.map +1 -0
  396. package/ui/Modal.js +8 -8
  397. package/ui/MutedAvatarOverlay.js +1 -1
  398. package/ui/OGMessageItemBody.js +38 -28
  399. package/ui/OGMessageItemBody.js.map +1 -1
  400. package/ui/OpenChannelAdminMessage.js +4 -4
  401. package/ui/OpenChannelAvatar.js +7 -7
  402. package/ui/OpenchannelConversationHeader.js +7 -7
  403. package/ui/OpenchannelFileMessage.js +14 -14
  404. package/ui/OpenchannelOGMessage.js +14 -14
  405. package/ui/OpenchannelThumbnailMessage.js +13 -13
  406. package/ui/OpenchannelUserMessage.js +14 -14
  407. package/ui/PlaceHolder.js +6 -6
  408. package/ui/QuoteMessage.js +7 -7
  409. package/ui/QuoteMessageInput.js +7 -7
  410. package/ui/QuoteMessageInput.js.map +1 -1
  411. package/ui/ReactionBadge.js +3 -3
  412. package/ui/ReactionButton.js +1 -1
  413. package/ui/SortByRow.js +1 -1
  414. package/ui/TextButton.js +2 -2
  415. package/ui/TextMessageItemBody.js +37 -15
  416. package/ui/TextMessageItemBody.js.map +1 -1
  417. package/ui/ThumbnailMessageItemBody.js +3 -3
  418. package/ui/Tooltip.js +3 -3
  419. package/ui/TooltipWrapper.js +1 -1
  420. package/ui/UnknownMessageItemBody.js +7 -7
  421. package/ui/UserListItem.js +11 -11
  422. package/ui/UserProfile.js +9 -9
  423. package/useSendbirdStateContext.js +1 -1
  424. package/{utils-af1b9829.js → utils-5395ff17.js} +1 -1
  425. package/{utils-af1b9829.js.map → utils-5395ff17.js.map} +1 -1
  426. package/{utils-08c4dbdc.js → utils-7d39b941.js} +1 -1
  427. package/{utils-08c4dbdc.js.map → utils-7d39b941.js.map} +1 -1
  428. package/{utils-c393e880.js → utils-9ef11656.js} +1 -1
  429. package/{utils-c393e880.js.map → utils-9ef11656.js.map} +1 -1
  430. package/{uuid-b0c93400.js → uuid-6d14d007.js} +1 -1
  431. package/{uuid-b0c93400.js.map → uuid-6d14d007.js.map} +1 -1
  432. package/withSendBird.js +1 -1
  433. package/ChannelProvider-459e463f.js.map +0 -1
  434. package/cjs/ChannelProvider-f1fb0108.js.map +0 -1
  435. package/cjs/index-d4880236.js.map +0 -1
  436. package/cjs/stringSet-aa544ce5.js.map +0 -1
  437. package/index-8c72a94a.js.map +0 -1
  438. package/stringSet-4f6eaa60.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Message.js","sources":["../../../../src/smart-components/Channel/components/Message/index.tsx"],"sourcesContent":["import React, {\n useState,\n useRef,\n useLayoutEffect,\n useMemo,\n} from 'react';\nimport format from 'date-fns/format';\n\nimport useSendbirdStateContext from '../../../../hooks/useSendbirdStateContext';\nimport { useChannel } from '../../context/ChannelProvider';\nimport { getClassName } from '../../../../utils';\nimport { isDisabledBecauseFrozen } from '../../context/utils';\n\nimport DateSeparator from '../../../../ui/DateSeparator';\nimport Label, { LabelTypography, LabelColors } from '../../../../ui/Label';\nimport MessageInput from '../../../../ui/MessageInput';\nimport MessageContent from '../../../../ui/MessageContent';\nimport FileViewer from '../FileViewer';\nimport RemoveMessageModal from '../RemoveMessageModal';\nimport { EveryMessage, RenderMessageProps } from '../../../../types';\nimport { useLocalization } from '../../../../lib/LocalizationContext';\n\ntype MessageUIProps = {\n message: EveryMessage;\n hasSeparator?: boolean;\n chainTop?: boolean;\n chainBottom?: boolean;\n handleScroll: () => void;\n // for extending\n renderMessage?: (props: RenderMessageProps) => React.ReactNode;\n renderCustomSeperator?: () => React.ReactNode;\n renderEditInput?: () => React.ReactNode;\n renderMessageContent?: () => React.ReactNode;\n};\n\nconst Message: React.FC<MessageUIProps> = (props: MessageUIProps) => {\n const {\n message,\n hasSeparator,\n chainTop,\n chainBottom,\n handleScroll,\n renderCustomSeperator,\n renderEditInput,\n renderMessage,\n renderMessageContent,\n } = props;\n\n const { dateLocale } = useLocalization();\n const globalStore = useSendbirdStateContext();\n const userId = globalStore?.config?.userId;\n const isOnline = globalStore?.config?.isOnline;\n\n const {\n currentGroupChannel,\n highLightedMessageId,\n setHighLightedMessageId,\n animatedMessageId,\n setAnimatedMessageId,\n updateMessage,\n scrollToMessage,\n replyType,\n useReaction,\n toggleReaction,\n emojiContainer,\n nicknamesMap,\n quoteMessage,\n setQuoteMessage,\n resendMessage,\n } = useChannel();\n\n const [showEdit, setShowEdit] = useState(false);\n const [showRemove, setShowRemove] = useState(false);\n const [showFileViewer, setShowFileViewer] = useState(false);\n const [isAnimated, setIsAnimated] = useState(false);\n const [isHighlighted, setIsHighlighted] = useState(false);\n const editMessageInputRef = useRef(null);\n const useMessageScrollRef = useRef(null);\n\n useLayoutEffect(() => {\n handleScroll?.();\n }, [showEdit, message?.reactions?.length]);\n\n useLayoutEffect(() => {\n if (highLightedMessageId === message.messageId) {\n if (useMessageScrollRef && useMessageScrollRef.current) {\n useMessageScrollRef.current.scrollIntoView({\n block: 'center',\n inline: 'center',\n });\n setIsAnimated(false);\n setTimeout(() => {\n setIsHighlighted(true);\n }, 500);\n setTimeout(() => {\n setHighLightedMessageId(0);\n }, 1600);\n }\n } else {\n setIsHighlighted(false);\n }\n }, [highLightedMessageId, useMessageScrollRef.current, message.messageId]);\n\n useLayoutEffect(() => {\n if (animatedMessageId === message.messageId) {\n if (useMessageScrollRef && useMessageScrollRef.current) {\n useMessageScrollRef.current.scrollIntoView({\n block: 'center',\n inline: 'center',\n });\n setIsHighlighted(false);\n setTimeout(() => {\n setIsAnimated(true);\n }, 500);\n setTimeout(() => {\n setAnimatedMessageId(0);\n }, 1600);\n }\n } else {\n setIsAnimated(false);\n }\n }, [animatedMessageId, useMessageScrollRef.current, message.messageId]);\n const renderedMessage = useMemo(() => {\n return renderMessage?.({\n message,\n chainTop,\n chainBottom,\n });\n }, [message, renderMessage]);\n\n if (renderedMessage) {\n return (\n <div\n ref={useMessageScrollRef}\n className={getClassName([\n 'sendbird-msg-hoc sendbird-msg--scroll-ref',\n isAnimated ? 'sendbird-msg-hoc__animated' : '',\n isHighlighted ? 'sendbird-msg-hoc__highlighted' : '',\n ])}\n >\n {/* date-separator */}\n {\n // TODO: Add message instance as a function parameter\n hasSeparator && renderCustomSeperator?.() || (\n <DateSeparator>\n <Label type={LabelTypography.CAPTION_2} color={LabelColors.ONBACKGROUND_2}>\n {format(message.createdAt, 'MMMM dd, yyyy', {\n locale: dateLocale,\n })}\n </Label>\n </DateSeparator>\n )\n }\n {renderedMessage}\n </div>\n );\n }\n\n if (showEdit && message.isUserMessage()) {\n return renderEditInput?.() || (\n <MessageInput\n isEdit\n disabled={isDisabledBecauseFrozen(currentGroupChannel)}\n ref={editMessageInputRef}\n name={message.messageId}\n onSendMessage={updateMessage}\n onCancelEdit={() => { setShowEdit(false); }}\n value={(message as SendbirdUIKit.ClientUserMessage)?.message}\n />\n );\n }\n\n return (\n <div\n className={getClassName([\n 'sendbird-msg-hoc sendbird-msg--scroll-ref',\n isAnimated ? 'sendbird-msg-hoc__animated' : '',\n isHighlighted ? 'sendbird-msg-hoc__highlighted' : '',\n ])}\n style={{ marginBottom: '2px' }}\n ref={useMessageScrollRef}\n >\n {/* date-separator */}\n {\n hasSeparator && (renderCustomSeperator?.() || (\n <DateSeparator>\n <Label type={LabelTypography.CAPTION_2} color={LabelColors.ONBACKGROUND_2}>\n {format(message.createdAt, 'MMMM dd, yyyy', {\n locale: dateLocale,\n })}\n </Label>\n </DateSeparator>\n ))\n }\n {/* Message */}\n {\n renderMessageContent?.() || (\n <MessageContent\n className=\"sendbird-message-hoc__message-content\"\n userId={userId}\n scrollToMessage={scrollToMessage}\n channel={currentGroupChannel}\n message={message}\n disabled={!isOnline}\n chainTop={chainTop}\n chainBottom={chainBottom}\n useReaction={useReaction}\n replyType={replyType}\n nicknamesMap={nicknamesMap}\n emojiContainer={emojiContainer}\n showEdit={setShowEdit}\n showRemove={setShowRemove}\n showFileViewer={setShowFileViewer}\n resendMessage={resendMessage}\n toggleReaction={toggleReaction}\n quoteMessage={quoteMessage}\n setQuoteMessage={setQuoteMessage}\n />\n )\n }\n {/* Modal */}\n {\n showRemove && (\n <RemoveMessageModal\n message={message}\n onCancel={() => setShowRemove(false)}\n />\n )\n }\n {\n showFileViewer && (\n <FileViewer\n message={message as SendbirdUIKit.ClientFileMessage}\n onCancel={() => setShowFileViewer(false)}\n />\n )\n }\n </div>\n );\n};\n\nexport default Message;\n"],"names":["Message","props","message","hasSeparator","chainTop","chainBottom","handleScroll","renderCustomSeperator","renderEditInput","renderMessage","renderMessageContent","dateLocale","useLocalization","globalStore","useSendbirdStateContext","userId","config","isOnline","_e","useChannel","currentGroupChannel","highLightedMessageId","setHighLightedMessageId","animatedMessageId","setAnimatedMessageId","updateMessage","scrollToMessage","replyType","useReaction","toggleReaction","emojiContainer","nicknamesMap","quoteMessage","setQuoteMessage","resendMessage","_f","useState","showEdit","setShowEdit","_g","showRemove","setShowRemove","_h","showFileViewer","setShowFileViewer","_j","isAnimated","setIsAnimated","_k","isHighlighted","setIsHighlighted","editMessageInputRef","useRef","useMessageScrollRef","useLayoutEffect","reactions","length","messageId","current","scrollIntoView","block","inline","setTimeout","renderedMessage","useMemo","React","getClassName","DateSeparator","Label","LabelTypography","CAPTION_2","LabelColors","ONBACKGROUND_2","format","createdAt","locale","isUserMessage","MessageInput","isDisabledBecauseFrozen","marginBottom","MessageContent","RemoveMessageModal","FileViewer"],"mappings":"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"}
1
+ {"version":3,"file":"Message.js","sources":["../../../../src/smart-components/Channel/components/Message/index.tsx"],"sourcesContent":["import React, {\n useState,\n useEffect,\n useRef,\n useLayoutEffect,\n useMemo,\n} from 'react';\nimport format from 'date-fns/format';\n\nimport SuggestedMentionList from '../SuggestedMentionList';\nimport useSendbirdStateContext from '../../../../hooks/useSendbirdStateContext';\nimport { useChannel } from '../../context/ChannelProvider';\nimport { getClassName } from '../../../../utils';\nimport { isDisabledBecauseFrozen } from '../../context/utils';\nimport { MAX_USER_MENTION_COUNT, MAX_USER_SUGGESTION_COUNT } from '../../context/const';\n\nimport DateSeparator from '../../../../ui/DateSeparator';\nimport Label, { LabelTypography, LabelColors } from '../../../../ui/Label';\nimport MessageInput from '../../../../ui/MessageInput';\nimport MessageContent from '../../../../ui/MessageContent';\nimport FileViewer from '../FileViewer';\nimport RemoveMessageModal from '../RemoveMessageModal';\nimport { MessageInputKeys } from '../../../../ui/MessageInput/const';\nimport { EveryMessage, RenderMessageProps } from '../../../../types';\nimport { useLocalization } from '../../../../lib/LocalizationContext';\n\ntype MessageUIProps = {\n message: EveryMessage;\n hasSeparator?: boolean;\n chainTop?: boolean;\n chainBottom?: boolean;\n handleScroll: () => void;\n // for extending\n renderMessage?: (props: RenderMessageProps) => React.ReactNode;\n renderCustomSeperator?: () => React.ReactNode;\n renderEditInput?: () => React.ReactNode;\n renderMessageContent?: () => React.ReactNode;\n};\n\nconst Message: React.FC<MessageUIProps> = (props: MessageUIProps) => {\n const {\n message,\n hasSeparator,\n chainTop,\n chainBottom,\n handleScroll,\n renderCustomSeperator,\n renderEditInput,\n renderMessage,\n renderMessageContent,\n } = props;\n\n const { dateLocale } = useLocalization();\n const globalStore = useSendbirdStateContext();\n const {\n userId,\n isOnline,\n isMentionEnabled,\n userMention,\n } = globalStore?.config;\n const maxUserMentionCount = userMention?.maxMentionCount || MAX_USER_MENTION_COUNT;\n const maxUserSuggestionCount = userMention?.maxSuggestionCount || MAX_USER_SUGGESTION_COUNT;\n\n const {\n currentGroupChannel,\n highLightedMessageId,\n setHighLightedMessageId,\n animatedMessageId,\n setAnimatedMessageId,\n updateMessage,\n scrollToMessage,\n replyType,\n useReaction,\n toggleReaction,\n emojiContainer,\n nicknamesMap,\n setQuoteMessage,\n resendMessage,\n renderUserMentionItem,\n } = useChannel();\n\n const [showEdit, setShowEdit] = useState(false);\n const [showRemove, setShowRemove] = useState(false);\n const [showFileViewer, setShowFileViewer] = useState(false);\n const [isAnimated, setIsAnimated] = useState(false);\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [mentionNickname, setMentionNickname] = useState('');\n const [mentionedUsers, setMentionedUsers] = useState([]);\n const [mentionedUserIds, setMentionedUserIds] = useState([]);\n const [messageInputEvent, setMessageInputEvent] = useState(null);\n const [selectedUser, setSelectedUser] = useState(null);\n const [mentionSuggestedUsers, setMentionSuggestedUsers] = useState([]);\n const [ableMention, setAbleMention] = useState(true);\n const editMessageInputRef = useRef(null);\n const useMessageScrollRef = useRef(null);\n\n const displaySuggestedMentionList = (isMentionEnabled && mentionNickname.length > 0);\n\n useEffect(() => {\n if (mentionedUsers?.length >= maxUserMentionCount) {\n setAbleMention(false);\n } else {\n setAbleMention(true);\n }\n }, [mentionedUsers]);\n\n useEffect(() => {\n setMentionedUsers(mentionedUsers.filter(({ userId }) => {\n const i = mentionedUserIds.indexOf(userId);\n if (i < 0) {\n return false;\n } else {\n mentionedUserIds.splice(i, 1);\n return true;\n }\n }));\n }, [mentionedUserIds]);\n\n useLayoutEffect(() => {\n handleScroll?.();\n }, [showEdit, message?.reactions?.length]);\n\n useLayoutEffect(() => {\n if (highLightedMessageId === message.messageId) {\n if (useMessageScrollRef && useMessageScrollRef.current) {\n useMessageScrollRef.current.scrollIntoView({ block: 'center', inline: 'center' });\n setIsAnimated(false);\n setTimeout(() => {\n setIsHighlighted(true);\n }, 500);\n setTimeout(() => {\n setHighLightedMessageId(0);\n }, 1600);\n }\n } else {\n setIsHighlighted(false);\n }\n }, [highLightedMessageId, useMessageScrollRef.current, message.messageId]);\n\n useLayoutEffect(() => {\n if (animatedMessageId === message.messageId) {\n if (useMessageScrollRef && useMessageScrollRef.current) {\n useMessageScrollRef.current.scrollIntoView({ block: 'center', inline: 'center' });\n setIsHighlighted(false);\n setTimeout(() => {\n setIsAnimated(true);\n }, 500);\n setTimeout(() => {\n setAnimatedMessageId(0);\n }, 1600);\n }\n } else {\n setIsAnimated(false);\n }\n }, [animatedMessageId, useMessageScrollRef.current, message.messageId]);\n const renderedMessage = useMemo(() => {\n return renderMessage?.({\n message,\n chainTop,\n chainBottom,\n });\n }, [message, renderMessage]);\n\n if (renderedMessage) {\n return (\n <div\n ref={useMessageScrollRef}\n className={getClassName([\n 'sendbird-msg-hoc sendbird-msg--scroll-ref',\n isAnimated ? 'sendbird-msg-hoc__animated' : '',\n isHighlighted ? 'sendbird-msg-hoc__highlighted' : '',\n ])}\n >\n {/* date-separator */}\n {\n // TODO: Add message instance as a function parameter\n hasSeparator && renderCustomSeperator?.() || (\n <DateSeparator>\n <Label type={LabelTypography.CAPTION_2} color={LabelColors.ONBACKGROUND_2}>\n {format(message.createdAt, 'MMMM dd, yyyy', {\n locale: dateLocale,\n })}\n </Label>\n </DateSeparator>\n )\n }\n {renderedMessage}\n </div>\n );\n }\n\n if (showEdit && message.isUserMessage()) {\n return renderEditInput?.() || (\n <>\n {\n displaySuggestedMentionList && (\n <SuggestedMentionList\n targetNickname={mentionNickname}\n inputEvent={messageInputEvent}\n renderUserMentionItem={renderUserMentionItem}\n onUserItemClick={(user) => {\n if (user) {\n setMentionedUsers([...mentionedUsers, user]);\n }\n setMentionNickname('');\n setSelectedUser(user);\n setMessageInputEvent(null);\n }}\n onFocusItemChange={() => {\n setMessageInputEvent(null);\n }}\n onFetchUsers={(users) => {\n setMentionSuggestedUsers(users);\n }}\n ableAddMention={ableMention}\n maxMentionCount={maxUserMentionCount}\n maxSuggestionCount={maxUserSuggestionCount}\n />\n )\n }\n <MessageInput\n isEdit\n disabled={isDisabledBecauseFrozen(currentGroupChannel)}\n ref={editMessageInputRef}\n mentionSelectedUser={selectedUser}\n isMentionEnabled={isMentionEnabled}\n message={message}\n onUpdateMessage={({ messageId, message, mentionTemplate }) => {\n updateMessage({\n messageId,\n message,\n mentionedUsers,\n mentionTemplate,\n });\n setShowEdit(false);\n }}\n onCancelEdit={() => { setShowEdit(false); }}\n onUserMentioned={(user) => {\n if (selectedUser?.userId === user?.userId) {\n setSelectedUser(null);\n setMentionNickname('');\n }\n }}\n onMentionStringChange={(mentionText) => {\n setMentionNickname(mentionText);\n }}\n onMentionedUserIdsUpdated={(userIds) => {\n setMentionedUserIds(userIds);\n }}\n onKeyDown={(e) => {\n if (displaySuggestedMentionList && mentionSuggestedUsers?.length > 0\n && ((e.key === MessageInputKeys.Enter && ableMention) || e.key === MessageInputKeys.ArrowUp || e.key === MessageInputKeys.ArrowDown)\n ) {\n setMessageInputEvent(e);\n return true;\n }\n return false;\n }}\n />\n </>\n );\n }\n\n return (\n <div\n className={getClassName([\n 'sendbird-msg-hoc sendbird-msg--scroll-ref',\n isAnimated ? 'sendbird-msg-hoc__animated' : '',\n isHighlighted ? 'sendbird-msg-hoc__highlighted' : '',\n ])}\n style={{ marginBottom: '2px' }}\n ref={useMessageScrollRef}\n >\n {/* date-separator */}\n {\n hasSeparator && (renderCustomSeperator?.() || (\n <DateSeparator>\n <Label type={LabelTypography.CAPTION_2} color={LabelColors.ONBACKGROUND_2}>\n {format(message.createdAt, 'MMMM dd, yyyy', {\n locale: dateLocale,\n })}\n </Label>\n </DateSeparator>\n ))\n }\n {/* Message */}\n {\n renderMessageContent?.() || (\n <MessageContent\n className=\"sendbird-message-hoc__message-content\"\n userId={userId}\n scrollToMessage={scrollToMessage}\n channel={currentGroupChannel}\n message={message}\n disabled={!isOnline}\n chainTop={chainTop}\n chainBottom={chainBottom}\n useReaction={useReaction}\n replyType={replyType}\n nicknamesMap={nicknamesMap}\n emojiContainer={emojiContainer}\n showEdit={setShowEdit}\n showRemove={setShowRemove}\n showFileViewer={setShowFileViewer}\n resendMessage={resendMessage}\n toggleReaction={toggleReaction}\n setQuoteMessage={setQuoteMessage}\n />\n )\n }\n {/* Modal */}\n {\n showRemove && (\n <RemoveMessageModal\n message={message}\n onCancel={() => setShowRemove(false)}\n />\n )\n }\n {\n showFileViewer && (\n <FileViewer\n message={message as SendbirdUIKit.ClientFileMessage}\n onCancel={() => setShowFileViewer(false)}\n />\n )\n }\n </div>\n );\n};\n\nexport default Message;\n"],"names":["Message","props","message","hasSeparator","chainTop","chainBottom","handleScroll","renderCustomSeperator","renderEditInput","renderMessage","renderMessageContent","dateLocale","useLocalization","globalStore","useSendbirdStateContext","_b","config","userId","isOnline","isMentionEnabled","userMention","maxUserMentionCount","maxMentionCount","MAX_USER_MENTION_COUNT","maxUserSuggestionCount","maxSuggestionCount","MAX_USER_SUGGESTION_COUNT","_c","useChannel","currentGroupChannel","highLightedMessageId","setHighLightedMessageId","animatedMessageId","setAnimatedMessageId","updateMessage","scrollToMessage","replyType","useReaction","toggleReaction","emojiContainer","nicknamesMap","setQuoteMessage","resendMessage","renderUserMentionItem","_d","useState","showEdit","setShowEdit","_e","showRemove","setShowRemove","_f","showFileViewer","setShowFileViewer","_g","isAnimated","setIsAnimated","_h","isHighlighted","setIsHighlighted","_j","mentionNickname","setMentionNickname","_k","mentionedUsers","setMentionedUsers","_l","mentionedUserIds","setMentionedUserIds","_m","messageInputEvent","setMessageInputEvent","_o","selectedUser","setSelectedUser","_p","mentionSuggestedUsers","setMentionSuggestedUsers","_q","ableMention","setAbleMention","editMessageInputRef","useRef","useMessageScrollRef","displaySuggestedMentionList","length","useEffect","filter","_a","i","indexOf","splice","useLayoutEffect","reactions","messageId","current","scrollIntoView","block","inline","setTimeout","renderedMessage","useMemo","React","getClassName","DateSeparator","Label","LabelTypography","CAPTION_2","LabelColors","ONBACKGROUND_2","format","createdAt","locale","isUserMessage","SuggestedMentionList","user","users","MessageInput","isDisabledBecauseFrozen","mentionTemplate","mentionText","userIds","e","key","MessageInputKeys","Enter","ArrowUp","ArrowDown","marginBottom","MessageContent","RemoveMessageModal","FileViewer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuCMA,OAAO,GAA6B,SAApCA,OAAoC,CAACC,KAAD;;;AAEtC,MAAAC,OAAO,GASLD,KAAK,QATP;AAAA,MACAE,YAAY,GAQVF,KAAK,aATP;AAAA,MAEAG,QAAQ,GAONH,KAAK,SATP;AAAA,MAGAI,WAAW,GAMTJ,KAAK,YATP;AAAA,MAIAK,YAAY,GAKVL,KAAK,aATP;AAAA,MAKAM,qBAAqB,GAInBN,KAAK,sBATP;AAAA,MAMAO,eAAe,GAGbP,KAAK,gBATP;AAAA,MAOAQ,aAAa,GAEXR,KAAK,cATP;AAAA,MAQAS,oBAAoB,GAClBT,KAAK,qBATP;AAWM,MAAAU,UAAU,GAAKC,mCAAe,aAA9B;AACR,MAAMC,WAAW,GAAGC,uBAAuB,EAA3C;;AACM,MAAAC,KAKFF,WAAW,SAAX,IAAAA,WAAW,WAAX,SAAA,GAAAA,WAAW,CAAEG,MALX;AAAA,MACJC,MAAM,YADF;AAAA,MAEJC,QAAQ,cAFJ;AAAA,MAGJC,gBAAgB,sBAHZ;AAAA,MAIJC,WAAW,iBAJP;;AAMN,MAAMC,mBAAmB,GAAG,CAAAD,WAAW,SAAX,IAAAA,WAAW,WAAX,SAAA,GAAAA,WAAW,CAAEE,eAAb,KAAgCC,6BAA5D;AACA,MAAMC,sBAAsB,GAAG,CAAAJ,WAAW,SAAX,IAAAA,WAAW,WAAX,SAAA,GAAAA,WAAW,CAAEK,kBAAb,KAAmCC,gCAAlE;;AAEM,MAAAC,KAgBFC,0BAAU,EAhBR;AAAA,MACJC,mBAAmB,yBADf;AAAA,MAEJC,oBAAoB,0BAFhB;AAAA,MAGJC,uBAAuB,6BAHnB;AAAA,MAIJC,iBAAiB,uBAJb;AAAA,MAKJC,oBAAoB,0BALhB;AAAA,MAMJC,aAAa,mBANT;AAAA,MAOJC,eAAe,qBAPX;AAAA,MAQJC,SAAS,eARL;AAAA,MASJC,WAAW,iBATP;AAAA,MAUJC,cAAc,oBAVV;AAAA,MAWJC,cAAc,oBAXV;AAAA,MAYJC,YAAY,kBAZR;AAAA,MAaJC,eAAe,qBAbX;AAAA,MAcJC,aAAa,mBAdT;AAAA,MAeJC,qBAAqB,2BAfjB;;AAkBA,MAAAC,KAA0BC,cAAQ,CAAC,KAAD,CAAlC;AAAA,MAACC,QAAQ,QAAT;AAAA,MAAWC,WAAW,QAAtB;;AACA,MAAAC,KAA8BH,cAAQ,CAAC,KAAD,CAAtC;AAAA,MAACI,UAAU,QAAX;AAAA,MAAaC,aAAa,QAA1B;;AACA,MAAAC,KAAsCN,cAAQ,CAAC,KAAD,CAA9C;AAAA,MAACO,cAAc,QAAf;AAAA,MAAiBC,iBAAiB,QAAlC;;AACA,MAAAC,KAA8BT,cAAQ,CAAC,KAAD,CAAtC;AAAA,MAACU,UAAU,QAAX;AAAA,MAAaC,aAAa,QAA1B;;AACA,MAAAC,KAAoCZ,cAAQ,CAAC,KAAD,CAA5C;AAAA,MAACa,aAAa,QAAd;AAAA,MAAgBC,gBAAgB,QAAhC;;AACA,MAAAC,KAAwCf,cAAQ,CAAC,EAAD,CAAhD;AAAA,MAACgB,eAAe,QAAhB;AAAA,MAAkBC,kBAAkB,QAApC;;AACA,MAAAC,KAAsClB,cAAQ,CAAC,EAAD,CAA9C;AAAA,MAACmB,cAAc,QAAf;AAAA,MAAiBC,iBAAiB,QAAlC;;AACA,MAAAC,KAA0CrB,cAAQ,CAAC,EAAD,CAAlD;AAAA,MAACsB,gBAAgB,QAAjB;AAAA,MAAmBC,mBAAmB,QAAtC;;AACA,MAAAC,KAA4CxB,cAAQ,CAAC,IAAD,CAApD;AAAA,MAACyB,iBAAiB,QAAlB;AAAA,MAAoBC,oBAAoB,QAAxC;;AACA,MAAAC,KAAkC3B,cAAQ,CAAC,IAAD,CAA1C;AAAA,MAAC4B,YAAY,QAAb;AAAA,MAAeC,eAAe,QAA9B;;AACA,MAAAC,KAAoD9B,cAAQ,CAAC,EAAD,CAA5D;AAAA,MAAC+B,qBAAqB,QAAtB;AAAA,MAAwBC,wBAAwB,QAAhD;;AACA,MAAAC,KAAgCjC,cAAQ,CAAC,IAAD,CAAxC;AAAA,MAACkC,WAAW,QAAZ;AAAA,MAAcC,cAAc,QAA5B;;AACN,MAAMC,mBAAmB,GAAGC,YAAM,CAAC,IAAD,CAAlC;AACA,MAAMC,mBAAmB,GAAGD,YAAM,CAAC,IAAD,CAAlC;AAEA,MAAME,2BAA2B,GAAIjE,gBAAgB,IAAI0C,eAAe,CAACwB,MAAhB,GAAyB,CAAlF;AAEAC,EAAAA,eAAS,CAAC;AACR,QAAI,CAAAtB,cAAc,SAAd,IAAAA,cAAc,WAAd,SAAA,GAAAA,cAAc,CAAEqB,MAAhB,KAA0BhE,mBAA9B,EAAmD;AACjD2D,MAAAA,cAAc,CAAC,KAAD,CAAd;AACD,KAFD,MAEO;AACLA,MAAAA,cAAc,CAAC,IAAD,CAAd;AACD;AACF,GANQ,EAMN,CAAChB,cAAD,CANM,CAAT;AAQAsB,EAAAA,eAAS,CAAC;AACRrB,IAAAA,iBAAiB,CAACD,cAAc,CAACuB,MAAf,CAAsB,UAACC,EAAD;UAAGvE,MAAM;AAC/C,UAAMwE,CAAC,GAAGtB,gBAAgB,CAACuB,OAAjB,CAAyBzE,MAAzB,CAAV;;AACA,UAAIwE,CAAC,GAAG,CAAR,EAAW;AACT,eAAO,KAAP;AACD,OAFD,MAEO;AACLtB,QAAAA,gBAAgB,CAACwB,MAAjB,CAAwBF,CAAxB,EAA2B,CAA3B;AACA,eAAO,IAAP;AACD;AACF,KARiB,CAAD,CAAjB;AASD,GAVQ,EAUN,CAACtB,gBAAD,CAVM,CAAT;AAYAyB,EAAAA,qBAAe,CAAC;AACdtF,IAAAA,YAAY,SAAZ,IAAAA,YAAY,WAAZ,SAAA,GAAAA,YAAY,EAAZ;AACD,GAFc,EAEZ,CAACwC,QAAD,EAAW,MAAA5C,OAAO,SAAP,IAAAA,OAAO,WAAP,SAAA,GAAAA,OAAO,CAAE2F,SAAT,UAAA,iBAAA,SAAA,MAAoBR,MAA/B,CAFY,CAAf;AAIAO,EAAAA,qBAAe,CAAC;AACd,QAAI9D,oBAAoB,KAAK5B,OAAO,CAAC4F,SAArC,EAAgD;AAC9C,UAAIX,mBAAmB,IAAIA,mBAAmB,CAACY,OAA/C,EAAwD;AACtDZ,QAAAA,mBAAmB,CAACY,OAApB,CAA4BC,cAA5B,CAA2C;AAAEC,UAAAA,KAAK,EAAE,QAAT;AAAmBC,UAAAA,MAAM,EAAE;AAA3B,SAA3C;AACA1C,QAAAA,aAAa,CAAC,KAAD,CAAb;AACA2C,QAAAA,UAAU,CAAC;AACTxC,UAAAA,gBAAgB,CAAC,IAAD,CAAhB;AACD,SAFS,EAEP,GAFO,CAAV;AAGAwC,QAAAA,UAAU,CAAC;AACTpE,UAAAA,uBAAuB,CAAC,CAAD,CAAvB;AACD,SAFS,EAEP,IAFO,CAAV;AAGD;AACF,KAXD,MAWO;AACL4B,MAAAA,gBAAgB,CAAC,KAAD,CAAhB;AACD;AACF,GAfc,EAeZ,CAAC7B,oBAAD,EAAuBqD,mBAAmB,CAACY,OAA3C,EAAoD7F,OAAO,CAAC4F,SAA5D,CAfY,CAAf;AAiBAF,EAAAA,qBAAe,CAAC;AACd,QAAI5D,iBAAiB,KAAK9B,OAAO,CAAC4F,SAAlC,EAA6C;AAC3C,UAAIX,mBAAmB,IAAIA,mBAAmB,CAACY,OAA/C,EAAwD;AACtDZ,QAAAA,mBAAmB,CAACY,OAApB,CAA4BC,cAA5B,CAA2C;AAAEC,UAAAA,KAAK,EAAE,QAAT;AAAmBC,UAAAA,MAAM,EAAE;AAA3B,SAA3C;AACAvC,QAAAA,gBAAgB,CAAC,KAAD,CAAhB;AACAwC,QAAAA,UAAU,CAAC;AACT3C,UAAAA,aAAa,CAAC,IAAD,CAAb;AACD,SAFS,EAEP,GAFO,CAAV;AAGA2C,QAAAA,UAAU,CAAC;AACTlE,UAAAA,oBAAoB,CAAC,CAAD,CAApB;AACD,SAFS,EAEP,IAFO,CAAV;AAGD;AACF,KAXD,MAWO;AACLuB,MAAAA,aAAa,CAAC,KAAD,CAAb;AACD;AACF,GAfc,EAeZ,CAACxB,iBAAD,EAAoBmD,mBAAmB,CAACY,OAAxC,EAAiD7F,OAAO,CAAC4F,SAAzD,CAfY,CAAf;AAgBA,MAAMM,eAAe,GAAGC,aAAO,CAAC;AAC9B,WAAO5F,aAAa,SAAb,IAAAA,aAAa,WAAb,SAAA,GAAAA,aAAa,CAAG;AACrBP,MAAAA,OAAO,SADc;AAErBE,MAAAA,QAAQ,UAFa;AAGrBC,MAAAA,WAAW;AAHU,KAAH,CAApB;AAKD,GAN8B,EAM5B,CAACH,OAAD,EAAUO,aAAV,CAN4B,CAA/B;;AAQA,MAAI2F,eAAJ,EAAqB;AACnB,wBACEE;AACE,MAAA,GAAG,EAAEnB,mBADP;AAEE,MAAA,SAAS,EAAEoB,kBAAY,CAAC,CACtB,2CADsB,EAEtBhD,UAAU,GAAG,4BAAH,GAAkC,EAFtB,EAGtBG,aAAa,GAAG,+BAAH,GAAqC,EAH5B,CAAD;AAFzB;AAWIvD,IAAAA,YAAY,KAAII,qBAAqB,SAArB,IAAAA,qBAAqB,WAArB,SAAA,GAAAA,qBAAqB,EAAzB,CAAZ,iBACE+F,wCAACE,gBAAD,qBACEF,wCAACG,cAAD;AAAO,MAAA,IAAI,EAAEC,wBAAe,CAACC,SAA7B;AAAwC,MAAA,KAAK,EAAEC,oBAAW,CAACC;AAA3D,OACGC,cAAM,CAAC5G,OAAO,CAAC6G,SAAT,EAAoB,eAApB,EAAqC;AAC1CC,MAAAA,MAAM,EAAErG;AADkC,KAArC,CADT,CADF,CAZN,EAqBGyF,eArBH,CADF;AAyBD;;AAED,MAAItD,QAAQ,IAAI5C,OAAO,CAAC+G,aAAR,EAAhB,EAAyC;AACvC,WAAO,CAAAzG,eAAe,SAAf,IAAAA,eAAe,WAAf,SAAA,GAAAA,eAAe,EAAf,kBACL8F,kFAEIlB,2BAA2B,iBACzBkB,wCAACY,uCAAD;AACE,MAAA,cAAc,EAAErD,eADlB;AAEE,MAAA,UAAU,EAAES,iBAFd;AAGE,MAAA,qBAAqB,EAAE3B,qBAHzB;AAIE,MAAA,eAAe,EAAE,yBAACwE,IAAD;AACf,YAAIA,IAAJ,EAAU;AACRlD,UAAAA,iBAAiB,qDAAKD,wBAAgBmD,aAArB,CAAjB;AACD;;AACDrD,QAAAA,kBAAkB,CAAC,EAAD,CAAlB;AACAY,QAAAA,eAAe,CAACyC,IAAD,CAAf;AACA5C,QAAAA,oBAAoB,CAAC,IAAD,CAApB;AACD,OAXH;AAYE,MAAA,iBAAiB,EAAE;AACjBA,QAAAA,oBAAoB,CAAC,IAAD,CAApB;AACD,OAdH;AAeE,MAAA,YAAY,EAAE,sBAAC6C,KAAD;AACZvC,QAAAA,wBAAwB,CAACuC,KAAD,CAAxB;AACD,OAjBH;AAkBE,MAAA,cAAc,EAAErC,WAlBlB;AAmBE,MAAA,eAAe,EAAE1D,mBAnBnB;AAoBE,MAAA,kBAAkB,EAAEG;AApBtB,MAHN,eA2BE8E,wCAACe,eAAD;AACE,MAAA,MAAM,MADR;AAEE,MAAA,QAAQ,EAAEC,uCAAuB,CAACzF,mBAAD,CAFnC;AAGE,MAAA,GAAG,EAAEoD,mBAHP;AAIE,MAAA,mBAAmB,EAAER,YAJvB;AAKE,MAAA,gBAAgB,EAAEtD,gBALpB;AAME,MAAA,OAAO,EAAEjB,OANX;AAOE,MAAA,eAAe,EAAE,yBAACsF,EAAD;YAAGM,SAAS;YAAE5F,OAAO;YAAEqH,eAAe;AACrDrF,QAAAA,aAAa,CAAC;AACZ4D,UAAAA,SAAS,WADG;AAEZ5F,UAAAA,OAAO,SAFK;AAGZ8D,UAAAA,cAAc,gBAHF;AAIZuD,UAAAA,eAAe;AAJH,SAAD,CAAb;AAMAxE,QAAAA,WAAW,CAAC,KAAD,CAAX;AACD,OAfH;AAgBE,MAAA,YAAY,EAAE;AAAQA,QAAAA,WAAW,CAAC,KAAD,CAAX;AAAqB,OAhB7C;AAiBE,MAAA,eAAe,EAAE,yBAACoE,IAAD;AACf,YAAI,CAAA1C,YAAY,SAAZ,IAAAA,YAAY,WAAZ,SAAA,GAAAA,YAAY,CAAExD,MAAd,OAAyBkG,IAAI,SAAJ,IAAAA,IAAI,WAAJ,SAAA,GAAAA,IAAI,CAAElG,MAA/B,CAAJ,EAA2C;AACzCyD,UAAAA,eAAe,CAAC,IAAD,CAAf;AACAZ,UAAAA,kBAAkB,CAAC,EAAD,CAAlB;AACD;AACF,OAtBH;AAuBE,MAAA,qBAAqB,EAAE,+BAAC0D,WAAD;AACrB1D,QAAAA,kBAAkB,CAAC0D,WAAD,CAAlB;AACD,OAzBH;AA0BE,MAAA,yBAAyB,EAAE,mCAACC,OAAD;AACzBrD,QAAAA,mBAAmB,CAACqD,OAAD,CAAnB;AACD,OA5BH;AA6BE,MAAA,SAAS,EAAE,mBAACC,CAAD;AACT,YAAItC,2BAA2B,IAAI,CAAAR,qBAAqB,SAArB,IAAAA,qBAAqB,WAArB,SAAA,GAAAA,qBAAqB,CAAES,MAAvB,IAAgC,CAA/D,KACGqC,CAAC,CAACC,GAAF,KAAUC,yBAAgB,CAACC,KAA3B,IAAoC9C,WAArC,IAAqD2C,CAAC,CAACC,GAAF,KAAUC,yBAAgB,CAACE,OAAhF,IAA2FJ,CAAC,CAACC,GAAF,KAAUC,yBAAgB,CAACG,SADxH,CAAJ,EAEE;AACAxD,UAAAA,oBAAoB,CAACmD,CAAD,CAApB;AACA,iBAAO,IAAP;AACD;;AACD,eAAO,KAAP;AACD;AArCH,MA3BF,CADF;AAqED;;AAED,sBACEpB;AACE,IAAA,SAAS,EAAEC,kBAAY,CAAC,CACtB,2CADsB,EAEtBhD,UAAU,GAAG,4BAAH,GAAkC,EAFtB,EAGtBG,aAAa,GAAG,+BAAH,GAAqC,EAH5B,CAAD,CADzB;AAME,IAAA,KAAK,EAAE;AAAEsE,MAAAA,YAAY,EAAE;AAAhB,KANT;AAOE,IAAA,GAAG,EAAE7C;AAPP,KAWIhF,YAAY,KAAK,CAAAI,qBAAqB,SAArB,IAAAA,qBAAqB,WAArB,SAAA,GAAAA,qBAAqB,EAArB,kBACf+F,wCAACE,gBAAD,qBACEF,wCAACG,cAAD;AAAO,IAAA,IAAI,EAAEC,wBAAe,CAACC,SAA7B;AAAwC,IAAA,KAAK,EAAEC,oBAAW,CAACC;AAA3D,KACGC,cAAM,CAAC5G,OAAO,CAAC6G,SAAT,EAAoB,eAApB,EAAqC;AAC1CC,IAAAA,MAAM,EAAErG;AADkC,GAArC,CADT,CADF,CADU,CAXhB,EAuBI,CAAAD,oBAAoB,SAApB,IAAAA,oBAAoB,WAApB,SAAA,GAAAA,oBAAoB,EAApB,kBACE4F,wCAAC2B,iBAAD;AACE,IAAA,SAAS,EAAC,uCADZ;AAEE,IAAA,MAAM,EAAEhH,MAFV;AAGE,IAAA,eAAe,EAAEkB,eAHnB;AAIE,IAAA,OAAO,EAAEN,mBAJX;AAKE,IAAA,OAAO,EAAE3B,OALX;AAME,IAAA,QAAQ,EAAE,CAACgB,QANb;AAOE,IAAA,QAAQ,EAAEd,QAPZ;AAQE,IAAA,WAAW,EAAEC,WARf;AASE,IAAA,WAAW,EAAEgC,WATf;AAUE,IAAA,SAAS,EAAED,SAVb;AAWE,IAAA,YAAY,EAAEI,YAXhB;AAYE,IAAA,cAAc,EAAED,cAZlB;AAaE,IAAA,QAAQ,EAAEQ,WAbZ;AAcE,IAAA,UAAU,EAAEG,aAdd;AAeE,IAAA,cAAc,EAAEG,iBAflB;AAgBE,IAAA,aAAa,EAAEX,aAhBjB;AAiBE,IAAA,cAAc,EAAEJ,cAjBlB;AAkBE,IAAA,eAAe,EAAEG;AAlBnB,IAxBN,EAgDIQ,UAAU,iBACRqD,wCAAC4B,qCAAD;AACE,IAAA,OAAO,EAAEhI,OADX;AAEE,IAAA,QAAQ,EAAE;AAAM,aAAAgD,aAAa,CAAC,KAAD,CAAb;AAAoB;AAFtC,IAjDN,EAwDIE,cAAc,iBACZkD,wCAAC6B,wCAAD;AACE,IAAA,OAAO,EAAEjI,OADX;AAEE,IAAA,QAAQ,EAAE;AAAM,aAAAmD,iBAAiB,CAAC,KAAD,CAAjB;AAAwB;AAF1C,IAzDN,CADF;AAkED;;;;"}
@@ -1,56 +1,118 @@
1
1
  'use strict';
2
2
 
3
+ var tslib_es6 = require('../../tslib.es6-d7d0a427.js');
3
4
  var React = require('react');
4
- var Channel_context = require('../../ChannelProvider-f1fb0108.js');
5
+ var Channel_context = require('../../ChannelProvider-e0aaab26.js');
5
6
  var ui_MessageInput = require('../../ui/MessageInput.js');
6
7
  var ui_QuoteMessageInput = require('../../ui/QuoteMessageInput.js');
7
- var LocalizationContext = require('../../LocalizationContext-68e55e2a.js');
8
+ var LocalizationContext = require('../../LocalizationContext-3b5ce8ae.js');
8
9
  var useSendbirdStateContext = require('../../useSendbirdStateContext.js');
9
- require('../../UserProfileContext-3533547d.js');
10
+ var Channel_components_SuggestedMentionList = require('./SuggestedMentionList.js');
11
+ var _const = require('../../const-4bf0e8b4.js');
12
+ require('../../UserProfileContext-f0bdfbb8.js');
10
13
  require('prop-types');
11
- require('../../_rollupPluginBabelHelpers-fc14118c.js');
12
- require('../../index-905331fa.js');
13
- require('../../index-e2bb862c.js');
14
- require('../../topics-8314d425.js');
15
- require('../../index-d4880236.js');
16
- require('../../tslib.es6-4a281a05.js');
17
- require('../../compareIds-01306377.js');
18
- require('../../uuid-1d5ec8b2.js');
14
+ require('../../_rollupPluginBabelHelpers-e54d2387.js');
15
+ require('../../index-0159bc57.js');
16
+ require('../../index-d9439e95.js');
17
+ require('../../topics-c2c30f09.js');
18
+ require('../../index-002a349d.js');
19
+ require('../../compareIds-176a582b.js');
20
+ require('../../const-ccf192c5.js');
21
+ require('../../uuid-ba6cc3c5.js');
19
22
  require('../../ui/ContextMenu.js');
20
- require('../../index-1468d245.js');
21
- require('../../stringSet-aa544ce5.js');
23
+ require('../../index-21f31180.js');
24
+ require('../../stringSet-f4da182b.js');
22
25
  require('react-dom');
23
26
  require('../../ui/SortByRow.js');
24
27
  require('../../ui/ReactionButton.js');
25
28
  require('../../ui/ImageRenderer.js');
26
29
  require('../../ui/Icon.js');
30
+ require('stream');
27
31
  require('../../ui/IconButton.js');
28
- require('../../index-1044f1ed.js');
32
+ require('../../index-22f07209.js');
33
+ require('../../ui/MentionUserLabel.js');
29
34
  require('../../withSendBird.js');
35
+ require('../../ui/Avatar.js');
30
36
 
31
37
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
32
38
 
33
39
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
34
40
 
35
41
  var MessageInputWrapper = function MessageInputWrapper() {
36
- var _a;
37
-
38
- var _b = Channel_context.useChannel(),
39
- currentGroupChannel = _b.currentGroupChannel,
40
- initialized = _b.initialized,
41
- quoteMessage = _b.quoteMessage,
42
- sendMessage = _b.sendMessage,
43
- sendFileMessage = _b.sendFileMessage,
44
- setQuoteMessage = _b.setQuoteMessage,
45
- messageInputRef = _b.messageInputRef;
42
+ var _a = Channel_context.useChannel(),
43
+ currentGroupChannel = _a.currentGroupChannel,
44
+ initialized = _a.initialized,
45
+ quoteMessage = _a.quoteMessage,
46
+ sendMessage = _a.sendMessage,
47
+ sendFileMessage = _a.sendFileMessage,
48
+ setQuoteMessage = _a.setQuoteMessage,
49
+ messageInputRef = _a.messageInputRef,
50
+ renderUserMentionItem = _a.renderUserMentionItem;
46
51
 
47
52
  var globalStore = useSendbirdStateContext();
48
53
  var channel = currentGroupChannel;
49
- var isOnline = (_a = globalStore === null || globalStore === void 0 ? void 0 : globalStore.config) === null || _a === void 0 ? void 0 : _a.isOnline;
54
+
55
+ var _b = globalStore === null || globalStore === void 0 ? void 0 : globalStore.config,
56
+ isOnline = _b.isOnline,
57
+ isMentionEnabled = _b.isMentionEnabled,
58
+ userMention = _b.userMention;
59
+
60
+ var maxUserMentionCount = (userMention === null || userMention === void 0 ? void 0 : userMention.maxMentionCount) || 10;
61
+ var maxUserSuggestionCount = (userMention === null || userMention === void 0 ? void 0 : userMention.maxSuggestionCount) || 15;
50
62
  var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
63
+
64
+ var _c = React.useState(''),
65
+ mentionNickname = _c[0],
66
+ setMentionNickname = _c[1];
67
+
68
+ var _d = React.useState([]),
69
+ mentionedUsers = _d[0],
70
+ setMentionedUsers = _d[1];
71
+
72
+ var _e = React.useState([]),
73
+ mentionedUserIds = _e[0],
74
+ setMentionedUserIds = _e[1];
75
+
76
+ var _f = React.useState(null),
77
+ selectedUser = _f[0],
78
+ setSelectedUser = _f[1];
79
+
80
+ var _g = React.useState([]),
81
+ mentionSuggestedUsers = _g[0],
82
+ setMentionSuggestedUsers = _g[1];
83
+
84
+ var _h = React.useState(true),
85
+ ableMention = _h[0],
86
+ setAbleMention = _h[1];
87
+
88
+ var _j = React.useState(null),
89
+ messageInputEvent = _j[0],
90
+ setMessageInputEvent = _j[1];
91
+
51
92
  var disabled = !initialized || Channel_context.isDisabledBecauseFrozen(channel) || Channel_context.isDisabledBecauseMuted(channel) || !isOnline;
52
93
  var isOperator = Channel_context.isOperator(channel);
53
- var isBroadcast = channel.isBroadcast; // broadcast channel + not operator
94
+ var isBroadcast = channel.isBroadcast;
95
+ var displaySuggestedMentionList = isMentionEnabled && mentionNickname.length > 0;
96
+ React.useEffect(function () {
97
+ if ((mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) >= maxUserMentionCount) {
98
+ setAbleMention(false);
99
+ } else {
100
+ setAbleMention(true);
101
+ }
102
+ }, [mentionedUsers]);
103
+ React.useEffect(function () {
104
+ setMentionedUsers(mentionedUsers.filter(function (_a) {
105
+ var userId = _a.userId;
106
+ var i = mentionedUserIds.indexOf(userId);
107
+
108
+ if (i < 0) {
109
+ return false;
110
+ } else {
111
+ mentionedUserIds.splice(i, 1);
112
+ return true;
113
+ }
114
+ }));
115
+ }, [mentionedUserIds]); // broadcast channel + not operator
54
116
 
55
117
  if (isBroadcast && !isOperator) {
56
118
  return null;
@@ -59,7 +121,29 @@ var MessageInputWrapper = function MessageInputWrapper() {
59
121
 
60
122
  return /*#__PURE__*/React__default["default"].createElement("div", {
61
123
  className: "sendbird-message-input-wrapper"
62
- }, quoteMessage && /*#__PURE__*/React__default["default"].createElement("div", {
124
+ }, displaySuggestedMentionList && /*#__PURE__*/React__default["default"].createElement(Channel_components_SuggestedMentionList, {
125
+ targetNickname: mentionNickname,
126
+ inputEvent: messageInputEvent,
127
+ renderUserMentionItem: renderUserMentionItem,
128
+ onUserItemClick: function onUserItemClick(user) {
129
+ if (user) {
130
+ setMentionedUsers(tslib_es6.__spreadArray(tslib_es6.__spreadArray([], mentionedUsers, true), [user], false));
131
+ }
132
+
133
+ setMentionNickname('');
134
+ setSelectedUser(user);
135
+ setMessageInputEvent(null);
136
+ },
137
+ onFocusItemChange: function onFocusItemChange() {
138
+ setMessageInputEvent(null);
139
+ },
140
+ onFetchUsers: function onFetchUsers(users) {
141
+ setMentionSuggestedUsers(users);
142
+ },
143
+ ableAddMention: ableMention,
144
+ maxMentionCount: maxUserMentionCount,
145
+ maxSuggestionCount: maxUserSuggestionCount
146
+ }), quoteMessage && /*#__PURE__*/React__default["default"].createElement("div", {
63
147
  className: "sendbird-message-input-wrapper__quote-message-input"
64
148
  }, /*#__PURE__*/React__default["default"].createElement(ui_QuoteMessageInput, {
65
149
  replyingMessage: quoteMessage,
@@ -69,20 +153,51 @@ var MessageInputWrapper = function MessageInputWrapper() {
69
153
  })), /*#__PURE__*/React__default["default"].createElement(ui_MessageInput, {
70
154
  className: "sendbird-message-input-wrapper__message-input",
71
155
  channelUrl: channel === null || channel === void 0 ? void 0 : channel.url,
156
+ mentionSelectedUser: selectedUser,
157
+ isMentionEnabled: isMentionEnabled,
72
158
  placeholder: quoteMessage && stringSet.MESSAGE_INPUT__QUOTE_REPLY__PLACE_HOLDER || Channel_context.isDisabledBecauseFrozen(channel) && stringSet.MESSAGE_INPUT__PLACE_HOLDER__DISABLED || Channel_context.isDisabledBecauseMuted(channel) && stringSet.MESSAGE_INPUT__PLACE_HOLDER__MUTED,
73
159
  ref: messageInputRef,
74
160
  disabled: disabled,
75
161
  onStartTyping: function onStartTyping() {
76
162
  channel === null || channel === void 0 ? void 0 : channel.startTyping();
77
163
  },
78
- onSendMessage: function onSendMessage() {
79
- sendMessage(quoteMessage);
164
+ onSendMessage: function onSendMessage(_a) {
165
+ var message = _a.message,
166
+ mentionTemplate = _a.mentionTemplate;
167
+ sendMessage({
168
+ message: message,
169
+ quoteMessage: quoteMessage,
170
+ mentionedUsers: mentionedUsers,
171
+ mentionTemplate: mentionTemplate
172
+ });
173
+ setMentionNickname('');
174
+ setMentionedUsers([]);
80
175
  setQuoteMessage(null);
81
176
  channel === null || channel === void 0 ? void 0 : channel.endTyping();
82
177
  },
83
178
  onFileUpload: function onFileUpload(file) {
84
179
  sendFileMessage(file, quoteMessage);
85
180
  setQuoteMessage(null);
181
+ },
182
+ onUserMentioned: function onUserMentioned(user) {
183
+ if ((selectedUser === null || selectedUser === void 0 ? void 0 : selectedUser.userId) === (user === null || user === void 0 ? void 0 : user.userId)) {
184
+ setSelectedUser(null);
185
+ setMentionNickname('');
186
+ }
187
+ },
188
+ onMentionStringChange: function onMentionStringChange(mentionText) {
189
+ setMentionNickname(mentionText);
190
+ },
191
+ onMentionedUserIdsUpdated: function onMentionedUserIdsUpdated(userIds) {
192
+ setMentionedUserIds(userIds);
193
+ },
194
+ onKeyDown: function onKeyDown(e) {
195
+ if (displaySuggestedMentionList && (mentionSuggestedUsers === null || mentionSuggestedUsers === void 0 ? void 0 : mentionSuggestedUsers.length) > 0 && (e.key === _const.MessageInputKeys.Enter && ableMention || e.key === _const.MessageInputKeys.ArrowUp || e.key === _const.MessageInputKeys.ArrowDown)) {
196
+ setMessageInputEvent(e);
197
+ return true;
198
+ }
199
+
200
+ return false;
86
201
  }
87
202
  }));
88
203
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MessageInput.js","sources":["../../../../src/smart-components/Channel/components/MessageInput/index.tsx"],"sourcesContent":["import React, { useContext } from 'react';\n\nimport './message-input.scss';\nimport * as utils from '../../context/utils';\n\nimport MessageInput from '../../../../ui/MessageInput';\nimport QuoteMessageInput from '../../../../ui/QuoteMessageInput';\nimport { LocalizationContext } from '../../../../lib/LocalizationContext';\nimport { useChannel } from '../../context/ChannelProvider';\nimport useSendbirdStateContext from '../../../../hooks/useSendbirdStateContext';\n\nconst MessageInputWrapper = (): JSX.Element => {\n const {\n currentGroupChannel,\n initialized,\n quoteMessage,\n sendMessage,\n sendFileMessage,\n setQuoteMessage,\n messageInputRef,\n } = useChannel();\n const globalStore = useSendbirdStateContext();\n const channel = currentGroupChannel;\n\n const isOnline = globalStore?.config?.isOnline;\n\n const { stringSet } = useContext(LocalizationContext);\n const disabled = !initialized\n || utils.isDisabledBecauseFrozen(channel)\n || utils.isDisabledBecauseMuted(channel)\n || !isOnline;\n\n const isOperator = utils.isOperator(channel);\n const { isBroadcast } = channel;\n\n // broadcast channel + not operator\n if (isBroadcast && !isOperator) {\n return null;\n }\n\n // other conditions\n return (\n <div className=\"sendbird-message-input-wrapper\">\n {quoteMessage && (\n <div className=\"sendbird-message-input-wrapper__quote-message-input\">\n <QuoteMessageInput\n replyingMessage={quoteMessage}\n onClose={() => setQuoteMessage(null)}\n />\n </div>\n )}\n <MessageInput\n className=\"sendbird-message-input-wrapper__message-input\"\n channelUrl={channel?.url}\n placeholder={\n (quoteMessage && stringSet.MESSAGE_INPUT__QUOTE_REPLY__PLACE_HOLDER)\n || (utils.isDisabledBecauseFrozen(channel) && stringSet.MESSAGE_INPUT__PLACE_HOLDER__DISABLED)\n || (utils.isDisabledBecauseMuted(channel) && stringSet.MESSAGE_INPUT__PLACE_HOLDER__MUTED)\n }\n ref={messageInputRef}\n disabled={disabled}\n onStartTyping={() => {\n channel?.startTyping();\n }}\n onSendMessage={() => {\n sendMessage(quoteMessage);\n setQuoteMessage(null);\n channel?.endTyping();\n }}\n onFileUpload={(file) => {\n sendFileMessage(file, quoteMessage);\n setQuoteMessage(null);\n }}\n />\n </div>\n );\n}\n\nexport default React.forwardRef(MessageInputWrapper);\n"],"names":["MessageInputWrapper","_b","useChannel","currentGroupChannel","initialized","quoteMessage","sendMessage","sendFileMessage","setQuoteMessage","messageInputRef","globalStore","useSendbirdStateContext","channel","isOnline","config","stringSet","useContext","LocalizationContext","disabled","utils","isOperator","isBroadcast","React","QuoteMessageInput","MessageInput","url","MESSAGE_INPUT__QUOTE_REPLY__PLACE_HOLDER","MESSAGE_INPUT__PLACE_HOLDER__DISABLED","MESSAGE_INPUT__PLACE_HOLDER__MUTED","startTyping","endTyping","file","forwardRef"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB;;;AACpB,MAAAC,KAQFC,0BAAU,EARR;AAAA,MACJC,mBAAmB,yBADf;AAAA,MAEJC,WAAW,iBAFP;AAAA,MAGJC,YAAY,kBAHR;AAAA,MAIJC,WAAW,iBAJP;AAAA,MAKJC,eAAe,qBALX;AAAA,MAMJC,eAAe,qBANX;AAAA,MAOJC,eAAe,qBAPX;;AASN,MAAMC,WAAW,GAAGC,uBAAuB,EAA3C;AACA,MAAMC,OAAO,GAAGT,mBAAhB;AAEA,MAAMU,QAAQ,GAAG,MAAAH,WAAW,SAAX,IAAAA,WAAW,WAAX,SAAA,GAAAA,WAAW,CAAEI,MAAb,UAAA,iBAAA,SAAA,MAAqBD,QAAtC;AAEQ,MAAAE,SAAS,GAAKC,gBAAU,CAACC,uCAAD,CAAV,UAAd;AACR,MAAMC,QAAQ,GAAG,CAACd,WAAD,IACZe,uCAAA,CAA8BP,OAA9B,CADY,IAEZO,sCAAA,CAA6BP,OAA7B,CAFY,IAGZ,CAACC,QAHN;AAKA,MAAMO,UAAU,GAAGD,0BAAA,CAAiBP,OAAjB,CAAnB;AACQ,MAAAS,WAAW,GAAKT,OAAO,YAAvB;;AAGR,MAAIS,WAAW,IAAI,CAACD,UAApB,EAAgC;AAC9B,WAAO,IAAP;AACD;;;AAGD,sBACEE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGjB,YAAY,iBACXiB;AAAK,IAAA,SAAS,EAAC;AAAf,kBACEA,wCAACC,oBAAD;AACE,IAAA,eAAe,EAAElB,YADnB;AAEE,IAAA,OAAO,EAAE;AAAM,aAAAG,eAAe,CAAC,IAAD,CAAf;AAAqB;AAFtC,IADF,CAFJ,eASEc,wCAACE,eAAD;AACE,IAAA,SAAS,EAAC,+CADZ;AAEE,IAAA,UAAU,EAAEZ,OAAO,SAAP,IAAAA,OAAO,WAAP,SAAA,GAAAA,OAAO,CAAEa,GAFvB;AAGE,IAAA,WAAW,EACRpB,YAAY,IAAIU,SAAS,CAACW,wCAA3B,IACIP,uCAAA,CAA8BP,OAA9B,KAA0CG,SAAS,CAACY,qCADxD,IAEIR,sCAAA,CAA6BP,OAA7B,KAAyCG,SAAS,CAACa,kCAN3D;AAQE,IAAA,GAAG,EAAEnB,eARP;AASE,IAAA,QAAQ,EAAES,QATZ;AAUE,IAAA,aAAa,EAAE;AACbN,MAAAA,OAAO,SAAP,IAAAA,OAAO,WAAP,SAAA,GAAAA,OAAO,CAAEiB,WAAT,EAAA;AACD,KAZH;AAaE,IAAA,aAAa,EAAE;AACbvB,MAAAA,WAAW,CAACD,YAAD,CAAX;AACAG,MAAAA,eAAe,CAAC,IAAD,CAAf;AACAI,MAAAA,OAAO,SAAP,IAAAA,OAAO,WAAP,SAAA,GAAAA,OAAO,CAAEkB,SAAT,EAAA;AACD,KAjBH;AAkBE,IAAA,YAAY,EAAE,sBAACC,IAAD;AACZxB,MAAAA,eAAe,CAACwB,IAAD,EAAO1B,YAAP,CAAf;AACAG,MAAAA,eAAe,CAAC,IAAD,CAAf;AACD;AArBH,IATF,CADF;AAmCD,CAjED;;AAmEA,yCAAec,yBAAK,CAACU,UAAN,CAAiBhC,mBAAjB,CAAf;;;;"}
1
+ {"version":3,"file":"MessageInput.js","sources":["../../../../src/smart-components/Channel/components/MessageInput/index.tsx"],"sourcesContent":["import React, { useState, useContext, useEffect } from 'react';\n\nimport './message-input.scss';\nimport * as utils from '../../context/utils';\n\nimport MessageInput from '../../../../ui/MessageInput';\nimport QuoteMessageInput from '../../../../ui/QuoteMessageInput';\nimport { LocalizationContext } from '../../../../lib/LocalizationContext';\nimport { useChannel } from '../../context/ChannelProvider';\nimport useSendbirdStateContext from '../../../../hooks/useSendbirdStateContext';\nimport SuggestedMentionList from '../SuggestedMentionList';\nimport { MessageInputKeys } from '../../../../ui/MessageInput/const';\n\nconst MessageInputWrapper = (): JSX.Element => {\n const {\n currentGroupChannel,\n initialized,\n quoteMessage,\n sendMessage,\n sendFileMessage,\n setQuoteMessage,\n messageInputRef,\n renderUserMentionItem,\n } = useChannel();\n const globalStore = useSendbirdStateContext();\n const channel = currentGroupChannel;\n\n const { isOnline, isMentionEnabled, userMention } = globalStore?.config;\n const maxUserMentionCount = userMention?.maxMentionCount || 10;\n const maxUserSuggestionCount = userMention?.maxSuggestionCount || 15;\n\n const { stringSet } = useContext(LocalizationContext);\n const [mentionNickname, setMentionNickname] = useState('');\n const [mentionedUsers, setMentionedUsers] = useState([]);\n const [mentionedUserIds, setMentionedUserIds] = useState([]);\n const [selectedUser, setSelectedUser] = useState(null);\n const [mentionSuggestedUsers, setMentionSuggestedUsers] = useState([]);\n const [ableMention, setAbleMention] = useState(true);\n const [messageInputEvent, setMessageInputEvent] = useState(null);\n const disabled = !initialized\n || utils.isDisabledBecauseFrozen(channel)\n || utils.isDisabledBecauseMuted(channel)\n || !isOnline;\n const isOperator = utils.isOperator(channel);\n const { isBroadcast } = channel;\n\n const displaySuggestedMentionList = (isMentionEnabled && mentionNickname.length > 0);\n\n useEffect(() => {\n if (mentionedUsers?.length >= maxUserMentionCount) {\n setAbleMention(false);\n } else {\n setAbleMention(true);\n }\n }, [mentionedUsers]);\n\n useEffect(() => {\n setMentionedUsers(mentionedUsers.filter(({ userId }) => {\n const i = mentionedUserIds.indexOf(userId);\n if (i < 0) {\n return false;\n } else {\n mentionedUserIds.splice(i, 1);\n return true;\n }\n }));\n }, [mentionedUserIds]);\n\n // broadcast channel + not operator\n if (isBroadcast && !isOperator) {\n return null;\n }\n // other conditions\n return (\n <div className=\"sendbird-message-input-wrapper\">\n {\n displaySuggestedMentionList && (\n <SuggestedMentionList\n targetNickname={mentionNickname}\n inputEvent={messageInputEvent}\n renderUserMentionItem={renderUserMentionItem}\n onUserItemClick={(user) => {\n if (user) {\n setMentionedUsers([...mentionedUsers, user]);\n }\n setMentionNickname('');\n setSelectedUser(user);\n setMessageInputEvent(null);\n }}\n onFocusItemChange={() => {\n setMessageInputEvent(null);\n }}\n onFetchUsers={(users) => {\n setMentionSuggestedUsers(users);\n }}\n ableAddMention={ableMention}\n maxMentionCount={maxUserMentionCount}\n maxSuggestionCount={maxUserSuggestionCount}\n />\n )\n }\n {quoteMessage && (\n <div className=\"sendbird-message-input-wrapper__quote-message-input\">\n <QuoteMessageInput\n replyingMessage={quoteMessage}\n onClose={() => setQuoteMessage(null)}\n />\n </div>\n )}\n <MessageInput\n className=\"sendbird-message-input-wrapper__message-input\"\n channelUrl={channel?.url}\n mentionSelectedUser={selectedUser}\n isMentionEnabled={isMentionEnabled}\n placeholder={\n (quoteMessage && stringSet.MESSAGE_INPUT__QUOTE_REPLY__PLACE_HOLDER)\n || (utils.isDisabledBecauseFrozen(channel) && stringSet.MESSAGE_INPUT__PLACE_HOLDER__DISABLED)\n || (utils.isDisabledBecauseMuted(channel) && stringSet.MESSAGE_INPUT__PLACE_HOLDER__MUTED)\n }\n ref={messageInputRef}\n disabled={disabled}\n onStartTyping={() => {\n channel?.startTyping();\n }}\n onSendMessage={({ message, mentionTemplate }) => {\n sendMessage({\n message,\n quoteMessage,\n mentionedUsers,\n mentionTemplate,\n });\n setMentionNickname('');\n setMentionedUsers([]);\n setQuoteMessage(null);\n channel?.endTyping();\n }}\n onFileUpload={(file) => {\n sendFileMessage(file, quoteMessage);\n setQuoteMessage(null);\n }}\n onUserMentioned={(user) => {\n if (selectedUser?.userId === user?.userId) {\n setSelectedUser(null);\n setMentionNickname('');\n }\n }}\n onMentionStringChange={(mentionText) => {\n setMentionNickname(mentionText);\n }}\n onMentionedUserIdsUpdated={(userIds) => {\n setMentionedUserIds(userIds);\n }}\n onKeyDown={(e) => {\n if (displaySuggestedMentionList && mentionSuggestedUsers?.length > 0\n && ((e.key === MessageInputKeys.Enter && ableMention) || e.key === MessageInputKeys.ArrowUp || e.key === MessageInputKeys.ArrowDown)\n ) {\n setMessageInputEvent(e);\n return true;\n }\n return false;\n }}\n />\n </div>\n );\n}\n\nexport default React.forwardRef(MessageInputWrapper);\n"],"names":["MessageInputWrapper","_a","useChannel","currentGroupChannel","initialized","quoteMessage","sendMessage","sendFileMessage","setQuoteMessage","messageInputRef","renderUserMentionItem","globalStore","useSendbirdStateContext","channel","_b","config","isOnline","isMentionEnabled","userMention","maxUserMentionCount","maxMentionCount","maxUserSuggestionCount","maxSuggestionCount","stringSet","useContext","LocalizationContext","_c","useState","mentionNickname","setMentionNickname","_d","mentionedUsers","setMentionedUsers","_e","mentionedUserIds","setMentionedUserIds","_f","selectedUser","setSelectedUser","_g","mentionSuggestedUsers","setMentionSuggestedUsers","_h","ableMention","setAbleMention","_j","messageInputEvent","setMessageInputEvent","disabled","utils","isOperator","isBroadcast","displaySuggestedMentionList","length","useEffect","filter","userId","i","indexOf","splice","React","SuggestedMentionList","user","users","QuoteMessageInput","MessageInput","url","MESSAGE_INPUT__QUOTE_REPLY__PLACE_HOLDER","MESSAGE_INPUT__PLACE_HOLDER__DISABLED","MESSAGE_INPUT__PLACE_HOLDER__MUTED","startTyping","message","mentionTemplate","endTyping","file","mentionText","userIds","e","key","MessageInputKeys","Enter","ArrowUp","ArrowDown","forwardRef"],"mappings":"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"}
@@ -1,41 +1,47 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var index = require('../../index-9dc3863f.js');
5
- var Channel_context = require('../../ChannelProvider-f1fb0108.js');
6
- var ui_PlaceHolder = require('../../index-659c9ca5.js');
4
+ var index = require('../../index-c0693be4.js');
5
+ var Channel_context = require('../../ChannelProvider-e0aaab26.js');
6
+ var ui_PlaceHolder = require('../../index-d4f42e73.js');
7
7
  var ui_Icon = require('../../ui/Icon.js');
8
8
  var Channel_components_Message = require('./Message.js');
9
- var uuid = require('../../uuid-1d5ec8b2.js');
10
- require('../../index-905331fa.js');
11
- require('../../index-e2bb862c.js');
12
- require('../../UserProfileContext-3533547d.js');
9
+ var uuid = require('../../uuid-ba6cc3c5.js');
10
+ require('../../index-0159bc57.js');
11
+ require('../../index-d9439e95.js');
12
+ require('../../UserProfileContext-f0bdfbb8.js');
13
13
  require('prop-types');
14
14
  require('../../useSendbirdStateContext.js');
15
15
  require('../../withSendBird.js');
16
- require('../../_rollupPluginBabelHelpers-fc14118c.js');
17
- require('../../topics-8314d425.js');
18
- require('../../index-d4880236.js');
19
- require('../../tslib.es6-4a281a05.js');
20
- require('../../compareIds-01306377.js');
16
+ require('../../_rollupPluginBabelHelpers-e54d2387.js');
17
+ require('../../topics-c2c30f09.js');
18
+ require('../../index-002a349d.js');
19
+ require('../../tslib.es6-d7d0a427.js');
20
+ require('../../compareIds-176a582b.js');
21
+ require('../../const-ccf192c5.js');
21
22
  require('../../ui/ContextMenu.js');
22
- require('../../index-1468d245.js');
23
- require('../../stringSet-aa544ce5.js');
23
+ require('../../index-21f31180.js');
24
+ require('../../stringSet-f4da182b.js');
24
25
  require('react-dom');
25
26
  require('../../ui/SortByRow.js');
26
27
  require('../../ui/ReactionButton.js');
27
28
  require('../../ui/ImageRenderer.js');
28
29
  require('../../ui/Loader.js');
29
- require('../../LocalizationContext-68e55e2a.js');
30
+ require('../../LocalizationContext-3b5ce8ae.js');
31
+ require('./SuggestedMentionList.js');
32
+ require('../../ui/Avatar.js');
33
+ require('../../const-4bf0e8b4.js');
30
34
  require('../../ui/DateSeparator.js');
31
- require('../../color-4afb15fb.js');
35
+ require('../../color-0f078673.js');
32
36
  require('../../ui/MessageInput.js');
37
+ require('stream');
33
38
  require('../../ui/IconButton.js');
34
- require('../../index-1044f1ed.js');
39
+ require('../../index-22f07209.js');
40
+ require('../../ui/MentionUserLabel.js');
35
41
  require('../../ui/MessageContent.js');
36
- require('../../ui/Avatar.js');
37
42
  require('../../ui/UserProfile.js');
38
43
  require('../../sendBirdSelectors.js');
44
+ require('../../ui/MessageStatus.js');
39
45
  require('../../ui/MessageItemMenu.js');
40
46
  require('../../ui/MessageItemReactionMenu.js');
41
47
  require('../../ui/EmojiReactions.js');
@@ -44,18 +50,19 @@ require('../../ui/TooltipWrapper.js');
44
50
  require('../../ui/ReactionBadge.js');
45
51
  require('../../ui/AdminMessage.js');
46
52
  require('../../ui/TextMessageItemBody.js');
53
+ require('../../index-723733db.js');
54
+ require('../../ui/LinkLabel.js');
47
55
  require('../../ui/FileMessageItemBody.js');
48
56
  require('../../ui/TextButton.js');
49
57
  require('../../ui/ThumbnailMessageItemBody.js');
50
58
  require('../../ui/OGMessageItemBody.js');
51
- require('../../ui/LinkLabel.js');
52
59
  require('../../ui/UnknownMessageItemBody.js');
53
60
  require('../../ui/QuoteMessage.js');
54
61
  require('./FileViewer.js');
55
- require('../../index-aecc8d24.js');
62
+ require('../../index-ed053e45.js');
56
63
  require('./RemoveMessageModal.js');
57
64
  require('../../ui/Modal.js');
58
- require('../../utils-3b0815dc.js');
65
+ require('../../utils-c55d20dc.js');
59
66
 
60
67
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
61
68
 
@@ -160,7 +167,47 @@ var MessageList = function MessageList(props) {
160
167
  if ((_a = scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current) === null || _a === void 0 ? void 0 : _a.scrollTop) {
161
168
  scrollRef.current.scrollTop = ((_b = scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current) === null || _b === void 0 ? void 0 : _b.scrollHeight) - ((_c = scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current) === null || _c === void 0 ? void 0 : _c.offsetHeight);
162
169
  }
163
- };
170
+ }; // Because every message components are re-rendered everytime by every scroll events
171
+
172
+
173
+ var memoizedAllMessages = React.useMemo(function () {
174
+ return allMessages.map(function (m, idx) {
175
+ var previousMessage = allMessages[idx - 1];
176
+ var nextMessage = allMessages[idx + 1];
177
+
178
+ var _a = useMessageGrouping ? Channel_context.compareMessagesForGrouping(previousMessage, m, nextMessage) : [false, false],
179
+ chainTop = _a[0],
180
+ chainBottom = _a[1];
181
+
182
+ var previousMessageCreatedAt = previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.createdAt;
183
+ var currentCreatedAt = m.createdAt; // https://stackoverflow.com/a/41855608
184
+
185
+ var hasSeparator = !(previousMessageCreatedAt && index.isSameDay(currentCreatedAt, previousMessageCreatedAt));
186
+
187
+ var handleScroll = function handleScroll() {
188
+ var current = scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current;
189
+
190
+ if (current) {
191
+ var bottom = current.scrollHeight - current.scrollTop - current.offsetHeight;
192
+
193
+ if (scrollBottom < bottom) {
194
+ current.scrollTop += bottom - scrollBottom;
195
+ }
196
+ }
197
+ };
198
+
199
+ return /*#__PURE__*/React__default["default"].createElement(Channel_components_Message, {
200
+ handleScroll: handleScroll,
201
+ renderMessage: renderMessage,
202
+ message: m,
203
+ hasSeparator: hasSeparator,
204
+ chainTop: chainTop,
205
+ chainBottom: chainBottom,
206
+ renderCustomSeperator: renderCustomSeperator,
207
+ key: m.messageId + uuid.uuidv4()
208
+ });
209
+ });
210
+ }, [allMessages]);
164
211
 
165
212
  if (allMessages.length < 1) {
166
213
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, (renderPlaceholderEmpty === null || renderPlaceholderEmpty === void 0 ? void 0 : renderPlaceholderEmpty()) || /*#__PURE__*/React__default["default"].createElement(ui_PlaceHolder.PlaceHolder, {
@@ -179,42 +226,7 @@ var MessageList = function MessageList(props) {
179
226
  className: "sendbird-conversation__messages-padding",
180
227
  ref: scrollRef,
181
228
  onScroll: onScroll
182
- }, allMessages.map(function (m, idx) {
183
- var previousMessage = allMessages[idx - 1];
184
- var nextMessage = allMessages[idx + 1];
185
-
186
- var _a = useMessageGrouping ? Channel_context.compareMessagesForGrouping(previousMessage, m, nextMessage) : [false, false],
187
- chainTop = _a[0],
188
- chainBottom = _a[1];
189
-
190
- var previousMessageCreatedAt = previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.createdAt;
191
- var currentCreatedAt = m.createdAt; // https://stackoverflow.com/a/41855608
192
-
193
- var hasSeparator = !(previousMessageCreatedAt && index.isSameDay(currentCreatedAt, previousMessageCreatedAt));
194
-
195
- var handleScroll = function handleScroll() {
196
- var current = scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current;
197
-
198
- if (current) {
199
- var bottom = current.scrollHeight - current.scrollTop - current.offsetHeight;
200
-
201
- if (scrollBottom < bottom) {
202
- current.scrollTop += bottom - scrollBottom;
203
- }
204
- }
205
- };
206
-
207
- return /*#__PURE__*/React__default["default"].createElement(Channel_components_Message, {
208
- handleScroll: handleScroll,
209
- renderMessage: renderMessage,
210
- message: m,
211
- hasSeparator: hasSeparator,
212
- chainTop: chainTop,
213
- chainBottom: chainBottom,
214
- renderCustomSeperator: renderCustomSeperator,
215
- key: (m === null || m === void 0 ? void 0 : m.messageId) + uuid.uuidv4()
216
- });
217
- }))), // This flag is an unmatched variable
229
+ }, memoizedAllMessages)), // This flag is an unmatched variable
218
230
  scrollBottom > 1 && /*#__PURE__*/React__default["default"].createElement("div", {
219
231
  className: "sendbird-conversation__scroll-bottom-button",
220
232
  onClick: onClickScrollBot,
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.js","sources":["../../../../src/smart-components/Channel/components/MessageList/index.tsx"],"sourcesContent":["import './message-list.scss';\n\nimport React, { useState } from 'react';\nimport isSameDay from 'date-fns/isSameDay';\n\nimport { useChannel } from '../../context/ChannelProvider';\nimport PlaceHolder, { PlaceHolderTypes } from '../../../../ui/PlaceHolder';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport { compareMessagesForGrouping } from '../../context/utils';\nimport Message from '../Message';\nimport { RenderMessageProps } from '../../../../types';\nimport { isAboutSame } from '../../context/utils';\nimport uuidv4 from '../../../../utils/uuid';\n\nexport type MessageListProps = {\n renderMessage?: (props: RenderMessageProps) => React.ReactNode;\n renderPlaceholderEmpty?: () => React.ReactNode;\n renderCustomSeperator?: () => React.ReactNode;\n};\n\nconst SCROLL_REF_CLASS_NAME = '.sendbird-msg--scroll-ref';\n\nconst MessageList: React.FC<MessageListProps> = (props: MessageListProps) => {\n const {\n renderMessage,\n renderPlaceholderEmpty,\n renderCustomSeperator,\n } = props;\n const {\n allMessages,\n hasMorePrev,\n setInitialTimeStamp,\n setAnimatedMessageId,\n setHighLightedMessageId,\n useMessageGrouping,\n scrollRef,\n onScrollCallback,\n onScrollDownCallback,\n messagesDispatcher,\n messageActionTypes,\n currentGroupChannel,\n } = useChannel();\n const [scrollBottom, setScrollBottom] = useState(0);\n\n const onScroll = (e) => {\n const element = e.target;\n const {\n scrollTop,\n clientHeight,\n scrollHeight,\n } = element;\n\n if (scrollTop === 0) {\n if (!hasMorePrev) {\n return;\n }\n const nodes = scrollRef.current.querySelectorAll(SCROLL_REF_CLASS_NAME);\n const first = nodes && nodes[0];\n onScrollCallback(([messages]) => {\n if (messages) {\n // https://github.com/scabbiaza/react-scroll-position-on-updating-dom\n // Set block to nearest to prevent unexpected scrolling from outer components\n try {\n first.scrollIntoView({ block: \"start\", inline: \"nearest\" });\n } catch (error) {\n //\n }\n }\n });\n }\n\n if (isAboutSame(clientHeight + scrollTop, scrollHeight, 10)) {\n onScrollDownCallback(([messages]) => {\n if (messages) {\n try {\n element.scrollTop = scrollHeight - clientHeight;\n } catch (error) {\n //\n }\n }\n });\n }\n\n // save the lastest scroll bottom value\n if (scrollRef?.current) {\n const current = scrollRef?.current;\n setScrollBottom(current.scrollHeight - current.scrollTop - current.offsetHeight)\n }\n\n // do this later\n setTimeout(() => {\n // mark as read if scroll is at end\n if (clientHeight + scrollTop === scrollHeight) {\n messagesDispatcher({\n type: messageActionTypes.MARK_AS_READ,\n payload: { channel: currentGroupChannel },\n });\n currentGroupChannel.markAsRead();\n }\n }, 500);\n };\n\n const onClickScrollBot = () => {\n setInitialTimeStamp?.(null);\n setAnimatedMessageId?.(null);\n setHighLightedMessageId?.(null);\n if (scrollRef?.current?.scrollTop) {\n scrollRef.current.scrollTop = scrollRef?.current?.scrollHeight - scrollRef?.current?.offsetHeight;\n }\n };\n\n if (allMessages.length < 1) {\n return (\n <>\n {\n renderPlaceholderEmpty?.() || (\n <PlaceHolder\n className=\"sendbird-conversation__no-messages\"\n type={PlaceHolderTypes.NO_MESSAGES}\n />)\n }\n </>\n );\n }\n return (\n <div className=\"sendbird-conversation__messages\">\n <div className=\"sendbird-conversation__scroll-container\">\n <div className=\"sendbird-conversation__padding\" />\n <div\n className=\"sendbird-conversation__messages-padding\"\n ref={scrollRef}\n onScroll={onScroll}\n >\n {\n allMessages.map(\n (m, idx) => {\n const previousMessage = allMessages[idx - 1];\n const nextMessage = allMessages[idx + 1];\n const [chainTop, chainBottom] = useMessageGrouping\n ? compareMessagesForGrouping(previousMessage, m, nextMessage)\n : [false, false];\n const previousMessageCreatedAt = previousMessage?.createdAt;\n const currentCreatedAt = m.createdAt;\n // https://stackoverflow.com/a/41855608\n const hasSeparator = !(previousMessageCreatedAt && (\n isSameDay(currentCreatedAt, previousMessageCreatedAt)\n ));\n\n const handleScroll = () => {\n const current = scrollRef?.current;\n if (current) {\n const bottom = current.scrollHeight - current.scrollTop - current.offsetHeight;\n if (scrollBottom < bottom) {\n current.scrollTop += bottom - scrollBottom;\n }\n }\n }\n\n return (\n <Message\n handleScroll={handleScroll}\n renderMessage={renderMessage}\n message={m}\n hasSeparator={hasSeparator}\n chainTop={chainTop}\n chainBottom={chainBottom}\n renderCustomSeperator={renderCustomSeperator}\n key={m?.messageId + uuidv4()}\n />\n )\n },\n )\n }\n </div>\n </div>\n {\n // This flag is an unmatched variable\n (scrollBottom > 1) && (\n <div\n className=\"sendbird-conversation__scroll-bottom-button\"\n onClick={onClickScrollBot}\n onKeyDown={onClickScrollBot}\n tabIndex={0}\n role=\"button\"\n >\n <Icon\n width=\"24px\"\n height=\"24px\"\n type={IconTypes.CHEVRON_DOWN}\n fillColor={IconColors.PRIMARY}\n />\n </div>\n )\n }\n </div>\n );\n};\n\nexport default MessageList;\n"],"names":["SCROLL_REF_CLASS_NAME","MessageList","props","renderMessage","renderPlaceholderEmpty","renderCustomSeperator","_a","useChannel","allMessages","hasMorePrev","setInitialTimeStamp","setAnimatedMessageId","setHighLightedMessageId","useMessageGrouping","scrollRef","onScrollCallback","onScrollDownCallback","messagesDispatcher","messageActionTypes","currentGroupChannel","_b","useState","scrollBottom","setScrollBottom","onScroll","e","element","target","scrollTop","clientHeight","scrollHeight","nodes","current","querySelectorAll","first_1","messages","scrollIntoView","block","inline","error","isAboutSame","offsetHeight","setTimeout","type","MARK_AS_READ","payload","channel","markAsRead","onClickScrollBot","length","React","PlaceHolder","PlaceHolderTypes","NO_MESSAGES","map","m","idx","previousMessage","nextMessage","compareMessagesForGrouping","chainTop","chainBottom","previousMessageCreatedAt","createdAt","currentCreatedAt","hasSeparator","isSameDay","handleScroll","bottom","Message","messageId","uuidv4","Icon","IconTypes","CHEVRON_DOWN","IconColors","PRIMARY"],"mappings":"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"}
1
+ {"version":3,"file":"MessageList.js","sources":["../../../../src/smart-components/Channel/components/MessageList/index.tsx"],"sourcesContent":["import './message-list.scss';\n\nimport React, { useState, useMemo } from 'react';\nimport isSameDay from 'date-fns/isSameDay';\n\nimport { useChannel } from '../../context/ChannelProvider';\nimport PlaceHolder, { PlaceHolderTypes } from '../../../../ui/PlaceHolder';\nimport Icon, { IconTypes, IconColors } from '../../../../ui/Icon';\nimport { compareMessagesForGrouping } from '../../context/utils';\nimport Message from '../Message';\nimport { RenderMessageProps } from '../../../../types';\nimport { isAboutSame } from '../../context/utils';\nimport uuidv4 from '../../../../utils/uuid';\n\nexport type MessageListProps = {\n renderMessage?: (props: RenderMessageProps) => React.ReactNode;\n renderPlaceholderEmpty?: () => React.ReactNode;\n renderCustomSeperator?: () => React.ReactNode;\n};\n\nconst SCROLL_REF_CLASS_NAME = '.sendbird-msg--scroll-ref';\n\nconst MessageList: React.FC<MessageListProps> = (props: MessageListProps) => {\n const {\n renderMessage,\n renderPlaceholderEmpty,\n renderCustomSeperator,\n } = props;\n const {\n allMessages,\n hasMorePrev,\n setInitialTimeStamp,\n setAnimatedMessageId,\n setHighLightedMessageId,\n useMessageGrouping,\n scrollRef,\n onScrollCallback,\n onScrollDownCallback,\n messagesDispatcher,\n messageActionTypes,\n currentGroupChannel,\n } = useChannel();\n const [scrollBottom, setScrollBottom] = useState(0);\n\n const onScroll = (e) => {\n const element = e.target;\n const {\n scrollTop,\n clientHeight,\n scrollHeight,\n } = element;\n\n if (scrollTop === 0) {\n if (!hasMorePrev) {\n return;\n }\n const nodes = scrollRef.current.querySelectorAll(SCROLL_REF_CLASS_NAME);\n const first = nodes && nodes[0];\n onScrollCallback(([messages]) => {\n if (messages) {\n // https://github.com/scabbiaza/react-scroll-position-on-updating-dom\n // Set block to nearest to prevent unexpected scrolling from outer components\n try {\n first.scrollIntoView({ block: \"start\", inline: \"nearest\" });\n } catch (error) {\n //\n }\n }\n });\n }\n\n if (isAboutSame(clientHeight + scrollTop, scrollHeight, 10)) {\n onScrollDownCallback(([messages]) => {\n if (messages) {\n try {\n element.scrollTop = scrollHeight - clientHeight;\n } catch (error) {\n //\n }\n }\n });\n }\n\n // save the lastest scroll bottom value\n if (scrollRef?.current) {\n const current = scrollRef?.current;\n setScrollBottom(current.scrollHeight - current.scrollTop - current.offsetHeight)\n }\n\n // do this later\n setTimeout(() => {\n // mark as read if scroll is at end\n if (clientHeight + scrollTop === scrollHeight) {\n messagesDispatcher({\n type: messageActionTypes.MARK_AS_READ,\n payload: { channel: currentGroupChannel },\n });\n currentGroupChannel.markAsRead();\n }\n }, 500);\n };\n\n const onClickScrollBot = () => {\n setInitialTimeStamp?.(null);\n setAnimatedMessageId?.(null);\n setHighLightedMessageId?.(null);\n if (scrollRef?.current?.scrollTop) {\n scrollRef.current.scrollTop = scrollRef?.current?.scrollHeight - scrollRef?.current?.offsetHeight;\n }\n };\n\n // Because every message components are re-rendered everytime by every scroll events\n const memoizedAllMessages = useMemo(() => {\n return (\n allMessages.map((m, idx) => {\n const previousMessage = allMessages[idx - 1];\n const nextMessage = allMessages[idx + 1];\n const [chainTop, chainBottom] = useMessageGrouping\n ? compareMessagesForGrouping(previousMessage, m, nextMessage)\n : [false, false];\n const previousMessageCreatedAt = previousMessage?.createdAt;\n const currentCreatedAt = m.createdAt;\n // https://stackoverflow.com/a/41855608\n const hasSeparator = !(previousMessageCreatedAt && (\n isSameDay(currentCreatedAt, previousMessageCreatedAt)\n ));\n\n const handleScroll = () => {\n const current = scrollRef?.current;\n if (current) {\n const bottom = current.scrollHeight - current.scrollTop - current.offsetHeight;\n if (scrollBottom < bottom) {\n current.scrollTop += bottom - scrollBottom;\n }\n }\n }\n\n return (\n <Message\n handleScroll={handleScroll}\n renderMessage={renderMessage}\n message={m}\n hasSeparator={hasSeparator}\n chainTop={chainTop}\n chainBottom={chainBottom}\n renderCustomSeperator={renderCustomSeperator}\n key={m.messageId + uuidv4()}\n />\n );\n })\n );\n }, [allMessages]);\n\n if (allMessages.length < 1) {\n return (\n <>\n {\n renderPlaceholderEmpty?.() || (\n <PlaceHolder\n className=\"sendbird-conversation__no-messages\"\n type={PlaceHolderTypes.NO_MESSAGES}\n />)\n }\n </>\n );\n }\n return (\n <div className=\"sendbird-conversation__messages\">\n <div className=\"sendbird-conversation__scroll-container\">\n <div className=\"sendbird-conversation__padding\" />\n <div\n className=\"sendbird-conversation__messages-padding\"\n ref={scrollRef}\n onScroll={onScroll}\n >\n {memoizedAllMessages}\n </div>\n </div>\n {\n // This flag is an unmatched variable\n (scrollBottom > 1) && (\n <div\n className=\"sendbird-conversation__scroll-bottom-button\"\n onClick={onClickScrollBot}\n onKeyDown={onClickScrollBot}\n tabIndex={0}\n role=\"button\"\n >\n <Icon\n width=\"24px\"\n height=\"24px\"\n type={IconTypes.CHEVRON_DOWN}\n fillColor={IconColors.PRIMARY}\n />\n </div>\n )\n }\n </div>\n );\n};\n\nexport default MessageList;\n"],"names":["SCROLL_REF_CLASS_NAME","MessageList","props","renderMessage","renderPlaceholderEmpty","renderCustomSeperator","_a","useChannel","allMessages","hasMorePrev","setInitialTimeStamp","setAnimatedMessageId","setHighLightedMessageId","useMessageGrouping","scrollRef","onScrollCallback","onScrollDownCallback","messagesDispatcher","messageActionTypes","currentGroupChannel","_b","useState","scrollBottom","setScrollBottom","onScroll","e","element","target","scrollTop","clientHeight","scrollHeight","nodes","current","querySelectorAll","first_1","messages","scrollIntoView","block","inline","error","isAboutSame","offsetHeight","setTimeout","type","MARK_AS_READ","payload","channel","markAsRead","onClickScrollBot","memoizedAllMessages","useMemo","map","m","idx","previousMessage","nextMessage","compareMessagesForGrouping","chainTop","chainBottom","previousMessageCreatedAt","createdAt","currentCreatedAt","hasSeparator","isSameDay","handleScroll","bottom","React","Message","messageId","uuidv4","length","PlaceHolder","PlaceHolderTypes","NO_MESSAGES","Icon","IconTypes","CHEVRON_DOWN","IconColors","PRIMARY"],"mappings":"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"}