stream-chat-react-native-core 4.0.0-beta.2 → 4.0.0-beta.6

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 (1049) hide show
  1. package/lib/commonjs/components/Attachment/Attachment.js +12 -12
  2. package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/AttachmentActions.js +4 -4
  4. package/lib/commonjs/components/Attachment/AttachmentActions.js.map +1 -1
  5. package/lib/commonjs/components/Attachment/Card.js +15 -15
  6. package/lib/commonjs/components/Attachment/Card.js.map +1 -1
  7. package/lib/commonjs/components/Attachment/FileAttachment.js +8 -8
  8. package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
  9. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +4 -4
  10. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js.map +1 -1
  11. package/lib/commonjs/components/Attachment/FileIcon.js.map +1 -1
  12. package/lib/commonjs/components/Attachment/Gallery.js +97 -106
  13. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  14. package/lib/commonjs/components/Attachment/Giphy.js +112 -148
  15. package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
  16. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGallery.js +46 -0
  17. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -0
  18. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js +88 -0
  19. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js.map +1 -0
  20. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js +75 -0
  21. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js.map +1 -0
  22. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js +43 -0
  23. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js.map +1 -0
  24. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js +30 -0
  25. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -0
  26. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnailGrid.js +49 -0
  27. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnailGrid.js.map +1 -0
  28. package/lib/commonjs/components/Attachment/utils/buildGallery/types.js +4 -0
  29. package/lib/commonjs/components/Attachment/utils/buildGallery/types.js.map +1 -0
  30. package/lib/commonjs/components/Attachment/utils/getAspectRatio.js +14 -0
  31. package/lib/commonjs/components/Attachment/utils/getAspectRatio.js.map +1 -0
  32. package/lib/commonjs/components/Attachment/utils/getGalleryImageBorderRadius.js +36 -0
  33. package/lib/commonjs/components/Attachment/utils/getGalleryImageBorderRadius.js.map +1 -0
  34. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +9 -8
  35. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  36. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +2 -2
  37. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  38. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js +16 -16
  39. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js.map +1 -1
  40. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +7 -7
  41. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -1
  42. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +4 -4
  43. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -1
  44. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +11 -11
  45. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  46. package/lib/commonjs/components/Avatar/Avatar.js +13 -7
  47. package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
  48. package/lib/commonjs/components/Avatar/GroupAvatar.js +10 -4
  49. package/lib/commonjs/components/Avatar/GroupAvatar.js.map +1 -1
  50. package/lib/commonjs/components/Channel/Channel.js +64 -64
  51. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  52. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  53. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  54. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  55. package/lib/commonjs/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -1
  56. package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  57. package/lib/commonjs/components/Channel/hooks/useCreateThreadContext.js.map +1 -1
  58. package/lib/commonjs/components/Channel/hooks/useCreateTypingContext.js.map +1 -1
  59. package/lib/commonjs/components/ChannelList/ChannelList.js +6 -6
  60. package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
  61. package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js +4 -4
  62. package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
  63. package/lib/commonjs/components/ChannelList/ChannelListHeaderErrorIndicator.js +6 -7
  64. package/lib/commonjs/components/ChannelList/ChannelListHeaderErrorIndicator.js.map +1 -1
  65. package/lib/commonjs/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +2 -2
  66. package/lib/commonjs/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js.map +1 -1
  67. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js +17 -17
  68. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js.map +1 -1
  69. package/lib/commonjs/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js +2 -2
  70. package/lib/commonjs/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js.map +1 -1
  71. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelDeleted.js.map +1 -1
  72. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelHidden.js.map +1 -1
  73. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelTruncated.js.map +1 -1
  74. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelUpdated.js.map +1 -1
  75. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelVisible.js +2 -2
  76. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelVisible.js.map +1 -1
  77. package/lib/commonjs/components/ChannelList/hooks/listeners/useConnectionRecovered.js.map +1 -1
  78. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js +2 -2
  79. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
  80. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js +3 -3
  81. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  82. package/lib/commonjs/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js.map +1 -1
  83. package/lib/commonjs/components/ChannelList/hooks/listeners/useUserPresence.js.map +1 -1
  84. package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js +2 -2
  85. package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
  86. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +83 -70
  87. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  88. package/lib/commonjs/components/ChannelList/utils.js +1 -1
  89. package/lib/commonjs/components/ChannelList/utils.js.map +1 -1
  90. package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js +2 -2
  91. package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js.map +1 -1
  92. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +4 -4
  93. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
  94. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js +4 -4
  95. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  96. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js +48 -20
  97. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  98. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js +51 -0
  99. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js.map +1 -0
  100. package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js +4 -4
  101. package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js.map +1 -1
  102. package/lib/commonjs/components/ChannelPreview/ChannelPreviewTitle.js +1 -1
  103. package/lib/commonjs/components/ChannelPreview/ChannelPreviewTitle.js.map +1 -1
  104. package/lib/commonjs/components/ChannelPreview/ChannelPreviewUnreadCount.js +2 -2
  105. package/lib/commonjs/components/ChannelPreview/ChannelPreviewUnreadCount.js.map +1 -1
  106. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js.map +1 -1
  107. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
  108. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.js.map +1 -1
  109. package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
  110. package/lib/commonjs/components/Chat/Chat.js +4 -4
  111. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  112. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  113. package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
  114. package/lib/commonjs/components/Chat/hooks/useMutedUsers.js.map +1 -1
  115. package/lib/commonjs/components/ImageGallery/ImageGallery.js +89 -56
  116. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  117. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +2 -2
  118. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  119. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +12 -12
  120. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  121. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +28 -11
  122. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  123. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +7 -7
  124. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
  125. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js +5 -5
  126. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
  127. package/lib/commonjs/components/Indicators/LoadingIndicator.js +9 -9
  128. package/lib/commonjs/components/Indicators/LoadingIndicator.js.map +1 -1
  129. package/lib/commonjs/components/Message/Message.js +19 -15
  130. package/lib/commonjs/components/Message/Message.js.map +1 -1
  131. package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js +6 -6
  132. package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
  133. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +19 -19
  134. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  135. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js +5 -5
  136. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
  137. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +20 -16
  138. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  139. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js +6 -6
  140. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -1
  141. package/lib/commonjs/components/Message/MessageSimple/MessageReplies.js +10 -10
  142. package/lib/commonjs/components/Message/MessageSimple/MessageReplies.js.map +1 -1
  143. package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js +5 -5
  144. package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js.map +1 -1
  145. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +6 -6
  146. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  147. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js +15 -13
  148. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js.map +1 -1
  149. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js +3 -3
  150. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  151. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +51 -51
  152. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -1
  153. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js +89 -0
  154. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js.map +1 -0
  155. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.test.js +46 -0
  156. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -0
  157. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +151 -81
  158. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  159. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js +240 -0
  160. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js.map +1 -0
  161. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  162. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js +16 -3
  163. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  164. package/lib/commonjs/components/Message/hooks/useMessageActions.js +18 -14
  165. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
  166. package/lib/commonjs/components/Message/utils/messageActions.js.map +1 -1
  167. package/lib/commonjs/components/Message/utils/removeReservedFields.js.map +1 -1
  168. package/lib/commonjs/components/MessageInput/AttachButton.js +3 -3
  169. package/lib/commonjs/components/MessageInput/AttachButton.js.map +1 -1
  170. package/lib/commonjs/components/MessageInput/CommandsButton.js +3 -3
  171. package/lib/commonjs/components/MessageInput/CommandsButton.js.map +1 -1
  172. package/lib/commonjs/components/MessageInput/CooldownTimer.js +2 -2
  173. package/lib/commonjs/components/MessageInput/CooldownTimer.js.map +1 -1
  174. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +13 -13
  175. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  176. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +7 -7
  177. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  178. package/lib/commonjs/components/MessageInput/InputButtons.js +9 -9
  179. package/lib/commonjs/components/MessageInput/InputButtons.js.map +1 -1
  180. package/lib/commonjs/components/MessageInput/MessageInput.js +40 -40
  181. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  182. package/lib/commonjs/components/MessageInput/MoreOptionsButton.js +3 -3
  183. package/lib/commonjs/components/MessageInput/MoreOptionsButton.js.map +1 -1
  184. package/lib/commonjs/components/MessageInput/SendButton.js +5 -5
  185. package/lib/commonjs/components/MessageInput/SendButton.js.map +1 -1
  186. package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js +2 -2
  187. package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js.map +1 -1
  188. package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js +10 -10
  189. package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js.map +1 -1
  190. package/lib/commonjs/components/MessageInput/hooks/useCooldown.js.map +1 -1
  191. package/lib/commonjs/components/MessageInput/hooks/useCountdown.js.map +1 -1
  192. package/lib/commonjs/components/MessageList/InlineLoadingMoreIndicator.js +4 -4
  193. package/lib/commonjs/components/MessageList/InlineLoadingMoreIndicator.js.map +1 -1
  194. package/lib/commonjs/components/MessageList/InlineLoadingMoreRecentIndicator.js +4 -4
  195. package/lib/commonjs/components/MessageList/InlineLoadingMoreRecentIndicator.js.map +1 -1
  196. package/lib/commonjs/components/MessageList/InlineLoadingMoreThreadIndicator.js +4 -4
  197. package/lib/commonjs/components/MessageList/InlineLoadingMoreThreadIndicator.js.map +1 -1
  198. package/lib/commonjs/components/MessageList/MessageList.js +28 -28
  199. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  200. package/lib/commonjs/components/MessageList/MessageSystem.js +6 -6
  201. package/lib/commonjs/components/MessageList/MessageSystem.js.map +1 -1
  202. package/lib/commonjs/components/MessageList/TypingIndicator.js +5 -5
  203. package/lib/commonjs/components/MessageList/TypingIndicator.js.map +1 -1
  204. package/lib/commonjs/components/MessageList/TypingIndicatorContainer.js +2 -2
  205. package/lib/commonjs/components/MessageList/TypingIndicatorContainer.js.map +1 -1
  206. package/lib/commonjs/components/MessageList/hooks/useMessageList.js +7 -7
  207. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  208. package/lib/commonjs/components/MessageList/hooks/useTypingString.js +2 -2
  209. package/lib/commonjs/components/MessageList/hooks/useTypingString.js.map +1 -1
  210. package/lib/commonjs/components/MessageList/utils/filterTypingUsers.js.map +1 -1
  211. package/lib/commonjs/components/MessageList/utils/getDateSeparators.js.map +1 -1
  212. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js.map +1 -1
  213. package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js +3 -1
  214. package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  215. package/lib/commonjs/components/MessageList/utils/getReadStates.js.map +1 -1
  216. package/lib/commonjs/components/MessageOverlay/MessageActionList.js +5 -5
  217. package/lib/commonjs/components/MessageOverlay/MessageActionList.js.map +1 -1
  218. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js +8 -8
  219. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js.map +1 -1
  220. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +41 -34
  221. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
  222. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js +1 -1
  223. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js.map +1 -1
  224. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js +16 -16
  225. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js.map +1 -1
  226. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js +31 -34
  227. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js.map +1 -1
  228. package/lib/commonjs/components/MessageOverlay/OverlayReactionsAvatar.js +41 -0
  229. package/lib/commonjs/components/MessageOverlay/OverlayReactionsAvatar.js.map +1 -0
  230. package/lib/commonjs/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +1 -1
  231. package/lib/commonjs/components/Reply/Reply.js +25 -19
  232. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  233. package/lib/commonjs/components/Thread/Thread.js +6 -6
  234. package/lib/commonjs/components/Thread/Thread.js.map +1 -1
  235. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +12 -12
  236. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  237. package/lib/commonjs/components/docs/data.js +45 -45
  238. package/lib/commonjs/components/docs/data.js.map +1 -1
  239. package/lib/commonjs/components/index.js +26 -0
  240. package/lib/commonjs/components/index.js.map +1 -1
  241. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +2 -2
  242. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -1
  243. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js +2 -2
  244. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  245. package/lib/commonjs/contexts/channelContext/ChannelContext.js +2 -2
  246. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  247. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js +2 -2
  248. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
  249. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js +3 -3
  250. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
  251. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js.map +1 -1
  252. package/lib/commonjs/contexts/chatContext/ChatContext.js +2 -2
  253. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  254. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js +2 -2
  255. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  256. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js +2 -2
  257. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js.map +1 -1
  258. package/lib/commonjs/contexts/messageContext/MessageContext.js +2 -2
  259. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  260. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +18 -14
  261. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  262. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  263. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +10 -3
  264. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  265. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js +5 -19
  266. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  267. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.js +36 -0
  268. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.js.map +1 -0
  269. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js +105 -0
  270. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +1 -0
  271. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
  272. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  273. package/lib/commonjs/contexts/overlayContext/OverlayContext.js +1 -1
  274. package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
  275. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +33 -31
  276. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
  277. package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +1 -1
  278. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +2 -2
  279. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  280. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +2 -2
  281. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  282. package/lib/commonjs/contexts/themeContext/ThemeContext.js +2 -2
  283. package/lib/commonjs/contexts/themeContext/ThemeContext.js.map +1 -1
  284. package/lib/commonjs/contexts/themeContext/utils/theme.js +20 -11
  285. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  286. package/lib/commonjs/contexts/threadContext/ThreadContext.js +2 -2
  287. package/lib/commonjs/contexts/threadContext/ThreadContext.js.map +1 -1
  288. package/lib/commonjs/contexts/translationContext/TranslationContext.js +3 -3
  289. package/lib/commonjs/contexts/translationContext/TranslationContext.js.map +1 -1
  290. package/lib/commonjs/contexts/typingContext/TypingContext.js +2 -2
  291. package/lib/commonjs/contexts/typingContext/TypingContext.js.map +1 -1
  292. package/lib/commonjs/contexts/utils/getDisplayName.js.map +1 -1
  293. package/lib/commonjs/emoji-data/index.js +2 -2
  294. package/lib/commonjs/emoji-data/index.js.map +1 -1
  295. package/lib/commonjs/hooks/useStreami18n.js.map +1 -1
  296. package/lib/commonjs/icons/UserAdmin.js +62 -0
  297. package/lib/commonjs/icons/UserAdmin.js.map +1 -0
  298. package/lib/commonjs/icons/index.js +0 -26
  299. package/lib/commonjs/icons/index.js.map +1 -1
  300. package/lib/commonjs/icons/utils/base.js +1 -1
  301. package/lib/commonjs/index.js +6 -6
  302. package/lib/commonjs/mock-builders/api/error.js +1 -1
  303. package/lib/commonjs/mock-builders/api/sendMessage.js.map +1 -1
  304. package/lib/commonjs/mock-builders/generator/attachment.js +1 -3
  305. package/lib/commonjs/mock-builders/generator/attachment.js.map +1 -1
  306. package/lib/commonjs/mock-builders/generator/channel.js +101 -51
  307. package/lib/commonjs/mock-builders/generator/channel.js.map +1 -1
  308. package/lib/commonjs/mock-builders/generator/user.js +32 -33
  309. package/lib/commonjs/mock-builders/generator/user.js.map +1 -1
  310. package/lib/commonjs/mock-builders/mock.js +1 -1
  311. package/lib/commonjs/native.js +1 -1
  312. package/lib/commonjs/native.js.map +1 -1
  313. package/lib/commonjs/styleguideComponents/ArgumentsRenderer.js +7 -7
  314. package/lib/commonjs/styleguideComponents/ArgumentsRenderer.js.map +1 -1
  315. package/lib/commonjs/styleguideComponents/JsDoc.js +4 -4
  316. package/lib/commonjs/styleguideComponents/JsDoc.js.map +1 -1
  317. package/lib/commonjs/styleguideComponents/PathlineRenderer.js +7 -7
  318. package/lib/commonjs/styleguideComponents/PathlineRenderer.js.map +1 -1
  319. package/lib/commonjs/styleguideComponents/PropsRenderer.js +25 -25
  320. package/lib/commonjs/styleguideComponents/PropsRenderer.js.map +1 -1
  321. package/lib/commonjs/styleguideComponents/Wrapper.js +1 -1
  322. package/lib/commonjs/styleguideComponents/Wrapper.js.map +1 -1
  323. package/lib/commonjs/utils/Streami18n.js.map +1 -1
  324. package/lib/commonjs/utils/getResizedImageUrl.js +26 -0
  325. package/lib/commonjs/utils/getResizedImageUrl.js.map +1 -0
  326. package/lib/commonjs/utils/getUrlOfImageAttachment.js +9 -0
  327. package/lib/commonjs/utils/getUrlOfImageAttachment.js.map +1 -0
  328. package/lib/commonjs/utils/utils.js +9 -3
  329. package/lib/commonjs/utils/utils.js.map +1 -1
  330. package/lib/commonjs/version.json +1 -1
  331. package/lib/module/components/Attachment/Attachment.js +12 -12
  332. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  333. package/lib/module/components/Attachment/AttachmentActions.js +4 -4
  334. package/lib/module/components/Attachment/AttachmentActions.js.map +1 -1
  335. package/lib/module/components/Attachment/Card.js +15 -15
  336. package/lib/module/components/Attachment/Card.js.map +1 -1
  337. package/lib/module/components/Attachment/FileAttachment.js +8 -8
  338. package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
  339. package/lib/module/components/Attachment/FileAttachmentGroup.js +4 -4
  340. package/lib/module/components/Attachment/FileAttachmentGroup.js.map +1 -1
  341. package/lib/module/components/Attachment/FileIcon.js.map +1 -1
  342. package/lib/module/components/Attachment/Gallery.js +97 -106
  343. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  344. package/lib/module/components/Attachment/Giphy.js +112 -148
  345. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  346. package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js +46 -0
  347. package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -0
  348. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js +88 -0
  349. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js.map +1 -0
  350. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js +75 -0
  351. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js.map +1 -0
  352. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js +43 -0
  353. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js.map +1 -0
  354. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js +30 -0
  355. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -0
  356. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnailGrid.js +49 -0
  357. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnailGrid.js.map +1 -0
  358. package/lib/module/components/Attachment/utils/buildGallery/types.js +4 -0
  359. package/lib/module/components/Attachment/utils/buildGallery/types.js.map +1 -0
  360. package/lib/module/components/Attachment/utils/getAspectRatio.js +14 -0
  361. package/lib/module/components/Attachment/utils/getAspectRatio.js.map +1 -0
  362. package/lib/module/components/Attachment/utils/getGalleryImageBorderRadius.js +36 -0
  363. package/lib/module/components/Attachment/utils/getGalleryImageBorderRadius.js.map +1 -0
  364. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +9 -8
  365. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  366. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +2 -2
  367. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  368. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js +16 -16
  369. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js.map +1 -1
  370. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +7 -7
  371. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -1
  372. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +4 -4
  373. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -1
  374. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +11 -11
  375. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  376. package/lib/module/components/Avatar/Avatar.js +13 -7
  377. package/lib/module/components/Avatar/Avatar.js.map +1 -1
  378. package/lib/module/components/Avatar/GroupAvatar.js +10 -4
  379. package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
  380. package/lib/module/components/Channel/Channel.js +64 -64
  381. package/lib/module/components/Channel/Channel.js.map +1 -1
  382. package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  383. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  384. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  385. package/lib/module/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -1
  386. package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  387. package/lib/module/components/Channel/hooks/useCreateThreadContext.js.map +1 -1
  388. package/lib/module/components/Channel/hooks/useCreateTypingContext.js.map +1 -1
  389. package/lib/module/components/ChannelList/ChannelList.js +6 -6
  390. package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
  391. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js +4 -4
  392. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
  393. package/lib/module/components/ChannelList/ChannelListHeaderErrorIndicator.js +6 -7
  394. package/lib/module/components/ChannelList/ChannelListHeaderErrorIndicator.js.map +1 -1
  395. package/lib/module/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +2 -2
  396. package/lib/module/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js.map +1 -1
  397. package/lib/module/components/ChannelList/ChannelListMessenger.js +17 -17
  398. package/lib/module/components/ChannelList/ChannelListMessenger.js.map +1 -1
  399. package/lib/module/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js +2 -2
  400. package/lib/module/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js.map +1 -1
  401. package/lib/module/components/ChannelList/hooks/listeners/useChannelDeleted.js.map +1 -1
  402. package/lib/module/components/ChannelList/hooks/listeners/useChannelHidden.js.map +1 -1
  403. package/lib/module/components/ChannelList/hooks/listeners/useChannelTruncated.js.map +1 -1
  404. package/lib/module/components/ChannelList/hooks/listeners/useChannelUpdated.js.map +1 -1
  405. package/lib/module/components/ChannelList/hooks/listeners/useChannelVisible.js +2 -2
  406. package/lib/module/components/ChannelList/hooks/listeners/useChannelVisible.js.map +1 -1
  407. package/lib/module/components/ChannelList/hooks/listeners/useConnectionRecovered.js.map +1 -1
  408. package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js +2 -2
  409. package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
  410. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js +3 -3
  411. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  412. package/lib/module/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js.map +1 -1
  413. package/lib/module/components/ChannelList/hooks/listeners/useUserPresence.js.map +1 -1
  414. package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js +2 -2
  415. package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
  416. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +83 -70
  417. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  418. package/lib/module/components/ChannelList/utils.js +1 -1
  419. package/lib/module/components/ChannelList/utils.js.map +1 -1
  420. package/lib/module/components/ChannelPreview/ChannelAvatar.js +2 -2
  421. package/lib/module/components/ChannelPreview/ChannelAvatar.js.map +1 -1
  422. package/lib/module/components/ChannelPreview/ChannelPreview.js +4 -4
  423. package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
  424. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js +4 -4
  425. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  426. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +48 -20
  427. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  428. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js +51 -0
  429. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js.map +1 -0
  430. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js +4 -4
  431. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js.map +1 -1
  432. package/lib/module/components/ChannelPreview/ChannelPreviewTitle.js +1 -1
  433. package/lib/module/components/ChannelPreview/ChannelPreviewTitle.js.map +1 -1
  434. package/lib/module/components/ChannelPreview/ChannelPreviewUnreadCount.js +2 -2
  435. package/lib/module/components/ChannelPreview/ChannelPreviewUnreadCount.js.map +1 -1
  436. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js.map +1 -1
  437. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
  438. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.js.map +1 -1
  439. package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
  440. package/lib/module/components/Chat/Chat.js +4 -4
  441. package/lib/module/components/Chat/Chat.js.map +1 -1
  442. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  443. package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
  444. package/lib/module/components/Chat/hooks/useMutedUsers.js.map +1 -1
  445. package/lib/module/components/ImageGallery/ImageGallery.js +89 -56
  446. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  447. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +2 -2
  448. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  449. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +12 -12
  450. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  451. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +28 -11
  452. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  453. package/lib/module/components/ImageGallery/components/ImageGrid.js +7 -7
  454. package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
  455. package/lib/module/components/ImageGallery/components/ImageGridHandle.js +5 -5
  456. package/lib/module/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
  457. package/lib/module/components/Indicators/LoadingIndicator.js +9 -9
  458. package/lib/module/components/Indicators/LoadingIndicator.js.map +1 -1
  459. package/lib/module/components/Message/Message.js +19 -15
  460. package/lib/module/components/Message/Message.js.map +1 -1
  461. package/lib/module/components/Message/MessageSimple/MessageAvatar.js +6 -6
  462. package/lib/module/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
  463. package/lib/module/components/Message/MessageSimple/MessageContent.js +19 -19
  464. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  465. package/lib/module/components/Message/MessageSimple/MessageDeleted.js +5 -5
  466. package/lib/module/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
  467. package/lib/module/components/Message/MessageSimple/MessageFooter.js +20 -16
  468. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  469. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js +6 -6
  470. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -1
  471. package/lib/module/components/Message/MessageSimple/MessageReplies.js +10 -10
  472. package/lib/module/components/Message/MessageSimple/MessageReplies.js.map +1 -1
  473. package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js +5 -5
  474. package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js.map +1 -1
  475. package/lib/module/components/Message/MessageSimple/MessageSimple.js +6 -6
  476. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  477. package/lib/module/components/Message/MessageSimple/MessageStatus.js +15 -13
  478. package/lib/module/components/Message/MessageSimple/MessageStatus.js.map +1 -1
  479. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +3 -3
  480. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  481. package/lib/module/components/Message/MessageSimple/ReactionList.js +51 -51
  482. package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
  483. package/lib/module/components/Message/MessageSimple/utils/parseLinks.js +89 -0
  484. package/lib/module/components/Message/MessageSimple/utils/parseLinks.js.map +1 -0
  485. package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js +46 -0
  486. package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -0
  487. package/lib/module/components/Message/MessageSimple/utils/renderText.js +151 -81
  488. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  489. package/lib/module/components/Message/MessageSimple/utils/renderText.test.js +240 -0
  490. package/lib/module/components/Message/MessageSimple/utils/renderText.test.js.map +1 -0
  491. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  492. package/lib/module/components/Message/hooks/useMessageActionHandlers.js +16 -3
  493. package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  494. package/lib/module/components/Message/hooks/useMessageActions.js +18 -14
  495. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
  496. package/lib/module/components/Message/utils/messageActions.js.map +1 -1
  497. package/lib/module/components/Message/utils/removeReservedFields.js.map +1 -1
  498. package/lib/module/components/MessageInput/AttachButton.js +3 -3
  499. package/lib/module/components/MessageInput/AttachButton.js.map +1 -1
  500. package/lib/module/components/MessageInput/CommandsButton.js +3 -3
  501. package/lib/module/components/MessageInput/CommandsButton.js.map +1 -1
  502. package/lib/module/components/MessageInput/CooldownTimer.js +2 -2
  503. package/lib/module/components/MessageInput/CooldownTimer.js.map +1 -1
  504. package/lib/module/components/MessageInput/FileUploadPreview.js +13 -13
  505. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  506. package/lib/module/components/MessageInput/ImageUploadPreview.js +7 -7
  507. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  508. package/lib/module/components/MessageInput/InputButtons.js +9 -9
  509. package/lib/module/components/MessageInput/InputButtons.js.map +1 -1
  510. package/lib/module/components/MessageInput/MessageInput.js +40 -40
  511. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  512. package/lib/module/components/MessageInput/MoreOptionsButton.js +3 -3
  513. package/lib/module/components/MessageInput/MoreOptionsButton.js.map +1 -1
  514. package/lib/module/components/MessageInput/SendButton.js +5 -5
  515. package/lib/module/components/MessageInput/SendButton.js.map +1 -1
  516. package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js +2 -2
  517. package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js.map +1 -1
  518. package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js +10 -10
  519. package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js.map +1 -1
  520. package/lib/module/components/MessageInput/hooks/useCooldown.js.map +1 -1
  521. package/lib/module/components/MessageInput/hooks/useCountdown.js.map +1 -1
  522. package/lib/module/components/MessageList/InlineLoadingMoreIndicator.js +4 -4
  523. package/lib/module/components/MessageList/InlineLoadingMoreIndicator.js.map +1 -1
  524. package/lib/module/components/MessageList/InlineLoadingMoreRecentIndicator.js +4 -4
  525. package/lib/module/components/MessageList/InlineLoadingMoreRecentIndicator.js.map +1 -1
  526. package/lib/module/components/MessageList/InlineLoadingMoreThreadIndicator.js +4 -4
  527. package/lib/module/components/MessageList/InlineLoadingMoreThreadIndicator.js.map +1 -1
  528. package/lib/module/components/MessageList/MessageList.js +28 -28
  529. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  530. package/lib/module/components/MessageList/MessageSystem.js +6 -6
  531. package/lib/module/components/MessageList/MessageSystem.js.map +1 -1
  532. package/lib/module/components/MessageList/TypingIndicator.js +5 -5
  533. package/lib/module/components/MessageList/TypingIndicator.js.map +1 -1
  534. package/lib/module/components/MessageList/TypingIndicatorContainer.js +2 -2
  535. package/lib/module/components/MessageList/TypingIndicatorContainer.js.map +1 -1
  536. package/lib/module/components/MessageList/hooks/useMessageList.js +7 -7
  537. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  538. package/lib/module/components/MessageList/hooks/useTypingString.js +2 -2
  539. package/lib/module/components/MessageList/hooks/useTypingString.js.map +1 -1
  540. package/lib/module/components/MessageList/utils/filterTypingUsers.js.map +1 -1
  541. package/lib/module/components/MessageList/utils/getDateSeparators.js.map +1 -1
  542. package/lib/module/components/MessageList/utils/getGroupStyles.js.map +1 -1
  543. package/lib/module/components/MessageList/utils/getLastReceivedMessage.js +3 -1
  544. package/lib/module/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  545. package/lib/module/components/MessageList/utils/getReadStates.js.map +1 -1
  546. package/lib/module/components/MessageOverlay/MessageActionList.js +5 -5
  547. package/lib/module/components/MessageOverlay/MessageActionList.js.map +1 -1
  548. package/lib/module/components/MessageOverlay/MessageActionListItem.js +8 -8
  549. package/lib/module/components/MessageOverlay/MessageActionListItem.js.map +1 -1
  550. package/lib/module/components/MessageOverlay/MessageOverlay.js +41 -34
  551. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  552. package/lib/module/components/MessageOverlay/OverlayBackdrop.js +1 -1
  553. package/lib/module/components/MessageOverlay/OverlayBackdrop.js.map +1 -1
  554. package/lib/module/components/MessageOverlay/OverlayReactionList.js +16 -16
  555. package/lib/module/components/MessageOverlay/OverlayReactionList.js.map +1 -1
  556. package/lib/module/components/MessageOverlay/OverlayReactions.js +31 -34
  557. package/lib/module/components/MessageOverlay/OverlayReactions.js.map +1 -1
  558. package/lib/module/components/MessageOverlay/OverlayReactionsAvatar.js +41 -0
  559. package/lib/module/components/MessageOverlay/OverlayReactionsAvatar.js.map +1 -0
  560. package/lib/module/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +1 -1
  561. package/lib/module/components/Reply/Reply.js +25 -19
  562. package/lib/module/components/Reply/Reply.js.map +1 -1
  563. package/lib/module/components/Thread/Thread.js +6 -6
  564. package/lib/module/components/Thread/Thread.js.map +1 -1
  565. package/lib/module/components/Thread/components/ThreadFooterComponent.js +12 -12
  566. package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  567. package/lib/module/components/docs/data.js +45 -45
  568. package/lib/module/components/docs/data.js.map +1 -1
  569. package/lib/module/components/index.js +26 -0
  570. package/lib/module/components/index.js.map +1 -1
  571. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +2 -2
  572. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -1
  573. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js +2 -2
  574. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  575. package/lib/module/contexts/channelContext/ChannelContext.js +2 -2
  576. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  577. package/lib/module/contexts/channelsContext/ChannelsContext.js +2 -2
  578. package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
  579. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js +3 -3
  580. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
  581. package/lib/module/contexts/channelsStateContext/useChannelState.js.map +1 -1
  582. package/lib/module/contexts/chatContext/ChatContext.js +2 -2
  583. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  584. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js +2 -2
  585. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  586. package/lib/module/contexts/keyboardContext/KeyboardContext.js +2 -2
  587. package/lib/module/contexts/keyboardContext/KeyboardContext.js.map +1 -1
  588. package/lib/module/contexts/messageContext/MessageContext.js +2 -2
  589. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  590. package/lib/module/contexts/messageInputContext/MessageInputContext.js +18 -14
  591. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  592. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  593. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +10 -3
  594. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  595. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js +5 -19
  596. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  597. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.js +36 -0
  598. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.js.map +1 -0
  599. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js +105 -0
  600. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +1 -0
  601. package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
  602. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  603. package/lib/module/contexts/overlayContext/OverlayContext.js +1 -1
  604. package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
  605. package/lib/module/contexts/overlayContext/OverlayProvider.js +33 -31
  606. package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
  607. package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +1 -1
  608. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +2 -2
  609. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  610. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +2 -2
  611. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  612. package/lib/module/contexts/themeContext/ThemeContext.js +2 -2
  613. package/lib/module/contexts/themeContext/ThemeContext.js.map +1 -1
  614. package/lib/module/contexts/themeContext/utils/theme.js +20 -11
  615. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  616. package/lib/module/contexts/threadContext/ThreadContext.js +2 -2
  617. package/lib/module/contexts/threadContext/ThreadContext.js.map +1 -1
  618. package/lib/module/contexts/translationContext/TranslationContext.js +3 -3
  619. package/lib/module/contexts/translationContext/TranslationContext.js.map +1 -1
  620. package/lib/module/contexts/typingContext/TypingContext.js +2 -2
  621. package/lib/module/contexts/typingContext/TypingContext.js.map +1 -1
  622. package/lib/module/contexts/utils/getDisplayName.js.map +1 -1
  623. package/lib/module/emoji-data/index.js +2 -2
  624. package/lib/module/emoji-data/index.js.map +1 -1
  625. package/lib/module/hooks/useStreami18n.js.map +1 -1
  626. package/lib/module/icons/UserAdmin.js +62 -0
  627. package/lib/module/icons/UserAdmin.js.map +1 -0
  628. package/lib/module/icons/index.js +0 -26
  629. package/lib/module/icons/index.js.map +1 -1
  630. package/lib/module/icons/utils/base.js +1 -1
  631. package/lib/module/index.js +6 -6
  632. package/lib/module/mock-builders/api/error.js +1 -1
  633. package/lib/module/mock-builders/api/sendMessage.js.map +1 -1
  634. package/lib/module/mock-builders/generator/attachment.js +1 -3
  635. package/lib/module/mock-builders/generator/attachment.js.map +1 -1
  636. package/lib/module/mock-builders/generator/channel.js +101 -51
  637. package/lib/module/mock-builders/generator/channel.js.map +1 -1
  638. package/lib/module/mock-builders/generator/user.js +32 -33
  639. package/lib/module/mock-builders/generator/user.js.map +1 -1
  640. package/lib/module/mock-builders/mock.js +1 -1
  641. package/lib/module/native.js +1 -1
  642. package/lib/module/native.js.map +1 -1
  643. package/lib/module/styleguideComponents/ArgumentsRenderer.js +7 -7
  644. package/lib/module/styleguideComponents/ArgumentsRenderer.js.map +1 -1
  645. package/lib/module/styleguideComponents/JsDoc.js +4 -4
  646. package/lib/module/styleguideComponents/JsDoc.js.map +1 -1
  647. package/lib/module/styleguideComponents/PathlineRenderer.js +7 -7
  648. package/lib/module/styleguideComponents/PathlineRenderer.js.map +1 -1
  649. package/lib/module/styleguideComponents/PropsRenderer.js +25 -25
  650. package/lib/module/styleguideComponents/PropsRenderer.js.map +1 -1
  651. package/lib/module/styleguideComponents/Wrapper.js +1 -1
  652. package/lib/module/styleguideComponents/Wrapper.js.map +1 -1
  653. package/lib/module/utils/Streami18n.js.map +1 -1
  654. package/lib/module/utils/getResizedImageUrl.js +26 -0
  655. package/lib/module/utils/getResizedImageUrl.js.map +1 -0
  656. package/lib/module/utils/getUrlOfImageAttachment.js +9 -0
  657. package/lib/module/utils/getUrlOfImageAttachment.js.map +1 -0
  658. package/lib/module/utils/utils.js +9 -3
  659. package/lib/module/utils/utils.js.map +1 -1
  660. package/lib/module/version.json +1 -1
  661. package/lib/typescript/components/Attachment/Attachment.d.ts +6 -6
  662. package/lib/typescript/components/Attachment/AttachmentActions.d.ts +5 -5
  663. package/lib/typescript/components/Attachment/Card.d.ts +5 -5
  664. package/lib/typescript/components/Attachment/FileAttachment.d.ts +6 -6
  665. package/lib/typescript/components/Attachment/FileAttachmentGroup.d.ts +4 -4
  666. package/lib/typescript/components/Attachment/Gallery.d.ts +6 -9
  667. package/lib/typescript/components/Attachment/Giphy.d.ts +7 -7
  668. package/lib/typescript/components/Attachment/utils/buildGallery/buildGallery.d.ts +23 -0
  669. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.d.ts +7 -0
  670. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.d.ts +7 -0
  671. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.d.ts +7 -0
  672. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnail.d.ts +10 -0
  673. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnailGrid.d.ts +137 -0
  674. package/lib/typescript/components/Attachment/utils/buildGallery/types.d.ts +23 -0
  675. package/lib/typescript/components/Attachment/utils/getAspectRatio.d.ts +9 -0
  676. package/lib/typescript/components/Attachment/utils/getGalleryImageBorderRadius.d.ts +22 -0
  677. package/lib/typescript/components/AutoCompleteInput/AutoCompleteInput.d.ts +4 -4
  678. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.d.ts +3 -2
  679. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionHeader.d.ts +4 -4
  680. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionItem.d.ts +5 -5
  681. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts +10 -11
  682. package/lib/typescript/components/Avatar/Avatar.d.ts +1 -1
  683. package/lib/typescript/components/Channel/Channel.d.ts +10 -10
  684. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +2 -2
  685. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +3 -3
  686. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +3 -3
  687. package/lib/typescript/components/Channel/hooks/useCreateOwnCapabilitiesContext.d.ts +4 -4
  688. package/lib/typescript/components/Channel/hooks/useCreatePaginatedMessageListContext.d.ts +3 -3
  689. package/lib/typescript/components/Channel/hooks/useCreateThreadContext.d.ts +2 -2
  690. package/lib/typescript/components/Channel/hooks/useCreateTypingContext.d.ts +2 -2
  691. package/lib/typescript/components/ChannelList/ChannelList.d.ts +15 -15
  692. package/lib/typescript/components/ChannelList/ChannelListMessenger.d.ts +4 -4
  693. package/lib/typescript/components/ChannelList/hooks/listeners/useAddedToChannelNotification.d.ts +5 -5
  694. package/lib/typescript/components/ChannelList/hooks/listeners/useChannelDeleted.d.ts +5 -5
  695. package/lib/typescript/components/ChannelList/hooks/listeners/useChannelHidden.d.ts +5 -5
  696. package/lib/typescript/components/ChannelList/hooks/listeners/useChannelTruncated.d.ts +5 -5
  697. package/lib/typescript/components/ChannelList/hooks/listeners/useChannelUpdated.d.ts +5 -5
  698. package/lib/typescript/components/ChannelList/hooks/listeners/useChannelVisible.d.ts +5 -5
  699. package/lib/typescript/components/ChannelList/hooks/listeners/useConnectionRecovered.d.ts +2 -2
  700. package/lib/typescript/components/ChannelList/hooks/listeners/useNewMessage.d.ts +4 -4
  701. package/lib/typescript/components/ChannelList/hooks/listeners/useNewMessageNotification.d.ts +5 -5
  702. package/lib/typescript/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.d.ts +5 -5
  703. package/lib/typescript/components/ChannelList/hooks/listeners/useUserPresence.d.ts +4 -4
  704. package/lib/typescript/components/ChannelList/hooks/useCreateChannelsContext.d.ts +2 -2
  705. package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts +11 -9
  706. package/lib/typescript/components/ChannelList/utils.d.ts +7 -7
  707. package/lib/typescript/components/ChannelPreview/ChannelAvatar.d.ts +3 -3
  708. package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts +7 -7
  709. package/lib/typescript/components/ChannelPreview/ChannelPreviewMessage.d.ts +4 -5
  710. package/lib/typescript/components/ChannelPreview/ChannelPreviewMessenger.d.ts +6 -6
  711. package/lib/typescript/components/ChannelPreview/ChannelPreviewMutedStatus.d.ts +9 -0
  712. package/lib/typescript/components/ChannelPreview/ChannelPreviewStatus.d.ts +3 -3
  713. package/lib/typescript/components/ChannelPreview/ChannelPreviewTitle.d.ts +3 -3
  714. package/lib/typescript/components/ChannelPreview/ChannelPreviewUnreadCount.d.ts +3 -3
  715. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.d.ts +3 -3
  716. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewDisplayName.d.ts +4 -4
  717. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.d.ts +2 -2
  718. package/lib/typescript/components/ChannelPreview/hooks/useLatestMessagePreview.d.ts +5 -5
  719. package/lib/typescript/components/Chat/Chat.d.ts +3 -3
  720. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +2 -2
  721. package/lib/typescript/components/Chat/hooks/useIsOnline.d.ts +2 -2
  722. package/lib/typescript/components/Chat/hooks/useMutedUsers.d.ts +2 -2
  723. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts +12 -10
  724. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryImage.d.ts +1 -1
  725. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +10 -10
  726. package/lib/typescript/components/ImageGallery/components/ImageGalleryHeader.d.ts +10 -10
  727. package/lib/typescript/components/ImageGallery/components/ImageGrid.d.ts +10 -10
  728. package/lib/typescript/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.d.ts +1 -0
  729. package/lib/typescript/components/Message/Message.d.ts +12 -12
  730. package/lib/typescript/components/Message/MessageSimple/MessageAvatar.d.ts +5 -5
  731. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +4 -4
  732. package/lib/typescript/components/Message/MessageSimple/MessageDeleted.d.ts +6 -6
  733. package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts +8 -8
  734. package/lib/typescript/components/Message/MessageSimple/MessagePinnedHeader.d.ts +4 -4
  735. package/lib/typescript/components/Message/MessageSimple/MessageReplies.d.ts +4 -4
  736. package/lib/typescript/components/Message/MessageSimple/MessageRepliesAvatars.d.ts +3 -3
  737. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts +4 -4
  738. package/lib/typescript/components/Message/MessageSimple/MessageStatus.d.ts +4 -4
  739. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts +6 -6
  740. package/lib/typescript/components/Message/MessageSimple/ReactionList.d.ts +4 -4
  741. package/lib/typescript/components/Message/MessageSimple/utils/parseLinks.d.ts +7 -0
  742. package/lib/typescript/components/Message/MessageSimple/utils/parseLinks.test.d.ts +1 -0
  743. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +20 -6
  744. package/lib/typescript/components/Message/MessageSimple/utils/renderText.test.d.ts +1 -0
  745. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +2 -2
  746. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +2 -2
  747. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +5 -5
  748. package/lib/typescript/components/Message/utils/messageActions.d.ts +7 -7
  749. package/lib/typescript/components/Message/utils/removeReservedFields.d.ts +2 -2
  750. package/lib/typescript/components/MessageInput/AttachButton.d.ts +5 -5
  751. package/lib/typescript/components/MessageInput/CommandsButton.d.ts +5 -5
  752. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +4 -4
  753. package/lib/typescript/components/MessageInput/ImageUploadPreview.d.ts +4 -4
  754. package/lib/typescript/components/MessageInput/InputButtons.d.ts +5 -5
  755. package/lib/typescript/components/MessageInput/MessageInput.d.ts +4 -4
  756. package/lib/typescript/components/MessageInput/MoreOptionsButton.d.ts +5 -5
  757. package/lib/typescript/components/MessageInput/SendButton.d.ts +4 -4
  758. package/lib/typescript/components/MessageInput/ShowThreadMessageInChannelButton.d.ts +2 -2
  759. package/lib/typescript/components/MessageInput/hooks/useCooldown.d.ts +2 -2
  760. package/lib/typescript/components/MessageList/InlineLoadingMoreIndicator.d.ts +2 -2
  761. package/lib/typescript/components/MessageList/InlineLoadingMoreRecentIndicator.d.ts +2 -2
  762. package/lib/typescript/components/MessageList/InlineLoadingMoreThreadIndicator.d.ts +2 -2
  763. package/lib/typescript/components/MessageList/MessageList.d.ts +7 -7
  764. package/lib/typescript/components/MessageList/MessageSystem.d.ts +5 -5
  765. package/lib/typescript/components/MessageList/TypingIndicator.d.ts +2 -2
  766. package/lib/typescript/components/MessageList/TypingIndicatorContainer.d.ts +4 -4
  767. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +5 -5
  768. package/lib/typescript/components/MessageList/hooks/useTypingString.d.ts +2 -2
  769. package/lib/typescript/components/MessageList/utils/filterTypingUsers.d.ts +3 -3
  770. package/lib/typescript/components/MessageList/utils/getDateSeparators.d.ts +4 -4
  771. package/lib/typescript/components/MessageList/utils/getGroupStyles.d.ts +5 -5
  772. package/lib/typescript/components/MessageList/utils/getLastReceivedMessage.d.ts +2 -2
  773. package/lib/typescript/components/MessageList/utils/getReadStates.d.ts +8 -5
  774. package/lib/typescript/components/MessageOverlay/MessageActionList.d.ts +4 -4
  775. package/lib/typescript/components/MessageOverlay/MessageActionListItem.d.ts +4 -3
  776. package/lib/typescript/components/MessageOverlay/MessageOverlay.d.ts +4 -4
  777. package/lib/typescript/components/MessageOverlay/OverlayReactionList.d.ts +6 -6
  778. package/lib/typescript/components/MessageOverlay/OverlayReactions.d.ts +3 -1
  779. package/lib/typescript/components/MessageOverlay/OverlayReactionsAvatar.d.ts +7 -0
  780. package/lib/typescript/components/MessageOverlay/hooks/useMessageActionAnimation.d.ts +1 -1
  781. package/lib/typescript/components/Reply/Reply.d.ts +5 -5
  782. package/lib/typescript/components/Thread/Thread.d.ts +8 -8
  783. package/lib/typescript/components/Thread/components/ThreadFooterComponent.d.ts +2 -2
  784. package/lib/typescript/components/index.d.ts +2 -0
  785. package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts +2 -2
  786. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +12 -12
  787. package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts +30 -22
  788. package/lib/typescript/contexts/channelsStateContext/ChannelsStateContext.d.ts +19 -19
  789. package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts +17 -17
  790. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +11 -11
  791. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts +8 -8
  792. package/lib/typescript/contexts/keyboardContext/KeyboardContext.d.ts +2 -2
  793. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +12 -12
  794. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +39 -37
  795. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +3 -3
  796. package/lib/typescript/contexts/messageInputContext/hooks/useMessageDetailsForState.d.ts +3 -3
  797. package/lib/typescript/contexts/messageOverlayContext/MessageOverlayContext.d.ts +27 -25
  798. package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.d.ts +12 -0
  799. package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.test.d.ts +1 -0
  800. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +67 -67
  801. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +8 -8
  802. package/lib/typescript/contexts/overlayContext/OverlayProvider.d.ts +2 -2
  803. package/lib/typescript/contexts/paginatedMessageListContext/PaginatedMessageListContext.d.ts +8 -8
  804. package/lib/typescript/contexts/suggestionsContext/SuggestionsContext.d.ts +21 -21
  805. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +17 -8
  806. package/lib/typescript/contexts/threadContext/ThreadContext.d.ts +10 -10
  807. package/lib/typescript/contexts/translationContext/TranslationContext.d.ts +2 -2
  808. package/lib/typescript/contexts/typingContext/TypingContext.d.ts +8 -8
  809. package/lib/typescript/hooks/useStreami18n.d.ts +1 -1
  810. package/lib/typescript/icons/{Left.d.ts → UserAdmin.d.ts} +1 -1
  811. package/lib/typescript/icons/index.d.ts +0 -2
  812. package/lib/typescript/types/types.d.ts +16 -13
  813. package/lib/typescript/utils/Streami18n.d.ts +6 -6
  814. package/lib/typescript/utils/getResizedImageUrl.d.ts +19 -0
  815. package/lib/typescript/utils/getUrlOfImageAttachment.d.ts +7 -0
  816. package/lib/typescript/utils/utils.d.ts +27 -22
  817. package/package.json +9 -13
  818. package/src/components/Attachment/Attachment.tsx +18 -59
  819. package/src/components/Attachment/AttachmentActions.tsx +17 -57
  820. package/src/components/Attachment/Card.tsx +17 -51
  821. package/src/components/Attachment/FileAttachment.tsx +16 -51
  822. package/src/components/Attachment/FileAttachmentGroup.tsx +16 -57
  823. package/src/components/Attachment/FileIcon.tsx +2 -2
  824. package/src/components/Attachment/Gallery.tsx +177 -242
  825. package/src/components/Attachment/Giphy.tsx +84 -128
  826. package/src/components/Attachment/__tests__/Attachment.test.js +11 -10
  827. package/src/components/Attachment/__tests__/Gallery.test.js +233 -0
  828. package/src/components/Attachment/__tests__/buildGallery.test.js +131 -0
  829. package/src/components/Attachment/utils/buildGallery/buildGallery.ts +77 -0
  830. package/src/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.ts +91 -0
  831. package/src/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.ts +99 -0
  832. package/src/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.ts +66 -0
  833. package/src/components/Attachment/utils/buildGallery/buildThumbnail.ts +48 -0
  834. package/src/components/Attachment/utils/buildGallery/buildThumbnailGrid.ts +188 -0
  835. package/src/components/Attachment/utils/buildGallery/types.ts +27 -0
  836. package/src/components/Attachment/utils/getAspectRatio.ts +21 -0
  837. package/src/components/Attachment/utils/getGalleryImageBorderRadius.ts +71 -0
  838. package/src/components/AttachmentPicker/AttachmentPicker.tsx +4 -2
  839. package/src/components/AutoCompleteInput/AutoCompleteInput.tsx +23 -62
  840. package/src/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.tsx +6 -4
  841. package/src/components/AutoCompleteInput/AutoCompleteSuggestionHeader.tsx +13 -20
  842. package/src/components/AutoCompleteInput/AutoCompleteSuggestionItem.tsx +20 -25
  843. package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +25 -29
  844. package/src/components/AutoCompleteInput/__tests__/AutoCompleteInput.test.js +6 -8
  845. package/src/components/Avatar/Avatar.tsx +8 -11
  846. package/src/components/Avatar/GroupAvatar.tsx +7 -2
  847. package/src/components/Avatar/__tests__/Avatar.test.js +2 -2
  848. package/src/components/Channel/Channel.tsx +237 -313
  849. package/src/components/Channel/__tests__/Channel.test.js +10 -10
  850. package/src/components/Channel/__tests__/ownCapabilities.test.js +8 -8
  851. package/src/components/Channel/hooks/useCreateChannelContext.ts +4 -19
  852. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +52 -68
  853. package/src/components/Channel/hooks/useCreateMessagesContext.ts +4 -19
  854. package/src/components/Channel/hooks/useCreateOwnCapabilitiesContext.ts +5 -19
  855. package/src/components/Channel/hooks/useCreatePaginatedMessageListContext.ts +16 -32
  856. package/src/components/Channel/hooks/useCreateThreadContext.ts +4 -19
  857. package/src/components/Channel/hooks/useCreateTypingContext.ts +4 -19
  858. package/src/components/ChannelList/ChannelList.tsx +36 -58
  859. package/src/components/ChannelList/ChannelListFooterLoadingIndicator.tsx +1 -2
  860. package/src/components/ChannelList/ChannelListHeaderErrorIndicator.tsx +3 -7
  861. package/src/components/ChannelList/ChannelListHeaderNetworkDownIndicator.tsx +2 -2
  862. package/src/components/ChannelList/ChannelListMessenger.tsx +22 -74
  863. package/src/components/ChannelList/__tests__/ChannelList.test.js +73 -13
  864. package/src/components/ChannelList/__tests__/ChannelListMessenger.test.js +11 -12
  865. package/src/components/ChannelList/hooks/listeners/useAddedToChannelNotification.ts +17 -39
  866. package/src/components/ChannelList/hooks/listeners/useChannelDeleted.ts +15 -37
  867. package/src/components/ChannelList/hooks/listeners/useChannelHidden.ts +15 -37
  868. package/src/components/ChannelList/hooks/listeners/useChannelTruncated.ts +17 -39
  869. package/src/components/ChannelList/hooks/listeners/useChannelUpdated.ts +15 -37
  870. package/src/components/ChannelList/hooks/listeners/useChannelVisible.ts +17 -39
  871. package/src/components/ChannelList/hooks/listeners/useConnectionRecovered.ts +3 -18
  872. package/src/components/ChannelList/hooks/listeners/useNewMessage.ts +13 -36
  873. package/src/components/ChannelList/hooks/listeners/useNewMessageNotification.ts +17 -39
  874. package/src/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.ts +15 -37
  875. package/src/components/ChannelList/hooks/listeners/useUserPresence.ts +11 -33
  876. package/src/components/ChannelList/hooks/useCreateChannelsContext.ts +5 -21
  877. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +89 -77
  878. package/src/components/ChannelList/utils.ts +9 -42
  879. package/src/components/ChannelPreview/ChannelAvatar.tsx +6 -29
  880. package/src/components/ChannelPreview/ChannelPreview.tsx +21 -54
  881. package/src/components/ChannelPreview/ChannelPreviewMessage.tsx +13 -23
  882. package/src/components/ChannelPreview/ChannelPreviewMessenger.tsx +35 -55
  883. package/src/components/ChannelPreview/ChannelPreviewMutedStatus.tsx +50 -0
  884. package/src/components/ChannelPreview/ChannelPreviewStatus.tsx +10 -30
  885. package/src/components/ChannelPreview/ChannelPreviewTitle.tsx +7 -28
  886. package/src/components/ChannelPreview/ChannelPreviewUnreadCount.tsx +7 -27
  887. package/src/components/ChannelPreview/__tests__/ChannelPreview.test.js +8 -9
  888. package/src/components/ChannelPreview/__tests__/ChannelPreviewMessenger.test.js +8 -9
  889. package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.ts +9 -30
  890. package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayName.ts +8 -30
  891. package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.ts +9 -30
  892. package/src/components/ChannelPreview/hooks/useLatestMessagePreview.ts +29 -80
  893. package/src/components/Chat/Chat.tsx +17 -45
  894. package/src/components/Chat/__tests__/Chat.test.js +5 -5
  895. package/src/components/Chat/hooks/useCreateChatContext.ts +4 -19
  896. package/src/components/Chat/hooks/useIsOnline.ts +8 -22
  897. package/src/components/Chat/hooks/useMutedUsers.ts +5 -20
  898. package/src/components/ImageGallery/ImageGallery.tsx +109 -86
  899. package/src/components/ImageGallery/components/AnimatedGalleryImage.tsx +1 -2
  900. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +20 -15
  901. package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +42 -21
  902. package/src/components/ImageGallery/components/ImageGrid.tsx +47 -33
  903. package/src/components/ImageGallery/components/ImageGridHandle.tsx +1 -0
  904. package/src/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.tsx +31 -0
  905. package/src/components/Indicators/LoadingIndicator.tsx +1 -2
  906. package/src/components/Message/Message.tsx +59 -112
  907. package/src/components/Message/MessageSimple/MessageAvatar.tsx +14 -56
  908. package/src/components/Message/MessageSimple/MessageContent.tsx +20 -64
  909. package/src/components/Message/MessageSimple/MessageDeleted.tsx +19 -61
  910. package/src/components/Message/MessageSimple/MessageFooter.tsx +28 -71
  911. package/src/components/Message/MessageSimple/MessagePinnedHeader.tsx +15 -56
  912. package/src/components/Message/MessageSimple/MessageReplies.tsx +15 -56
  913. package/src/components/Message/MessageSimple/MessageRepliesAvatars.tsx +7 -29
  914. package/src/components/Message/MessageSimple/MessageSimple.tsx +16 -57
  915. package/src/components/Message/MessageSimple/MessageStatus.tsx +21 -58
  916. package/src/components/Message/MessageSimple/MessageTextContainer.tsx +19 -66
  917. package/src/components/Message/MessageSimple/ReactionList.tsx +47 -88
  918. package/src/components/Message/MessageSimple/__tests__/Message.test.js +9 -9
  919. package/src/components/Message/MessageSimple/__tests__/MessageAvatar.test.js +2 -2
  920. package/src/components/Message/MessageSimple/__tests__/MessageContent.test.js +9 -26
  921. package/src/components/Message/MessageSimple/__tests__/MessagePinnedHeader.test.js +2 -2
  922. package/src/components/Message/MessageSimple/__tests__/MessageReplies.test.js +2 -2
  923. package/src/components/Message/MessageSimple/__tests__/MessageStatus.test.js +4 -5
  924. package/src/components/Message/MessageSimple/__tests__/MessageTextContainer.test.js +2 -2
  925. package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessageAvatar.test.js.snap +1 -1
  926. package/src/components/Message/MessageSimple/utils/parseLinks.test.ts +100 -0
  927. package/src/components/Message/MessageSimple/utils/parseLinks.ts +95 -0
  928. package/src/components/Message/MessageSimple/utils/renderText.test.tsx +70 -0
  929. package/src/components/Message/MessageSimple/utils/renderText.tsx +97 -94
  930. package/src/components/Message/hooks/useCreateMessageContext.ts +5 -21
  931. package/src/components/Message/hooks/useMessageActionHandlers.ts +21 -27
  932. package/src/components/Message/hooks/useMessageActions.tsx +21 -31
  933. package/src/components/Message/utils/messageActions.ts +9 -36
  934. package/src/components/Message/utils/removeReservedFields.ts +3 -18
  935. package/src/components/MessageInput/AttachButton.tsx +14 -56
  936. package/src/components/MessageInput/CommandsButton.tsx +16 -58
  937. package/src/components/MessageInput/CooldownTimer.tsx +1 -0
  938. package/src/components/MessageInput/FileUploadPreview.tsx +16 -58
  939. package/src/components/MessageInput/ImageUploadPreview.tsx +13 -56
  940. package/src/components/MessageInput/InputButtons.tsx +14 -55
  941. package/src/components/MessageInput/MessageInput.tsx +30 -72
  942. package/src/components/MessageInput/MoreOptionsButton.tsx +14 -56
  943. package/src/components/MessageInput/SendButton.tsx +13 -54
  944. package/src/components/MessageInput/SendMessageDisallowedIndicator.tsx +1 -1
  945. package/src/components/MessageInput/ShowThreadMessageInChannelButton.tsx +5 -20
  946. package/src/components/MessageInput/__tests__/AttachButton.test.js +2 -2
  947. package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +15 -17
  948. package/src/components/MessageInput/__tests__/ImageUploadPreview.test.js +3 -3
  949. package/src/components/MessageInput/__tests__/MessageInput.test.js +8 -8
  950. package/src/components/MessageInput/__tests__/SendButton.test.js +2 -2
  951. package/src/components/MessageInput/__tests__/UploadProgressIndicator.test.js +2 -2
  952. package/src/components/MessageInput/__tests__/__snapshots__/FileUploadPreview.test.js.snap +1604 -4172
  953. package/src/components/MessageInput/__tests__/__snapshots__/MessageInput.test.js.snap +1 -643
  954. package/src/components/MessageInput/hooks/useCooldown.ts +7 -19
  955. package/src/components/MessageInput/hooks/useCountdown.ts +1 -0
  956. package/src/components/MessageList/InlineLoadingMoreIndicator.tsx +3 -18
  957. package/src/components/MessageList/InlineLoadingMoreRecentIndicator.tsx +3 -18
  958. package/src/components/MessageList/InlineLoadingMoreThreadIndicator.tsx +3 -18
  959. package/src/components/MessageList/MessageList.tsx +37 -79
  960. package/src/components/MessageList/MessageSystem.tsx +7 -28
  961. package/src/components/MessageList/TypingIndicator.tsx +4 -20
  962. package/src/components/MessageList/TypingIndicatorContainer.tsx +14 -47
  963. package/src/components/MessageList/__tests__/MessageList.test.js +17 -17
  964. package/src/components/MessageList/__tests__/MessageSystem.test.js +3 -3
  965. package/src/components/MessageList/__tests__/ScrollToBottomButton.test.js +3 -3
  966. package/src/components/MessageList/__tests__/TypingIndicator.test.js +5 -6
  967. package/src/components/MessageList/__tests__/__snapshots__/TypingIndicator.test.js.snap +1 -1
  968. package/src/components/MessageList/hooks/useMessageList.ts +24 -59
  969. package/src/components/MessageList/hooks/useTypingString.ts +6 -22
  970. package/src/components/MessageList/utils/filterTypingUsers.ts +7 -28
  971. package/src/components/MessageList/utils/getDateSeparators.ts +6 -27
  972. package/src/components/MessageList/utils/getGroupStyles.ts +7 -29
  973. package/src/components/MessageList/utils/getLastReceivedMessage.ts +9 -19
  974. package/src/components/MessageList/utils/getReadStates.ts +5 -20
  975. package/src/components/MessageOverlay/MessageActionList.tsx +17 -58
  976. package/src/components/MessageOverlay/MessageActionListItem.tsx +23 -10
  977. package/src/components/MessageOverlay/MessageOverlay.tsx +56 -95
  978. package/src/components/MessageOverlay/OverlayBackdrop.tsx +1 -0
  979. package/src/components/MessageOverlay/OverlayReactionList.tsx +23 -78
  980. package/src/components/MessageOverlay/OverlayReactions.tsx +12 -8
  981. package/src/components/MessageOverlay/OverlayReactionsAvatar.tsx +27 -0
  982. package/src/components/MessageOverlay/hooks/useMessageActionAnimation.tsx +1 -0
  983. package/src/components/Reply/Reply.tsx +44 -81
  984. package/src/components/Thread/Thread.tsx +24 -58
  985. package/src/components/Thread/__tests__/Thread.test.js +12 -14
  986. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +13 -13
  987. package/src/components/Thread/components/ThreadFooterComponent.tsx +12 -48
  988. package/src/components/docs/data.js +38 -37
  989. package/src/components/index.ts +2 -0
  990. package/src/contexts/activeChannelsRefContext/ActiveChannelsRefContext.tsx +1 -2
  991. package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +10 -9
  992. package/src/contexts/channelContext/ChannelContext.tsx +16 -50
  993. package/src/contexts/channelsContext/ChannelsContext.tsx +37 -63
  994. package/src/contexts/channelsStateContext/ChannelsStateContext.tsx +38 -116
  995. package/src/contexts/channelsStateContext/useChannelState.ts +28 -60
  996. package/src/contexts/chatContext/ChatContext.tsx +15 -51
  997. package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +13 -56
  998. package/src/contexts/keyboardContext/KeyboardContext.tsx +13 -8
  999. package/src/contexts/messageContext/MessageContext.tsx +16 -50
  1000. package/src/contexts/messageInputContext/MessageInputContext.tsx +88 -134
  1001. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +6 -23
  1002. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +15 -34
  1003. package/src/contexts/messageOverlayContext/MessageOverlayContext.tsx +34 -90
  1004. package/src/contexts/messageOverlayContext/hooks/useResettableState.test.tsx +46 -0
  1005. package/src/contexts/messageOverlayContext/hooks/useResettableState.ts +22 -0
  1006. package/src/contexts/messagesContext/MessagesContext.tsx +73 -112
  1007. package/src/contexts/overlayContext/OverlayContext.tsx +28 -34
  1008. package/src/contexts/overlayContext/OverlayProvider.tsx +36 -46
  1009. package/src/contexts/paginatedMessageListContext/PaginatedMessageListContext.tsx +14 -55
  1010. package/src/contexts/suggestionsContext/SuggestionsContext.tsx +42 -42
  1011. package/src/contexts/suggestionsContext/__tests__/Suggestions.test.js +1 -0
  1012. package/src/contexts/themeContext/ThemeContext.tsx +1 -0
  1013. package/src/contexts/themeContext/utils/theme.ts +36 -19
  1014. package/src/contexts/threadContext/ThreadContext.tsx +14 -48
  1015. package/src/contexts/translationContext/TranslationContext.tsx +14 -9
  1016. package/src/contexts/typingContext/TypingContext.tsx +12 -46
  1017. package/src/contexts/utils/getDisplayName.ts +1 -0
  1018. package/src/emoji-data/index.js +1 -1
  1019. package/src/hooks/useStreami18n.ts +1 -1
  1020. package/src/icons/UserAdmin.tsx +23 -0
  1021. package/src/icons/index.ts +0 -2
  1022. package/src/mock-builders/api/sendMessage.js +1 -0
  1023. package/src/mock-builders/generator/attachment.js +0 -2
  1024. package/src/mock-builders/generator/channel.js +101 -64
  1025. package/src/mock-builders/generator/user.js +33 -26
  1026. package/src/native.ts +1 -0
  1027. package/src/styleguideComponents/ArgumentsRenderer.tsx +2 -1
  1028. package/src/styleguideComponents/JsDoc.tsx +3 -1
  1029. package/src/styleguideComponents/PathlineRenderer.tsx +2 -1
  1030. package/src/styleguideComponents/PropsRenderer.tsx +7 -4
  1031. package/src/styleguideComponents/Wrapper.tsx +1 -0
  1032. package/src/types/types.ts +16 -18
  1033. package/src/utils/Streami18n.ts +6 -6
  1034. package/src/utils/__tests__/Streami18n.test.js +1 -2
  1035. package/src/utils/getResizedImageUrl.ts +43 -0
  1036. package/src/utils/getUrlOfImageAttachment.ts +10 -0
  1037. package/src/utils/utils.ts +72 -132
  1038. package/src/version.json +1 -1
  1039. package/lib/commonjs/icons/Left.js +0 -38
  1040. package/lib/commonjs/icons/Left.js.map +0 -1
  1041. package/lib/commonjs/icons/Right.js +0 -38
  1042. package/lib/commonjs/icons/Right.js.map +0 -1
  1043. package/lib/module/icons/Left.js +0 -38
  1044. package/lib/module/icons/Left.js.map +0 -1
  1045. package/lib/module/icons/Right.js +0 -38
  1046. package/lib/module/icons/Right.js.map +0 -1
  1047. package/lib/typescript/icons/Right.d.ts +0 -3
  1048. package/src/icons/Left.tsx +0 -12
  1049. package/src/icons/Right.tsx +0 -12
@@ -43,10 +43,10 @@ var _OverlayContext = require("../../contexts/overlayContext/OverlayContext");
43
43
 
44
44
  var _PaginatedMessageListContext = require("../../contexts/paginatedMessageListContext/PaginatedMessageListContext");
45
45
 
46
- var _ThreadContext = require("../../contexts/threadContext/ThreadContext");
47
-
48
46
  var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
49
47
 
48
+ var _ThreadContext = require("../../contexts/threadContext/ThreadContext");
49
+
50
50
  var _TranslationContext = require("../../contexts/translationContext/TranslationContext");
51
51
 
52
52
  var _this = this,
@@ -360,7 +360,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
360
360
  __self: _this,
361
361
  __source: {
362
362
  fileName: _jsxFileName,
363
- lineNumber: 569,
363
+ lineNumber: 539,
364
364
  columnNumber: 11
365
365
  }
366
366
  }, _react["default"].createElement(MessageSystem, {
@@ -369,14 +369,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
369
369
  __self: _this,
370
370
  __source: {
371
371
  fileName: _jsxFileName,
372
- lineNumber: 570,
372
+ lineNumber: 540,
373
373
  columnNumber: 13
374
374
  }
375
375
  })), insertInlineUnreadIndicator && _react["default"].createElement(InlineUnreadIndicator, {
376
376
  __self: _this,
377
377
  __source: {
378
378
  fileName: _jsxFileName,
379
- lineNumber: 572,
379
+ lineNumber: 542,
380
380
  columnNumber: 43
381
381
  }
382
382
  }));
@@ -388,7 +388,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
388
388
  __self: _this,
389
389
  __source: {
390
390
  fileName: _jsxFileName,
391
- lineNumber: 580,
391
+ lineNumber: 550,
392
392
  columnNumber: 9
393
393
  }
394
394
  }, _react["default"].createElement(_reactNative.View, {
@@ -396,7 +396,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
396
396
  __self: _this,
397
397
  __source: {
398
398
  fileName: _jsxFileName,
399
- lineNumber: 581,
399
+ lineNumber: 551,
400
400
  columnNumber: 11
401
401
  }
402
402
  }, _react["default"].createElement(Message, {
@@ -412,7 +412,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
412
412
  __self: _this,
413
413
  __source: {
414
414
  fileName: _jsxFileName,
415
- lineNumber: 582,
415
+ lineNumber: 552,
416
416
  columnNumber: 13
417
417
  }
418
418
  }))), (0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(message) && message.dateSeparator && _react["default"].createElement(InlineDateSeparator, {
@@ -420,14 +420,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
420
420
  __self: _this,
421
421
  __source: {
422
422
  fileName: _jsxFileName,
423
- lineNumber: 598,
423
+ lineNumber: 568,
424
424
  columnNumber: 11
425
425
  }
426
426
  }), insertInlineUnreadIndicator && _react["default"].createElement(InlineUnreadIndicator, {
427
427
  __self: _this,
428
428
  __source: {
429
429
  fileName: _jsxFileName,
430
- lineNumber: 601,
430
+ lineNumber: 571,
431
431
  columnNumber: 41
432
432
  }
433
433
  })) : _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_reactNative.View, {
@@ -435,7 +435,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
435
435
  __self: _this,
436
436
  __source: {
437
437
  fileName: _jsxFileName,
438
- lineNumber: 605,
438
+ lineNumber: 575,
439
439
  columnNumber: 9
440
440
  }
441
441
  }, _react["default"].createElement(Message, {
@@ -451,7 +451,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
451
451
  __self: _this,
452
452
  __source: {
453
453
  fileName: _jsxFileName,
454
- lineNumber: 606,
454
+ lineNumber: 576,
455
455
  columnNumber: 11
456
456
  }
457
457
  })), (0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(message) && message.dateSeparator && _react["default"].createElement(InlineDateSeparator, {
@@ -459,14 +459,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
459
459
  __self: _this,
460
460
  __source: {
461
461
  fileName: _jsxFileName,
462
- lineNumber: 625,
462
+ lineNumber: 595,
463
463
  columnNumber: 11
464
464
  }
465
465
  }), insertInlineUnreadIndicator && _react["default"].createElement(InlineUnreadIndicator, {
466
466
  __self: _this,
467
467
  __source: {
468
468
  fileName: _jsxFileName,
469
- lineNumber: 628,
469
+ lineNumber: 598,
470
470
  columnNumber: 41
471
471
  }
472
472
  }));
@@ -696,7 +696,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
696
696
  __self: _this,
697
697
  __source: {
698
698
  fileName: _jsxFileName,
699
- lineNumber: 904,
699
+ lineNumber: 874,
700
700
  columnNumber: 5
701
701
  }
702
702
  }, _react["default"].createElement(EmptyStateIndicator, {
@@ -704,7 +704,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
704
704
  __self: _this,
705
705
  __source: {
706
706
  fileName: _jsxFileName,
707
- lineNumber: 905,
707
+ lineNumber: 875,
708
708
  columnNumber: 7
709
709
  }
710
710
  }));
@@ -718,7 +718,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
718
718
  __self: _this,
719
719
  __source: {
720
720
  fileName: _jsxFileName,
721
- lineNumber: 913,
721
+ lineNumber: 883,
722
722
  columnNumber: 7
723
723
  }
724
724
  }, _react["default"].createElement(LoadingIndicator, {
@@ -726,7 +726,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
726
726
  __self: _this,
727
727
  __source: {
728
728
  fileName: _jsxFileName,
729
- lineNumber: 914,
729
+ lineNumber: 884,
730
730
  columnNumber: 9
731
731
  }
732
732
  }));
@@ -740,7 +740,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
740
740
  __self: _this,
741
741
  __source: {
742
742
  fileName: _jsxFileName,
743
- lineNumber: 920,
743
+ lineNumber: 890,
744
744
  columnNumber: 5
745
745
  }
746
746
  }, _react["default"].createElement(FlatList, (0, _extends2["default"])({
@@ -772,7 +772,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
772
772
  __self: _this,
773
773
  __source: {
774
774
  fileName: _jsxFileName,
775
- lineNumber: 924,
775
+ lineNumber: 894,
776
776
  columnNumber: 7
777
777
  }
778
778
  })), !loading && _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_reactNative.View, {
@@ -780,7 +780,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
780
780
  __self: _this,
781
781
  __source: {
782
782
  fileName: _jsxFileName,
783
- lineNumber: 954,
783
+ lineNumber: 924,
784
784
  columnNumber: 11
785
785
  }
786
786
  }, stickyHeaderDateToRender && (StickyHeader ? _react["default"].createElement(StickyHeader, {
@@ -788,7 +788,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
788
788
  __self: _this,
789
789
  __source: {
790
790
  fileName: _jsxFileName,
791
- lineNumber: 957,
791
+ lineNumber: 927,
792
792
  columnNumber: 17
793
793
  }
794
794
  }) : messageListLengthAfterUpdate ? _react["default"].createElement(DateHeader, {
@@ -796,21 +796,21 @@ var MessageListWithContext = function MessageListWithContext(props) {
796
796
  __self: _this,
797
797
  __source: {
798
798
  fileName: _jsxFileName,
799
- lineNumber: 959,
799
+ lineNumber: 929,
800
800
  columnNumber: 17
801
801
  }
802
802
  }) : null)), !disableTypingIndicator && TypingIndicator && _react["default"].createElement(TypingIndicatorContainer, {
803
803
  __self: _this,
804
804
  __source: {
805
805
  fileName: _jsxFileName,
806
- lineNumber: 963,
806
+ lineNumber: 933,
807
807
  columnNumber: 13
808
808
  }
809
809
  }, _react["default"].createElement(TypingIndicator, {
810
810
  __self: _this,
811
811
  __source: {
812
812
  fileName: _jsxFileName,
813
- lineNumber: 964,
813
+ lineNumber: 934,
814
814
  columnNumber: 15
815
815
  }
816
816
  })), _react["default"].createElement(ScrollToBottomButton, {
@@ -820,14 +820,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
820
820
  __self: _this,
821
821
  __source: {
822
822
  fileName: _jsxFileName,
823
- lineNumber: 967,
823
+ lineNumber: 937,
824
824
  columnNumber: 11
825
825
  }
826
826
  })), _react["default"].createElement(NetworkDownIndicator, {
827
827
  __self: _this,
828
828
  __source: {
829
829
  fileName: _jsxFileName,
830
- lineNumber: 974,
830
+ lineNumber: 944,
831
831
  columnNumber: 7
832
832
  }
833
833
  }));
@@ -944,7 +944,7 @@ var MessageList = function MessageList(props) {
944
944
  __self: _this,
945
945
  __source: {
946
946
  fileName: _jsxFileName,
947
- lineNumber: 1044,
947
+ lineNumber: 1002,
948
948
  columnNumber: 5
949
949
  }
950
950
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["MessageList.tsx"],"names":["styles","StyleSheet","create","container","alignItems","flex","width","contentContainer","flexGrow","paddingBottom","invert","transform","scaleY","listContainer","messagePadding","paddingHorizontal","stickyHeader","position","top","keyExtractor","item","id","created_at","toISOString","Date","now","toString","flatListViewabilityConfig","viewAreaCoveragePercentThreshold","MessageListWithContext","props","LoadingMoreIndicator","threadList","InlineLoadingMoreThreadIndicator","InlineLoadingMoreIndicator","additionalFlatListProps","channel","client","closePicker","DateHeader","deletedMessagesVisibilityType","disabled","disableTypingIndicator","EmptyStateIndicator","FlatList","FooterComponent","HeaderComponent","InlineLoadingMoreRecentIndicator","hideStickyDateHeader","initialScrollToFirstUnreadMessage","InlineDateSeparator","InlineUnreadIndicator","inverted","isListActive","legacyImageViewerSwipeBehaviour","loadChannelAtMessage","loading","LoadingIndicator","loadMore","loadMoreRecent","loadMoreThread","markRead","Message","MessageSystem","myMessageTheme","NetworkDownIndicator","noGroupByUser","onListScroll","onThreadSelect","overlay","reloadChannel","ScrollToBottomButton","scrollToFirstUnreadThreshold","selectedPicker","setFlatListRef","setImages","setSelectedPicker","setTargetedMessage","StickyHeader","targetedMessage","tDateTimeParser","thread","TypingIndicator","TypingIndicatorContainer","theme","white_snow","colors","messageList","modifiedTheme","style","messageListLengthBeforeUpdate","messageListLengthAfterUpdate","length","topMessageBeforeUpdate","topMessageAfterUpdate","autoscrollToTop","setAutoscrollToTop","onStartReachedTracker","onEndReachedTracker","onStartReachedInPromise","onEndReachedInPromise","flatListRef","initialScrollSet","channelResyncScrollSet","hasMoved","setHasMoved","lastReceivedId","setLastReceivedId","scrollToBottomButtonVisible","setScrollToBottomButtonVisible","stickyHeaderDate","setStickyHeaderDate","stickyHeaderDateRef","getLastReadSafely","initialized","lastRead","undefined","channelLastRead","isUnreadMessage","message","setInitialScrollIfNeeded","current","scrollToEnd","setTimeout","updateStickyHeaderDateIfNeeded","viewableItems","lastItem","pop","isMessageTypeDeleted","type","toDateString","onViewableItemsChanged","resetPaginationTrackers","shouldMarkReadOnFirstLoad","countUnread","lastReceivedMessage","hasNewMessage","isMyMessage","user","userID","scrollToBottomIfNeeded","scrollToOffset","offset","state","isUpToDate","maybeCallOnStartReached","renderItem","index","lastMessage","showUnreadUnderlay","insertInlineUnreadIndicator","wrapMessageInTheme","goToMessage","groupStyles","dateSeparator","quoted_message_id","limit","callback","Promise","resolve","onError","then","maybeCallOnEndReached","handleScroll","event","nativeEvent","contentOffset","y","visibleLength","layoutMeasurement","height","contentLength","contentSize","isScrollAtStart","isScrollAtEnd","isScrollAtBottom","showScrollToBottomButton","shouldMarkRead","goToNewMessages","messageId","indexOfParentInMessageList","findIndex","scrollToIndex","viewPosition","_","messagesWithImages","filter","attachments","some","attachment","title_link","og_scrape_url","image_url","thumb_url","imageString","map","join","numberOfMessagesWithImages","threadExists","stickyHeaderFormatDate","getFullYear","tStickyHeaderDate","stickyHeaderDateToRender","format","dismissImagePicker","onScrollBeginDrag","onScrollEndDrag","refCallback","ref","renderListEmptyComponent","backgroundColor","autoscrollToTopThreshold","minIndexForVisible","MessageList","enableMessageGroupingByUser","error","isChannelActive","t"],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n FlatListProps,\n FlatList as FlatListType,\n ScrollViewProps,\n StyleSheet,\n View,\n ViewToken,\n} from 'react-native';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n useMessageList,\n} from './hooks/useMessageList';\nimport { InlineLoadingMoreIndicator } from './InlineLoadingMoreIndicator';\nimport { InlineLoadingMoreRecentIndicator } from './InlineLoadingMoreRecentIndicator';\nimport { InlineLoadingMoreThreadIndicator } from './InlineLoadingMoreThreadIndicator';\nimport { getLastReceivedMessage } from './utils/getLastReceivedMessage';\n\nimport {\n AttachmentPickerContextValue,\n useAttachmentPickerContext,\n} from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport {\n PaginatedMessageListContextValue,\n usePaginatedMessageListContext,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport { mergeThemes, ThemeProvider, useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport type { Channel as StreamChannel } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n flex: 1,\n width: '100%',\n },\n contentContainer: {\n flexGrow: 1,\n /**\n * paddingBottom is set to 4 to account for the default date\n * header and inline indicator alignment. The top margin is 8\n * on the header but 4 on the inline date, this adjusts the spacing\n * to allow the \"first\" inline date to align with the date header.\n */\n paddingBottom: 4,\n },\n flex: { flex: 1 },\n invert: { transform: [{ scaleY: -1 }] },\n listContainer: {\n flex: 1,\n width: '100%',\n },\n messagePadding: {\n paddingHorizontal: 8,\n },\n stickyHeader: {\n position: 'absolute',\n top: 0,\n },\n});\n\nconst keyExtractor = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n item: MessageType<At, Ch, Co, Ev, Me, Re, Us>,\n) =>\n item.id ||\n (item.created_at\n ? typeof item.created_at === 'string'\n ? item.created_at\n : item.created_at.toISOString()\n : Date.now().toString());\n\nconst flatListViewabilityConfig = {\n viewAreaCoveragePercentThreshold: 1,\n};\n\ntype MessageListPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<AttachmentPickerContextValue, 'closePicker' | 'selectedPicker' | 'setSelectedPicker'> &\n Pick<\n ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'channel'\n | 'disabled'\n | 'EmptyStateIndicator'\n | 'hideStickyDateHeader'\n | 'loadChannelAtMessage'\n | 'loading'\n | 'LoadingIndicator'\n | 'markRead'\n | 'NetworkDownIndicator'\n | 'reloadChannel'\n | 'scrollToFirstUnreadThreshold'\n | 'setTargetedMessage'\n | 'StickyHeader'\n | 'targetedMessage'\n > &\n Pick<ChatContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'client'> &\n Pick<ImageGalleryContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'setImages'> &\n Pick<\n PaginatedMessageListContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'loadMore' | 'loadMoreRecent'\n > &\n Pick<OverlayContextValue, 'overlay'> &\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'deletedMessagesVisibilityType'\n | 'DateHeader'\n | 'disableTypingIndicator'\n | 'FlatList'\n | 'initialScrollToFirstUnreadMessage'\n | 'InlineDateSeparator'\n | 'InlineUnreadIndicator'\n | 'legacyImageViewerSwipeBehaviour'\n | 'Message'\n | 'ScrollToBottomButton'\n | 'MessageSystem'\n | 'myMessageTheme'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n > &\n Pick<ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'loadMoreThread' | 'thread'> &\n Pick<TranslationContextValue, 't' | 'tDateTimeParser'> & {\n /**\n * Besides existing (default) UX behavior of underlying FlatList of MessageList component, if you want\n * to attach some additional props to underlying FlatList, you can add it to following prop.\n *\n * You can find list of all the available FlatList props here - https://facebook.github.io/react-native/docs/flatlist#props\n *\n * **NOTE** Don't use `additionalFlatListProps` to get access to ref of flatlist. Use `setFlatListRef` instead.\n *\n * e.g.\n * ```js\n * <MessageList\n * additionalFlatListProps={{ bounces: true, keyboardDismissMode: true }} />\n * ```\n */\n additionalFlatListProps?: Partial<FlatListProps<MessageType<At, Ch, Co, Ev, Me, Re, Us>>>;\n /**\n * UI component for footer of message list. By default message list will use `InlineLoadingMoreIndicator`\n * as FooterComponent. If you want to implement your own inline loading indicator, you can access `loadingMore`\n * from context.\n *\n * This is a [ListHeaderComponent](https://facebook.github.io/react-native/docs/flatlist#listheadercomponent) of FlatList\n * used in MessageList. Should be used for header by default if inverted is true or defaulted\n */\n FooterComponent?: React.ComponentType;\n /**\n * UI component for header of message list. By default message list will use `InlineLoadingMoreRecentIndicator`\n * as HeaderComponent. If you want to implement your own inline loading indicator, you can access `loadingMoreRecent`\n * from context.\n *\n * This is a [ListFooterComponent](https://facebook.github.io/react-native/docs/flatlist#listheadercomponent) of FlatList\n * used in MessageList. Should be used for header if inverted is false\n */\n HeaderComponent?: React.ComponentType;\n /** Whether or not the FlatList is inverted. Defaults to true */\n inverted?: boolean;\n isListActive?: boolean;\n /** Turn off grouping of messages by user */\n noGroupByUser?: boolean;\n onListScroll?: ScrollViewProps['onScroll'];\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>['thread']) => void;\n /**\n * Use `setFlatListRef` to get access to ref to inner FlatList.\n *\n * e.g.\n * ```js\n * <MessageList\n * setFlatListRef={(ref) => {\n * // Use ref for your own good\n * }}\n * ```\n */\n setFlatListRef?: (ref: FlatListType<MessageType<At, Ch, Co, Ev, Me, Re, Us>> | null) => void;\n /**\n * Boolean whether or not the Messages in the MessageList are part of a Thread\n **/\n threadList?: boolean;\n };\n\n/**\n * The message list component renders a list of messages. It consumes the following contexts:\n *\n * [ChannelContext](https://getstream.github.io/stream-chat-react-native/v3/#channelcontext)\n * [ChatContext](https://getstream.github.io/stream-chat-react-native/v3/#chatcontext)\n * [MessagesContext](https://getstream.github.io/stream-chat-react-native/v3/#messagescontext)\n * [ThreadContext](https://getstream.github.io/stream-chat-react-native/v3/#threadcontext)\n * [TranslationContext](https://getstream.github.io/stream-chat-react-native/v3/#translationcontext)\n */\nconst MessageListWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: MessageListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const LoadingMoreIndicator = props.threadList\n ? InlineLoadingMoreThreadIndicator\n : InlineLoadingMoreIndicator;\n const {\n additionalFlatListProps,\n channel,\n client,\n closePicker,\n DateHeader,\n deletedMessagesVisibilityType,\n disabled,\n disableTypingIndicator,\n EmptyStateIndicator,\n FlatList,\n FooterComponent = LoadingMoreIndicator,\n HeaderComponent = InlineLoadingMoreRecentIndicator,\n hideStickyDateHeader,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n inverted = true,\n isListActive = false,\n legacyImageViewerSwipeBehaviour,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n loadMore,\n loadMoreRecent,\n loadMoreThread,\n markRead,\n Message,\n MessageSystem,\n myMessageTheme,\n NetworkDownIndicator,\n noGroupByUser,\n onListScroll,\n onThreadSelect,\n overlay,\n reloadChannel,\n ScrollToBottomButton,\n scrollToFirstUnreadThreshold,\n selectedPicker,\n setFlatListRef,\n setImages,\n setSelectedPicker,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n tDateTimeParser,\n thread,\n threadList = false,\n TypingIndicator,\n TypingIndicatorContainer,\n } = props;\n\n const { theme } = useTheme();\n\n const {\n colors: { white_snow },\n messageList: { container, contentContainer, listContainer },\n } = theme;\n\n const modifiedTheme = useMemo(\n () => mergeThemes({ style: myMessageTheme, theme }),\n [myMessageTheme, theme],\n );\n\n const messageList = useMessageList<At, Ch, Co, Ev, Me, Re, Us>({\n deletedMessagesVisibilityType,\n inverted,\n noGroupByUser,\n threadList,\n });\n const messageListLengthBeforeUpdate = useRef(0);\n const messageListLengthAfterUpdate = messageList.length;\n\n /**\n * We need topMessage and channelLastRead values to set the initial scroll position.\n * So these values only get used if `initialScrollToFirstUnreadMessage` prop is true.\n */\n const topMessageBeforeUpdate = useRef<MessageType<At, Ch, Co, Ev, Me, Re, Us>>();\n const topMessageAfterUpdate = messageList[messageList.length - 1];\n\n const [autoscrollToTop, setAutoscrollToTop] = useState(false);\n\n /**\n * We want to call onEndReached and onStartReached only once, per content length.\n * We keep track of calls to these functions per content length, with following trackers.\n */\n const onStartReachedTracker = useRef<Record<number, boolean>>({});\n const onEndReachedTracker = useRef<Record<number, boolean>>({});\n\n const onStartReachedInPromise = useRef<Promise<void> | null>(null);\n const onEndReachedInPromise = useRef<Promise<void> | null>(null);\n\n const flatListRef = useRef<FlatListType<MessageType<At, Ch, Co, Ev, Me, Re, Us>> | null>(null);\n\n const initialScrollSet = useRef<boolean>(false);\n const channelResyncScrollSet = useRef<boolean>(true);\n\n const [hasMoved, setHasMoved] = useState(false);\n const [lastReceivedId, setLastReceivedId] = useState(getLastReceivedMessage(messageList)?.id);\n const [scrollToBottomButtonVisible, setScrollToBottomButtonVisible] = useState(false);\n\n const [stickyHeaderDate, setStickyHeaderDate] = useState<Date | undefined>();\n const stickyHeaderDateRef = useRef<Date | undefined>();\n /**\n * channel.lastRead throws error if the channel is not initialized.\n */\n const getLastReadSafely = () => (channel?.initialized ? channel.lastRead() : undefined);\n\n const channelLastRead = useRef(getLastReadSafely());\n\n const isUnreadMessage = (\n message: MessageType<At, Ch, Co, Ev, Me, Re, Us> | undefined,\n lastRead?: ReturnType<StreamChannel<At, Ch, Co, Ev, Me, Re, Us>['lastRead']>,\n ) => message && lastRead && message.created_at && lastRead < message.created_at;\n\n /**\n * If the top message in the list is unread, then we should scroll to top of the list.\n * This is to handle the case when entire message list is unread.\n * This scroll get set only on load, and never again.\n */\n const setInitialScrollIfNeeded = () => {\n // If the feature is disabled or initial scroll position is already set.\n if (!initialScrollToFirstUnreadMessage || initialScrollSet.current) {\n initialScrollSet.current = true;\n return;\n }\n if (isUnreadMessage(topMessageBeforeUpdate.current, channelLastRead.current)) {\n if (flatListRef.current) {\n flatListRef.current.scrollToEnd();\n }\n setTimeout(() => {\n initialScrollSet.current = true;\n }, 500);\n } else if (!initialScrollSet.current) {\n initialScrollSet.current = true;\n }\n };\n\n const updateStickyHeaderDateIfNeeded = (viewableItems: ViewToken[]) => {\n if (viewableItems.length) {\n const lastItem = viewableItems.pop() as {\n item: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n };\n\n const isMessageTypeDeleted = lastItem.item.type === 'deleted';\n\n if (\n lastItem?.item?.created_at &&\n !isMessageTypeDeleted &&\n typeof lastItem.item.created_at !== 'string' &&\n lastItem.item.created_at.toDateString() !== stickyHeaderDateRef.current?.toDateString()\n ) {\n stickyHeaderDateRef.current = lastItem.item.created_at;\n setStickyHeaderDate(lastItem.item.created_at);\n }\n }\n };\n\n /**\n * FlatList doesn't accept changeable function for onViewableItemsChanged prop.\n * Thus useRef.\n */\n const onViewableItemsChanged = useRef(\n ({ viewableItems }: { viewableItems: ViewToken[] | undefined }) => {\n if (viewableItems && !hideStickyDateHeader) {\n updateStickyHeaderDateIfNeeded(viewableItems);\n }\n setInitialScrollIfNeeded();\n },\n );\n\n const resetPaginationTrackers = () => {\n onStartReachedTracker.current = {};\n onEndReachedTracker.current = {};\n };\n\n useEffect(() => {\n setScrollToBottomButtonVisible(false);\n }, [disabled]);\n\n useEffect(() => {\n /**\n * 1. !initialScrollToFirstUnreadMessage && channel.countUnread() > 0\n *\n * In this case MessageList won't scroll to first unread message when opened, so we can mark\n * the channel as read right after opening.\n *\n * 2. initialScrollToFirstUnreadMessage && channel.countUnread() <= scrollToFirstUnreadThreshold\n *\n * In this case MessageList will be opened to first unread message.\n * But if there are not enough (scrollToFirstUnreadThreshold) unread messages, then MessageList\n * won't need to scroll up. So we can safely mark the channel as read right after opening.\n */\n const shouldMarkReadOnFirstLoad =\n !loading &&\n channel &&\n ((!initialScrollToFirstUnreadMessage && channel.countUnread() > 0) ||\n (initialScrollToFirstUnreadMessage &&\n channel.countUnread() <= scrollToFirstUnreadThreshold));\n\n if (shouldMarkReadOnFirstLoad) {\n markRead();\n }\n }, [loading]);\n\n useEffect(() => {\n const lastReceivedMessage = getLastReceivedMessage(messageList);\n\n const hasNewMessage = lastReceivedId !== lastReceivedMessage?.id;\n const isMyMessage = lastReceivedMessage?.user?.id === client.userID;\n\n setLastReceivedId(lastReceivedMessage?.id);\n\n /**\n * Scroll down when\n * 1. you send a new message to channel\n * 2. new message list is small than the one before update - channel has resynced\n * 3. created_at timestamp of top message before update is lesser than created_at timestamp of top message after update - channel has resynced\n */\n const scrollToBottomIfNeeded = () => {\n if (!client || !channel || messageList.length === 0) {\n return;\n }\n\n if (\n (hasNewMessage && isMyMessage) ||\n messageListLengthAfterUpdate < messageListLengthBeforeUpdate.current ||\n (topMessageBeforeUpdate.current?.created_at &&\n topMessageAfterUpdate?.created_at &&\n topMessageBeforeUpdate.current.created_at < topMessageAfterUpdate.created_at)\n ) {\n channelResyncScrollSet.current = false;\n setScrollToBottomButtonVisible(false);\n resetPaginationTrackers();\n\n setTimeout(\n () =>\n flatListRef.current?.scrollToOffset({\n offset: 0,\n }),\n 50,\n );\n setTimeout(() => {\n channelResyncScrollSet.current = true;\n if (channel.countUnread() > 0) {\n markRead();\n }\n }, 500);\n }\n };\n\n if (threadList || channel?.state.isUpToDate) {\n scrollToBottomIfNeeded();\n } else if (!scrollToBottomButtonVisible) {\n setScrollToBottomButtonVisible(true);\n }\n\n if (\n !channel?.state.isUpToDate &&\n flatListRef.current &&\n messageListLengthBeforeUpdate.current === 0 &&\n messageListLengthAfterUpdate < 10\n ) {\n /**\n * Trigger onStartReached on first load, if messages are not enough to fill the screen.\n * This is important especially for android, where you can't overscroll.\n */\n maybeCallOnStartReached(10);\n }\n\n /**\n * channelLastRead and topMessage are only used for setting initial scroll.\n * So lets not set it if `initialScrollToFirstUnreadMessage` prop is false.\n * OR if the scroll is already set.\n */\n if (initialScrollToFirstUnreadMessage && !initialScrollSet.current) {\n channelLastRead.current = getLastReadSafely();\n }\n\n messageListLengthBeforeUpdate.current = messageListLengthAfterUpdate;\n topMessageBeforeUpdate.current = topMessageAfterUpdate;\n }, [messageListLengthAfterUpdate, topMessageAfterUpdate?.id]);\n\n useEffect(() => {\n if (!channel?.state.isUpToDate && autoscrollToTop) {\n setAutoscrollToTop(false);\n } else if (channel?.state.isUpToDate && !autoscrollToTop) {\n setAutoscrollToTop(true);\n }\n }, [messageListLengthAfterUpdate]);\n\n const renderItem = ({\n index,\n item: message,\n }: {\n index: number;\n item: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n }) => {\n if (!channel || !channel.initialized) return null;\n\n const lastRead = getLastReadSafely();\n\n const lastMessage = messageList?.[index + 1];\n\n const showUnreadUnderlay = !!isUnreadMessage(message, lastRead) && scrollToBottomButtonVisible;\n const insertInlineUnreadIndicator =\n showUnreadUnderlay && !isUnreadMessage(lastMessage, lastRead);\n\n if (message.type === 'system') {\n return (\n <>\n <View testID={`message-list-item-${index}`}>\n <MessageSystem message={message} style={styles.messagePadding} />\n </View>\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n );\n }\n\n const wrapMessageInTheme = client.userID === message.user?.id && !!myMessageTheme;\n return wrapMessageInTheme ? (\n <>\n <ThemeProvider mergedStyle={modifiedTheme}>\n <View testID={`message-list-item-${index}`}>\n <Message\n goToMessage={goToMessage}\n groupStyles={\n isMessageWithStylesReadByAndDateSeparator(message) ? message.groupStyles : []\n }\n isTargetedMessage={targetedMessage === message.id}\n lastReceivedId={lastReceivedId === message.id ? lastReceivedId : undefined}\n message={message}\n onThreadSelect={onThreadSelect}\n showUnreadUnderlay={showUnreadUnderlay}\n style={styles.messagePadding}\n threadList={threadList}\n />\n </View>\n </ThemeProvider>\n {isMessageWithStylesReadByAndDateSeparator(message) && message.dateSeparator && (\n <InlineDateSeparator date={message.dateSeparator} />\n )}\n {/* Adding indicator below the messages, since the list is inverted */}\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n ) : (\n <>\n <View testID={`message-list-item-${index}`}>\n <Message\n goToMessage={goToMessage}\n groupStyles={\n isMessageWithStylesReadByAndDateSeparator(message) ? message.groupStyles : []\n }\n isTargetedMessage={targetedMessage === message.id}\n lastReceivedId={\n lastReceivedId === message.id || message.quoted_message_id\n ? lastReceivedId\n : undefined\n }\n message={message}\n onThreadSelect={onThreadSelect}\n showUnreadUnderlay={showUnreadUnderlay}\n style={styles.messagePadding}\n threadList={threadList}\n />\n </View>\n {isMessageWithStylesReadByAndDateSeparator(message) && message.dateSeparator && (\n <InlineDateSeparator date={message.dateSeparator} />\n )}\n {/* Adding indicator below the messages, since the list is inverted */}\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n );\n };\n\n /**\n * We are keeping full control on message pagination, and not relying on react-native for it.\n * The reasons being,\n * 1. FlatList doesn't support onStartReached prop\n * 2. `onEndReached` function prop available on react-native, gets executed\n * once per content length (and thats actually a nice optimization strategy).\n * But it also means, we always need to prioritize onEndReached above our\n * logic for `onStartReached`.\n * 3. `onEndReachedThreshold` prop decides - at which scroll position to call `onEndReached`.\n * Its a factor of content length (which is necessary for \"real\" infinite scroll). But on\n * the other hand, it also makes calls to `onEndReached` (and this `channel.query`) way\n * too early during scroll, which we don't really need. So we are going to instead\n * keep some fixed offset distance, to decide when to call `loadMore` or `loadMoreRecent`.\n *\n * We are still gonna keep the optimization, which react-native does - only call onEndReached\n * once per content length.\n */\n\n /**\n * 1. Makes a call to `loadMoreRecent` function, which queries more recent messages.\n * 2. Ensures that we call `loadMoreRecent`, once per content length\n * 3. If the call to `loadMore` is in progress, we wait for it to finish to make sure scroll doesn't jump.\n */\n const maybeCallOnStartReached = (limit?: number) => {\n // If onStartReached has already been called for given data length, then ignore.\n if (messageList?.length && onStartReachedTracker.current[messageList.length]) {\n return;\n }\n\n if (messageList?.length) {\n onStartReachedTracker.current[messageList.length] = true;\n }\n\n const callback = () => {\n onStartReachedInPromise.current = null;\n\n return Promise.resolve();\n };\n\n const onError = () => {\n /** Release the onStartReached trigger after 2 seconds, to try again */\n setTimeout(() => {\n onStartReachedTracker.current = {};\n }, 2000);\n };\n\n // If onEndReached is in progress, better to wait for it to finish for smooth UX\n if (onEndReachedInPromise.current) {\n onEndReachedInPromise.current.finally(() => {\n onStartReachedInPromise.current = loadMoreRecent(limit).then(callback).catch(onError);\n });\n } else {\n onStartReachedInPromise.current = loadMoreRecent(limit).then(callback).catch(onError);\n }\n };\n\n /**\n * 1. Makes a call to `loadMore` function, which queries more older messages.\n * 2. Ensures that we call `loadMore`, once per content length\n * 3. If the call to `loadMoreRecent` is in progress, we wait for it to finish to make sure scroll doesn't jump.\n */\n const maybeCallOnEndReached = () => {\n // If onEndReached has already been called for given messageList length, then ignore.\n if (messageList?.length && onEndReachedTracker.current[messageList.length]) {\n return;\n }\n\n if (messageList?.length) {\n onEndReachedTracker.current[messageList.length] = true;\n }\n\n const callback = () => {\n onEndReachedInPromise.current = null;\n return Promise.resolve();\n };\n\n const onError = () => {\n /** Release the onEndReachedTracker trigger after 2 seconds, to try again */\n setTimeout(() => {\n onEndReachedTracker.current = {};\n }, 2000);\n };\n\n // If onStartReached is in progress, better to wait for it to finish for smooth UX\n if (onStartReachedInPromise.current) {\n onStartReachedInPromise.current.finally(() => {\n onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore())\n .then(callback)\n .catch(onError);\n });\n } else {\n onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore())\n .then(callback)\n .catch(onError);\n }\n };\n\n /**\n * Following if condition covers following cases:\n * 1. If I scroll up -> show scrollToBottom button.\n * 2. If I scroll to bottom of screen\n * |-> hide scrollToBottom button.\n * |-> if channel is unread, call markRead().\n */\n const handleScroll: ScrollViewProps['onScroll'] = (event) => {\n if (!channel || !initialScrollSet.current || !channelResyncScrollSet.current) {\n return;\n }\n\n const offset = event.nativeEvent.contentOffset.y;\n const visibleLength = event.nativeEvent.layoutMeasurement.height;\n const contentLength = event.nativeEvent.contentSize.height;\n // Check if scroll has reached either start of end of list.\n const isScrollAtStart = offset < 100;\n const isScrollAtEnd = contentLength - visibleLength - offset < 100;\n\n if (isScrollAtStart) {\n maybeCallOnStartReached();\n }\n\n if (isScrollAtEnd) {\n maybeCallOnEndReached();\n }\n\n // Show scrollToBottom button once scroll position goes beyond 300.\n const isScrollAtBottom = offset <= 300;\n const showScrollToBottomButton = !isScrollAtBottom || !channel?.state.isUpToDate;\n\n const shouldMarkRead =\n !threadList && offset <= 0 && channel?.state.isUpToDate && channel.countUnread() > 0;\n\n if (shouldMarkRead) {\n markRead();\n }\n\n if (showScrollToBottomButton && !scrollToBottomButtonVisible) {\n setScrollToBottomButtonVisible(true);\n } else if (!showScrollToBottomButton && scrollToBottomButtonVisible) {\n setScrollToBottomButtonVisible(false);\n }\n\n if (onListScroll) {\n onListScroll(event);\n }\n };\n\n const goToNewMessages = async () => {\n if (!channel?.state.isUpToDate) {\n resetPaginationTrackers();\n\n await reloadChannel();\n } else if (flatListRef.current) {\n flatListRef.current.scrollToOffset({\n offset: 0,\n });\n }\n\n setScrollToBottomButtonVisible(false);\n if (!threadList) {\n markRead();\n }\n };\n\n const goToMessage = useCallback(\n (messageId: string) => {\n const indexOfParentInMessageList = messageList.findIndex(\n (message) => message?.id === messageId,\n );\n\n if (indexOfParentInMessageList > -1) {\n try {\n if (flatListRef.current) {\n flatListRef.current.scrollToIndex({\n index: indexOfParentInMessageList,\n viewPosition: 0.5,\n });\n setTargetedMessage(messageId);\n\n return;\n }\n } catch (_) {\n // do nothing;\n }\n }\n\n loadChannelAtMessage({ messageId });\n resetPaginationTrackers();\n },\n [messageListLengthAfterUpdate],\n );\n\n const messagesWithImages =\n legacyImageViewerSwipeBehaviour &&\n messageList.filter((message) => {\n const isMessageTypeDeleted = message.type === 'deleted';\n if (!isMessageTypeDeleted && message.attachments) {\n return message.attachments.some(\n (attachment) =>\n attachment.type === 'image' &&\n !attachment.title_link &&\n !attachment.og_scrape_url &&\n (attachment.image_url || attachment.thumb_url),\n );\n }\n return false;\n });\n\n /**\n * This is for the useEffect to run again in the case that a message\n * gets edited with more or the same number of images\n */\n const imageString =\n legacyImageViewerSwipeBehaviour &&\n messagesWithImages &&\n messagesWithImages\n .map((message) =>\n message.attachments\n ?.map((attachment) => attachment.image_url || attachment.thumb_url || '')\n .join(),\n )\n .join();\n\n const numberOfMessagesWithImages =\n legacyImageViewerSwipeBehaviour && messagesWithImages && messagesWithImages.length;\n const threadExists = !!thread;\n\n useEffect(() => {\n if (\n legacyImageViewerSwipeBehaviour &&\n isListActive &&\n ((threadList && thread) || (!threadList && !thread))\n ) {\n setImages(messagesWithImages as MessageType<At, Ch, Co, Ev, Me, Re, Us>[]);\n }\n }, [\n imageString,\n isListActive,\n legacyImageViewerSwipeBehaviour,\n numberOfMessagesWithImages,\n threadExists,\n threadList,\n ]);\n\n const stickyHeaderFormatDate =\n stickyHeaderDate?.getFullYear() === new Date().getFullYear() ? 'MMM D' : 'MMM D, YYYY';\n const tStickyHeaderDate =\n stickyHeaderDate && !hideStickyDateHeader ? tDateTimeParser(stickyHeaderDate) : null;\n const stickyHeaderDateToRender =\n tStickyHeaderDate === null || hideStickyDateHeader\n ? null\n : isDayOrMoment(tStickyHeaderDate)\n ? tStickyHeaderDate.format(stickyHeaderFormatDate)\n : new Date(tStickyHeaderDate).toDateString();\n\n const dismissImagePicker = () => {\n if (!hasMoved && selectedPicker) {\n setSelectedPicker(undefined);\n closePicker();\n }\n };\n const onScrollBeginDrag = () => !hasMoved && selectedPicker && setHasMoved(true);\n const onScrollEndDrag = () => hasMoved && selectedPicker && setHasMoved(false);\n\n const refCallback = (ref: FlatListType<MessageType<At, Ch, Co, Ev, Me, Re, Us>>) => {\n flatListRef.current = ref;\n\n if (setFlatListRef) {\n setFlatListRef(ref);\n }\n };\n const renderListEmptyComponent = () => (\n <View style={[styles.flex, styles.invert]} testID='empty-state'>\n <EmptyStateIndicator listType='message' />\n </View>\n );\n\n if (!FlatList) return null;\n\n if (loading) {\n return (\n <View style={styles.flex}>\n <LoadingIndicator listType='message' />\n </View>\n );\n }\n\n return (\n <View\n style={[styles.container, { backgroundColor: white_snow }, container]}\n testID='message-flat-list-wrapper'\n >\n <FlatList\n contentContainerStyle={[styles.contentContainer, contentContainer]}\n data={messageList}\n /** Disables the MessageList UI. Which means, message actions, reactions won't work. */\n extraData={disabled || !channel?.state.isUpToDate}\n inverted={inverted}\n keyboardShouldPersistTaps='handled'\n keyExtractor={keyExtractor}\n ListEmptyComponent={renderListEmptyComponent}\n ListFooterComponent={FooterComponent}\n ListHeaderComponent={HeaderComponent}\n maintainVisibleContentPosition={{\n autoscrollToTopThreshold: autoscrollToTop ? 10 : undefined,\n minIndexForVisible: 1,\n }}\n onScroll={handleScroll}\n onScrollBeginDrag={onScrollBeginDrag}\n onScrollEndDrag={onScrollEndDrag}\n onTouchEnd={dismissImagePicker}\n onViewableItemsChanged={onViewableItemsChanged.current}\n ref={refCallback}\n renderItem={renderItem}\n scrollEnabled={overlay === 'none'}\n style={[styles.listContainer, listContainer]}\n testID='message-flat-list'\n viewabilityConfig={flatListViewabilityConfig}\n {...additionalFlatListProps}\n />\n {!loading && (\n <>\n <View style={styles.stickyHeader}>\n {stickyHeaderDateToRender &&\n (StickyHeader ? (\n <StickyHeader dateString={stickyHeaderDateToRender} />\n ) : messageListLengthAfterUpdate ? (\n <DateHeader dateString={stickyHeaderDateToRender} />\n ) : null)}\n </View>\n {!disableTypingIndicator && TypingIndicator && (\n <TypingIndicatorContainer>\n <TypingIndicator />\n </TypingIndicatorContainer>\n )}\n <ScrollToBottomButton\n onPress={goToNewMessages}\n showNotification={scrollToBottomButtonVisible}\n unreadCount={threadList ? 0 : channel?.countUnread()}\n />\n </>\n )}\n <NetworkDownIndicator />\n </View>\n );\n};\n\nexport type MessageListProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<MessageListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>>;\n\nexport const MessageList = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: MessageListProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { closePicker, selectedPicker, setSelectedPicker } = useAttachmentPickerContext();\n const {\n channel,\n disabled,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n error,\n hideStickyDateHeader,\n isChannelActive,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n NetworkDownIndicator,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n } = useChannelContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { setImages } = useImageGalleryContext<At, Ch, Co, Ev, Me, Re, Us>();\n const {\n DateHeader,\n deletedMessagesVisibilityType,\n disableTypingIndicator,\n FlatList,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n legacyImageViewerSwipeBehaviour,\n Message,\n MessageSystem,\n myMessageTheme,\n ScrollToBottomButton,\n TypingIndicator,\n TypingIndicatorContainer,\n } = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { loadMore, loadMoreRecent } = usePaginatedMessageListContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { overlay } = useOverlayContext();\n const { loadMoreThread, thread } = useThreadContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n return (\n <MessageListWithContext\n {...{\n channel,\n client,\n closePicker,\n DateHeader,\n deletedMessagesVisibilityType,\n disabled,\n disableTypingIndicator,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n error,\n FlatList,\n hideStickyDateHeader,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n isListActive: isChannelActive,\n legacyImageViewerSwipeBehaviour,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n loadMore,\n loadMoreRecent,\n loadMoreThread,\n markRead,\n Message,\n MessageSystem,\n myMessageTheme,\n NetworkDownIndicator,\n overlay,\n reloadChannel,\n ScrollToBottomButton,\n scrollToFirstUnreadThreshold,\n selectedPicker,\n setImages,\n setSelectedPicker,\n setTargetedMessage,\n StickyHeader,\n t,\n targetedMessage,\n tDateTimeParser,\n thread,\n TypingIndicator,\n TypingIndicatorContainer,\n }}\n {...props}\n noGroupByUser={!enableMessageGroupingByUser || props.noGroupByUser}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["MessageList.tsx"],"names":["styles","StyleSheet","create","container","alignItems","flex","width","contentContainer","flexGrow","paddingBottom","invert","transform","scaleY","listContainer","messagePadding","paddingHorizontal","stickyHeader","position","top","keyExtractor","item","id","created_at","toISOString","Date","now","toString","flatListViewabilityConfig","viewAreaCoveragePercentThreshold","MessageListWithContext","props","LoadingMoreIndicator","threadList","InlineLoadingMoreThreadIndicator","InlineLoadingMoreIndicator","additionalFlatListProps","channel","client","closePicker","DateHeader","deletedMessagesVisibilityType","disabled","disableTypingIndicator","EmptyStateIndicator","FlatList","FooterComponent","HeaderComponent","InlineLoadingMoreRecentIndicator","hideStickyDateHeader","initialScrollToFirstUnreadMessage","InlineDateSeparator","InlineUnreadIndicator","inverted","isListActive","legacyImageViewerSwipeBehaviour","loadChannelAtMessage","loading","LoadingIndicator","loadMore","loadMoreRecent","loadMoreThread","markRead","Message","MessageSystem","myMessageTheme","NetworkDownIndicator","noGroupByUser","onListScroll","onThreadSelect","overlay","reloadChannel","ScrollToBottomButton","scrollToFirstUnreadThreshold","selectedPicker","setFlatListRef","setImages","setSelectedPicker","setTargetedMessage","StickyHeader","targetedMessage","tDateTimeParser","thread","TypingIndicator","TypingIndicatorContainer","theme","white_snow","colors","messageList","modifiedTheme","style","messageListLengthBeforeUpdate","messageListLengthAfterUpdate","length","topMessageBeforeUpdate","topMessageAfterUpdate","autoscrollToTop","setAutoscrollToTop","onStartReachedTracker","onEndReachedTracker","onStartReachedInPromise","onEndReachedInPromise","flatListRef","initialScrollSet","channelResyncScrollSet","hasMoved","setHasMoved","lastReceivedId","setLastReceivedId","scrollToBottomButtonVisible","setScrollToBottomButtonVisible","stickyHeaderDate","setStickyHeaderDate","stickyHeaderDateRef","getLastReadSafely","initialized","lastRead","undefined","channelLastRead","isUnreadMessage","message","setInitialScrollIfNeeded","current","scrollToEnd","setTimeout","updateStickyHeaderDateIfNeeded","viewableItems","lastItem","pop","isMessageTypeDeleted","type","toDateString","onViewableItemsChanged","resetPaginationTrackers","shouldMarkReadOnFirstLoad","countUnread","lastReceivedMessage","hasNewMessage","isMyMessage","user","userID","scrollToBottomIfNeeded","scrollToOffset","offset","state","isUpToDate","maybeCallOnStartReached","renderItem","index","lastMessage","showUnreadUnderlay","insertInlineUnreadIndicator","wrapMessageInTheme","goToMessage","groupStyles","dateSeparator","quoted_message_id","limit","callback","Promise","resolve","onError","then","maybeCallOnEndReached","handleScroll","event","nativeEvent","contentOffset","y","visibleLength","layoutMeasurement","height","contentLength","contentSize","isScrollAtStart","isScrollAtEnd","isScrollAtBottom","showScrollToBottomButton","shouldMarkRead","goToNewMessages","messageId","indexOfParentInMessageList","findIndex","scrollToIndex","viewPosition","_","messagesWithImages","filter","attachments","some","attachment","title_link","og_scrape_url","image_url","thumb_url","imageString","map","join","numberOfMessagesWithImages","threadExists","stickyHeaderFormatDate","getFullYear","tStickyHeaderDate","stickyHeaderDateToRender","format","dismissImagePicker","onScrollBeginDrag","onScrollEndDrag","refCallback","ref","renderListEmptyComponent","backgroundColor","autoscrollToTopThreshold","minIndexForVisible","MessageList","enableMessageGroupingByUser","error","isChannelActive","t"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;AAWA;;AAKA;;AACA;;AACA;;AACA;;AAEA;;AAIA;;AAIA;;AACA;;AAIA;;AAIA;;AAIA;;AAIA;;AACA;;AACA;;;;;;;;;AAQA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,UAAU,EAAE,QADH;AAETC,IAAAA,IAAI,EAAE,CAFG;AAGTC,IAAAA,KAAK,EAAE;AAHE,GADoB;AAM/BC,EAAAA,gBAAgB,EAAE;AAChBC,IAAAA,QAAQ,EAAE,CADM;AAQhBC,IAAAA,aAAa,EAAE;AARC,GANa;AAgB/BJ,EAAAA,IAAI,EAAE;AAAEA,IAAAA,IAAI,EAAE;AAAR,GAhByB;AAiB/BK,EAAAA,MAAM,EAAE;AAAEC,IAAAA,SAAS,EAAE,CAAC;AAAEC,MAAAA,MAAM,EAAE,CAAC;AAAX,KAAD;AAAb,GAjBuB;AAkB/BC,EAAAA,aAAa,EAAE;AACbR,IAAAA,IAAI,EAAE,CADO;AAEbC,IAAAA,KAAK,EAAE;AAFM,GAlBgB;AAsB/BQ,EAAAA,cAAc,EAAE;AACdC,IAAAA,iBAAiB,EAAE;AADL,GAtBe;AAyB/BC,EAAAA,YAAY,EAAE;AACZC,IAAAA,QAAQ,EAAE,UADE;AAEZC,IAAAA,GAAG,EAAE;AAFO;AAzBiB,CAAlB,CAAf;;AA+BA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAGnBC,IAHmB;AAAA,SAKnBA,IAAI,CAACC,EAAL,KACCD,IAAI,CAACE,UAAL,GACG,OAAOF,IAAI,CAACE,UAAZ,KAA2B,QAA3B,GACEF,IAAI,CAACE,UADP,GAEEF,IAAI,CAACE,UAAL,CAAgBC,WAAhB,EAHL,GAIGC,IAAI,CAACC,GAAL,GAAWC,QAAX,EALJ,CALmB;AAAA,CAArB;;AAYA,IAAMC,yBAAyB,GAAG;AAChCC,EAAAA,gCAAgC,EAAE;AADF,CAAlC;;AAuHA,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAyB,CAG7BC,KAH6B,EAI1B;AAAA;;AACH,MAAMC,oBAAoB,GAAGD,KAAK,CAACE,UAAN,GACzBC,kEADyB,GAEzBC,sDAFJ;AAGA,MACEC,uBADF,GAkDIL,KAlDJ,CACEK,uBADF;AAAA,MAEEC,OAFF,GAkDIN,KAlDJ,CAEEM,OAFF;AAAA,MAGEC,MAHF,GAkDIP,KAlDJ,CAGEO,MAHF;AAAA,MAIEC,WAJF,GAkDIR,KAlDJ,CAIEQ,WAJF;AAAA,MAKEC,UALF,GAkDIT,KAlDJ,CAKES,UALF;AAAA,MAMEC,6BANF,GAkDIV,KAlDJ,CAMEU,6BANF;AAAA,MAOEC,QAPF,GAkDIX,KAlDJ,CAOEW,QAPF;AAAA,MAQEC,sBARF,GAkDIZ,KAlDJ,CAQEY,sBARF;AAAA,MASEC,mBATF,GAkDIb,KAlDJ,CASEa,mBATF;AAAA,MAUEC,QAVF,GAkDId,KAlDJ,CAUEc,QAVF;AAAA,8BAkDId,KAlDJ,CAWEe,eAXF;AAAA,MAWEA,eAXF,sCAWoBd,oBAXpB;AAAA,8BAkDID,KAlDJ,CAYEgB,eAZF;AAAA,MAYEA,eAZF,sCAYoBC,kEAZpB;AAAA,MAaEC,oBAbF,GAkDIlB,KAlDJ,CAaEkB,oBAbF;AAAA,MAcEC,iCAdF,GAkDInB,KAlDJ,CAcEmB,iCAdF;AAAA,MAeEC,mBAfF,GAkDIpB,KAlDJ,CAeEoB,mBAfF;AAAA,MAgBEC,qBAhBF,GAkDIrB,KAlDJ,CAgBEqB,qBAhBF;AAAA,wBAkDIrB,KAlDJ,CAiBEsB,QAjBF;AAAA,MAiBEA,QAjBF,gCAiBa,IAjBb;AAAA,4BAkDItB,KAlDJ,CAkBEuB,YAlBF;AAAA,MAkBEA,YAlBF,oCAkBiB,KAlBjB;AAAA,MAmBEC,+BAnBF,GAkDIxB,KAlDJ,CAmBEwB,+BAnBF;AAAA,MAoBEC,oBApBF,GAkDIzB,KAlDJ,CAoBEyB,oBApBF;AAAA,MAqBEC,OArBF,GAkDI1B,KAlDJ,CAqBE0B,OArBF;AAAA,MAsBEC,gBAtBF,GAkDI3B,KAlDJ,CAsBE2B,gBAtBF;AAAA,MAuBEC,QAvBF,GAkDI5B,KAlDJ,CAuBE4B,QAvBF;AAAA,MAwBEC,cAxBF,GAkDI7B,KAlDJ,CAwBE6B,cAxBF;AAAA,MAyBEC,cAzBF,GAkDI9B,KAlDJ,CAyBE8B,cAzBF;AAAA,MA0BEC,QA1BF,GAkDI/B,KAlDJ,CA0BE+B,QA1BF;AAAA,MA2BEC,OA3BF,GAkDIhC,KAlDJ,CA2BEgC,OA3BF;AAAA,MA4BEC,aA5BF,GAkDIjC,KAlDJ,CA4BEiC,aA5BF;AAAA,MA6BEC,cA7BF,GAkDIlC,KAlDJ,CA6BEkC,cA7BF;AAAA,MA8BEC,oBA9BF,GAkDInC,KAlDJ,CA8BEmC,oBA9BF;AAAA,MA+BEC,aA/BF,GAkDIpC,KAlDJ,CA+BEoC,aA/BF;AAAA,MAgCEC,YAhCF,GAkDIrC,KAlDJ,CAgCEqC,YAhCF;AAAA,MAiCEC,cAjCF,GAkDItC,KAlDJ,CAiCEsC,cAjCF;AAAA,MAkCEC,OAlCF,GAkDIvC,KAlDJ,CAkCEuC,OAlCF;AAAA,MAmCEC,aAnCF,GAkDIxC,KAlDJ,CAmCEwC,aAnCF;AAAA,MAoCEC,oBApCF,GAkDIzC,KAlDJ,CAoCEyC,oBApCF;AAAA,MAqCEC,4BArCF,GAkDI1C,KAlDJ,CAqCE0C,4BArCF;AAAA,MAsCEC,cAtCF,GAkDI3C,KAlDJ,CAsCE2C,cAtCF;AAAA,MAuCEC,cAvCF,GAkDI5C,KAlDJ,CAuCE4C,cAvCF;AAAA,MAwCEC,SAxCF,GAkDI7C,KAlDJ,CAwCE6C,SAxCF;AAAA,MAyCEC,iBAzCF,GAkDI9C,KAlDJ,CAyCE8C,iBAzCF;AAAA,MA0CEC,kBA1CF,GAkDI/C,KAlDJ,CA0CE+C,kBA1CF;AAAA,MA2CEC,YA3CF,GAkDIhD,KAlDJ,CA2CEgD,YA3CF;AAAA,MA4CEC,eA5CF,GAkDIjD,KAlDJ,CA4CEiD,eA5CF;AAAA,MA6CEC,eA7CF,GAkDIlD,KAlDJ,CA6CEkD,eA7CF;AAAA,MA8CEC,MA9CF,GAkDInD,KAlDJ,CA8CEmD,MA9CF;AAAA,0BAkDInD,KAlDJ,CA+CEE,UA/CF;AAAA,MA+CEA,UA/CF,kCA+Ce,KA/Cf;AAAA,MAgDEkD,eAhDF,GAkDIpD,KAlDJ,CAgDEoD,eAhDF;AAAA,MAiDEC,wBAjDF,GAkDIrD,KAlDJ,CAiDEqD,wBAjDF;;AAoDA,kBAAkB,6BAAlB;AAAA,MAAQC,KAAR,aAAQA,KAAR;;AAEA,MACYC,UADZ,GAGID,KAHJ,CACEE,MADF,CACYD,UADZ;AAAA,2BAGID,KAHJ,CAEEG,WAFF;AAAA,MAEiBpF,SAFjB,sBAEiBA,SAFjB;AAAA,MAE4BI,gBAF5B,sBAE4BA,gBAF5B;AAAA,MAE8CM,aAF9C,sBAE8CA,aAF9C;AAKA,MAAM2E,aAAa,GAAG,oBACpB;AAAA,WAAM,+BAAY;AAAEC,MAAAA,KAAK,EAAEzB,cAAT;AAAyBoB,MAAAA,KAAK,EAALA;AAAzB,KAAZ,CAAN;AAAA,GADoB,EAEpB,CAACpB,cAAD,EAAiBoB,KAAjB,CAFoB,CAAtB;AAKA,MAAMG,WAAW,GAAG,oCAAmC;AACrD/C,IAAAA,6BAA6B,EAA7BA,6BADqD;AAErDY,IAAAA,QAAQ,EAARA,QAFqD;AAGrDc,IAAAA,aAAa,EAAbA,aAHqD;AAIrDlC,IAAAA,UAAU,EAAVA;AAJqD,GAAnC,CAApB;AAMA,MAAM0D,6BAA6B,GAAG,mBAAO,CAAP,CAAtC;AACA,MAAMC,4BAA4B,GAAGJ,WAAW,CAACK,MAAjD;AAMA,MAAMC,sBAAsB,GAAG,oBAA/B;AACA,MAAMC,qBAAqB,GAAGP,WAAW,CAACA,WAAW,CAACK,MAAZ,GAAqB,CAAtB,CAAzC;;AAEA,kBAA8C,qBAAS,KAAT,CAA9C;AAAA;AAAA,MAAOG,eAAP;AAAA,MAAwBC,kBAAxB;;AAMA,MAAMC,qBAAqB,GAAG,mBAAgC,EAAhC,CAA9B;AACA,MAAMC,mBAAmB,GAAG,mBAAgC,EAAhC,CAA5B;AAEA,MAAMC,uBAAuB,GAAG,mBAA6B,IAA7B,CAAhC;AACA,MAAMC,qBAAqB,GAAG,mBAA6B,IAA7B,CAA9B;AAEA,MAAMC,WAAW,GAAG,mBAA6D,IAA7D,CAApB;AAEA,MAAMC,gBAAgB,GAAG,mBAAgB,KAAhB,CAAzB;AACA,MAAMC,sBAAsB,GAAG,mBAAgB,IAAhB,CAA/B;;AAEA,mBAAgC,qBAAS,KAAT,CAAhC;AAAA;AAAA,MAAOC,QAAP;AAAA,MAAiBC,WAAjB;;AACA,mBAA4C,8CAAS,oDAAuBlB,WAAvB,CAAT,qBAAS,sBAAqClE,EAA9C,CAA5C;AAAA;AAAA,MAAOqF,cAAP;AAAA,MAAuBC,iBAAvB;;AACA,mBAAsE,qBAAS,KAAT,CAAtE;AAAA;AAAA,MAAOC,2BAAP;AAAA,MAAoCC,8BAApC;;AAEA,mBAAgD,sBAAhD;AAAA;AAAA,MAAOC,gBAAP;AAAA,MAAyBC,mBAAzB;;AACA,MAAMC,mBAAmB,GAAG,oBAA5B;;AAIA,MAAMC,iBAAiB,GAAG,SAApBA,iBAAoB;AAAA,WAAO7E,OAAO,QAAP,IAAAA,OAAO,CAAE8E,WAAT,GAAuB9E,OAAO,CAAC+E,QAAR,EAAvB,GAA4CC,SAAnD;AAAA,GAA1B;;AAEA,MAAMC,eAAe,GAAG,mBAAOJ,iBAAiB,EAAxB,CAAxB;;AAEA,MAAMK,eAAe,GAAG,SAAlBA,eAAkB,CACtBC,OADsB,EAEtBJ,QAFsB;AAAA,WAGnBI,OAAO,IAAIJ,QAAX,IAAuBI,OAAO,CAACjG,UAA/B,IAA6C6F,QAAQ,GAAGI,OAAO,CAACjG,UAH7C;AAAA,GAAxB;;AAUA,MAAMkG,wBAAwB,GAAG,SAA3BA,wBAA2B,GAAM;AAErC,QAAI,CAACvE,iCAAD,IAAsCqD,gBAAgB,CAACmB,OAA3D,EAAoE;AAClEnB,MAAAA,gBAAgB,CAACmB,OAAjB,GAA2B,IAA3B;AACA;AACD;;AACD,QAAIH,eAAe,CAACzB,sBAAsB,CAAC4B,OAAxB,EAAiCJ,eAAe,CAACI,OAAjD,CAAnB,EAA8E;AAC5E,UAAIpB,WAAW,CAACoB,OAAhB,EAAyB;AACvBpB,QAAAA,WAAW,CAACoB,OAAZ,CAAoBC,WAApB;AACD;;AACDC,MAAAA,UAAU,CAAC,YAAM;AACfrB,QAAAA,gBAAgB,CAACmB,OAAjB,GAA2B,IAA3B;AACD,OAFS,EAEP,GAFO,CAAV;AAGD,KAPD,MAOO,IAAI,CAACnB,gBAAgB,CAACmB,OAAtB,EAA+B;AACpCnB,MAAAA,gBAAgB,CAACmB,OAAjB,GAA2B,IAA3B;AACD;AACF,GAhBD;;AAkBA,MAAMG,8BAA8B,GAAG,SAAjCA,8BAAiC,CAACC,aAAD,EAAgC;AACrE,QAAIA,aAAa,CAACjC,MAAlB,EAA0B;AAAA;;AACxB,UAAMkC,QAAQ,GAAGD,aAAa,CAACE,GAAd,EAAjB;AAIA,UAAMC,oBAAoB,GAAGF,QAAQ,CAAC1G,IAAT,CAAc6G,IAAd,KAAuB,SAApD;;AAEA,UACEH,QAAQ,QAAR,sBAAAA,QAAQ,CAAE1G,IAAV,4BAAgBE,UAAhB,IACA,CAAC0G,oBADD,IAEA,OAAOF,QAAQ,CAAC1G,IAAT,CAAcE,UAArB,KAAoC,QAFpC,IAGAwG,QAAQ,CAAC1G,IAAT,CAAcE,UAAd,CAAyB4G,YAAzB,iCAA4ClB,mBAAmB,CAACS,OAAhE,qBAA4C,sBAA6BS,YAA7B,EAA5C,CAJF,EAKE;AACAlB,QAAAA,mBAAmB,CAACS,OAApB,GAA8BK,QAAQ,CAAC1G,IAAT,CAAcE,UAA5C;AACAyF,QAAAA,mBAAmB,CAACe,QAAQ,CAAC1G,IAAT,CAAcE,UAAf,CAAnB;AACD;AACF;AACF,GAlBD;;AAwBA,MAAM6G,sBAAsB,GAAG,mBAC7B,gBAAmE;AAAA,QAAhEN,aAAgE,QAAhEA,aAAgE;;AACjE,QAAIA,aAAa,IAAI,CAAC7E,oBAAtB,EAA4C;AAC1C4E,MAAAA,8BAA8B,CAACC,aAAD,CAA9B;AACD;;AACDL,IAAAA,wBAAwB;AACzB,GAN4B,CAA/B;;AASA,MAAMY,uBAAuB,GAAG,SAA1BA,uBAA0B,GAAM;AACpCnC,IAAAA,qBAAqB,CAACwB,OAAtB,GAAgC,EAAhC;AACAvB,IAAAA,mBAAmB,CAACuB,OAApB,GAA8B,EAA9B;AACD,GAHD;;AAKA,wBAAU,YAAM;AACdZ,IAAAA,8BAA8B,CAAC,KAAD,CAA9B;AACD,GAFD,EAEG,CAACpE,QAAD,CAFH;AAIA,wBAAU,YAAM;AAad,QAAM4F,yBAAyB,GAC7B,CAAC7E,OAAD,IACApB,OADA,KAEE,CAACa,iCAAD,IAAsCb,OAAO,CAACkG,WAAR,KAAwB,CAA/D,IACErF,iCAAiC,IAChCb,OAAO,CAACkG,WAAR,MAAyB9D,4BAJ7B,CADF;;AAOA,QAAI6D,yBAAJ,EAA+B;AAC7BxE,MAAAA,QAAQ;AACT;AACF,GAvBD,EAuBG,CAACL,OAAD,CAvBH;AAyBA,wBAAU,YAAM;AAAA;;AACd,QAAM+E,mBAAmB,GAAG,oDAAuBhD,WAAvB,CAA5B;AAEA,QAAMiD,aAAa,GAAG9B,cAAc,MAAK6B,mBAAL,oBAAKA,mBAAmB,CAAElH,EAA1B,CAApC;AACA,QAAMoH,WAAW,GAAG,CAAAF,mBAAmB,QAAnB,qCAAAA,mBAAmB,CAAEG,IAArB,2CAA2BrH,EAA3B,MAAkCgB,MAAM,CAACsG,MAA7D;AAEAhC,IAAAA,iBAAiB,CAAC4B,mBAAD,oBAACA,mBAAmB,CAAElH,EAAtB,CAAjB;;AAQA,QAAMuH,sBAAsB,GAAG,SAAzBA,sBAAyB,GAAM;AAAA;;AACnC,UAAI,CAACvG,MAAD,IAAW,CAACD,OAAZ,IAAuBmD,WAAW,CAACK,MAAZ,KAAuB,CAAlD,EAAqD;AACnD;AACD;;AAED,UACG4C,aAAa,IAAIC,WAAlB,IACA9C,4BAA4B,GAAGD,6BAA6B,CAAC+B,OAD7D,IAEC,yBAAA5B,sBAAsB,CAAC4B,OAAvB,mCAAgCnG,UAAhC,IACCwE,qBADD,YACCA,qBAAqB,CAAExE,UADxB,IAECuE,sBAAsB,CAAC4B,OAAvB,CAA+BnG,UAA/B,GAA4CwE,qBAAqB,CAACxE,UALtE,EAME;AACAiF,QAAAA,sBAAsB,CAACkB,OAAvB,GAAiC,KAAjC;AACAZ,QAAAA,8BAA8B,CAAC,KAAD,CAA9B;AACAuB,QAAAA,uBAAuB;AAEvBT,QAAAA,UAAU,CACR;AAAA;;AAAA,yCACEtB,WAAW,CAACoB,OADd,qBACE,qBAAqBoB,cAArB,CAAoC;AAClCC,YAAAA,MAAM,EAAE;AAD0B,WAApC,CADF;AAAA,SADQ,EAKR,EALQ,CAAV;AAOAnB,QAAAA,UAAU,CAAC,YAAM;AACfpB,UAAAA,sBAAsB,CAACkB,OAAvB,GAAiC,IAAjC;;AACA,cAAIrF,OAAO,CAACkG,WAAR,KAAwB,CAA5B,EAA+B;AAC7BzE,YAAAA,QAAQ;AACT;AACF,SALS,EAKP,GALO,CAAV;AAMD;AACF,KA9BD;;AAgCA,QAAI7B,UAAU,IAAII,OAAJ,YAAIA,OAAO,CAAE2G,KAAT,CAAeC,UAAjC,EAA6C;AAC3CJ,MAAAA,sBAAsB;AACvB,KAFD,MAEO,IAAI,CAAChC,2BAAL,EAAkC;AACvCC,MAAAA,8BAA8B,CAAC,IAAD,CAA9B;AACD;;AAED,QACE,EAACzE,OAAD,YAACA,OAAO,CAAE2G,KAAT,CAAeC,UAAhB,KACA3C,WAAW,CAACoB,OADZ,IAEA/B,6BAA6B,CAAC+B,OAA9B,KAA0C,CAF1C,IAGA9B,4BAA4B,GAAG,EAJjC,EAKE;AAKAsD,MAAAA,uBAAuB,CAAC,EAAD,CAAvB;AACD;;AAOD,QAAIhG,iCAAiC,IAAI,CAACqD,gBAAgB,CAACmB,OAA3D,EAAoE;AAClEJ,MAAAA,eAAe,CAACI,OAAhB,GAA0BR,iBAAiB,EAA3C;AACD;;AAEDvB,IAAAA,6BAA6B,CAAC+B,OAA9B,GAAwC9B,4BAAxC;AACAE,IAAAA,sBAAsB,CAAC4B,OAAvB,GAAiC3B,qBAAjC;AACD,GA5ED,EA4EG,CAACH,4BAAD,EAA+BG,qBAA/B,oBAA+BA,qBAAqB,CAAEzE,EAAtD,CA5EH;AA8EA,wBAAU,YAAM;AACd,QAAI,EAACe,OAAD,YAACA,OAAO,CAAE2G,KAAT,CAAeC,UAAhB,KAA8BjD,eAAlC,EAAmD;AACjDC,MAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACD,KAFD,MAEO,IAAI5D,OAAO,QAAP,IAAAA,OAAO,CAAE2G,KAAT,CAAeC,UAAf,IAA6B,CAACjD,eAAlC,EAAmD;AACxDC,MAAAA,kBAAkB,CAAC,IAAD,CAAlB;AACD;AACF,GAND,EAMG,CAACL,4BAAD,CANH;;AAQA,MAAMuD,UAAU,GAAG,SAAbA,UAAa,QAMb;AAAA;;AAAA,QALJC,KAKI,SALJA,KAKI;AAAA,QAJE5B,OAIF,SAJJnG,IAII;AACJ,QAAI,CAACgB,OAAD,IAAY,CAACA,OAAO,CAAC8E,WAAzB,EAAsC,OAAO,IAAP;AAEtC,QAAMC,QAAQ,GAAGF,iBAAiB,EAAlC;AAEA,QAAMmC,WAAW,GAAG7D,WAAH,oBAAGA,WAAW,CAAG4D,KAAK,GAAG,CAAX,CAA/B;AAEA,QAAME,kBAAkB,GAAG,CAAC,CAAC/B,eAAe,CAACC,OAAD,EAAUJ,QAAV,CAAjB,IAAwCP,2BAAnE;AACA,QAAM0C,2BAA2B,GAC/BD,kBAAkB,IAAI,CAAC/B,eAAe,CAAC8B,WAAD,EAAcjC,QAAd,CADxC;;AAGA,QAAII,OAAO,CAACU,IAAR,KAAiB,QAArB,EAA+B;AAC7B,aACE,kEACE,gCAAC,iBAAD;AAAM,QAAA,MAAM,yBAAuBkB,KAAnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SACE,gCAAC,aAAD;AAAe,QAAA,OAAO,EAAE5B,OAAxB;AAAiC,QAAA,KAAK,EAAEvH,MAAM,CAACc,cAA/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QADF,CADF,EAIGwI,2BAA2B,IAAI,gCAAC,qBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAJlC,CADF;AAQD;;AAED,QAAMC,kBAAkB,GAAGlH,MAAM,CAACsG,MAAP,uBAAkBpB,OAAO,CAACmB,IAA1B,qBAAkB,cAAcrH,EAAhC,KAAsC,CAAC,CAAC2C,cAAnE;AACA,WAAOuF,kBAAkB,GACvB,kEACE,gCAAC,2BAAD;AAAe,MAAA,WAAW,EAAE/D,aAA5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OACE,gCAAC,iBAAD;AAAM,MAAA,MAAM,yBAAuB2D,KAAnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OACE,gCAAC,OAAD;AACE,MAAA,WAAW,EAAEK,WADf;AAEE,MAAA,WAAW,EACT,+DAA0CjC,OAA1C,IAAqDA,OAAO,CAACkC,WAA7D,GAA2E,EAH/E;AAKE,MAAA,iBAAiB,EAAE1E,eAAe,KAAKwC,OAAO,CAAClG,EALjD;AAME,MAAA,cAAc,EAAEqF,cAAc,KAAKa,OAAO,CAAClG,EAA3B,GAAgCqF,cAAhC,GAAiDU,SANnE;AAOE,MAAA,OAAO,EAAEG,OAPX;AAQE,MAAA,cAAc,EAAEnD,cARlB;AASE,MAAA,kBAAkB,EAAEiF,kBATtB;AAUE,MAAA,KAAK,EAAErJ,MAAM,CAACc,cAVhB;AAWE,MAAA,UAAU,EAAEkB,UAXd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MADF,CADF,CADF,EAkBG,+DAA0CuF,OAA1C,KAAsDA,OAAO,CAACmC,aAA9D,IACC,gCAAC,mBAAD;AAAqB,MAAA,IAAI,EAAEnC,OAAO,CAACmC,aAAnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAnBJ,EAsBGJ,2BAA2B,IAAI,gCAAC,qBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAtBlC,CADuB,GA0BvB,kEACE,gCAAC,iBAAD;AAAM,MAAA,MAAM,yBAAuBH,KAAnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OACE,gCAAC,OAAD;AACE,MAAA,WAAW,EAAEK,WADf;AAEE,MAAA,WAAW,EACT,+DAA0CjC,OAA1C,IAAqDA,OAAO,CAACkC,WAA7D,GAA2E,EAH/E;AAKE,MAAA,iBAAiB,EAAE1E,eAAe,KAAKwC,OAAO,CAAClG,EALjD;AAME,MAAA,cAAc,EACZqF,cAAc,KAAKa,OAAO,CAAClG,EAA3B,IAAiCkG,OAAO,CAACoC,iBAAzC,GACIjD,cADJ,GAEIU,SATR;AAWE,MAAA,OAAO,EAAEG,OAXX;AAYE,MAAA,cAAc,EAAEnD,cAZlB;AAaE,MAAA,kBAAkB,EAAEiF,kBAbtB;AAcE,MAAA,KAAK,EAAErJ,MAAM,CAACc,cAdhB;AAeE,MAAA,UAAU,EAAEkB,UAfd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MADF,CADF,EAoBG,+DAA0CuF,OAA1C,KAAsDA,OAAO,CAACmC,aAA9D,IACC,gCAAC,mBAAD;AAAqB,MAAA,IAAI,EAAEnC,OAAO,CAACmC,aAAnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MArBJ,EAwBGJ,2BAA2B,IAAI,gCAAC,qBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAxBlC,CA1BF;AAqDD,GAlFD;;AA2GA,MAAML,uBAAuB,GAAG,SAA1BA,uBAA0B,CAACW,KAAD,EAAoB;AAElD,QAAIrE,WAAW,QAAX,IAAAA,WAAW,CAAEK,MAAb,IAAuBK,qBAAqB,CAACwB,OAAtB,CAA8BlC,WAAW,CAACK,MAA1C,CAA3B,EAA8E;AAC5E;AACD;;AAED,QAAIL,WAAJ,YAAIA,WAAW,CAAEK,MAAjB,EAAyB;AACvBK,MAAAA,qBAAqB,CAACwB,OAAtB,CAA8BlC,WAAW,CAACK,MAA1C,IAAoD,IAApD;AACD;;AAED,QAAMiE,QAAQ,GAAG,SAAXA,QAAW,GAAM;AACrB1D,MAAAA,uBAAuB,CAACsB,OAAxB,GAAkC,IAAlC;AAEA,aAAOqC,OAAO,CAACC,OAAR,EAAP;AACD,KAJD;;AAMA,QAAMC,OAAO,GAAG,SAAVA,OAAU,GAAM;AAEpBrC,MAAAA,UAAU,CAAC,YAAM;AACf1B,QAAAA,qBAAqB,CAACwB,OAAtB,GAAgC,EAAhC;AACD,OAFS,EAEP,IAFO,CAAV;AAGD,KALD;;AAQA,QAAIrB,qBAAqB,CAACqB,OAA1B,EAAmC;AACjCrB,MAAAA,qBAAqB,CAACqB,OAAtB,YAAsC,YAAM;AAC1CtB,QAAAA,uBAAuB,CAACsB,OAAxB,GAAkC9D,cAAc,CAACiG,KAAD,CAAd,CAAsBK,IAAtB,CAA2BJ,QAA3B,WAA2CG,OAA3C,CAAlC;AACD,OAFD;AAGD,KAJD,MAIO;AACL7D,MAAAA,uBAAuB,CAACsB,OAAxB,GAAkC9D,cAAc,CAACiG,KAAD,CAAd,CAAsBK,IAAtB,CAA2BJ,QAA3B,WAA2CG,OAA3C,CAAlC;AACD;AACF,GA/BD;;AAsCA,MAAME,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAM;AAElC,QAAI3E,WAAW,QAAX,IAAAA,WAAW,CAAEK,MAAb,IAAuBM,mBAAmB,CAACuB,OAApB,CAA4BlC,WAAW,CAACK,MAAxC,CAA3B,EAA4E;AAC1E;AACD;;AAED,QAAIL,WAAJ,YAAIA,WAAW,CAAEK,MAAjB,EAAyB;AACvBM,MAAAA,mBAAmB,CAACuB,OAApB,CAA4BlC,WAAW,CAACK,MAAxC,IAAkD,IAAlD;AACD;;AAED,QAAMiE,QAAQ,GAAG,SAAXA,QAAW,GAAM;AACrBzD,MAAAA,qBAAqB,CAACqB,OAAtB,GAAgC,IAAhC;AACA,aAAOqC,OAAO,CAACC,OAAR,EAAP;AACD,KAHD;;AAKA,QAAMC,OAAO,GAAG,SAAVA,OAAU,GAAM;AAEpBrC,MAAAA,UAAU,CAAC,YAAM;AACfzB,QAAAA,mBAAmB,CAACuB,OAApB,GAA8B,EAA9B;AACD,OAFS,EAEP,IAFO,CAAV;AAGD,KALD;;AAQA,QAAItB,uBAAuB,CAACsB,OAA5B,EAAqC;AACnCtB,MAAAA,uBAAuB,CAACsB,OAAxB,YAAwC,YAAM;AAC5CrB,QAAAA,qBAAqB,CAACqB,OAAtB,GAAgC,CAACzF,UAAU,GAAG4B,cAAc,EAAjB,GAAsBF,QAAQ,EAAzC,EAC7BuG,IAD6B,CACxBJ,QADwB,WAEvBG,OAFuB,CAAhC;AAGD,OAJD;AAKD,KAND,MAMO;AACL5D,MAAAA,qBAAqB,CAACqB,OAAtB,GAAgC,CAACzF,UAAU,GAAG4B,cAAc,EAAjB,GAAsBF,QAAQ,EAAzC,EAC7BuG,IAD6B,CACxBJ,QADwB,WAEvBG,OAFuB,CAAhC;AAGD;AACF,GAlCD;;AA2CA,MAAMG,YAAyC,GAAG,SAA5CA,YAA4C,CAACC,KAAD,EAAW;AAC3D,QAAI,CAAChI,OAAD,IAAY,CAACkE,gBAAgB,CAACmB,OAA9B,IAAyC,CAAClB,sBAAsB,CAACkB,OAArE,EAA8E;AAC5E;AACD;;AAED,QAAMqB,MAAM,GAAGsB,KAAK,CAACC,WAAN,CAAkBC,aAAlB,CAAgCC,CAA/C;AACA,QAAMC,aAAa,GAAGJ,KAAK,CAACC,WAAN,CAAkBI,iBAAlB,CAAoCC,MAA1D;AACA,QAAMC,aAAa,GAAGP,KAAK,CAACC,WAAN,CAAkBO,WAAlB,CAA8BF,MAApD;AAEA,QAAMG,eAAe,GAAG/B,MAAM,GAAG,GAAjC;AACA,QAAMgC,aAAa,GAAGH,aAAa,GAAGH,aAAhB,GAAgC1B,MAAhC,GAAyC,GAA/D;;AAEA,QAAI+B,eAAJ,EAAqB;AACnB5B,MAAAA,uBAAuB;AACxB;;AAED,QAAI6B,aAAJ,EAAmB;AACjBZ,MAAAA,qBAAqB;AACtB;;AAGD,QAAMa,gBAAgB,GAAGjC,MAAM,IAAI,GAAnC;AACA,QAAMkC,wBAAwB,GAAG,CAACD,gBAAD,IAAqB,EAAC3I,OAAD,YAACA,OAAO,CAAE2G,KAAT,CAAeC,UAAhB,CAAtD;AAEA,QAAMiC,cAAc,GAClB,CAACjJ,UAAD,IAAe8G,MAAM,IAAI,CAAzB,KAA8B1G,OAA9B,oBAA8BA,OAAO,CAAE2G,KAAT,CAAeC,UAA7C,KAA2D5G,OAAO,CAACkG,WAAR,KAAwB,CADrF;;AAGA,QAAI2C,cAAJ,EAAoB;AAClBpH,MAAAA,QAAQ;AACT;;AAED,QAAImH,wBAAwB,IAAI,CAACpE,2BAAjC,EAA8D;AAC5DC,MAAAA,8BAA8B,CAAC,IAAD,CAA9B;AACD,KAFD,MAEO,IAAI,CAACmE,wBAAD,IAA6BpE,2BAAjC,EAA8D;AACnEC,MAAAA,8BAA8B,CAAC,KAAD,CAA9B;AACD;;AAED,QAAI1C,YAAJ,EAAkB;AAChBA,MAAAA,YAAY,CAACiG,KAAD,CAAZ;AACD;AACF,GAxCD;;AA0CA,MAAMc,eAAe;AAAA,gFAAG;AAAA;AAAA;AAAA;AAAA;AAAA,kBACjB9I,OADiB,YACjBA,OAAO,CAAE2G,KAAT,CAAeC,UADE;AAAA;AAAA;AAAA;;AAEpBZ,cAAAA,uBAAuB;AAFH;AAAA,qBAId9D,aAAa,EAJC;;AAAA;AAAA;AAAA;;AAAA;AAKf,kBAAI+B,WAAW,CAACoB,OAAhB,EAAyB;AAC9BpB,gBAAAA,WAAW,CAACoB,OAAZ,CAAoBoB,cAApB,CAAmC;AACjCC,kBAAAA,MAAM,EAAE;AADyB,iBAAnC;AAGD;;AATqB;AAWtBjC,cAAAA,8BAA8B,CAAC,KAAD,CAA9B;;AACA,kBAAI,CAAC7E,UAAL,EAAiB;AACf6B,gBAAAA,QAAQ;AACT;;AAdqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAfqH,eAAe;AAAA;AAAA;AAAA,KAArB;;AAiBA,MAAM1B,WAAW,GAAG,wBAClB,UAAC2B,SAAD,EAAuB;AACrB,QAAMC,0BAA0B,GAAG7F,WAAW,CAAC8F,SAAZ,CACjC,UAAC9D,OAAD;AAAA,aAAa,CAAAA,OAAO,QAAP,YAAAA,OAAO,CAAElG,EAAT,MAAgB8J,SAA7B;AAAA,KADiC,CAAnC;;AAIA,QAAIC,0BAA0B,GAAG,CAAC,CAAlC,EAAqC;AACnC,UAAI;AACF,YAAI/E,WAAW,CAACoB,OAAhB,EAAyB;AACvBpB,UAAAA,WAAW,CAACoB,OAAZ,CAAoB6D,aAApB,CAAkC;AAChCnC,YAAAA,KAAK,EAAEiC,0BADyB;AAEhCG,YAAAA,YAAY,EAAE;AAFkB,WAAlC;AAIA1G,UAAAA,kBAAkB,CAACsG,SAAD,CAAlB;AAEA;AACD;AACF,OAVD,CAUE,OAAOK,CAAP,EAAU,CAEX;AACF;;AAEDjI,IAAAA,oBAAoB,CAAC;AAAE4H,MAAAA,SAAS,EAATA;AAAF,KAAD,CAApB;AACA/C,IAAAA,uBAAuB;AACxB,GAxBiB,EAyBlB,CAACzC,4BAAD,CAzBkB,CAApB;AA4BA,MAAM8F,kBAAkB,GACtBnI,+BAA+B,IAC/BiC,WAAW,CAACmG,MAAZ,CAAmB,UAACnE,OAAD,EAAa;AAC9B,QAAMS,oBAAoB,GAAGT,OAAO,CAACU,IAAR,KAAiB,SAA9C;;AACA,QAAI,CAACD,oBAAD,IAAyBT,OAAO,CAACoE,WAArC,EAAkD;AAChD,aAAOpE,OAAO,CAACoE,WAAR,CAAoBC,IAApB,CACL,UAACC,UAAD;AAAA,eACEA,UAAU,CAAC5D,IAAX,KAAoB,OAApB,IACA,CAAC4D,UAAU,CAACC,UADZ,IAEA,CAACD,UAAU,CAACE,aAFZ,KAGCF,UAAU,CAACG,SAAX,IAAwBH,UAAU,CAACI,SAHpC,CADF;AAAA,OADK,CAAP;AAOD;;AACD,WAAO,KAAP;AACD,GAZD,CAFF;AAoBA,MAAMC,WAAW,GACf5I,+BAA+B,IAC/BmI,kBADA,IAEAA,kBAAkB,CACfU,GADH,CACO,UAAC5E,OAAD;AAAA;;AAAA,mCACHA,OAAO,CAACoE,WADL,qBACH,qBACIQ,GADJ,CACQ,UAACN,UAAD;AAAA,aAAgBA,UAAU,CAACG,SAAX,IAAwBH,UAAU,CAACI,SAAnC,IAAgD,EAAhE;AAAA,KADR,EAEGG,IAFH,EADG;AAAA,GADP,EAMGA,IANH,EAHF;AAWA,MAAMC,0BAA0B,GAC9B/I,+BAA+B,IAAImI,kBAAnC,IAAyDA,kBAAkB,CAAC7F,MAD9E;AAEA,MAAM0G,YAAY,GAAG,CAAC,CAACrH,MAAvB;AAEA,wBAAU,YAAM;AACd,QACE3B,+BAA+B,IAC/BD,YADA,KAEErB,UAAU,IAAIiD,MAAf,IAA2B,CAACjD,UAAD,IAAe,CAACiD,MAF5C,CADF,EAIE;AACAN,MAAAA,SAAS,CAAC8G,kBAAD,CAAT;AACD;AACF,GARD,EAQG,CACDS,WADC,EAED7I,YAFC,EAGDC,+BAHC,EAID+I,0BAJC,EAKDC,YALC,EAMDtK,UANC,CARH;AAiBA,MAAMuK,sBAAsB,GAC1B,CAAAzF,gBAAgB,QAAhB,YAAAA,gBAAgB,CAAE0F,WAAlB,QAAoC,IAAIhL,IAAJ,GAAWgL,WAAX,EAApC,GAA+D,OAA/D,GAAyE,aAD3E;AAEA,MAAMC,iBAAiB,GACrB3F,gBAAgB,IAAI,CAAC9D,oBAArB,GAA4CgC,eAAe,CAAC8B,gBAAD,CAA3D,GAAgF,IADlF;AAEA,MAAM4F,wBAAwB,GAC5BD,iBAAiB,KAAK,IAAtB,IAA8BzJ,oBAA9B,GACI,IADJ,GAEI,uCAAcyJ,iBAAd,IACAA,iBAAiB,CAACE,MAAlB,CAAyBJ,sBAAzB,CADA,GAEA,IAAI/K,IAAJ,CAASiL,iBAAT,EAA4BvE,YAA5B,EALN;;AAOA,MAAM0E,kBAAkB,GAAG,SAArBA,kBAAqB,GAAM;AAC/B,QAAI,CAACpG,QAAD,IAAa/B,cAAjB,EAAiC;AAC/BG,MAAAA,iBAAiB,CAACwC,SAAD,CAAjB;AACA9E,MAAAA,WAAW;AACZ;AACF,GALD;;AAMA,MAAMuK,iBAAiB,GAAG,SAApBA,iBAAoB;AAAA,WAAM,CAACrG,QAAD,IAAa/B,cAAb,IAA+BgC,WAAW,CAAC,IAAD,CAAhD;AAAA,GAA1B;;AACA,MAAMqG,eAAe,GAAG,SAAlBA,eAAkB;AAAA,WAAMtG,QAAQ,IAAI/B,cAAZ,IAA8BgC,WAAW,CAAC,KAAD,CAA/C;AAAA,GAAxB;;AAEA,MAAMsG,WAAW,GAAG,SAAdA,WAAc,CAACC,GAAD,EAAwD;AAC1E3G,IAAAA,WAAW,CAACoB,OAAZ,GAAsBuF,GAAtB;;AAEA,QAAItI,cAAJ,EAAoB;AAClBA,MAAAA,cAAc,CAACsI,GAAD,CAAd;AACD;AACF,GAND;;AAOA,MAAMC,wBAAwB,GAAG,SAA3BA,wBAA2B;AAAA,WAC/B,gCAAC,iBAAD;AAAM,MAAA,KAAK,EAAE,CAACjN,MAAM,CAACK,IAAR,EAAcL,MAAM,CAACU,MAArB,CAAb;AAA2C,MAAA,MAAM,EAAC,aAAlD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OACE,gCAAC,mBAAD;AAAqB,MAAA,QAAQ,EAAC,SAA9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MADF,CAD+B;AAAA,GAAjC;;AAMA,MAAI,CAACkC,QAAL,EAAe,OAAO,IAAP;;AAEf,MAAIY,OAAJ,EAAa;AACX,WACE,gCAAC,iBAAD;AAAM,MAAA,KAAK,EAAExD,MAAM,CAACK,IAApB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OACE,gCAAC,gBAAD;AAAkB,MAAA,QAAQ,EAAC,SAA3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MADF,CADF;AAKD;;AAED,SACE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CAACL,MAAM,CAACG,SAAR,EAAmB;AAAE+M,MAAAA,eAAe,EAAE7H;AAAnB,KAAnB,EAAoDlF,SAApD,CADT;AAEE,IAAA,MAAM,EAAC,2BAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAIE,gCAAC,QAAD;AACE,IAAA,qBAAqB,EAAE,CAACH,MAAM,CAACO,gBAAR,EAA0BA,gBAA1B,CADzB;AAEE,IAAA,IAAI,EAAEgF,WAFR;AAIE,IAAA,SAAS,EAAE9C,QAAQ,IAAI,EAACL,OAAD,YAACA,OAAO,CAAE2G,KAAT,CAAeC,UAAhB,CAJzB;AAKE,IAAA,QAAQ,EAAE5F,QALZ;AAME,IAAA,yBAAyB,EAAC,SAN5B;AAOE,IAAA,YAAY,EAAEjC,YAPhB;AAQE,IAAA,kBAAkB,EAAE8L,wBARtB;AASE,IAAA,mBAAmB,EAAEpK,eATvB;AAUE,IAAA,mBAAmB,EAAEC,eAVvB;AAWE,IAAA,8BAA8B,EAAE;AAC9BqK,MAAAA,wBAAwB,EAAEpH,eAAe,GAAG,EAAH,GAAQqB,SADnB;AAE9BgG,MAAAA,kBAAkB,EAAE;AAFU,KAXlC;AAeE,IAAA,QAAQ,EAAEjD,YAfZ;AAgBE,IAAA,iBAAiB,EAAE0C,iBAhBrB;AAiBE,IAAA,eAAe,EAAEC,eAjBnB;AAkBE,IAAA,UAAU,EAAEF,kBAlBd;AAmBE,IAAA,sBAAsB,EAAEzE,sBAAsB,CAACV,OAnBjD;AAoBE,IAAA,GAAG,EAAEsF,WApBP;AAqBE,IAAA,UAAU,EAAE7D,UArBd;AAsBE,IAAA,aAAa,EAAE7E,OAAO,KAAK,MAtB7B;AAuBE,IAAA,KAAK,EAAE,CAACrE,MAAM,CAACa,aAAR,EAAuBA,aAAvB,CAvBT;AAwBE,IAAA,MAAM,EAAC,mBAxBT;AAyBE,IAAA,iBAAiB,EAAEc;AAzBrB,KA0BMQ,uBA1BN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAJF,EAgCG,CAACqB,OAAD,IACC,kEACE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAExD,MAAM,CAACgB,YAApB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACG0L,wBAAwB,KACtB5H,YAAY,GACX,gCAAC,YAAD;AAAc,IAAA,UAAU,EAAE4H,wBAA1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADW,GAET/G,4BAA4B,GAC9B,gCAAC,UAAD;AAAY,IAAA,UAAU,EAAE+G,wBAAxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAD8B,GAE5B,IALmB,CAD3B,CADF,EASG,CAAChK,sBAAD,IAA2BwC,eAA3B,IACC,gCAAC,wBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,eAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,CAVJ,EAcE,gCAAC,oBAAD;AACE,IAAA,OAAO,EAAEgG,eADX;AAEE,IAAA,gBAAgB,EAAEtE,2BAFpB;AAGE,IAAA,WAAW,EAAE5E,UAAU,GAAG,CAAH,GAAOI,OAAP,oBAAOA,OAAO,CAAEkG,WAAT,EAHhC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAdF,CAjCJ,EAsDE,gCAAC,oBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAtDF,CADF;AA0DD,CAvtBD;;AA6tBO,IAAM+E,WAAW,GAAG,SAAdA,WAAc,CAGzBvL,KAHyB,EAItB;AACH,8BAA2D,0DAA3D;AAAA,MAAQQ,WAAR,yBAAQA,WAAR;AAAA,MAAqBmC,cAArB,yBAAqBA,cAArB;AAAA,MAAqCG,iBAArC,yBAAqCA,iBAArC;;AACA,2BAkBI,wCAlBJ;AAAA,MACExC,OADF,sBACEA,OADF;AAAA,MAEEK,QAFF,sBAEEA,QAFF;AAAA,MAGEE,mBAHF,sBAGEA,mBAHF;AAAA,MAIE2K,2BAJF,sBAIEA,2BAJF;AAAA,MAKEC,KALF,sBAKEA,KALF;AAAA,MAMEvK,oBANF,sBAMEA,oBANF;AAAA,MAOEwK,eAPF,sBAOEA,eAPF;AAAA,MAQEjK,oBARF,sBAQEA,oBARF;AAAA,MASEC,OATF,sBASEA,OATF;AAAA,MAUEC,gBAVF,sBAUEA,gBAVF;AAAA,MAWEI,QAXF,sBAWEA,QAXF;AAAA,MAYEI,oBAZF,sBAYEA,oBAZF;AAAA,MAaEK,aAbF,sBAaEA,aAbF;AAAA,MAcEE,4BAdF,sBAcEA,4BAdF;AAAA,MAeEK,kBAfF,sBAeEA,kBAfF;AAAA,MAgBEC,YAhBF,sBAgBEA,YAhBF;AAAA,MAiBEC,eAjBF,sBAiBEA,eAjBF;;AAmBA,wBAAmB,kCAAnB;AAAA,MAAQ1C,MAAR,mBAAQA,MAAR;;AACA,8BAAsB,kDAAtB;AAAA,MAAQsC,SAAR,yBAAQA,SAAR;;AACA,4BAeI,0CAfJ;AAAA,MACEpC,UADF,uBACEA,UADF;AAAA,MAEEC,6BAFF,uBAEEA,6BAFF;AAAA,MAGEE,sBAHF,uBAGEA,sBAHF;AAAA,MAIEE,QAJF,uBAIEA,QAJF;AAAA,MAKEK,iCALF,uBAKEA,iCALF;AAAA,MAMEC,mBANF,uBAMEA,mBANF;AAAA,MAOEC,qBAPF,uBAOEA,qBAPF;AAAA,MAQEG,+BARF,uBAQEA,+BARF;AAAA,MASEQ,OATF,uBASEA,OATF;AAAA,MAUEC,aAVF,uBAUEA,aAVF;AAAA,MAWEC,cAXF,uBAWEA,cAXF;AAAA,MAYEO,oBAZF,uBAYEA,oBAZF;AAAA,MAaEW,eAbF,uBAaEA,eAbF;AAAA,MAcEC,wBAdF,uBAcEA,wBAdF;;AAgBA,8BAAqC,kEAArC;AAAA,MAAQzB,QAAR,yBAAQA,QAAR;AAAA,MAAkBC,cAAlB,yBAAkBA,cAAlB;;AACA,2BAAoB,wCAApB;AAAA,MAAQU,OAAR,sBAAQA,OAAR;;AACA,0BAAmC,sCAAnC;AAAA,MAAQT,cAAR,qBAAQA,cAAR;AAAA,MAAwBqB,MAAxB,qBAAwBA,MAAxB;;AACA,8BAA+B,gDAA/B;AAAA,MAAQwI,CAAR,yBAAQA,CAAR;AAAA,MAAWzI,eAAX,yBAAWA,eAAX;;AAEA,SACE,gCAAC,sBAAD;AAEI5C,IAAAA,OAAO,EAAPA,OAFJ;AAGIC,IAAAA,MAAM,EAANA,MAHJ;AAIIC,IAAAA,WAAW,EAAXA,WAJJ;AAKIC,IAAAA,UAAU,EAAVA,UALJ;AAMIC,IAAAA,6BAA6B,EAA7BA,6BANJ;AAOIC,IAAAA,QAAQ,EAARA,QAPJ;AAQIC,IAAAA,sBAAsB,EAAtBA,sBARJ;AASIC,IAAAA,mBAAmB,EAAnBA,mBATJ;AAUI2K,IAAAA,2BAA2B,EAA3BA,2BAVJ;AAWIC,IAAAA,KAAK,EAALA,KAXJ;AAYI3K,IAAAA,QAAQ,EAARA,QAZJ;AAaII,IAAAA,oBAAoB,EAApBA,oBAbJ;AAcIC,IAAAA,iCAAiC,EAAjCA,iCAdJ;AAeIC,IAAAA,mBAAmB,EAAnBA,mBAfJ;AAgBIC,IAAAA,qBAAqB,EAArBA,qBAhBJ;AAiBIE,IAAAA,YAAY,EAAEmK,eAjBlB;AAkBIlK,IAAAA,+BAA+B,EAA/BA,+BAlBJ;AAmBIC,IAAAA,oBAAoB,EAApBA,oBAnBJ;AAoBIC,IAAAA,OAAO,EAAPA,OApBJ;AAqBIC,IAAAA,gBAAgB,EAAhBA,gBArBJ;AAsBIC,IAAAA,QAAQ,EAARA,QAtBJ;AAuBIC,IAAAA,cAAc,EAAdA,cAvBJ;AAwBIC,IAAAA,cAAc,EAAdA,cAxBJ;AAyBIC,IAAAA,QAAQ,EAARA,QAzBJ;AA0BIC,IAAAA,OAAO,EAAPA,OA1BJ;AA2BIC,IAAAA,aAAa,EAAbA,aA3BJ;AA4BIC,IAAAA,cAAc,EAAdA,cA5BJ;AA6BIC,IAAAA,oBAAoB,EAApBA,oBA7BJ;AA8BII,IAAAA,OAAO,EAAPA,OA9BJ;AA+BIC,IAAAA,aAAa,EAAbA,aA/BJ;AAgCIC,IAAAA,oBAAoB,EAApBA,oBAhCJ;AAiCIC,IAAAA,4BAA4B,EAA5BA,4BAjCJ;AAkCIC,IAAAA,cAAc,EAAdA,cAlCJ;AAmCIE,IAAAA,SAAS,EAATA,SAnCJ;AAoCIC,IAAAA,iBAAiB,EAAjBA,iBApCJ;AAqCIC,IAAAA,kBAAkB,EAAlBA,kBArCJ;AAsCIC,IAAAA,YAAY,EAAZA,YAtCJ;AAuCI2I,IAAAA,CAAC,EAADA,CAvCJ;AAwCI1I,IAAAA,eAAe,EAAfA,eAxCJ;AAyCIC,IAAAA,eAAe,EAAfA,eAzCJ;AA0CIC,IAAAA,MAAM,EAANA,MA1CJ;AA2CIC,IAAAA,eAAe,EAAfA,eA3CJ;AA4CIC,IAAAA,wBAAwB,EAAxBA;AA5CJ,KA8CMrD,KA9CN;AA+CE,IAAA,aAAa,EAAE,CAACwL,2BAAD,IAAgCxL,KAAK,CAACoC,aA/CvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AAmDD,CAnGM","sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n FlatListProps,\n FlatList as FlatListType,\n ScrollViewProps,\n StyleSheet,\n View,\n ViewToken,\n} from 'react-native';\n\nimport type { Channel as StreamChannel } from 'stream-chat';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n useMessageList,\n} from './hooks/useMessageList';\nimport { InlineLoadingMoreIndicator } from './InlineLoadingMoreIndicator';\nimport { InlineLoadingMoreRecentIndicator } from './InlineLoadingMoreRecentIndicator';\nimport { InlineLoadingMoreThreadIndicator } from './InlineLoadingMoreThreadIndicator';\nimport { getLastReceivedMessage } from './utils/getLastReceivedMessage';\n\nimport {\n AttachmentPickerContextValue,\n useAttachmentPickerContext,\n} from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport {\n PaginatedMessageListContextValue,\n usePaginatedMessageListContext,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport { mergeThemes, ThemeProvider, useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n isDayOrMoment,\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n flex: 1,\n width: '100%',\n },\n contentContainer: {\n flexGrow: 1,\n /**\n * paddingBottom is set to 4 to account for the default date\n * header and inline indicator alignment. The top margin is 8\n * on the header but 4 on the inline date, this adjusts the spacing\n * to allow the \"first\" inline date to align with the date header.\n */\n paddingBottom: 4,\n },\n flex: { flex: 1 },\n invert: { transform: [{ scaleY: -1 }] },\n listContainer: {\n flex: 1,\n width: '100%',\n },\n messagePadding: {\n paddingHorizontal: 8,\n },\n stickyHeader: {\n position: 'absolute',\n top: 0,\n },\n});\n\nconst keyExtractor = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n item: MessageType<StreamChatGenerics>,\n) =>\n item.id ||\n (item.created_at\n ? typeof item.created_at === 'string'\n ? item.created_at\n : item.created_at.toISOString()\n : Date.now().toString());\n\nconst flatListViewabilityConfig = {\n viewAreaCoveragePercentThreshold: 1,\n};\n\ntype MessageListPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<AttachmentPickerContextValue, 'closePicker' | 'selectedPicker' | 'setSelectedPicker'> &\n Pick<\n ChannelContextValue<StreamChatGenerics>,\n | 'channel'\n | 'disabled'\n | 'EmptyStateIndicator'\n | 'hideStickyDateHeader'\n | 'loadChannelAtMessage'\n | 'loading'\n | 'LoadingIndicator'\n | 'markRead'\n | 'NetworkDownIndicator'\n | 'reloadChannel'\n | 'scrollToFirstUnreadThreshold'\n | 'setTargetedMessage'\n | 'StickyHeader'\n | 'targetedMessage'\n > &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setImages'> &\n Pick<PaginatedMessageListContextValue<StreamChatGenerics>, 'loadMore' | 'loadMoreRecent'> &\n Pick<OverlayContextValue, 'overlay'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'deletedMessagesVisibilityType'\n | 'DateHeader'\n | 'disableTypingIndicator'\n | 'FlatList'\n | 'initialScrollToFirstUnreadMessage'\n | 'InlineDateSeparator'\n | 'InlineUnreadIndicator'\n | 'legacyImageViewerSwipeBehaviour'\n | 'Message'\n | 'ScrollToBottomButton'\n | 'MessageSystem'\n | 'myMessageTheme'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n > &\n Pick<ThreadContextValue<StreamChatGenerics>, 'loadMoreThread' | 'thread'> &\n Pick<TranslationContextValue, 't' | 'tDateTimeParser'> & {\n /**\n * Besides existing (default) UX behavior of underlying FlatList of MessageList component, if you want\n * to attach some additional props to underlying FlatList, you can add it to following prop.\n *\n * You can find list of all the available FlatList props here - https://facebook.github.io/react-native/docs/flatlist#props\n *\n * **NOTE** Don't use `additionalFlatListProps` to get access to ref of flatlist. Use `setFlatListRef` instead.\n *\n * e.g.\n * ```js\n * <MessageList\n * additionalFlatListProps={{ bounces: true, keyboardDismissMode: true }} />\n * ```\n */\n additionalFlatListProps?: Partial<FlatListProps<MessageType<StreamChatGenerics>>>;\n /**\n * UI component for footer of message list. By default message list will use `InlineLoadingMoreIndicator`\n * as FooterComponent. If you want to implement your own inline loading indicator, you can access `loadingMore`\n * from context.\n *\n * This is a [ListHeaderComponent](https://facebook.github.io/react-native/docs/flatlist#listheadercomponent) of FlatList\n * used in MessageList. Should be used for header by default if inverted is true or defaulted\n */\n FooterComponent?: React.ComponentType;\n /**\n * UI component for header of message list. By default message list will use `InlineLoadingMoreRecentIndicator`\n * as HeaderComponent. If you want to implement your own inline loading indicator, you can access `loadingMoreRecent`\n * from context.\n *\n * This is a [ListFooterComponent](https://facebook.github.io/react-native/docs/flatlist#listheadercomponent) of FlatList\n * used in MessageList. Should be used for header if inverted is false\n */\n HeaderComponent?: React.ComponentType;\n /** Whether or not the FlatList is inverted. Defaults to true */\n inverted?: boolean;\n isListActive?: boolean;\n /** Turn off grouping of messages by user */\n noGroupByUser?: boolean;\n onListScroll?: ScrollViewProps['onScroll'];\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: ThreadContextValue<StreamChatGenerics>['thread']) => void;\n /**\n * Use `setFlatListRef` to get access to ref to inner FlatList.\n *\n * e.g.\n * ```js\n * <MessageList\n * setFlatListRef={(ref) => {\n * // Use ref for your own good\n * }}\n * ```\n */\n setFlatListRef?: (ref: FlatListType<MessageType<StreamChatGenerics>> | null) => void;\n /**\n * Boolean whether or not the Messages in the MessageList are part of a Thread\n **/\n threadList?: boolean;\n };\n\n/**\n * The message list component renders a list of messages. It consumes the following contexts:\n *\n * [ChannelContext](https://getstream.github.io/stream-chat-react-native/v3/#channelcontext)\n * [ChatContext](https://getstream.github.io/stream-chat-react-native/v3/#chatcontext)\n * [MessagesContext](https://getstream.github.io/stream-chat-react-native/v3/#messagescontext)\n * [ThreadContext](https://getstream.github.io/stream-chat-react-native/v3/#threadcontext)\n * [TranslationContext](https://getstream.github.io/stream-chat-react-native/v3/#translationcontext)\n */\nconst MessageListWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageListPropsWithContext<StreamChatGenerics>,\n) => {\n const LoadingMoreIndicator = props.threadList\n ? InlineLoadingMoreThreadIndicator\n : InlineLoadingMoreIndicator;\n const {\n additionalFlatListProps,\n channel,\n client,\n closePicker,\n DateHeader,\n deletedMessagesVisibilityType,\n disabled,\n disableTypingIndicator,\n EmptyStateIndicator,\n FlatList,\n FooterComponent = LoadingMoreIndicator,\n HeaderComponent = InlineLoadingMoreRecentIndicator,\n hideStickyDateHeader,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n inverted = true,\n isListActive = false,\n legacyImageViewerSwipeBehaviour,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n loadMore,\n loadMoreRecent,\n loadMoreThread,\n markRead,\n Message,\n MessageSystem,\n myMessageTheme,\n NetworkDownIndicator,\n noGroupByUser,\n onListScroll,\n onThreadSelect,\n overlay,\n reloadChannel,\n ScrollToBottomButton,\n scrollToFirstUnreadThreshold,\n selectedPicker,\n setFlatListRef,\n setImages,\n setSelectedPicker,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n tDateTimeParser,\n thread,\n threadList = false,\n TypingIndicator,\n TypingIndicatorContainer,\n } = props;\n\n const { theme } = useTheme();\n\n const {\n colors: { white_snow },\n messageList: { container, contentContainer, listContainer },\n } = theme;\n\n const modifiedTheme = useMemo(\n () => mergeThemes({ style: myMessageTheme, theme }),\n [myMessageTheme, theme],\n );\n\n const messageList = useMessageList<StreamChatGenerics>({\n deletedMessagesVisibilityType,\n inverted,\n noGroupByUser,\n threadList,\n });\n const messageListLengthBeforeUpdate = useRef(0);\n const messageListLengthAfterUpdate = messageList.length;\n\n /**\n * We need topMessage and channelLastRead values to set the initial scroll position.\n * So these values only get used if `initialScrollToFirstUnreadMessage` prop is true.\n */\n const topMessageBeforeUpdate = useRef<MessageType<StreamChatGenerics>>();\n const topMessageAfterUpdate = messageList[messageList.length - 1];\n\n const [autoscrollToTop, setAutoscrollToTop] = useState(false);\n\n /**\n * We want to call onEndReached and onStartReached only once, per content length.\n * We keep track of calls to these functions per content length, with following trackers.\n */\n const onStartReachedTracker = useRef<Record<number, boolean>>({});\n const onEndReachedTracker = useRef<Record<number, boolean>>({});\n\n const onStartReachedInPromise = useRef<Promise<void> | null>(null);\n const onEndReachedInPromise = useRef<Promise<void> | null>(null);\n\n const flatListRef = useRef<FlatListType<MessageType<StreamChatGenerics>> | null>(null);\n\n const initialScrollSet = useRef<boolean>(false);\n const channelResyncScrollSet = useRef<boolean>(true);\n\n const [hasMoved, setHasMoved] = useState(false);\n const [lastReceivedId, setLastReceivedId] = useState(getLastReceivedMessage(messageList)?.id);\n const [scrollToBottomButtonVisible, setScrollToBottomButtonVisible] = useState(false);\n\n const [stickyHeaderDate, setStickyHeaderDate] = useState<Date | undefined>();\n const stickyHeaderDateRef = useRef<Date | undefined>();\n /**\n * channel.lastRead throws error if the channel is not initialized.\n */\n const getLastReadSafely = () => (channel?.initialized ? channel.lastRead() : undefined);\n\n const channelLastRead = useRef(getLastReadSafely());\n\n const isUnreadMessage = (\n message: MessageType<StreamChatGenerics> | undefined,\n lastRead?: ReturnType<StreamChannel<StreamChatGenerics>['lastRead']>,\n ) => message && lastRead && message.created_at && lastRead < message.created_at;\n\n /**\n * If the top message in the list is unread, then we should scroll to top of the list.\n * This is to handle the case when entire message list is unread.\n * This scroll get set only on load, and never again.\n */\n const setInitialScrollIfNeeded = () => {\n // If the feature is disabled or initial scroll position is already set.\n if (!initialScrollToFirstUnreadMessage || initialScrollSet.current) {\n initialScrollSet.current = true;\n return;\n }\n if (isUnreadMessage(topMessageBeforeUpdate.current, channelLastRead.current)) {\n if (flatListRef.current) {\n flatListRef.current.scrollToEnd();\n }\n setTimeout(() => {\n initialScrollSet.current = true;\n }, 500);\n } else if (!initialScrollSet.current) {\n initialScrollSet.current = true;\n }\n };\n\n const updateStickyHeaderDateIfNeeded = (viewableItems: ViewToken[]) => {\n if (viewableItems.length) {\n const lastItem = viewableItems.pop() as {\n item: MessageType<StreamChatGenerics>;\n };\n\n const isMessageTypeDeleted = lastItem.item.type === 'deleted';\n\n if (\n lastItem?.item?.created_at &&\n !isMessageTypeDeleted &&\n typeof lastItem.item.created_at !== 'string' &&\n lastItem.item.created_at.toDateString() !== stickyHeaderDateRef.current?.toDateString()\n ) {\n stickyHeaderDateRef.current = lastItem.item.created_at;\n setStickyHeaderDate(lastItem.item.created_at);\n }\n }\n };\n\n /**\n * FlatList doesn't accept changeable function for onViewableItemsChanged prop.\n * Thus useRef.\n */\n const onViewableItemsChanged = useRef(\n ({ viewableItems }: { viewableItems: ViewToken[] | undefined }) => {\n if (viewableItems && !hideStickyDateHeader) {\n updateStickyHeaderDateIfNeeded(viewableItems);\n }\n setInitialScrollIfNeeded();\n },\n );\n\n const resetPaginationTrackers = () => {\n onStartReachedTracker.current = {};\n onEndReachedTracker.current = {};\n };\n\n useEffect(() => {\n setScrollToBottomButtonVisible(false);\n }, [disabled]);\n\n useEffect(() => {\n /**\n * 1. !initialScrollToFirstUnreadMessage && channel.countUnread() > 0\n *\n * In this case MessageList won't scroll to first unread message when opened, so we can mark\n * the channel as read right after opening.\n *\n * 2. initialScrollToFirstUnreadMessage && channel.countUnread() <= scrollToFirstUnreadThreshold\n *\n * In this case MessageList will be opened to first unread message.\n * But if there are not enough (scrollToFirstUnreadThreshold) unread messages, then MessageList\n * won't need to scroll up. So we can safely mark the channel as read right after opening.\n */\n const shouldMarkReadOnFirstLoad =\n !loading &&\n channel &&\n ((!initialScrollToFirstUnreadMessage && channel.countUnread() > 0) ||\n (initialScrollToFirstUnreadMessage &&\n channel.countUnread() <= scrollToFirstUnreadThreshold));\n\n if (shouldMarkReadOnFirstLoad) {\n markRead();\n }\n }, [loading]);\n\n useEffect(() => {\n const lastReceivedMessage = getLastReceivedMessage(messageList);\n\n const hasNewMessage = lastReceivedId !== lastReceivedMessage?.id;\n const isMyMessage = lastReceivedMessage?.user?.id === client.userID;\n\n setLastReceivedId(lastReceivedMessage?.id);\n\n /**\n * Scroll down when\n * 1. you send a new message to channel\n * 2. new message list is small than the one before update - channel has resynced\n * 3. created_at timestamp of top message before update is lesser than created_at timestamp of top message after update - channel has resynced\n */\n const scrollToBottomIfNeeded = () => {\n if (!client || !channel || messageList.length === 0) {\n return;\n }\n\n if (\n (hasNewMessage && isMyMessage) ||\n messageListLengthAfterUpdate < messageListLengthBeforeUpdate.current ||\n (topMessageBeforeUpdate.current?.created_at &&\n topMessageAfterUpdate?.created_at &&\n topMessageBeforeUpdate.current.created_at < topMessageAfterUpdate.created_at)\n ) {\n channelResyncScrollSet.current = false;\n setScrollToBottomButtonVisible(false);\n resetPaginationTrackers();\n\n setTimeout(\n () =>\n flatListRef.current?.scrollToOffset({\n offset: 0,\n }),\n 50,\n );\n setTimeout(() => {\n channelResyncScrollSet.current = true;\n if (channel.countUnread() > 0) {\n markRead();\n }\n }, 500);\n }\n };\n\n if (threadList || channel?.state.isUpToDate) {\n scrollToBottomIfNeeded();\n } else if (!scrollToBottomButtonVisible) {\n setScrollToBottomButtonVisible(true);\n }\n\n if (\n !channel?.state.isUpToDate &&\n flatListRef.current &&\n messageListLengthBeforeUpdate.current === 0 &&\n messageListLengthAfterUpdate < 10\n ) {\n /**\n * Trigger onStartReached on first load, if messages are not enough to fill the screen.\n * This is important especially for android, where you can't overscroll.\n */\n maybeCallOnStartReached(10);\n }\n\n /**\n * channelLastRead and topMessage are only used for setting initial scroll.\n * So lets not set it if `initialScrollToFirstUnreadMessage` prop is false.\n * OR if the scroll is already set.\n */\n if (initialScrollToFirstUnreadMessage && !initialScrollSet.current) {\n channelLastRead.current = getLastReadSafely();\n }\n\n messageListLengthBeforeUpdate.current = messageListLengthAfterUpdate;\n topMessageBeforeUpdate.current = topMessageAfterUpdate;\n }, [messageListLengthAfterUpdate, topMessageAfterUpdate?.id]);\n\n useEffect(() => {\n if (!channel?.state.isUpToDate && autoscrollToTop) {\n setAutoscrollToTop(false);\n } else if (channel?.state.isUpToDate && !autoscrollToTop) {\n setAutoscrollToTop(true);\n }\n }, [messageListLengthAfterUpdate]);\n\n const renderItem = ({\n index,\n item: message,\n }: {\n index: number;\n item: MessageType<StreamChatGenerics>;\n }) => {\n if (!channel || !channel.initialized) return null;\n\n const lastRead = getLastReadSafely();\n\n const lastMessage = messageList?.[index + 1];\n\n const showUnreadUnderlay = !!isUnreadMessage(message, lastRead) && scrollToBottomButtonVisible;\n const insertInlineUnreadIndicator =\n showUnreadUnderlay && !isUnreadMessage(lastMessage, lastRead);\n\n if (message.type === 'system') {\n return (\n <>\n <View testID={`message-list-item-${index}`}>\n <MessageSystem message={message} style={styles.messagePadding} />\n </View>\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n );\n }\n\n const wrapMessageInTheme = client.userID === message.user?.id && !!myMessageTheme;\n return wrapMessageInTheme ? (\n <>\n <ThemeProvider mergedStyle={modifiedTheme}>\n <View testID={`message-list-item-${index}`}>\n <Message\n goToMessage={goToMessage}\n groupStyles={\n isMessageWithStylesReadByAndDateSeparator(message) ? message.groupStyles : []\n }\n isTargetedMessage={targetedMessage === message.id}\n lastReceivedId={lastReceivedId === message.id ? lastReceivedId : undefined}\n message={message}\n onThreadSelect={onThreadSelect}\n showUnreadUnderlay={showUnreadUnderlay}\n style={styles.messagePadding}\n threadList={threadList}\n />\n </View>\n </ThemeProvider>\n {isMessageWithStylesReadByAndDateSeparator(message) && message.dateSeparator && (\n <InlineDateSeparator date={message.dateSeparator} />\n )}\n {/* Adding indicator below the messages, since the list is inverted */}\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n ) : (\n <>\n <View testID={`message-list-item-${index}`}>\n <Message\n goToMessage={goToMessage}\n groupStyles={\n isMessageWithStylesReadByAndDateSeparator(message) ? message.groupStyles : []\n }\n isTargetedMessage={targetedMessage === message.id}\n lastReceivedId={\n lastReceivedId === message.id || message.quoted_message_id\n ? lastReceivedId\n : undefined\n }\n message={message}\n onThreadSelect={onThreadSelect}\n showUnreadUnderlay={showUnreadUnderlay}\n style={styles.messagePadding}\n threadList={threadList}\n />\n </View>\n {isMessageWithStylesReadByAndDateSeparator(message) && message.dateSeparator && (\n <InlineDateSeparator date={message.dateSeparator} />\n )}\n {/* Adding indicator below the messages, since the list is inverted */}\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n );\n };\n\n /**\n * We are keeping full control on message pagination, and not relying on react-native for it.\n * The reasons being,\n * 1. FlatList doesn't support onStartReached prop\n * 2. `onEndReached` function prop available on react-native, gets executed\n * once per content length (and thats actually a nice optimization strategy).\n * But it also means, we always need to prioritize onEndReached above our\n * logic for `onStartReached`.\n * 3. `onEndReachedThreshold` prop decides - at which scroll position to call `onEndReached`.\n * Its a factor of content length (which is necessary for \"real\" infinite scroll). But on\n * the other hand, it also makes calls to `onEndReached` (and this `channel.query`) way\n * too early during scroll, which we don't really need. So we are going to instead\n * keep some fixed offset distance, to decide when to call `loadMore` or `loadMoreRecent`.\n *\n * We are still gonna keep the optimization, which react-native does - only call onEndReached\n * once per content length.\n */\n\n /**\n * 1. Makes a call to `loadMoreRecent` function, which queries more recent messages.\n * 2. Ensures that we call `loadMoreRecent`, once per content length\n * 3. If the call to `loadMore` is in progress, we wait for it to finish to make sure scroll doesn't jump.\n */\n const maybeCallOnStartReached = (limit?: number) => {\n // If onStartReached has already been called for given data length, then ignore.\n if (messageList?.length && onStartReachedTracker.current[messageList.length]) {\n return;\n }\n\n if (messageList?.length) {\n onStartReachedTracker.current[messageList.length] = true;\n }\n\n const callback = () => {\n onStartReachedInPromise.current = null;\n\n return Promise.resolve();\n };\n\n const onError = () => {\n /** Release the onStartReached trigger after 2 seconds, to try again */\n setTimeout(() => {\n onStartReachedTracker.current = {};\n }, 2000);\n };\n\n // If onEndReached is in progress, better to wait for it to finish for smooth UX\n if (onEndReachedInPromise.current) {\n onEndReachedInPromise.current.finally(() => {\n onStartReachedInPromise.current = loadMoreRecent(limit).then(callback).catch(onError);\n });\n } else {\n onStartReachedInPromise.current = loadMoreRecent(limit).then(callback).catch(onError);\n }\n };\n\n /**\n * 1. Makes a call to `loadMore` function, which queries more older messages.\n * 2. Ensures that we call `loadMore`, once per content length\n * 3. If the call to `loadMoreRecent` is in progress, we wait for it to finish to make sure scroll doesn't jump.\n */\n const maybeCallOnEndReached = () => {\n // If onEndReached has already been called for given messageList length, then ignore.\n if (messageList?.length && onEndReachedTracker.current[messageList.length]) {\n return;\n }\n\n if (messageList?.length) {\n onEndReachedTracker.current[messageList.length] = true;\n }\n\n const callback = () => {\n onEndReachedInPromise.current = null;\n return Promise.resolve();\n };\n\n const onError = () => {\n /** Release the onEndReachedTracker trigger after 2 seconds, to try again */\n setTimeout(() => {\n onEndReachedTracker.current = {};\n }, 2000);\n };\n\n // If onStartReached is in progress, better to wait for it to finish for smooth UX\n if (onStartReachedInPromise.current) {\n onStartReachedInPromise.current.finally(() => {\n onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore())\n .then(callback)\n .catch(onError);\n });\n } else {\n onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore())\n .then(callback)\n .catch(onError);\n }\n };\n\n /**\n * Following if condition covers following cases:\n * 1. If I scroll up -> show scrollToBottom button.\n * 2. If I scroll to bottom of screen\n * |-> hide scrollToBottom button.\n * |-> if channel is unread, call markRead().\n */\n const handleScroll: ScrollViewProps['onScroll'] = (event) => {\n if (!channel || !initialScrollSet.current || !channelResyncScrollSet.current) {\n return;\n }\n\n const offset = event.nativeEvent.contentOffset.y;\n const visibleLength = event.nativeEvent.layoutMeasurement.height;\n const contentLength = event.nativeEvent.contentSize.height;\n // Check if scroll has reached either start of end of list.\n const isScrollAtStart = offset < 100;\n const isScrollAtEnd = contentLength - visibleLength - offset < 100;\n\n if (isScrollAtStart) {\n maybeCallOnStartReached();\n }\n\n if (isScrollAtEnd) {\n maybeCallOnEndReached();\n }\n\n // Show scrollToBottom button once scroll position goes beyond 300.\n const isScrollAtBottom = offset <= 300;\n const showScrollToBottomButton = !isScrollAtBottom || !channel?.state.isUpToDate;\n\n const shouldMarkRead =\n !threadList && offset <= 0 && channel?.state.isUpToDate && channel.countUnread() > 0;\n\n if (shouldMarkRead) {\n markRead();\n }\n\n if (showScrollToBottomButton && !scrollToBottomButtonVisible) {\n setScrollToBottomButtonVisible(true);\n } else if (!showScrollToBottomButton && scrollToBottomButtonVisible) {\n setScrollToBottomButtonVisible(false);\n }\n\n if (onListScroll) {\n onListScroll(event);\n }\n };\n\n const goToNewMessages = async () => {\n if (!channel?.state.isUpToDate) {\n resetPaginationTrackers();\n\n await reloadChannel();\n } else if (flatListRef.current) {\n flatListRef.current.scrollToOffset({\n offset: 0,\n });\n }\n\n setScrollToBottomButtonVisible(false);\n if (!threadList) {\n markRead();\n }\n };\n\n const goToMessage = useCallback(\n (messageId: string) => {\n const indexOfParentInMessageList = messageList.findIndex(\n (message) => message?.id === messageId,\n );\n\n if (indexOfParentInMessageList > -1) {\n try {\n if (flatListRef.current) {\n flatListRef.current.scrollToIndex({\n index: indexOfParentInMessageList,\n viewPosition: 0.5,\n });\n setTargetedMessage(messageId);\n\n return;\n }\n } catch (_) {\n // do nothing;\n }\n }\n\n loadChannelAtMessage({ messageId });\n resetPaginationTrackers();\n },\n [messageListLengthAfterUpdate],\n );\n\n const messagesWithImages =\n legacyImageViewerSwipeBehaviour &&\n messageList.filter((message) => {\n const isMessageTypeDeleted = message.type === 'deleted';\n if (!isMessageTypeDeleted && message.attachments) {\n return message.attachments.some(\n (attachment) =>\n attachment.type === 'image' &&\n !attachment.title_link &&\n !attachment.og_scrape_url &&\n (attachment.image_url || attachment.thumb_url),\n );\n }\n return false;\n });\n\n /**\n * This is for the useEffect to run again in the case that a message\n * gets edited with more or the same number of images\n */\n const imageString =\n legacyImageViewerSwipeBehaviour &&\n messagesWithImages &&\n messagesWithImages\n .map((message) =>\n message.attachments\n ?.map((attachment) => attachment.image_url || attachment.thumb_url || '')\n .join(),\n )\n .join();\n\n const numberOfMessagesWithImages =\n legacyImageViewerSwipeBehaviour && messagesWithImages && messagesWithImages.length;\n const threadExists = !!thread;\n\n useEffect(() => {\n if (\n legacyImageViewerSwipeBehaviour &&\n isListActive &&\n ((threadList && thread) || (!threadList && !thread))\n ) {\n setImages(messagesWithImages as MessageType<StreamChatGenerics>[]);\n }\n }, [\n imageString,\n isListActive,\n legacyImageViewerSwipeBehaviour,\n numberOfMessagesWithImages,\n threadExists,\n threadList,\n ]);\n\n const stickyHeaderFormatDate =\n stickyHeaderDate?.getFullYear() === new Date().getFullYear() ? 'MMM D' : 'MMM D, YYYY';\n const tStickyHeaderDate =\n stickyHeaderDate && !hideStickyDateHeader ? tDateTimeParser(stickyHeaderDate) : null;\n const stickyHeaderDateToRender =\n tStickyHeaderDate === null || hideStickyDateHeader\n ? null\n : isDayOrMoment(tStickyHeaderDate)\n ? tStickyHeaderDate.format(stickyHeaderFormatDate)\n : new Date(tStickyHeaderDate).toDateString();\n\n const dismissImagePicker = () => {\n if (!hasMoved && selectedPicker) {\n setSelectedPicker(undefined);\n closePicker();\n }\n };\n const onScrollBeginDrag = () => !hasMoved && selectedPicker && setHasMoved(true);\n const onScrollEndDrag = () => hasMoved && selectedPicker && setHasMoved(false);\n\n const refCallback = (ref: FlatListType<MessageType<StreamChatGenerics>>) => {\n flatListRef.current = ref;\n\n if (setFlatListRef) {\n setFlatListRef(ref);\n }\n };\n const renderListEmptyComponent = () => (\n <View style={[styles.flex, styles.invert]} testID='empty-state'>\n <EmptyStateIndicator listType='message' />\n </View>\n );\n\n if (!FlatList) return null;\n\n if (loading) {\n return (\n <View style={styles.flex}>\n <LoadingIndicator listType='message' />\n </View>\n );\n }\n\n return (\n <View\n style={[styles.container, { backgroundColor: white_snow }, container]}\n testID='message-flat-list-wrapper'\n >\n <FlatList\n contentContainerStyle={[styles.contentContainer, contentContainer]}\n data={messageList}\n /** Disables the MessageList UI. Which means, message actions, reactions won't work. */\n extraData={disabled || !channel?.state.isUpToDate}\n inverted={inverted}\n keyboardShouldPersistTaps='handled'\n keyExtractor={keyExtractor}\n ListEmptyComponent={renderListEmptyComponent}\n ListFooterComponent={FooterComponent}\n ListHeaderComponent={HeaderComponent}\n maintainVisibleContentPosition={{\n autoscrollToTopThreshold: autoscrollToTop ? 10 : undefined,\n minIndexForVisible: 1,\n }}\n onScroll={handleScroll}\n onScrollBeginDrag={onScrollBeginDrag}\n onScrollEndDrag={onScrollEndDrag}\n onTouchEnd={dismissImagePicker}\n onViewableItemsChanged={onViewableItemsChanged.current}\n ref={refCallback}\n renderItem={renderItem}\n scrollEnabled={overlay === 'none'}\n style={[styles.listContainer, listContainer]}\n testID='message-flat-list'\n viewabilityConfig={flatListViewabilityConfig}\n {...additionalFlatListProps}\n />\n {!loading && (\n <>\n <View style={styles.stickyHeader}>\n {stickyHeaderDateToRender &&\n (StickyHeader ? (\n <StickyHeader dateString={stickyHeaderDateToRender} />\n ) : messageListLengthAfterUpdate ? (\n <DateHeader dateString={stickyHeaderDateToRender} />\n ) : null)}\n </View>\n {!disableTypingIndicator && TypingIndicator && (\n <TypingIndicatorContainer>\n <TypingIndicator />\n </TypingIndicatorContainer>\n )}\n <ScrollToBottomButton\n onPress={goToNewMessages}\n showNotification={scrollToBottomButtonVisible}\n unreadCount={threadList ? 0 : channel?.countUnread()}\n />\n </>\n )}\n <NetworkDownIndicator />\n </View>\n );\n};\n\nexport type MessageListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageListPropsWithContext<StreamChatGenerics>>;\n\nexport const MessageList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageListProps<StreamChatGenerics>,\n) => {\n const { closePicker, selectedPicker, setSelectedPicker } = useAttachmentPickerContext();\n const {\n channel,\n disabled,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n error,\n hideStickyDateHeader,\n isChannelActive,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n NetworkDownIndicator,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n } = useChannelContext<StreamChatGenerics>();\n const { client } = useChatContext<StreamChatGenerics>();\n const { setImages } = useImageGalleryContext<StreamChatGenerics>();\n const {\n DateHeader,\n deletedMessagesVisibilityType,\n disableTypingIndicator,\n FlatList,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n legacyImageViewerSwipeBehaviour,\n Message,\n MessageSystem,\n myMessageTheme,\n ScrollToBottomButton,\n TypingIndicator,\n TypingIndicatorContainer,\n } = useMessagesContext<StreamChatGenerics>();\n const { loadMore, loadMoreRecent } = usePaginatedMessageListContext<StreamChatGenerics>();\n const { overlay } = useOverlayContext();\n const { loadMoreThread, thread } = useThreadContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n return (\n <MessageListWithContext\n {...{\n channel,\n client,\n closePicker,\n DateHeader,\n deletedMessagesVisibilityType,\n disabled,\n disableTypingIndicator,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n error,\n FlatList,\n hideStickyDateHeader,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n isListActive: isChannelActive,\n legacyImageViewerSwipeBehaviour,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n loadMore,\n loadMoreRecent,\n loadMoreThread,\n markRead,\n Message,\n MessageSystem,\n myMessageTheme,\n NetworkDownIndicator,\n overlay,\n reloadChannel,\n ScrollToBottomButton,\n scrollToFirstUnreadThreshold,\n selectedPicker,\n setImages,\n setSelectedPicker,\n setTargetedMessage,\n StickyHeader,\n t,\n targetedMessage,\n tDateTimeParser,\n thread,\n TypingIndicator,\n TypingIndicatorContainer,\n }}\n {...props}\n noGroupByUser={!enableMessageGroupingByUser || props.noGroupByUser}\n />\n );\n};\n"]}
@@ -69,7 +69,7 @@ var MessageSystem = function MessageSystem(props) {
69
69
  __self: _this,
70
70
  __source: {
71
71
  fileName: _jsxFileName,
72
- lineNumber: 105,
72
+ lineNumber: 84,
73
73
  columnNumber: 5
74
74
  }
75
75
  }, _react["default"].createElement(_reactNative.View, {
@@ -79,7 +79,7 @@ var MessageSystem = function MessageSystem(props) {
79
79
  __self: _this,
80
80
  __source: {
81
81
  fileName: _jsxFileName,
82
- lineNumber: 106,
82
+ lineNumber: 85,
83
83
  columnNumber: 7
84
84
  }
85
85
  }), _react["default"].createElement(_reactNative.View, {
@@ -87,7 +87,7 @@ var MessageSystem = function MessageSystem(props) {
87
87
  __self: _this,
88
88
  __source: {
89
89
  fileName: _jsxFileName,
90
- lineNumber: 107,
90
+ lineNumber: 86,
91
91
  columnNumber: 7
92
92
  }
93
93
  }, _react["default"].createElement(_reactNative.Text, {
@@ -97,7 +97,7 @@ var MessageSystem = function MessageSystem(props) {
97
97
  __self: _this,
98
98
  __source: {
99
99
  fileName: _jsxFileName,
100
- lineNumber: 108,
100
+ lineNumber: 87,
101
101
  columnNumber: 9
102
102
  }
103
103
  }, ((_message$text = message.text) == null ? void 0 : _message$text.toUpperCase()) || ''), _react["default"].createElement(_reactNative.Text, {
@@ -107,7 +107,7 @@ var MessageSystem = function MessageSystem(props) {
107
107
  __self: _this,
108
108
  __source: {
109
109
  fileName: _jsxFileName,
110
- lineNumber: 111,
110
+ lineNumber: 90,
111
111
  columnNumber: 9
112
112
  }
113
113
  }, date)), _react["default"].createElement(_reactNative.View, {
@@ -117,7 +117,7 @@ var MessageSystem = function MessageSystem(props) {
117
117
  __self: _this,
118
118
  __source: {
119
119
  fileName: _jsxFileName,
120
- lineNumber: 113,
120
+ lineNumber: 92,
121
121
  columnNumber: 7
122
122
  }
123
123
  }));