stream-chat-react-native-core 3.10.2-next.1 → 4.0.0-beta.3

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 (1083) 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 +30 -30
  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 +24 -16
  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 +36 -19
  153. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  154. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +1 -5
  155. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  156. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js +307 -0
  157. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -0
  158. package/lib/commonjs/components/Message/hooks/useMessageActions.js +563 -0
  159. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -0
  160. package/lib/commonjs/components/Message/utils/messageActions.js +17 -15
  161. package/lib/commonjs/components/Message/utils/messageActions.js.map +1 -1
  162. package/lib/commonjs/components/Message/utils/removeReservedFields.js.map +1 -1
  163. package/lib/commonjs/components/MessageInput/AttachButton.js +3 -3
  164. package/lib/commonjs/components/MessageInput/AttachButton.js.map +1 -1
  165. package/lib/commonjs/components/MessageInput/CommandsButton.js +3 -3
  166. package/lib/commonjs/components/MessageInput/CommandsButton.js.map +1 -1
  167. package/lib/commonjs/components/MessageInput/CooldownTimer.js +78 -0
  168. package/lib/commonjs/components/MessageInput/CooldownTimer.js.map +1 -0
  169. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +4 -4
  170. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  171. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +9 -9
  172. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  173. package/lib/commonjs/components/MessageInput/InputButtons.js +17 -22
  174. package/lib/commonjs/components/MessageInput/InputButtons.js.map +1 -1
  175. package/lib/commonjs/components/MessageInput/MessageInput.js +93 -65
  176. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  177. package/lib/commonjs/components/MessageInput/MoreOptionsButton.js +3 -3
  178. package/lib/commonjs/components/MessageInput/MoreOptionsButton.js.map +1 -1
  179. package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js +71 -0
  180. package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js.map +1 -0
  181. package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js +4 -3
  182. package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js.map +1 -1
  183. package/lib/commonjs/components/MessageInput/hooks/useCooldown.js +63 -0
  184. package/lib/commonjs/components/MessageInput/hooks/useCooldown.js.map +1 -0
  185. package/lib/commonjs/components/MessageInput/hooks/useCountdown.js +57 -0
  186. package/lib/commonjs/components/MessageInput/hooks/useCountdown.js.map +1 -0
  187. package/lib/commonjs/components/MessageList/DateHeader.js +2 -2
  188. package/lib/commonjs/components/MessageList/DateHeader.js.map +1 -1
  189. package/lib/commonjs/components/MessageList/InlineDateSeparator.js +2 -2
  190. package/lib/commonjs/components/MessageList/InlineDateSeparator.js.map +1 -1
  191. package/lib/commonjs/components/MessageList/InlineLoadingMoreIndicator.js +1 -1
  192. package/lib/commonjs/components/MessageList/InlineLoadingMoreRecentIndicator.js +1 -1
  193. package/lib/commonjs/components/MessageList/InlineLoadingMoreThreadIndicator.js +1 -1
  194. package/lib/commonjs/components/MessageList/MessageList.js +77 -44
  195. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  196. package/lib/commonjs/components/MessageList/MessageSystem.js.map +1 -1
  197. package/lib/commonjs/components/MessageList/TypingIndicator.js +5 -5
  198. package/lib/commonjs/components/MessageList/TypingIndicator.js.map +1 -1
  199. package/lib/commonjs/components/MessageList/hooks/useMessageList.js +23 -10
  200. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  201. package/lib/commonjs/components/MessageList/hooks/useTypingString.js +2 -2
  202. package/lib/commonjs/components/MessageList/hooks/useTypingString.js.map +1 -1
  203. package/lib/commonjs/components/MessageList/utils/getDateSeparators.js +2 -1
  204. package/lib/commonjs/components/MessageList/utils/getDateSeparators.js.map +1 -1
  205. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js +10 -5
  206. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js.map +1 -1
  207. package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js +3 -1
  208. package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  209. package/lib/{module/components/MessageOverlay/MessageActions.js → commonjs/components/MessageOverlay/MessageActionList.js} +33 -85
  210. package/lib/commonjs/components/MessageOverlay/MessageActionList.js.map +1 -0
  211. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js +131 -0
  212. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js.map +1 -0
  213. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +97 -78
  214. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
  215. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js +38 -0
  216. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js.map +1 -0
  217. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js +12 -11
  218. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js.map +1 -1
  219. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js +31 -34
  220. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js.map +1 -1
  221. package/lib/commonjs/components/MessageOverlay/OverlayReactionsAvatar.js +41 -0
  222. package/lib/commonjs/components/MessageOverlay/OverlayReactionsAvatar.js.map +1 -0
  223. package/lib/commonjs/components/MessageOverlay/hooks/useMessageActionAnimation.js +37 -0
  224. package/lib/commonjs/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +1 -0
  225. package/lib/commonjs/components/Reply/Reply.js +25 -19
  226. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  227. package/lib/commonjs/components/Thread/Thread.js +11 -2
  228. package/lib/commonjs/components/Thread/Thread.js.map +1 -1
  229. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +20 -12
  230. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  231. package/lib/commonjs/components/docs/ListProps.md +1 -1
  232. package/lib/commonjs/components/docs/data.js +1 -1
  233. package/lib/commonjs/components/index.js +133 -55
  234. package/lib/commonjs/components/index.js.map +1 -1
  235. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +68 -0
  236. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -0
  237. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js +2 -2
  238. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  239. package/lib/commonjs/contexts/channelContext/ChannelContext.js +2 -2
  240. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  241. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js +2 -2
  242. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
  243. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js +155 -0
  244. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -0
  245. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js +144 -0
  246. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js.map +1 -0
  247. package/lib/commonjs/contexts/chatContext/ChatContext.js +2 -2
  248. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  249. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js +2 -2
  250. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  251. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js +2 -2
  252. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js.map +1 -1
  253. package/lib/commonjs/contexts/messageContext/MessageContext.js +2 -2
  254. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  255. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +122 -84
  256. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  257. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +9 -5
  258. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  259. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +10 -3
  260. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  261. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js +5 -19
  262. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  263. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.js +36 -0
  264. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.js.map +1 -0
  265. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js +105 -0
  266. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +1 -0
  267. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
  268. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  269. package/lib/commonjs/contexts/overlayContext/OverlayContext.js +1 -1
  270. package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
  271. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +55 -46
  272. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
  273. package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +61 -0
  274. package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js.map +1 -0
  275. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +2 -2
  276. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  277. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +20 -33
  278. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  279. package/lib/commonjs/contexts/themeContext/ThemeContext.js +2 -2
  280. package/lib/commonjs/contexts/themeContext/ThemeContext.js.map +1 -1
  281. package/lib/commonjs/contexts/themeContext/utils/theme.js +38 -14
  282. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  283. package/lib/commonjs/contexts/threadContext/ThreadContext.js +2 -2
  284. package/lib/commonjs/contexts/threadContext/ThreadContext.js.map +1 -1
  285. package/lib/commonjs/contexts/translationContext/TranslationContext.js +1 -1
  286. package/lib/commonjs/contexts/translationContext/TranslationContext.js.map +1 -1
  287. package/lib/commonjs/contexts/typingContext/TypingContext.js +2 -2
  288. package/lib/commonjs/contexts/typingContext/TypingContext.js.map +1 -1
  289. package/lib/commonjs/contexts/utils/getDisplayName.js.map +1 -1
  290. package/lib/commonjs/emoji-data/compiled.js +0 -315
  291. package/lib/commonjs/emoji-data/compiled.js.map +1 -1
  292. package/lib/commonjs/emoji-data/emojiNames.js +0 -105
  293. package/lib/commonjs/emoji-data/emojiNames.js.map +1 -1
  294. package/lib/commonjs/emoji-data/emojis.js +0 -175
  295. package/lib/commonjs/emoji-data/emojis.js.map +1 -1
  296. package/lib/commonjs/emoji-data/index.js +2 -2
  297. package/lib/commonjs/emoji-data/index.js.map +1 -1
  298. package/lib/commonjs/hooks/useStreami18n.js.map +1 -1
  299. package/lib/commonjs/i18n/en.json +9 -3
  300. package/lib/commonjs/i18n/fr.json +9 -3
  301. package/lib/commonjs/i18n/hi.json +9 -3
  302. package/lib/commonjs/i18n/it.json +9 -3
  303. package/lib/commonjs/i18n/ja.json +9 -0
  304. package/lib/commonjs/i18n/ko.json +9 -0
  305. package/lib/commonjs/i18n/nl.json +9 -3
  306. package/lib/commonjs/i18n/ru.json +9 -3
  307. package/lib/commonjs/i18n/tr.json +10 -4
  308. package/lib/commonjs/icons/Pin.js +42 -0
  309. package/lib/commonjs/icons/Pin.js.map +1 -0
  310. package/lib/commonjs/icons/PinHeader.js +38 -0
  311. package/lib/commonjs/icons/PinHeader.js.map +1 -0
  312. package/lib/commonjs/icons/Unpin.js +38 -0
  313. package/lib/commonjs/icons/Unpin.js.map +1 -0
  314. package/lib/commonjs/icons/index.js +39 -0
  315. package/lib/commonjs/icons/index.js.map +1 -1
  316. package/lib/commonjs/icons/utils/base.js +1 -1
  317. package/lib/commonjs/index.js +6 -6
  318. package/lib/commonjs/mock-builders/api/error.js +1 -1
  319. package/lib/commonjs/mock-builders/api/sendMessage.js +4 -1
  320. package/lib/commonjs/mock-builders/api/sendMessage.js.map +1 -1
  321. package/lib/commonjs/mock-builders/generator/attachment.js +1 -3
  322. package/lib/commonjs/mock-builders/generator/attachment.js.map +1 -1
  323. package/lib/commonjs/mock-builders/generator/channel.js +101 -50
  324. package/lib/commonjs/mock-builders/generator/channel.js.map +1 -1
  325. package/lib/commonjs/mock-builders/generator/user.js +32 -33
  326. package/lib/commonjs/mock-builders/generator/user.js.map +1 -1
  327. package/lib/commonjs/mock-builders/mock.js +3 -3
  328. package/lib/commonjs/mock-builders/mock.js.map +1 -1
  329. package/lib/commonjs/native.js +1 -7
  330. package/lib/commonjs/native.js.map +1 -1
  331. package/lib/commonjs/styleguideComponents/ArgumentsRenderer.js +7 -7
  332. package/lib/commonjs/styleguideComponents/ArgumentsRenderer.js.map +1 -1
  333. package/lib/commonjs/styleguideComponents/JsDoc.js +4 -4
  334. package/lib/commonjs/styleguideComponents/JsDoc.js.map +1 -1
  335. package/lib/commonjs/styleguideComponents/PathlineRenderer.js +7 -7
  336. package/lib/commonjs/styleguideComponents/PathlineRenderer.js.map +1 -1
  337. package/lib/commonjs/styleguideComponents/PropsRenderer.js +25 -25
  338. package/lib/commonjs/styleguideComponents/PropsRenderer.js.map +1 -1
  339. package/lib/commonjs/styleguideComponents/Wrapper.js +1 -1
  340. package/lib/commonjs/styleguideComponents/Wrapper.js.map +1 -1
  341. package/lib/commonjs/utils/Streami18n.js.map +1 -1
  342. package/lib/commonjs/utils/date.js +13 -0
  343. package/lib/commonjs/utils/date.js.map +1 -0
  344. package/lib/commonjs/utils/getResizedImageUrl.js +26 -0
  345. package/lib/commonjs/utils/getResizedImageUrl.js.map +1 -0
  346. package/lib/commonjs/utils/getUrlOfImageAttachment.js +9 -0
  347. package/lib/commonjs/utils/getUrlOfImageAttachment.js.map +1 -0
  348. package/lib/commonjs/utils/utils.js +17 -9
  349. package/lib/commonjs/utils/utils.js.map +1 -1
  350. package/lib/commonjs/version.json +1 -1
  351. package/lib/module/components/Attachment/Attachment.js +2 -2
  352. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  353. package/lib/module/components/Attachment/AttachmentActions.js.map +1 -1
  354. package/lib/module/components/Attachment/Card.js +18 -15
  355. package/lib/module/components/Attachment/Card.js.map +1 -1
  356. package/lib/module/components/Attachment/FileAttachment.js +8 -8
  357. package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
  358. package/lib/module/components/Attachment/FileIcon.js.map +1 -1
  359. package/lib/module/components/Attachment/Gallery.js +97 -113
  360. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  361. package/lib/module/components/Attachment/Giphy.js +30 -30
  362. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  363. package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js +46 -0
  364. package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -0
  365. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js +88 -0
  366. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js.map +1 -0
  367. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js +75 -0
  368. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js.map +1 -0
  369. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js +43 -0
  370. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js.map +1 -0
  371. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js +30 -0
  372. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -0
  373. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnailGrid.js +49 -0
  374. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnailGrid.js.map +1 -0
  375. package/lib/module/components/Attachment/utils/buildGallery/types.js +4 -0
  376. package/lib/module/components/Attachment/utils/buildGallery/types.js.map +1 -0
  377. package/lib/module/components/Attachment/utils/getAspectRatio.js +14 -0
  378. package/lib/module/components/Attachment/utils/getAspectRatio.js.map +1 -0
  379. package/lib/module/components/Attachment/utils/getGalleryImageBorderRadius.js +36 -0
  380. package/lib/module/components/Attachment/utils/getGalleryImageBorderRadius.js.map +1 -0
  381. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +9 -8
  382. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  383. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +21 -45
  384. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  385. package/lib/module/components/AutoCompleteInput/{CommandsItem.js → AutoCompleteSuggestionCommandIcon.js} +21 -94
  386. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js.map +1 -0
  387. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +145 -0
  388. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -0
  389. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +248 -0
  390. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -0
  391. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +223 -0
  392. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -0
  393. package/lib/module/components/Avatar/Avatar.js +13 -7
  394. package/lib/module/components/Avatar/Avatar.js.map +1 -1
  395. package/lib/module/components/Avatar/GroupAvatar.js +10 -10
  396. package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
  397. package/lib/module/components/Channel/Channel.js +332 -247
  398. package/lib/module/components/Channel/Channel.js.map +1 -1
  399. package/lib/module/components/Channel/hooks/useCreateChannelContext.js +5 -5
  400. package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  401. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +7 -5
  402. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  403. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +9 -31
  404. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  405. package/lib/module/components/Channel/hooks/useCreateOwnCapabilitiesContext.js +35 -0
  406. package/lib/module/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -0
  407. package/lib/module/components/ChannelList/ChannelList.js +6 -6
  408. package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
  409. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js +5 -4
  410. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
  411. package/lib/module/components/ChannelList/ChannelListHeaderErrorIndicator.js +6 -7
  412. package/lib/module/components/ChannelList/ChannelListHeaderErrorIndicator.js.map +1 -1
  413. package/lib/module/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +4 -3
  414. package/lib/module/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js.map +1 -1
  415. package/lib/module/components/ChannelList/ChannelListMessenger.js +17 -17
  416. package/lib/module/components/ChannelList/ChannelListMessenger.js.map +1 -1
  417. package/lib/module/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js +2 -2
  418. package/lib/module/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js.map +1 -1
  419. package/lib/module/components/ChannelList/hooks/listeners/useChannelDeleted.js.map +1 -1
  420. package/lib/module/components/ChannelList/hooks/listeners/useChannelHidden.js.map +1 -1
  421. package/lib/module/components/ChannelList/hooks/listeners/useChannelTruncated.js.map +1 -1
  422. package/lib/module/components/ChannelList/hooks/listeners/useChannelUpdated.js.map +1 -1
  423. package/lib/module/components/ChannelList/hooks/listeners/useChannelVisible.js +2 -2
  424. package/lib/module/components/ChannelList/hooks/listeners/useChannelVisible.js.map +1 -1
  425. package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js +2 -2
  426. package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
  427. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js +3 -3
  428. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  429. package/lib/module/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js.map +1 -1
  430. package/lib/module/components/ChannelList/hooks/listeners/useUserPresence.js.map +1 -1
  431. package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js +2 -2
  432. package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
  433. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +89 -64
  434. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  435. package/lib/module/components/ChannelList/utils.js +1 -1
  436. package/lib/module/components/ChannelPreview/ChannelAvatar.js +2 -2
  437. package/lib/module/components/ChannelPreview/ChannelAvatar.js.map +1 -1
  438. package/lib/module/components/ChannelPreview/ChannelPreview.js +2 -2
  439. package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
  440. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  441. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +49 -20
  442. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  443. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js +51 -0
  444. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js.map +1 -0
  445. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js +4 -4
  446. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js.map +1 -1
  447. package/lib/module/components/ChannelPreview/ChannelPreviewTitle.js.map +1 -1
  448. package/lib/module/components/ChannelPreview/ChannelPreviewUnreadCount.js +2 -2
  449. package/lib/module/components/ChannelPreview/ChannelPreviewUnreadCount.js.map +1 -1
  450. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js +16 -7
  451. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js.map +1 -1
  452. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
  453. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.js.map +1 -1
  454. package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js +2 -1
  455. package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
  456. package/lib/module/components/Chat/Chat.js.map +1 -1
  457. package/lib/module/components/Chat/hooks/useIsOnline.js +12 -5
  458. package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
  459. package/lib/module/components/ImageGallery/ImageGallery.js +90 -58
  460. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  461. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +2 -2
  462. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  463. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +12 -12
  464. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  465. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +14 -16
  466. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  467. package/lib/module/components/ImageGallery/components/ImageGrid.js +7 -7
  468. package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
  469. package/lib/module/components/ImageGallery/components/ImageGridHandle.js +5 -5
  470. package/lib/module/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
  471. package/lib/module/components/Indicators/LoadingErrorIndicator.js.map +1 -1
  472. package/lib/module/components/Indicators/LoadingIndicator.js +9 -9
  473. package/lib/module/components/Indicators/LoadingIndicator.js.map +1 -1
  474. package/lib/module/components/Message/Message.js +151 -860
  475. package/lib/module/components/Message/Message.js.map +1 -1
  476. package/lib/module/components/Message/MessageSimple/MessageAvatar.js +6 -6
  477. package/lib/module/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
  478. package/lib/module/components/Message/MessageSimple/MessageContent.js +39 -38
  479. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  480. package/lib/module/components/Message/MessageSimple/MessageDeleted.js +8 -6
  481. package/lib/module/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
  482. package/lib/module/components/Message/MessageSimple/MessageFooter.js +24 -16
  483. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  484. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js +122 -0
  485. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -0
  486. package/lib/module/components/Message/MessageSimple/MessageReplies.js +5 -1
  487. package/lib/module/components/Message/MessageSimple/MessageReplies.js.map +1 -1
  488. package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js +5 -5
  489. package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js.map +1 -1
  490. package/lib/module/components/Message/MessageSimple/MessageSimple.js +27 -13
  491. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  492. package/lib/module/components/Message/MessageSimple/MessageStatus.js +25 -24
  493. package/lib/module/components/Message/MessageSimple/MessageStatus.js.map +1 -1
  494. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +7 -3
  495. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  496. package/lib/module/components/Message/MessageSimple/ReactionList.js +52 -80
  497. package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
  498. package/lib/module/components/Message/MessageSimple/utils/parseLinks.js +89 -0
  499. package/lib/module/components/Message/MessageSimple/utils/parseLinks.js.map +1 -0
  500. package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js +46 -0
  501. package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -0
  502. package/lib/module/components/Message/MessageSimple/utils/renderText.js +36 -19
  503. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  504. package/lib/module/components/Message/hooks/useCreateMessageContext.js +1 -5
  505. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  506. package/lib/module/components/Message/hooks/useMessageActionHandlers.js +307 -0
  507. package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -0
  508. package/lib/module/components/Message/hooks/useMessageActions.js +563 -0
  509. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -0
  510. package/lib/module/components/Message/utils/messageActions.js +17 -15
  511. package/lib/module/components/Message/utils/messageActions.js.map +1 -1
  512. package/lib/module/components/Message/utils/removeReservedFields.js.map +1 -1
  513. package/lib/module/components/MessageInput/AttachButton.js +3 -3
  514. package/lib/module/components/MessageInput/AttachButton.js.map +1 -1
  515. package/lib/module/components/MessageInput/CommandsButton.js +3 -3
  516. package/lib/module/components/MessageInput/CommandsButton.js.map +1 -1
  517. package/lib/module/components/MessageInput/CooldownTimer.js +78 -0
  518. package/lib/module/components/MessageInput/CooldownTimer.js.map +1 -0
  519. package/lib/module/components/MessageInput/FileUploadPreview.js +4 -4
  520. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  521. package/lib/module/components/MessageInput/ImageUploadPreview.js +9 -9
  522. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  523. package/lib/module/components/MessageInput/InputButtons.js +17 -22
  524. package/lib/module/components/MessageInput/InputButtons.js.map +1 -1
  525. package/lib/module/components/MessageInput/MessageInput.js +93 -65
  526. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  527. package/lib/module/components/MessageInput/MoreOptionsButton.js +3 -3
  528. package/lib/module/components/MessageInput/MoreOptionsButton.js.map +1 -1
  529. package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js +71 -0
  530. package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js.map +1 -0
  531. package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js +4 -3
  532. package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js.map +1 -1
  533. package/lib/module/components/MessageInput/hooks/useCooldown.js +63 -0
  534. package/lib/module/components/MessageInput/hooks/useCooldown.js.map +1 -0
  535. package/lib/module/components/MessageInput/hooks/useCountdown.js +57 -0
  536. package/lib/module/components/MessageInput/hooks/useCountdown.js.map +1 -0
  537. package/lib/module/components/MessageList/DateHeader.js +2 -2
  538. package/lib/module/components/MessageList/DateHeader.js.map +1 -1
  539. package/lib/module/components/MessageList/InlineDateSeparator.js +2 -2
  540. package/lib/module/components/MessageList/InlineDateSeparator.js.map +1 -1
  541. package/lib/module/components/MessageList/InlineLoadingMoreIndicator.js +1 -1
  542. package/lib/module/components/MessageList/InlineLoadingMoreRecentIndicator.js +1 -1
  543. package/lib/module/components/MessageList/InlineLoadingMoreThreadIndicator.js +1 -1
  544. package/lib/module/components/MessageList/MessageList.js +77 -44
  545. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  546. package/lib/module/components/MessageList/MessageSystem.js.map +1 -1
  547. package/lib/module/components/MessageList/TypingIndicator.js +5 -5
  548. package/lib/module/components/MessageList/TypingIndicator.js.map +1 -1
  549. package/lib/module/components/MessageList/hooks/useMessageList.js +23 -10
  550. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  551. package/lib/module/components/MessageList/hooks/useTypingString.js +2 -2
  552. package/lib/module/components/MessageList/hooks/useTypingString.js.map +1 -1
  553. package/lib/module/components/MessageList/utils/getDateSeparators.js +2 -1
  554. package/lib/module/components/MessageList/utils/getDateSeparators.js.map +1 -1
  555. package/lib/module/components/MessageList/utils/getGroupStyles.js +10 -5
  556. package/lib/module/components/MessageList/utils/getGroupStyles.js.map +1 -1
  557. package/lib/module/components/MessageList/utils/getLastReceivedMessage.js +3 -1
  558. package/lib/module/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  559. package/lib/{commonjs/components/MessageOverlay/MessageActions.js → module/components/MessageOverlay/MessageActionList.js} +33 -85
  560. package/lib/module/components/MessageOverlay/MessageActionList.js.map +1 -0
  561. package/lib/module/components/MessageOverlay/MessageActionListItem.js +131 -0
  562. package/lib/module/components/MessageOverlay/MessageActionListItem.js.map +1 -0
  563. package/lib/module/components/MessageOverlay/MessageOverlay.js +97 -78
  564. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  565. package/lib/module/components/MessageOverlay/OverlayBackdrop.js +38 -0
  566. package/lib/module/components/MessageOverlay/OverlayBackdrop.js.map +1 -0
  567. package/lib/module/components/MessageOverlay/OverlayReactionList.js +12 -11
  568. package/lib/module/components/MessageOverlay/OverlayReactionList.js.map +1 -1
  569. package/lib/module/components/MessageOverlay/OverlayReactions.js +31 -34
  570. package/lib/module/components/MessageOverlay/OverlayReactions.js.map +1 -1
  571. package/lib/module/components/MessageOverlay/OverlayReactionsAvatar.js +41 -0
  572. package/lib/module/components/MessageOverlay/OverlayReactionsAvatar.js.map +1 -0
  573. package/lib/module/components/MessageOverlay/hooks/useMessageActionAnimation.js +37 -0
  574. package/lib/module/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +1 -0
  575. package/lib/module/components/Reply/Reply.js +25 -19
  576. package/lib/module/components/Reply/Reply.js.map +1 -1
  577. package/lib/module/components/Thread/Thread.js +11 -2
  578. package/lib/module/components/Thread/Thread.js.map +1 -1
  579. package/lib/module/components/Thread/components/ThreadFooterComponent.js +20 -12
  580. package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  581. package/lib/module/components/docs/ListProps.md +1 -1
  582. package/lib/module/components/docs/data.js +1 -1
  583. package/lib/module/components/index.js +133 -55
  584. package/lib/module/components/index.js.map +1 -1
  585. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +68 -0
  586. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -0
  587. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js +2 -2
  588. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  589. package/lib/module/contexts/channelContext/ChannelContext.js +2 -2
  590. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  591. package/lib/module/contexts/channelsContext/ChannelsContext.js +2 -2
  592. package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
  593. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js +155 -0
  594. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -0
  595. package/lib/module/contexts/channelsStateContext/useChannelState.js +144 -0
  596. package/lib/module/contexts/channelsStateContext/useChannelState.js.map +1 -0
  597. package/lib/module/contexts/chatContext/ChatContext.js +2 -2
  598. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  599. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js +2 -2
  600. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  601. package/lib/module/contexts/keyboardContext/KeyboardContext.js +2 -2
  602. package/lib/module/contexts/keyboardContext/KeyboardContext.js.map +1 -1
  603. package/lib/module/contexts/messageContext/MessageContext.js +2 -2
  604. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  605. package/lib/module/contexts/messageInputContext/MessageInputContext.js +122 -84
  606. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  607. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +9 -5
  608. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  609. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +10 -3
  610. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  611. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js +5 -19
  612. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  613. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.js +36 -0
  614. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.js.map +1 -0
  615. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js +105 -0
  616. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +1 -0
  617. package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
  618. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  619. package/lib/module/contexts/overlayContext/OverlayContext.js +1 -1
  620. package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
  621. package/lib/module/contexts/overlayContext/OverlayProvider.js +55 -46
  622. package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
  623. package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +61 -0
  624. package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js.map +1 -0
  625. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +2 -2
  626. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  627. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +20 -33
  628. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  629. package/lib/module/contexts/themeContext/ThemeContext.js +2 -2
  630. package/lib/module/contexts/themeContext/ThemeContext.js.map +1 -1
  631. package/lib/module/contexts/themeContext/utils/theme.js +38 -14
  632. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  633. package/lib/module/contexts/threadContext/ThreadContext.js +2 -2
  634. package/lib/module/contexts/threadContext/ThreadContext.js.map +1 -1
  635. package/lib/module/contexts/translationContext/TranslationContext.js +1 -1
  636. package/lib/module/contexts/translationContext/TranslationContext.js.map +1 -1
  637. package/lib/module/contexts/typingContext/TypingContext.js +2 -2
  638. package/lib/module/contexts/typingContext/TypingContext.js.map +1 -1
  639. package/lib/module/contexts/utils/getDisplayName.js.map +1 -1
  640. package/lib/module/emoji-data/compiled.js +0 -315
  641. package/lib/module/emoji-data/compiled.js.map +1 -1
  642. package/lib/module/emoji-data/emojiNames.js +0 -105
  643. package/lib/module/emoji-data/emojiNames.js.map +1 -1
  644. package/lib/module/emoji-data/emojis.js +0 -175
  645. package/lib/module/emoji-data/emojis.js.map +1 -1
  646. package/lib/module/emoji-data/index.js +2 -2
  647. package/lib/module/emoji-data/index.js.map +1 -1
  648. package/lib/module/hooks/useStreami18n.js.map +1 -1
  649. package/lib/module/i18n/en.json +9 -3
  650. package/lib/module/i18n/fr.json +9 -3
  651. package/lib/module/i18n/hi.json +9 -3
  652. package/lib/module/i18n/it.json +9 -3
  653. package/lib/module/i18n/ja.json +9 -0
  654. package/lib/module/i18n/ko.json +9 -0
  655. package/lib/module/i18n/nl.json +9 -3
  656. package/lib/module/i18n/ru.json +9 -3
  657. package/lib/module/i18n/tr.json +10 -4
  658. package/lib/module/icons/Pin.js +42 -0
  659. package/lib/module/icons/Pin.js.map +1 -0
  660. package/lib/module/icons/PinHeader.js +38 -0
  661. package/lib/module/icons/PinHeader.js.map +1 -0
  662. package/lib/module/icons/Unpin.js +38 -0
  663. package/lib/module/icons/Unpin.js.map +1 -0
  664. package/lib/module/icons/index.js +39 -0
  665. package/lib/module/icons/index.js.map +1 -1
  666. package/lib/module/icons/utils/base.js +1 -1
  667. package/lib/module/index.js +6 -6
  668. package/lib/module/mock-builders/api/error.js +1 -1
  669. package/lib/module/mock-builders/api/sendMessage.js +4 -1
  670. package/lib/module/mock-builders/api/sendMessage.js.map +1 -1
  671. package/lib/module/mock-builders/generator/attachment.js +1 -3
  672. package/lib/module/mock-builders/generator/attachment.js.map +1 -1
  673. package/lib/module/mock-builders/generator/channel.js +101 -50
  674. package/lib/module/mock-builders/generator/channel.js.map +1 -1
  675. package/lib/module/mock-builders/generator/user.js +32 -33
  676. package/lib/module/mock-builders/generator/user.js.map +1 -1
  677. package/lib/module/mock-builders/mock.js +3 -3
  678. package/lib/module/mock-builders/mock.js.map +1 -1
  679. package/lib/module/native.js +1 -7
  680. package/lib/module/native.js.map +1 -1
  681. package/lib/module/styleguideComponents/ArgumentsRenderer.js +7 -7
  682. package/lib/module/styleguideComponents/ArgumentsRenderer.js.map +1 -1
  683. package/lib/module/styleguideComponents/JsDoc.js +4 -4
  684. package/lib/module/styleguideComponents/JsDoc.js.map +1 -1
  685. package/lib/module/styleguideComponents/PathlineRenderer.js +7 -7
  686. package/lib/module/styleguideComponents/PathlineRenderer.js.map +1 -1
  687. package/lib/module/styleguideComponents/PropsRenderer.js +25 -25
  688. package/lib/module/styleguideComponents/PropsRenderer.js.map +1 -1
  689. package/lib/module/styleguideComponents/Wrapper.js +1 -1
  690. package/lib/module/styleguideComponents/Wrapper.js.map +1 -1
  691. package/lib/module/utils/Streami18n.js.map +1 -1
  692. package/lib/module/utils/date.js +13 -0
  693. package/lib/module/utils/date.js.map +1 -0
  694. package/lib/module/utils/getResizedImageUrl.js +26 -0
  695. package/lib/module/utils/getResizedImageUrl.js.map +1 -0
  696. package/lib/module/utils/getUrlOfImageAttachment.js +9 -0
  697. package/lib/module/utils/getUrlOfImageAttachment.js.map +1 -0
  698. package/lib/module/utils/utils.js +17 -9
  699. package/lib/module/utils/utils.js.map +1 -1
  700. package/lib/module/version.json +1 -1
  701. package/lib/typescript/components/Attachment/Attachment.d.ts +1 -1
  702. package/lib/typescript/components/Attachment/AttachmentActions.d.ts +1 -1
  703. package/lib/typescript/components/Attachment/Card.d.ts +3 -1
  704. package/lib/typescript/components/Attachment/FileAttachment.d.ts +1 -1
  705. package/lib/typescript/components/Attachment/Gallery.d.ts +4 -6
  706. package/lib/typescript/components/Attachment/Giphy.d.ts +1 -1
  707. package/lib/typescript/components/Attachment/utils/buildGallery/buildGallery.d.ts +23 -0
  708. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.d.ts +7 -0
  709. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.d.ts +7 -0
  710. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.d.ts +7 -0
  711. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnail.d.ts +10 -0
  712. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnailGrid.d.ts +137 -0
  713. package/lib/typescript/components/Attachment/utils/buildGallery/types.d.ts +23 -0
  714. package/lib/typescript/components/Attachment/utils/getAspectRatio.d.ts +9 -0
  715. package/lib/typescript/components/Attachment/utils/getGalleryImageBorderRadius.d.ts +22 -0
  716. package/lib/typescript/components/AutoCompleteInput/AutoCompleteInput.d.ts +7 -1
  717. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.d.ts +4 -0
  718. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionHeader.d.ts +8 -0
  719. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionItem.d.ts +10 -0
  720. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts +21 -0
  721. package/lib/typescript/components/Channel/Channel.d.ts +13 -12
  722. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +1 -1
  723. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -68
  724. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -126
  725. package/lib/typescript/components/Channel/hooks/useCreateOwnCapabilitiesContext.d.ts +7 -0
  726. package/lib/typescript/components/ChannelList/ChannelList.d.ts +1 -1
  727. package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts +4 -2
  728. package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts +2 -2
  729. package/lib/typescript/components/ChannelPreview/ChannelPreviewMessenger.d.ts +2 -2
  730. package/lib/typescript/components/ChannelPreview/ChannelPreviewMutedStatus.d.ts +9 -0
  731. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.d.ts +12 -0
  732. package/lib/typescript/components/Chat/Chat.d.ts +1 -1
  733. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts +4 -1
  734. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryImage.d.ts +1 -1
  735. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +1 -1
  736. package/lib/typescript/components/ImageGallery/components/ImageGalleryHeader.d.ts +1 -1
  737. package/lib/typescript/components/ImageGallery/components/ImageGrid.d.ts +1 -1
  738. package/lib/typescript/components/Indicators/LoadingErrorIndicator.d.ts +1 -1
  739. package/lib/typescript/components/Message/Message.d.ts +4 -3
  740. package/lib/typescript/components/Message/MessageSimple/MessageAvatar.d.ts +1 -1
  741. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +1 -1
  742. package/lib/typescript/components/Message/MessageSimple/MessageDeleted.d.ts +2 -2
  743. package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts +2 -2
  744. package/lib/typescript/components/Message/MessageSimple/MessagePinnedHeader.d.ts +8 -0
  745. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts +1 -1
  746. package/lib/typescript/components/Message/MessageSimple/MessageStatus.d.ts +1 -1
  747. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts +1 -0
  748. package/lib/typescript/components/Message/MessageSimple/ReactionList.d.ts +2 -1
  749. package/lib/typescript/components/Message/MessageSimple/utils/parseLinks.d.ts +7 -0
  750. package/lib/typescript/components/Message/MessageSimple/utils/parseLinks.test.d.ts +1 -0
  751. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +3 -2
  752. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
  753. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +15 -0
  754. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +26 -0
  755. package/lib/typescript/components/Message/utils/messageActions.d.ts +22 -21
  756. package/lib/typescript/components/Message/utils/removeReservedFields.d.ts +1 -1
  757. package/lib/typescript/components/MessageInput/AttachButton.d.ts +1 -1
  758. package/lib/typescript/components/MessageInput/CommandsButton.d.ts +1 -1
  759. package/lib/typescript/components/MessageInput/CooldownTimer.d.ts +10 -0
  760. package/lib/typescript/components/MessageInput/InputButtons.d.ts +1 -1
  761. package/lib/typescript/components/MessageInput/MessageInput.d.ts +1 -1
  762. package/lib/typescript/components/MessageInput/MoreOptionsButton.d.ts +1 -1
  763. package/lib/typescript/components/MessageInput/SendMessageDisallowedIndicator.d.ts +1 -0
  764. package/lib/typescript/components/MessageInput/hooks/useCooldown.d.ts +9 -0
  765. package/lib/typescript/components/MessageInput/hooks/useCountdown.d.ts +8 -0
  766. package/lib/typescript/components/MessageList/MessageList.d.ts +2 -1
  767. package/lib/typescript/components/MessageList/MessageSystem.d.ts +1 -1
  768. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +1 -0
  769. package/lib/typescript/components/MessageList/utils/getGroupStyles.d.ts +1 -1
  770. package/lib/typescript/components/MessageOverlay/MessageActionList.d.ts +12 -0
  771. package/lib/typescript/components/MessageOverlay/MessageActionListItem.d.ts +20 -0
  772. package/lib/typescript/components/MessageOverlay/MessageOverlay.d.ts +4 -4
  773. package/lib/typescript/components/MessageOverlay/OverlayBackdrop.d.ts +6 -0
  774. package/lib/typescript/components/MessageOverlay/OverlayReactions.d.ts +3 -1
  775. package/lib/typescript/components/MessageOverlay/OverlayReactionsAvatar.d.ts +7 -0
  776. package/lib/typescript/components/MessageOverlay/hooks/useMessageActionAnimation.d.ts +12 -0
  777. package/lib/typescript/components/Reply/Reply.d.ts +1 -1
  778. package/lib/typescript/components/Thread/Thread.d.ts +2 -2
  779. package/lib/typescript/components/index.d.ts +13 -7
  780. package/lib/typescript/contexts/activeChannelsRefContext/ActiveChannelsRefContext.d.ts +9 -0
  781. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +28 -30
  782. package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts +13 -5
  783. package/lib/typescript/contexts/channelsStateContext/ChannelsStateContext.d.ts +41 -0
  784. package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts +20 -0
  785. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +2 -6
  786. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +21 -10
  787. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +3 -3
  788. package/lib/typescript/contexts/messageInputContext/hooks/useMessageDetailsForState.d.ts +1 -1
  789. package/lib/typescript/contexts/messageOverlayContext/MessageOverlayContext.d.ts +12 -13
  790. package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.d.ts +12 -0
  791. package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.test.d.ts +1 -0
  792. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +23 -114
  793. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +14 -7
  794. package/lib/typescript/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.d.ts +25 -0
  795. package/lib/typescript/contexts/suggestionsContext/SuggestionsContext.d.ts +14 -13
  796. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +35 -11
  797. package/lib/typescript/contexts/utils/getDisplayName.d.ts +2 -2
  798. package/lib/typescript/hooks/useStreami18n.d.ts +1 -1
  799. package/lib/typescript/i18n/en.json +9 -3
  800. package/lib/typescript/i18n/fr.json +9 -3
  801. package/lib/typescript/i18n/hi.json +9 -3
  802. package/lib/typescript/i18n/it.json +9 -3
  803. package/lib/typescript/i18n/ja.json +9 -0
  804. package/lib/typescript/i18n/ko.json +9 -0
  805. package/lib/typescript/i18n/nl.json +9 -3
  806. package/lib/typescript/i18n/ru.json +9 -3
  807. package/lib/typescript/i18n/tr.json +10 -4
  808. package/lib/typescript/icons/Pin.d.ts +3 -0
  809. package/lib/typescript/icons/PinHeader.d.ts +3 -0
  810. package/lib/typescript/icons/Unpin.d.ts +3 -0
  811. package/lib/typescript/icons/index.d.ts +3 -0
  812. package/lib/typescript/native.d.ts +1 -9
  813. package/lib/typescript/utils/Streami18n.d.ts +11 -8
  814. package/lib/typescript/utils/date.d.ts +2 -0
  815. package/lib/typescript/utils/getResizedImageUrl.d.ts +19 -0
  816. package/lib/typescript/utils/getUrlOfImageAttachment.d.ts +7 -0
  817. package/lib/typescript/utils/utils.d.ts +14 -11
  818. package/package.json +12 -14
  819. package/src/components/Attachment/Attachment.tsx +3 -3
  820. package/src/components/Attachment/AttachmentActions.tsx +2 -2
  821. package/src/components/Attachment/Card.tsx +8 -5
  822. package/src/components/Attachment/FileAttachment.tsx +3 -4
  823. package/src/components/Attachment/FileIcon.tsx +2 -2
  824. package/src/components/Attachment/Gallery.tsx +164 -193
  825. package/src/components/Attachment/Giphy.tsx +6 -7
  826. package/src/components/Attachment/__tests__/Attachment.test.js +22 -14
  827. package/src/components/Attachment/__tests__/Gallery.test.js +233 -0
  828. package/src/components/Attachment/__tests__/buildGallery.test.js +131 -0
  829. package/src/components/Attachment/utils/buildGallery/buildGallery.ts +75 -0
  830. package/src/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.ts +95 -0
  831. package/src/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.ts +99 -0
  832. package/src/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.ts +64 -0
  833. package/src/components/Attachment/utils/buildGallery/buildThumbnail.ts +46 -0
  834. package/src/components/Attachment/utils/buildGallery/buildThumbnailGrid.ts +186 -0
  835. package/src/components/Attachment/utils/buildGallery/types.ts +27 -0
  836. package/src/components/Attachment/utils/getAspectRatio.ts +21 -0
  837. package/src/components/Attachment/utils/getGalleryImageBorderRadius.ts +71 -0
  838. package/src/components/AttachmentPicker/AttachmentPicker.tsx +4 -2
  839. package/src/components/AutoCompleteInput/AutoCompleteInput.tsx +43 -28
  840. package/src/components/AutoCompleteInput/{CommandsItem.tsx → AutoCompleteSuggestionCommandIcon.tsx} +3 -57
  841. package/src/components/AutoCompleteInput/AutoCompleteSuggestionHeader.tsx +109 -0
  842. package/src/components/AutoCompleteInput/AutoCompleteSuggestionItem.tsx +156 -0
  843. package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +212 -0
  844. package/src/components/AutoCompleteInput/__tests__/AutoCompleteInput.test.js +6 -12
  845. package/src/components/Avatar/Avatar.tsx +7 -10
  846. package/src/components/Avatar/GroupAvatar.tsx +7 -21
  847. package/src/components/Avatar/__tests__/Avatar.test.js +2 -30
  848. package/src/components/Channel/Channel.tsx +288 -232
  849. package/src/components/Channel/__tests__/Channel.test.js +34 -29
  850. package/src/components/Channel/__tests__/ownCapabilities.test.js +376 -0
  851. package/src/components/Channel/hooks/useCreateChannelContext.ts +6 -6
  852. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +4 -3
  853. package/src/components/Channel/hooks/useCreateMessagesContext.ts +9 -30
  854. package/src/components/Channel/hooks/useCreateOwnCapabilitiesContext.ts +54 -0
  855. package/src/components/ChannelList/ChannelList.tsx +8 -9
  856. package/src/components/ChannelList/ChannelListFooterLoadingIndicator.tsx +2 -3
  857. package/src/components/ChannelList/ChannelListHeaderErrorIndicator.tsx +3 -7
  858. package/src/components/ChannelList/ChannelListHeaderNetworkDownIndicator.tsx +5 -2
  859. package/src/components/ChannelList/ChannelListMessenger.tsx +3 -4
  860. package/src/components/ChannelList/__tests__/ChannelList.test.js +73 -13
  861. package/src/components/ChannelList/__tests__/ChannelListMessenger.test.js +11 -12
  862. package/src/components/ChannelList/hooks/listeners/useAddedToChannelNotification.ts +3 -3
  863. package/src/components/ChannelList/hooks/listeners/useChannelDeleted.ts +2 -2
  864. package/src/components/ChannelList/hooks/listeners/useChannelHidden.ts +2 -2
  865. package/src/components/ChannelList/hooks/listeners/useChannelTruncated.ts +2 -2
  866. package/src/components/ChannelList/hooks/listeners/useChannelUpdated.ts +2 -2
  867. package/src/components/ChannelList/hooks/listeners/useChannelVisible.ts +3 -3
  868. package/src/components/ChannelList/hooks/listeners/useNewMessage.ts +2 -3
  869. package/src/components/ChannelList/hooks/listeners/useNewMessageNotification.ts +4 -4
  870. package/src/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.ts +2 -2
  871. package/src/components/ChannelList/hooks/listeners/useUserPresence.ts +2 -2
  872. package/src/components/ChannelList/hooks/useCreateChannelsContext.ts +1 -2
  873. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +86 -44
  874. package/src/components/ChannelPreview/ChannelAvatar.tsx +3 -5
  875. package/src/components/ChannelPreview/ChannelPreview.tsx +3 -3
  876. package/src/components/ChannelPreview/ChannelPreviewMessage.tsx +2 -2
  877. package/src/components/ChannelPreview/ChannelPreviewMessenger.tsx +27 -11
  878. package/src/components/ChannelPreview/ChannelPreviewMutedStatus.tsx +71 -0
  879. package/src/components/ChannelPreview/ChannelPreviewStatus.tsx +4 -3
  880. package/src/components/ChannelPreview/ChannelPreviewTitle.tsx +2 -2
  881. package/src/components/ChannelPreview/ChannelPreviewUnreadCount.tsx +2 -1
  882. package/src/components/ChannelPreview/__tests__/ChannelPreview.test.js +8 -9
  883. package/src/components/ChannelPreview/__tests__/ChannelPreviewMessenger.test.js +8 -9
  884. package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.ts +8 -2
  885. package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayName.ts +3 -4
  886. package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.ts +2 -2
  887. package/src/components/ChannelPreview/hooks/useLatestMessagePreview.ts +4 -3
  888. package/src/components/Chat/Chat.tsx +6 -6
  889. package/src/components/Chat/__tests__/Chat.test.js +10 -6
  890. package/src/components/Chat/hooks/useIsOnline.ts +12 -8
  891. package/src/components/ImageGallery/ImageGallery.tsx +83 -49
  892. package/src/components/ImageGallery/components/AnimatedGalleryImage.tsx +1 -2
  893. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +2 -5
  894. package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +5 -7
  895. package/src/components/ImageGallery/components/ImageGrid.tsx +4 -5
  896. package/src/components/ImageGallery/components/ImageGridHandle.tsx +1 -0
  897. package/src/components/Indicators/LoadingErrorIndicator.tsx +1 -1
  898. package/src/components/Indicators/LoadingIndicator.tsx +1 -2
  899. package/src/components/Message/Message.tsx +155 -594
  900. package/src/components/Message/MessageSimple/MessageAvatar.tsx +1 -2
  901. package/src/components/Message/MessageSimple/MessageContent.tsx +23 -25
  902. package/src/components/Message/MessageSimple/MessageDeleted.tsx +8 -6
  903. package/src/components/Message/MessageSimple/MessageFooter.tsx +42 -24
  904. package/src/components/Message/MessageSimple/MessagePinnedHeader.tsx +150 -0
  905. package/src/components/Message/MessageSimple/MessageReplies.tsx +5 -0
  906. package/src/components/Message/MessageSimple/MessageRepliesAvatars.tsx +2 -3
  907. package/src/components/Message/MessageSimple/MessageSimple.tsx +47 -26
  908. package/src/components/Message/MessageSimple/MessageStatus.tsx +19 -34
  909. package/src/components/Message/MessageSimple/MessageTextContainer.tsx +5 -0
  910. package/src/components/Message/MessageSimple/ReactionList.tsx +64 -77
  911. package/src/components/Message/MessageSimple/__tests__/Message.test.js +9 -10
  912. package/src/components/Message/MessageSimple/__tests__/MessageAvatar.test.js +2 -2
  913. package/src/components/Message/MessageSimple/__tests__/MessageContent.test.js +40 -47
  914. package/src/components/Message/MessageSimple/__tests__/MessagePinnedHeader.test.js +53 -0
  915. package/src/components/Message/MessageSimple/__tests__/MessageReplies.test.js +2 -2
  916. package/src/components/Message/MessageSimple/__tests__/MessageStatus.test.js +4 -5
  917. package/src/components/Message/MessageSimple/__tests__/MessageTextContainer.test.js +2 -2
  918. package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessageAvatar.test.js.snap +1 -1
  919. package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessagePinnedHeader.test.js.snap +80 -0
  920. package/src/components/Message/MessageSimple/utils/parseLinks.test.ts +100 -0
  921. package/src/components/Message/MessageSimple/utils/parseLinks.ts +95 -0
  922. package/src/components/Message/MessageSimple/utils/renderText.tsx +22 -12
  923. package/src/components/Message/hooks/useCreateMessageContext.ts +1 -7
  924. package/src/components/Message/hooks/useMessageActionHandlers.ts +172 -0
  925. package/src/components/Message/hooks/useMessageActions.tsx +386 -0
  926. package/src/components/Message/utils/messageActions.ts +64 -38
  927. package/src/components/Message/utils/removeReservedFields.ts +1 -1
  928. package/src/components/MessageInput/AttachButton.tsx +1 -2
  929. package/src/components/MessageInput/CommandsButton.tsx +1 -2
  930. package/src/components/MessageInput/CooldownTimer.tsx +67 -0
  931. package/src/components/MessageInput/FileUploadPreview.tsx +5 -5
  932. package/src/components/MessageInput/ImageUploadPreview.tsx +3 -4
  933. package/src/components/MessageInput/InputButtons.tsx +4 -10
  934. package/src/components/MessageInput/MessageInput.tsx +62 -35
  935. package/src/components/MessageInput/MoreOptionsButton.tsx +1 -2
  936. package/src/components/MessageInput/SendMessageDisallowedIndicator.tsx +47 -0
  937. package/src/components/MessageInput/ShowThreadMessageInChannelButton.tsx +2 -2
  938. package/src/components/MessageInput/__tests__/AttachButton.test.js +2 -2
  939. package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +43 -45
  940. package/src/components/MessageInput/__tests__/ImageUploadPreview.test.js +15 -15
  941. package/src/components/MessageInput/__tests__/MessageInput.test.js +15 -23
  942. package/src/components/MessageInput/__tests__/SendButton.test.js +2 -2
  943. package/src/components/MessageInput/__tests__/UploadProgressIndicator.test.js +2 -2
  944. package/src/components/MessageInput/__tests__/__snapshots__/FileUploadPreview.test.js.snap +3593 -2889
  945. package/src/components/MessageInput/__tests__/__snapshots__/ImageUploadPreview.test.js.snap +1912 -1572
  946. package/src/components/MessageInput/__tests__/__snapshots__/MessageInput.test.js.snap +539 -296
  947. package/src/components/MessageInput/__tests__/__snapshots__/UploadProgressIndicator.test.js.snap +4 -4
  948. package/src/components/MessageInput/hooks/useCooldown.ts +62 -0
  949. package/src/components/MessageInput/hooks/useCountdown.ts +48 -0
  950. package/src/components/MessageList/DateHeader.tsx +2 -2
  951. package/src/components/MessageList/InlineDateSeparator.tsx +2 -2
  952. package/src/components/MessageList/MessageList.tsx +63 -39
  953. package/src/components/MessageList/MessageSystem.tsx +2 -2
  954. package/src/components/MessageList/TypingIndicator.tsx +1 -2
  955. package/src/components/MessageList/__tests__/MessageList.test.js +241 -116
  956. package/src/components/MessageList/__tests__/MessageSystem.test.js +3 -3
  957. package/src/components/MessageList/__tests__/ScrollToBottomButton.test.js +3 -3
  958. package/src/components/MessageList/__tests__/TypingIndicator.test.js +5 -6
  959. package/src/components/MessageList/__tests__/__snapshots__/TypingIndicator.test.js.snap +1 -1
  960. package/src/components/MessageList/hooks/useMessageList.ts +19 -9
  961. package/src/components/MessageList/hooks/useTypingString.ts +1 -2
  962. package/src/components/MessageList/utils/getDateSeparators.ts +4 -3
  963. package/src/components/MessageList/utils/getGroupStyles.ts +14 -9
  964. package/src/components/MessageList/utils/getLastReceivedMessage.ts +6 -1
  965. package/src/components/MessageOverlay/{MessageActions.tsx → MessageActionList.tsx} +59 -91
  966. package/src/components/MessageOverlay/MessageActionListItem.tsx +113 -0
  967. package/src/components/MessageOverlay/MessageOverlay.tsx +258 -217
  968. package/src/components/MessageOverlay/OverlayBackdrop.tsx +18 -0
  969. package/src/components/MessageOverlay/OverlayReactionList.tsx +3 -5
  970. package/src/components/MessageOverlay/OverlayReactions.tsx +27 -8
  971. package/src/components/MessageOverlay/OverlayReactionsAvatar.tsx +27 -0
  972. package/src/components/MessageOverlay/hooks/useMessageActionAnimation.tsx +44 -0
  973. package/src/components/Reply/Reply.tsx +25 -15
  974. package/src/components/Thread/Thread.tsx +13 -6
  975. package/src/components/Thread/__tests__/Thread.test.js +38 -113
  976. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +1085 -1018
  977. package/src/components/Thread/components/ThreadFooterComponent.tsx +14 -3
  978. package/src/components/docs/ListProps.md +1 -1
  979. package/src/components/index.ts +13 -7
  980. package/src/contexts/activeChannelsRefContext/ActiveChannelsRefContext.tsx +32 -0
  981. package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +1 -2
  982. package/src/contexts/channelContext/ChannelContext.tsx +28 -32
  983. package/src/contexts/channelsContext/ChannelsContext.tsx +18 -7
  984. package/src/contexts/channelsStateContext/ChannelsStateContext.tsx +286 -0
  985. package/src/contexts/channelsStateContext/useChannelState.ts +207 -0
  986. package/src/contexts/chatContext/ChatContext.tsx +1 -2
  987. package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +1 -2
  988. package/src/contexts/keyboardContext/KeyboardContext.tsx +1 -2
  989. package/src/contexts/messageContext/MessageContext.tsx +2 -10
  990. package/src/contexts/messageInputContext/MessageInputContext.tsx +77 -36
  991. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +9 -7
  992. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +15 -10
  993. package/src/contexts/messageOverlayContext/MessageOverlayContext.tsx +19 -28
  994. package/src/contexts/messageOverlayContext/hooks/useResettableState.test.tsx +46 -0
  995. package/src/contexts/messageOverlayContext/hooks/useResettableState.ts +22 -0
  996. package/src/contexts/messagesContext/MessagesContext.tsx +39 -140
  997. package/src/contexts/overlayContext/OverlayContext.tsx +19 -11
  998. package/src/contexts/overlayContext/OverlayProvider.tsx +48 -42
  999. package/src/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.tsx +38 -0
  1000. package/src/contexts/paginatedMessageListContext/PaginatedMessageListContext.tsx +1 -2
  1001. package/src/contexts/suggestionsContext/SuggestionsContext.tsx +26 -46
  1002. package/src/contexts/suggestionsContext/__tests__/Suggestions.test.js +1 -1
  1003. package/src/contexts/themeContext/ThemeContext.tsx +1 -0
  1004. package/src/contexts/themeContext/utils/theme.ts +71 -24
  1005. package/src/contexts/threadContext/ThreadContext.tsx +1 -2
  1006. package/src/contexts/translationContext/TranslationContext.tsx +3 -3
  1007. package/src/contexts/typingContext/TypingContext.tsx +1 -2
  1008. package/src/contexts/utils/getDisplayName.ts +3 -1
  1009. package/src/emoji-data/compiled.ts +1830 -9609
  1010. package/src/emoji-data/emojiNames.ts +0 -140
  1011. package/src/emoji-data/emojis.ts +0 -210
  1012. package/src/emoji-data/index.js +1 -1
  1013. package/src/hooks/useStreami18n.ts +1 -1
  1014. package/src/i18n/en.json +9 -3
  1015. package/src/i18n/fr.json +9 -3
  1016. package/src/i18n/hi.json +9 -3
  1017. package/src/i18n/it.json +9 -3
  1018. package/src/i18n/ja.json +9 -0
  1019. package/src/i18n/ko.json +9 -0
  1020. package/src/i18n/nl.json +9 -3
  1021. package/src/i18n/ru.json +9 -3
  1022. package/src/i18n/tr.json +10 -4
  1023. package/src/icons/Pin.tsx +17 -0
  1024. package/src/icons/PinHeader.tsx +12 -0
  1025. package/src/icons/Unpin.tsx +12 -0
  1026. package/src/icons/index.ts +3 -0
  1027. package/src/mock-builders/api/sendMessage.js +3 -1
  1028. package/src/mock-builders/generator/attachment.js +0 -2
  1029. package/src/mock-builders/generator/channel.js +101 -46
  1030. package/src/mock-builders/generator/user.js +33 -26
  1031. package/src/mock-builders/mock.js +2 -2
  1032. package/src/native.ts +2 -13
  1033. package/src/styleguideComponents/ArgumentsRenderer.tsx +2 -1
  1034. package/src/styleguideComponents/JsDoc.tsx +3 -1
  1035. package/src/styleguideComponents/PathlineRenderer.tsx +2 -1
  1036. package/src/styleguideComponents/PropsRenderer.tsx +7 -4
  1037. package/src/styleguideComponents/Wrapper.tsx +1 -0
  1038. package/src/utils/Streami18n.ts +3 -3
  1039. package/src/utils/__tests__/Streami18n.test.js +1 -2
  1040. package/src/utils/date.ts +4 -0
  1041. package/src/utils/getResizedImageUrl.ts +43 -0
  1042. package/src/utils/getUrlOfImageAttachment.ts +10 -0
  1043. package/src/utils/utils.ts +23 -16
  1044. package/src/version.json +1 -1
  1045. package/lib/commonjs/components/AutoCompleteInput/CommandsHeader.js +0 -78
  1046. package/lib/commonjs/components/AutoCompleteInput/CommandsHeader.js.map +0 -1
  1047. package/lib/commonjs/components/AutoCompleteInput/CommandsItem.js.map +0 -1
  1048. package/lib/commonjs/components/AutoCompleteInput/EmojisHeader.js +0 -81
  1049. package/lib/commonjs/components/AutoCompleteInput/EmojisHeader.js.map +0 -1
  1050. package/lib/commonjs/components/AutoCompleteInput/EmojisItem.js +0 -75
  1051. package/lib/commonjs/components/AutoCompleteInput/EmojisItem.js.map +0 -1
  1052. package/lib/commonjs/components/AutoCompleteInput/MentionsItem.js +0 -125
  1053. package/lib/commonjs/components/AutoCompleteInput/MentionsItem.js.map +0 -1
  1054. package/lib/commonjs/components/AutoCompleteInput/SuggestionsList.js +0 -199
  1055. package/lib/commonjs/components/AutoCompleteInput/SuggestionsList.js.map +0 -1
  1056. package/lib/commonjs/components/MessageOverlay/MessageActions.js.map +0 -1
  1057. package/lib/module/components/AutoCompleteInput/CommandsHeader.js +0 -78
  1058. package/lib/module/components/AutoCompleteInput/CommandsHeader.js.map +0 -1
  1059. package/lib/module/components/AutoCompleteInput/CommandsItem.js.map +0 -1
  1060. package/lib/module/components/AutoCompleteInput/EmojisHeader.js +0 -81
  1061. package/lib/module/components/AutoCompleteInput/EmojisHeader.js.map +0 -1
  1062. package/lib/module/components/AutoCompleteInput/EmojisItem.js +0 -75
  1063. package/lib/module/components/AutoCompleteInput/EmojisItem.js.map +0 -1
  1064. package/lib/module/components/AutoCompleteInput/MentionsItem.js +0 -125
  1065. package/lib/module/components/AutoCompleteInput/MentionsItem.js.map +0 -1
  1066. package/lib/module/components/AutoCompleteInput/SuggestionsList.js +0 -199
  1067. package/lib/module/components/AutoCompleteInput/SuggestionsList.js.map +0 -1
  1068. package/lib/module/components/MessageOverlay/MessageActions.js.map +0 -1
  1069. package/lib/typescript/components/AutoCompleteInput/CommandsHeader.d.ts +0 -2
  1070. package/lib/typescript/components/AutoCompleteInput/CommandsItem.d.ts +0 -15
  1071. package/lib/typescript/components/AutoCompleteInput/EmojisHeader.d.ts +0 -5
  1072. package/lib/typescript/components/AutoCompleteInput/EmojisItem.d.ts +0 -12
  1073. package/lib/typescript/components/AutoCompleteInput/MentionsItem.d.ts +0 -16
  1074. package/lib/typescript/components/AutoCompleteInput/SuggestionsList.d.ts +0 -13
  1075. package/lib/typescript/components/MessageOverlay/MessageActions.d.ts +0 -11
  1076. package/src/components/AutoCompleteInput/CommandsHeader.tsx +0 -43
  1077. package/src/components/AutoCompleteInput/EmojisHeader.tsx +0 -45
  1078. package/src/components/AutoCompleteInput/EmojisItem.tsx +0 -52
  1079. package/src/components/AutoCompleteInput/MentionsItem.tsx +0 -74
  1080. package/src/components/AutoCompleteInput/SuggestionsList.tsx +0 -138
  1081. package/src/components/AutoCompleteInput/__tests__/CommandsItem.test.js +0 -26
  1082. package/src/components/AutoCompleteInput/__tests__/MentionsItem.test.js +0 -62
  1083. package/src/components/MessageList/__tests__/__snapshots__/MessageList.test.js.snap +0 -936
@@ -0,0 +1,233 @@
1
+ import React from 'react';
2
+
3
+ import { render, waitFor } from '@testing-library/react-native';
4
+
5
+ import { OverlayProvider } from '../../../contexts/overlayContext/OverlayProvider';
6
+
7
+ import { getOrCreateChannelApi } from '../../../mock-builders/api/getOrCreateChannel';
8
+ import { useMockedApis } from '../../../mock-builders/api/useMockedApis';
9
+ import { generateImageAttachment } from '../../../mock-builders/generator/attachment';
10
+ import { generateChannelResponse } from '../../../mock-builders/generator/channel';
11
+ import { generateMember } from '../../../mock-builders/generator/member';
12
+ import { generateMessage } from '../../../mock-builders/generator/message';
13
+ import { generateUser } from '../../../mock-builders/generator/user';
14
+ import { getTestClientWithUser } from '../../../mock-builders/mock';
15
+ import { Channel } from '../../Channel/Channel';
16
+ import { Chat } from '../../Chat/Chat';
17
+ import { MessageList } from '../../MessageList/MessageList';
18
+
19
+ describe('Gallery', () => {
20
+ const user1 = generateUser();
21
+
22
+ const getComponent = async (attachments = []) => {
23
+ const chatClient = await getTestClientWithUser({ id: 'testID' });
24
+
25
+ const mockedChannel = generateChannelResponse({
26
+ members: [generateMember({ user: user1 })],
27
+ messages: [generateMessage({ attachments, user: user1 })],
28
+ });
29
+ useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
30
+ const channel = chatClient.channel('messaging', mockedChannel.id);
31
+ await channel.watch();
32
+
33
+ return (
34
+ <OverlayProvider>
35
+ <Chat client={chatClient}>
36
+ <Channel channel={channel}>
37
+ <MessageList />
38
+ </Channel>
39
+ </Chat>
40
+ </OverlayProvider>
41
+ );
42
+ };
43
+
44
+ /**
45
+ * -----------
46
+ * | | |
47
+ * | | |
48
+ * | | |
49
+ * | | |
50
+ * -----------
51
+ */
52
+ it('should render two portrait images in two columns', async () => {
53
+ const attachment1 = generateImageAttachment({
54
+ original_height: 600,
55
+ original_width: 400,
56
+ });
57
+ const attachment2 = generateImageAttachment({
58
+ original_height: 700,
59
+ original_width: 400,
60
+ });
61
+ const component = await getComponent([attachment1, attachment2]);
62
+ const { queryAllByTestId } = render(component);
63
+
64
+ await waitFor(() => {
65
+ expect(queryAllByTestId('gallery-row-0').length).toBe(1);
66
+ // expect(queryAllByTestId('gallery-row-1').length).toBe(1);
67
+
68
+ expect(queryAllByTestId('gallery-row-0-item-0').length).toBe(1);
69
+ expect(queryAllByTestId('gallery-row-0-item-1').length).toBe(1);
70
+ });
71
+ });
72
+
73
+ it('should render portrait and landscape image in two rows', async () => {
74
+ const attachment1 = generateImageAttachment({
75
+ original_height: 600,
76
+ original_width: 400,
77
+ });
78
+ const attachment2 = generateImageAttachment({
79
+ original_height: 200,
80
+ original_width: 400,
81
+ });
82
+ const component = await getComponent([attachment1, attachment2]);
83
+ const { queryAllByTestId } = render(component);
84
+
85
+ await waitFor(() => {
86
+ expect(queryAllByTestId('gallery-row-0').length).toBe(1);
87
+
88
+ expect(queryAllByTestId('gallery-row-0-item-0').length).toBe(1);
89
+ expect(queryAllByTestId('gallery-row-0-item-1').length).toBe(1);
90
+ });
91
+ });
92
+
93
+ /**
94
+ *
95
+ * ----------
96
+ * | |
97
+ * ----------
98
+ * | |
99
+ * ----------
100
+ */
101
+ it('should render two landscape images in two rows', async () => {
102
+ const attachment1 = generateImageAttachment({
103
+ original_height: 200,
104
+ original_width: 400,
105
+ });
106
+ const attachment2 = generateImageAttachment({
107
+ original_height: 300,
108
+ original_width: 400,
109
+ });
110
+ const component = await getComponent([attachment1, attachment2]);
111
+ const { queryAllByTestId } = render(component);
112
+ await waitFor(() => {
113
+ expect(queryAllByTestId('gallery-row-0').length).toBe(1);
114
+ expect(queryAllByTestId('gallery-row-1').length).toBe(1);
115
+
116
+ expect(queryAllByTestId('gallery-row-0-item-0').length).toBe(1);
117
+ expect(queryAllByTestId('gallery-row-1-item-0').length).toBe(1);
118
+ });
119
+ });
120
+
121
+ /**
122
+ * -----------
123
+ * | | |
124
+ * | | |
125
+ * | |----|
126
+ * | | |
127
+ * | | |
128
+ * -----------
129
+ */
130
+ it('should render 3 images containing a portrait image in two columns, with portrait in its own column', async () => {
131
+ const portraitImage = generateImageAttachment({
132
+ original_height: 600,
133
+ original_width: 300,
134
+ });
135
+ const squareImage1 = generateImageAttachment({
136
+ original_height: 400,
137
+ original_width: 400,
138
+ });
139
+ const squareImage2 = generateImageAttachment({
140
+ original_height: 400,
141
+ original_width: 400,
142
+ });
143
+
144
+ const component = await getComponent([portraitImage, squareImage1, squareImage2]);
145
+ const { queryAllByTestId } = render(component);
146
+
147
+ await waitFor(() => {
148
+ expect(queryAllByTestId('gallery-column-0').length).toBe(1);
149
+ expect(queryAllByTestId('gallery-column-1').length).toBe(1);
150
+
151
+ expect(queryAllByTestId('gallery-column-0-item-0').length).toBe(1);
152
+ expect(queryAllByTestId('gallery-column-1-item-0').length).toBe(1);
153
+ expect(queryAllByTestId('gallery-column-1-item-1').length).toBe(1);
154
+ });
155
+ });
156
+
157
+ /**
158
+ * -----------
159
+ * | |
160
+ * | |
161
+ * |---------|
162
+ * | | |
163
+ * | | |
164
+ * -----------
165
+ */
166
+ it('should render 3 images containing a landscape image in two rows, with landscape in its own row', async () => {
167
+ const portraitImage = generateImageAttachment({
168
+ original_height: 300,
169
+ original_width: 600,
170
+ });
171
+ const squareImage1 = generateImageAttachment({
172
+ original_height: 400,
173
+ original_width: 400,
174
+ });
175
+ const squareImage2 = generateImageAttachment({
176
+ original_height: 400,
177
+ original_width: 400,
178
+ });
179
+
180
+ const component = await getComponent([portraitImage, squareImage1, squareImage2]);
181
+ const { queryAllByTestId } = render(component);
182
+
183
+ await waitFor(() => {
184
+ expect(queryAllByTestId('gallery-row-0').length).toBe(1);
185
+ expect(queryAllByTestId('gallery-row-1').length).toBe(1);
186
+
187
+ expect(queryAllByTestId('gallery-row-0-item-0').length).toBe(1);
188
+ expect(queryAllByTestId('gallery-row-1-item-0').length).toBe(1);
189
+ expect(queryAllByTestId('gallery-row-1-item-1').length).toBe(1);
190
+ });
191
+ });
192
+
193
+ /**
194
+ * -----------
195
+ * | | |
196
+ * | | |
197
+ * -----------
198
+ * | | |
199
+ * | | |
200
+ * -----------
201
+ */
202
+ it('should render 4 images in grid of two columns and 2 rows', async () => {
203
+ const image1 = generateImageAttachment({
204
+ original_height: 300,
205
+ original_width: 600,
206
+ });
207
+ const image2 = generateImageAttachment({
208
+ original_height: 400,
209
+ original_width: 400,
210
+ });
211
+ const image3 = generateImageAttachment({
212
+ original_height: 400,
213
+ original_width: 400,
214
+ });
215
+ const image4 = generateImageAttachment({
216
+ original_height: 400,
217
+ original_width: 400,
218
+ });
219
+
220
+ const component = await getComponent([image1, image2, image3, image4]);
221
+ const { queryAllByTestId } = render(component);
222
+
223
+ await waitFor(() => {
224
+ expect(queryAllByTestId('gallery-column-0').length).toBe(1);
225
+ expect(queryAllByTestId('gallery-column-1').length).toBe(1);
226
+
227
+ expect(queryAllByTestId('gallery-column-0-item-0').length).toBe(1);
228
+ expect(queryAllByTestId('gallery-column-0-item-1').length).toBe(1);
229
+ expect(queryAllByTestId('gallery-column-1-item-0').length).toBe(1);
230
+ expect(queryAllByTestId('gallery-column-1-item-1').length).toBe(1);
231
+ });
232
+ });
233
+ });
@@ -0,0 +1,131 @@
1
+ import { PixelRatio } from 'react-native';
2
+
3
+ import { generateImageAttachment } from '../../../mock-builders/generator/attachment';
4
+ import { buildGallery } from '../utils/buildGallery/buildGallery';
5
+
6
+ describe('buildGallery', () => {
7
+ const defaultSizeConfig = {
8
+ gridHeight: 100,
9
+ gridWidth: 200,
10
+ maxHeight: 300,
11
+ maxWidth: 350,
12
+ minHeight: 10,
13
+ minWidth: 20,
14
+ };
15
+
16
+ it('gallery size should not exceed max sizes provided by size config', () => {
17
+ const imageSizeTestCases = [
18
+ { original_height: 1000, original_width: 2000 },
19
+ { original_height: 100, original_width: 200 },
20
+ { original_height: 10, original_width: 20 },
21
+ { original_height: 200, original_width: 300 },
22
+ ];
23
+
24
+ imageSizeTestCases.forEach((size) => {
25
+ const attachments = [];
26
+ for (let numOfImages = 0; numOfImages < 4; numOfImages++) {
27
+ const a1 = generateImageAttachment({
28
+ ...size,
29
+ });
30
+
31
+ attachments.push(a1);
32
+
33
+ const { height, thumbnailGrid, width } = buildGallery({
34
+ images: attachments,
35
+ sizeConfig: defaultSizeConfig,
36
+ });
37
+
38
+ expect(height).toBeLessThanOrEqual(defaultSizeConfig.maxHeight);
39
+ expect(height).toBeGreaterThanOrEqual(defaultSizeConfig.minHeight);
40
+
41
+ expect(width).toBeLessThanOrEqual(defaultSizeConfig.maxWidth);
42
+ expect(width).toBeGreaterThanOrEqual(defaultSizeConfig.minWidth);
43
+
44
+ expect(thumbnailGrid[0][0].height).toBeLessThanOrEqual(height);
45
+ expect(thumbnailGrid[0][0].width).toBeLessThanOrEqual(width);
46
+ }
47
+ });
48
+ });
49
+
50
+ it('aspect ratio of gallery container should be same as that of original image', () => {
51
+ const sizeConfig = {
52
+ ...defaultSizeConfig,
53
+ maxHeight: 10000,
54
+ maxWidth: 10000,
55
+ minHeight: 0,
56
+ minWidth: 0,
57
+ };
58
+
59
+ const imageSizeTestCases = [
60
+ { original_height: 1000, original_width: 2000 },
61
+ { original_height: 100, original_width: 200 },
62
+ { original_height: 10, original_width: 20 },
63
+ { original_height: 200, original_width: 300 },
64
+ ];
65
+
66
+ imageSizeTestCases.forEach((size) => {
67
+ const a1 = generateImageAttachment({
68
+ ...size,
69
+ });
70
+
71
+ const { height, width } = buildGallery({
72
+ images: [a1],
73
+ sizeConfig,
74
+ });
75
+
76
+ const originalAspectRatio = size.original_width / size.original_height;
77
+ const resultingAspectRatio = width / height;
78
+ expect(originalAspectRatio).toBe(resultingAspectRatio);
79
+ });
80
+ });
81
+
82
+ it('gallery size should default to gridHeight and gridWidth if original image size is unavailable', () => {
83
+ const attachments = [];
84
+ for (let numOfImages = 0; numOfImages < 4; numOfImages++) {
85
+ // During each iteration, size of attachments goes up.
86
+ attachments.push(generateImageAttachment());
87
+ const { height, width } = buildGallery({
88
+ images: attachments,
89
+ sizeConfig: defaultSizeConfig,
90
+ });
91
+
92
+ expect(height).toBe(defaultSizeConfig.gridHeight);
93
+ expect(width).toBe(defaultSizeConfig.gridWidth);
94
+ }
95
+ });
96
+
97
+ it('thumbnail size should be smaller than the limits set by sizeConfig', () => {
98
+ const bigImage = generateImageAttachment({
99
+ image_url:
100
+ 'https://stream-io.cdn.com/23kn4k2j3n4k2n3k4n23?sig=34k23n4k23nk423&h=*&w=*&resize=*',
101
+ original_height: 1200,
102
+ original_width: 900,
103
+ });
104
+
105
+ const { thumbnailGrid: tg1 } = buildGallery({
106
+ images: [bigImage],
107
+ sizeConfig: defaultSizeConfig,
108
+ });
109
+ const t1 = tg1[0][0];
110
+ expect(t1.url.includes(`h=${PixelRatio.getPixelSizeForLayoutSize(t1.height)}`)).toBe(true);
111
+ expect(t1.url.includes(`&w=${PixelRatio.getPixelSizeForLayoutSize(t1.width)}`)).toBe(true);
112
+ expect(t1.url.includes(`&resize=clip`)).toBe(true);
113
+
114
+ const smallImage = generateImageAttachment({
115
+ image_url:
116
+ 'https://stream-io.cdn.com/23kn4k2j3n4k2n3k4n23?sig=34k23n4k23nk423&h=*&w=*&resize=*',
117
+ original_height: 30,
118
+ original_width: 20,
119
+ });
120
+
121
+ const { thumbnailGrid: tg2 } = buildGallery({
122
+ images: [smallImage],
123
+ sizeConfig: defaultSizeConfig,
124
+ });
125
+
126
+ const t2 = tg2[0][0];
127
+ expect(t2.url.includes(`h=*`)).toBe(true);
128
+ expect(t2.url.includes(`&w=*`)).toBe(true);
129
+ expect(t2.url.includes(`&resize=*`)).toBe(true);
130
+ });
131
+ });
@@ -0,0 +1,75 @@
1
+ import type { Attachment } from 'stream-chat';
2
+
3
+ import { buildGalleryOfSingleImage } from './buildGalleryOfSingleImage';
4
+ import { buildGalleryOfThreeImages } from './buildGalleryOfThreeImages';
5
+ import { buildGalleryOfTwoImages } from './buildGalleryOfTwoImages';
6
+
7
+ import { buildThumbnailGrid } from './buildThumbnailGrid';
8
+
9
+ import type { GallerySizeAndThumbnailGrid, GallerySizeConfig } from './types';
10
+
11
+ import type { DefaultAttachmentType, UnknownType } from '../../../../types/types';
12
+
13
+ /**
14
+ * Builds and returns a gallery of optimized images to be rendered on UI.
15
+ * This function take a object parameter with following properties:
16
+ *
17
+ * @param {Attachment[]} images - Array of image attachments
18
+ * @param {GallerySizeConfig} sizeConfig - Theme config for the gallery
19
+ *
20
+ * The returned object contains following properties:
21
+ *
22
+ * - height {number[]} - Height of the gallery
23
+ * - width {number[]} - Width of the gallery
24
+ * - thumbnailGrid {number[][]} - Grid of thumbnail images
25
+ * - invertedDirections {boolean} - Whether to invert the direction of the grid. By default grid is rendered with column as primary direction and row as secondary direction.
26
+ *
27
+ * @return {GallerySizeAndThumbnailGrid}
28
+ */
29
+ export function buildGallery<At extends UnknownType = DefaultAttachmentType>({
30
+ images,
31
+ sizeConfig,
32
+ }: {
33
+ images: Attachment<At>[];
34
+ sizeConfig: GallerySizeConfig;
35
+ }): GallerySizeAndThumbnailGrid {
36
+ if (images.length === 1) {
37
+ return buildGalleryOfSingleImage({
38
+ image: images[0],
39
+ sizeConfig,
40
+ });
41
+ }
42
+
43
+ if (images.length === 2) {
44
+ return buildGalleryOfTwoImages({
45
+ images,
46
+ sizeConfig,
47
+ });
48
+ }
49
+
50
+ if (images.length === 3) {
51
+ return buildGalleryOfThreeImages({
52
+ images,
53
+ sizeConfig,
54
+ });
55
+ }
56
+
57
+ /**
58
+ * -----------
59
+ * | | |
60
+ * | | |
61
+ * -----------
62
+ * | | |
63
+ * | | |
64
+ * -----------
65
+ */
66
+ return buildThumbnailGrid({
67
+ grid: [
68
+ [1, 1],
69
+ [1, 1],
70
+ ],
71
+ images: images.slice(0, 4),
72
+ invertedDirections: false,
73
+ sizeConfig,
74
+ });
75
+ }
@@ -0,0 +1,95 @@
1
+ import type { Attachment } from 'stream-chat';
2
+
3
+ import { buildThumbnail } from './buildThumbnail';
4
+
5
+ import type { GallerySizeAndThumbnailGrid, GallerySizeConfig } from './types';
6
+
7
+ import type { DefaultAttachmentType } from '../../../../types/types';
8
+ import { getAspectRatio } from '../getAspectRatio';
9
+
10
+ /**
11
+ * Bound a number to a range.
12
+ * @param number The number to bound.
13
+ * @param min The minimum value.
14
+ * @param max The maximum value.
15
+ *
16
+ * @returns The bounded number.
17
+ */
18
+ function clamp(number: number, min: number, max: number) {
19
+ return Math.min(Math.max(number, min), max);
20
+ }
21
+
22
+ function getContainerSize<At extends DefaultAttachmentType = DefaultAttachmentType>({
23
+ image,
24
+ sizeConfig,
25
+ }: {
26
+ image: Attachment<At>;
27
+ sizeConfig: GallerySizeConfig;
28
+ }) {
29
+ const { original_height: height, original_width: width } = image;
30
+ const { gridHeight, gridWidth, maxHeight, maxWidth, minHeight, minWidth } = sizeConfig;
31
+
32
+ if (!height || !width) {
33
+ return { height: gridHeight, width: gridWidth };
34
+ }
35
+
36
+ const aspectRatio = getAspectRatio(image);
37
+
38
+ if (aspectRatio <= 1) {
39
+ const containerHeight = clamp(height, minHeight, maxHeight);
40
+ const containerWidth = clamp(containerHeight * aspectRatio, minWidth, maxWidth);
41
+
42
+ if (containerWidth === maxWidth) {
43
+ return {
44
+ height: clamp(containerWidth / aspectRatio, minHeight, maxHeight),
45
+ width: containerWidth,
46
+ };
47
+ }
48
+ return {
49
+ height: containerHeight,
50
+ width: containerWidth,
51
+ };
52
+ }
53
+
54
+ const containerWidth = clamp(width, minWidth, maxWidth);
55
+ const containerHeight = clamp(containerWidth / aspectRatio, minHeight, maxHeight);
56
+
57
+ if (containerHeight === maxHeight) {
58
+ return {
59
+ height: containerHeight,
60
+ width: clamp(containerHeight * aspectRatio, minHeight, maxHeight),
61
+ };
62
+ }
63
+
64
+ return {
65
+ height: containerHeight,
66
+ width: containerWidth,
67
+ };
68
+ }
69
+
70
+ export function buildGalleryOfSingleImage<
71
+ At extends DefaultAttachmentType = DefaultAttachmentType,
72
+ >({
73
+ image,
74
+ sizeConfig,
75
+ }: {
76
+ image: Attachment<At>;
77
+ sizeConfig: GallerySizeConfig;
78
+ }): GallerySizeAndThumbnailGrid {
79
+ const container = getContainerSize({
80
+ image,
81
+ sizeConfig,
82
+ });
83
+
84
+ const thumbnail = buildThumbnail({
85
+ image,
86
+ ...container,
87
+ });
88
+
89
+ const column = [thumbnail];
90
+
91
+ return {
92
+ ...container,
93
+ thumbnailGrid: [column],
94
+ };
95
+ }
@@ -0,0 +1,99 @@
1
+ import type { Attachment } from 'stream-chat';
2
+
3
+ import { buildThumbnailGrid } from './buildThumbnailGrid';
4
+
5
+ import type { GallerySizeAndThumbnailGrid, GallerySizeConfig } from './types';
6
+
7
+ import type { DefaultAttachmentType } from '../../../../types/types';
8
+ import { getAspectRatio } from '../getAspectRatio';
9
+
10
+ /** function to move item to the front of the array */
11
+ function moveToFront<T>(array: T[], item: T): T[] {
12
+ const index = array.indexOf(item);
13
+ if (index === -1) {
14
+ return array;
15
+ }
16
+ const newArray = [...array];
17
+ newArray.splice(index, 1);
18
+ newArray.unshift(item);
19
+ return newArray;
20
+ }
21
+
22
+ export function buildGalleryOfThreeImages<
23
+ At extends DefaultAttachmentType = DefaultAttachmentType,
24
+ >({
25
+ images,
26
+ sizeConfig,
27
+ }: {
28
+ images: Attachment<At>[];
29
+ sizeConfig: GallerySizeConfig;
30
+ }): GallerySizeAndThumbnailGrid {
31
+ // Find the most ladscape and most portrait image.
32
+ const { landscapeImage, landscapeImageAspectRatio, portraitImage, portraitImageAspectRatio } =
33
+ images.reduce(
34
+ (acc, image) => {
35
+ const aspectRatio = getAspectRatio(image);
36
+ const o = { ...acc };
37
+
38
+ // Following nested if conditions can be combined, but have been kept
39
+ // separate intentionally for the sake of readability.
40
+ if (aspectRatio > 1) {
41
+ if (!o.landscapeImage || aspectRatio > o.landscapeImageAspectRatio) {
42
+ o.landscapeImage = image;
43
+ o.landscapeImageAspectRatio = aspectRatio;
44
+ }
45
+ } else {
46
+ if (!o.portraitImage || aspectRatio < o.portraitImageAspectRatio) {
47
+ o.portraitImage = image;
48
+ o.portraitImageAspectRatio = aspectRatio;
49
+ }
50
+ }
51
+
52
+ return o;
53
+ },
54
+ {
55
+ landscapeImageAspectRatio: 1,
56
+ portraitImageAspectRatio: 1,
57
+ } as {
58
+ landscapeImage: Attachment<At>;
59
+ landscapeImageAspectRatio: number;
60
+ portraitImage: Attachment<At>;
61
+ portraitImageAspectRatio: number;
62
+ },
63
+ );
64
+
65
+ // Check weather landscape image gets preference or portrait, by comparing aspect ratio.
66
+ if (landscapeImageAspectRatio > 1 / portraitImageAspectRatio) {
67
+ /**
68
+ * -----------
69
+ * | |
70
+ * | |
71
+ * |---------|
72
+ * | | |
73
+ * | | |
74
+ * -----------
75
+ */
76
+ return buildThumbnailGrid({
77
+ grid: [[1], [1, 1]],
78
+ images: landscapeImage ? moveToFront(images, landscapeImage) : images,
79
+ invertedDirections: true,
80
+ sizeConfig,
81
+ });
82
+ } else {
83
+ /**
84
+ * -----------
85
+ * | | |
86
+ * | | |
87
+ * | |----|
88
+ * | | |
89
+ * | | |
90
+ * -----------
91
+ */
92
+ return buildThumbnailGrid({
93
+ grid: [[1], [1, 1]],
94
+ images: portraitImage ? moveToFront(images, portraitImage) : images,
95
+ invertedDirections: false,
96
+ sizeConfig,
97
+ });
98
+ }
99
+ }
@@ -0,0 +1,64 @@
1
+ import type { Attachment } from 'stream-chat';
2
+
3
+ import { buildThumbnailGrid } from './buildThumbnailGrid';
4
+
5
+ import type { GallerySizeAndThumbnailGrid, GallerySizeConfig } from './types';
6
+
7
+ import type { DefaultAttachmentType, UnknownType } from '../../../../types/types';
8
+ import { getAspectRatio } from '../getAspectRatio';
9
+
10
+ export function buildGalleryOfTwoImages<At extends UnknownType = DefaultAttachmentType>({
11
+ images,
12
+ sizeConfig,
13
+ }: {
14
+ images: Attachment<At>[];
15
+ sizeConfig: GallerySizeConfig;
16
+ }): GallerySizeAndThumbnailGrid {
17
+ const aspectRatio1 = getAspectRatio(images[0]);
18
+ const aspectRatio2 = getAspectRatio(images[1]);
19
+
20
+ // check if one image is landscape and other is portrait or vice versa
21
+ const isLandscape1 = aspectRatio1 > 1;
22
+ const isLandscape2 = aspectRatio2 > 1;
23
+
24
+ // Both the images are landscape
25
+ if (isLandscape1 && isLandscape2) {
26
+ /**
27
+ * ----------
28
+ * | |
29
+ * ----------
30
+ * | |
31
+ * ----------
32
+ */
33
+ return buildThumbnailGrid({
34
+ grid: [[1], [1]],
35
+ images,
36
+ invertedDirections: true,
37
+ sizeConfig,
38
+ });
39
+ }
40
+
41
+ if (!isLandscape1 && !isLandscape2) {
42
+ /**
43
+ * -----------
44
+ * | | |
45
+ * | | |
46
+ * | | |
47
+ * | | |
48
+ * -----------
49
+ */
50
+ return buildThumbnailGrid({
51
+ grid: [[1, 1]],
52
+ images,
53
+ invertedDirections: true,
54
+ sizeConfig,
55
+ });
56
+ }
57
+
58
+ return buildThumbnailGrid({
59
+ grid: [[2, 1]],
60
+ images: isLandscape1 ? images : images.reverse(),
61
+ invertedDirections: true,
62
+ sizeConfig,
63
+ });
64
+ }