stream-chat-react-native-core 3.10.2 → 4.0.0-beta.4

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 (1099) hide show
  1. package/lib/commonjs/components/Attachment/Attachment.js +2 -2
  2. package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/AttachmentActions.js.map +1 -1
  4. package/lib/commonjs/components/Attachment/Card.js +18 -15
  5. package/lib/commonjs/components/Attachment/Card.js.map +1 -1
  6. package/lib/commonjs/components/Attachment/FileAttachment.js +8 -8
  7. package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
  8. package/lib/commonjs/components/Attachment/FileIcon.js.map +1 -1
  9. package/lib/commonjs/components/Attachment/Gallery.js +97 -113
  10. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  11. package/lib/commonjs/components/Attachment/Giphy.js +112 -148
  12. package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
  13. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGallery.js +46 -0
  14. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -0
  15. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js +88 -0
  16. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js.map +1 -0
  17. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js +75 -0
  18. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js.map +1 -0
  19. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js +43 -0
  20. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js.map +1 -0
  21. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js +30 -0
  22. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -0
  23. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnailGrid.js +49 -0
  24. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnailGrid.js.map +1 -0
  25. package/lib/commonjs/components/Attachment/utils/buildGallery/types.js +4 -0
  26. package/lib/commonjs/components/Attachment/utils/buildGallery/types.js.map +1 -0
  27. package/lib/commonjs/components/Attachment/utils/getAspectRatio.js +14 -0
  28. package/lib/commonjs/components/Attachment/utils/getAspectRatio.js.map +1 -0
  29. package/lib/commonjs/components/Attachment/utils/getGalleryImageBorderRadius.js +36 -0
  30. package/lib/commonjs/components/Attachment/utils/getGalleryImageBorderRadius.js.map +1 -0
  31. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +9 -8
  32. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  33. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +21 -45
  34. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  35. package/lib/commonjs/components/AutoCompleteInput/{CommandsItem.js → AutoCompleteSuggestionCommandIcon.js} +21 -94
  36. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js.map +1 -0
  37. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +145 -0
  38. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -0
  39. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +248 -0
  40. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -0
  41. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +223 -0
  42. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -0
  43. package/lib/commonjs/components/Avatar/Avatar.js +13 -7
  44. package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
  45. package/lib/commonjs/components/Avatar/GroupAvatar.js +10 -10
  46. package/lib/commonjs/components/Avatar/GroupAvatar.js.map +1 -1
  47. package/lib/commonjs/components/Channel/Channel.js +332 -247
  48. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  49. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js +5 -5
  50. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  51. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +7 -5
  52. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  53. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +9 -31
  54. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  55. package/lib/commonjs/components/Channel/hooks/useCreateOwnCapabilitiesContext.js +35 -0
  56. package/lib/commonjs/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -0
  57. package/lib/commonjs/components/ChannelList/ChannelList.js +6 -6
  58. package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
  59. package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js +5 -4
  60. package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
  61. package/lib/commonjs/components/ChannelList/ChannelListHeaderErrorIndicator.js +6 -7
  62. package/lib/commonjs/components/ChannelList/ChannelListHeaderErrorIndicator.js.map +1 -1
  63. package/lib/commonjs/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +4 -3
  64. package/lib/commonjs/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js.map +1 -1
  65. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js +17 -17
  66. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js.map +1 -1
  67. package/lib/commonjs/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js +2 -2
  68. package/lib/commonjs/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js.map +1 -1
  69. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelDeleted.js.map +1 -1
  70. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelHidden.js.map +1 -1
  71. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelTruncated.js.map +1 -1
  72. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelUpdated.js.map +1 -1
  73. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelVisible.js +2 -2
  74. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelVisible.js.map +1 -1
  75. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js +2 -2
  76. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
  77. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js +3 -3
  78. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  79. package/lib/commonjs/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js.map +1 -1
  80. package/lib/commonjs/components/ChannelList/hooks/listeners/useUserPresence.js.map +1 -1
  81. package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js +2 -2
  82. package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
  83. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +89 -64
  84. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  85. package/lib/commonjs/components/ChannelList/utils.js +1 -1
  86. package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js +2 -2
  87. package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js.map +1 -1
  88. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +2 -2
  89. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
  90. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  91. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js +49 -20
  92. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  93. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js +51 -0
  94. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js.map +1 -0
  95. package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js +4 -4
  96. package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js.map +1 -1
  97. package/lib/commonjs/components/ChannelPreview/ChannelPreviewTitle.js.map +1 -1
  98. package/lib/commonjs/components/ChannelPreview/ChannelPreviewUnreadCount.js +2 -2
  99. package/lib/commonjs/components/ChannelPreview/ChannelPreviewUnreadCount.js.map +1 -1
  100. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js +16 -7
  101. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js.map +1 -1
  102. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
  103. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.js.map +1 -1
  104. package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js +2 -1
  105. package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
  106. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  107. package/lib/commonjs/components/Chat/hooks/useIsOnline.js +12 -5
  108. package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
  109. package/lib/commonjs/components/ImageGallery/ImageGallery.js +90 -58
  110. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  111. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +2 -2
  112. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  113. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +12 -12
  114. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  115. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +14 -16
  116. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  117. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +7 -7
  118. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
  119. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js +5 -5
  120. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
  121. package/lib/commonjs/components/Indicators/LoadingErrorIndicator.js.map +1 -1
  122. package/lib/commonjs/components/Indicators/LoadingIndicator.js +9 -9
  123. package/lib/commonjs/components/Indicators/LoadingIndicator.js.map +1 -1
  124. package/lib/commonjs/components/Message/Message.js +151 -860
  125. package/lib/commonjs/components/Message/Message.js.map +1 -1
  126. package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js +6 -6
  127. package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
  128. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +39 -38
  129. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  130. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js +8 -6
  131. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
  132. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +33 -21
  133. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  134. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js +122 -0
  135. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -0
  136. package/lib/commonjs/components/Message/MessageSimple/MessageReplies.js +5 -1
  137. package/lib/commonjs/components/Message/MessageSimple/MessageReplies.js.map +1 -1
  138. package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js +5 -5
  139. package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js.map +1 -1
  140. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +27 -13
  141. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  142. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js +25 -24
  143. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js.map +1 -1
  144. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js +7 -3
  145. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  146. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +52 -80
  147. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -1
  148. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js +89 -0
  149. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js.map +1 -0
  150. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.test.js +46 -0
  151. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -0
  152. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +170 -73
  153. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  154. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js +240 -0
  155. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js.map +1 -0
  156. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +1 -5
  157. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  158. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js +307 -0
  159. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -0
  160. package/lib/commonjs/components/Message/hooks/useMessageActions.js +563 -0
  161. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -0
  162. package/lib/commonjs/components/Message/utils/messageActions.js +17 -15
  163. package/lib/commonjs/components/Message/utils/messageActions.js.map +1 -1
  164. package/lib/commonjs/components/Message/utils/removeReservedFields.js.map +1 -1
  165. package/lib/commonjs/components/MessageInput/AttachButton.js +3 -3
  166. package/lib/commonjs/components/MessageInput/AttachButton.js.map +1 -1
  167. package/lib/commonjs/components/MessageInput/CommandsButton.js +3 -3
  168. package/lib/commonjs/components/MessageInput/CommandsButton.js.map +1 -1
  169. package/lib/commonjs/components/MessageInput/CooldownTimer.js +78 -0
  170. package/lib/commonjs/components/MessageInput/CooldownTimer.js.map +1 -0
  171. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +4 -4
  172. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  173. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +9 -9
  174. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  175. package/lib/commonjs/components/MessageInput/InputButtons.js +17 -22
  176. package/lib/commonjs/components/MessageInput/InputButtons.js.map +1 -1
  177. package/lib/commonjs/components/MessageInput/MessageInput.js +93 -65
  178. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  179. package/lib/commonjs/components/MessageInput/MoreOptionsButton.js +3 -3
  180. package/lib/commonjs/components/MessageInput/MoreOptionsButton.js.map +1 -1
  181. package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js +71 -0
  182. package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js.map +1 -0
  183. package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js +4 -3
  184. package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js.map +1 -1
  185. package/lib/commonjs/components/MessageInput/hooks/useCooldown.js +63 -0
  186. package/lib/commonjs/components/MessageInput/hooks/useCooldown.js.map +1 -0
  187. package/lib/commonjs/components/MessageInput/hooks/useCountdown.js +57 -0
  188. package/lib/commonjs/components/MessageInput/hooks/useCountdown.js.map +1 -0
  189. package/lib/commonjs/components/MessageList/DateHeader.js +2 -2
  190. package/lib/commonjs/components/MessageList/DateHeader.js.map +1 -1
  191. package/lib/commonjs/components/MessageList/InlineDateSeparator.js +2 -2
  192. package/lib/commonjs/components/MessageList/InlineDateSeparator.js.map +1 -1
  193. package/lib/commonjs/components/MessageList/InlineLoadingMoreIndicator.js +1 -1
  194. package/lib/commonjs/components/MessageList/InlineLoadingMoreRecentIndicator.js +1 -1
  195. package/lib/commonjs/components/MessageList/InlineLoadingMoreThreadIndicator.js +1 -1
  196. package/lib/commonjs/components/MessageList/MessageList.js +77 -44
  197. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  198. package/lib/commonjs/components/MessageList/MessageSystem.js.map +1 -1
  199. package/lib/commonjs/components/MessageList/TypingIndicator.js +5 -5
  200. package/lib/commonjs/components/MessageList/TypingIndicator.js.map +1 -1
  201. package/lib/commonjs/components/MessageList/hooks/useMessageList.js +23 -10
  202. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  203. package/lib/commonjs/components/MessageList/hooks/useTypingString.js +2 -2
  204. package/lib/commonjs/components/MessageList/hooks/useTypingString.js.map +1 -1
  205. package/lib/commonjs/components/MessageList/utils/getDateSeparators.js +2 -1
  206. package/lib/commonjs/components/MessageList/utils/getDateSeparators.js.map +1 -1
  207. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js +10 -5
  208. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js.map +1 -1
  209. package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js +3 -1
  210. package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  211. package/lib/{module/components/MessageOverlay/MessageActions.js → commonjs/components/MessageOverlay/MessageActionList.js} +33 -85
  212. package/lib/commonjs/components/MessageOverlay/MessageActionList.js.map +1 -0
  213. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js +131 -0
  214. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js.map +1 -0
  215. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +97 -78
  216. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
  217. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js +38 -0
  218. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js.map +1 -0
  219. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js +12 -11
  220. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js.map +1 -1
  221. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js +31 -34
  222. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js.map +1 -1
  223. package/lib/commonjs/components/MessageOverlay/OverlayReactionsAvatar.js +41 -0
  224. package/lib/commonjs/components/MessageOverlay/OverlayReactionsAvatar.js.map +1 -0
  225. package/lib/commonjs/components/MessageOverlay/hooks/useMessageActionAnimation.js +37 -0
  226. package/lib/commonjs/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +1 -0
  227. package/lib/commonjs/components/Reply/Reply.js +25 -19
  228. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  229. package/lib/commonjs/components/Thread/Thread.js +11 -2
  230. package/lib/commonjs/components/Thread/Thread.js.map +1 -1
  231. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +20 -12
  232. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  233. package/lib/commonjs/components/docs/ListProps.md +1 -1
  234. package/lib/commonjs/components/docs/data.js +1 -1
  235. package/lib/commonjs/components/index.js +133 -55
  236. package/lib/commonjs/components/index.js.map +1 -1
  237. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +68 -0
  238. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -0
  239. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js +2 -2
  240. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  241. package/lib/commonjs/contexts/channelContext/ChannelContext.js +2 -2
  242. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  243. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js +2 -2
  244. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
  245. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js +155 -0
  246. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -0
  247. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js +144 -0
  248. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js.map +1 -0
  249. package/lib/commonjs/contexts/chatContext/ChatContext.js +2 -2
  250. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  251. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js +2 -2
  252. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  253. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js +2 -2
  254. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js.map +1 -1
  255. package/lib/commonjs/contexts/messageContext/MessageContext.js +2 -2
  256. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  257. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +122 -84
  258. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  259. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +9 -5
  260. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  261. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +10 -3
  262. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  263. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js +5 -19
  264. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  265. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.js +36 -0
  266. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.js.map +1 -0
  267. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js +105 -0
  268. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +1 -0
  269. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
  270. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  271. package/lib/commonjs/contexts/overlayContext/OverlayContext.js +1 -1
  272. package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
  273. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +55 -46
  274. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
  275. package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +61 -0
  276. package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js.map +1 -0
  277. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +2 -2
  278. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  279. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +20 -33
  280. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  281. package/lib/commonjs/contexts/themeContext/ThemeContext.js +2 -2
  282. package/lib/commonjs/contexts/themeContext/ThemeContext.js.map +1 -1
  283. package/lib/commonjs/contexts/themeContext/utils/theme.js +45 -20
  284. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  285. package/lib/commonjs/contexts/threadContext/ThreadContext.js +2 -2
  286. package/lib/commonjs/contexts/threadContext/ThreadContext.js.map +1 -1
  287. package/lib/commonjs/contexts/translationContext/TranslationContext.js +1 -1
  288. package/lib/commonjs/contexts/translationContext/TranslationContext.js.map +1 -1
  289. package/lib/commonjs/contexts/typingContext/TypingContext.js +2 -2
  290. package/lib/commonjs/contexts/typingContext/TypingContext.js.map +1 -1
  291. package/lib/commonjs/contexts/utils/getDisplayName.js.map +1 -1
  292. package/lib/commonjs/emoji-data/compiled.js +0 -315
  293. package/lib/commonjs/emoji-data/compiled.js.map +1 -1
  294. package/lib/commonjs/emoji-data/emojiNames.js +0 -105
  295. package/lib/commonjs/emoji-data/emojiNames.js.map +1 -1
  296. package/lib/commonjs/emoji-data/emojis.js +0 -175
  297. package/lib/commonjs/emoji-data/emojis.js.map +1 -1
  298. package/lib/commonjs/emoji-data/index.js +2 -2
  299. package/lib/commonjs/emoji-data/index.js.map +1 -1
  300. package/lib/commonjs/hooks/useStreami18n.js.map +1 -1
  301. package/lib/commonjs/i18n/en.json +9 -3
  302. package/lib/commonjs/i18n/fr.json +9 -3
  303. package/lib/commonjs/i18n/hi.json +9 -3
  304. package/lib/commonjs/i18n/it.json +9 -3
  305. package/lib/commonjs/i18n/ja.json +9 -0
  306. package/lib/commonjs/i18n/ko.json +9 -0
  307. package/lib/commonjs/i18n/nl.json +9 -3
  308. package/lib/commonjs/i18n/ru.json +9 -3
  309. package/lib/commonjs/i18n/tr.json +10 -4
  310. package/lib/commonjs/icons/Pin.js +42 -0
  311. package/lib/commonjs/icons/Pin.js.map +1 -0
  312. package/lib/commonjs/icons/PinHeader.js +38 -0
  313. package/lib/commonjs/icons/PinHeader.js.map +1 -0
  314. package/lib/commonjs/icons/Unpin.js +38 -0
  315. package/lib/commonjs/icons/Unpin.js.map +1 -0
  316. package/lib/commonjs/icons/index.js +39 -26
  317. package/lib/commonjs/icons/index.js.map +1 -1
  318. package/lib/commonjs/icons/utils/base.js +1 -1
  319. package/lib/commonjs/index.js +6 -6
  320. package/lib/commonjs/mock-builders/api/error.js +1 -1
  321. package/lib/commonjs/mock-builders/api/sendMessage.js +4 -1
  322. package/lib/commonjs/mock-builders/api/sendMessage.js.map +1 -1
  323. package/lib/commonjs/mock-builders/generator/attachment.js +1 -3
  324. package/lib/commonjs/mock-builders/generator/attachment.js.map +1 -1
  325. package/lib/commonjs/mock-builders/generator/channel.js +101 -50
  326. package/lib/commonjs/mock-builders/generator/channel.js.map +1 -1
  327. package/lib/commonjs/mock-builders/generator/user.js +32 -33
  328. package/lib/commonjs/mock-builders/generator/user.js.map +1 -1
  329. package/lib/commonjs/mock-builders/mock.js +3 -3
  330. package/lib/commonjs/mock-builders/mock.js.map +1 -1
  331. package/lib/commonjs/native.js +1 -7
  332. package/lib/commonjs/native.js.map +1 -1
  333. package/lib/commonjs/styleguideComponents/ArgumentsRenderer.js +7 -7
  334. package/lib/commonjs/styleguideComponents/ArgumentsRenderer.js.map +1 -1
  335. package/lib/commonjs/styleguideComponents/JsDoc.js +4 -4
  336. package/lib/commonjs/styleguideComponents/JsDoc.js.map +1 -1
  337. package/lib/commonjs/styleguideComponents/PathlineRenderer.js +7 -7
  338. package/lib/commonjs/styleguideComponents/PathlineRenderer.js.map +1 -1
  339. package/lib/commonjs/styleguideComponents/PropsRenderer.js +25 -25
  340. package/lib/commonjs/styleguideComponents/PropsRenderer.js.map +1 -1
  341. package/lib/commonjs/styleguideComponents/Wrapper.js +1 -1
  342. package/lib/commonjs/styleguideComponents/Wrapper.js.map +1 -1
  343. package/lib/commonjs/utils/Streami18n.js.map +1 -1
  344. package/lib/commonjs/utils/date.js +13 -0
  345. package/lib/commonjs/utils/date.js.map +1 -0
  346. package/lib/commonjs/utils/getResizedImageUrl.js +26 -0
  347. package/lib/commonjs/utils/getResizedImageUrl.js.map +1 -0
  348. package/lib/commonjs/utils/getUrlOfImageAttachment.js +9 -0
  349. package/lib/commonjs/utils/getUrlOfImageAttachment.js.map +1 -0
  350. package/lib/commonjs/utils/utils.js +17 -9
  351. package/lib/commonjs/utils/utils.js.map +1 -1
  352. package/lib/commonjs/version.json +1 -1
  353. package/lib/module/components/Attachment/Attachment.js +2 -2
  354. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  355. package/lib/module/components/Attachment/AttachmentActions.js.map +1 -1
  356. package/lib/module/components/Attachment/Card.js +18 -15
  357. package/lib/module/components/Attachment/Card.js.map +1 -1
  358. package/lib/module/components/Attachment/FileAttachment.js +8 -8
  359. package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
  360. package/lib/module/components/Attachment/FileIcon.js.map +1 -1
  361. package/lib/module/components/Attachment/Gallery.js +97 -113
  362. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  363. package/lib/module/components/Attachment/Giphy.js +112 -148
  364. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  365. package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js +46 -0
  366. package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -0
  367. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js +88 -0
  368. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js.map +1 -0
  369. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js +75 -0
  370. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js.map +1 -0
  371. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js +43 -0
  372. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js.map +1 -0
  373. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js +30 -0
  374. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -0
  375. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnailGrid.js +49 -0
  376. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnailGrid.js.map +1 -0
  377. package/lib/module/components/Attachment/utils/buildGallery/types.js +4 -0
  378. package/lib/module/components/Attachment/utils/buildGallery/types.js.map +1 -0
  379. package/lib/module/components/Attachment/utils/getAspectRatio.js +14 -0
  380. package/lib/module/components/Attachment/utils/getAspectRatio.js.map +1 -0
  381. package/lib/module/components/Attachment/utils/getGalleryImageBorderRadius.js +36 -0
  382. package/lib/module/components/Attachment/utils/getGalleryImageBorderRadius.js.map +1 -0
  383. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +9 -8
  384. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  385. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +21 -45
  386. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  387. package/lib/module/components/AutoCompleteInput/{CommandsItem.js → AutoCompleteSuggestionCommandIcon.js} +21 -94
  388. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js.map +1 -0
  389. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +145 -0
  390. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -0
  391. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +248 -0
  392. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -0
  393. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +223 -0
  394. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -0
  395. package/lib/module/components/Avatar/Avatar.js +13 -7
  396. package/lib/module/components/Avatar/Avatar.js.map +1 -1
  397. package/lib/module/components/Avatar/GroupAvatar.js +10 -10
  398. package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
  399. package/lib/module/components/Channel/Channel.js +332 -247
  400. package/lib/module/components/Channel/Channel.js.map +1 -1
  401. package/lib/module/components/Channel/hooks/useCreateChannelContext.js +5 -5
  402. package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  403. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +7 -5
  404. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  405. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +9 -31
  406. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  407. package/lib/module/components/Channel/hooks/useCreateOwnCapabilitiesContext.js +35 -0
  408. package/lib/module/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -0
  409. package/lib/module/components/ChannelList/ChannelList.js +6 -6
  410. package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
  411. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js +5 -4
  412. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
  413. package/lib/module/components/ChannelList/ChannelListHeaderErrorIndicator.js +6 -7
  414. package/lib/module/components/ChannelList/ChannelListHeaderErrorIndicator.js.map +1 -1
  415. package/lib/module/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +4 -3
  416. package/lib/module/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js.map +1 -1
  417. package/lib/module/components/ChannelList/ChannelListMessenger.js +17 -17
  418. package/lib/module/components/ChannelList/ChannelListMessenger.js.map +1 -1
  419. package/lib/module/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js +2 -2
  420. package/lib/module/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js.map +1 -1
  421. package/lib/module/components/ChannelList/hooks/listeners/useChannelDeleted.js.map +1 -1
  422. package/lib/module/components/ChannelList/hooks/listeners/useChannelHidden.js.map +1 -1
  423. package/lib/module/components/ChannelList/hooks/listeners/useChannelTruncated.js.map +1 -1
  424. package/lib/module/components/ChannelList/hooks/listeners/useChannelUpdated.js.map +1 -1
  425. package/lib/module/components/ChannelList/hooks/listeners/useChannelVisible.js +2 -2
  426. package/lib/module/components/ChannelList/hooks/listeners/useChannelVisible.js.map +1 -1
  427. package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js +2 -2
  428. package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
  429. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js +3 -3
  430. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  431. package/lib/module/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js.map +1 -1
  432. package/lib/module/components/ChannelList/hooks/listeners/useUserPresence.js.map +1 -1
  433. package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js +2 -2
  434. package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
  435. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +89 -64
  436. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  437. package/lib/module/components/ChannelList/utils.js +1 -1
  438. package/lib/module/components/ChannelPreview/ChannelAvatar.js +2 -2
  439. package/lib/module/components/ChannelPreview/ChannelAvatar.js.map +1 -1
  440. package/lib/module/components/ChannelPreview/ChannelPreview.js +2 -2
  441. package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
  442. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  443. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +49 -20
  444. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  445. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js +51 -0
  446. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js.map +1 -0
  447. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js +4 -4
  448. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js.map +1 -1
  449. package/lib/module/components/ChannelPreview/ChannelPreviewTitle.js.map +1 -1
  450. package/lib/module/components/ChannelPreview/ChannelPreviewUnreadCount.js +2 -2
  451. package/lib/module/components/ChannelPreview/ChannelPreviewUnreadCount.js.map +1 -1
  452. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js +16 -7
  453. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js.map +1 -1
  454. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
  455. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.js.map +1 -1
  456. package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js +2 -1
  457. package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
  458. package/lib/module/components/Chat/Chat.js.map +1 -1
  459. package/lib/module/components/Chat/hooks/useIsOnline.js +12 -5
  460. package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
  461. package/lib/module/components/ImageGallery/ImageGallery.js +90 -58
  462. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  463. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +2 -2
  464. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  465. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +12 -12
  466. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  467. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +14 -16
  468. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  469. package/lib/module/components/ImageGallery/components/ImageGrid.js +7 -7
  470. package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
  471. package/lib/module/components/ImageGallery/components/ImageGridHandle.js +5 -5
  472. package/lib/module/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
  473. package/lib/module/components/Indicators/LoadingErrorIndicator.js.map +1 -1
  474. package/lib/module/components/Indicators/LoadingIndicator.js +9 -9
  475. package/lib/module/components/Indicators/LoadingIndicator.js.map +1 -1
  476. package/lib/module/components/Message/Message.js +151 -860
  477. package/lib/module/components/Message/Message.js.map +1 -1
  478. package/lib/module/components/Message/MessageSimple/MessageAvatar.js +6 -6
  479. package/lib/module/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
  480. package/lib/module/components/Message/MessageSimple/MessageContent.js +39 -38
  481. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  482. package/lib/module/components/Message/MessageSimple/MessageDeleted.js +8 -6
  483. package/lib/module/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
  484. package/lib/module/components/Message/MessageSimple/MessageFooter.js +33 -21
  485. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  486. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js +122 -0
  487. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -0
  488. package/lib/module/components/Message/MessageSimple/MessageReplies.js +5 -1
  489. package/lib/module/components/Message/MessageSimple/MessageReplies.js.map +1 -1
  490. package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js +5 -5
  491. package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js.map +1 -1
  492. package/lib/module/components/Message/MessageSimple/MessageSimple.js +27 -13
  493. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  494. package/lib/module/components/Message/MessageSimple/MessageStatus.js +25 -24
  495. package/lib/module/components/Message/MessageSimple/MessageStatus.js.map +1 -1
  496. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +7 -3
  497. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  498. package/lib/module/components/Message/MessageSimple/ReactionList.js +52 -80
  499. package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
  500. package/lib/module/components/Message/MessageSimple/utils/parseLinks.js +89 -0
  501. package/lib/module/components/Message/MessageSimple/utils/parseLinks.js.map +1 -0
  502. package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js +46 -0
  503. package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -0
  504. package/lib/module/components/Message/MessageSimple/utils/renderText.js +170 -73
  505. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  506. package/lib/module/components/Message/MessageSimple/utils/renderText.test.js +240 -0
  507. package/lib/module/components/Message/MessageSimple/utils/renderText.test.js.map +1 -0
  508. package/lib/module/components/Message/hooks/useCreateMessageContext.js +1 -5
  509. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  510. package/lib/module/components/Message/hooks/useMessageActionHandlers.js +307 -0
  511. package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -0
  512. package/lib/module/components/Message/hooks/useMessageActions.js +563 -0
  513. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -0
  514. package/lib/module/components/Message/utils/messageActions.js +17 -15
  515. package/lib/module/components/Message/utils/messageActions.js.map +1 -1
  516. package/lib/module/components/Message/utils/removeReservedFields.js.map +1 -1
  517. package/lib/module/components/MessageInput/AttachButton.js +3 -3
  518. package/lib/module/components/MessageInput/AttachButton.js.map +1 -1
  519. package/lib/module/components/MessageInput/CommandsButton.js +3 -3
  520. package/lib/module/components/MessageInput/CommandsButton.js.map +1 -1
  521. package/lib/module/components/MessageInput/CooldownTimer.js +78 -0
  522. package/lib/module/components/MessageInput/CooldownTimer.js.map +1 -0
  523. package/lib/module/components/MessageInput/FileUploadPreview.js +4 -4
  524. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  525. package/lib/module/components/MessageInput/ImageUploadPreview.js +9 -9
  526. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  527. package/lib/module/components/MessageInput/InputButtons.js +17 -22
  528. package/lib/module/components/MessageInput/InputButtons.js.map +1 -1
  529. package/lib/module/components/MessageInput/MessageInput.js +93 -65
  530. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  531. package/lib/module/components/MessageInput/MoreOptionsButton.js +3 -3
  532. package/lib/module/components/MessageInput/MoreOptionsButton.js.map +1 -1
  533. package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js +71 -0
  534. package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js.map +1 -0
  535. package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js +4 -3
  536. package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js.map +1 -1
  537. package/lib/module/components/MessageInput/hooks/useCooldown.js +63 -0
  538. package/lib/module/components/MessageInput/hooks/useCooldown.js.map +1 -0
  539. package/lib/module/components/MessageInput/hooks/useCountdown.js +57 -0
  540. package/lib/module/components/MessageInput/hooks/useCountdown.js.map +1 -0
  541. package/lib/module/components/MessageList/DateHeader.js +2 -2
  542. package/lib/module/components/MessageList/DateHeader.js.map +1 -1
  543. package/lib/module/components/MessageList/InlineDateSeparator.js +2 -2
  544. package/lib/module/components/MessageList/InlineDateSeparator.js.map +1 -1
  545. package/lib/module/components/MessageList/InlineLoadingMoreIndicator.js +1 -1
  546. package/lib/module/components/MessageList/InlineLoadingMoreRecentIndicator.js +1 -1
  547. package/lib/module/components/MessageList/InlineLoadingMoreThreadIndicator.js +1 -1
  548. package/lib/module/components/MessageList/MessageList.js +77 -44
  549. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  550. package/lib/module/components/MessageList/MessageSystem.js.map +1 -1
  551. package/lib/module/components/MessageList/TypingIndicator.js +5 -5
  552. package/lib/module/components/MessageList/TypingIndicator.js.map +1 -1
  553. package/lib/module/components/MessageList/hooks/useMessageList.js +23 -10
  554. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  555. package/lib/module/components/MessageList/hooks/useTypingString.js +2 -2
  556. package/lib/module/components/MessageList/hooks/useTypingString.js.map +1 -1
  557. package/lib/module/components/MessageList/utils/getDateSeparators.js +2 -1
  558. package/lib/module/components/MessageList/utils/getDateSeparators.js.map +1 -1
  559. package/lib/module/components/MessageList/utils/getGroupStyles.js +10 -5
  560. package/lib/module/components/MessageList/utils/getGroupStyles.js.map +1 -1
  561. package/lib/module/components/MessageList/utils/getLastReceivedMessage.js +3 -1
  562. package/lib/module/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  563. package/lib/{commonjs/components/MessageOverlay/MessageActions.js → module/components/MessageOverlay/MessageActionList.js} +33 -85
  564. package/lib/module/components/MessageOverlay/MessageActionList.js.map +1 -0
  565. package/lib/module/components/MessageOverlay/MessageActionListItem.js +131 -0
  566. package/lib/module/components/MessageOverlay/MessageActionListItem.js.map +1 -0
  567. package/lib/module/components/MessageOverlay/MessageOverlay.js +97 -78
  568. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  569. package/lib/module/components/MessageOverlay/OverlayBackdrop.js +38 -0
  570. package/lib/module/components/MessageOverlay/OverlayBackdrop.js.map +1 -0
  571. package/lib/module/components/MessageOverlay/OverlayReactionList.js +12 -11
  572. package/lib/module/components/MessageOverlay/OverlayReactionList.js.map +1 -1
  573. package/lib/module/components/MessageOverlay/OverlayReactions.js +31 -34
  574. package/lib/module/components/MessageOverlay/OverlayReactions.js.map +1 -1
  575. package/lib/module/components/MessageOverlay/OverlayReactionsAvatar.js +41 -0
  576. package/lib/module/components/MessageOverlay/OverlayReactionsAvatar.js.map +1 -0
  577. package/lib/module/components/MessageOverlay/hooks/useMessageActionAnimation.js +37 -0
  578. package/lib/module/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +1 -0
  579. package/lib/module/components/Reply/Reply.js +25 -19
  580. package/lib/module/components/Reply/Reply.js.map +1 -1
  581. package/lib/module/components/Thread/Thread.js +11 -2
  582. package/lib/module/components/Thread/Thread.js.map +1 -1
  583. package/lib/module/components/Thread/components/ThreadFooterComponent.js +20 -12
  584. package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  585. package/lib/module/components/docs/ListProps.md +1 -1
  586. package/lib/module/components/docs/data.js +1 -1
  587. package/lib/module/components/index.js +133 -55
  588. package/lib/module/components/index.js.map +1 -1
  589. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +68 -0
  590. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -0
  591. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js +2 -2
  592. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  593. package/lib/module/contexts/channelContext/ChannelContext.js +2 -2
  594. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  595. package/lib/module/contexts/channelsContext/ChannelsContext.js +2 -2
  596. package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
  597. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js +155 -0
  598. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -0
  599. package/lib/module/contexts/channelsStateContext/useChannelState.js +144 -0
  600. package/lib/module/contexts/channelsStateContext/useChannelState.js.map +1 -0
  601. package/lib/module/contexts/chatContext/ChatContext.js +2 -2
  602. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  603. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js +2 -2
  604. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  605. package/lib/module/contexts/keyboardContext/KeyboardContext.js +2 -2
  606. package/lib/module/contexts/keyboardContext/KeyboardContext.js.map +1 -1
  607. package/lib/module/contexts/messageContext/MessageContext.js +2 -2
  608. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  609. package/lib/module/contexts/messageInputContext/MessageInputContext.js +122 -84
  610. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  611. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +9 -5
  612. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  613. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +10 -3
  614. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  615. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js +5 -19
  616. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  617. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.js +36 -0
  618. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.js.map +1 -0
  619. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js +105 -0
  620. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +1 -0
  621. package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
  622. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  623. package/lib/module/contexts/overlayContext/OverlayContext.js +1 -1
  624. package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
  625. package/lib/module/contexts/overlayContext/OverlayProvider.js +55 -46
  626. package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
  627. package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +61 -0
  628. package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js.map +1 -0
  629. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +2 -2
  630. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  631. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +20 -33
  632. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  633. package/lib/module/contexts/themeContext/ThemeContext.js +2 -2
  634. package/lib/module/contexts/themeContext/ThemeContext.js.map +1 -1
  635. package/lib/module/contexts/themeContext/utils/theme.js +45 -20
  636. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  637. package/lib/module/contexts/threadContext/ThreadContext.js +2 -2
  638. package/lib/module/contexts/threadContext/ThreadContext.js.map +1 -1
  639. package/lib/module/contexts/translationContext/TranslationContext.js +1 -1
  640. package/lib/module/contexts/translationContext/TranslationContext.js.map +1 -1
  641. package/lib/module/contexts/typingContext/TypingContext.js +2 -2
  642. package/lib/module/contexts/typingContext/TypingContext.js.map +1 -1
  643. package/lib/module/contexts/utils/getDisplayName.js.map +1 -1
  644. package/lib/module/emoji-data/compiled.js +0 -315
  645. package/lib/module/emoji-data/compiled.js.map +1 -1
  646. package/lib/module/emoji-data/emojiNames.js +0 -105
  647. package/lib/module/emoji-data/emojiNames.js.map +1 -1
  648. package/lib/module/emoji-data/emojis.js +0 -175
  649. package/lib/module/emoji-data/emojis.js.map +1 -1
  650. package/lib/module/emoji-data/index.js +2 -2
  651. package/lib/module/emoji-data/index.js.map +1 -1
  652. package/lib/module/hooks/useStreami18n.js.map +1 -1
  653. package/lib/module/i18n/en.json +9 -3
  654. package/lib/module/i18n/fr.json +9 -3
  655. package/lib/module/i18n/hi.json +9 -3
  656. package/lib/module/i18n/it.json +9 -3
  657. package/lib/module/i18n/ja.json +9 -0
  658. package/lib/module/i18n/ko.json +9 -0
  659. package/lib/module/i18n/nl.json +9 -3
  660. package/lib/module/i18n/ru.json +9 -3
  661. package/lib/module/i18n/tr.json +10 -4
  662. package/lib/module/icons/Pin.js +42 -0
  663. package/lib/module/icons/Pin.js.map +1 -0
  664. package/lib/module/icons/PinHeader.js +38 -0
  665. package/lib/module/icons/PinHeader.js.map +1 -0
  666. package/lib/module/icons/Unpin.js +38 -0
  667. package/lib/module/icons/Unpin.js.map +1 -0
  668. package/lib/module/icons/index.js +39 -26
  669. package/lib/module/icons/index.js.map +1 -1
  670. package/lib/module/icons/utils/base.js +1 -1
  671. package/lib/module/index.js +6 -6
  672. package/lib/module/mock-builders/api/error.js +1 -1
  673. package/lib/module/mock-builders/api/sendMessage.js +4 -1
  674. package/lib/module/mock-builders/api/sendMessage.js.map +1 -1
  675. package/lib/module/mock-builders/generator/attachment.js +1 -3
  676. package/lib/module/mock-builders/generator/attachment.js.map +1 -1
  677. package/lib/module/mock-builders/generator/channel.js +101 -50
  678. package/lib/module/mock-builders/generator/channel.js.map +1 -1
  679. package/lib/module/mock-builders/generator/user.js +32 -33
  680. package/lib/module/mock-builders/generator/user.js.map +1 -1
  681. package/lib/module/mock-builders/mock.js +3 -3
  682. package/lib/module/mock-builders/mock.js.map +1 -1
  683. package/lib/module/native.js +1 -7
  684. package/lib/module/native.js.map +1 -1
  685. package/lib/module/styleguideComponents/ArgumentsRenderer.js +7 -7
  686. package/lib/module/styleguideComponents/ArgumentsRenderer.js.map +1 -1
  687. package/lib/module/styleguideComponents/JsDoc.js +4 -4
  688. package/lib/module/styleguideComponents/JsDoc.js.map +1 -1
  689. package/lib/module/styleguideComponents/PathlineRenderer.js +7 -7
  690. package/lib/module/styleguideComponents/PathlineRenderer.js.map +1 -1
  691. package/lib/module/styleguideComponents/PropsRenderer.js +25 -25
  692. package/lib/module/styleguideComponents/PropsRenderer.js.map +1 -1
  693. package/lib/module/styleguideComponents/Wrapper.js +1 -1
  694. package/lib/module/styleguideComponents/Wrapper.js.map +1 -1
  695. package/lib/module/utils/Streami18n.js.map +1 -1
  696. package/lib/module/utils/date.js +13 -0
  697. package/lib/module/utils/date.js.map +1 -0
  698. package/lib/module/utils/getResizedImageUrl.js +26 -0
  699. package/lib/module/utils/getResizedImageUrl.js.map +1 -0
  700. package/lib/module/utils/getUrlOfImageAttachment.js +9 -0
  701. package/lib/module/utils/getUrlOfImageAttachment.js.map +1 -0
  702. package/lib/module/utils/utils.js +17 -9
  703. package/lib/module/utils/utils.js.map +1 -1
  704. package/lib/module/version.json +1 -1
  705. package/lib/typescript/components/Attachment/Attachment.d.ts +1 -1
  706. package/lib/typescript/components/Attachment/AttachmentActions.d.ts +1 -1
  707. package/lib/typescript/components/Attachment/Card.d.ts +3 -1
  708. package/lib/typescript/components/Attachment/FileAttachment.d.ts +1 -1
  709. package/lib/typescript/components/Attachment/Gallery.d.ts +4 -6
  710. package/lib/typescript/components/Attachment/Giphy.d.ts +1 -1
  711. package/lib/typescript/components/Attachment/utils/buildGallery/buildGallery.d.ts +23 -0
  712. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.d.ts +7 -0
  713. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.d.ts +7 -0
  714. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.d.ts +7 -0
  715. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnail.d.ts +10 -0
  716. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnailGrid.d.ts +137 -0
  717. package/lib/typescript/components/Attachment/utils/buildGallery/types.d.ts +23 -0
  718. package/lib/typescript/components/Attachment/utils/getAspectRatio.d.ts +9 -0
  719. package/lib/typescript/components/Attachment/utils/getGalleryImageBorderRadius.d.ts +22 -0
  720. package/lib/typescript/components/AutoCompleteInput/AutoCompleteInput.d.ts +7 -1
  721. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.d.ts +4 -0
  722. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionHeader.d.ts +8 -0
  723. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionItem.d.ts +10 -0
  724. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts +21 -0
  725. package/lib/typescript/components/Channel/Channel.d.ts +13 -12
  726. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +1 -1
  727. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -68
  728. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -126
  729. package/lib/typescript/components/Channel/hooks/useCreateOwnCapabilitiesContext.d.ts +7 -0
  730. package/lib/typescript/components/ChannelList/ChannelList.d.ts +1 -1
  731. package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts +4 -2
  732. package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts +2 -2
  733. package/lib/typescript/components/ChannelPreview/ChannelPreviewMessenger.d.ts +2 -2
  734. package/lib/typescript/components/ChannelPreview/ChannelPreviewMutedStatus.d.ts +9 -0
  735. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.d.ts +12 -0
  736. package/lib/typescript/components/Chat/Chat.d.ts +1 -1
  737. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts +4 -1
  738. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryImage.d.ts +1 -1
  739. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +1 -1
  740. package/lib/typescript/components/ImageGallery/components/ImageGalleryHeader.d.ts +1 -1
  741. package/lib/typescript/components/ImageGallery/components/ImageGrid.d.ts +1 -1
  742. package/lib/typescript/components/Indicators/LoadingErrorIndicator.d.ts +1 -1
  743. package/lib/typescript/components/Message/Message.d.ts +4 -3
  744. package/lib/typescript/components/Message/MessageSimple/MessageAvatar.d.ts +1 -1
  745. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +1 -1
  746. package/lib/typescript/components/Message/MessageSimple/MessageDeleted.d.ts +2 -2
  747. package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts +2 -2
  748. package/lib/typescript/components/Message/MessageSimple/MessagePinnedHeader.d.ts +8 -0
  749. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts +1 -1
  750. package/lib/typescript/components/Message/MessageSimple/MessageStatus.d.ts +1 -1
  751. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts +1 -0
  752. package/lib/typescript/components/Message/MessageSimple/ReactionList.d.ts +2 -1
  753. package/lib/typescript/components/Message/MessageSimple/utils/parseLinks.d.ts +7 -0
  754. package/lib/typescript/components/Message/MessageSimple/utils/parseLinks.test.d.ts +1 -0
  755. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +18 -3
  756. package/lib/typescript/components/Message/MessageSimple/utils/renderText.test.d.ts +1 -0
  757. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
  758. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +15 -0
  759. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +26 -0
  760. package/lib/typescript/components/Message/utils/messageActions.d.ts +22 -21
  761. package/lib/typescript/components/Message/utils/removeReservedFields.d.ts +1 -1
  762. package/lib/typescript/components/MessageInput/AttachButton.d.ts +1 -1
  763. package/lib/typescript/components/MessageInput/CommandsButton.d.ts +1 -1
  764. package/lib/typescript/components/MessageInput/CooldownTimer.d.ts +10 -0
  765. package/lib/typescript/components/MessageInput/InputButtons.d.ts +1 -1
  766. package/lib/typescript/components/MessageInput/MessageInput.d.ts +1 -1
  767. package/lib/typescript/components/MessageInput/MoreOptionsButton.d.ts +1 -1
  768. package/lib/typescript/components/MessageInput/SendMessageDisallowedIndicator.d.ts +1 -0
  769. package/lib/typescript/components/MessageInput/hooks/useCooldown.d.ts +9 -0
  770. package/lib/typescript/components/MessageInput/hooks/useCountdown.d.ts +8 -0
  771. package/lib/typescript/components/MessageList/MessageList.d.ts +2 -1
  772. package/lib/typescript/components/MessageList/MessageSystem.d.ts +1 -1
  773. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +1 -0
  774. package/lib/typescript/components/MessageList/utils/getGroupStyles.d.ts +1 -1
  775. package/lib/typescript/components/MessageOverlay/MessageActionList.d.ts +12 -0
  776. package/lib/typescript/components/MessageOverlay/MessageActionListItem.d.ts +20 -0
  777. package/lib/typescript/components/MessageOverlay/MessageOverlay.d.ts +4 -4
  778. package/lib/typescript/components/MessageOverlay/OverlayBackdrop.d.ts +6 -0
  779. package/lib/typescript/components/MessageOverlay/OverlayReactions.d.ts +3 -1
  780. package/lib/typescript/components/MessageOverlay/OverlayReactionsAvatar.d.ts +7 -0
  781. package/lib/typescript/components/MessageOverlay/hooks/useMessageActionAnimation.d.ts +12 -0
  782. package/lib/typescript/components/Reply/Reply.d.ts +1 -1
  783. package/lib/typescript/components/Thread/Thread.d.ts +2 -2
  784. package/lib/typescript/components/index.d.ts +13 -7
  785. package/lib/typescript/contexts/activeChannelsRefContext/ActiveChannelsRefContext.d.ts +9 -0
  786. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +28 -30
  787. package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts +13 -5
  788. package/lib/typescript/contexts/channelsStateContext/ChannelsStateContext.d.ts +41 -0
  789. package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts +20 -0
  790. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +2 -6
  791. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +21 -10
  792. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +3 -3
  793. package/lib/typescript/contexts/messageInputContext/hooks/useMessageDetailsForState.d.ts +1 -1
  794. package/lib/typescript/contexts/messageOverlayContext/MessageOverlayContext.d.ts +12 -13
  795. package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.d.ts +12 -0
  796. package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.test.d.ts +1 -0
  797. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +23 -114
  798. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +14 -7
  799. package/lib/typescript/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.d.ts +25 -0
  800. package/lib/typescript/contexts/suggestionsContext/SuggestionsContext.d.ts +14 -13
  801. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +41 -16
  802. package/lib/typescript/contexts/utils/getDisplayName.d.ts +2 -2
  803. package/lib/typescript/hooks/useStreami18n.d.ts +1 -1
  804. package/lib/typescript/i18n/en.json +9 -3
  805. package/lib/typescript/i18n/fr.json +9 -3
  806. package/lib/typescript/i18n/hi.json +9 -3
  807. package/lib/typescript/i18n/it.json +9 -3
  808. package/lib/typescript/i18n/ja.json +9 -0
  809. package/lib/typescript/i18n/ko.json +9 -0
  810. package/lib/typescript/i18n/nl.json +9 -3
  811. package/lib/typescript/i18n/ru.json +9 -3
  812. package/lib/typescript/i18n/tr.json +10 -4
  813. package/lib/typescript/icons/{Left.d.ts → Pin.d.ts} +1 -1
  814. package/lib/typescript/icons/PinHeader.d.ts +3 -0
  815. package/lib/typescript/icons/{Right.d.ts → Unpin.d.ts} +1 -1
  816. package/lib/typescript/icons/index.d.ts +3 -2
  817. package/lib/typescript/native.d.ts +1 -9
  818. package/lib/typescript/utils/Streami18n.d.ts +11 -8
  819. package/lib/typescript/utils/date.d.ts +2 -0
  820. package/lib/typescript/utils/getResizedImageUrl.d.ts +19 -0
  821. package/lib/typescript/utils/getUrlOfImageAttachment.d.ts +7 -0
  822. package/lib/typescript/utils/utils.d.ts +14 -11
  823. package/package.json +12 -14
  824. package/src/components/Attachment/Attachment.tsx +3 -3
  825. package/src/components/Attachment/AttachmentActions.tsx +2 -2
  826. package/src/components/Attachment/Card.tsx +8 -5
  827. package/src/components/Attachment/FileAttachment.tsx +3 -4
  828. package/src/components/Attachment/FileIcon.tsx +2 -2
  829. package/src/components/Attachment/Gallery.tsx +164 -193
  830. package/src/components/Attachment/Giphy.tsx +67 -70
  831. package/src/components/Attachment/__tests__/Attachment.test.js +22 -14
  832. package/src/components/Attachment/__tests__/Gallery.test.js +233 -0
  833. package/src/components/Attachment/__tests__/buildGallery.test.js +131 -0
  834. package/src/components/Attachment/utils/buildGallery/buildGallery.ts +75 -0
  835. package/src/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.ts +95 -0
  836. package/src/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.ts +99 -0
  837. package/src/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.ts +64 -0
  838. package/src/components/Attachment/utils/buildGallery/buildThumbnail.ts +46 -0
  839. package/src/components/Attachment/utils/buildGallery/buildThumbnailGrid.ts +186 -0
  840. package/src/components/Attachment/utils/buildGallery/types.ts +27 -0
  841. package/src/components/Attachment/utils/getAspectRatio.ts +21 -0
  842. package/src/components/Attachment/utils/getGalleryImageBorderRadius.ts +71 -0
  843. package/src/components/AttachmentPicker/AttachmentPicker.tsx +4 -2
  844. package/src/components/AutoCompleteInput/AutoCompleteInput.tsx +43 -28
  845. package/src/components/AutoCompleteInput/{CommandsItem.tsx → AutoCompleteSuggestionCommandIcon.tsx} +3 -57
  846. package/src/components/AutoCompleteInput/AutoCompleteSuggestionHeader.tsx +109 -0
  847. package/src/components/AutoCompleteInput/AutoCompleteSuggestionItem.tsx +156 -0
  848. package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +212 -0
  849. package/src/components/AutoCompleteInput/__tests__/AutoCompleteInput.test.js +6 -12
  850. package/src/components/Avatar/Avatar.tsx +7 -10
  851. package/src/components/Avatar/GroupAvatar.tsx +7 -21
  852. package/src/components/Avatar/__tests__/Avatar.test.js +2 -30
  853. package/src/components/Channel/Channel.tsx +288 -232
  854. package/src/components/Channel/__tests__/Channel.test.js +34 -29
  855. package/src/components/Channel/__tests__/ownCapabilities.test.js +376 -0
  856. package/src/components/Channel/hooks/useCreateChannelContext.ts +6 -6
  857. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +4 -3
  858. package/src/components/Channel/hooks/useCreateMessagesContext.ts +9 -30
  859. package/src/components/Channel/hooks/useCreateOwnCapabilitiesContext.ts +54 -0
  860. package/src/components/ChannelList/ChannelList.tsx +8 -9
  861. package/src/components/ChannelList/ChannelListFooterLoadingIndicator.tsx +2 -3
  862. package/src/components/ChannelList/ChannelListHeaderErrorIndicator.tsx +3 -7
  863. package/src/components/ChannelList/ChannelListHeaderNetworkDownIndicator.tsx +5 -2
  864. package/src/components/ChannelList/ChannelListMessenger.tsx +3 -4
  865. package/src/components/ChannelList/__tests__/ChannelList.test.js +73 -13
  866. package/src/components/ChannelList/__tests__/ChannelListMessenger.test.js +11 -12
  867. package/src/components/ChannelList/hooks/listeners/useAddedToChannelNotification.ts +3 -3
  868. package/src/components/ChannelList/hooks/listeners/useChannelDeleted.ts +2 -2
  869. package/src/components/ChannelList/hooks/listeners/useChannelHidden.ts +2 -2
  870. package/src/components/ChannelList/hooks/listeners/useChannelTruncated.ts +2 -2
  871. package/src/components/ChannelList/hooks/listeners/useChannelUpdated.ts +2 -2
  872. package/src/components/ChannelList/hooks/listeners/useChannelVisible.ts +3 -3
  873. package/src/components/ChannelList/hooks/listeners/useNewMessage.ts +2 -3
  874. package/src/components/ChannelList/hooks/listeners/useNewMessageNotification.ts +4 -4
  875. package/src/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.ts +2 -2
  876. package/src/components/ChannelList/hooks/listeners/useUserPresence.ts +2 -2
  877. package/src/components/ChannelList/hooks/useCreateChannelsContext.ts +1 -2
  878. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +86 -44
  879. package/src/components/ChannelPreview/ChannelAvatar.tsx +3 -5
  880. package/src/components/ChannelPreview/ChannelPreview.tsx +3 -3
  881. package/src/components/ChannelPreview/ChannelPreviewMessage.tsx +2 -2
  882. package/src/components/ChannelPreview/ChannelPreviewMessenger.tsx +27 -11
  883. package/src/components/ChannelPreview/ChannelPreviewMutedStatus.tsx +71 -0
  884. package/src/components/ChannelPreview/ChannelPreviewStatus.tsx +4 -3
  885. package/src/components/ChannelPreview/ChannelPreviewTitle.tsx +2 -2
  886. package/src/components/ChannelPreview/ChannelPreviewUnreadCount.tsx +2 -1
  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 +8 -2
  890. package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayName.ts +3 -4
  891. package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.ts +2 -2
  892. package/src/components/ChannelPreview/hooks/useLatestMessagePreview.ts +4 -3
  893. package/src/components/Chat/Chat.tsx +6 -6
  894. package/src/components/Chat/__tests__/Chat.test.js +10 -6
  895. package/src/components/Chat/hooks/useIsOnline.ts +12 -8
  896. package/src/components/ImageGallery/ImageGallery.tsx +83 -49
  897. package/src/components/ImageGallery/components/AnimatedGalleryImage.tsx +1 -2
  898. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +2 -5
  899. package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +5 -7
  900. package/src/components/ImageGallery/components/ImageGrid.tsx +4 -5
  901. package/src/components/ImageGallery/components/ImageGridHandle.tsx +1 -0
  902. package/src/components/Indicators/LoadingErrorIndicator.tsx +1 -1
  903. package/src/components/Indicators/LoadingIndicator.tsx +1 -2
  904. package/src/components/Message/Message.tsx +155 -594
  905. package/src/components/Message/MessageSimple/MessageAvatar.tsx +1 -2
  906. package/src/components/Message/MessageSimple/MessageContent.tsx +23 -25
  907. package/src/components/Message/MessageSimple/MessageDeleted.tsx +8 -6
  908. package/src/components/Message/MessageSimple/MessageFooter.tsx +45 -27
  909. package/src/components/Message/MessageSimple/MessagePinnedHeader.tsx +150 -0
  910. package/src/components/Message/MessageSimple/MessageReplies.tsx +5 -0
  911. package/src/components/Message/MessageSimple/MessageRepliesAvatars.tsx +2 -3
  912. package/src/components/Message/MessageSimple/MessageSimple.tsx +47 -26
  913. package/src/components/Message/MessageSimple/MessageStatus.tsx +19 -34
  914. package/src/components/Message/MessageSimple/MessageTextContainer.tsx +5 -0
  915. package/src/components/Message/MessageSimple/ReactionList.tsx +64 -77
  916. package/src/components/Message/MessageSimple/__tests__/Message.test.js +9 -10
  917. package/src/components/Message/MessageSimple/__tests__/MessageAvatar.test.js +2 -2
  918. package/src/components/Message/MessageSimple/__tests__/MessageContent.test.js +40 -47
  919. package/src/components/Message/MessageSimple/__tests__/MessagePinnedHeader.test.js +53 -0
  920. package/src/components/Message/MessageSimple/__tests__/MessageReplies.test.js +2 -2
  921. package/src/components/Message/MessageSimple/__tests__/MessageStatus.test.js +4 -5
  922. package/src/components/Message/MessageSimple/__tests__/MessageTextContainer.test.js +2 -2
  923. package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessageAvatar.test.js.snap +1 -1
  924. package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessagePinnedHeader.test.js.snap +80 -0
  925. package/src/components/Message/MessageSimple/utils/parseLinks.test.ts +100 -0
  926. package/src/components/Message/MessageSimple/utils/parseLinks.ts +95 -0
  927. package/src/components/Message/MessageSimple/utils/renderText.test.tsx +70 -0
  928. package/src/components/Message/MessageSimple/utils/renderText.tsx +98 -58
  929. package/src/components/Message/hooks/useCreateMessageContext.ts +1 -7
  930. package/src/components/Message/hooks/useMessageActionHandlers.ts +172 -0
  931. package/src/components/Message/hooks/useMessageActions.tsx +386 -0
  932. package/src/components/Message/utils/messageActions.ts +64 -38
  933. package/src/components/Message/utils/removeReservedFields.ts +1 -1
  934. package/src/components/MessageInput/AttachButton.tsx +1 -2
  935. package/src/components/MessageInput/CommandsButton.tsx +1 -2
  936. package/src/components/MessageInput/CooldownTimer.tsx +67 -0
  937. package/src/components/MessageInput/FileUploadPreview.tsx +5 -5
  938. package/src/components/MessageInput/ImageUploadPreview.tsx +3 -4
  939. package/src/components/MessageInput/InputButtons.tsx +4 -10
  940. package/src/components/MessageInput/MessageInput.tsx +62 -35
  941. package/src/components/MessageInput/MoreOptionsButton.tsx +1 -2
  942. package/src/components/MessageInput/SendMessageDisallowedIndicator.tsx +47 -0
  943. package/src/components/MessageInput/ShowThreadMessageInChannelButton.tsx +2 -2
  944. package/src/components/MessageInput/__tests__/AttachButton.test.js +2 -2
  945. package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +43 -45
  946. package/src/components/MessageInput/__tests__/ImageUploadPreview.test.js +15 -15
  947. package/src/components/MessageInput/__tests__/MessageInput.test.js +15 -23
  948. package/src/components/MessageInput/__tests__/SendButton.test.js +2 -2
  949. package/src/components/MessageInput/__tests__/UploadProgressIndicator.test.js +2 -2
  950. package/src/components/MessageInput/__tests__/__snapshots__/FileUploadPreview.test.js.snap +3593 -2889
  951. package/src/components/MessageInput/__tests__/__snapshots__/ImageUploadPreview.test.js.snap +1912 -1572
  952. package/src/components/MessageInput/__tests__/__snapshots__/MessageInput.test.js.snap +539 -296
  953. package/src/components/MessageInput/__tests__/__snapshots__/UploadProgressIndicator.test.js.snap +4 -4
  954. package/src/components/MessageInput/hooks/useCooldown.ts +62 -0
  955. package/src/components/MessageInput/hooks/useCountdown.ts +48 -0
  956. package/src/components/MessageList/DateHeader.tsx +2 -2
  957. package/src/components/MessageList/InlineDateSeparator.tsx +2 -2
  958. package/src/components/MessageList/MessageList.tsx +63 -39
  959. package/src/components/MessageList/MessageSystem.tsx +2 -2
  960. package/src/components/MessageList/TypingIndicator.tsx +1 -2
  961. package/src/components/MessageList/__tests__/MessageList.test.js +241 -116
  962. package/src/components/MessageList/__tests__/MessageSystem.test.js +3 -3
  963. package/src/components/MessageList/__tests__/ScrollToBottomButton.test.js +3 -3
  964. package/src/components/MessageList/__tests__/TypingIndicator.test.js +5 -6
  965. package/src/components/MessageList/__tests__/__snapshots__/TypingIndicator.test.js.snap +1 -1
  966. package/src/components/MessageList/hooks/useMessageList.ts +19 -9
  967. package/src/components/MessageList/hooks/useTypingString.ts +1 -2
  968. package/src/components/MessageList/utils/getDateSeparators.ts +4 -3
  969. package/src/components/MessageList/utils/getGroupStyles.ts +14 -9
  970. package/src/components/MessageList/utils/getLastReceivedMessage.ts +6 -1
  971. package/src/components/MessageOverlay/{MessageActions.tsx → MessageActionList.tsx} +59 -91
  972. package/src/components/MessageOverlay/MessageActionListItem.tsx +113 -0
  973. package/src/components/MessageOverlay/MessageOverlay.tsx +258 -217
  974. package/src/components/MessageOverlay/OverlayBackdrop.tsx +18 -0
  975. package/src/components/MessageOverlay/OverlayReactionList.tsx +3 -5
  976. package/src/components/MessageOverlay/OverlayReactions.tsx +27 -8
  977. package/src/components/MessageOverlay/OverlayReactionsAvatar.tsx +27 -0
  978. package/src/components/MessageOverlay/hooks/useMessageActionAnimation.tsx +44 -0
  979. package/src/components/Reply/Reply.tsx +25 -15
  980. package/src/components/Thread/Thread.tsx +13 -6
  981. package/src/components/Thread/__tests__/Thread.test.js +38 -113
  982. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +1085 -1018
  983. package/src/components/Thread/components/ThreadFooterComponent.tsx +14 -3
  984. package/src/components/docs/ListProps.md +1 -1
  985. package/src/components/index.ts +13 -7
  986. package/src/contexts/activeChannelsRefContext/ActiveChannelsRefContext.tsx +32 -0
  987. package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +1 -2
  988. package/src/contexts/channelContext/ChannelContext.tsx +28 -32
  989. package/src/contexts/channelsContext/ChannelsContext.tsx +18 -7
  990. package/src/contexts/channelsStateContext/ChannelsStateContext.tsx +286 -0
  991. package/src/contexts/channelsStateContext/useChannelState.ts +207 -0
  992. package/src/contexts/chatContext/ChatContext.tsx +1 -2
  993. package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +1 -2
  994. package/src/contexts/keyboardContext/KeyboardContext.tsx +1 -2
  995. package/src/contexts/messageContext/MessageContext.tsx +2 -10
  996. package/src/contexts/messageInputContext/MessageInputContext.tsx +77 -36
  997. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +9 -7
  998. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +15 -10
  999. package/src/contexts/messageOverlayContext/MessageOverlayContext.tsx +19 -28
  1000. package/src/contexts/messageOverlayContext/hooks/useResettableState.test.tsx +46 -0
  1001. package/src/contexts/messageOverlayContext/hooks/useResettableState.ts +22 -0
  1002. package/src/contexts/messagesContext/MessagesContext.tsx +39 -140
  1003. package/src/contexts/overlayContext/OverlayContext.tsx +19 -11
  1004. package/src/contexts/overlayContext/OverlayProvider.tsx +48 -42
  1005. package/src/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.tsx +38 -0
  1006. package/src/contexts/paginatedMessageListContext/PaginatedMessageListContext.tsx +1 -2
  1007. package/src/contexts/suggestionsContext/SuggestionsContext.tsx +26 -46
  1008. package/src/contexts/suggestionsContext/__tests__/Suggestions.test.js +1 -1
  1009. package/src/contexts/themeContext/ThemeContext.tsx +1 -0
  1010. package/src/contexts/themeContext/utils/theme.ts +84 -35
  1011. package/src/contexts/threadContext/ThreadContext.tsx +1 -2
  1012. package/src/contexts/translationContext/TranslationContext.tsx +3 -3
  1013. package/src/contexts/typingContext/TypingContext.tsx +1 -2
  1014. package/src/contexts/utils/getDisplayName.ts +3 -1
  1015. package/src/emoji-data/compiled.ts +1830 -9609
  1016. package/src/emoji-data/emojiNames.ts +0 -140
  1017. package/src/emoji-data/emojis.ts +0 -210
  1018. package/src/emoji-data/index.js +1 -1
  1019. package/src/hooks/useStreami18n.ts +1 -1
  1020. package/src/i18n/en.json +9 -3
  1021. package/src/i18n/fr.json +9 -3
  1022. package/src/i18n/hi.json +9 -3
  1023. package/src/i18n/it.json +9 -3
  1024. package/src/i18n/ja.json +9 -0
  1025. package/src/i18n/ko.json +9 -0
  1026. package/src/i18n/nl.json +9 -3
  1027. package/src/i18n/ru.json +9 -3
  1028. package/src/i18n/tr.json +10 -4
  1029. package/src/icons/Pin.tsx +17 -0
  1030. package/src/icons/PinHeader.tsx +12 -0
  1031. package/src/icons/Unpin.tsx +12 -0
  1032. package/src/icons/index.ts +3 -2
  1033. package/src/mock-builders/api/sendMessage.js +3 -1
  1034. package/src/mock-builders/generator/attachment.js +0 -2
  1035. package/src/mock-builders/generator/channel.js +101 -46
  1036. package/src/mock-builders/generator/user.js +33 -26
  1037. package/src/mock-builders/mock.js +2 -2
  1038. package/src/native.ts +2 -13
  1039. package/src/styleguideComponents/ArgumentsRenderer.tsx +2 -1
  1040. package/src/styleguideComponents/JsDoc.tsx +3 -1
  1041. package/src/styleguideComponents/PathlineRenderer.tsx +2 -1
  1042. package/src/styleguideComponents/PropsRenderer.tsx +7 -4
  1043. package/src/styleguideComponents/Wrapper.tsx +1 -0
  1044. package/src/utils/Streami18n.ts +3 -3
  1045. package/src/utils/__tests__/Streami18n.test.js +1 -2
  1046. package/src/utils/date.ts +4 -0
  1047. package/src/utils/getResizedImageUrl.ts +43 -0
  1048. package/src/utils/getUrlOfImageAttachment.ts +10 -0
  1049. package/src/utils/utils.ts +23 -16
  1050. package/src/version.json +1 -1
  1051. package/lib/commonjs/components/AutoCompleteInput/CommandsHeader.js +0 -78
  1052. package/lib/commonjs/components/AutoCompleteInput/CommandsHeader.js.map +0 -1
  1053. package/lib/commonjs/components/AutoCompleteInput/CommandsItem.js.map +0 -1
  1054. package/lib/commonjs/components/AutoCompleteInput/EmojisHeader.js +0 -81
  1055. package/lib/commonjs/components/AutoCompleteInput/EmojisHeader.js.map +0 -1
  1056. package/lib/commonjs/components/AutoCompleteInput/EmojisItem.js +0 -75
  1057. package/lib/commonjs/components/AutoCompleteInput/EmojisItem.js.map +0 -1
  1058. package/lib/commonjs/components/AutoCompleteInput/MentionsItem.js +0 -125
  1059. package/lib/commonjs/components/AutoCompleteInput/MentionsItem.js.map +0 -1
  1060. package/lib/commonjs/components/AutoCompleteInput/SuggestionsList.js +0 -199
  1061. package/lib/commonjs/components/AutoCompleteInput/SuggestionsList.js.map +0 -1
  1062. package/lib/commonjs/components/MessageOverlay/MessageActions.js.map +0 -1
  1063. package/lib/commonjs/icons/Left.js +0 -38
  1064. package/lib/commonjs/icons/Left.js.map +0 -1
  1065. package/lib/commonjs/icons/Right.js +0 -38
  1066. package/lib/commonjs/icons/Right.js.map +0 -1
  1067. package/lib/module/components/AutoCompleteInput/CommandsHeader.js +0 -78
  1068. package/lib/module/components/AutoCompleteInput/CommandsHeader.js.map +0 -1
  1069. package/lib/module/components/AutoCompleteInput/CommandsItem.js.map +0 -1
  1070. package/lib/module/components/AutoCompleteInput/EmojisHeader.js +0 -81
  1071. package/lib/module/components/AutoCompleteInput/EmojisHeader.js.map +0 -1
  1072. package/lib/module/components/AutoCompleteInput/EmojisItem.js +0 -75
  1073. package/lib/module/components/AutoCompleteInput/EmojisItem.js.map +0 -1
  1074. package/lib/module/components/AutoCompleteInput/MentionsItem.js +0 -125
  1075. package/lib/module/components/AutoCompleteInput/MentionsItem.js.map +0 -1
  1076. package/lib/module/components/AutoCompleteInput/SuggestionsList.js +0 -199
  1077. package/lib/module/components/AutoCompleteInput/SuggestionsList.js.map +0 -1
  1078. package/lib/module/components/MessageOverlay/MessageActions.js.map +0 -1
  1079. package/lib/module/icons/Left.js +0 -38
  1080. package/lib/module/icons/Left.js.map +0 -1
  1081. package/lib/module/icons/Right.js +0 -38
  1082. package/lib/module/icons/Right.js.map +0 -1
  1083. package/lib/typescript/components/AutoCompleteInput/CommandsHeader.d.ts +0 -2
  1084. package/lib/typescript/components/AutoCompleteInput/CommandsItem.d.ts +0 -15
  1085. package/lib/typescript/components/AutoCompleteInput/EmojisHeader.d.ts +0 -5
  1086. package/lib/typescript/components/AutoCompleteInput/EmojisItem.d.ts +0 -12
  1087. package/lib/typescript/components/AutoCompleteInput/MentionsItem.d.ts +0 -16
  1088. package/lib/typescript/components/AutoCompleteInput/SuggestionsList.d.ts +0 -13
  1089. package/lib/typescript/components/MessageOverlay/MessageActions.d.ts +0 -11
  1090. package/src/components/AutoCompleteInput/CommandsHeader.tsx +0 -43
  1091. package/src/components/AutoCompleteInput/EmojisHeader.tsx +0 -45
  1092. package/src/components/AutoCompleteInput/EmojisItem.tsx +0 -52
  1093. package/src/components/AutoCompleteInput/MentionsItem.tsx +0 -74
  1094. package/src/components/AutoCompleteInput/SuggestionsList.tsx +0 -138
  1095. package/src/components/AutoCompleteInput/__tests__/CommandsItem.test.js +0 -26
  1096. package/src/components/AutoCompleteInput/__tests__/MentionsItem.test.js +0 -62
  1097. package/src/components/MessageList/__tests__/__snapshots__/MessageList.test.js.snap +0 -936
  1098. package/src/icons/Left.tsx +0 -12
  1099. package/src/icons/Right.tsx +0 -12
@@ -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","disabled","disableTypingIndicator","EmptyStateIndicator","FlatList","FooterComponent","HeaderComponent","InlineLoadingMoreRecentIndicator","hideStickyDateHeader","initialScrollToFirstUnreadMessage","InlineDateSeparator","InlineUnreadIndicator","inverted","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","typingEventsEnabled","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","deleted_at","toDateString","onViewableItemsChanged","resetPaginationTrackers","shouldMarkReadOnFirstLoad","countUnread","lastReceivedMessage","hasNewMessage","isMyMessage","user","userID","scrollToBottomIfNeeded","scrollToOffset","offset","state","isUpToDate","maybeCallOnStartReached","renderItem","index","lastMessage","showUnreadUnderlay","insertInlineUnreadIndicator","type","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","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 | 'typingEventsEnabled'\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 | '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 /** 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 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 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 typingEventsEnabled,\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 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 if (\n lastItem?.item?.created_at &&\n !lastItem.item.deleted_at &&\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 <MessageSystem message={message} style={styles.messagePadding} />\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 <Message\n goToMessage={goToMessage}\n groupStyles={\n isMessageWithStylesReadByAndDateSeparator(message) ? message.groupStyles : []\n }\n lastReceivedId={lastReceivedId === message.id ? lastReceivedId : undefined}\n message={message}\n onThreadSelect={onThreadSelect}\n showUnreadUnderlay={showUnreadUnderlay}\n style={styles.messagePadding}\n targetedMessage={targetedMessage === message.id}\n threadList={threadList}\n />\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 <Message\n goToMessage={goToMessage}\n groupStyles={\n isMessageWithStylesReadByAndDateSeparator(message) ? message.groupStyles : []\n }\n lastReceivedId={\n lastReceivedId === message.id || message.quoted_message_id ? lastReceivedId : undefined\n }\n message={message}\n onThreadSelect={onThreadSelect}\n showUnreadUnderlay={showUnreadUnderlay}\n style={styles.messagePadding}\n targetedMessage={targetedMessage === message.id}\n threadList={threadList}\n />\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 if (!message.deleted_at && 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 (legacyImageViewerSwipeBehaviour && ((threadList && thread) || (!threadList && !thread))) {\n setImages(messagesWithImages as MessageType<At, Ch, Co, Ev, Me, Re, Us>[]);\n }\n }, [\n imageString,\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 style={[styles.container, { backgroundColor: white_snow }, container]}>\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 && typingEventsEnabled !== false && (\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 loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n NetworkDownIndicator,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n typingEventsEnabled,\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 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 disabled,\n disableTypingIndicator,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n error,\n FlatList,\n hideStickyDateHeader,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\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 typingEventsEnabled,\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":"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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 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 {\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 +1 @@
1
- {"version":3,"sources":["MessageSystem.tsx"],"names":["styles","StyleSheet","create","container","alignItems","flexDirection","justifyContent","marginBottom","line","flex","height","text","fontSize","fontWeight","textAlign","textContainer","marginTop","MessageSystem","props","formatDate","message","style","theme","colors","grey","grey_whisper","messageList","messageSystem","dateText","tDateTimeParser","createdAt","created_at","parsedDate","date","calendar","toUpperCase","backgroundColor","color","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleProp, StyleSheet, Text, View, ViewStyle } from 'react-native';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n TDateTimeParserInput,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport type { MessageType } from './hooks/useMessageList';\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 flexDirection: 'row',\n justifyContent: 'center',\n marginBottom: 10,\n },\n line: {\n flex: 1,\n height: 0.5,\n },\n text: {\n fontSize: 10,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n textContainer: {\n flex: 3,\n marginTop: 10,\n },\n});\n\nexport type MessageSystemProps<\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 /** Current [message object](https://getstream.io/chat/docs/#message_format) */\n message: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n /**\n * Formatter function for date object.\n *\n * @param date TDateTimeParserInput object of message\n * @returns string\n */\n formatDate?: (date: TDateTimeParserInput) => string;\n style?: StyleProp<ViewStyle>;\n};\n\n/**\n * A component to display system message. e.g, when someone updates the channel,\n * they can attach a message with that update. That message will be available\n * in message list as (type) system message.\n */\nexport const MessageSystem = <\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: MessageSystemProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { formatDate, message, style } = props;\n\n const {\n theme: {\n colors: { grey, grey_whisper },\n messageList: {\n messageSystem: { container, dateText, line, text, textContainer },\n },\n },\n } = useTheme();\n const { tDateTimeParser } = useTranslationContext();\n\n const createdAt = message.created_at;\n const parsedDate = tDateTimeParser(createdAt);\n const date =\n formatDate && createdAt\n ? formatDate(createdAt)\n : parsedDate && isDayOrMoment(parsedDate)\n ? parsedDate.calendar().toUpperCase()\n : parsedDate;\n\n return (\n <View style={[styles.container, style, container]} testID='message-system'>\n <View style={[styles.line, { backgroundColor: grey_whisper }, line]} />\n <View style={[styles.textContainer, textContainer]}>\n <Text style={[styles.text, { color: grey }, text]}>\n {message.text?.toUpperCase() || ''}\n </Text>\n <Text style={[styles.text, { color: grey }, dateText]}>{date}</Text>\n </View>\n <View style={[styles.line, { backgroundColor: grey_whisper }, line]} />\n </View>\n );\n};\n\nMessageSystem.displayName = 'MessageSystem{messageList{messageSystem}}';\n"]}
1
+ {"version":3,"sources":["MessageSystem.tsx"],"names":["styles","StyleSheet","create","container","alignItems","flexDirection","justifyContent","marginBottom","line","flex","height","text","fontSize","fontWeight","textAlign","textContainer","marginTop","MessageSystem","props","formatDate","message","style","theme","colors","grey","grey_whisper","messageList","messageSystem","dateText","tDateTimeParser","createdAt","created_at","parsedDate","date","calendar","toUpperCase","backgroundColor","color","displayName"],"mappings":";;;;;;;AAAA;;AACA;;AAIA;;AACA;;;;;AAiBA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,UAAU,EAAE,QADH;AAETC,IAAAA,aAAa,EAAE,KAFN;AAGTC,IAAAA,cAAc,EAAE,QAHP;AAITC,IAAAA,YAAY,EAAE;AAJL,GADoB;AAO/BC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE,CADF;AAEJC,IAAAA,MAAM,EAAE;AAFJ,GAPyB;AAW/BC,EAAAA,IAAI,EAAE;AACJC,IAAAA,QAAQ,EAAE,EADN;AAEJC,IAAAA,UAAU,EAAE,MAFR;AAGJC,IAAAA,SAAS,EAAE;AAHP,GAXyB;AAgB/BC,EAAAA,aAAa,EAAE;AACbN,IAAAA,IAAI,EAAE,CADO;AAEbO,IAAAA,SAAS,EAAE;AAFE;AAhBgB,CAAlB,CAAf;;AAgDO,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAS3BC,KAT2B,EAUxB;AAAA;;AACH,MAAQC,UAAR,GAAuCD,KAAvC,CAAQC,UAAR;AAAA,MAAoBC,OAApB,GAAuCF,KAAvC,CAAoBE,OAApB;AAAA,MAA6BC,KAA7B,GAAuCH,KAAvC,CAA6BG,KAA7B;;AAEA,kBAOI,6BAPJ;AAAA,kCACEC,KADF;AAAA,8CAEIC,MAFJ;AAAA,MAEcC,IAFd,yBAEcA,IAFd;AAAA,MAEoBC,YAFpB,yBAEoBA,YAFpB;AAAA,8CAGIC,WAHJ,CAIMC,aAJN;AAAA,MAIuBxB,SAJvB,yBAIuBA,SAJvB;AAAA,MAIkCyB,QAJlC,yBAIkCA,QAJlC;AAAA,MAI4CpB,IAJ5C,yBAI4CA,IAJ5C;AAAA,MAIkDG,IAJlD,yBAIkDA,IAJlD;AAAA,MAIwDI,aAJxD,yBAIwDA,aAJxD;;AAQA,8BAA4B,gDAA5B;AAAA,MAAQc,eAAR,yBAAQA,eAAR;;AAEA,MAAMC,SAAS,GAAGV,OAAO,CAACW,UAA1B;AACA,MAAMC,UAAU,GAAGH,eAAe,CAACC,SAAD,CAAlC;AACA,MAAMG,IAAI,GACRd,UAAU,IAAIW,SAAd,GACIX,UAAU,CAACW,SAAD,CADd,GAEIE,UAAU,IAAI,uCAAcA,UAAd,CAAd,GACAA,UAAU,CAACE,QAAX,GAAsBC,WAAtB,EADA,GAEAH,UALN;AAOA,SACE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAAChC,MAAM,CAACG,SAAR,EAAmBkB,KAAnB,EAA0BlB,SAA1B,CAAb;AAAmD,IAAA,MAAM,EAAC,gBAA1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACH,MAAM,CAACQ,IAAR,EAAc;AAAE4B,MAAAA,eAAe,EAAEX;AAAnB,KAAd,EAAiDjB,IAAjD,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,EAEE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACR,MAAM,CAACe,aAAR,EAAuBA,aAAvB,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACf,MAAM,CAACW,IAAR,EAAc;AAAE0B,MAAAA,KAAK,EAAEb;AAAT,KAAd,EAA+Bb,IAA/B,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACG,kBAAAS,OAAO,CAACT,IAAR,mCAAcwB,WAAd,OAA+B,EADlC,CADF,EAIE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACnC,MAAM,CAACW,IAAR,EAAc;AAAE0B,MAAAA,KAAK,EAAEb;AAAT,KAAd,EAA+BI,QAA/B,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAwDK,IAAxD,CAJF,CAFF,EAQE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACjC,MAAM,CAACQ,IAAR,EAAc;AAAE4B,MAAAA,eAAe,EAAEX;AAAnB,KAAd,EAAiDjB,IAAjD,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IARF,CADF;AAYD,CA5CM;;;AA8CPS,aAAa,CAACqB,WAAd,GAA4B,2CAA5B","sourcesContent":["import React from 'react';\nimport { StyleProp, StyleSheet, Text, View, ViewStyle } from 'react-native';\n\nimport type { MessageType } from './hooks/useMessageList';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n TDateTimeParserInput,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\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 flexDirection: 'row',\n justifyContent: 'center',\n marginBottom: 10,\n },\n line: {\n flex: 1,\n height: 0.5,\n },\n text: {\n fontSize: 10,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n textContainer: {\n flex: 3,\n marginTop: 10,\n },\n});\n\nexport type MessageSystemProps<\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 /** Current [message object](https://getstream.io/chat/docs/#message_format) */\n message: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n /**\n * Formatter function for date object.\n *\n * @param date TDateTimeParserInput object of message\n * @returns string\n */\n formatDate?: (date: TDateTimeParserInput) => string;\n style?: StyleProp<ViewStyle>;\n};\n\n/**\n * A component to display system message. e.g, when someone updates the channel,\n * they can attach a message with that update. That message will be available\n * in message list as (type) system message.\n */\nexport const MessageSystem = <\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: MessageSystemProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { formatDate, message, style } = props;\n\n const {\n theme: {\n colors: { grey, grey_whisper },\n messageList: {\n messageSystem: { container, dateText, line, text, textContainer },\n },\n },\n } = useTheme();\n const { tDateTimeParser } = useTranslationContext();\n\n const createdAt = message.created_at;\n const parsedDate = tDateTimeParser(createdAt);\n const date =\n formatDate && createdAt\n ? formatDate(createdAt)\n : parsedDate && isDayOrMoment(parsedDate)\n ? parsedDate.calendar().toUpperCase()\n : parsedDate;\n\n return (\n <View style={[styles.container, style, container]} testID='message-system'>\n <View style={[styles.line, { backgroundColor: grey_whisper }, line]} />\n <View style={[styles.textContainer, textContainer]}>\n <Text style={[styles.text, { color: grey }, text]}>\n {message.text?.toUpperCase() || ''}\n </Text>\n <Text style={[styles.text, { color: grey }, dateText]}>{date}</Text>\n </View>\n <View style={[styles.line, { backgroundColor: grey_whisper }, line]} />\n </View>\n );\n};\n\nMessageSystem.displayName = 'MessageSystem{messageList{messageSystem}}';\n"]}
@@ -11,10 +11,10 @@ var _reactNative = require("react-native");
11
11
 
12
12
  var _useTypingString = require("./hooks/useTypingString");
13
13
 
14
- var _LoadingDots = require("../Indicators/LoadingDots");
15
-
16
14
  var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
17
15
 
16
+ var _LoadingDots = require("../Indicators/LoadingDots");
17
+
18
18
  var _this = this,
19
19
  _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageList/TypingIndicator.tsx";
20
20
 
@@ -52,7 +52,7 @@ var TypingIndicator = function TypingIndicator() {
52
52
  __self: _this,
53
53
  __source: {
54
54
  fileName: _jsxFileName,
55
- lineNumber: 54,
55
+ lineNumber: 53,
56
56
  columnNumber: 5
57
57
  }
58
58
  }, _react["default"].createElement(_LoadingDots.LoadingDots, {
@@ -60,7 +60,7 @@ var TypingIndicator = function TypingIndicator() {
60
60
  __self: _this,
61
61
  __source: {
62
62
  fileName: _jsxFileName,
63
- lineNumber: 58,
63
+ lineNumber: 57,
64
64
  columnNumber: 7
65
65
  }
66
66
  }), _react["default"].createElement(_reactNative.Text, {
@@ -70,7 +70,7 @@ var TypingIndicator = function TypingIndicator() {
70
70
  __self: _this,
71
71
  __source: {
72
72
  fileName: _jsxFileName,
73
- lineNumber: 59,
73
+ lineNumber: 58,
74
74
  columnNumber: 7
75
75
  }
76
76
  }, typingString));
@@ -1 +1 @@
1
- {"version":3,"sources":["TypingIndicator.tsx"],"names":["styles","StyleSheet","create","container","alignItems","flexDirection","height","justifyContent","loadingDots","marginLeft","typingText","TypingIndicator","theme","colors","grey","white_snow","typingIndicator","text","typingString","backgroundColor","color","displayName"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AAEA;;;;;AAaA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,UAAU,EAAE,QADH;AAETC,IAAAA,aAAa,EAAE,KAFN;AAGTC,IAAAA,MAAM,EAAE,EAHC;AAITC,IAAAA,cAAc,EAAE;AAJP,GADoB;AAO/BC,EAAAA,WAAW,EAAE;AACXC,IAAAA,UAAU,EAAE;AADD,GAPkB;AAU/BC,EAAAA,UAAU,EAAE;AACVD,IAAAA,UAAU,EAAE;AADF;AAVmB,CAAlB,CAAf;;AAeO,IAAME,eAAe,GAAG,SAAlBA,eAAkB,GAQxB;AACL,kBAKI,6BALJ;AAAA,kCACEC,KADF;AAAA,8CAEIC,MAFJ;AAAA,MAEcC,IAFd,yBAEcA,IAFd;AAAA,MAEoBC,UAFpB,yBAEoBA,UAFpB;AAAA,8CAGIC,eAHJ;AAAA,MAGuBb,SAHvB,yBAGuBA,SAHvB;AAAA,MAGkCc,IAHlC,yBAGkCA,IAHlC;;AAMA,MAAMC,YAAY,GAAG,uCAArB;AAEA,SACE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CAAClB,MAAM,CAACG,SAAR,EAAmB;AAAEgB,MAAAA,eAAe,EAAKJ,UAAL;AAAjB,KAAnB,EAA2DZ,SAA3D,CADT;AAEE,IAAA,MAAM,EAAC,kBAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAIE,gCAAC,wBAAD;AAAa,IAAA,KAAK,EAAEH,MAAM,CAACQ,WAA3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAJF,EAKE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACR,MAAM,CAACU,UAAR,EAAoB;AAAEU,MAAAA,KAAK,EAAEN;AAAT,KAApB,EAAqCG,IAArC,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAA0DC,YAA1D,CALF,CADF;AASD,CA1BM;;;AA4BPP,eAAe,CAACU,WAAhB,GAA8B,kCAA9B","sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\n\nimport { useTypingString } from './hooks/useTypingString';\n\nimport { LoadingDots } from '../Indicators/LoadingDots';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\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 flexDirection: 'row',\n height: 24,\n justifyContent: 'flex-start',\n },\n loadingDots: {\n marginLeft: 8,\n },\n typingText: {\n marginLeft: 8,\n },\n});\n\nexport const TypingIndicator = <\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 DefaultUserType = DefaultUserType,\n>() => {\n const {\n theme: {\n colors: { grey, white_snow },\n typingIndicator: { container, text },\n },\n } = useTheme();\n const typingString = useTypingString<At, Ch, Co, Ev, Me, Re, Us>();\n\n return (\n <View\n style={[styles.container, { backgroundColor: `${white_snow}E6` }, container]}\n testID='typing-indicator'\n >\n <LoadingDots style={styles.loadingDots} />\n <Text style={[styles.typingText, { color: grey }, text]}>{typingString}</Text>\n </View>\n );\n};\n\nTypingIndicator.displayName = 'TypingIndicator{typingIndicator}';\n"]}
1
+ {"version":3,"sources":["TypingIndicator.tsx"],"names":["styles","StyleSheet","create","container","alignItems","flexDirection","height","justifyContent","loadingDots","marginLeft","typingText","TypingIndicator","theme","colors","grey","white_snow","typingIndicator","text","typingString","backgroundColor","color","displayName"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AAYA;;;;;AAEA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,UAAU,EAAE,QADH;AAETC,IAAAA,aAAa,EAAE,KAFN;AAGTC,IAAAA,MAAM,EAAE,EAHC;AAITC,IAAAA,cAAc,EAAE;AAJP,GADoB;AAO/BC,EAAAA,WAAW,EAAE;AACXC,IAAAA,UAAU,EAAE;AADD,GAPkB;AAU/BC,EAAAA,UAAU,EAAE;AACVD,IAAAA,UAAU,EAAE;AADF;AAVmB,CAAlB,CAAf;;AAeO,IAAME,eAAe,GAAG,SAAlBA,eAAkB,GAQxB;AACL,kBAKI,6BALJ;AAAA,kCACEC,KADF;AAAA,8CAEIC,MAFJ;AAAA,MAEcC,IAFd,yBAEcA,IAFd;AAAA,MAEoBC,UAFpB,yBAEoBA,UAFpB;AAAA,8CAGIC,eAHJ;AAAA,MAGuBb,SAHvB,yBAGuBA,SAHvB;AAAA,MAGkCc,IAHlC,yBAGkCA,IAHlC;;AAMA,MAAMC,YAAY,GAAG,uCAArB;AAEA,SACE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CAAClB,MAAM,CAACG,SAAR,EAAmB;AAAEgB,MAAAA,eAAe,EAAKJ,UAAL;AAAjB,KAAnB,EAA2DZ,SAA3D,CADT;AAEE,IAAA,MAAM,EAAC,kBAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAIE,gCAAC,wBAAD;AAAa,IAAA,KAAK,EAAEH,MAAM,CAACQ,WAA3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAJF,EAKE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACR,MAAM,CAACU,UAAR,EAAoB;AAAEU,MAAAA,KAAK,EAAEN;AAAT,KAApB,EAAqCG,IAArC,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAA0DC,YAA1D,CALF,CADF;AASD,CA1BM;;;AA4BPP,eAAe,CAACU,WAAhB,GAA8B,kCAA9B","sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\n\nimport { useTypingString } from './hooks/useTypingString';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\nimport { LoadingDots } from '../Indicators/LoadingDots';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n height: 24,\n justifyContent: 'flex-start',\n },\n loadingDots: {\n marginLeft: 8,\n },\n typingText: {\n marginLeft: 8,\n },\n});\n\nexport const TypingIndicator = <\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 DefaultUserType = DefaultUserType,\n>() => {\n const {\n theme: {\n colors: { grey, white_snow },\n typingIndicator: { container, text },\n },\n } = useTheme();\n const typingString = useTypingString<At, Ch, Co, Ev, Me, Re, Us>();\n\n return (\n <View\n style={[styles.container, { backgroundColor: `${white_snow}E6` }, container]}\n testID='typing-indicator'\n >\n <LoadingDots style={styles.loadingDots} />\n <Text style={[styles.typingText, { color: grey }, text]}>{typingString}</Text>\n </View>\n );\n};\n\nTypingIndicator.displayName = 'TypingIndicator{typingIndicator}';\n"]}
@@ -7,20 +7,20 @@ exports.useMessageList = exports.isMessageWithStylesReadByAndDateSeparator = voi
7
7
 
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
 
10
- var _getDateSeparators = require("../utils/getDateSeparators");
11
-
12
- var _getGroupStyles = require("../utils/getGroupStyles");
13
-
14
- var _getReadStates = require("../utils/getReadStates");
10
+ var _ChannelContext = require("../../../contexts/channelContext/ChannelContext");
15
11
 
16
12
  var _ChatContext = require("../../../contexts/chatContext/ChatContext");
17
13
 
18
- var _ChannelContext = require("../../../contexts/channelContext/ChannelContext");
19
-
20
14
  var _PaginatedMessageListContext = require("../../../contexts/paginatedMessageListContext/PaginatedMessageListContext");
21
15
 
22
16
  var _ThreadContext = require("../../../contexts/threadContext/ThreadContext");
23
17
 
18
+ var _getDateSeparators = require("../utils/getDateSeparators");
19
+
20
+ var _getGroupStyles = require("../utils/getGroupStyles");
21
+
22
+ var _getReadStates = require("../utils/getReadStates");
23
+
24
24
  var isMessageWithStylesReadByAndDateSeparator = function isMessageWithStylesReadByAndDateSeparator(message) {
25
25
  return message.readBy !== undefined;
26
26
  };
@@ -28,7 +28,8 @@ var isMessageWithStylesReadByAndDateSeparator = function isMessageWithStylesRead
28
28
  exports.isMessageWithStylesReadByAndDateSeparator = isMessageWithStylesReadByAndDateSeparator;
29
29
 
30
30
  var useMessageList = function useMessageList(params) {
31
- var inverted = params.inverted,
31
+ var deletedMessagesVisibilityType = params.deletedMessagesVisibilityType,
32
+ inverted = params.inverted,
32
33
  noGroupByUser = params.noGroupByUser,
33
34
  threadList = params.threadList;
34
35
 
@@ -63,9 +64,21 @@ var useMessageList = function useMessageList(params) {
63
64
  });
64
65
  var readData = (0, _getReadStates.getReadStates)(client.userID, messageList, readList);
65
66
  var messagesWithStylesReadByAndDateSeparator = messageList.filter(function (msg) {
66
- var _msg$user;
67
+ var isMessageTypeDeleted = msg.type === 'deleted';
68
+
69
+ if (deletedMessagesVisibilityType === 'sender') {
70
+ var _msg$user;
71
+
72
+ return !isMessageTypeDeleted || ((_msg$user = msg.user) == null ? void 0 : _msg$user.id) === client.userID;
73
+ } else if (deletedMessagesVisibilityType === 'receiver') {
74
+ var _msg$user2;
67
75
 
68
- return !msg.deleted_at || ((_msg$user = msg.user) == null ? void 0 : _msg$user.id) === client.userID;
76
+ return !isMessageTypeDeleted || ((_msg$user2 = msg.user) == null ? void 0 : _msg$user2.id) !== client.userID;
77
+ } else if (deletedMessagesVisibilityType === 'never') {
78
+ return !isMessageTypeDeleted;
79
+ } else {
80
+ return msg;
81
+ }
69
82
  }).map(function (msg) {
70
83
  return (0, _extends2["default"])({}, msg, {
71
84
  dateSeparator: dateSeparators[msg.id] || undefined,
@@ -1 +1 @@
1
- {"version":3,"sources":["useMessageList.ts"],"names":["isMessageWithStylesReadByAndDateSeparator","message","readBy","undefined","useMessageList","params","inverted","noGroupByUser","threadList","client","hideDateSeparators","maxTimeBetweenGroupedMessages","read","messages","threadMessages","messageList","readList","dateSeparators","userId","userID","messageGroupStyles","readData","messagesWithStylesReadByAndDateSeparator","filter","msg","deleted_at","user","id","map","dateSeparator","groupStyles","reverse"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAIA;;AACA;;AAiDO,IAAMA,yCAAyC,GAAG,SAA5CA,yCAA4C,CASvDC,OATuD;AAAA,SAWtDA,OAAD,CAA8EC,MAA9E,KACAC,SAZuD;AAAA,CAAlD;;;;AAcA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAS5BC,MAT4B,EAUzB;AACH,MAAQC,QAAR,GAAgDD,MAAhD,CAAQC,QAAR;AAAA,MAAkBC,aAAlB,GAAgDF,MAAhD,CAAkBE,aAAlB;AAAA,MAAiCC,UAAjC,GAAgDH,MAAhD,CAAiCG,UAAjC;;AACA,wBAAmB,kCAAnB;AAAA,MAAQC,MAAR,mBAAQA,MAAR;;AACA,2BACE,wCADF;AAAA,MAAQC,kBAAR,sBAAQA,kBAAR;AAAA,MAA4BC,6BAA5B,sBAA4BA,6BAA5B;AAAA,MAA2DC,IAA3D,sBAA2DA,IAA3D;;AAEA,8BAAqB,kEAArB;AAAA,MAAQC,QAAR,yBAAQA,QAAR;;AACA,0BAA2B,sCAA3B;AAAA,MAAQC,cAAR,qBAAQA,cAAR;;AAEA,MAAMC,WAAW,GAAGP,UAAU,GAAGM,cAAH,GAAoBD,QAAlD;AACA,MAAMG,QAA6E,GAAGR,UAAU,GAC5FL,SAD4F,GAE5FS,IAFJ;AAIA,MAAMK,cAAc,GAAG,0CAA8C;AACnEP,IAAAA,kBAAkB,EAAlBA,kBADmE;AAEnEG,IAAAA,QAAQ,EAAEE,WAFyD;AAGnEG,IAAAA,MAAM,EAAET,MAAM,CAACU;AAHoD,GAA9C,CAAvB;AAMA,MAAMC,kBAAkB,GAAG,oCAA2C;AACpEH,IAAAA,cAAc,EAAdA,cADoE;AAEpEP,IAAAA,kBAAkB,EAAlBA,kBAFoE;AAGpEC,IAAAA,6BAA6B,EAA7BA,6BAHoE;AAIpEE,IAAAA,QAAQ,EAAEE,WAJ0D;AAKpER,IAAAA,aAAa,EAAbA,aALoE;AAMpEW,IAAAA,MAAM,EAAET,MAAM,CAACU;AANqD,GAA3C,CAA3B;AASA,MAAME,QAAQ,GAAG,kCAAcZ,MAAM,CAACU,MAArB,EAA6BJ,WAA7B,EAA0CC,QAA1C,CAAjB;AAEA,MAAMM,wCAAwC,GAAGP,WAAW,CACzDQ,MAD8C,CACvC,UAACC,GAAD;AAAA;;AAAA,WAAS,CAACA,GAAG,CAACC,UAAL,IAAmB,cAAAD,GAAG,CAACE,IAAJ,+BAAUC,EAAV,MAAiBlB,MAAM,CAACU,MAApD;AAAA,GADuC,EAE9CS,GAF8C,CAE1C,UAACJ,GAAD;AAAA,yCACAA,GADA;AAEHK,MAAAA,aAAa,EAAEZ,cAAc,CAACO,GAAG,CAACG,EAAL,CAAd,IAA0BxB,SAFtC;AAGH2B,MAAAA,WAAW,EAAEV,kBAAkB,CAACI,GAAG,CAACG,EAAL,CAAlB,IAA8B,CAAC,QAAD,CAHxC;AAIHzB,MAAAA,MAAM,EAAEsB,GAAG,CAACG,EAAJ,GAASN,QAAQ,CAACG,GAAG,CAACG,EAAL,CAAR,IAAoB,KAA7B,GAAqC;AAJ1C;AAAA,GAF0C,CAAjD;AASA,SACErB,QAAQ,GACJgB,wCAAwC,CAACS,OAAzC,EADI,GAEJT,wCAHN;AAKD,CAtDM","sourcesContent":["import { getDateSeparators } from '../utils/getDateSeparators';\nimport { getGroupStyles } from '../utils/getGroupStyles';\nimport { getReadStates } from '../utils/getReadStates';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../../contexts/channelContext/ChannelContext';\nimport { usePaginatedMessageListContext } from '../../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport { useThreadContext } from '../../../contexts/threadContext/ThreadContext';\n\nimport type { ChannelState, MessageResponse } 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\nexport type UseMessageListParams = {\n inverted?: boolean;\n noGroupByUser?: boolean;\n threadList?: boolean;\n};\n\nexport type GroupType = 'bottom' | 'middle' | 'single' | 'top';\n\nexport type MessagesWithStylesReadByAndDateSeparator<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = MessageResponse<At, Ch, Co, Me, Re, Us> & {\n groupStyles: GroupType[];\n readBy: boolean | number;\n dateSeparator?: Date;\n};\n\nexport type MessageType<\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 | ReturnType<ChannelState<At, Ch, Co, Ev, Me, Re, Us>['formatMessage']>\n | MessagesWithStylesReadByAndDateSeparator<At, Ch, Co, Me, Re, Us>;\n\n// Type guards to check MessageType\nexport const isMessageWithStylesReadByAndDateSeparator = <\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 message: MessageType<At, Ch, Co, Ev, Me, Re, Us>,\n): message is MessagesWithStylesReadByAndDateSeparator<At, Ch, Co, Me, Re, Us> =>\n (message as MessagesWithStylesReadByAndDateSeparator<At, Ch, Co, Me, Re, Us>).readBy !==\n undefined;\n\nexport const useMessageList = <\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 params: UseMessageListParams,\n) => {\n const { inverted, noGroupByUser, threadList } = params;\n const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { hideDateSeparators, maxTimeBetweenGroupedMessages, read } =\n useChannelContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { messages } = usePaginatedMessageListContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { threadMessages } = useThreadContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n const messageList = threadList ? threadMessages : messages;\n const readList: ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>['read'] | undefined = threadList\n ? undefined\n : read;\n\n const dateSeparators = getDateSeparators<At, Ch, Co, Ev, Me, Re, Us>({\n hideDateSeparators,\n messages: messageList,\n userId: client.userID,\n });\n\n const messageGroupStyles = getGroupStyles<At, Ch, Co, Ev, Me, Re, Us>({\n dateSeparators,\n hideDateSeparators,\n maxTimeBetweenGroupedMessages,\n messages: messageList,\n noGroupByUser,\n userId: client.userID,\n });\n\n const readData = getReadStates(client.userID, messageList, readList);\n\n const messagesWithStylesReadByAndDateSeparator = messageList\n .filter((msg) => !msg.deleted_at || msg.user?.id === client.userID)\n .map((msg) => ({\n ...msg,\n dateSeparator: dateSeparators[msg.id] || undefined,\n groupStyles: messageGroupStyles[msg.id] || ['single'],\n readBy: msg.id ? readData[msg.id] || false : false,\n }));\n\n return (\n inverted\n ? messagesWithStylesReadByAndDateSeparator.reverse()\n : messagesWithStylesReadByAndDateSeparator\n ) as MessageType<At, Ch, Co, Ev, Me, Re, Us>[];\n};\n"]}
1
+ {"version":3,"sources":["useMessageList.ts"],"names":["isMessageWithStylesReadByAndDateSeparator","message","readBy","undefined","useMessageList","params","deletedMessagesVisibilityType","inverted","noGroupByUser","threadList","client","hideDateSeparators","maxTimeBetweenGroupedMessages","read","messages","threadMessages","messageList","readList","dateSeparators","userId","userID","messageGroupStyles","readData","messagesWithStylesReadByAndDateSeparator","filter","msg","isMessageTypeDeleted","type","user","id","map","dateSeparator","groupStyles","reverse"],"mappings":"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","sourcesContent":["import type { ChannelState, MessageResponse } from 'stream-chat';\n\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../../contexts/channelContext/ChannelContext';\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { usePaginatedMessageListContext } from '../../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport { useThreadContext } from '../../../contexts/threadContext/ThreadContext';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\nimport { getDateSeparators } from '../utils/getDateSeparators';\nimport { getGroupStyles } from '../utils/getGroupStyles';\nimport { getReadStates } from '../utils/getReadStates';\n\nexport type UseMessageListParams = {\n deletedMessagesVisibilityType?: 'always' | 'never' | 'receiver' | 'sender';\n inverted?: boolean;\n noGroupByUser?: boolean;\n threadList?: boolean;\n};\n\nexport type GroupType = 'bottom' | 'middle' | 'single' | 'top';\n\nexport type MessagesWithStylesReadByAndDateSeparator<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = MessageResponse<At, Ch, Co, Me, Re, Us> & {\n groupStyles: GroupType[];\n readBy: boolean | number;\n dateSeparator?: Date;\n};\n\nexport type MessageType<\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 | ReturnType<ChannelState<At, Ch, Co, Ev, Me, Re, Us>['formatMessage']>\n | MessagesWithStylesReadByAndDateSeparator<At, Ch, Co, Me, Re, Us>;\n\n// Type guards to check MessageType\nexport const isMessageWithStylesReadByAndDateSeparator = <\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 message: MessageType<At, Ch, Co, Ev, Me, Re, Us>,\n): message is MessagesWithStylesReadByAndDateSeparator<At, Ch, Co, Me, Re, Us> =>\n (message as MessagesWithStylesReadByAndDateSeparator<At, Ch, Co, Me, Re, Us>).readBy !==\n undefined;\n\nexport const useMessageList = <\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 params: UseMessageListParams,\n) => {\n const { deletedMessagesVisibilityType, inverted, noGroupByUser, threadList } = params;\n const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { hideDateSeparators, maxTimeBetweenGroupedMessages, read } =\n useChannelContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { messages } = usePaginatedMessageListContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { threadMessages } = useThreadContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n const messageList = threadList ? threadMessages : messages;\n const readList: ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>['read'] | undefined = threadList\n ? undefined\n : read;\n\n const dateSeparators = getDateSeparators<At, Ch, Co, Ev, Me, Re, Us>({\n hideDateSeparators,\n messages: messageList,\n userId: client.userID,\n });\n\n const messageGroupStyles = getGroupStyles<At, Ch, Co, Ev, Me, Re, Us>({\n dateSeparators,\n hideDateSeparators,\n maxTimeBetweenGroupedMessages,\n messages: messageList,\n noGroupByUser,\n userId: client.userID,\n });\n\n const readData = getReadStates(client.userID, messageList, readList);\n\n const messagesWithStylesReadByAndDateSeparator = messageList\n .filter((msg) => {\n const isMessageTypeDeleted = msg.type === 'deleted';\n if (deletedMessagesVisibilityType === 'sender') {\n return !isMessageTypeDeleted || msg.user?.id === client.userID;\n } else if (deletedMessagesVisibilityType === 'receiver') {\n return !isMessageTypeDeleted || msg.user?.id !== client.userID;\n } else if (deletedMessagesVisibilityType === 'never') {\n return !isMessageTypeDeleted;\n } else {\n return msg;\n }\n })\n .map((msg) => ({\n ...msg,\n dateSeparator: dateSeparators[msg.id] || undefined,\n groupStyles: messageGroupStyles[msg.id] || ['single'],\n readBy: msg.id ? readData[msg.id] || false : false,\n }));\n\n return (\n inverted\n ? messagesWithStylesReadByAndDateSeparator.reverse()\n : messagesWithStylesReadByAndDateSeparator\n ) as MessageType<At, Ch, Co, Ev, Me, Re, Us>[];\n};\n"]}
@@ -3,8 +3,6 @@ Object.defineProperty(exports, "__esModule", {
3
3
  });
4
4
  exports.useTypingString = void 0;
5
5
 
6
- var _filterTypingUsers = require("../utils/filterTypingUsers");
7
-
8
6
  var _ChatContext = require("../../../contexts/chatContext/ChatContext");
9
7
 
10
8
  var _ThreadContext = require("../../../contexts/threadContext/ThreadContext");
@@ -13,6 +11,8 @@ var _TranslationContext = require("../../../contexts/translationContext/Translat
13
11
 
14
12
  var _TypingContext = require("../../../contexts/typingContext/TypingContext");
15
13
 
14
+ var _filterTypingUsers = require("../utils/filterTypingUsers");
15
+
16
16
  var useTypingString = function useTypingString() {
17
17
  var _useChatContext = (0, _ChatContext.useChatContext)(),
18
18
  client = _useChatContext.client;
@@ -1 +1 @@
1
- {"version":3,"sources":["useTypingString.ts"],"names":["useTypingString","client","thread","t","typing","filteredTypingUsers","length","user","firstUser","nonSelfUserLength"],"mappings":";;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AAaO,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,GAQxB;AACL,wBAAmB,kCAAnB;AAAA,MAAQC,MAAR,mBAAQA,MAAR;;AACA,0BAAmB,sCAAnB;AAAA,MAAQC,MAAR,qBAAQA,MAAR;;AACA,8BAAc,gDAAd;AAAA,MAAQC,CAAR,yBAAQA,CAAR;;AACA,0BAAmB,sCAAnB;AAAA,MAAQC,MAAR,qBAAQA,MAAR;;AAEA,MAAMC,mBAAmB,GAAG,0CAAkB;AAAEJ,IAAAA,MAAM,EAANA,MAAF;AAAUC,IAAAA,MAAM,EAANA,MAAV;AAAkBE,IAAAA,MAAM,EAANA;AAAlB,GAAlB,CAA5B;;AAEA,MAAIC,mBAAmB,CAACC,MAApB,KAA+B,CAAnC,EAAsC;AACpC,WAAOH,CAAC,CAAC,sBAAD,EAAyB;AAAEI,MAAAA,IAAI,EAAEF,mBAAmB,CAAC,CAAD;AAA3B,KAAzB,CAAR;AACD;;AAED,MAAIA,mBAAmB,CAACC,MAApB,GAA6B,CAAjC,EAAoC;AAKlC,WAAOH,CAAC,CAAC,6DAAD,EAAgE;AACtEK,MAAAA,SAAS,EAAEH,mBAAmB,CAAC,CAAD,CADwC;AAEtEI,MAAAA,iBAAiB,EAAEJ,mBAAmB,CAACC,MAApB,GAA6B;AAFsB,KAAhE,CAAR;AAID;;AAED,SAAO,EAAP;AACD,CAhCM","sourcesContent":["import { filterTypingUsers } from '../utils/filterTypingUsers';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useThreadContext } from '../../../contexts/threadContext/ThreadContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { useTypingContext } from '../../../contexts/typingContext/TypingContext';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\nexport const useTypingString = <\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 const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { thread } = useThreadContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { t } = useTranslationContext();\n const { typing } = useTypingContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n const filteredTypingUsers = filterTypingUsers({ client, thread, typing });\n\n if (filteredTypingUsers.length === 1) {\n return t('{{ user }} is typing', { user: filteredTypingUsers[0] });\n }\n\n if (filteredTypingUsers.length > 1) {\n /**\n * Joins the multiple names with number after first name\n * example: \"Dan and Neil\"\n */\n return t('{{ firstUser }} and {{ nonSelfUserLength }} more are typing', {\n firstUser: filteredTypingUsers[0],\n nonSelfUserLength: filteredTypingUsers.length - 1,\n });\n }\n\n return '';\n};\n"]}
1
+ {"version":3,"sources":["useTypingString.ts"],"names":["useTypingString","client","thread","t","typing","filteredTypingUsers","length","user","firstUser","nonSelfUserLength"],"mappings":";;;;;AAAA;;AACA;;AACA;;AACA;;AAYA;;AAEO,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,GAQxB;AACL,wBAAmB,kCAAnB;AAAA,MAAQC,MAAR,mBAAQA,MAAR;;AACA,0BAAmB,sCAAnB;AAAA,MAAQC,MAAR,qBAAQA,MAAR;;AACA,8BAAc,gDAAd;AAAA,MAAQC,CAAR,yBAAQA,CAAR;;AACA,0BAAmB,sCAAnB;AAAA,MAAQC,MAAR,qBAAQA,MAAR;;AAEA,MAAMC,mBAAmB,GAAG,0CAAkB;AAAEJ,IAAAA,MAAM,EAANA,MAAF;AAAUC,IAAAA,MAAM,EAANA,MAAV;AAAkBE,IAAAA,MAAM,EAANA;AAAlB,GAAlB,CAA5B;;AAEA,MAAIC,mBAAmB,CAACC,MAApB,KAA+B,CAAnC,EAAsC;AACpC,WAAOH,CAAC,CAAC,sBAAD,EAAyB;AAAEI,MAAAA,IAAI,EAAEF,mBAAmB,CAAC,CAAD;AAA3B,KAAzB,CAAR;AACD;;AAED,MAAIA,mBAAmB,CAACC,MAApB,GAA6B,CAAjC,EAAoC;AAKlC,WAAOH,CAAC,CAAC,6DAAD,EAAgE;AACtEK,MAAAA,SAAS,EAAEH,mBAAmB,CAAC,CAAD,CADwC;AAEtEI,MAAAA,iBAAiB,EAAEJ,mBAAmB,CAACC,MAApB,GAA6B;AAFsB,KAAhE,CAAR;AAID;;AAED,SAAO,EAAP;AACD,CAhCM","sourcesContent":["import { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useThreadContext } from '../../../contexts/threadContext/ThreadContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { useTypingContext } from '../../../contexts/typingContext/TypingContext';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\nimport { filterTypingUsers } from '../utils/filterTypingUsers';\n\nexport const useTypingString = <\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 const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { thread } = useThreadContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { t } = useTranslationContext();\n const { typing } = useTypingContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n const filteredTypingUsers = filterTypingUsers({ client, thread, typing });\n\n if (filteredTypingUsers.length === 1) {\n return t('{{ user }} is typing', { user: filteredTypingUsers[0] });\n }\n\n if (filteredTypingUsers.length > 1) {\n /**\n * Joins the multiple names with number after first name\n * example: \"Dan and Neil\"\n */\n return t('{{ firstUser }} and {{ nonSelfUserLength }} more are typing', {\n firstUser: filteredTypingUsers[0],\n nonSelfUserLength: filteredTypingUsers.length - 1,\n });\n }\n\n return '';\n};\n"]}
@@ -16,7 +16,8 @@ var getDateSeparators = function getDateSeparators(params) {
16
16
  var messagesWithoutDeleted = messages.filter(function (message) {
17
17
  var _message$user;
18
18
 
19
- return !message.deleted_at || userId === ((_message$user = message.user) == null ? void 0 : _message$user.id);
19
+ var isMessageTypeDeleted = message.type === 'deleted';
20
+ return !isMessageTypeDeleted || userId === ((_message$user = message.user) == null ? void 0 : _message$user.id);
20
21
  });
21
22
 
22
23
  for (var i = 0; i < messagesWithoutDeleted.length; i++) {
@@ -1 +1 @@
1
- {"version":3,"sources":["getDateSeparators.ts"],"names":["getDateSeparators","params","hideDateSeparators","messages","userId","dateSeparators","messagesWithoutDeleted","filter","message","deleted_at","user","id","i","length","previousMessage","messageDate","created_at","getDay","prevMessageDate"],"mappings":";;;;;AAiCO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,CAS/BC,MAT+B,EAU5B;AACH,MAAQC,kBAAR,GAAiDD,MAAjD,CAAQC,kBAAR;AAAA,MAA4BC,QAA5B,GAAiDF,MAAjD,CAA4BE,QAA5B;AAAA,MAAsCC,MAAtC,GAAiDH,MAAjD,CAAsCG,MAAtC;AACA,MAAMC,cAA8B,GAAG,EAAvC;;AAEA,MAAIH,kBAAJ,EAAwB;AACtB,WAAOG,cAAP;AACD;;AAED,MAAMC,sBAAsB,GAAGH,QAAQ,CAACI,MAAT,CAC7B,UAACC,OAAD;AAAA;;AAAA,WAAa,CAACA,OAAO,CAACC,UAAT,IAAuBL,MAAM,uBAAKI,OAAO,CAACE,IAAb,qBAAK,cAAcC,EAAnB,CAA1C;AAAA,GAD6B,CAA/B;;AAIA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGN,sBAAsB,CAACO,MAA3C,EAAmDD,CAAC,EAApD,EAAwD;AACtD,QAAME,eAAe,GAAGR,sBAAsB,CAACM,CAAC,GAAG,CAAL,CAA9C;AACA,QAAMJ,OAAO,GAAGF,sBAAsB,CAACM,CAAD,CAAtC;AAEA,QAAMG,WAAW,GAAGP,OAAO,CAACQ,UAAR,CAAmBC,MAAnB,EAApB;AAEA,QAAMC,eAAe,GAAGJ,eAAe,GAAGA,eAAe,CAACE,UAAhB,CAA2BC,MAA3B,EAAH,GAAyCF,WAAhF;;AAEA,QAAIH,CAAC,KAAK,CAAN,IAAWG,WAAW,KAAKG,eAA/B,EAAgD;AAC9Cb,MAAAA,cAAc,CAACG,OAAO,CAACG,EAAT,CAAd,GAA6BH,OAAO,CAACQ,UAArC;AACD;AACF;;AAED,SAAOX,cAAP;AACD,CApCM","sourcesContent":["import type { PaginatedMessageListContextValue } from '../../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport type { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\nexport type GetDateSeparatorsParams<\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 messages:\n | PaginatedMessageListContextValue<At, Ch, Co, Ev, Me, Re, Us>['messages']\n | ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>['threadMessages'];\n hideDateSeparators?: boolean;\n userId?: string;\n};\n\nexport type DateSeparators = {\n [key: string]: Date;\n};\n\nexport const getDateSeparators = <\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 params: GetDateSeparatorsParams<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { hideDateSeparators, messages, userId } = params;\n const dateSeparators: DateSeparators = {};\n\n if (hideDateSeparators) {\n return dateSeparators;\n }\n\n const messagesWithoutDeleted = messages.filter(\n (message) => !message.deleted_at || userId === message.user?.id,\n );\n\n for (let i = 0; i < messagesWithoutDeleted.length; i++) {\n const previousMessage = messagesWithoutDeleted[i - 1];\n const message = messagesWithoutDeleted[i];\n\n const messageDate = message.created_at.getDay();\n\n const prevMessageDate = previousMessage ? previousMessage.created_at.getDay() : messageDate;\n\n if (i === 0 || messageDate !== prevMessageDate) {\n dateSeparators[message.id] = message.created_at;\n }\n }\n\n return dateSeparators;\n};\n"]}
1
+ {"version":3,"sources":["getDateSeparators.ts"],"names":["getDateSeparators","params","hideDateSeparators","messages","userId","dateSeparators","messagesWithoutDeleted","filter","message","isMessageTypeDeleted","type","user","id","i","length","previousMessage","messageDate","created_at","getDay","prevMessageDate"],"mappings":";;;;;AAiCO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,CAS/BC,MAT+B,EAU5B;AACH,MAAQC,kBAAR,GAAiDD,MAAjD,CAAQC,kBAAR;AAAA,MAA4BC,QAA5B,GAAiDF,MAAjD,CAA4BE,QAA5B;AAAA,MAAsCC,MAAtC,GAAiDH,MAAjD,CAAsCG,MAAtC;AACA,MAAMC,cAA8B,GAAG,EAAvC;;AAEA,MAAIH,kBAAJ,EAAwB;AACtB,WAAOG,cAAP;AACD;;AAED,MAAMC,sBAAsB,GAAGH,QAAQ,CAACI,MAAT,CAAgB,UAACC,OAAD,EAAa;AAAA;;AAC1D,QAAMC,oBAAoB,GAAGD,OAAO,CAACE,IAAR,KAAiB,SAA9C;AACA,WAAO,CAACD,oBAAD,IAAyBL,MAAM,uBAAKI,OAAO,CAACG,IAAb,qBAAK,cAAcC,EAAnB,CAAtC;AACD,GAH8B,CAA/B;;AAKA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,sBAAsB,CAACQ,MAA3C,EAAmDD,CAAC,EAApD,EAAwD;AACtD,QAAME,eAAe,GAAGT,sBAAsB,CAACO,CAAC,GAAG,CAAL,CAA9C;AACA,QAAML,OAAO,GAAGF,sBAAsB,CAACO,CAAD,CAAtC;AAEA,QAAMG,WAAW,GAAGR,OAAO,CAACS,UAAR,CAAmBC,MAAnB,EAApB;AAEA,QAAMC,eAAe,GAAGJ,eAAe,GAAGA,eAAe,CAACE,UAAhB,CAA2BC,MAA3B,EAAH,GAAyCF,WAAhF;;AAEA,QAAIH,CAAC,KAAK,CAAN,IAAWG,WAAW,KAAKG,eAA/B,EAAgD;AAC9Cd,MAAAA,cAAc,CAACG,OAAO,CAACI,EAAT,CAAd,GAA6BJ,OAAO,CAACS,UAArC;AACD;AACF;;AAED,SAAOZ,cAAP;AACD,CArCM","sourcesContent":["import type { PaginatedMessageListContextValue } from '../../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport type { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\nexport type GetDateSeparatorsParams<\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 messages:\n | PaginatedMessageListContextValue<At, Ch, Co, Ev, Me, Re, Us>['messages']\n | ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>['threadMessages'];\n hideDateSeparators?: boolean;\n userId?: string;\n};\n\nexport type DateSeparators = {\n [key: string]: Date;\n};\n\nexport const getDateSeparators = <\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 params: GetDateSeparatorsParams<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { hideDateSeparators, messages, userId } = params;\n const dateSeparators: DateSeparators = {};\n\n if (hideDateSeparators) {\n return dateSeparators;\n }\n\n const messagesWithoutDeleted = messages.filter((message) => {\n const isMessageTypeDeleted = message.type === 'deleted';\n return !isMessageTypeDeleted || userId === message.user?.id;\n });\n\n for (let i = 0; i < messagesWithoutDeleted.length; i++) {\n const previousMessage = messagesWithoutDeleted[i - 1];\n const message = messagesWithoutDeleted[i];\n\n const messageDate = message.created_at.getDay();\n\n const prevMessageDate = previousMessage ? previousMessage.created_at.getDay() : messageDate;\n\n if (i === 0 || messageDate !== prevMessageDate) {\n dateSeparators[message.id] = message.created_at;\n }\n }\n\n return dateSeparators;\n};\n"]}