stream-chat-react 8.0.0 → 8.1.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 (282) hide show
  1. package/dist/browser.full-bundle.js +1841 -640
  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/AttachmentActions.d.ts +0 -1
  6. package/dist/components/Attachment/AttachmentActions.d.ts.map +1 -1
  7. package/dist/components/Attachment/Audio.d.ts +0 -1
  8. package/dist/components/Attachment/Audio.d.ts.map +1 -1
  9. package/dist/components/Attachment/FileAttachment.d.ts +0 -1
  10. package/dist/components/Attachment/FileAttachment.d.ts.map +1 -1
  11. package/dist/components/AutoCompleteTextarea/Item.d.ts.map +1 -1
  12. package/dist/components/AutoCompleteTextarea/Item.js +2 -1
  13. package/dist/components/AutoCompleteTextarea/List.d.ts.map +1 -1
  14. package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
  15. package/dist/components/AutoCompleteTextarea/Textarea.js +1 -1
  16. package/dist/components/Channel/Channel.d.ts.map +1 -1
  17. package/dist/components/Channel/Channel.js +107 -32
  18. package/dist/components/Channel/channelState.d.ts +17 -0
  19. package/dist/components/Channel/channelState.d.ts.map +1 -1
  20. package/dist/components/Channel/channelState.js +24 -2
  21. package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -1
  22. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +7 -1
  23. package/dist/components/Channel/hooks/useIsMounted.d.ts +0 -1
  24. package/dist/components/Channel/hooks/useIsMounted.d.ts.map +1 -1
  25. package/dist/components/Channel/utils.d.ts +5 -0
  26. package/dist/components/Channel/utils.d.ts.map +1 -0
  27. package/dist/components/Channel/utils.js +19 -0
  28. package/dist/components/ChannelHeader/icons.d.ts +0 -1
  29. package/dist/components/ChannelHeader/icons.d.ts.map +1 -1
  30. package/dist/components/ChannelHeader/icons.js +1 -1
  31. package/dist/components/ChannelList/ChannelList.d.ts +2 -3
  32. package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
  33. package/dist/components/ChannelList/ChannelList.js +1 -0
  34. package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts +0 -1
  35. package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts.map +1 -1
  36. package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts +0 -1
  37. package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts.map +1 -1
  38. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts +0 -1
  39. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts.map +1 -1
  40. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts +0 -1
  41. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts.map +1 -1
  42. package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts +0 -1
  43. package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts.map +1 -1
  44. package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts +0 -1
  45. package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts.map +1 -1
  46. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts +0 -1
  47. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts.map +1 -1
  48. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts +0 -1
  49. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts.map +1 -1
  50. package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts +0 -1
  51. package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts.map +1 -1
  52. package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts +0 -1
  53. package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
  54. package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts +0 -1
  55. package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts.map +1 -1
  56. package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  57. package/dist/components/ChannelPreview/ChannelPreview.js +6 -10
  58. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts +0 -1
  59. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
  60. package/dist/components/ChannelPreview/utils.d.ts +0 -1
  61. package/dist/components/ChannelPreview/utils.d.ts.map +1 -1
  62. package/dist/components/Chat/Chat.d.ts.map +1 -1
  63. package/dist/components/Chat/Chat.js +2 -1
  64. package/dist/components/Chat/hooks/useChat.d.ts +1 -1
  65. package/dist/components/Chat/hooks/useChat.d.ts.map +1 -1
  66. package/dist/components/Chat/hooks/useChat.js +12 -7
  67. package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  68. package/dist/components/Chat/hooks/useCreateChatContext.js +2 -1
  69. package/dist/components/ChatDown/ChatDown.d.ts +5 -5
  70. package/dist/components/ChatDown/ChatDown.d.ts.map +1 -1
  71. package/dist/components/ChatDown/ChatDown.js +4 -4
  72. package/dist/components/ChatDown/icons.d.ts +2 -0
  73. package/dist/components/ChatDown/icons.d.ts.map +1 -0
  74. package/dist/components/ChatDown/icons.js +7 -0
  75. package/dist/components/DateSeparator/DateSeparator.d.ts +0 -1
  76. package/dist/components/DateSeparator/DateSeparator.d.ts.map +1 -1
  77. package/dist/components/Gallery/Gallery.d.ts +0 -1
  78. package/dist/components/Gallery/Gallery.d.ts.map +1 -1
  79. package/dist/components/Gallery/Gallery.js +11 -8
  80. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts +2 -2
  81. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
  82. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +16 -45
  83. package/dist/components/InfiniteScrollPaginator/index.d.ts +0 -2
  84. package/dist/components/InfiniteScrollPaginator/index.d.ts.map +1 -1
  85. package/dist/components/InfiniteScrollPaginator/index.js +0 -2
  86. package/dist/components/Message/FixedHeightMessage.d.ts +0 -1
  87. package/dist/components/Message/FixedHeightMessage.d.ts.map +1 -1
  88. package/dist/components/Message/Message.d.ts +0 -1
  89. package/dist/components/Message/Message.d.ts.map +1 -1
  90. package/dist/components/Message/Message.js +8 -7
  91. package/dist/components/Message/MessageCommerce.d.ts +0 -1
  92. package/dist/components/Message/MessageCommerce.d.ts.map +1 -1
  93. package/dist/components/Message/MessageCommerce.js +2 -1
  94. package/dist/components/Message/MessageDeleted.d.ts +0 -1
  95. package/dist/components/Message/MessageDeleted.d.ts.map +1 -1
  96. package/dist/components/Message/MessageLivestream.d.ts.map +1 -1
  97. package/dist/components/Message/MessageLivestream.js +2 -1
  98. package/dist/components/Message/MessageRepliesCountButton.d.ts.map +1 -1
  99. package/dist/components/Message/MessageRepliesCountButton.js +10 -24
  100. package/dist/components/Message/MessageSimple.d.ts +0 -1
  101. package/dist/components/Message/MessageSimple.d.ts.map +1 -1
  102. package/dist/components/Message/MessageSimple.js +4 -3
  103. package/dist/components/Message/MessageTeam.d.ts +0 -1
  104. package/dist/components/Message/MessageTeam.d.ts.map +1 -1
  105. package/dist/components/Message/MessageText.d.ts +0 -1
  106. package/dist/components/Message/MessageText.d.ts.map +1 -1
  107. package/dist/components/Message/MessageTimestamp.d.ts +0 -1
  108. package/dist/components/Message/MessageTimestamp.d.ts.map +1 -1
  109. package/dist/components/Message/QuotedMessage.d.ts +0 -1
  110. package/dist/components/Message/QuotedMessage.d.ts.map +1 -1
  111. package/dist/components/Message/QuotedMessage.js +3 -1
  112. package/dist/components/Message/hooks/useEditHandler.d.ts +0 -1
  113. package/dist/components/Message/hooks/useEditHandler.d.ts.map +1 -1
  114. package/dist/components/Message/hooks/useUserHandler.d.ts +0 -1
  115. package/dist/components/Message/hooks/useUserHandler.d.ts.map +1 -1
  116. package/dist/components/Message/icons.d.ts +0 -1
  117. package/dist/components/Message/icons.d.ts.map +1 -1
  118. package/dist/components/Message/types.d.ts +2 -1
  119. package/dist/components/Message/types.d.ts.map +1 -1
  120. package/dist/components/Message/utils.d.ts.map +1 -1
  121. package/dist/components/Message/utils.js +3 -0
  122. package/dist/components/MessageActions/MessageActionsBox.d.ts +0 -1
  123. package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
  124. package/dist/components/MessageInput/EditMessageForm.d.ts +0 -1
  125. package/dist/components/MessageInput/EditMessageForm.d.ts.map +1 -1
  126. package/dist/components/MessageInput/EmojiPicker.d.ts +0 -1
  127. package/dist/components/MessageInput/EmojiPicker.d.ts.map +1 -1
  128. package/dist/components/MessageInput/MessageInputFlat.d.ts +0 -1
  129. package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
  130. package/dist/components/MessageInput/MessageInputFlat.js +25 -3
  131. package/dist/components/MessageInput/MessageInputSmall.d.ts +0 -1
  132. package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
  133. package/dist/components/MessageInput/MessageInputSmall.js +26 -4
  134. package/dist/components/MessageInput/QuotedMessagePreview.d.ts +0 -1
  135. package/dist/components/MessageInput/QuotedMessagePreview.d.ts.map +1 -1
  136. package/dist/components/MessageInput/UploadsPreview.d.ts +0 -1
  137. package/dist/components/MessageInput/UploadsPreview.d.ts.map +1 -1
  138. package/dist/components/MessageInput/hooks/useAttachments.d.ts +0 -1
  139. package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
  140. package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts.map +1 -1
  141. package/dist/components/MessageInput/hooks/useCooldownTimer.js +19 -29
  142. package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts +0 -1
  143. package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts.map +1 -1
  144. package/dist/components/MessageInput/hooks/useFileUploads.d.ts +0 -1
  145. package/dist/components/MessageInput/hooks/useFileUploads.d.ts.map +1 -1
  146. package/dist/components/MessageInput/hooks/useMessageInputText.d.ts +0 -1
  147. package/dist/components/MessageInput/hooks/useMessageInputText.d.ts.map +1 -1
  148. package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts +0 -1
  149. package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts.map +1 -1
  150. package/dist/components/MessageList/GiphyPreviewMessage.d.ts +0 -1
  151. package/dist/components/MessageList/GiphyPreviewMessage.d.ts.map +1 -1
  152. package/dist/components/MessageList/MessageList.d.ts +8 -3
  153. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  154. package/dist/components/MessageList/MessageList.js +90 -24
  155. package/dist/components/MessageList/MessageListNotifications.d.ts +1 -0
  156. package/dist/components/MessageList/MessageListNotifications.d.ts.map +1 -1
  157. package/dist/components/MessageList/MessageListNotifications.js +2 -2
  158. package/dist/components/MessageList/VirtualizedMessageList.d.ts +11 -1
  159. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  160. package/dist/components/MessageList/VirtualizedMessageList.js +118 -20
  161. package/dist/components/MessageList/hooks/index.d.ts +0 -1
  162. package/dist/components/MessageList/hooks/index.d.ts.map +1 -1
  163. package/dist/components/MessageList/hooks/index.js +0 -1
  164. package/dist/components/MessageList/hooks/useEnrichedMessages.d.ts +0 -1
  165. package/dist/components/MessageList/hooks/useEnrichedMessages.d.ts.map +1 -1
  166. package/dist/components/MessageList/hooks/useEnrichedMessages.js +4 -4
  167. package/dist/components/MessageList/hooks/useGiphyPreview.d.ts +0 -1
  168. package/dist/components/MessageList/hooks/useGiphyPreview.d.ts.map +1 -1
  169. package/dist/components/MessageList/hooks/useMessageListElements.d.ts.map +1 -1
  170. package/dist/components/MessageList/hooks/useMessageListElements.js +6 -3
  171. package/dist/components/MessageList/hooks/useNewMessageNotification.d.ts +1 -2
  172. package/dist/components/MessageList/hooks/useNewMessageNotification.d.ts.map +1 -1
  173. package/dist/components/MessageList/hooks/useNewMessageNotification.js +6 -2
  174. package/dist/components/MessageList/hooks/usePrependMessagesCount.d.ts.map +1 -1
  175. package/dist/components/MessageList/hooks/usePrependMessagesCount.js +2 -0
  176. package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts +2 -0
  177. package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts.map +1 -1
  178. package/dist/components/MessageList/hooks/useScrollLocationLogic.js +9 -5
  179. package/dist/components/MessageList/utils.d.ts +25 -6
  180. package/dist/components/MessageList/utils.d.ts.map +1 -1
  181. package/dist/components/MessageList/utils.js +57 -35
  182. package/dist/components/Reactions/ReactionsList.d.ts +0 -1
  183. package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
  184. package/dist/components/Reactions/utils/utils.d.ts +0 -1
  185. package/dist/components/Reactions/utils/utils.d.ts.map +1 -1
  186. package/dist/components/Thread/Thread.d.ts +2 -0
  187. package/dist/components/Thread/Thread.d.ts.map +1 -1
  188. package/dist/components/Thread/Thread.js +6 -10
  189. package/dist/constants/messageTypes.d.ts +5 -0
  190. package/dist/constants/messageTypes.d.ts.map +1 -0
  191. package/dist/constants/messageTypes.js +4 -0
  192. package/dist/context/ChannelActionContext.d.ts +3 -0
  193. package/dist/context/ChannelActionContext.d.ts.map +1 -1
  194. package/dist/context/ChannelStateContext.d.ts +5 -1
  195. package/dist/context/ChannelStateContext.d.ts.map +1 -1
  196. package/dist/context/ChatContext.d.ts +3 -0
  197. package/dist/context/ChatContext.d.ts.map +1 -1
  198. package/dist/context/MessageContext.d.ts +2 -0
  199. package/dist/context/MessageContext.d.ts.map +1 -1
  200. package/dist/context/utils/getDisplayName.d.ts +0 -1
  201. package/dist/context/utils/getDisplayName.d.ts.map +1 -1
  202. package/dist/css/index.css +1 -1
  203. package/dist/i18n/Streami18n.d.ts +5 -4
  204. package/dist/i18n/Streami18n.d.ts.map +1 -1
  205. package/dist/i18n/Streami18n.js +5 -5
  206. package/dist/i18n/de.json +29 -28
  207. package/dist/i18n/en.json +3 -2
  208. package/dist/i18n/es.json +4 -2
  209. package/dist/i18n/fr.json +4 -2
  210. package/dist/i18n/hi.json +3 -2
  211. package/dist/i18n/it.json +4 -2
  212. package/dist/i18n/ja.json +3 -2
  213. package/dist/i18n/ko.json +3 -2
  214. package/dist/i18n/nl.json +3 -2
  215. package/dist/i18n/pt.json +22 -20
  216. package/dist/i18n/ru.json +5 -2
  217. package/dist/i18n/tr.json +3 -2
  218. package/dist/index.cjs.js +552 -316
  219. package/dist/index.cjs.js.map +1 -1
  220. package/dist/scss/ActionsBox.scss +2 -2
  221. package/dist/scss/Attachment.scss +5 -0
  222. package/dist/scss/Avatar.scss +1 -1
  223. package/dist/scss/ChannelHeader.scss +8 -13
  224. package/dist/scss/ChannelList.scss +6 -0
  225. package/dist/scss/ChannelSearch.scss +12 -1
  226. package/dist/scss/Gallery.scss +19 -0
  227. package/dist/scss/Message.scss +110 -93
  228. package/dist/scss/MessageInput.scss +8 -2
  229. package/dist/scss/MessageInputFlat.scss +24 -0
  230. package/dist/scss/MessageList.scss +7 -0
  231. package/dist/scss/MessageNotification.scss +6 -18
  232. package/dist/scss/ReactionList.scss +2 -1
  233. package/dist/scss/ReactionSelector.scss +2 -1
  234. package/dist/scss/SimpleReactionsList.scss +2 -1
  235. package/dist/scss/SmallMessageInput.scss +34 -0
  236. package/dist/scss/Thread.scss +25 -5
  237. package/dist/scss/VirtualMessage.scss +6 -0
  238. package/dist/scss/_base.scss +4 -0
  239. package/dist/scss/_variables.scss +4 -5
  240. package/dist/stories/connected-user.stories.d.ts +4 -0
  241. package/dist/stories/connected-user.stories.d.ts.map +1 -0
  242. package/dist/stories/connected-user.stories.js +53 -0
  243. package/dist/stories/hello.stories.d.ts +3 -0
  244. package/dist/stories/hello.stories.d.ts.map +1 -0
  245. package/dist/stories/hello.stories.js +23 -0
  246. package/dist/stories/jump-to-message.stories.d.ts +4 -0
  247. package/dist/stories/jump-to-message.stories.d.ts.map +1 -0
  248. package/dist/stories/jump-to-message.stories.js +81 -0
  249. package/dist/stories/mark-read.stories.d.ts +4 -0
  250. package/dist/stories/mark-read.stories.d.ts.map +1 -0
  251. package/dist/stories/mark-read.stories.js +75 -0
  252. package/dist/stories/utils.d.ts +26 -0
  253. package/dist/stories/utils.d.ts.map +1 -0
  254. package/dist/stories/utils.js +38 -0
  255. package/dist/types/types.d.ts +17 -1
  256. package/dist/types/types.d.ts.map +1 -1
  257. package/dist/version.d.ts +1 -1
  258. package/dist/version.js +1 -1
  259. package/package.json +28 -15
  260. package/dist/assets/str-chat__alert.svg +0 -1
  261. package/dist/assets/str-chat__connection-error.svg +0 -13
  262. package/dist/assets/str-chat__file-file.svg +0 -20
  263. package/dist/assets/str-chat__icon-chevron-down.svg +0 -1
  264. package/dist/assets/str-chat__icon-search.svg +0 -1
  265. package/dist/assets/str-chat__icon-send.svg +0 -1
  266. package/dist/assets/str-chat__icon-sprite.png +0 -0
  267. package/dist/assets/str-chat__icon-sprite@1x.png +0 -0
  268. package/dist/assets/str-chat__icon-sprite@2x.png +0 -0
  269. package/dist/assets/str-chat__icon-sprite@3x.png +0 -0
  270. package/dist/assets/str-chat__loading-indicator.svg +0 -23
  271. package/dist/assets/str-chat__reactions-sprite@1x.png +0 -0
  272. package/dist/assets/str-chat__reactions-sprite@2x.png +0 -0
  273. package/dist/assets/str-chat__reactions-sprite@3x.png +0 -0
  274. package/dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.d.ts +0 -18
  275. package/dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.d.ts.map +0 -1
  276. package/dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.js +0 -8
  277. package/dist/components/InfiniteScrollPaginator/ReverseInfiniteScroll.d.ts +0 -4
  278. package/dist/components/InfiniteScrollPaginator/ReverseInfiniteScroll.d.ts.map +0 -1
  279. package/dist/components/InfiniteScrollPaginator/ReverseInfiniteScroll.js +0 -14
  280. package/dist/components/MessageList/hooks/useCallLoadMore.d.ts +0 -3
  281. package/dist/components/MessageList/hooks/useCallLoadMore.d.ts.map +0 -1
  282. package/dist/components/MessageList/hooks/useCallLoadMore.js +0 -8
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useEffect } from 'react';
2
2
  import { FileUploadButton, ImageDropzone } from 'react-file-utils';
3
3
  import { EmojiPicker } from './EmojiPicker';
4
4
  import { CooldownTimer as DefaultCooldownTimer } from './hooks/useCooldownTimer';
@@ -7,15 +7,37 @@ import { QuotedMessagePreview as DefaultQuotedMessagePreview } from './QuotedMes
7
7
  import { UploadsPreview } from './UploadsPreview';
8
8
  import { ChatAutoComplete } from '../ChatAutoComplete/ChatAutoComplete';
9
9
  import { Tooltip } from '../Tooltip/Tooltip';
10
+ import { useChatContext } from '../../context/ChatContext';
11
+ import { useChannelActionContext } from '../../context/ChannelActionContext';
10
12
  import { useChannelStateContext } from '../../context/ChannelStateContext';
11
13
  import { useTranslationContext } from '../../context/TranslationContext';
12
14
  import { useMessageInputContext } from '../../context/MessageInputContext';
13
15
  import { useComponentContext } from '../../context/ComponentContext';
14
16
  export var MessageInputFlat = function () {
15
17
  var _a = useChannelStateContext('MessageInputFlat'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads, quotedMessage = _a.quotedMessage;
18
+ var setQuotedMessage = useChannelActionContext('MessageInputFlat').setQuotedMessage;
16
19
  var t = useTranslationContext('MessageInputFlat').t;
17
- var _b = useMessageInputContext('MessageInputFlat'), closeEmojiPicker = _b.closeEmojiPicker, cooldownInterval = _b.cooldownInterval, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, numberOfUploads = _b.numberOfUploads, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
20
+ var channel = useChatContext('MessageInputFlat').channel;
21
+ var _b = useMessageInputContext('MessageInputFlat'), closeEmojiPicker = _b.closeEmojiPicker, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, numberOfUploads = _b.numberOfUploads, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
18
22
  var _c = useComponentContext('MessageInputFlat'), _d = _c.CooldownTimer, CooldownTimer = _d === void 0 ? DefaultCooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? DefaultEmojiIcon : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? DefaultFileUploadIcon : _f, _g = _c.QuotedMessagePreview, QuotedMessagePreview = _g === void 0 ? DefaultQuotedMessagePreview : _g, _h = _c.SendButton, SendButton = _h === void 0 ? DefaultSendButton : _h;
23
+ useEffect(function () {
24
+ var handleQuotedMessageUpdate = function (e) {
25
+ var _a;
26
+ if (((_a = e.message) === null || _a === void 0 ? void 0 : _a.id) !== (quotedMessage === null || quotedMessage === void 0 ? void 0 : quotedMessage.id))
27
+ return;
28
+ if (e.type === 'message.deleted') {
29
+ setQuotedMessage(undefined);
30
+ return;
31
+ }
32
+ setQuotedMessage(e.message);
33
+ };
34
+ channel === null || channel === void 0 ? void 0 : channel.on('message.deleted', handleQuotedMessageUpdate);
35
+ channel === null || channel === void 0 ? void 0 : channel.on('message.updated', handleQuotedMessageUpdate);
36
+ return function () {
37
+ channel === null || channel === void 0 ? void 0 : channel.off('message.deleted', handleQuotedMessageUpdate);
38
+ channel === null || channel === void 0 ? void 0 : channel.off('message.updated', handleQuotedMessageUpdate);
39
+ };
40
+ }, [channel, quotedMessage]);
19
41
  return (React.createElement("div", { className: "str-chat__input-flat " + (SendButton ? 'str-chat__input-flat--send-button-active' : '') + " " + (quotedMessage && !quotedMessage.parent_id ? 'str-chat__input-flat-quoted' : '') + "\n " + (numberOfUploads ? 'str-chat__input-flat-has-attachments' : '') + "\n " },
20
42
  React.createElement(ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads },
21
43
  quotedMessage && !quotedMessage.parent_id && (React.createElement(QuotedMessagePreview, { quotedMessage: quotedMessage })),
@@ -25,7 +47,7 @@ export var MessageInputFlat = function () {
25
47
  React.createElement("div", { className: 'str-chat__emojiselect-wrapper' },
26
48
  React.createElement(Tooltip, null, emojiPickerIsOpen ? t('Close emoji picker') : t('Open emoji picker')),
27
49
  React.createElement("button", { "aria-label": 'Emoji picker', className: 'str-chat__input-flat-emojiselect', onClick: emojiPickerIsOpen ? closeEmojiPicker : openEmojiPicker }, cooldownRemaining ? (React.createElement("div", { className: 'str-chat__input-flat-cooldown' },
28
- React.createElement(CooldownTimer, { cooldownInterval: cooldownInterval, setCooldownRemaining: setCooldownRemaining }))) : (React.createElement(EmojiIcon, null)))),
50
+ React.createElement(CooldownTimer, { cooldownInterval: cooldownRemaining, setCooldownRemaining: setCooldownRemaining }))) : (React.createElement(EmojiIcon, null)))),
29
51
  React.createElement(EmojiPicker, null),
30
52
  React.createElement(ChatAutoComplete, null),
31
53
  isUploadEnabled && !cooldownRemaining && (React.createElement("div", { className: 'str-chat__fileupload-wrapper', "data-testid": 'fileinput' },
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { CustomTrigger, DefaultStreamChatGenerics } from '../../types/types';
3
2
  export declare const MessageInputSmall: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, V extends CustomTrigger = CustomTrigger>() => JSX.Element;
4
3
  //# sourceMappingURL=MessageInputSmall.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageInputSmall.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInputSmall.tsx"],"names":[],"mappings":";AAsBA,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAElF,eAAO,MAAM,iBAAiB,8IAwG7B,CAAC"}
1
+ {"version":3,"file":"MessageInputSmall.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInputSmall.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAElF,eAAO,MAAM,iBAAiB,8IA0H7B,CAAC"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useEffect } from 'react';
2
2
  import { FileUploadButton, ImageDropzone } from 'react-file-utils';
3
3
  import { EmojiPicker } from './EmojiPicker';
4
4
  import { CooldownTimer as DefaultCooldownTimer } from './hooks/useCooldownTimer';
@@ -6,6 +6,8 @@ import { EmojiIconSmall as DefaultEmojiIcon, FileUploadIconFlat as DefaultFileUp
6
6
  import { UploadsPreview } from './UploadsPreview';
7
7
  import { ChatAutoComplete } from '../ChatAutoComplete/ChatAutoComplete';
8
8
  import { Tooltip } from '../Tooltip/Tooltip';
9
+ import { useChatContext } from '../../context/ChatContext';
10
+ import { useChannelActionContext } from '../../context/ChannelActionContext';
9
11
  import { useChannelStateContext } from '../../context/ChannelStateContext';
10
12
  import { useTranslationContext } from '../../context/TranslationContext';
11
13
  import { useMessageInputContext } from '../../context/MessageInputContext';
@@ -13,18 +15,38 @@ import { useComponentContext } from '../../context/ComponentContext';
13
15
  import { QuotedMessagePreview as DefaultQuotedMessagePreview } from './QuotedMessagePreview';
14
16
  export var MessageInputSmall = function () {
15
17
  var _a = useChannelStateContext('MessageInputSmall'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads, quotedMessage = _a.quotedMessage;
18
+ var setQuotedMessage = useChannelActionContext('MessageInputSmall').setQuotedMessage;
16
19
  var t = useTranslationContext('MessageInputSmall').t;
17
- var _b = useMessageInputContext('MessageInputSmall'), closeEmojiPicker = _b.closeEmojiPicker, cooldownInterval = _b.cooldownInterval, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, numberOfUploads = _b.numberOfUploads, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
20
+ var channel = useChatContext('MessageInputSmall').channel;
21
+ var _b = useMessageInputContext('MessageInputSmall'), closeEmojiPicker = _b.closeEmojiPicker, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, numberOfUploads = _b.numberOfUploads, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
18
22
  var _c = useComponentContext('MessageInputSmall'), _d = _c.CooldownTimer, CooldownTimer = _d === void 0 ? DefaultCooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? DefaultEmojiIcon : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? DefaultFileUploadIcon : _f, _g = _c.SendButton, SendButton = _g === void 0 ? DefaultSendButton : _g, _h = _c.QuotedMessagePreview, QuotedMessagePreview = _h === void 0 ? DefaultQuotedMessagePreview : _h;
23
+ useEffect(function () {
24
+ var handleQuotedMessageUpdate = function (e) {
25
+ var _a;
26
+ if (!(quotedMessage && ((_a = e.message) === null || _a === void 0 ? void 0 : _a.id) === quotedMessage.id))
27
+ return;
28
+ if (e.type === 'message.deleted') {
29
+ setQuotedMessage(undefined);
30
+ return;
31
+ }
32
+ setQuotedMessage(e.message);
33
+ };
34
+ channel === null || channel === void 0 ? void 0 : channel.on('message.deleted', handleQuotedMessageUpdate);
35
+ channel === null || channel === void 0 ? void 0 : channel.on('message.updated', handleQuotedMessageUpdate);
36
+ return function () {
37
+ channel === null || channel === void 0 ? void 0 : channel.off('message.deleted', handleQuotedMessageUpdate);
38
+ channel === null || channel === void 0 ? void 0 : channel.off('message.updated', handleQuotedMessageUpdate);
39
+ };
40
+ }, [channel, quotedMessage]);
19
41
  return (React.createElement("div", { className: 'str-chat__small-message-input__wrapper' },
20
42
  React.createElement(ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads },
21
43
  React.createElement("div", { className: "str-chat__small-message-input " + (SendButton ? 'str-chat__small-message-input--send-button-active' : '') + " " + (quotedMessage && quotedMessage.parent_id ? 'str-chat__input-flat-quoted' : '') + " " + (numberOfUploads ? 'str-chat__small-message-input-has-attachments' : '') + " " },
22
44
  quotedMessage && quotedMessage.parent_id && (React.createElement(QuotedMessagePreview, { quotedMessage: quotedMessage })),
45
+ isUploadEnabled && React.createElement(UploadsPreview, null),
23
46
  React.createElement("div", { className: 'str-chat__small-message-input--textarea-wrapper' },
24
- isUploadEnabled && React.createElement(UploadsPreview, null),
25
47
  React.createElement(ChatAutoComplete, null),
26
48
  cooldownRemaining ? (React.createElement("div", { className: 'str-chat__input-small-cooldown' },
27
- React.createElement(CooldownTimer, { cooldownInterval: cooldownInterval, setCooldownRemaining: setCooldownRemaining }))) : (React.createElement(React.Fragment, null,
49
+ React.createElement(CooldownTimer, { cooldownInterval: cooldownRemaining, setCooldownRemaining: setCooldownRemaining }))) : (React.createElement(React.Fragment, null,
28
50
  isUploadEnabled && (React.createElement("div", { className: 'str-chat__fileupload-wrapper', "data-testid": 'fileinput' },
29
51
  React.createElement(Tooltip, null, maxFilesLeft
30
52
  ? t('Attach files')
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { StreamMessage } from '../../context/ChannelStateContext';
3
2
  import type { DefaultStreamChatGenerics } from '../../types/types';
4
3
  export declare type QuotedMessagePreviewProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
@@ -1 +1 @@
1
- {"version":3,"file":"QuotedMessagePreview.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/QuotedMessagePreview.tsx"],"names":[],"mappings":";AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AA2BnE,oBAAY,yBAAyB,CACnC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,aAAa,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAClD,CAAC;AAEF,eAAO,MAAM,oBAAoB,gKA6ChC,CAAC"}
1
+ {"version":3,"file":"QuotedMessagePreview.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/QuotedMessagePreview.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AA2BnE,oBAAY,yBAAyB,CACnC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,aAAa,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAClD,CAAC;AAEF,eAAO,MAAM,oBAAoB,gKA6ChC,CAAC"}
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { DefaultStreamChatGenerics } from '../../types/types';
3
2
  export declare const UploadsPreview: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>() => JSX.Element;
4
3
  //# sourceMappingURL=UploadsPreview.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UploadsPreview.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/UploadsPreview.tsx"],"names":[],"mappings":";AAMA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,eAAO,MAAM,cAAc,qGAgD1B,CAAC"}
1
+ {"version":3,"file":"UploadsPreview.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/UploadsPreview.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,eAAO,MAAM,cAAc,qGAgD1B,CAAC"}
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { FileLike } from 'react-file-utils';
3
2
  import type { MessageInputProps } from '../MessageInput';
4
3
  import type { MessageInputReducerAction, MessageInputState } from './useMessageInputState';
@@ -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,kBAAkB,CAAC;AAEjD,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;;;;;;;4BA6B1D,QAAQ,GAAG,IAAI,EAAE,GAAG,QAAQ,EAAE;CA8BzC,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,kBAAkB,CAAC;AAEjD,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;;;;;;;4BA6B1D,QAAQ,GAAG,IAAI,EAAE,GAAG,QAAQ,EAAE;CA8BzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCooldownTimer.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useCooldownTimer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,oBAAY,kBAAkB,GAAG;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CAChF,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAkBtD,CAAC;AAcF,oBAAY,kBAAkB,GAAG;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC/E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,0FAExB,kBA0BJ,CAAC"}
1
+ {"version":3,"file":"useCooldownTimer.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useCooldownTimer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,oBAAY,kBAAkB,GAAG;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CAChF,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAkBtD,CAAC;AAEF,oBAAY,kBAAkB,GAAG;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC/E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,0FAExB,kBA6BJ,CAAC"}
@@ -17,36 +17,26 @@ export var CooldownTimer = function (props) {
17
17
  });
18
18
  return React.createElement("div", null, seconds === 0 ? null : seconds);
19
19
  };
20
- var rolesToSkip = {
21
- admin: true,
22
- channel_moderator: true,
23
- moderator: true,
24
- };
25
- var checkUserRoles = function (globalRole, channelRole) {
26
- var skipGlobal = !!rolesToSkip[globalRole];
27
- var skipChannel = !!rolesToSkip[channelRole];
28
- return skipGlobal || skipChannel;
29
- };
30
20
  export var useCooldownTimer = function () {
31
- var _a, _b;
32
- var client = useChatContext('useCooldownTimer').client;
21
+ var latestMessageDatesByChannels = useChatContext('useCooldownTimer').latestMessageDatesByChannels;
33
22
  var channel = useChannelStateContext('useCooldownTimer').channel;
34
- var cooldownInterval = (channel.data ||
35
- {}).cooldown;
36
- var _c = useState(), cooldownRemaining = _c[0], setCooldownRemaining = _c[1];
37
- var globalRole = ((_a = client.user) === null || _a === void 0 ? void 0 : _a.role) || '';
38
- var channelRole = ((_b = channel.state.members[client.userID || '']) === null || _b === void 0 ? void 0 : _b.role) || '';
39
- var skipCooldown = checkUserRoles(globalRole, channelRole);
23
+ var _a = (channel.data ||
24
+ {}), cooldownInterval = _a.cooldown, own_capabilities = _a.own_capabilities;
25
+ var _b = useState(), cooldownRemaining = _b[0], setCooldownRemaining = _b[1];
26
+ var skipCooldown = !(own_capabilities === null || own_capabilities === void 0 ? void 0 : own_capabilities.includes('slow-mode'));
40
27
  useEffect(function () {
41
- var handleEvent = function (event) {
42
- var _a;
43
- if (!skipCooldown && ((_a = event.user) === null || _a === void 0 ? void 0 : _a.id) === client.userID) {
44
- setCooldownRemaining(cooldownInterval);
45
- }
46
- };
47
- if (cooldownInterval)
48
- channel.on('message.new', handleEvent);
49
- return function () { return channel.off('message.new', handleEvent); };
50
- }, [channel.id, cooldownInterval]);
51
- return { cooldownInterval: cooldownInterval || 0, cooldownRemaining: cooldownRemaining, setCooldownRemaining: setCooldownRemaining };
28
+ var latestMessageDate = latestMessageDatesByChannels[channel.cid];
29
+ if (!cooldownInterval || !latestMessageDate) {
30
+ return;
31
+ }
32
+ var remainingCooldown = Math.round(cooldownInterval - (new Date().getTime() - latestMessageDate.getTime()) / 1000);
33
+ if (remainingCooldown > 0 && !skipCooldown) {
34
+ setCooldownRemaining(remainingCooldown);
35
+ }
36
+ }, [channel.id, cooldownInterval, latestMessageDatesByChannels[channel.cid]]);
37
+ return {
38
+ cooldownInterval: cooldownInterval || 0,
39
+ cooldownRemaining: cooldownRemaining,
40
+ setCooldownRemaining: setCooldownRemaining,
41
+ };
52
42
  };
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { MessageInputReducerAction, MessageInputState } from './useMessageInputState';
3
2
  import type { EmojiData } from 'emoji-mart';
4
3
  import type { DefaultStreamChatGenerics } from '../../../types/types';
@@ -1 +1 @@
1
- {"version":3,"file":"useEmojiPicker.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useEmojiPicker.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAO,MAAM,cAAc,iPAKE,MAAM,KAAK,IAAI,eAC7B,MAAM,gBAAgB,CAAC,mBAAmB,GAAG,SAAS,CAAC;8BAM1D,UAAU;;;2BAyDV,SAAS;;CAqBpB,CAAC"}
1
+ {"version":3,"file":"useEmojiPicker.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useEmojiPicker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAO,MAAM,cAAc,iPAKE,MAAM,KAAK,IAAI,eAC7B,MAAM,gBAAgB,CAAC,mBAAmB,GAAG,SAAS,CAAC;8BAM1D,UAAU;;;2BAyDV,SAAS;;CAqBpB,CAAC"}
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { MessageInputReducerAction, MessageInputState } from './useMessageInputState';
3
2
  import type { MessageInputProps } from '../MessageInput';
4
3
  import type { CustomTrigger, DefaultStreamChatGenerics } from '../../../types/types';
@@ -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;;;CAiG1B,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;;;CAiG1B,CAAC"}
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { MessageInputReducerAction, MessageInputState } from './useMessageInputState';
3
2
  import type { MessageInputProps } from '../MessageInput';
4
3
  import type { CustomTrigger, DefaultStreamChatGenerics } from '../../../types/types';
@@ -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;AAErF,eAAO,MAAM,mBAAmB;;+BAyBb,MAAM;;CAsExB,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;AAErF,eAAO,MAAM,mBAAmB;;+BAyBb,MAAM;;CAsExB,CAAC"}
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { Message } from 'stream-chat';
3
2
  import type { MessageInputReducerAction, MessageInputState } from './useMessageInputState';
4
3
  import type { MessageInputProps } from '../MessageInput';
@@ -1 +1 @@
1
- {"version":3,"file":"useSubmitHandler.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useSubmitHandler.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAc,OAAO,EAAkB,MAAM,aAAa,CAAC;AAEvE,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;AAQrF,eAAO,MAAM,gBAAgB,iUAOV,MAAM;0BA4Dd,MAAM,kBAAkB;CAqGlC,CAAC"}
1
+ {"version":3,"file":"useSubmitHandler.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageInput/hooks/useSubmitHandler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAc,OAAO,EAAkB,MAAM,aAAa,CAAC;AAEvE,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;AAQrF,eAAO,MAAM,gBAAgB,iUAOV,MAAM;0BA4Dd,MAAM,kBAAkB;CAqGlC,CAAC"}
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { StreamMessage } from '../../context/ChannelStateContext';
3
2
  import type { DefaultStreamChatGenerics } from '../../types/types';
4
3
  export declare type GiphyPreviewMessageProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
@@ -1 +1 @@
1
- {"version":3,"file":"GiphyPreviewMessage.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/GiphyPreviewMessage.tsx"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,oBAAY,wBAAwB,CAClC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAC5C,CAAC;AAEF,eAAO,MAAM,mBAAmB,wJAY/B,CAAC"}
1
+ {"version":3,"file":"GiphyPreviewMessage.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/GiphyPreviewMessage.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,oBAAY,wBAAwB,CAClC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAC5C,CAAC;AAEF,eAAO,MAAM,mBAAmB,wJAY/B,CAAC"}
@@ -1,13 +1,12 @@
1
- /// <reference types="react" />
2
1
  import { ChannelActionContextValue } from '../../context/ChannelActionContext';
3
- import { InfiniteScrollProps } from '../InfiniteScrollPaginator';
2
+ import { InfiniteScrollProps } from '../InfiniteScrollPaginator/InfiniteScroll';
4
3
  import type { GroupStyle } from './utils';
5
4
  import type { MessageProps } from '../Message/types';
6
5
  import type { StreamMessage } from '../../context/ChannelStateContext';
7
6
  import type { DefaultStreamChatGenerics } from '../../types/types';
8
7
  declare 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
8
  export declare type MessageListProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Partial<Pick<MessageProps<StreamChatGenerics>, PropsDrilledToMessage>> & {
10
- /** Disables the injection of date separator components, defaults to `false` */
9
+ /** Disables the injection of date separator components in MessageList, defaults to `false` */
11
10
  disableDateSeparator?: boolean;
12
11
  /** Callback function to set group styles for each message */
13
12
  groupStyles?: (message: StreamMessage<StreamChatGenerics>, previousMessage: StreamMessage<StreamChatGenerics>, nextMessage: StreamMessage<StreamChatGenerics>, noGroupByUser: boolean) => GroupStyle;
@@ -21,10 +20,16 @@ export declare type MessageListProps<StreamChatGenerics extends DefaultStreamCha
21
20
  hideNewMessageSeparator?: boolean;
22
21
  /** Overrides the default props passed to [InfiniteScroll](https://github.com/GetStream/stream-chat-react/blob/master/src/components/InfiniteScrollPaginator/InfiniteScroll.tsx) */
23
22
  internalInfiniteScrollProps?: InfiniteScrollProps;
23
+ /** Function called when latest messages should be loaded, after the list has jumped at an earlier message set */
24
+ jumpToLatestMessage?: () => Promise<void>;
24
25
  /** Whether or not the list is currently loading more items */
25
26
  loadingMore?: boolean;
27
+ /** Whether or not the list is currently loading newer items */
28
+ loadingMoreNewer?: boolean;
26
29
  /** Function called when more messages are to be loaded, defaults to function stored in [ChannelActionContext](https://getstream.io/chat/docs/sdk/react/contexts/channel_action_context/) */
27
30
  loadMore?: ChannelActionContextValue['loadMore'] | (() => Promise<void>);
31
+ /** 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/) */
32
+ loadMoreNewer?: ChannelActionContextValue['loadMoreNewer'] | (() => Promise<void>);
28
33
  /** The limit to use when paginating messages */
29
34
  messageLimit?: number;
30
35
  /** The messages to render in the list, defaults to messages stored in [ChannelStateContext](https://getstream.io/chat/docs/sdk/react/contexts/channel_state_context/) */
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":";AAWA,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAQ5C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKjF,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;AA2JnE,aAAK,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,oBAAY,gBAAgB,CAC1B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,qBAAqB,CAAC,CAAC,GAAG;IAC3E,+EAA+E;IAC/E,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,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,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,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4LAA4L;IAC5L,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,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,6GAA6G;IAC7G,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,gJAqBvB,CAAC"}
1
+ {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"AAUA,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAQ5C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAKhG,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;AAsLnE,aAAK,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,oBAAY,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,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,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,6GAA6G;IAC7G,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,gJA2BvB,CAAC"}
@@ -9,6 +9,42 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (_) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
12
48
  var __rest = (this && this.__rest) || function (s, e) {
13
49
  var t = {};
14
50
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -21,7 +57,6 @@ var __rest = (this && this.__rest) || function (s, e) {
21
57
  return t;
22
58
  };
23
59
  import React from 'react';
24
- import { useCallLoadMore } from './hooks/useCallLoadMore';
25
60
  import { useEnrichedMessages } from './hooks/useEnrichedMessages';
26
61
  import { useMessageListElements } from './hooks/useMessageListElements';
27
62
  import { useScrollLocationLogic } from './hooks/useScrollLocationLogic';
@@ -33,26 +68,23 @@ import { useChannelStateContext, } from '../../context/ChannelStateContext';
33
68
  import { useChatContext } from '../../context/ChatContext';
34
69
  import { useComponentContext } from '../../context/ComponentContext';
35
70
  import { EmptyStateIndicator as DefaultEmptyStateIndicator } from '../EmptyStateIndicator';
36
- import { InfiniteScroll } from '../InfiniteScrollPaginator';
71
+ import { InfiniteScroll } from '../InfiniteScrollPaginator/InfiniteScroll';
37
72
  import { LoadingIndicator as DefaultLoadingIndicator } from '../Loading';
38
73
  import { defaultPinPermissions, MESSAGE_ACTIONS } from '../Message/utils';
39
74
  import { TypingIndicator as DefaultTypingIndicator } from '../TypingIndicator';
40
- var useInternalInfiniteScrollProps = function (props) {
41
- var _a = useComponentContext('useInternalInfiniteScrollProps').LoadingIndicator, LoadingIndicator = _a === void 0 ? DefaultLoadingIndicator : _a;
42
- return __assign({ hasMore: props.hasMore, isLoading: props.loadingMore, loader: (React.createElement(Center, { key: 'loadingindicator' },
43
- React.createElement(LoadingIndicator, { size: 20 }))), loadMore: useCallLoadMore(props.loadMore, props.messageLimit || 100) }, props.internalInfiniteScrollProps);
44
- };
45
75
  var MessageListWithContext = function (props) {
46
76
  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, _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
47
77
  _h = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
48
- 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;
78
+ 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;
49
79
  var customClasses = useChatContext('MessageList').customClasses;
50
- var _l = useComponentContext('MessageList'), _m = _l.EmptyStateIndicator, EmptyStateIndicator = _m === void 0 ? DefaultEmptyStateIndicator : _m, _o = _l.MessageListNotifications, MessageListNotifications = _o === void 0 ? DefaultMessageListNotifications : _o, _p = _l.MessageNotification, MessageNotification = _p === void 0 ? DefaultMessageNotification : _p, _q = _l.TypingIndicator, TypingIndicator = _q === void 0 ? DefaultTypingIndicator : _q;
51
- var _r = useScrollLocationLogic({
80
+ var _p = useComponentContext('MessageList'), _q = _p.EmptyStateIndicator, EmptyStateIndicator = _q === void 0 ? DefaultEmptyStateIndicator : _q, _r = _p.MessageListNotifications, MessageListNotifications = _r === void 0 ? DefaultMessageListNotifications : _r, _s = _p.MessageNotification, MessageNotification = _s === void 0 ? DefaultMessageNotification : _s, _t = _p.TypingIndicator, TypingIndicator = _t === void 0 ? DefaultTypingIndicator : _t;
81
+ var _u = useScrollLocationLogic({
82
+ hasMoreNewer: hasMoreNewer,
52
83
  messages: messages,
53
84
  scrolledUpThreshold: props.scrolledUpThreshold,
54
- }), hasNewMessages = _r.hasNewMessages, listRef = _r.listRef, onMessageLoadCaptured = _r.onMessageLoadCaptured, onScroll = _r.onScroll, scrollToBottom = _r.scrollToBottom, wrapperRect = _r.wrapperRect;
55
- var _s = useEnrichedMessages({
85
+ suppressAutoscroll: suppressAutoscroll,
86
+ }), hasNewMessages = _u.hasNewMessages, listRef = _u.listRef, onMessageLoadCaptured = _u.onMessageLoadCaptured, onScroll = _u.onScroll, scrollToBottom = _u.scrollToBottom, wrapperRect = _u.wrapperRect;
87
+ var _v = useEnrichedMessages({
56
88
  channel: channel,
57
89
  disableDateSeparator: disableDateSeparator,
58
90
  groupStyles: groupStyles,
@@ -61,8 +93,7 @@ var MessageListWithContext = function (props) {
61
93
  hideNewMessageSeparator: hideNewMessageSeparator,
62
94
  messages: messages,
63
95
  noGroupByUser: noGroupByUser,
64
- threadList: threadList,
65
- }), messageGroupStyles = _s.messageGroupStyles, enrichedMessages = _s.messages;
96
+ }), messageGroupStyles = _v.messageGroupStyles, enrichedMessages = _v.messages;
66
97
  var elements = useMessageListElements({
67
98
  enrichedMessages: enrichedMessages,
68
99
  internalMessageProps: {
@@ -97,15 +128,50 @@ var MessageListWithContext = function (props) {
97
128
  returnAllReadData: returnAllReadData,
98
129
  threadList: threadList,
99
130
  });
100
- var finalInternalInfiniteScrollProps = useInternalInfiniteScrollProps(props);
131
+ var _w = useComponentContext('useInternalInfiniteScrollProps').LoadingIndicator, LoadingIndicator = _w === void 0 ? DefaultLoadingIndicator : _w;
101
132
  var messageListClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.messageList) || 'str-chat__list';
102
133
  var threadListClass = threadList ? (customClasses === null || customClasses === void 0 ? void 0 : customClasses.threadList) || 'str-chat__list--thread' : '';
134
+ var loadMore = React.useCallback(function () {
135
+ if (loadMoreCallback) {
136
+ loadMoreCallback(messageLimit);
137
+ }
138
+ }, [loadMoreCallback, messageLimit]);
139
+ var loadMoreNewer = React.useCallback(function () {
140
+ if (loadMoreNewerCallback) {
141
+ loadMoreNewerCallback(messageLimit);
142
+ }
143
+ }, [loadMoreNewerCallback, messageLimit]);
144
+ var scrollToBottomFromNotification = React.useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
145
+ return __generator(this, function (_a) {
146
+ switch (_a.label) {
147
+ case 0:
148
+ if (!hasMoreNewer) return [3 /*break*/, 2];
149
+ return [4 /*yield*/, jumpToLatestMessage()];
150
+ case 1:
151
+ _a.sent();
152
+ return [3 /*break*/, 3];
153
+ case 2:
154
+ scrollToBottom();
155
+ _a.label = 3;
156
+ case 3: return [2 /*return*/];
157
+ }
158
+ });
159
+ }); }, [scrollToBottom, hasMoreNewer]);
160
+ var ulRef = React.useRef(null);
161
+ React.useLayoutEffect(function () {
162
+ var _a;
163
+ if (highlightedMessageId) {
164
+ var element = (_a = ulRef.current) === null || _a === void 0 ? void 0 : _a.querySelector("[data-message-id='" + highlightedMessageId + "']");
165
+ element === null || element === void 0 ? void 0 : element.scrollIntoView({ block: 'center' });
166
+ }
167
+ }, [highlightedMessageId]);
103
168
  return (React.createElement(React.Fragment, null,
104
- React.createElement("div", { className: messageListClass + " " + threadListClass, onScroll: onScroll, ref: listRef }, !elements.length ? (React.createElement(EmptyStateIndicator, { listType: 'message' })) : (React.createElement(InfiniteScroll, __assign({ className: 'str-chat__reverse-infinite-scroll', "data-testid": 'reverse-infinite-scroll', isReverse: true, useWindow: false }, finalInternalInfiniteScrollProps),
105
- React.createElement("ul", { className: 'str-chat__ul' }, elements),
169
+ React.createElement("div", { className: messageListClass + " " + threadListClass, onScroll: onScroll, ref: listRef }, !elements.length ? (React.createElement(EmptyStateIndicator, { listType: 'message' })) : (React.createElement(InfiniteScroll, __assign({ className: 'str-chat__reverse-infinite-scroll', "data-testid": 'reverse-infinite-scroll', hasMore: props.hasMore, hasMoreNewer: props.hasMoreNewer, isLoading: props.loadingMore, loader: React.createElement(Center, { key: 'loadingindicator' },
170
+ React.createElement(LoadingIndicator, { size: 20 })), loadMore: loadMore, loadMoreNewer: loadMoreNewer }, props.internalInfiniteScrollProps),
171
+ React.createElement("ul", { className: 'str-chat__ul', ref: ulRef }, elements),
106
172
  React.createElement(TypingIndicator, { threadList: threadList }),
107
173
  React.createElement("div", { key: 'bottom' })))),
108
- React.createElement(MessageListNotifications, { hasNewMessages: hasNewMessages, MessageNotification: MessageNotification, notifications: notifications, scrollToBottom: scrollToBottom })));
174
+ React.createElement(MessageListNotifications, { hasNewMessages: hasNewMessages, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification, notifications: notifications, scrollToBottom: scrollToBottomFromNotification })));
109
175
  };
110
176
  /**
111
177
  * The MessageList component renders a list of Messages.
@@ -116,10 +182,10 @@ var MessageListWithContext = function (props) {
116
182
  * - [TypingContext](https://getstream.io/chat/docs/sdk/react/contexts/typing_context/)
117
183
  */
118
184
  export var MessageList = function (props) {
119
- var loadMore = useChannelActionContext('MessageList').loadMore;
120
- var _a = useChannelStateContext('MessageList'), membersPropToNotPass = _a.members, // eslint-disable-line @typescript-eslint/no-unused-vars
121
- mutesPropToNotPass = _a.mutes, // eslint-disable-line @typescript-eslint/no-unused-vars
122
- watchersPropToNotPass = _a.watchers, // eslint-disable-line @typescript-eslint/no-unused-vars
123
- restChannelStateContext = __rest(_a, ["members", "mutes", "watchers"]);
124
- return (React.createElement(MessageListWithContext, __assign({ loadMore: loadMore }, restChannelStateContext, props)));
185
+ var _a = useChannelActionContext('MessageList'), jumpToLatestMessage = _a.jumpToLatestMessage, loadMore = _a.loadMore, loadMoreNewer = _a.loadMoreNewer;
186
+ var _b = useChannelStateContext('MessageList'), membersPropToNotPass = _b.members, // eslint-disable-line @typescript-eslint/no-unused-vars
187
+ mutesPropToNotPass = _b.mutes, // eslint-disable-line @typescript-eslint/no-unused-vars
188
+ watchersPropToNotPass = _b.watchers, // eslint-disable-line @typescript-eslint/no-unused-vars
189
+ restChannelStateContext = __rest(_b, ["members", "mutes", "watchers"]);
190
+ return (React.createElement(MessageListWithContext, __assign({ jumpToLatestMessage: jumpToLatestMessage, loadMore: loadMore, loadMoreNewer: loadMoreNewer }, restChannelStateContext, props)));
125
191
  };
@@ -3,6 +3,7 @@ import type { MessageNotificationProps } from './MessageNotification';
3
3
  import type { ChannelNotifications } from '../../context/ChannelStateContext';
4
4
  export declare type MessageListNotificationsProps = {
5
5
  hasNewMessages: boolean;
6
+ isNotAtLatestMessageSet: boolean;
6
7
  MessageNotification: React.ComponentType<MessageNotificationProps>;
7
8
  notifications: ChannelNotifications;
8
9
  scrollToBottom: () => void;
@@ -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,oBAAY,6BAA6B,GAAG;IAC1C,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACnE,aAAa,EAAE,oBAAoB,CAAC;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAAW,6BAA6B,gBAkB5E,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,oBAAY,6BAA6B,GAAG;IAC1C,cAAc,EAAE,OAAO,CAAC;IACxB,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;CAC5B,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAAW,6BAA6B,gBA2B5E,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, MessageNotification = props.MessageNotification, notifications = props.notifications, scrollToBottom = props.scrollToBottom;
6
+ var hasNewMessages = props.hasNewMessages, isNotAtLatestMessageSet = props.isNotAtLatestMessageSet, MessageNotification = props.MessageNotification, notifications = props.notifications, scrollToBottom = props.scrollToBottom;
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, { onClick: scrollToBottom, showNotification: hasNewMessages }, t('New Messages!'))));
11
+ React.createElement(MessageNotification, { onClick: scrollToBottom, showNotification: hasNewMessages || isNotAtLatestMessageSet }, isNotAtLatestMessageSet ? t('Latest Messages') : t('New Messages!'))));
12
12
  };
@@ -13,18 +13,26 @@ export declare type VirtualizedMessageListProps<StreamChatGenerics extends Defau
13
13
  customMessageRenderer?: (messageList: StreamMessage<StreamChatGenerics>[], index: number) => React.ReactElement;
14
14
  /** If set, the default item height is used for the calculation of the total list height. Use if you expect messages with a lot of height variance */
15
15
  defaultItemHeight?: number;
16
- /** Disables the injection of date separator components, defaults to `true` */
16
+ /** Disables the injection of date separator components in MessageList, defaults to `true` */
17
17
  disableDateSeparator?: boolean;
18
18
  /** Whether or not the list has more items to load */
19
19
  hasMore?: boolean;
20
+ /** Whether or not the list has newer items to load */
21
+ hasMoreNewer?: boolean;
20
22
  /** Hides the `MessageDeleted` components from the list, defaults to `false` */
21
23
  hideDeletedMessages?: boolean;
22
24
  /** Hides the `DateSeparator` component when new messages are received in a channel that's watched but not active, defaults to false */
23
25
  hideNewMessageSeparator?: boolean;
26
+ /** The id of the message to highlight and center */
27
+ highlightedMessageId?: string;
24
28
  /** Whether or not the list is currently loading more items */
25
29
  loadingMore?: boolean;
30
+ /** Whether or not the list is currently loading newer items */
31
+ loadingMoreNewer?: boolean;
26
32
  /** Function called when more messages are to be loaded, defaults to function stored in [ChannelActionContext](https://getstream.io/chat/docs/sdk/react/contexts/channel_action_context/) */
27
33
  loadMore?: ChannelActionContextValue['loadMore'] | (() => Promise<void>);
34
+ /** Function called when new messages are to be loaded, defaults to function stored in [ChannelActionContext](https://getstream.io/chat/docs/sdk/react/contexts/channel_action_context/) */
35
+ loadMoreNewer?: ChannelActionContextValue['loadMore'] | (() => Promise<void>);
28
36
  /** Custom UI component to display a message, defaults to and accepts same props as [FixedHeightMessage](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Message/FixedHeightMessage.tsx) */
29
37
  Message?: React.ComponentType<MessageUIComponentProps<StreamChatGenerics>>;
30
38
  /** The limit to use when paginating messages */
@@ -56,6 +64,8 @@ export declare type VirtualizedMessageListProps<StreamChatGenerics extends Defau
56
64
  shouldGroupByUser?: boolean;
57
65
  /** The scrollTo behavior when new messages appear. Use `"smooth"` for regular chat channels, and `"auto"` (which results in instant scroll to bottom) if you expect high throughput. */
58
66
  stickToBottomScrollBehavior?: 'smooth' | 'auto';
67
+ /** stops the list from autoscrolling when new messages are loaded */
68
+ suppressAutoscroll?: boolean;
59
69
  /** If true, indicates the message list is a thread */
60
70
  threadList?: boolean;
61
71
  };
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualizedMessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAEL,uBAAuB,EACvB,0BAA0B,EAG1B,aAAa,EACd,MAAM,gBAAgB,CAAC;AAexB,OAAO,EAAW,YAAY,EAAiB,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE3F,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEL,aAAa,EAEd,MAAM,mCAAmC,CAAC;AAO3C,OAAO,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA6ThF,oBAAY,2BAA2B,CACrC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,sBAAsB,GAAG,gBAAgB,CAAC,CAAC,GAAG;IAC/F,gJAAgJ;IAChJ,uBAAuB,CAAC,EAAE,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9D,gGAAgG;IAChG,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,sEAAsE;IACtE,qBAAqB,CAAC,EAAE,CACtB,WAAW,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAChD,KAAK,EAAE,MAAM,KACV,KAAK,CAAC,YAAY,CAAC;IACxB,qJAAqJ;IACrJ,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uIAAuI;IACvI,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4LAA4L;IAC5L,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,qNAAqN;IACrN,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC3E,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4JAA4J;IAC5J,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,iHAAiH;IACjH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;OAWG;IACH,qBAAqB,CAAC,EAAE,uBAAuB,GAAG;QAChD,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;KAC9D,CAAC;IACF,4FAA4F;IAC5F,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,sJAAsJ;IACtJ,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,wLAAwL;IACxL,2BAA2B,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAChD,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,KAAK,EAAE,2BAA2B,CAAC,kBAAkB,CAAC,eAuBvD"}
1
+ {"version":3,"file":"VirtualizedMessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AACjF,OAAO,EAEL,uBAAuB,EACvB,0BAA0B,EAG1B,aAAa,EACd,MAAM,gBAAgB,CAAC;AAgBxB,OAAO,EAAW,YAAY,EAAiB,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE3F,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEL,aAAa,EAEd,MAAM,mCAAmC,CAAC;AAO3C,OAAO,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAsYhF,oBAAY,2BAA2B,CACrC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,sBAAsB,GAAG,gBAAgB,CAAC,CAAC,GAAG;IAC/F,gJAAgJ;IAChJ,uBAAuB,CAAC,EAAE,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9D,gGAAgG;IAChG,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,sEAAsE;IACtE,qBAAqB,CAAC,EAAE,CACtB,WAAW,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAChD,KAAK,EAAE,MAAM,KACV,KAAK,CAAC,YAAY,CAAC;IACxB,qJAAqJ;IACrJ,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6FAA6F;IAC7F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+EAA+E;IAC/E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uIAAuI;IACvI,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,oDAAoD;IACpD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,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,2LAA2L;IAC3L,aAAa,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,qNAAqN;IACrN,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC3E,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4JAA4J;IAC5J,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,iHAAiH;IACjH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;OAWG;IACH,qBAAqB,CAAC,EAAE,uBAAuB,GAAG;QAChD,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;KAC9D,CAAC;IACF,4FAA4F;IAC5F,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,sJAAsJ;IACtJ,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,wLAAwL;IACxL,2BAA2B,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAChD,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,KAAK,EAAE,2BAA2B,CAAC,kBAAkB,CAAC,eAqCvD"}