stream-chat-react 11.3.0 → 11.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/dist/browser.full-bundle.js +5791 -5143
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +4 -4
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/Attachment/Attachment.d.ts.map +1 -1
  6. package/dist/components/Attachment/Attachment.js +1 -0
  7. package/dist/components/Attachment/AttachmentContainer.d.ts.map +1 -1
  8. package/dist/components/Attachment/AttachmentContainer.js +1 -0
  9. package/dist/components/Attachment/hooks/useAudioController.d.ts.map +1 -1
  10. package/dist/components/Attachment/hooks/useAudioController.js +1 -0
  11. package/dist/components/Channel/Channel.d.ts +9 -2
  12. package/dist/components/Channel/Channel.d.ts.map +1 -1
  13. package/dist/components/Channel/Channel.js +119 -45
  14. package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -1
  15. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +3 -1
  16. package/dist/components/Channel/hooks/useCreateTypingContext.d.ts.map +1 -1
  17. package/dist/components/Channel/hooks/useCreateTypingContext.js +3 -1
  18. package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
  19. package/dist/components/ChannelList/ChannelList.js +3 -0
  20. package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts.map +1 -1
  21. package/dist/components/ChannelList/hooks/useChannelDeletedListener.js +1 -0
  22. package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts.map +1 -1
  23. package/dist/components/ChannelList/hooks/useChannelHiddenListener.js +1 -0
  24. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts.map +1 -1
  25. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.js +1 -0
  26. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts.map +1 -1
  27. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.js +1 -0
  28. package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts.map +1 -1
  29. package/dist/components/ChannelList/hooks/useChannelVisibleListener.js +1 -0
  30. package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts.map +1 -1
  31. package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.js +1 -0
  32. package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts.map +1 -1
  33. package/dist/components/ChannelList/hooks/useMessageNewListener.js +1 -0
  34. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts.map +1 -1
  35. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js +1 -0
  36. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts.map +1 -1
  37. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.js +1 -0
  38. package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts.map +1 -1
  39. package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.js +1 -0
  40. package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
  41. package/dist/components/ChannelList/hooks/usePaginatedChannels.js +2 -0
  42. package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts.map +1 -1
  43. package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.js +1 -0
  44. package/dist/components/ChannelPreview/ChannelPreview.d.ts +16 -0
  45. package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  46. package/dist/components/ChannelPreview/ChannelPreview.js +18 -2
  47. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts +5 -0
  48. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
  49. package/dist/components/ChannelPreview/ChannelPreviewMessenger.js +62 -2
  50. package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts.map +1 -1
  51. package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.js +1 -0
  52. package/dist/components/ChannelPreview/hooks/useIsChannelMuted.d.ts.map +1 -1
  53. package/dist/components/ChannelPreview/hooks/useIsChannelMuted.js +1 -0
  54. package/dist/components/ChannelSearch/SearchBar.d.ts.map +1 -1
  55. package/dist/components/ChannelSearch/SearchBar.js +2 -0
  56. package/dist/components/ChannelSearch/SearchResults.d.ts.map +1 -1
  57. package/dist/components/ChannelSearch/SearchResults.js +3 -1
  58. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts.map +1 -1
  59. package/dist/components/ChannelSearch/hooks/useChannelSearch.js +7 -1
  60. package/dist/components/Chat/hooks/useChat.d.ts.map +1 -1
  61. package/dist/components/Chat/hooks/useChat.js +2 -0
  62. package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  63. package/dist/components/Chat/hooks/useCreateChatContext.js +3 -1
  64. package/dist/components/Emojis/index.cjs.js +1 -1
  65. package/dist/components/Gallery/ModalGallery.d.ts.map +1 -1
  66. package/dist/components/Gallery/ModalGallery.js +3 -1
  67. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
  68. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +1 -0
  69. package/dist/components/LoadMore/LoadMoreButton.d.ts.map +1 -1
  70. package/dist/components/LoadMore/LoadMoreButton.js +1 -0
  71. package/dist/components/LoadMore/LoadMorePaginator.d.ts.map +1 -1
  72. package/dist/components/LoadMore/LoadMorePaginator.js +1 -0
  73. package/dist/components/Message/Message.d.ts.map +1 -1
  74. package/dist/components/Message/Message.js +40 -8
  75. package/dist/components/Message/MessageText.d.ts.map +1 -1
  76. package/dist/components/Message/MessageText.js +1 -0
  77. package/dist/components/Message/hooks/index.d.ts +2 -0
  78. package/dist/components/Message/hooks/index.d.ts.map +1 -1
  79. package/dist/components/Message/hooks/index.js +2 -0
  80. package/dist/components/Message/hooks/useMarkUnreadHandler.d.ts +10 -0
  81. package/dist/components/Message/hooks/useMarkUnreadHandler.d.ts.map +1 -0
  82. package/dist/components/Message/hooks/useMarkUnreadHandler.js +45 -0
  83. package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
  84. package/dist/components/Message/hooks/useReactionHandler.js +6 -2
  85. package/dist/components/Message/hooks/useReactionsFetcher.d.ts +11 -0
  86. package/dist/components/Message/hooks/useReactionsFetcher.d.ts.map +1 -0
  87. package/dist/components/Message/hooks/useReactionsFetcher.js +58 -0
  88. package/dist/components/Message/hooks/useUserRole.d.ts +1 -0
  89. package/dist/components/Message/hooks/useUserRole.d.ts.map +1 -1
  90. package/dist/components/Message/hooks/useUserRole.js +2 -0
  91. package/dist/components/Message/types.d.ts +7 -1
  92. package/dist/components/Message/types.d.ts.map +1 -1
  93. package/dist/components/Message/utils.d.ts +4 -1
  94. package/dist/components/Message/utils.d.ts.map +1 -1
  95. package/dist/components/Message/utils.js +12 -3
  96. package/dist/components/MessageActions/MessageActions.d.ts +1 -1
  97. package/dist/components/MessageActions/MessageActions.d.ts.map +1 -1
  98. package/dist/components/MessageActions/MessageActions.js +14 -5
  99. package/dist/components/MessageActions/MessageActionsBox.d.ts +4 -3
  100. package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
  101. package/dist/components/MessageActions/MessageActionsBox.js +8 -24
  102. package/dist/components/MessageActions/hooks/index.d.ts +2 -0
  103. package/dist/components/MessageActions/hooks/index.d.ts.map +1 -0
  104. package/dist/components/MessageActions/hooks/index.js +1 -0
  105. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts +18 -0
  106. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts.map +1 -0
  107. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.js +32 -0
  108. package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
  109. package/dist/components/MessageInput/MessageInputFlat.js +1 -0
  110. package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
  111. package/dist/components/MessageInput/MessageInputSmall.js +1 -0
  112. package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
  113. package/dist/components/MessageInput/hooks/useAttachments.js +3 -1
  114. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  115. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +3 -1
  116. package/dist/components/MessageInput/hooks/useFileUploads.d.ts.map +1 -1
  117. package/dist/components/MessageInput/hooks/useFileUploads.js +3 -0
  118. package/dist/components/MessageInput/hooks/useImageUploads.d.ts.map +1 -1
  119. package/dist/components/MessageInput/hooks/useImageUploads.js +4 -1
  120. package/dist/components/MessageInput/hooks/useLinkPreviews.d.ts.map +1 -1
  121. package/dist/components/MessageInput/hooks/useLinkPreviews.js +5 -1
  122. package/dist/components/MessageInput/hooks/useMessageInputText.d.ts.map +1 -1
  123. package/dist/components/MessageInput/hooks/useMessageInputText.js +6 -2
  124. package/dist/components/MessageInput/hooks/usePasteHandler.d.ts.map +1 -1
  125. package/dist/components/MessageInput/hooks/usePasteHandler.js +3 -1
  126. package/dist/components/MessageInput/hooks/useUserTrigger.d.ts.map +1 -1
  127. package/dist/components/MessageInput/hooks/useUserTrigger.js +1 -0
  128. package/dist/components/MessageList/MessageList.d.ts +6 -1
  129. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  130. package/dist/components/MessageList/MessageList.js +32 -13
  131. package/dist/components/MessageList/MessageListMainPanel.d.ts +1 -0
  132. package/dist/components/MessageList/MessageListMainPanel.d.ts.map +1 -1
  133. package/dist/components/MessageList/MessageListMainPanel.js +2 -1
  134. package/dist/components/MessageList/MessageListNotifications.d.ts +1 -0
  135. package/dist/components/MessageList/MessageListNotifications.d.ts.map +1 -1
  136. package/dist/components/MessageList/MessageListNotifications.js +2 -2
  137. package/dist/components/MessageList/MessageNotification.d.ts +2 -0
  138. package/dist/components/MessageList/MessageNotification.d.ts.map +1 -1
  139. package/dist/components/MessageList/ScrollToBottomButton.d.ts +1 -1
  140. package/dist/components/MessageList/ScrollToBottomButton.d.ts.map +1 -1
  141. package/dist/components/MessageList/ScrollToBottomButton.js +3 -43
  142. package/dist/components/MessageList/UnreadMessagesNotification.d.ts +6 -0
  143. package/dist/components/MessageList/UnreadMessagesNotification.d.ts.map +1 -0
  144. package/dist/components/MessageList/UnreadMessagesNotification.js +12 -0
  145. package/dist/components/MessageList/UnreadMessagesSeparator.d.ts +6 -0
  146. package/dist/components/MessageList/UnreadMessagesSeparator.d.ts.map +1 -0
  147. package/dist/components/MessageList/UnreadMessagesSeparator.js +10 -0
  148. package/dist/components/MessageList/VirtualizedMessageList.d.ts +12 -1
  149. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  150. package/dist/components/MessageList/VirtualizedMessageList.js +51 -30
  151. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts +5 -3
  152. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
  153. package/dist/components/MessageList/VirtualizedMessageListComponents.js +27 -6
  154. package/dist/components/MessageList/hooks/MessageList/index.d.ts +1 -0
  155. package/dist/components/MessageList/hooks/MessageList/index.d.ts.map +1 -1
  156. package/dist/components/MessageList/hooks/MessageList/index.js +1 -0
  157. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts.map +1 -1
  158. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.js +3 -1
  159. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +5 -8
  160. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -1
  161. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.js +22 -31
  162. package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts.map +1 -1
  163. package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.js +1 -0
  164. package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -1
  165. package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.js +1 -0
  166. package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts +7 -0
  167. package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts.map +1 -0
  168. package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.js +42 -0
  169. package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts +1 -0
  170. package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts.map +1 -1
  171. package/dist/components/MessageList/hooks/VirtualizedMessageList/index.js +1 -0
  172. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts.map +1 -1
  173. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js +1 -0
  174. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map +1 -1
  175. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js +1 -0
  176. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts.map +1 -1
  177. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js +1 -0
  178. package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.d.ts.map +1 -1
  179. package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.js +1 -0
  180. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts +22 -0
  181. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts.map +1 -0
  182. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.js +29 -0
  183. package/dist/components/MessageList/hooks/useMarkRead.d.ts +19 -0
  184. package/dist/components/MessageList/hooks/useMarkRead.d.ts.map +1 -0
  185. package/dist/components/MessageList/hooks/useMarkRead.js +38 -0
  186. package/dist/components/MessageList/icons.d.ts +1 -0
  187. package/dist/components/MessageList/icons.d.ts.map +1 -1
  188. package/dist/components/MessageList/icons.js +2 -0
  189. package/dist/components/MessageList/index.d.ts +3 -0
  190. package/dist/components/MessageList/index.d.ts.map +1 -1
  191. package/dist/components/MessageList/index.js +3 -0
  192. package/dist/components/MessageList/renderMessages.d.ts +33 -0
  193. package/dist/components/MessageList/renderMessages.d.ts.map +1 -0
  194. package/dist/components/MessageList/renderMessages.js +35 -0
  195. package/dist/components/MessageList/utils.d.ts.map +1 -1
  196. package/dist/components/MessageList/utils.js +1 -1
  197. package/dist/components/Reactions/ReactionsList.d.ts +2 -1
  198. package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
  199. package/dist/components/Reactions/ReactionsList.js +32 -41
  200. package/dist/components/Reactions/ReactionsListModal.d.ts +13 -0
  201. package/dist/components/Reactions/ReactionsListModal.d.ts.map +1 -0
  202. package/dist/components/Reactions/ReactionsListModal.js +46 -0
  203. package/dist/components/Reactions/SimpleReactionsList.d.ts +2 -4
  204. package/dist/components/Reactions/SimpleReactionsList.d.ts.map +1 -1
  205. package/dist/components/Reactions/SimpleReactionsList.js +7 -24
  206. package/dist/components/Reactions/hooks/useFetchReactions.d.ts +12 -0
  207. package/dist/components/Reactions/hooks/useFetchReactions.d.ts.map +1 -0
  208. package/dist/components/Reactions/hooks/useFetchReactions.js +50 -0
  209. package/dist/components/Reactions/hooks/useProcessReactions.d.ts +3 -13
  210. package/dist/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -1
  211. package/dist/components/Reactions/hooks/useProcessReactions.js +51 -43
  212. package/dist/components/Reactions/types.d.ts +9 -0
  213. package/dist/components/Reactions/types.d.ts.map +1 -0
  214. package/dist/components/Reactions/types.js +1 -0
  215. package/dist/components/Thread/Thread.js +1 -0
  216. package/dist/context/ChannelActionContext.d.ts +2 -0
  217. package/dist/context/ChannelActionContext.d.ts.map +1 -1
  218. package/dist/context/ComponentContext.d.ts +6 -2
  219. package/dist/context/ComponentContext.d.ts.map +1 -1
  220. package/dist/context/MessageContext.d.ts +8 -2
  221. package/dist/context/MessageContext.d.ts.map +1 -1
  222. package/dist/css/v2/index.css +1 -1
  223. package/dist/css/v2/index.layout.css +1 -1
  224. package/dist/i18n/Streami18n.d.ts +10 -0
  225. package/dist/i18n/Streami18n.d.ts.map +1 -1
  226. package/dist/i18n/de.json +10 -0
  227. package/dist/i18n/en.json +10 -0
  228. package/dist/i18n/es.json +12 -0
  229. package/dist/i18n/fr.json +12 -0
  230. package/dist/i18n/hi.json +11 -0
  231. package/dist/i18n/it.json +12 -0
  232. package/dist/i18n/ja.json +8 -0
  233. package/dist/i18n/ko.json +8 -0
  234. package/dist/i18n/nl.json +10 -0
  235. package/dist/i18n/pt.json +12 -0
  236. package/dist/i18n/ru.json +14 -0
  237. package/dist/i18n/tr.json +10 -0
  238. package/dist/{icons-b84cd102.js → icons-7ead3d97.js} +12 -12
  239. package/dist/index.cjs.js +4911 -4265
  240. package/dist/scss/v2/AttachmentPreviewList/AttachmentPreviewList-layout.scss +1 -0
  241. package/dist/scss/v2/Message/Message-layout.scss +68 -10
  242. package/dist/scss/v2/Message/Message-theme.scss +34 -2
  243. package/dist/scss/v2/MessageActionsBox/MessageActionsBox-layout.scss +0 -11
  244. package/dist/scss/v2/MessageBounceOptions/MessageBounceOptions-layout.scss +18 -0
  245. package/dist/scss/v2/MessageBounceOptions/MessageBounceOptions-theme.scss +51 -0
  246. package/dist/scss/v2/MessageReactions/MessageReactions-layout.scss +74 -0
  247. package/dist/scss/v2/MessageReactions/MessageReactions-theme.scss +17 -0
  248. package/dist/scss/v2/_base.scss +3 -20
  249. package/dist/scss/v2/_global-theme-variables.scss +3 -0
  250. package/dist/scss/v2/index.layout.scss +1 -0
  251. package/dist/scss/v2/index.scss +1 -1
  252. package/dist/version.d.ts +1 -1
  253. package/dist/version.js +1 -1
  254. package/package.json +4 -3
@@ -1,31 +1,16 @@
1
- import React, { useCallback, useState } from 'react';
1
+ import { __assign, __rest } from "tslib";
2
+ import React from 'react';
2
3
  import clsx from 'clsx';
3
4
  import { MESSAGE_ACTIONS } from '../Message/utils';
4
5
  import { useChannelActionContext, useComponentContext, useMessageContext, useTranslationContext, } from '../../context';
5
6
  import { CustomMessageActionsList as DefaultCustomMessageActionsList } from './CustomMessageActionsList';
6
- var UnMemoizedMessageActionsBox = function (props) {
7
- var getMessageActions = props.getMessageActions, handleDelete = props.handleDelete, handleEdit = props.handleEdit, handleFlag = props.handleFlag, handleMute = props.handleMute, handlePin = props.handlePin, isUserMuted = props.isUserMuted, mine = props.mine, _a = props.open, open = _a === void 0 ? false : _a;
7
+ var UnMemoizedMessageActionsBox = React.forwardRef(function (props, ref) {
8
+ var getMessageActions = props.getMessageActions, handleDelete = props.handleDelete, handleEdit = props.handleEdit, handleFlag = props.handleFlag, handleMarkUnread = props.handleMarkUnread, handleMute = props.handleMute, handlePin = props.handlePin, isUserMuted = props.isUserMuted, _a = props.open, open = _a === void 0 ? false : _a, restDivProps = __rest(props, ["getMessageActions", "handleDelete", "handleEdit", "handleFlag", "handleMarkUnread", "handleMute", "handlePin", "isUserMuted", "open"]);
8
9
  var _b = useComponentContext('MessageActionsBox').CustomMessageActionsList, CustomMessageActionsList = _b === void 0 ? DefaultCustomMessageActionsList : _b;
9
10
  var setQuotedMessage = useChannelActionContext('MessageActionsBox').setQuotedMessage;
10
- var _c = useMessageContext('MessageActionsBox'), customMessageActions = _c.customMessageActions, message = _c.message, messageListRect = _c.messageListRect;
11
+ var _c = useMessageContext('MessageActionsBox'), customMessageActions = _c.customMessageActions, message = _c.message, threadList = _c.threadList;
11
12
  var t = useTranslationContext('MessageActionsBox').t;
12
- var _d = useState(false), reverse = _d[0], setReverse = _d[1];
13
13
  var messageActions = getMessageActions();
14
- var checkIfReverse = useCallback(function (containerElement) {
15
- if (!containerElement) {
16
- setReverse(false);
17
- return;
18
- }
19
- if (open) {
20
- var containerRect = containerElement.getBoundingClientRect();
21
- if (mine) {
22
- setReverse(!!messageListRect && containerRect.left < messageListRect.left);
23
- }
24
- else {
25
- setReverse(!!messageListRect && containerRect.right + 5 > messageListRect.right);
26
- }
27
- }
28
- }, [messageListRect, mine, open]);
29
14
  var handleQuote = function () {
30
15
  setQuotedMessage(message);
31
16
  var elements = message.parent_id
@@ -37,21 +22,20 @@ var UnMemoizedMessageActionsBox = function (props) {
37
22
  }
38
23
  };
39
24
  var rootClassName = clsx('str-chat__message-actions-box', {
40
- 'str-chat__message-actions-box--mine': mine,
41
25
  'str-chat__message-actions-box--open': open,
42
- 'str-chat__message-actions-box--reverse': reverse,
43
26
  });
44
27
  var buttonClassName = 'str-chat__message-actions-list-item str-chat__message-actions-list-item-button';
45
- return (React.createElement("div", { className: rootClassName, "data-testid": 'message-actions-box', ref: checkIfReverse },
28
+ return (React.createElement("div", __assign({}, restDivProps, { className: rootClassName, "data-testid": 'message-actions-box', ref: ref }),
46
29
  React.createElement("div", { "aria-label": 'Message Options', className: 'str-chat__message-actions-list', role: 'listbox' },
47
30
  React.createElement(CustomMessageActionsList, { customMessageActions: customMessageActions, message: message }),
48
31
  messageActions.indexOf(MESSAGE_ACTIONS.quote) > -1 && (React.createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleQuote, role: 'option' }, t('Reply'))),
49
32
  messageActions.indexOf(MESSAGE_ACTIONS.pin) > -1 && !message.parent_id && (React.createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handlePin, role: 'option' }, !message.pinned ? t('Pin') : t('Unpin'))),
33
+ messageActions.indexOf(MESSAGE_ACTIONS.markUnread) > -1 && !threadList && !!message.id && (React.createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleMarkUnread, role: 'option' }, t('Mark as unread'))),
50
34
  messageActions.indexOf(MESSAGE_ACTIONS.flag) > -1 && (React.createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleFlag, role: 'option' }, t('Flag'))),
51
35
  messageActions.indexOf(MESSAGE_ACTIONS.mute) > -1 && (React.createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleMute, role: 'option' }, isUserMuted() ? t('Unmute') : t('Mute'))),
52
36
  messageActions.indexOf(MESSAGE_ACTIONS.edit) > -1 && (React.createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleEdit, role: 'option' }, t('Edit Message'))),
53
37
  messageActions.indexOf(MESSAGE_ACTIONS.delete) > -1 && (React.createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleDelete, role: 'option' }, t('Delete'))))));
54
- };
38
+ });
55
39
  /**
56
40
  * A popup box that displays the available actions on a message, such as edit, delete, pin, etc.
57
41
  */
@@ -0,0 +1,2 @@
1
+ export * from './useMessageActionsBoxPopper';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageActions/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './useMessageActionsBoxPopper';
@@ -0,0 +1,18 @@
1
+ import { Placement } from '@popperjs/core';
2
+ export interface MessageActionsBoxPopperOptions {
3
+ open: boolean;
4
+ placement: Placement;
5
+ referenceElement: HTMLElement | null;
6
+ }
7
+ export declare function useMessageActionsBoxPopper<T extends HTMLElement>({ open, placement, referenceElement, }: MessageActionsBoxPopperOptions): {
8
+ attributes: {
9
+ [key: string]: {
10
+ [key: string]: string;
11
+ } | undefined;
12
+ };
13
+ popperElementRef: import("react").RefObject<T>;
14
+ styles: {
15
+ [key: string]: import("react").CSSProperties;
16
+ };
17
+ };
18
+ //# sourceMappingURL=useMessageActionsBoxPopper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMessageActionsBoxPopper.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageActions/hooks/useMessageActionsBoxPopper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAI3C,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,gBAAgB,EAAE,WAAW,GAAG,IAAI,CAAC;CACtC;AAED,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,WAAW,EAAE,EAChE,IAAI,EACJ,SAAS,EACT,gBAAgB,GACjB,EAAE,8BAA8B;;;;;;;;;;EA8BhC"}
@@ -0,0 +1,32 @@
1
+ import { useEffect, useRef } from 'react';
2
+ import { usePopper } from 'react-popper';
3
+ export function useMessageActionsBoxPopper(_a) {
4
+ var open = _a.open, placement = _a.placement, referenceElement = _a.referenceElement;
5
+ var popperElementRef = useRef(null);
6
+ var _b = usePopper(referenceElement, popperElementRef.current, {
7
+ modifiers: [
8
+ {
9
+ name: 'eventListeners',
10
+ options: {
11
+ // It's not safe to update popper position on resize and scroll, since popper's
12
+ // reference element might not be visible at the time.
13
+ resize: false,
14
+ scroll: false,
15
+ },
16
+ },
17
+ ],
18
+ placement: placement,
19
+ }), attributes = _b.attributes, styles = _b.styles, update = _b.update;
20
+ useEffect(function () {
21
+ if (open) {
22
+ // Since the popper's reference element might not be (and usually is not) visible
23
+ // all the time, it's safer to force popper update before showing it.
24
+ update === null || update === void 0 ? void 0 : update();
25
+ }
26
+ }, [open, update]);
27
+ return {
28
+ attributes: attributes,
29
+ popperElementRef: popperElementRef,
30
+ styles: styles,
31
+ };
32
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"MessageInputFlat.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInputFlat.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,qGA8B5B,CAAC"}
1
+ {"version":3,"file":"MessageInputFlat.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInputFlat.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,qGA+B5B,CAAC"}
@@ -39,6 +39,7 @@ export var MessageInputFlat = function () {
39
39
  channel === null || channel === void 0 ? void 0 : channel.off('message.deleted', handleQuotedMessageUpdate);
40
40
  channel === null || channel === void 0 ? void 0 : channel.off('message.updated', handleQuotedMessageUpdate);
41
41
  };
42
+ // eslint-disable-next-line react-hooks/exhaustive-deps
42
43
  }, [channel, quotedMessage]);
43
44
  return themeVersion === '2' ? (React.createElement(MessageInputV2, null)) : (React.createElement(MessageInputV1, null));
44
45
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MessageInputSmall.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInputSmall.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAGlF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,8IAkH7B,CAAC"}
1
+ {"version":3,"file":"MessageInputSmall.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInputSmall.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAGlF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,8IAmH7B,CAAC"}
@@ -45,6 +45,7 @@ export var MessageInputSmall = function () {
45
45
  channel === null || channel === void 0 ? void 0 : channel.off('message.deleted', handleQuotedMessageUpdate);
46
46
  channel === null || channel === void 0 ? void 0 : channel.off('message.updated', handleQuotedMessageUpdate);
47
47
  };
48
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48
49
  }, [channel, quotedMessage]);
49
50
  return (React.createElement("div", { className: 'str-chat__small-message-input__wrapper' },
50
51
  React.createElement(ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads },
@@ -1 +1 @@
1
- {"version":3,"file":"useAttachments.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useAttachments.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3F,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAIrF,eAAO,MAAM,cAAc,6TAOZ,MAAM,gBAAgB,CAAC,mBAAmB,GAAG,SAAS,CAAC;;;;;;;4BA+B1D,QAAQ,GAAG,IAAI,EAAE,GAAG,QAAQ,EAAE;CAoCzC,CAAC"}
1
+ {"version":3,"file":"useAttachments.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useAttachments.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3F,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAIrF,eAAO,MAAM,cAAc,6TAOZ,MAAM,gBAAgB,CAAC,mBAAmB,GAAG,SAAS,CAAC;;;;;;;4BA+B1D,QAAQ,GAAG,IAAI,EAAE,GAAG,QAAQ,EAAE;CAqCzC,CAAC"}
@@ -47,7 +47,9 @@ export var useAttachments = function (props, state, dispatch, textareaRef) {
47
47
  }
48
48
  });
49
49
  (_a = textareaRef === null || textareaRef === void 0 ? void 0 : textareaRef.current) === null || _a === void 0 ? void 0 : _a.focus();
50
- }, [maxFilesLeft, noFiles]);
50
+ },
51
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52
+ [maxFilesLeft, noFiles]);
51
53
  return {
52
54
  maxFilesLeft: maxFilesLeft,
53
55
  numberOfUploads: numberOfUploads,
@@ -1 +1 @@
1
- {"version":3,"file":"useCreateMessageInputContext.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useCreateMessageInputContext.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAErF,eAAO,MAAM,4BAA4B,wOAmKxC,CAAC"}
1
+ {"version":3,"file":"useCreateMessageInputContext.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useCreateMessageInputContext.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAErF,eAAO,MAAM,4BAA4B,wOAoKxC,CAAC"}
@@ -77,7 +77,9 @@ export var useCreateMessageInputContext = function (value) {
77
77
  uploadImage: uploadImage,
78
78
  uploadNewFiles: uploadNewFiles,
79
79
  useMentionsTransliteration: useMentionsTransliteration,
80
- }); }, [
80
+ }); },
81
+ // eslint-disable-next-line react-hooks/exhaustive-deps
82
+ [
81
83
  cancelURLEnrichment,
82
84
  cooldownInterval,
83
85
  cooldownRemaining,
@@ -1 +1 @@
1
- {"version":3,"file":"useFileUploads.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useFileUploads.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAErF,eAAO,MAAM,cAAc;qBAoBW,MAAM;qBAJN,MAAM;CAkF3C,CAAC"}
1
+ {"version":3,"file":"useFileUploads.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useFileUploads.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAErF,eAAO,MAAM,cAAc;qBAqBW,MAAM;qBALN,MAAM;CAqF3C,CAAC"}
@@ -14,10 +14,12 @@ export var useFileUploads = function (props, state, dispatch) {
14
14
  var t = useTranslationContext('useFileUploads').t;
15
15
  var uploadFile = useCallback(function (id) {
16
16
  dispatch({ id: id, state: 'uploading', type: 'setFileUpload' });
17
+ // eslint-disable-next-line react-hooks/exhaustive-deps
17
18
  }, []);
18
19
  var removeFile = useCallback(function (id) {
19
20
  // TODO: cancel upload if still uploading
20
21
  dispatch({ id: id, type: 'removeFileUpload' });
22
+ // eslint-disable-next-line react-hooks/exhaustive-deps
21
23
  }, []);
22
24
  useEffect(function () {
23
25
  (function () { return __awaiter(void 0, void 0, void 0, function () {
@@ -89,6 +91,7 @@ export var useFileUploads = function (props, state, dispatch) {
89
91
  }
90
92
  });
91
93
  }); })();
94
+ // eslint-disable-next-line react-hooks/exhaustive-deps
92
95
  }, [fileUploads, channel, doFileUploadRequest, errorHandler, removeFile]);
93
96
  return {
94
97
  removeFile: removeFile,
@@ -1 +1 @@
1
- {"version":3,"file":"useImageUploads.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useImageUploads.ts"],"names":[],"mappings":"AAAA,OAAO,KAAiC,MAAM,OAAO,CAAC;AAUtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAErF,eAAO,MAAM,eAAe;sBAgBW,MAAM;sBAM9B,MAAM;CAwFpB,CAAC"}
1
+ {"version":3,"file":"useImageUploads.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useImageUploads.ts"],"names":[],"mappings":"AAAA,OAAO,KAAiC,MAAM,OAAO,CAAC;AAUtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAErF,eAAO,MAAM,eAAe;sBAgBW,MAAM;sBAO9B,MAAM;CAyFpB,CAAC"}
@@ -15,6 +15,7 @@ export var useImageUploads = function (props, state, dispatch) {
15
15
  var removeImage = useCallback(function (id) {
16
16
  dispatch({ id: id, type: 'removeImageUpload' });
17
17
  // TODO: cancel upload if still uploading
18
+ // eslint-disable-next-line react-hooks/exhaustive-deps
18
19
  }, []);
19
20
  var uploadImage = useCallback(function (id) { return __awaiter(void 0, void 0, void 0, function () {
20
21
  var img, file, canUpload, response, error_1, errorMessage, alreadyRemoved;
@@ -90,7 +91,9 @@ export var useImageUploads = function (props, state, dispatch) {
90
91
  return [2 /*return*/];
91
92
  }
92
93
  });
93
- }); }, [imageUploads, channel, doImageUploadRequest, errorHandler, removeImage]);
94
+ }); },
95
+ // eslint-disable-next-line react-hooks/exhaustive-deps
96
+ [imageUploads, channel, doImageUploadRequest, errorHandler, removeImage]);
94
97
  useEffect(function () {
95
98
  var upload = Object.values(imageUploads).find(function (imageUpload) { return imageUpload.state === 'uploading' && imageUpload.file; });
96
99
  if (!upload)
@@ -1 +1 @@
1
- {"version":3,"file":"useLinkPreviews.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useLinkPreviews.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAkC,MAAM,OAAO,CAAC;AAGjE,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAoB,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C,MAAM,MAAM,mBAAmB,GAAG;IAChC,uHAAuH;IACvH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uHAAuH;IACvH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uEAAuE;IACvE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACvC,yDAAyD;IACzD,sBAAsB,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;CAC7D,CAAC;AAEF,KAAK,mBAAmB,CACtB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,mBAAmB,GAAG;IACxB,QAAQ,EAAE,QAAQ,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAClE,YAAY,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,qGAAqG;IACrG,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,+DAA+D;IAC/D,kBAAkB,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IACvD,uEAAuE;IACvE,0BAA0B,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC,CAAC;CAC/F,CAAC;AAEF,eAAO,MAAM,eAAe,+UASiB,oBAiI5C,CAAC"}
1
+ {"version":3,"file":"useLinkPreviews.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useLinkPreviews.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAkC,MAAM,OAAO,CAAC;AAGjE,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAoB,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C,MAAM,MAAM,mBAAmB,GAAG;IAChC,uHAAuH;IACvH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uHAAuH;IACvH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uEAAuE;IACvE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACvC,yDAAyD;IACzD,sBAAsB,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;CAC7D,CAAC;AAEF,KAAK,mBAAmB,CACtB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,mBAAmB,GAAG;IACxB,QAAQ,EAAE,QAAQ,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAClE,YAAY,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,qGAAqG;IACrG,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,+DAA+D;IAC/D,kBAAkB,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IACvD,uEAAuE;IACvE,0BAA0B,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC,CAAC;CAC/F,CAAC;AAEF,eAAO,MAAM,eAAe,+UASiB,oBAoI5C,CAAC"}
@@ -24,7 +24,10 @@ export var useLinkPreviews = function (_a) {
24
24
  mode: SetLinkPreviewMode.UPSERT,
25
25
  type: 'setLinkPreviews',
26
26
  });
27
- }, [onLinkPreviewDismissed]);
27
+ },
28
+ // eslint-disable-next-line react-hooks/exhaustive-deps
29
+ [onLinkPreviewDismissed]);
30
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28
31
  var findAndEnqueueURLsToEnrich = useCallback(debounce(function (text, mode) {
29
32
  if (mode === void 0) { mode = SetLinkPreviewMode.SET; }
30
33
  var urls = findURLFn
@@ -90,6 +93,7 @@ export var useLinkPreviews = function (_a) {
90
93
  });
91
94
  });
92
95
  });
96
+ // eslint-disable-next-line react-hooks/exhaustive-deps
93
97
  }, [shouldDiscardEnrichQueries, linkPreviews]);
94
98
  return {
95
99
  cancelURLEnrichment: cancelURLEnrichment,
@@ -1 +1 @@
1
- {"version":3,"file":"useMessageInputText.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useMessageInputText.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,eAAO,MAAM,mBAAmB,6UAOD,oBAAoB,CAAC,4BAA4B,CAAC;;+BAmB9D,MAAM;;CAwExB,CAAC"}
1
+ {"version":3,"file":"useMessageInputText.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useMessageInputText.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,eAAO,MAAM,mBAAmB,6UAOD,oBAAoB,CAAC,4BAA4B,CAAC;;+BAmB9D,MAAM;;CA0ExB,CAAC"}
@@ -40,7 +40,9 @@ export var useMessageInputText = function (props, state, dispatch, findAndEnqueu
40
40
  },
41
41
  type: 'setText',
42
42
  });
43
- }, [additionalTextareaProps, newCursorPosition, textareaRef]);
43
+ },
44
+ // eslint-disable-next-line react-hooks/exhaustive-deps
45
+ [additionalTextareaProps, newCursorPosition, textareaRef]);
44
46
  useEffect(function () {
45
47
  var textareaElement = textareaRef.current;
46
48
  if (textareaElement && newCursorPosition.current !== undefined) {
@@ -63,7 +65,9 @@ export var useMessageInputText = function (props, state, dispatch, findAndEnqueu
63
65
  if (publishTypingEvent && newText && channel) {
64
66
  logChatPromiseExecution(channel.keystroke(parent === null || parent === void 0 ? void 0 : parent.id), 'start typing event');
65
67
  }
66
- }, [channel, findAndEnqueueURLsToEnrich, parent, publishTypingEvent]);
68
+ },
69
+ // eslint-disable-next-line react-hooks/exhaustive-deps
70
+ [channel, findAndEnqueueURLsToEnrich, parent, publishTypingEvent]);
67
71
  return {
68
72
  handleChange: handleChange,
69
73
  insertText: insertText,
@@ -1 +1 @@
1
- {"version":3,"file":"usePasteHandler.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/usePasteHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,QAAQ,EACT,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAG9D,eAAO,MAAM,eAAe,2BACF,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,KAAK,IAAI,6BACpC,MAAM,KAAK,IAAI,mBACzB,OAAO,+BACK,oBAAoB,CAAC,4BAA4B,CAAC;8BAG5D,oBAAoB,CAAC,mBAAmB,CAAC;CA2C7D,CAAC"}
1
+ {"version":3,"file":"usePasteHandler.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/usePasteHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,QAAQ,EACT,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAG9D,eAAO,MAAM,eAAe,2BACF,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,KAAK,IAAI,6BACpC,MAAM,KAAK,IAAI,mBACzB,OAAO,+BACK,oBAAoB,CAAC,4BAA4B,CAAC;8BAG5D,oBAAoB,CAAC,mBAAmB,CAAC;CA4C7D,CAAC"}
@@ -51,6 +51,8 @@ export var usePasteHandler = function (uploadNewFiles, insertText, isUploadEnabl
51
51
  }
52
52
  });
53
53
  }); })(clipboardEvent);
54
- }, [insertText, uploadNewFiles]);
54
+ },
55
+ // eslint-disable-next-line react-hooks/exhaustive-deps
56
+ [insertText, uploadNewFiles]);
55
57
  return { onPaste: onPaste };
56
58
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useUserTrigger.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useUserTrigger.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAEpF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,MAAM,MAAM,iBAAiB,CAC3B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,YAAY,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAC;IAC/D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,aAAa,CAAC,CAAC;IAC1E,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,cAAc,6KAoK1B,CAAC"}
1
+ {"version":3,"file":"useUserTrigger.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useUserTrigger.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAEpF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,MAAM,MAAM,iBAAiB,CAC3B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,YAAY,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAC;IAC/D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,aAAa,CAAC,CAAC;IAC1E,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,cAAc,6KAqK1B,CAAC"}
@@ -28,6 +28,7 @@ export var useUserTrigger = function (params) {
28
28
  });
29
29
  return Object.values(uniqueUsers);
30
30
  }, [members, watchers]);
31
+ // eslint-disable-next-line react-hooks/exhaustive-deps
31
32
  var queryMembersThrottled = useCallback(throttle(function (query, onReady) { return __awaiter(void 0, void 0, void 0, function () {
32
33
  var response, users, error_1;
33
34
  return __generator(this, function (_a) {
@@ -2,10 +2,11 @@ import React from 'react';
2
2
  import { ChannelActionContextValue } from '../../context/ChannelActionContext';
3
3
  import { InfiniteScrollProps } from '../InfiniteScrollPaginator/InfiniteScroll';
4
4
  import type { GroupStyle } from './utils';
5
+ import { MessageRenderer } from './renderMessages';
5
6
  import type { MessageProps } from '../Message/types';
6
7
  import type { StreamMessage } from '../../context/ChannelStateContext';
7
8
  import type { DefaultStreamChatGenerics } from '../../types/types';
8
- type PropsDrilledToMessage = 'additionalMessageInputProps' | 'closeReactionSelectorOnClick' | 'customMessageActions' | 'disableQuotedMessages' | 'formatDate' | 'getDeleteMessageErrorNotification' | 'getFlagMessageErrorNotification' | 'getFlagMessageSuccessNotification' | 'getMuteUserErrorNotification' | 'getMuteUserSuccessNotification' | 'getPinMessageErrorNotification' | 'Message' | 'messageActions' | 'onlySenderCanEdit' | 'onMentionsClick' | 'onMentionsHover' | 'onUserClick' | 'onUserHover' | 'openThread' | 'pinPermissions' | 'renderText' | 'retrySendMessage' | 'unsafeHTML';
9
+ type PropsDrilledToMessage = 'additionalMessageInputProps' | 'closeReactionSelectorOnClick' | 'customMessageActions' | 'disableQuotedMessages' | 'formatDate' | 'getDeleteMessageErrorNotification' | 'getFlagMessageErrorNotification' | 'getFlagMessageSuccessNotification' | 'getMarkMessageUnreadErrorNotification' | 'getMarkMessageUnreadSuccessNotification' | 'getMuteUserErrorNotification' | 'getMuteUserSuccessNotification' | 'getPinMessageErrorNotification' | 'Message' | 'messageActions' | 'onlySenderCanEdit' | 'onMentionsClick' | 'onMentionsHover' | 'onUserClick' | 'onUserHover' | 'openThread' | 'pinPermissions' | 'renderText' | 'retrySendMessage' | 'unsafeHTML';
9
10
  export type MessageListProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Partial<Pick<MessageProps<StreamChatGenerics>, PropsDrilledToMessage>> & {
10
11
  /** Disables the injection of date separator components in MessageList, defaults to `false` */
11
12
  disableDateSeparator?: boolean;
@@ -33,12 +34,16 @@ export type MessageListProps<StreamChatGenerics extends DefaultStreamChatGeneric
33
34
  loadMore?: ChannelActionContextValue['loadMore'] | (() => Promise<void>);
34
35
  /** Function called when newer messages are to be loaded, defaults to function stored in [ChannelActionContext](https://getstream.io/chat/docs/sdk/react/contexts/channel_action_context/) */
35
36
  loadMoreNewer?: ChannelActionContextValue['loadMoreNewer'] | (() => Promise<void>);
37
+ /** When enabled, the channel will be marked read when a user scrolls to the bottom. Ignored when scrolled to the bottom of a thread message list. */
38
+ markReadOnScrolledToBottom?: boolean;
36
39
  /** The limit to use when paginating messages */
37
40
  messageLimit?: number;
38
41
  /** The messages to render in the list, defaults to messages stored in [ChannelStateContext](https://getstream.io/chat/docs/sdk/react/contexts/channel_state_context/) */
39
42
  messages?: StreamMessage<StreamChatGenerics>[];
40
43
  /** If true, turns off message UI grouping by user */
41
44
  noGroupByUser?: boolean;
45
+ /** Overrides the way MessageList renders messages */
46
+ renderMessages?: MessageRenderer<StreamChatGenerics>;
42
47
  /** If true, `readBy` data supplied to the `Message` components will include all user read states per sent message */
43
48
  returnAllReadData?: boolean;
44
49
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAS5C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAMhG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AA0MnE,KAAK,qBAAqB,GACtB,6BAA6B,GAC7B,8BAA8B,GAC9B,sBAAsB,GACtB,uBAAuB,GACvB,YAAY,GACZ,mCAAmC,GACnC,iCAAiC,GACjC,mCAAmC,GACnC,8BAA8B,GAC9B,gCAAgC,GAChC,gCAAgC,GAChC,SAAS,GACT,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,iBAAiB,GACjB,aAAa,GACb,aAAa,GACb,YAAY,GACZ,gBAAgB,GAChB,YAAY,GACZ,kBAAkB,GAClB,YAAY,CAAC;AAEjB,MAAM,MAAM,gBAAgB,CAC1B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,qBAAqB,CAAC,CAAC,GAAG;IAC3E,8FAA8F;IAC9F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC1C,eAAe,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAClD,WAAW,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC9C,aAAa,EAAE,OAAO,KACnB,UAAU,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iIAAiI;IACjI,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qIAAqI;IACrI,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mLAAmL;IACnL,2BAA2B,CAAC,EAAE,mBAAmB,CAAC;IAClD,iHAAiH;IACjH,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4LAA4L;IAC5L,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,6LAA6L;IAC7L,aAAa,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yKAAyK;IACzK,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,qDAAqD;IACrD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qHAAqH;IACrH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,gJA2BvB,CAAC"}
1
+ {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAS5C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAMhG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAyB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAkOnE,KAAK,qBAAqB,GACtB,6BAA6B,GAC7B,8BAA8B,GAC9B,sBAAsB,GACtB,uBAAuB,GACvB,YAAY,GACZ,mCAAmC,GACnC,iCAAiC,GACjC,mCAAmC,GACnC,uCAAuC,GACvC,yCAAyC,GACzC,8BAA8B,GAC9B,gCAAgC,GAChC,gCAAgC,GAChC,SAAS,GACT,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,iBAAiB,GACjB,aAAa,GACb,aAAa,GACb,YAAY,GACZ,gBAAgB,GAChB,YAAY,GACZ,kBAAkB,GAClB,YAAY,CAAC;AAEjB,MAAM,MAAM,gBAAgB,CAC1B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,qBAAqB,CAAC,CAAC,GAAG;IAC3E,8FAA8F;IAC9F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC1C,eAAe,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAClD,WAAW,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC9C,aAAa,EAAE,OAAO,KACnB,UAAU,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iIAAiI;IACjI,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qIAAqI;IACrI,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mLAAmL;IACnL,2BAA2B,CAAC,EAAE,mBAAmB,CAAC;IAClD,iHAAiH;IACjH,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4LAA4L;IAC5L,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,6LAA6L;IAC7L,aAAa,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,qJAAqJ;IACrJ,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yKAAyK;IACzK,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,qDAAqD;IACrD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qDAAqD;IACrD,cAAc,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACrD,qHAAqH;IACrH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,gJA2BvB,CAAC"}
@@ -1,8 +1,10 @@
1
1
  import { __assign, __awaiter, __generator, __rest } from "tslib";
2
2
  import React from 'react';
3
- import { useEnrichedMessages, useMessageListElements, useScrollLocationLogic, } from './hooks/MessageList';
3
+ import { useEnrichedMessages, useMessageListElements, useScrollLocationLogic, useUnreadMessagesNotification, } from './hooks/MessageList';
4
+ import { useMarkRead } from './hooks/useMarkRead';
4
5
  import { MessageNotification as DefaultMessageNotification } from './MessageNotification';
5
6
  import { MessageListNotifications as DefaultMessageListNotifications } from './MessageListNotifications';
7
+ import { UnreadMessagesNotification as DefaultUnreadMessagesNotification } from './UnreadMessagesNotification';
6
8
  import { useChannelActionContext, } from '../../context/ChannelActionContext';
7
9
  import { useChannelStateContext, } from '../../context/ChannelStateContext';
8
10
  import { useChatContext } from '../../context/ChatContext';
@@ -14,24 +16,36 @@ import { LoadingIndicator as DefaultLoadingIndicator } from '../Loading';
14
16
  import { defaultPinPermissions, MESSAGE_ACTIONS } from '../Message/utils';
15
17
  import { TypingIndicator as DefaultTypingIndicator } from '../TypingIndicator';
16
18
  import { MessageListMainPanel } from './MessageListMainPanel';
19
+ import { defaultRenderMessages } from './renderMessages';
17
20
  var MessageListWithContext = function (props) {
18
- var channel = props.channel, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? false : _a, groupStyles = props.groupStyles, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, internalInfiniteScrollProps = props.internalInfiniteScrollProps, _d = props.messageActions, messageActions = _d === void 0 ? Object.keys(MESSAGE_ACTIONS) : _d, _e = props.messages, messages = _e === void 0 ? [] : _e, notifications = props.notifications, _f = props.noGroupByUser, noGroupByUser = _f === void 0 ? false : _f, _g = props.pinPermissions, pinPermissions = _g === void 0 ? defaultPinPermissions : _g, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
19
- _h = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
20
- returnAllReadData = _h === void 0 ? false : _h, _j = props.threadList, threadList = _j === void 0 ? false : _j, _k = props.unsafeHTML, unsafeHTML = _k === void 0 ? false : _k, headerPosition = props.headerPosition, read = props.read, _l = props.messageLimit, messageLimit = _l === void 0 ? 100 : _l, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _m = props.hasMoreNewer, hasMoreNewer = _m === void 0 ? false : _m, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _o = props.jumpToLatestMessage, jumpToLatestMessage = _o === void 0 ? function () { return Promise.resolve(); } : _o;
21
- var _p = React.useState(null), listElement = _p[0], setListElement = _p[1];
22
- var _q = React.useState(null), ulElement = _q[0], setUlElement = _q[1];
23
- var customClasses = useChatContext('MessageList').customClasses;
24
- var _r = useComponentContext('MessageList'), _s = _r.EmptyStateIndicator, EmptyStateIndicator = _s === void 0 ? DefaultEmptyStateIndicator : _s, _t = _r.LoadingIndicator, LoadingIndicator = _t === void 0 ? DefaultLoadingIndicator : _t, _u = _r.MessageListNotifications, MessageListNotifications = _u === void 0 ? DefaultMessageListNotifications : _u, _v = _r.MessageNotification, MessageNotification = _v === void 0 ? DefaultMessageNotification : _v, _w = _r.TypingIndicator, TypingIndicator = _w === void 0 ? DefaultTypingIndicator : _w;
21
+ var _a;
22
+ var channel = props.channel, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? false : _b, groupStyles = props.groupStyles, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, internalInfiniteScrollProps = props.internalInfiniteScrollProps, _e = props.messageActions, messageActions = _e === void 0 ? Object.keys(MESSAGE_ACTIONS) : _e, _f = props.messages, messages = _f === void 0 ? [] : _f, notifications = props.notifications, _g = props.noGroupByUser, noGroupByUser = _g === void 0 ? false : _g, _h = props.pinPermissions, pinPermissions = _h === void 0 ? defaultPinPermissions : _h, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
23
+ _j = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
24
+ returnAllReadData = _j === void 0 ? false : _j, _k = props.threadList, threadList = _k === void 0 ? false : _k, _l = props.unsafeHTML, unsafeHTML = _l === void 0 ? false : _l, headerPosition = props.headerPosition, read = props.read, markReadOnScrolledToBottom = props.markReadOnScrolledToBottom, _m = props.renderMessages, renderMessages = _m === void 0 ? defaultRenderMessages : _m, _o = props.messageLimit, messageLimit = _o === void 0 ? 100 : _o, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _p = props.hasMoreNewer, hasMoreNewer = _p === void 0 ? false : _p, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _q = props.jumpToLatestMessage, jumpToLatestMessage = _q === void 0 ? function () { return Promise.resolve(); } : _q;
25
+ var _r = React.useState(null), listElement = _r[0], setListElement = _r[1];
26
+ var _s = React.useState(null), ulElement = _s[0], setUlElement = _s[1];
27
+ var _t = useChatContext('MessageList'), client = _t.client, customClasses = _t.customClasses;
28
+ var _u = useComponentContext('MessageList'), _v = _u.EmptyStateIndicator, EmptyStateIndicator = _v === void 0 ? DefaultEmptyStateIndicator : _v, _w = _u.LoadingIndicator, LoadingIndicator = _w === void 0 ? DefaultLoadingIndicator : _w, _x = _u.MessageListNotifications, MessageListNotifications = _x === void 0 ? DefaultMessageListNotifications : _x, _y = _u.MessageNotification, MessageNotification = _y === void 0 ? DefaultMessageNotification : _y, _z = _u.TypingIndicator, TypingIndicator = _z === void 0 ? DefaultTypingIndicator : _z, _0 = _u.UnreadMessagesNotification, UnreadMessagesNotification = _0 === void 0 ? DefaultUnreadMessagesNotification : _0;
25
29
  var loadMoreScrollThreshold = (internalInfiniteScrollProps === null || internalInfiniteScrollProps === void 0 ? void 0 : internalInfiniteScrollProps.threshold) || 250;
26
- var _x = useScrollLocationLogic({
30
+ var currentUserChannelReadState = client.user && (read === null || read === void 0 ? void 0 : read[client.user.id]);
31
+ var showUnreadMessagesNotification = useUnreadMessagesNotification({
32
+ unreadCount: currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages,
33
+ }).show;
34
+ var _1 = useScrollLocationLogic({
27
35
  hasMoreNewer: hasMoreNewer,
28
36
  listElement: listElement,
29
37
  loadMoreScrollThreshold: loadMoreScrollThreshold,
30
38
  messages: messages,
31
39
  scrolledUpThreshold: props.scrolledUpThreshold,
32
40
  suppressAutoscroll: suppressAutoscroll,
33
- }), hasNewMessages = _x.hasNewMessages, isMessageListScrolledToBottom = _x.isMessageListScrolledToBottom, onScroll = _x.onScroll, scrollToBottom = _x.scrollToBottom, wrapperRect = _x.wrapperRect;
34
- var _y = useEnrichedMessages({
41
+ }), hasNewMessages = _1.hasNewMessages, isMessageListScrolledToBottom = _1.isMessageListScrolledToBottom, onScroll = _1.onScroll, scrollToBottom = _1.scrollToBottom, wrapperRect = _1.wrapperRect;
42
+ useMarkRead({
43
+ isMessageListScrolledToBottom: isMessageListScrolledToBottom,
44
+ markReadOnScrolledToBottom: markReadOnScrolledToBottom,
45
+ messageListIsThread: threadList,
46
+ unreadCount: (_a = currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages) !== null && _a !== void 0 ? _a : 0,
47
+ });
48
+ var _2 = useEnrichedMessages({
35
49
  channel: channel,
36
50
  disableDateSeparator: disableDateSeparator,
37
51
  groupStyles: groupStyles,
@@ -40,7 +54,7 @@ var MessageListWithContext = function (props) {
40
54
  hideNewMessageSeparator: hideNewMessageSeparator,
41
55
  messages: messages,
42
56
  noGroupByUser: noGroupByUser,
43
- }), messageGroupStyles = _y.messageGroupStyles, enrichedMessages = _y.messages;
57
+ }), messageGroupStyles = _2.messageGroupStyles, enrichedMessages = _2.messages;
44
58
  var elements = useMessageListElements({
45
59
  enrichedMessages: enrichedMessages,
46
60
  internalMessageProps: {
@@ -52,6 +66,8 @@ var MessageListWithContext = function (props) {
52
66
  getDeleteMessageErrorNotification: props.getDeleteMessageErrorNotification,
53
67
  getFlagMessageErrorNotification: props.getFlagMessageErrorNotification,
54
68
  getFlagMessageSuccessNotification: props.getFlagMessageSuccessNotification,
69
+ getMarkMessageUnreadErrorNotification: props.getMarkMessageUnreadErrorNotification,
70
+ getMarkMessageUnreadSuccessNotification: props.getMarkMessageUnreadSuccessNotification,
55
71
  getMuteUserErrorNotification: props.getMuteUserErrorNotification,
56
72
  getMuteUserSuccessNotification: props.getMuteUserSuccessNotification,
57
73
  getPinMessageErrorNotification: props.getPinMessageErrorNotification,
@@ -71,6 +87,7 @@ var MessageListWithContext = function (props) {
71
87
  },
72
88
  messageGroupStyles: messageGroupStyles,
73
89
  read: read,
90
+ renderMessages: renderMessages,
74
91
  returnAllReadData: returnAllReadData,
75
92
  threadList: threadList,
76
93
  });
@@ -109,15 +126,17 @@ var MessageListWithContext = function (props) {
109
126
  var element = ulElement === null || ulElement === void 0 ? void 0 : ulElement.querySelector("[data-message-id='".concat(highlightedMessageId, "']"));
110
127
  element === null || element === void 0 ? void 0 : element.scrollIntoView({ block: 'center' });
111
128
  }
129
+ // eslint-disable-next-line react-hooks/exhaustive-deps
112
130
  }, [highlightedMessageId]);
113
131
  var showEmptyStateIndicator = elements.length === 0 && !threadList;
114
132
  return (React.createElement(MessageListContextProvider, { value: { listElement: listElement, scrollToBottom: scrollToBottom } },
115
133
  React.createElement(MessageListMainPanel, null,
134
+ !threadList && showUnreadMessagesNotification && (React.createElement(UnreadMessagesNotification, { unreadCount: currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages })),
116
135
  React.createElement("div", { className: "".concat(messageListClass, " ").concat(threadListClass), onScroll: onScroll, ref: setListElement, tabIndex: 0 }, showEmptyStateIndicator ? (React.createElement(EmptyStateIndicator, { key: 'empty-state-indicator', listType: threadList ? 'thread' : 'message' })) : (React.createElement(InfiniteScroll, __assign({ className: 'str-chat__reverse-infinite-scroll str-chat__message-list-scroll', "data-testid": 'reverse-infinite-scroll', hasNextPage: props.hasMoreNewer, hasPreviousPage: props.hasMore, head: props.head, isLoading: props.loadingMore, loader: React.createElement("div", { className: 'str-chat__list__loading', key: 'loading-indicator' }, props.loadingMore && React.createElement(LoadingIndicator, { size: 20 })), loadNextPage: loadMoreNewer, loadPreviousPage: loadMore }, props.internalInfiniteScrollProps, { threshold: loadMoreScrollThreshold }),
117
136
  React.createElement("ul", { className: 'str-chat__ul', ref: setUlElement }, elements),
118
137
  React.createElement(TypingIndicator, { threadList: threadList }),
119
138
  React.createElement("div", { key: 'bottom' }))))),
120
- React.createElement(MessageListNotifications, { hasNewMessages: hasNewMessages, isMessageListScrolledToBottom: isMessageListScrolledToBottom, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification, notifications: notifications, scrollToBottom: scrollToBottomFromNotification, threadList: threadList })));
139
+ React.createElement(MessageListNotifications, { hasNewMessages: hasNewMessages, isMessageListScrolledToBottom: isMessageListScrolledToBottom, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification, notifications: notifications, scrollToBottom: scrollToBottomFromNotification, threadList: threadList, unreadCount: threadList ? undefined : currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages })));
121
140
  };
122
141
  /**
123
142
  * The MessageList component renders a list of Messages.
@@ -1,3 +1,4 @@
1
1
  import type { PropsWithChildrenOnly } from '../../types/types';
2
+ export declare const MESSAGE_LIST_MAIN_PANEL_CLASS: "str-chat__main-panel-inner";
2
3
  export declare const MessageListMainPanel: ({ children }: PropsWithChildrenOnly) => JSX.Element;
3
4
  //# sourceMappingURL=MessageListMainPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageListMainPanel.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageListMainPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,eAAO,MAAM,oBAAoB,iBAAkB,qBAAqB,gBAMvE,CAAC"}
1
+ {"version":3,"file":"MessageListMainPanel.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageListMainPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,eAAO,MAAM,6BAA6B,8BAAwC,CAAC;AAEnF,eAAO,MAAM,oBAAoB,iBAAkB,qBAAqB,gBAMvE,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import React from 'react';
2
2
  import { useChatContext } from '../../context/ChatContext';
3
+ export var MESSAGE_LIST_MAIN_PANEL_CLASS = 'str-chat__main-panel-inner';
3
4
  export var MessageListMainPanel = function (_a) {
4
5
  var children = _a.children;
5
6
  var themeVersion = useChatContext('MessageListMainPanel').themeVersion;
6
7
  if (themeVersion === '2')
7
- return React.createElement("div", { className: 'str-chat__main-panel-inner' }, children);
8
+ return React.createElement("div", { className: MESSAGE_LIST_MAIN_PANEL_CLASS }, children);
8
9
  return React.createElement(React.Fragment, null, children);
9
10
  };
@@ -9,6 +9,7 @@ export type MessageListNotificationsProps = {
9
9
  notifications: ChannelNotifications;
10
10
  scrollToBottom: () => void;
11
11
  threadList?: boolean;
12
+ unreadCount?: number;
12
13
  };
13
14
  export declare const MessageListNotifications: (props: MessageListNotificationsProps) => JSX.Element;
14
15
  //# sourceMappingURL=MessageListNotifications.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageListNotifications.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageListNotifications.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,MAAM,MAAM,6BAA6B,GAAG;IAC1C,cAAc,EAAE,OAAO,CAAC;IACxB,6BAA6B,EAAE,OAAO,CAAC;IACvC,uBAAuB,EAAE,OAAO,CAAC;IACjC,mBAAmB,EAAE,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACnE,aAAa,EAAE,oBAAoB,CAAC;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAAW,6BAA6B,gBA+B5E,CAAC"}
1
+ {"version":3,"file":"MessageListNotifications.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageListNotifications.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,MAAM,MAAM,6BAA6B,GAAG;IAC1C,cAAc,EAAE,OAAO,CAAC;IACxB,6BAA6B,EAAE,OAAO,CAAC;IACvC,uBAAuB,EAAE,OAAO,CAAC;IACjC,mBAAmB,EAAE,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACnE,aAAa,EAAE,oBAAoB,CAAC;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAAW,6BAA6B,gBAiC5E,CAAC"}
@@ -3,10 +3,10 @@ import { ConnectionStatus } from './ConnectionStatus';
3
3
  import { CustomNotification } from './CustomNotification';
4
4
  import { useTranslationContext } from '../../context/TranslationContext';
5
5
  export var MessageListNotifications = function (props) {
6
- var hasNewMessages = props.hasNewMessages, isMessageListScrolledToBottom = props.isMessageListScrolledToBottom, isNotAtLatestMessageSet = props.isNotAtLatestMessageSet, MessageNotification = props.MessageNotification, notifications = props.notifications, scrollToBottom = props.scrollToBottom, threadList = props.threadList;
6
+ var hasNewMessages = props.hasNewMessages, isMessageListScrolledToBottom = props.isMessageListScrolledToBottom, isNotAtLatestMessageSet = props.isNotAtLatestMessageSet, MessageNotification = props.MessageNotification, notifications = props.notifications, scrollToBottom = props.scrollToBottom, threadList = props.threadList, unreadCount = props.unreadCount;
7
7
  var t = useTranslationContext('MessageListNotifications').t;
8
8
  return (React.createElement("div", { className: 'str-chat__list-notifications' },
9
9
  notifications.map(function (notification) { return (React.createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)); }),
10
10
  React.createElement(ConnectionStatus, null),
11
- React.createElement(MessageNotification, { isMessageListScrolledToBottom: isMessageListScrolledToBottom, onClick: scrollToBottom, showNotification: hasNewMessages || isNotAtLatestMessageSet, threadList: threadList }, isNotAtLatestMessageSet ? t('Latest Messages') : t('New Messages!'))));
11
+ React.createElement(MessageNotification, { isMessageListScrolledToBottom: isMessageListScrolledToBottom, onClick: scrollToBottom, showNotification: hasNewMessages || isNotAtLatestMessageSet, threadList: threadList, unreadCount: unreadCount }, isNotAtLatestMessageSet ? t('Latest Messages') : t('New Messages!'))));
12
12
  };
@@ -8,6 +8,8 @@ export type MessageNotificationProps = PropsWithChildren<{
8
8
  showNotification?: boolean;
9
9
  /** informs the component whether it is rendered inside a thread message list */
10
10
  threadList?: boolean;
11
+ /** */
12
+ unreadCount?: number;
11
13
  }>;
12
14
  export declare const MessageNotification: (props: MessageNotificationProps) => JSX.Element | null;
13
15
  //# sourceMappingURL=MessageNotification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageNotification.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageNotification.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEjD,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;IACvD,iCAAiC;IACjC,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACjC,gQAAgQ;IAChQ,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,mMAAmM;IACnM,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC,CAAC;AAmBH,eAAO,MAAM,mBAAmB,UAjBc,wBAAwB,uBAmB7B,CAAC"}
1
+ {"version":3,"file":"MessageNotification.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageNotification.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEjD,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;IACvD,iCAAiC;IACjC,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACjC,gQAAgQ;IAChQ,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,mMAAmM;IACnM,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM;IACN,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC,CAAC;AAmBH,eAAO,MAAM,mBAAmB,UAjBc,wBAAwB,uBAmB7B,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { MessageNotificationProps } from './MessageNotification';
2
- export declare const ScrollToBottomButton: (props: Pick<MessageNotificationProps, 'isMessageListScrolledToBottom' | 'onClick' | 'threadList'>) => JSX.Element | null;
2
+ export declare const ScrollToBottomButton: (props: Pick<MessageNotificationProps, 'isMessageListScrolledToBottom' | 'onClick' | 'threadList' | 'unreadCount'>) => JSX.Element | null;
3
3
  //# sourceMappingURL=ScrollToBottomButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollToBottomButton.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/ScrollToBottomButton.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAsFtE,eAAO,MAAM,oBAAoB,UAnFxB,KAAK,wBAAwB,EAAE,+BAA+B,GAAG,SAAS,GAAG,YAAY,CAAC,uBAqFzD,CAAC"}
1
+ {"version":3,"file":"ScrollToBottomButton.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/ScrollToBottomButton.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AA0CtE,eAAO,MAAM,oBAAoB,UAvCxB,KACL,wBAAwB,EACxB,+BAA+B,GAAG,SAAS,GAAG,YAAY,GAAG,aAAa,CAC3E,uBAsCuC,CAAC"}