stream-chat-react-native-core 4.0.0-beta.3 → 4.0.0-beta.7

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 (830) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/components/Attachment/Attachment.js +10 -10
  3. package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
  4. package/lib/commonjs/components/Attachment/AttachmentActions.js +4 -4
  5. package/lib/commonjs/components/Attachment/AttachmentActions.js.map +1 -1
  6. package/lib/commonjs/components/Attachment/Card.js +15 -15
  7. package/lib/commonjs/components/Attachment/Card.js.map +1 -1
  8. package/lib/commonjs/components/Attachment/FileAttachment.js +8 -8
  9. package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
  10. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +4 -4
  11. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js.map +1 -1
  12. package/lib/commonjs/components/Attachment/Gallery.js +8 -8
  13. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  14. package/lib/commonjs/components/Attachment/Giphy.js +112 -148
  15. package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
  16. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -1
  17. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js.map +1 -1
  18. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js.map +1 -1
  19. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js.map +1 -1
  20. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -1
  21. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnailGrid.js.map +1 -1
  22. package/lib/commonjs/components/Attachment/utils/getAspectRatio.js.map +1 -1
  23. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +2 -2
  24. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  25. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js +16 -16
  26. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js.map +1 -1
  27. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +7 -7
  28. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -1
  29. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +13 -13
  30. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -1
  31. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +10 -10
  32. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  33. package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
  34. package/lib/commonjs/components/Channel/Channel.js +13 -13
  35. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  36. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  37. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  38. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  39. package/lib/commonjs/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -1
  40. package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  41. package/lib/commonjs/components/Channel/hooks/useCreateThreadContext.js.map +1 -1
  42. package/lib/commonjs/components/Channel/hooks/useCreateTypingContext.js.map +1 -1
  43. package/lib/commonjs/components/ChannelList/ChannelList.js +2 -2
  44. package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
  45. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js +14 -14
  46. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js.map +1 -1
  47. package/lib/commonjs/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js.map +1 -1
  48. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelDeleted.js.map +1 -1
  49. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelHidden.js.map +1 -1
  50. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelTruncated.js.map +1 -1
  51. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelUpdated.js.map +1 -1
  52. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelVisible.js.map +1 -1
  53. package/lib/commonjs/components/ChannelList/hooks/listeners/useConnectionRecovered.js.map +1 -1
  54. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
  55. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  56. package/lib/commonjs/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js.map +1 -1
  57. package/lib/commonjs/components/ChannelList/hooks/listeners/useUserPresence.js.map +1 -1
  58. package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
  59. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  60. package/lib/commonjs/components/ChannelList/utils.js.map +1 -1
  61. package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js +2 -2
  62. package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js.map +1 -1
  63. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +2 -2
  64. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
  65. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js +4 -4
  66. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  67. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js +12 -12
  68. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  69. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js +1 -1
  70. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js.map +1 -1
  71. package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js +4 -4
  72. package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js.map +1 -1
  73. package/lib/commonjs/components/ChannelPreview/ChannelPreviewTitle.js +1 -1
  74. package/lib/commonjs/components/ChannelPreview/ChannelPreviewTitle.js.map +1 -1
  75. package/lib/commonjs/components/ChannelPreview/ChannelPreviewUnreadCount.js +2 -2
  76. package/lib/commonjs/components/ChannelPreview/ChannelPreviewUnreadCount.js.map +1 -1
  77. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js.map +1 -1
  78. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
  79. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.js.map +1 -1
  80. package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
  81. package/lib/commonjs/components/Chat/Chat.js +8 -4
  82. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  83. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  84. package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
  85. package/lib/commonjs/components/Chat/hooks/useMutedUsers.js.map +1 -1
  86. package/lib/commonjs/components/ImageGallery/ImageGallery.js +19 -19
  87. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  88. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +11 -11
  89. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  90. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +28 -11
  91. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  92. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +5 -5
  93. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
  94. package/lib/commonjs/components/Message/Message.js +6 -6
  95. package/lib/commonjs/components/Message/Message.js.map +1 -1
  96. package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js +4 -4
  97. package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
  98. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +18 -18
  99. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  100. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js +5 -5
  101. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
  102. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +20 -16
  103. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  104. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js +4 -4
  105. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -1
  106. package/lib/commonjs/components/Message/MessageSimple/MessageReplies.js +10 -10
  107. package/lib/commonjs/components/Message/MessageSimple/MessageReplies.js.map +1 -1
  108. package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js +3 -3
  109. package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js.map +1 -1
  110. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +6 -6
  111. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  112. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js +9 -9
  113. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js.map +1 -1
  114. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js +3 -3
  115. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  116. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +51 -51
  117. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -1
  118. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +145 -64
  119. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  120. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js +240 -0
  121. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js.map +1 -0
  122. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  123. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  124. package/lib/commonjs/components/Message/hooks/useMessageActions.js +11 -11
  125. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
  126. package/lib/commonjs/components/Message/utils/messageActions.js.map +1 -1
  127. package/lib/commonjs/components/Message/utils/removeReservedFields.js.map +1 -1
  128. package/lib/commonjs/components/MessageInput/AttachButton.js +3 -3
  129. package/lib/commonjs/components/MessageInput/AttachButton.js.map +1 -1
  130. package/lib/commonjs/components/MessageInput/CommandsButton.js +3 -3
  131. package/lib/commonjs/components/MessageInput/CommandsButton.js.map +1 -1
  132. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +11 -11
  133. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  134. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +7 -7
  135. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  136. package/lib/commonjs/components/MessageInput/InputButtons.js +6 -6
  137. package/lib/commonjs/components/MessageInput/InputButtons.js.map +1 -1
  138. package/lib/commonjs/components/MessageInput/MessageInput.js +34 -34
  139. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  140. package/lib/commonjs/components/MessageInput/MoreOptionsButton.js +3 -3
  141. package/lib/commonjs/components/MessageInput/MoreOptionsButton.js.map +1 -1
  142. package/lib/commonjs/components/MessageInput/SendButton.js +5 -5
  143. package/lib/commonjs/components/MessageInput/SendButton.js.map +1 -1
  144. package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js +7 -7
  145. package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js.map +1 -1
  146. package/lib/commonjs/components/MessageInput/hooks/useCooldown.js.map +1 -1
  147. package/lib/commonjs/components/MessageList/InlineLoadingMoreIndicator.js +3 -3
  148. package/lib/commonjs/components/MessageList/InlineLoadingMoreIndicator.js.map +1 -1
  149. package/lib/commonjs/components/MessageList/InlineLoadingMoreRecentIndicator.js +3 -3
  150. package/lib/commonjs/components/MessageList/InlineLoadingMoreRecentIndicator.js.map +1 -1
  151. package/lib/commonjs/components/MessageList/InlineLoadingMoreThreadIndicator.js +3 -3
  152. package/lib/commonjs/components/MessageList/InlineLoadingMoreThreadIndicator.js.map +1 -1
  153. package/lib/commonjs/components/MessageList/MessageList.js +26 -26
  154. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  155. package/lib/commonjs/components/MessageList/MessageSystem.js +6 -6
  156. package/lib/commonjs/components/MessageList/MessageSystem.js.map +1 -1
  157. package/lib/commonjs/components/MessageList/TypingIndicator.js +3 -3
  158. package/lib/commonjs/components/MessageList/TypingIndicator.js.map +1 -1
  159. package/lib/commonjs/components/MessageList/TypingIndicatorContainer.js +2 -2
  160. package/lib/commonjs/components/MessageList/TypingIndicatorContainer.js.map +1 -1
  161. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  162. package/lib/commonjs/components/MessageList/hooks/useTypingString.js.map +1 -1
  163. package/lib/commonjs/components/MessageList/utils/filterTypingUsers.js.map +1 -1
  164. package/lib/commonjs/components/MessageList/utils/getDateSeparators.js.map +1 -1
  165. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js.map +1 -1
  166. package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  167. package/lib/commonjs/components/MessageList/utils/getReadStates.js.map +1 -1
  168. package/lib/commonjs/components/MessageOverlay/MessageActionList.js +3 -3
  169. package/lib/commonjs/components/MessageOverlay/MessageActionList.js.map +1 -1
  170. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js +6 -6
  171. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js.map +1 -1
  172. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +26 -25
  173. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
  174. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js +13 -13
  175. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js.map +1 -1
  176. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js +19 -19
  177. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js.map +1 -1
  178. package/lib/commonjs/components/Reply/Reply.js +8 -8
  179. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  180. package/lib/commonjs/components/Thread/Thread.js +4 -4
  181. package/lib/commonjs/components/Thread/Thread.js.map +1 -1
  182. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +12 -12
  183. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  184. package/lib/commonjs/components/docs/data.js +44 -44
  185. package/lib/commonjs/components/docs/data.js.map +1 -1
  186. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js +1 -1
  187. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  188. package/lib/commonjs/contexts/channelContext/ChannelContext.js +2 -2
  189. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  190. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js +2 -2
  191. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
  192. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js +3 -3
  193. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
  194. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js.map +1 -1
  195. package/lib/commonjs/contexts/chatContext/ChatContext.js +2 -2
  196. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  197. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js +2 -2
  198. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  199. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js +1 -1
  200. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js.map +1 -1
  201. package/lib/commonjs/contexts/messageContext/MessageContext.js +2 -2
  202. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  203. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +2 -2
  204. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  205. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  206. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  207. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js +2 -2
  208. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  209. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
  210. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  211. package/lib/commonjs/contexts/overlayContext/OverlayContext.js +1 -1
  212. package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
  213. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +12 -12
  214. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
  215. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +2 -2
  216. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  217. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +2 -2
  218. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  219. package/lib/commonjs/contexts/themeContext/utils/theme.js +7 -6
  220. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  221. package/lib/commonjs/contexts/threadContext/ThreadContext.js +2 -2
  222. package/lib/commonjs/contexts/threadContext/ThreadContext.js.map +1 -1
  223. package/lib/commonjs/contexts/translationContext/TranslationContext.js +2 -2
  224. package/lib/commonjs/contexts/translationContext/TranslationContext.js.map +1 -1
  225. package/lib/commonjs/contexts/typingContext/TypingContext.js +2 -2
  226. package/lib/commonjs/contexts/typingContext/TypingContext.js.map +1 -1
  227. package/lib/commonjs/icons/UserAdmin.js +62 -0
  228. package/lib/commonjs/icons/UserAdmin.js.map +1 -0
  229. package/lib/commonjs/icons/index.js +0 -26
  230. package/lib/commonjs/icons/index.js.map +1 -1
  231. package/lib/commonjs/init.js +13 -0
  232. package/lib/commonjs/init.js.map +1 -0
  233. package/lib/commonjs/utils/Streami18n.js.map +1 -1
  234. package/lib/commonjs/utils/getResizedImageUrl.js +8 -5
  235. package/lib/commonjs/utils/getResizedImageUrl.js.map +1 -1
  236. package/lib/commonjs/utils/utils.js.map +1 -1
  237. package/lib/commonjs/version.json +1 -1
  238. package/lib/module/components/Attachment/Attachment.js +10 -10
  239. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  240. package/lib/module/components/Attachment/AttachmentActions.js +4 -4
  241. package/lib/module/components/Attachment/AttachmentActions.js.map +1 -1
  242. package/lib/module/components/Attachment/Card.js +15 -15
  243. package/lib/module/components/Attachment/Card.js.map +1 -1
  244. package/lib/module/components/Attachment/FileAttachment.js +8 -8
  245. package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
  246. package/lib/module/components/Attachment/FileAttachmentGroup.js +4 -4
  247. package/lib/module/components/Attachment/FileAttachmentGroup.js.map +1 -1
  248. package/lib/module/components/Attachment/Gallery.js +8 -8
  249. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  250. package/lib/module/components/Attachment/Giphy.js +112 -148
  251. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  252. package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -1
  253. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js.map +1 -1
  254. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js.map +1 -1
  255. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js.map +1 -1
  256. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -1
  257. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnailGrid.js.map +1 -1
  258. package/lib/module/components/Attachment/utils/getAspectRatio.js.map +1 -1
  259. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +2 -2
  260. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  261. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js +16 -16
  262. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js.map +1 -1
  263. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +7 -7
  264. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -1
  265. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +13 -13
  266. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -1
  267. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +10 -10
  268. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  269. package/lib/module/components/Avatar/Avatar.js.map +1 -1
  270. package/lib/module/components/Channel/Channel.js +13 -13
  271. package/lib/module/components/Channel/Channel.js.map +1 -1
  272. package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  273. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  274. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  275. package/lib/module/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -1
  276. package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  277. package/lib/module/components/Channel/hooks/useCreateThreadContext.js.map +1 -1
  278. package/lib/module/components/Channel/hooks/useCreateTypingContext.js.map +1 -1
  279. package/lib/module/components/ChannelList/ChannelList.js +2 -2
  280. package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
  281. package/lib/module/components/ChannelList/ChannelListMessenger.js +14 -14
  282. package/lib/module/components/ChannelList/ChannelListMessenger.js.map +1 -1
  283. package/lib/module/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js.map +1 -1
  284. package/lib/module/components/ChannelList/hooks/listeners/useChannelDeleted.js.map +1 -1
  285. package/lib/module/components/ChannelList/hooks/listeners/useChannelHidden.js.map +1 -1
  286. package/lib/module/components/ChannelList/hooks/listeners/useChannelTruncated.js.map +1 -1
  287. package/lib/module/components/ChannelList/hooks/listeners/useChannelUpdated.js.map +1 -1
  288. package/lib/module/components/ChannelList/hooks/listeners/useChannelVisible.js.map +1 -1
  289. package/lib/module/components/ChannelList/hooks/listeners/useConnectionRecovered.js.map +1 -1
  290. package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
  291. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  292. package/lib/module/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js.map +1 -1
  293. package/lib/module/components/ChannelList/hooks/listeners/useUserPresence.js.map +1 -1
  294. package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
  295. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  296. package/lib/module/components/ChannelList/utils.js.map +1 -1
  297. package/lib/module/components/ChannelPreview/ChannelAvatar.js +2 -2
  298. package/lib/module/components/ChannelPreview/ChannelAvatar.js.map +1 -1
  299. package/lib/module/components/ChannelPreview/ChannelPreview.js +2 -2
  300. package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
  301. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js +4 -4
  302. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  303. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +12 -12
  304. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  305. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js +1 -1
  306. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js.map +1 -1
  307. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js +4 -4
  308. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js.map +1 -1
  309. package/lib/module/components/ChannelPreview/ChannelPreviewTitle.js +1 -1
  310. package/lib/module/components/ChannelPreview/ChannelPreviewTitle.js.map +1 -1
  311. package/lib/module/components/ChannelPreview/ChannelPreviewUnreadCount.js +2 -2
  312. package/lib/module/components/ChannelPreview/ChannelPreviewUnreadCount.js.map +1 -1
  313. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js.map +1 -1
  314. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
  315. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.js.map +1 -1
  316. package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
  317. package/lib/module/components/Chat/Chat.js +8 -4
  318. package/lib/module/components/Chat/Chat.js.map +1 -1
  319. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  320. package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
  321. package/lib/module/components/Chat/hooks/useMutedUsers.js.map +1 -1
  322. package/lib/module/components/ImageGallery/ImageGallery.js +19 -19
  323. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  324. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +11 -11
  325. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  326. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +28 -11
  327. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  328. package/lib/module/components/ImageGallery/components/ImageGrid.js +5 -5
  329. package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
  330. package/lib/module/components/Message/Message.js +6 -6
  331. package/lib/module/components/Message/Message.js.map +1 -1
  332. package/lib/module/components/Message/MessageSimple/MessageAvatar.js +4 -4
  333. package/lib/module/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
  334. package/lib/module/components/Message/MessageSimple/MessageContent.js +18 -18
  335. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  336. package/lib/module/components/Message/MessageSimple/MessageDeleted.js +5 -5
  337. package/lib/module/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
  338. package/lib/module/components/Message/MessageSimple/MessageFooter.js +20 -16
  339. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  340. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js +4 -4
  341. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -1
  342. package/lib/module/components/Message/MessageSimple/MessageReplies.js +10 -10
  343. package/lib/module/components/Message/MessageSimple/MessageReplies.js.map +1 -1
  344. package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js +3 -3
  345. package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js.map +1 -1
  346. package/lib/module/components/Message/MessageSimple/MessageSimple.js +6 -6
  347. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  348. package/lib/module/components/Message/MessageSimple/MessageStatus.js +9 -9
  349. package/lib/module/components/Message/MessageSimple/MessageStatus.js.map +1 -1
  350. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +3 -3
  351. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  352. package/lib/module/components/Message/MessageSimple/ReactionList.js +51 -51
  353. package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
  354. package/lib/module/components/Message/MessageSimple/utils/renderText.js +145 -64
  355. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  356. package/lib/module/components/Message/MessageSimple/utils/renderText.test.js +240 -0
  357. package/lib/module/components/Message/MessageSimple/utils/renderText.test.js.map +1 -0
  358. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  359. package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  360. package/lib/module/components/Message/hooks/useMessageActions.js +11 -11
  361. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
  362. package/lib/module/components/Message/utils/messageActions.js.map +1 -1
  363. package/lib/module/components/Message/utils/removeReservedFields.js.map +1 -1
  364. package/lib/module/components/MessageInput/AttachButton.js +3 -3
  365. package/lib/module/components/MessageInput/AttachButton.js.map +1 -1
  366. package/lib/module/components/MessageInput/CommandsButton.js +3 -3
  367. package/lib/module/components/MessageInput/CommandsButton.js.map +1 -1
  368. package/lib/module/components/MessageInput/FileUploadPreview.js +11 -11
  369. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  370. package/lib/module/components/MessageInput/ImageUploadPreview.js +7 -7
  371. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  372. package/lib/module/components/MessageInput/InputButtons.js +6 -6
  373. package/lib/module/components/MessageInput/InputButtons.js.map +1 -1
  374. package/lib/module/components/MessageInput/MessageInput.js +34 -34
  375. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  376. package/lib/module/components/MessageInput/MoreOptionsButton.js +3 -3
  377. package/lib/module/components/MessageInput/MoreOptionsButton.js.map +1 -1
  378. package/lib/module/components/MessageInput/SendButton.js +5 -5
  379. package/lib/module/components/MessageInput/SendButton.js.map +1 -1
  380. package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js +7 -7
  381. package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js.map +1 -1
  382. package/lib/module/components/MessageInput/hooks/useCooldown.js.map +1 -1
  383. package/lib/module/components/MessageList/InlineLoadingMoreIndicator.js +3 -3
  384. package/lib/module/components/MessageList/InlineLoadingMoreIndicator.js.map +1 -1
  385. package/lib/module/components/MessageList/InlineLoadingMoreRecentIndicator.js +3 -3
  386. package/lib/module/components/MessageList/InlineLoadingMoreRecentIndicator.js.map +1 -1
  387. package/lib/module/components/MessageList/InlineLoadingMoreThreadIndicator.js +3 -3
  388. package/lib/module/components/MessageList/InlineLoadingMoreThreadIndicator.js.map +1 -1
  389. package/lib/module/components/MessageList/MessageList.js +26 -26
  390. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  391. package/lib/module/components/MessageList/MessageSystem.js +6 -6
  392. package/lib/module/components/MessageList/MessageSystem.js.map +1 -1
  393. package/lib/module/components/MessageList/TypingIndicator.js +3 -3
  394. package/lib/module/components/MessageList/TypingIndicator.js.map +1 -1
  395. package/lib/module/components/MessageList/TypingIndicatorContainer.js +2 -2
  396. package/lib/module/components/MessageList/TypingIndicatorContainer.js.map +1 -1
  397. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  398. package/lib/module/components/MessageList/hooks/useTypingString.js.map +1 -1
  399. package/lib/module/components/MessageList/utils/filterTypingUsers.js.map +1 -1
  400. package/lib/module/components/MessageList/utils/getDateSeparators.js.map +1 -1
  401. package/lib/module/components/MessageList/utils/getGroupStyles.js.map +1 -1
  402. package/lib/module/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  403. package/lib/module/components/MessageList/utils/getReadStates.js.map +1 -1
  404. package/lib/module/components/MessageOverlay/MessageActionList.js +3 -3
  405. package/lib/module/components/MessageOverlay/MessageActionList.js.map +1 -1
  406. package/lib/module/components/MessageOverlay/MessageActionListItem.js +6 -6
  407. package/lib/module/components/MessageOverlay/MessageActionListItem.js.map +1 -1
  408. package/lib/module/components/MessageOverlay/MessageOverlay.js +26 -25
  409. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  410. package/lib/module/components/MessageOverlay/OverlayReactionList.js +13 -13
  411. package/lib/module/components/MessageOverlay/OverlayReactionList.js.map +1 -1
  412. package/lib/module/components/MessageOverlay/OverlayReactions.js +19 -19
  413. package/lib/module/components/MessageOverlay/OverlayReactions.js.map +1 -1
  414. package/lib/module/components/Reply/Reply.js +8 -8
  415. package/lib/module/components/Reply/Reply.js.map +1 -1
  416. package/lib/module/components/Thread/Thread.js +4 -4
  417. package/lib/module/components/Thread/Thread.js.map +1 -1
  418. package/lib/module/components/Thread/components/ThreadFooterComponent.js +12 -12
  419. package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  420. package/lib/module/components/docs/data.js +44 -44
  421. package/lib/module/components/docs/data.js.map +1 -1
  422. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js +1 -1
  423. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  424. package/lib/module/contexts/channelContext/ChannelContext.js +2 -2
  425. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  426. package/lib/module/contexts/channelsContext/ChannelsContext.js +2 -2
  427. package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
  428. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js +3 -3
  429. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
  430. package/lib/module/contexts/channelsStateContext/useChannelState.js.map +1 -1
  431. package/lib/module/contexts/chatContext/ChatContext.js +2 -2
  432. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  433. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js +2 -2
  434. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  435. package/lib/module/contexts/keyboardContext/KeyboardContext.js +1 -1
  436. package/lib/module/contexts/keyboardContext/KeyboardContext.js.map +1 -1
  437. package/lib/module/contexts/messageContext/MessageContext.js +2 -2
  438. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  439. package/lib/module/contexts/messageInputContext/MessageInputContext.js +2 -2
  440. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  441. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  442. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  443. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js +2 -2
  444. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  445. package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
  446. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  447. package/lib/module/contexts/overlayContext/OverlayContext.js +1 -1
  448. package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
  449. package/lib/module/contexts/overlayContext/OverlayProvider.js +12 -12
  450. package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
  451. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +2 -2
  452. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  453. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +2 -2
  454. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  455. package/lib/module/contexts/themeContext/utils/theme.js +7 -6
  456. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  457. package/lib/module/contexts/threadContext/ThreadContext.js +2 -2
  458. package/lib/module/contexts/threadContext/ThreadContext.js.map +1 -1
  459. package/lib/module/contexts/translationContext/TranslationContext.js +2 -2
  460. package/lib/module/contexts/translationContext/TranslationContext.js.map +1 -1
  461. package/lib/module/contexts/typingContext/TypingContext.js +2 -2
  462. package/lib/module/contexts/typingContext/TypingContext.js.map +1 -1
  463. package/lib/module/icons/UserAdmin.js +62 -0
  464. package/lib/module/icons/UserAdmin.js.map +1 -0
  465. package/lib/module/icons/index.js +0 -26
  466. package/lib/module/icons/index.js.map +1 -1
  467. package/lib/module/init.js +13 -0
  468. package/lib/module/init.js.map +1 -0
  469. package/lib/module/utils/Streami18n.js.map +1 -1
  470. package/lib/module/utils/getResizedImageUrl.js +8 -5
  471. package/lib/module/utils/getResizedImageUrl.js.map +1 -1
  472. package/lib/module/utils/utils.js.map +1 -1
  473. package/lib/module/version.json +1 -1
  474. package/lib/typescript/components/Attachment/Attachment.d.ts +5 -5
  475. package/lib/typescript/components/Attachment/AttachmentActions.d.ts +4 -4
  476. package/lib/typescript/components/Attachment/Card.d.ts +4 -4
  477. package/lib/typescript/components/Attachment/FileAttachment.d.ts +5 -5
  478. package/lib/typescript/components/Attachment/FileAttachmentGroup.d.ts +4 -4
  479. package/lib/typescript/components/Attachment/Gallery.d.ts +5 -5
  480. package/lib/typescript/components/Attachment/Giphy.d.ts +6 -6
  481. package/lib/typescript/components/Attachment/utils/buildGallery/buildGallery.d.ts +3 -3
  482. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.d.ts +3 -3
  483. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.d.ts +3 -3
  484. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.d.ts +3 -3
  485. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnail.d.ts +3 -3
  486. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnailGrid.d.ts +3 -3
  487. package/lib/typescript/components/Attachment/utils/getAspectRatio.d.ts +2 -2
  488. package/lib/typescript/components/AutoCompleteInput/AutoCompleteInput.d.ts +4 -4
  489. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.d.ts +3 -2
  490. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionHeader.d.ts +4 -4
  491. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionItem.d.ts +5 -5
  492. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts +9 -9
  493. package/lib/typescript/components/Avatar/Avatar.d.ts +1 -1
  494. package/lib/typescript/components/Channel/Channel.d.ts +7 -7
  495. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +2 -2
  496. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +3 -3
  497. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +3 -3
  498. package/lib/typescript/components/Channel/hooks/useCreateOwnCapabilitiesContext.d.ts +3 -3
  499. package/lib/typescript/components/Channel/hooks/useCreatePaginatedMessageListContext.d.ts +3 -3
  500. package/lib/typescript/components/Channel/hooks/useCreateThreadContext.d.ts +2 -2
  501. package/lib/typescript/components/Channel/hooks/useCreateTypingContext.d.ts +2 -2
  502. package/lib/typescript/components/ChannelList/ChannelList.d.ts +14 -14
  503. package/lib/typescript/components/ChannelList/ChannelListMessenger.d.ts +4 -4
  504. package/lib/typescript/components/ChannelList/hooks/listeners/useAddedToChannelNotification.d.ts +5 -5
  505. package/lib/typescript/components/ChannelList/hooks/listeners/useChannelDeleted.d.ts +5 -5
  506. package/lib/typescript/components/ChannelList/hooks/listeners/useChannelHidden.d.ts +5 -5
  507. package/lib/typescript/components/ChannelList/hooks/listeners/useChannelTruncated.d.ts +5 -5
  508. package/lib/typescript/components/ChannelList/hooks/listeners/useChannelUpdated.d.ts +5 -5
  509. package/lib/typescript/components/ChannelList/hooks/listeners/useChannelVisible.d.ts +5 -5
  510. package/lib/typescript/components/ChannelList/hooks/listeners/useConnectionRecovered.d.ts +2 -2
  511. package/lib/typescript/components/ChannelList/hooks/listeners/useNewMessage.d.ts +4 -4
  512. package/lib/typescript/components/ChannelList/hooks/listeners/useNewMessageNotification.d.ts +5 -5
  513. package/lib/typescript/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.d.ts +5 -5
  514. package/lib/typescript/components/ChannelList/hooks/listeners/useUserPresence.d.ts +4 -4
  515. package/lib/typescript/components/ChannelList/hooks/useCreateChannelsContext.d.ts +2 -2
  516. package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts +7 -7
  517. package/lib/typescript/components/ChannelList/utils.d.ts +7 -7
  518. package/lib/typescript/components/ChannelPreview/ChannelAvatar.d.ts +3 -3
  519. package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts +5 -5
  520. package/lib/typescript/components/ChannelPreview/ChannelPreviewMessage.d.ts +4 -5
  521. package/lib/typescript/components/ChannelPreview/ChannelPreviewMessenger.d.ts +5 -5
  522. package/lib/typescript/components/ChannelPreview/ChannelPreviewMutedStatus.d.ts +3 -3
  523. package/lib/typescript/components/ChannelPreview/ChannelPreviewStatus.d.ts +3 -3
  524. package/lib/typescript/components/ChannelPreview/ChannelPreviewTitle.d.ts +3 -3
  525. package/lib/typescript/components/ChannelPreview/ChannelPreviewUnreadCount.d.ts +3 -3
  526. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.d.ts +3 -3
  527. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewDisplayName.d.ts +4 -4
  528. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.d.ts +2 -2
  529. package/lib/typescript/components/ChannelPreview/hooks/useLatestMessagePreview.d.ts +5 -5
  530. package/lib/typescript/components/Chat/Chat.d.ts +3 -3
  531. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +2 -2
  532. package/lib/typescript/components/Chat/hooks/useIsOnline.d.ts +2 -2
  533. package/lib/typescript/components/Chat/hooks/useMutedUsers.d.ts +2 -2
  534. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts +9 -9
  535. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +10 -10
  536. package/lib/typescript/components/ImageGallery/components/ImageGalleryHeader.d.ts +10 -10
  537. package/lib/typescript/components/ImageGallery/components/ImageGrid.d.ts +10 -10
  538. package/lib/typescript/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.d.ts +1 -0
  539. package/lib/typescript/components/Message/Message.d.ts +11 -11
  540. package/lib/typescript/components/Message/MessageSimple/MessageAvatar.d.ts +4 -4
  541. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +4 -4
  542. package/lib/typescript/components/Message/MessageSimple/MessageDeleted.d.ts +5 -5
  543. package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts +6 -6
  544. package/lib/typescript/components/Message/MessageSimple/MessagePinnedHeader.d.ts +4 -4
  545. package/lib/typescript/components/Message/MessageSimple/MessageReplies.d.ts +4 -4
  546. package/lib/typescript/components/Message/MessageSimple/MessageRepliesAvatars.d.ts +3 -3
  547. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts +4 -4
  548. package/lib/typescript/components/Message/MessageSimple/MessageStatus.d.ts +4 -4
  549. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts +6 -6
  550. package/lib/typescript/components/Message/MessageSimple/ReactionList.d.ts +4 -4
  551. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +19 -5
  552. package/lib/typescript/components/Message/MessageSimple/utils/renderText.test.d.ts +1 -0
  553. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +2 -2
  554. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +2 -2
  555. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +3 -3
  556. package/lib/typescript/components/Message/utils/messageActions.d.ts +5 -5
  557. package/lib/typescript/components/Message/utils/removeReservedFields.d.ts +2 -2
  558. package/lib/typescript/components/MessageInput/AttachButton.d.ts +4 -4
  559. package/lib/typescript/components/MessageInput/CommandsButton.d.ts +4 -4
  560. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +4 -4
  561. package/lib/typescript/components/MessageInput/ImageUploadPreview.d.ts +4 -4
  562. package/lib/typescript/components/MessageInput/InputButtons.d.ts +5 -5
  563. package/lib/typescript/components/MessageInput/MessageInput.d.ts +4 -4
  564. package/lib/typescript/components/MessageInput/MoreOptionsButton.d.ts +4 -4
  565. package/lib/typescript/components/MessageInput/SendButton.d.ts +4 -4
  566. package/lib/typescript/components/MessageInput/ShowThreadMessageInChannelButton.d.ts +2 -2
  567. package/lib/typescript/components/MessageInput/hooks/useCooldown.d.ts +2 -2
  568. package/lib/typescript/components/MessageList/InlineLoadingMoreIndicator.d.ts +2 -2
  569. package/lib/typescript/components/MessageList/InlineLoadingMoreRecentIndicator.d.ts +2 -2
  570. package/lib/typescript/components/MessageList/InlineLoadingMoreThreadIndicator.d.ts +2 -2
  571. package/lib/typescript/components/MessageList/MessageList.d.ts +7 -7
  572. package/lib/typescript/components/MessageList/MessageSystem.d.ts +4 -4
  573. package/lib/typescript/components/MessageList/TypingIndicator.d.ts +2 -2
  574. package/lib/typescript/components/MessageList/TypingIndicatorContainer.d.ts +4 -4
  575. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +5 -5
  576. package/lib/typescript/components/MessageList/hooks/useTypingString.d.ts +2 -2
  577. package/lib/typescript/components/MessageList/utils/filterTypingUsers.d.ts +3 -3
  578. package/lib/typescript/components/MessageList/utils/getDateSeparators.d.ts +4 -4
  579. package/lib/typescript/components/MessageList/utils/getGroupStyles.d.ts +4 -4
  580. package/lib/typescript/components/MessageList/utils/getLastReceivedMessage.d.ts +2 -2
  581. package/lib/typescript/components/MessageList/utils/getReadStates.d.ts +8 -5
  582. package/lib/typescript/components/MessageOverlay/MessageActionList.d.ts +4 -4
  583. package/lib/typescript/components/MessageOverlay/MessageActionListItem.d.ts +4 -3
  584. package/lib/typescript/components/MessageOverlay/MessageOverlay.d.ts +4 -4
  585. package/lib/typescript/components/MessageOverlay/OverlayReactionList.d.ts +6 -6
  586. package/lib/typescript/components/MessageOverlay/OverlayReactions.d.ts +2 -2
  587. package/lib/typescript/components/MessageOverlay/hooks/useMessageActionAnimation.d.ts +1 -1
  588. package/lib/typescript/components/Reply/Reply.d.ts +4 -4
  589. package/lib/typescript/components/Thread/Thread.d.ts +7 -7
  590. package/lib/typescript/components/Thread/components/ThreadFooterComponent.d.ts +2 -2
  591. package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts +2 -2
  592. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +12 -12
  593. package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts +18 -18
  594. package/lib/typescript/contexts/channelsStateContext/ChannelsStateContext.d.ts +19 -19
  595. package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts +17 -17
  596. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +11 -11
  597. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts +8 -8
  598. package/lib/typescript/contexts/keyboardContext/KeyboardContext.d.ts +2 -2
  599. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +12 -12
  600. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +33 -33
  601. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +2 -2
  602. package/lib/typescript/contexts/messageInputContext/hooks/useMessageDetailsForState.d.ts +3 -3
  603. package/lib/typescript/contexts/messageOverlayContext/MessageOverlayContext.d.ts +21 -21
  604. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +57 -57
  605. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +4 -4
  606. package/lib/typescript/contexts/overlayContext/OverlayProvider.d.ts +2 -2
  607. package/lib/typescript/contexts/paginatedMessageListContext/PaginatedMessageListContext.d.ts +8 -8
  608. package/lib/typescript/contexts/suggestionsContext/SuggestionsContext.d.ts +20 -20
  609. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +6 -5
  610. package/lib/typescript/contexts/threadContext/ThreadContext.d.ts +10 -10
  611. package/lib/typescript/contexts/translationContext/TranslationContext.d.ts +2 -2
  612. package/lib/typescript/contexts/typingContext/TypingContext.d.ts +8 -8
  613. package/lib/typescript/icons/{Left.d.ts → UserAdmin.d.ts} +1 -1
  614. package/lib/typescript/icons/index.d.ts +0 -2
  615. package/lib/typescript/init.d.ts +2 -0
  616. package/lib/typescript/types/types.d.ts +16 -13
  617. package/lib/typescript/utils/Streami18n.d.ts +4 -4
  618. package/lib/typescript/utils/getResizedImageUrl.d.ts +2 -1
  619. package/lib/typescript/utils/utils.d.ts +21 -21
  620. package/package.json +3 -5
  621. package/src/components/Attachment/Attachment.tsx +15 -56
  622. package/src/components/Attachment/AttachmentActions.tsx +15 -55
  623. package/src/components/Attachment/Card.tsx +15 -48
  624. package/src/components/Attachment/FileAttachment.tsx +14 -48
  625. package/src/components/Attachment/FileAttachmentGroup.tsx +16 -57
  626. package/src/components/Attachment/Gallery.tsx +18 -59
  627. package/src/components/Attachment/Giphy.tsx +82 -125
  628. package/src/components/Attachment/__tests__/buildGallery.test.js +4 -4
  629. package/src/components/Attachment/utils/buildGallery/buildGallery.ts +5 -3
  630. package/src/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.ts +6 -10
  631. package/src/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.ts +5 -5
  632. package/src/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.ts +5 -3
  633. package/src/components/Attachment/utils/buildGallery/buildThumbnail.ts +5 -3
  634. package/src/components/Attachment/utils/buildGallery/buildThumbnailGrid.ts +5 -3
  635. package/src/components/Attachment/utils/getAspectRatio.ts +4 -4
  636. package/src/components/AutoCompleteInput/AutoCompleteInput.tsx +21 -61
  637. package/src/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.tsx +5 -3
  638. package/src/components/AutoCompleteInput/AutoCompleteSuggestionHeader.tsx +12 -19
  639. package/src/components/AutoCompleteInput/AutoCompleteSuggestionItem.tsx +14 -21
  640. package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +21 -24
  641. package/src/components/Avatar/Avatar.tsx +1 -1
  642. package/src/components/Channel/Channel.tsx +174 -257
  643. package/src/components/Channel/hooks/useCreateChannelContext.ts +4 -19
  644. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +52 -68
  645. package/src/components/Channel/hooks/useCreateMessagesContext.ts +4 -19
  646. package/src/components/Channel/hooks/useCreateOwnCapabilitiesContext.ts +3 -18
  647. package/src/components/Channel/hooks/useCreatePaginatedMessageListContext.ts +16 -32
  648. package/src/components/Channel/hooks/useCreateThreadContext.ts +4 -19
  649. package/src/components/Channel/hooks/useCreateTypingContext.ts +4 -19
  650. package/src/components/ChannelList/ChannelList.tsx +28 -49
  651. package/src/components/ChannelList/ChannelListMessenger.tsx +19 -70
  652. package/src/components/ChannelList/hooks/listeners/useAddedToChannelNotification.ts +14 -36
  653. package/src/components/ChannelList/hooks/listeners/useChannelDeleted.ts +13 -35
  654. package/src/components/ChannelList/hooks/listeners/useChannelHidden.ts +13 -35
  655. package/src/components/ChannelList/hooks/listeners/useChannelTruncated.ts +15 -37
  656. package/src/components/ChannelList/hooks/listeners/useChannelUpdated.ts +13 -35
  657. package/src/components/ChannelList/hooks/listeners/useChannelVisible.ts +14 -36
  658. package/src/components/ChannelList/hooks/listeners/useConnectionRecovered.ts +3 -18
  659. package/src/components/ChannelList/hooks/listeners/useNewMessage.ts +11 -33
  660. package/src/components/ChannelList/hooks/listeners/useNewMessageNotification.ts +13 -35
  661. package/src/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.ts +13 -35
  662. package/src/components/ChannelList/hooks/listeners/useUserPresence.ts +9 -31
  663. package/src/components/ChannelList/hooks/useCreateChannelsContext.ts +4 -19
  664. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +11 -29
  665. package/src/components/ChannelList/utils.ts +9 -42
  666. package/src/components/ChannelPreview/ChannelAvatar.tsx +5 -26
  667. package/src/components/ChannelPreview/ChannelPreview.tsx +18 -51
  668. package/src/components/ChannelPreview/ChannelPreviewMessage.tsx +11 -21
  669. package/src/components/ChannelPreview/ChannelPreviewMessenger.tsx +13 -46
  670. package/src/components/ChannelPreview/ChannelPreviewMutedStatus.tsx +5 -26
  671. package/src/components/ChannelPreview/ChannelPreviewStatus.tsx +6 -27
  672. package/src/components/ChannelPreview/ChannelPreviewTitle.tsx +5 -26
  673. package/src/components/ChannelPreview/ChannelPreviewUnreadCount.tsx +5 -26
  674. package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.ts +7 -28
  675. package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayName.ts +6 -27
  676. package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayPresence.ts +7 -28
  677. package/src/components/ChannelPreview/hooks/useLatestMessagePreview.ts +27 -78
  678. package/src/components/Chat/Chat.tsx +15 -40
  679. package/src/components/Chat/hooks/useCreateChatContext.ts +4 -19
  680. package/src/components/Chat/hooks/useIsOnline.ts +4 -19
  681. package/src/components/Chat/hooks/useMutedUsers.ts +5 -20
  682. package/src/components/ImageGallery/ImageGallery.tsx +30 -40
  683. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +19 -11
  684. package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +42 -20
  685. package/src/components/ImageGallery/components/ImageGrid.tsx +45 -30
  686. package/src/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.tsx +31 -0
  687. package/src/components/Message/Message.tsx +40 -93
  688. package/src/components/Message/MessageSimple/MessageAvatar.tsx +13 -54
  689. package/src/components/Message/MessageSimple/MessageContent.tsx +18 -61
  690. package/src/components/Message/MessageSimple/MessageDeleted.tsx +17 -58
  691. package/src/components/Message/MessageSimple/MessageFooter.tsx +23 -65
  692. package/src/components/Message/MessageSimple/MessagePinnedHeader.tsx +13 -54
  693. package/src/components/Message/MessageSimple/MessageReplies.tsx +15 -56
  694. package/src/components/Message/MessageSimple/MessageRepliesAvatars.tsx +5 -26
  695. package/src/components/Message/MessageSimple/MessageSimple.tsx +16 -57
  696. package/src/components/Message/MessageSimple/MessageStatus.tsx +13 -54
  697. package/src/components/Message/MessageSimple/MessageTextContainer.tsx +19 -66
  698. package/src/components/Message/MessageSimple/ReactionList.tsx +47 -88
  699. package/src/components/Message/MessageSimple/utils/renderText.test.tsx +70 -0
  700. package/src/components/Message/MessageSimple/utils/renderText.tsx +89 -74
  701. package/src/components/Message/hooks/useCreateMessageContext.ts +4 -19
  702. package/src/components/Message/hooks/useMessageActionHandlers.ts +8 -23
  703. package/src/components/Message/hooks/useMessageActions.tsx +8 -23
  704. package/src/components/Message/utils/messageActions.ts +7 -34
  705. package/src/components/Message/utils/removeReservedFields.ts +3 -18
  706. package/src/components/MessageInput/AttachButton.tsx +13 -54
  707. package/src/components/MessageInput/CommandsButton.tsx +15 -56
  708. package/src/components/MessageInput/FileUploadPreview.tsx +15 -57
  709. package/src/components/MessageInput/ImageUploadPreview.tsx +13 -55
  710. package/src/components/MessageInput/InputButtons.tsx +13 -54
  711. package/src/components/MessageInput/MessageInput.tsx +25 -66
  712. package/src/components/MessageInput/MoreOptionsButton.tsx +13 -54
  713. package/src/components/MessageInput/SendButton.tsx +13 -54
  714. package/src/components/MessageInput/ShowThreadMessageInChannelButton.tsx +4 -19
  715. package/src/components/MessageInput/hooks/useCooldown.ts +5 -19
  716. package/src/components/MessageList/InlineLoadingMoreIndicator.tsx +3 -18
  717. package/src/components/MessageList/InlineLoadingMoreRecentIndicator.tsx +3 -18
  718. package/src/components/MessageList/InlineLoadingMoreThreadIndicator.tsx +3 -18
  719. package/src/components/MessageList/MessageList.tsx +34 -76
  720. package/src/components/MessageList/MessageSystem.tsx +5 -26
  721. package/src/components/MessageList/TypingIndicator.tsx +3 -18
  722. package/src/components/MessageList/TypingIndicatorContainer.tsx +14 -47
  723. package/src/components/MessageList/hooks/useMessageList.ts +19 -52
  724. package/src/components/MessageList/hooks/useTypingString.ts +5 -20
  725. package/src/components/MessageList/utils/filterTypingUsers.ts +7 -28
  726. package/src/components/MessageList/utils/getDateSeparators.ts +6 -27
  727. package/src/components/MessageList/utils/getGroupStyles.ts +6 -27
  728. package/src/components/MessageList/utils/getLastReceivedMessage.ts +3 -18
  729. package/src/components/MessageList/utils/getReadStates.ts +5 -20
  730. package/src/components/MessageOverlay/MessageActionList.tsx +15 -56
  731. package/src/components/MessageOverlay/MessageActionListItem.tsx +20 -9
  732. package/src/components/MessageOverlay/MessageOverlay.tsx +38 -81
  733. package/src/components/MessageOverlay/OverlayReactionList.tsx +21 -74
  734. package/src/components/MessageOverlay/OverlayReactions.tsx +3 -18
  735. package/src/components/Reply/Reply.tsx +22 -69
  736. package/src/components/Thread/Thread.tsx +20 -53
  737. package/src/components/Thread/components/ThreadFooterComponent.tsx +12 -47
  738. package/src/components/docs/data.js +38 -37
  739. package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +9 -7
  740. package/src/contexts/channelContext/ChannelContext.tsx +15 -48
  741. package/src/contexts/channelsContext/ChannelsContext.tsx +22 -59
  742. package/src/contexts/channelsStateContext/ChannelsStateContext.tsx +38 -115
  743. package/src/contexts/channelsStateContext/useChannelState.ts +27 -60
  744. package/src/contexts/chatContext/ChatContext.tsx +14 -49
  745. package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +12 -54
  746. package/src/contexts/keyboardContext/KeyboardContext.tsx +13 -7
  747. package/src/contexts/messageContext/MessageContext.tsx +15 -48
  748. package/src/contexts/messageInputContext/MessageInputContext.tsx +61 -110
  749. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +5 -20
  750. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +7 -31
  751. package/src/contexts/messageOverlayContext/MessageOverlayContext.tsx +24 -71
  752. package/src/contexts/messagesContext/MessagesContext.tsx +60 -99
  753. package/src/contexts/overlayContext/OverlayContext.tsx +18 -26
  754. package/src/contexts/overlayContext/OverlayProvider.tsx +7 -22
  755. package/src/contexts/paginatedMessageListContext/PaginatedMessageListContext.tsx +13 -53
  756. package/src/contexts/suggestionsContext/SuggestionsContext.tsx +39 -40
  757. package/src/contexts/themeContext/utils/theme.ts +13 -11
  758. package/src/contexts/threadContext/ThreadContext.tsx +13 -46
  759. package/src/contexts/translationContext/TranslationContext.tsx +12 -7
  760. package/src/contexts/typingContext/TypingContext.tsx +11 -44
  761. package/src/icons/UserAdmin.tsx +23 -0
  762. package/src/icons/index.ts +0 -2
  763. package/src/init.ts +5 -0
  764. package/src/types/types.ts +16 -18
  765. package/src/utils/Streami18n.ts +3 -3
  766. package/src/utils/__tests__/getResizedImageUrl.test.js +56 -0
  767. package/src/utils/getResizedImageUrl.ts +15 -13
  768. package/src/utils/utils.ts +63 -128
  769. package/src/version.json +1 -1
  770. package/lib/commonjs/icons/Left.js +0 -38
  771. package/lib/commonjs/icons/Left.js.map +0 -1
  772. package/lib/commonjs/icons/Right.js +0 -38
  773. package/lib/commonjs/icons/Right.js.map +0 -1
  774. package/lib/commonjs/styleguideComponents/ArgumentsRenderer.js +0 -100
  775. package/lib/commonjs/styleguideComponents/ArgumentsRenderer.js.map +0 -1
  776. package/lib/commonjs/styleguideComponents/BottomSheet.js +0 -25
  777. package/lib/commonjs/styleguideComponents/BottomSheet.js.map +0 -1
  778. package/lib/commonjs/styleguideComponents/JsDoc.js +0 -87
  779. package/lib/commonjs/styleguideComponents/JsDoc.js.map +0 -1
  780. package/lib/commonjs/styleguideComponents/Markdown.js +0 -12
  781. package/lib/commonjs/styleguideComponents/Markdown.js.map +0 -1
  782. package/lib/commonjs/styleguideComponents/PathlineRenderer.js +0 -92
  783. package/lib/commonjs/styleguideComponents/PathlineRenderer.js.map +0 -1
  784. package/lib/commonjs/styleguideComponents/PropsRenderer.js +0 -267
  785. package/lib/commonjs/styleguideComponents/PropsRenderer.js.map +0 -1
  786. package/lib/commonjs/styleguideComponents/Reanimated.js +0 -2
  787. package/lib/commonjs/styleguideComponents/Reanimated.js.map +0 -1
  788. package/lib/commonjs/styleguideComponents/Wrapper.js +0 -29
  789. package/lib/commonjs/styleguideComponents/Wrapper.js.map +0 -1
  790. package/lib/commonjs/styleguideComponents/register-react-native-web.js +0 -44
  791. package/lib/commonjs/styleguideComponents/register-react-native-web.js.map +0 -1
  792. package/lib/commonjs/styleguideComponents/resolveAssetSource.js +0 -11
  793. package/lib/commonjs/styleguideComponents/resolveAssetSource.js.map +0 -1
  794. package/lib/module/icons/Left.js +0 -38
  795. package/lib/module/icons/Left.js.map +0 -1
  796. package/lib/module/icons/Right.js +0 -38
  797. package/lib/module/icons/Right.js.map +0 -1
  798. package/lib/module/styleguideComponents/ArgumentsRenderer.js +0 -100
  799. package/lib/module/styleguideComponents/ArgumentsRenderer.js.map +0 -1
  800. package/lib/module/styleguideComponents/BottomSheet.js +0 -25
  801. package/lib/module/styleguideComponents/BottomSheet.js.map +0 -1
  802. package/lib/module/styleguideComponents/JsDoc.js +0 -87
  803. package/lib/module/styleguideComponents/JsDoc.js.map +0 -1
  804. package/lib/module/styleguideComponents/Markdown.js +0 -12
  805. package/lib/module/styleguideComponents/Markdown.js.map +0 -1
  806. package/lib/module/styleguideComponents/PathlineRenderer.js +0 -92
  807. package/lib/module/styleguideComponents/PathlineRenderer.js.map +0 -1
  808. package/lib/module/styleguideComponents/PropsRenderer.js +0 -267
  809. package/lib/module/styleguideComponents/PropsRenderer.js.map +0 -1
  810. package/lib/module/styleguideComponents/Reanimated.js +0 -2
  811. package/lib/module/styleguideComponents/Reanimated.js.map +0 -1
  812. package/lib/module/styleguideComponents/Wrapper.js +0 -29
  813. package/lib/module/styleguideComponents/Wrapper.js.map +0 -1
  814. package/lib/module/styleguideComponents/register-react-native-web.js +0 -44
  815. package/lib/module/styleguideComponents/register-react-native-web.js.map +0 -1
  816. package/lib/module/styleguideComponents/resolveAssetSource.js +0 -11
  817. package/lib/module/styleguideComponents/resolveAssetSource.js.map +0 -1
  818. package/lib/typescript/icons/Right.d.ts +0 -3
  819. package/src/icons/Left.tsx +0 -12
  820. package/src/icons/Right.tsx +0 -12
  821. package/src/styleguideComponents/ArgumentsRenderer.tsx +0 -60
  822. package/src/styleguideComponents/BottomSheet.tsx +0 -3
  823. package/src/styleguideComponents/JsDoc.tsx +0 -45
  824. package/src/styleguideComponents/Markdown.tsx +0 -1
  825. package/src/styleguideComponents/PathlineRenderer.tsx +0 -45
  826. package/src/styleguideComponents/PropsRenderer.tsx +0 -141
  827. package/src/styleguideComponents/Reanimated.tsx +0 -0
  828. package/src/styleguideComponents/Wrapper.tsx +0 -7
  829. package/src/styleguideComponents/register-react-native-web.js +0 -13
  830. package/src/styleguideComponents/resolveAssetSource.js +0 -2
@@ -603,7 +603,7 @@ var ImageGallery = function ImageGallery(props) {
603
603
  __self: _this,
604
604
  __source: {
605
605
  fileName: _jsxFileName,
606
- lineNumber: 1084,
606
+ lineNumber: 1072,
607
607
  columnNumber: 5
608
608
  }
609
609
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -611,7 +611,7 @@ var ImageGallery = function ImageGallery(props) {
611
611
  __self: _this,
612
612
  __source: {
613
613
  fileName: _jsxFileName,
614
- lineNumber: 1088,
614
+ lineNumber: 1076,
615
615
  columnNumber: 7
616
616
  }
617
617
  }), _react["default"].createElement(_reactNativeGestureHandler.TapGestureHandler, {
@@ -623,7 +623,7 @@ var ImageGallery = function ImageGallery(props) {
623
623
  __self: _this,
624
624
  __source: {
625
625
  fileName: _jsxFileName,
626
- lineNumber: 1089,
626
+ lineNumber: 1077,
627
627
  columnNumber: 7
628
628
  }
629
629
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -631,7 +631,7 @@ var ImageGallery = function ImageGallery(props) {
631
631
  __self: _this,
632
632
  __source: {
633
633
  fileName: _jsxFileName,
634
- lineNumber: 1096,
634
+ lineNumber: 1084,
635
635
  columnNumber: 9
636
636
  }
637
637
  }, _react["default"].createElement(_reactNativeGestureHandler.TapGestureHandler, {
@@ -645,7 +645,7 @@ var ImageGallery = function ImageGallery(props) {
645
645
  __self: _this,
646
646
  __source: {
647
647
  fileName: _jsxFileName,
648
- lineNumber: 1097,
648
+ lineNumber: 1085,
649
649
  columnNumber: 11
650
650
  }
651
651
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -653,7 +653,7 @@ var ImageGallery = function ImageGallery(props) {
653
653
  __self: _this,
654
654
  __source: {
655
655
  fileName: _jsxFileName,
656
- lineNumber: 1106,
656
+ lineNumber: 1094,
657
657
  columnNumber: 13
658
658
  }
659
659
  }, _react["default"].createElement(_reactNativeGestureHandler.PinchGestureHandler, {
@@ -663,7 +663,7 @@ var ImageGallery = function ImageGallery(props) {
663
663
  __self: _this,
664
664
  __source: {
665
665
  fileName: _jsxFileName,
666
- lineNumber: 1107,
666
+ lineNumber: 1095,
667
667
  columnNumber: 15
668
668
  }
669
669
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -671,7 +671,7 @@ var ImageGallery = function ImageGallery(props) {
671
671
  __self: _this,
672
672
  __source: {
673
673
  fileName: _jsxFileName,
674
- lineNumber: 1112,
674
+ lineNumber: 1100,
675
675
  columnNumber: 17
676
676
  }
677
677
  }, _react["default"].createElement(_reactNativeGestureHandler.PanGestureHandler, {
@@ -684,7 +684,7 @@ var ImageGallery = function ImageGallery(props) {
684
684
  __self: _this,
685
685
  __source: {
686
686
  fileName: _jsxFileName,
687
- lineNumber: 1113,
687
+ lineNumber: 1101,
688
688
  columnNumber: 19
689
689
  }
690
690
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -692,7 +692,7 @@ var ImageGallery = function ImageGallery(props) {
692
692
  __self: _this,
693
693
  __source: {
694
694
  fileName: _jsxFileName,
695
- lineNumber: 1121,
695
+ lineNumber: 1109,
696
696
  columnNumber: 21
697
697
  }
698
698
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -706,7 +706,7 @@ var ImageGallery = function ImageGallery(props) {
706
706
  __self: _this,
707
707
  __source: {
708
708
  fileName: _jsxFileName,
709
- lineNumber: 1122,
709
+ lineNumber: 1110,
710
710
  columnNumber: 23
711
711
  }
712
712
  }, photos.map(function (photo, i) {
@@ -730,7 +730,7 @@ var ImageGallery = function ImageGallery(props) {
730
730
  __self: _this,
731
731
  __source: {
732
732
  fileName: _jsxFileName,
733
- lineNumber: 1137,
733
+ lineNumber: 1125,
734
734
  columnNumber: 27
735
735
  }
736
736
  });
@@ -742,7 +742,7 @@ var ImageGallery = function ImageGallery(props) {
742
742
  __self: _this,
743
743
  __source: {
744
744
  fileName: _jsxFileName,
745
- lineNumber: 1165,
745
+ lineNumber: 1153,
746
746
  columnNumber: 7
747
747
  }
748
748
  })), _react["default"].createElement(_ImageGalleryFooter.ImageGalleryFooter, (0, _extends2["default"])({
@@ -756,7 +756,7 @@ var ImageGallery = function ImageGallery(props) {
756
756
  __self: _this,
757
757
  __source: {
758
758
  fileName: _jsxFileName,
759
- lineNumber: 1171,
759
+ lineNumber: 1159,
760
760
  columnNumber: 7
761
761
  }
762
762
  })), _react["default"].createElement(_ImageGalleryOverlay.ImageGalleryOverlay, {
@@ -766,14 +766,14 @@ var ImageGallery = function ImageGallery(props) {
766
766
  __self: _this,
767
767
  __source: {
768
768
  fileName: _jsxFileName,
769
- lineNumber: 1180,
769
+ lineNumber: 1168,
770
770
  columnNumber: 7
771
771
  }
772
772
  }), _react["default"].createElement(_bottomSheet.BottomSheetModalProvider, {
773
773
  __self: _this,
774
774
  __source: {
775
775
  fileName: _jsxFileName,
776
- lineNumber: 1185,
776
+ lineNumber: 1173,
777
777
  columnNumber: 7
778
778
  }
779
779
  }, _react["default"].createElement(_bottomSheet.BottomSheetModal, {
@@ -786,7 +786,7 @@ var ImageGallery = function ImageGallery(props) {
786
786
  __self: _this,
787
787
  __source: {
788
788
  fileName: _jsxFileName,
789
- lineNumber: 1190,
789
+ lineNumber: 1178,
790
790
  columnNumber: 13
791
791
  }
792
792
  }));
@@ -801,7 +801,7 @@ var ImageGallery = function ImageGallery(props) {
801
801
  __self: _this,
802
802
  __source: {
803
803
  fileName: _jsxFileName,
804
- lineNumber: 1186,
804
+ lineNumber: 1174,
805
805
  columnNumber: 9
806
806
  }
807
807
  }, _react["default"].createElement(_ImageGrid.ImageGrid, (0, _extends2["default"])({
@@ -814,7 +814,7 @@ var ImageGallery = function ImageGallery(props) {
814
814
  __self: _this,
815
815
  __source: {
816
816
  fileName: _jsxFileName,
817
- lineNumber: 1201,
817
+ lineNumber: 1189,
818
818
  columnNumber: 11
819
819
  }
820
820
  })))));
@@ -1 +1 @@
1
- {"version":3,"sources":["ImageGallery.tsx"],"names":["isAndroid","Platform","OS","fullScreenHeight","Dimensions","get","height","measuredScreenHeight","screenWidth","halfScreenWidth","MARGIN","HasPinched","IsSwiping","ImageGallery","props","imageGalleryCustomComponents","imageGalleryGridHandleHeight","imageGalleryGridSnapPoints","numberOfImageGalleryGridColumns","overlayOpacity","visible","theme","white_snow","colors","backgroundColor","imageGallery","gridPhotos","setGridPhotos","overlay","setOverlay","translucentStatusBar","image","images","setImage","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","androidScreenHeightAdjustment","screenHeight","halfScreenHeight","quarterScreenHeight","snapPoints","React","useMemo","bottomSheetModalRef","currentBottomSheetIndex","setCurrentBottomSheetIndex","animatedBottomSheetIndex","showScreen","fadeScreen","show","value","duration","easing","Easing","out","ease","Keyboard","dismiss","currentImageHeight","setCurrentImageHeight","selectedIndex","setSelectedIndex","index","headerFooterVisible","hasHitBottomScale","hasHitTopScale","doubleTapRef","panRef","pinchRef","singleTapRef","offsetX","offsetY","translateX","translateY","offsetScale","scale","translationX","originX","originY","focalX","focalY","oldFocalX","oldFocalY","focalOffsetX","focalOffsetY","adjustedFocalX","adjustedFocalY","tapX","tapY","numberOfPinchFingers","isSwiping","isPinch","hasPinched","resetTouchValues","UNDETERMINED","resetMovementValues","resetVisibleValues","photos","reduce","acc","cur","attachmentImages","attachments","filter","attachment","type","title_link","og_scrape_url","attachmentPhotos","map","a","imageUrl","channelId","cid","created_at","id","messageId","original_height","original_width","uri","url","width","user","user_id","photoLength","length","updatePosition","newIndex","findIndex","photo","uriForCurrentImage","imageHeight","Math","floor","Image","getSize","onPan","onActive","evt","numberOfPointers","TRUE","FALSE","translationY","maxXYRatio","abs","localEvtScale","onFinish","finalXPosition","velocityX","finalYPosition","velocityY","clamp","deceleration","velocity","onStart","onPinch","triggerHaptic","onSingleTap","onDoubleTap","absoluteX","absoluteY","translateYTopBottom","headerFooterOpacity","pagerStyle","transform","scaleX","containerBackground","opacity","showScreenStyle","closeGridView","current","close","openGridView","present","StyleSheet","absoluteFillObject","absoluteFill","undefined","styles","animatedContainer","i","marginRight","header","footer","gridHandle","grid","lowerBound","upperBound","min","max","create","alignItems","flexDirection","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport {\n Dimensions,\n Image,\n ImageStyle,\n Keyboard,\n Platform,\n StatusBar,\n StyleSheet,\n ViewStyle,\n} from 'react-native';\n\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n PinchGestureHandler,\n PinchGestureHandlerGestureEvent,\n TapGestureHandler,\n TapGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\n\nimport Animated, {\n cancelAnimation,\n Easing,\n interpolate,\n runOnJS,\n runOnUI,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withDecay,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { BottomSheetModal, BottomSheetModalProvider } from '@gorhom/bottom-sheet';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { AnimatedGalleryImage } from './components/AnimatedGalleryImage';\nimport {\n ImageGalleryFooter,\n ImageGalleryFooterCustomComponentProps,\n} from './components/ImageGalleryFooter';\nimport {\n ImageGalleryHeader,\n ImageGalleryHeaderCustomComponentProps,\n} from './components/ImageGalleryHeader';\nimport { ImageGalleryOverlay } from './components/ImageGalleryOverlay';\nimport { ImageGalleryGridImageComponents, ImageGrid } from './components/ImageGrid';\nimport {\n ImageGalleryGridHandleCustomComponentProps,\n ImageGridHandle,\n} from './components/ImageGridHandle';\n\nimport { useImageGalleryContext } from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport { useOverlayContext } from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { triggerHaptic } from '../../native';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { getUrlOfImageAttachment } from '../../utils/getUrlOfImageAttachment';\nimport { vh, vw } from '../../utils/utils';\n\nconst isAndroid = Platform.OS === 'android';\nconst fullScreenHeight = Dimensions.get('screen').height;\nconst measuredScreenHeight = vh(100);\nconst screenWidth = vw(100);\nconst halfScreenWidth = vw(50);\nconst MARGIN = 32;\n\nexport enum HasPinched {\n FALSE = 0,\n TRUE,\n}\n\nexport enum IsSwiping {\n UNDETERMINED = 0,\n TRUE,\n FALSE,\n}\n\nexport type ImageGalleryCustomComponents<Us extends UnknownType = DefaultUserType> = {\n /**\n * Override props for following UI components, which are part of [image gallery](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#gallery-components).\n *\n * - [ImageGalleryFooter](#ImageGalleryFooter)\n *\n * - [ImageGrid](#ImageGrid)\n *\n * - [ImageGridHandle](#ImageGridHandle)\n *\n * - [ImageGalleryHeader](#ImageGalleryHeader)\n *\n * e.g.,\n *\n * ```js\n * {\n * footer: {\n * ShareIcon: CustomShareIconComponent\n * },\n * grid: {\n * avatarComponent: CustomAvatarComponent\n * },\n * gridHandle: {\n * centerComponent: CustomCenterComponent\n * },\n * header: {\n * CloseIcon: CustomCloseButtonComponent\n * },\n * }\n * ```\n * @overrideType object\n */\n imageGalleryCustomComponents?: {\n footer?: ImageGalleryFooterCustomComponentProps<Us>;\n grid?: ImageGalleryGridImageComponents<Us>;\n gridHandle?: ImageGalleryGridHandleCustomComponentProps;\n header?: ImageGalleryHeaderCustomComponentProps<Us>;\n };\n};\n\ntype Props<Us extends UnknownType = DefaultUserType> = ImageGalleryCustomComponents<Us> & {\n overlayOpacity: Animated.SharedValue<number>;\n visible: boolean;\n imageGalleryGridHandleHeight?: number;\n /**\n * This should be\n */\n imageGalleryGridSnapPoints?: [string | number, string | number];\n numberOfImageGalleryGridColumns?: number;\n};\n\nexport const ImageGallery = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: Props<Us>,\n) => {\n const {\n imageGalleryCustomComponents,\n imageGalleryGridHandleHeight,\n imageGalleryGridSnapPoints,\n numberOfImageGalleryGridColumns,\n overlayOpacity,\n visible,\n } = props;\n const {\n theme: {\n colors: { white_snow },\n imageGallery: { backgroundColor },\n },\n } = useTheme();\n const [gridPhotos, setGridPhotos] = useState<Photo<Us>[]>([]);\n const { overlay, setOverlay, translucentStatusBar } = useOverlayContext();\n const { image, images, setImage } = useImageGalleryContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n /**\n * Height constants\n */\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - measuredScreenHeight - statusBarHeight;\n const androidScreenHeightAdjustment = translucentStatusBar\n ? bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? 0\n : statusBarHeight\n : bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? -statusBarHeight\n : 0;\n const screenHeight = isAndroid\n ? Dimensions.get('window').height + androidScreenHeightAdjustment\n : vh(100);\n const halfScreenHeight = screenHeight / 2;\n const quarterScreenHeight = screenHeight / 4;\n const snapPoints = React.useMemo(() => [(screenHeight * 9) / 10], []);\n\n /**\n * BottomSheetModal ref\n */\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n\n /**\n * BottomSheetModal state\n */\n const [currentBottomSheetIndex, setCurrentBottomSheetIndex] = useState(0);\n const animatedBottomSheetIndex = useSharedValue(0);\n\n /**\n * Fade animation for screen, it is always rendered with pointerEvents\n * set to none for fast opening\n */\n const showScreen = useSharedValue(0);\n const fadeScreen = (show: boolean) => {\n 'worklet';\n showScreen.value = withTiming(show ? 1 : 0, {\n duration: 250,\n easing: Easing.out(Easing.ease),\n });\n };\n\n /**\n * Run the fade animation on visible change\n */\n useEffect(() => {\n if (visible) {\n Keyboard.dismiss();\n }\n fadeScreen(visible);\n }, [visible]);\n\n /**\n * Image height from URL or default to full screen height\n */\n const [currentImageHeight, setCurrentImageHeight] = useState<number>(screenHeight);\n\n /**\n * JS and UI index values, the JS follows the UI but is needed\n * for rendering the virtualized image list\n */\n const [selectedIndex, setSelectedIndex] = useState(0);\n const index = useSharedValue(0);\n\n /**\n * Header visible value for animating in out\n */\n const headerFooterVisible = useSharedValue(1);\n\n /**\n * Values to track scale for haptic feedback firing\n */\n const hasHitBottomScale = useSharedValue(1);\n const hasHitTopScale = useSharedValue(0);\n\n /**\n * Gesture handler refs\n */\n const doubleTapRef = useRef<TapGestureHandler>(null);\n const panRef = useRef<PanGestureHandler>(null);\n const pinchRef = useRef<PinchGestureHandler>(null);\n const singleTapRef = useRef<TapGestureHandler>(null);\n\n /**\n * Shared values for movement\n */\n const offsetX = useSharedValue(0);\n const offsetY = useSharedValue(0);\n const translateX = useSharedValue(0);\n const translateY = useSharedValue(0);\n const offsetScale = useSharedValue(1);\n const scale = useSharedValue(1);\n const translationX = useSharedValue(0);\n\n /**\n * Shared values for touch tracking\n */\n const originX = useSharedValue(0);\n const originY = useSharedValue(0);\n const focalX = useSharedValue(0);\n const focalY = useSharedValue(0);\n const oldFocalX = useSharedValue(0);\n const oldFocalY = useSharedValue(0);\n const focalOffsetX = useSharedValue(0);\n const focalOffsetY = useSharedValue(0);\n const adjustedFocalX = useSharedValue(0);\n const adjustedFocalY = useSharedValue(0);\n const tapX = useSharedValue(0);\n const tapY = useSharedValue(0);\n\n /**\n * Shared values for gesture tracking\n */\n const numberOfPinchFingers = useSharedValue(0);\n const isSwiping = useSharedValue(0);\n const isPinch = useSharedValue(false);\n const hasPinched = useSharedValue(0);\n\n /**\n * Reset gesture values for use on touch release\n */\n const resetTouchValues = () => {\n 'worklet';\n focalX.value = 0;\n focalY.value = 0;\n oldFocalX.value = 0;\n oldFocalY.value = 0;\n originX.value = 0;\n originY.value = 0;\n focalOffsetX.value = 0;\n focalOffsetY.value = 0;\n numberOfPinchFingers.value = 0;\n isPinch.value = false;\n isSwiping.value = IsSwiping.UNDETERMINED;\n };\n\n /**\n * Reset movement values for use on selected photo change\n */\n const resetMovementValues = () => {\n 'worklet';\n translateX.value = 0;\n translateY.value = 0;\n scale.value = 1;\n offsetScale.value = 1;\n };\n\n /**\n * Reset all key values for visible\n */\n const resetVisibleValues = () => {\n 'worklet';\n resetTouchValues();\n resetMovementValues();\n headerFooterVisible.value = 1;\n offsetX.value = 0;\n offsetY.value = 0;\n adjustedFocalX.value = 0;\n adjustedFocalY.value = 0;\n tapX.value = 0;\n tapY.value = 0;\n };\n\n useEffect(() => {\n if (!visible) {\n resetVisibleValues();\n }\n }, [visible]);\n\n /**\n * Photos array created from all currently available\n * photo attachments\n */\n const photos = images.reduce((acc: Photo<Us>[], cur) => {\n const attachmentImages =\n cur.attachments?.filter(\n (attachment) =>\n attachment.type === 'image' &&\n !attachment.title_link &&\n !attachment.og_scrape_url &&\n getUrlOfImageAttachment(attachment),\n ) || [];\n\n const attachmentPhotos = attachmentImages.map((a) => {\n const imageUrl = getUrlOfImageAttachment(a) as string;\n\n return {\n channelId: cur.cid,\n created_at: cur.created_at,\n id: `photoId-${cur.id}-${imageUrl}`,\n messageId: cur.id,\n original_height: a.original_height,\n original_width: a.original_width,\n uri: getResizedImageUrl({\n height: screenHeight,\n url: imageUrl,\n width: screenWidth,\n }),\n user: cur.user,\n user_id: cur.user_id,\n };\n });\n\n return [...acc, ...attachmentPhotos] as Photo<Us>[];\n }, []);\n\n /**\n * Photos length needs to be kept as a const here so if the length\n * changes it causes the pan gesture handler function to refresh. This\n * does not work if the calculation for the length of the array is left\n * inside the gesture handler as it will have an array as a dependency\n */\n const photoLength = photos.length;\n\n /**\n * Set selected photo when changed via pressing in the message list\n */\n useEffect(() => {\n const updatePosition = (newIndex: number) => {\n 'worklet';\n\n if (newIndex > -1) {\n index.value = newIndex;\n translationX.value = -(screenWidth + MARGIN) * newIndex;\n runOnJS(setSelectedIndex)(newIndex);\n }\n };\n\n const newIndex = photos.findIndex(\n (photo) => photo.messageId === image?.messageId && photo.uri === image?.url,\n );\n\n runOnUI(updatePosition)(newIndex);\n }, [image, photoLength]);\n\n /**\n * Image heights are not provided and therefore need to be calculated.\n * We start by allowing the image to be the full height then reduce it\n * to the proper scaled height based on the width being restricted to the\n * screen width when the dimensions are received.\n */\n const uriForCurrentImage = photos[selectedIndex]?.uri;\n useEffect(() => {\n setCurrentImageHeight(screenHeight);\n const photo = photos[index.value];\n const height = photo?.original_height;\n const width = photo?.original_width;\n\n if (height && width) {\n const imageHeight = Math.floor(height * (screenWidth / width));\n setCurrentImageHeight(imageHeight > screenHeight ? screenHeight : imageHeight);\n } else if (photo?.uri) {\n Image.getSize(photo.uri, (width, height) => {\n const imageHeight = Math.floor(height * (screenWidth / width));\n setCurrentImageHeight(imageHeight > screenHeight ? screenHeight : imageHeight);\n });\n }\n }, [uriForCurrentImage]);\n\n /**\n * We use simultaneousHandlers to allow pan and pinch gesture handlers\n * depending on the gesture. The touch is fully handled by the pinch\n * gesture handler once it has began so all interactions by the pan\n * handler are blocked if isPinch.value is true\n */\n const onPan = useAnimatedGestureHandler<PanGestureHandlerGestureEvent>(\n {\n onActive: (evt) => {\n if (evt.numberOfPointers === 1 && !isPinch.value) {\n /**\n * If Android where a second finger cannot be added back and\n * removing one finger returns to Pan Handler then adjust origin\n * on finger remove and set swiping false\n */\n if (isAndroid && hasPinched.value === HasPinched.TRUE) {\n hasPinched.value = HasPinched.FALSE;\n isSwiping.value = IsSwiping.FALSE;\n offsetX.value = translateX.value + evt.translationX;\n offsetY.value = translateY.value - evt.translationY;\n }\n\n /**\n * isSwiping is used to prevent Y movement if a clear swipe to next\n * or previous is begun when at the edge of a photo. The value is\n * either 0, 1, or 2, via the IsSwiping enum designating undetermined,\n * true, or false and is reset on releasing the touch\n */\n if (isSwiping.value === IsSwiping.UNDETERMINED) {\n const maxXYRatio = isAndroid ? 1 : 0.25;\n if (\n Math.abs(evt.translationX / evt.translationY) > maxXYRatio &&\n (Math.abs(-halfScreenWidth * (scale.value - 1) - offsetX.value) < 3 ||\n Math.abs(halfScreenWidth * (scale.value - 1) - offsetX.value) < 3)\n ) {\n isSwiping.value = IsSwiping.TRUE;\n }\n if (Math.abs(evt.translationY) > 25) {\n isSwiping.value = IsSwiping.FALSE;\n }\n }\n\n /**\n * localEvtScale is used for swipe away\n */\n const localEvtScale = scale.value / offsetScale.value;\n\n /**\n * If not swiping translate the image in X and Y to the event\n * translation plus offset. If swiping only translate X, if\n * swiping down when at top of screen or centered balance scale\n * using offset to a degree (this needs improvement the calculation\n * is incorrect but likely needs origin use to be 100%)\n */\n translateX.value =\n scale.value !== offsetScale.value\n ? offsetX.value * localEvtScale - evt.translationX\n : offsetX.value - evt.translationX;\n translateY.value =\n isSwiping.value !== IsSwiping.TRUE\n ? scale.value !== offsetScale.value\n ? offsetY.value * localEvtScale + evt.translationY\n : offsetY.value + evt.translationY\n : translateY.value;\n\n /**\n * If swiping down start scaling down the image for swipe\n * away effect\n */\n scale.value =\n currentImageHeight * offsetScale.value < screenHeight && translateY.value > 0\n ? offsetScale.value * (1 - (1 / 3) * (translateY.value / screenHeight))\n : currentImageHeight * offsetScale.value > screenHeight &&\n translateY.value > (currentImageHeight / 2) * offsetScale.value - halfScreenHeight\n ? offsetScale.value *\n (1 -\n (1 / 3) *\n ((translateY.value -\n ((currentImageHeight / 2) * offsetScale.value - halfScreenHeight)) /\n screenHeight))\n : scale.value;\n\n overlayOpacity.value = localEvtScale;\n }\n },\n onFinish: (evt) => {\n if (!isPinch.value && evt.numberOfPointers < 2) {\n /**\n * To determine if the fling should page to the next image we\n * calculate a final position based on the current position and\n * event velocity\n */\n const finalXPosition = evt.translationX - evt.velocityX * 0.3;\n const finalYPosition = evt.translationY + evt.velocityY * 0.1;\n\n /**\n * If there is a next photo, the image is lined up to the right\n * edge, the swipe is to the left, and the final position is more\n * than half the screen width, move to the next image\n */\n if (\n index.value < photoLength - 1 &&\n Math.abs(halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&\n translateX.value < 0 &&\n finalXPosition < -halfScreenWidth &&\n isSwiping.value === IsSwiping.TRUE\n ) {\n cancelAnimation(translationX);\n translationX.value = withTiming(\n -(screenWidth + MARGIN) * (index.value + 1),\n {\n duration: 200,\n easing: Easing.out(Easing.ease),\n },\n () => {\n resetMovementValues();\n index.value = index.value + 1;\n runOnJS(setSelectedIndex)(index.value);\n },\n );\n\n /**\n * If there is a previous photo, the image is lined up to the left\n * edge, the swipe is to the right, and the final position is more\n * than half the screen width, move to the previous image\n */\n } else if (\n index.value > 0 &&\n Math.abs(-halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&\n translateX.value > 0 &&\n finalXPosition > halfScreenWidth &&\n isSwiping.value === IsSwiping.TRUE\n ) {\n cancelAnimation(translationX);\n translationX.value = withTiming(\n -(screenWidth + MARGIN) * (index.value - 1),\n {\n duration: 200,\n easing: Easing.out(Easing.ease),\n },\n () => {\n resetMovementValues();\n index.value = index.value - 1;\n runOnJS(setSelectedIndex)(index.value);\n },\n );\n }\n\n /**\n * When the pan is finished if the scale is less than 1 return the\n * photo to center, if the photo is inside the edges of the screen\n * return the photo to line up with the edges, otherwise use decay\n * with a clamping at the edges to give the effect the image is\n * sliding along using velocity and friction\n */\n translateX.value =\n scale.value < 1\n ? withTiming(0)\n : translateX.value > halfScreenWidth * (scale.value - 1)\n ? withTiming(halfScreenWidth * (scale.value - 1), {\n duration: 200,\n })\n : translateX.value < -halfScreenWidth * (scale.value - 1)\n ? withTiming(-halfScreenWidth * (scale.value - 1), {\n duration: 200,\n })\n : withDecay({\n clamp: [\n -halfScreenWidth * (scale.value - 1),\n halfScreenWidth * (scale.value - 1),\n ],\n deceleration: 0.99,\n velocity: -evt.velocityX,\n });\n\n /**\n * When the pan is finished if the height is less than the screen\n * height return the photo to center, if the photo is inside the\n * edges of the screen return the photo to line up with the edges,\n * otherwise use decay with a clamping at the edges to give the effect\n * the image is sliding along using velocity and friction\n */\n translateY.value =\n currentImageHeight * scale.value < screenHeight\n ? withTiming(0)\n : translateY.value > (currentImageHeight / 2) * scale.value - halfScreenHeight\n ? withTiming((currentImageHeight / 2) * scale.value - halfScreenHeight)\n : translateY.value < (-currentImageHeight / 2) * scale.value + halfScreenHeight\n ? withTiming((-currentImageHeight / 2) * scale.value + halfScreenHeight)\n : withDecay({\n clamp: [\n (-currentImageHeight / 2) * scale.value + halfScreenHeight,\n (currentImageHeight / 2) * scale.value - halfScreenHeight,\n ],\n deceleration: 0.99,\n velocity: evt.velocityY,\n });\n\n resetTouchValues();\n\n /**\n * If the scale has been reduced below one, i.e. zoomed out, translate\n * the zoom back to one\n */\n scale.value =\n scale.value !== offsetScale.value ? withTiming(offsetScale.value) : offsetScale.value;\n\n /**\n * If the photo is centered or at the top of the screen if scaled larger\n * than the screen, and not paging left or right, and the final Y position\n * is greater than half the screen using swipe velocity and position, close\n * the overlay\n */\n if (\n finalYPosition > halfScreenHeight &&\n offsetY.value + 8 >= (currentImageHeight / 2) * scale.value - halfScreenHeight &&\n isSwiping.value !== IsSwiping.TRUE &&\n translateY.value !== 0 &&\n !(\n Math.abs(halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&\n translateX.value < 0 &&\n finalXPosition < -halfScreenWidth\n ) &&\n !(\n Math.abs(-halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&\n translateX.value > 0 &&\n finalXPosition > halfScreenWidth\n )\n ) {\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n cancelAnimation(scale);\n overlayOpacity.value = withTiming(\n 0,\n {\n duration: 200,\n easing: Easing.out(Easing.ease),\n },\n () => {\n showScreen.value = 0;\n runOnJS(setOverlay)('none');\n },\n );\n scale.value = withTiming(0.6, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n translateY.value =\n evt.velocityY > 1000\n ? withDecay({\n velocity: evt.velocityY,\n })\n : withTiming(halfScreenHeight + (currentImageHeight / 2) * scale.value, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n translateX.value = withDecay({\n velocity: -evt.velocityX,\n });\n }\n }\n },\n\n onStart: () => {\n if (!isPinch.value) {\n /**\n * Cancel any previous motion animation on translations when a touch\n * begins to interrupt the animation and take over the position handling\n */\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n cancelAnimation(scale);\n offsetX.value = translateX.value;\n offsetY.value = translateY.value;\n }\n\n /**\n * Reset hasPinched for Android single finger offset\n */\n hasPinched.value = HasPinched.FALSE;\n },\n },\n [currentImageHeight, photoLength],\n );\n\n /**\n * On pinch is run when two or more fingers touch the screen, it then takes over\n * all touch handling even if the number of fingers is reduced to one until the\n * touch is complete\n */\n const onPinch = useAnimatedGestureHandler<PinchGestureHandlerGestureEvent>(\n {\n onActive: (evt) => {\n /**\n * Android starts with a zero event with 1 touch instead of two\n * we therefore must wait to capture starting info until the double\n * touch begins\n */\n if (!isPinch.value && isAndroid) {\n /**\n * Set hasPinched to true so when removing one finger the pan active\n * state adjusts the offset\n */\n hasPinched.value = HasPinched.TRUE;\n\n /**\n * Cancel any previous motion animation on translations when a touch\n * begins to interrupt the animation and take over the position handling\n */\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n cancelAnimation(scale);\n\n /**\n * Reset isSwiping as now the pan gesture handler is no longer running\n */\n isSwiping.value = IsSwiping.UNDETERMINED;\n\n /**\n * Set initial values for pinch gesture interaction handler\n */\n numberOfPinchFingers.value = evt.numberOfPointers;\n offsetX.value = translateX.value;\n offsetY.value = translateY.value;\n adjustedFocalX.value = evt.focalX - (halfScreenWidth - offsetX.value);\n adjustedFocalY.value = evt.focalY - (halfScreenHeight + offsetY.value);\n originX.value = adjustedFocalX.value;\n originY.value = adjustedFocalY.value;\n offsetScale.value = scale.value;\n }\n\n /**\n * Set pinch to true to stop all pan gesture interactions, we do this\n * again here for Android outside the check that creates type\n */\n isPinch.value = true;\n\n /**\n * The scale is clamped to a minimum of 1 and maximum of 8 for aesthetics.\n * We use the clamped value to determine a local event scale so the focal\n * point does not become out of sync with the actual photo scaling, e.g.\n * evt.scale is 20 but scale is 8, using evt.scale for offset will put the\n * photo and calculations out of sync\n */\n scale.value = clamp(offsetScale.value * evt.scale, 1, 8);\n const localEvtScale = scale.value / offsetScale.value;\n\n /**\n * When we hit the top or bottom of the scale clamping we run a haptic\n * trigger, we track if it has been run to not spam the trigger\n */\n if (scale.value !== 8 && scale.value !== 1) {\n hasHitTopScale.value = 0;\n hasHitBottomScale.value = 0;\n } else if (scale.value === 8 && hasHitTopScale.value === 0) {\n hasHitTopScale.value = 1;\n runOnJS(triggerHaptic)('impactLight');\n } else if (scale.value === 1 && hasHitBottomScale.value === 0) {\n hasHitBottomScale.value = 1;\n runOnJS(triggerHaptic)('impactLight');\n }\n\n /**\n * We calculate the adjusted focal point on the photo using the events\n * focal position on the screen, screen size, and current photo offset\n */\n adjustedFocalX.value = evt.focalX - (halfScreenWidth - offsetX.value);\n adjustedFocalY.value = evt.focalY - (halfScreenHeight + offsetY.value);\n\n /**\n * If the number of fingers on the screen changes, the position of the\n * focal point will change and this needs to be accounted for, e.g. if\n * two fingers are on the screen the focal is between them, but if one is\n * then removed the focal is now at the remaining fingers touch position.\n * If this happens without accounting for the change the image will jump\n * around, we keep track of the previous two finger focal to adjust for this\n * change in a reduction from two fingers to one, then if another finger\n * is added again we adjust the origin to account for the difference between\n * the original two finger touch and the new two finger touch position.\n */\n if (numberOfPinchFingers.value !== evt.numberOfPointers) {\n numberOfPinchFingers.value = evt.numberOfPointers;\n if (evt.numberOfPointers === 1) {\n focalOffsetX.value = oldFocalX.value - adjustedFocalX.value;\n focalOffsetY.value = oldFocalY.value - adjustedFocalY.value;\n } else if (numberOfPinchFingers.value > 1) {\n originX.value =\n originX.value -\n (oldFocalX.value / localEvtScale - adjustedFocalX.value / localEvtScale);\n originY.value =\n originY.value -\n (oldFocalY.value / localEvtScale - adjustedFocalY.value / localEvtScale);\n }\n }\n\n /**\n * If pinch handler has been activated via two fingers then the fingers\n * reduced to one we keep track of the old focal using the focal offset\n * from when the number of fingers was two. We then translate the photo\n * taking into account the offset, focal, focal offset, origin, and scale.\n */\n if (numberOfPinchFingers.value === 1) {\n oldFocalX.value = adjustedFocalX.value + focalOffsetX.value;\n oldFocalY.value = adjustedFocalY.value + focalOffsetY.value;\n translateX.value = offsetX.value - oldFocalX.value + localEvtScale * originX.value;\n translateY.value = offsetY.value + oldFocalY.value - localEvtScale * originY.value;\n\n /**\n * If the number of fingers in the gesture is greater than one the\n * adjusted focal point is saved as the old focal and the photo is\n * translated taking into account the offset, focal, origin, and scale.\n */\n } else if (numberOfPinchFingers.value > 1) {\n oldFocalX.value = adjustedFocalX.value;\n oldFocalY.value = adjustedFocalY.value;\n translateX.value = offsetX.value - adjustedFocalX.value + localEvtScale * originX.value;\n translateY.value = offsetY.value + adjustedFocalY.value - localEvtScale * originY.value;\n }\n },\n onFinish: () => {\n if (isPinch.value) {\n /**\n * When the pinch is finished if the scale is less than 1 return the\n * photo to center, if the photo is inside the edges of the screen\n * return the photo to line up with the edges, otherwise leave the\n * photo in its current position\n */\n translateX.value =\n scale.value < 1\n ? withTiming(0)\n : translateX.value > halfScreenWidth * (scale.value - 1)\n ? withTiming(halfScreenWidth * (scale.value - 1))\n : translateX.value < -halfScreenWidth * (scale.value - 1)\n ? withTiming(-halfScreenWidth * (scale.value - 1))\n : translateX.value;\n\n /**\n * When the pinch is finished if the height is less than the screen\n * height return the photo to center, if the photo is inside the\n * edges of the screen return the photo to line up with the edges,\n * otherwise leave the photo in its current position\n */\n translateY.value =\n currentImageHeight * scale.value < screenHeight\n ? withTiming(0)\n : translateY.value > (currentImageHeight / 2) * scale.value - screenHeight / 2\n ? withTiming((currentImageHeight / 2) * scale.value - screenHeight / 2)\n : translateY.value < (-currentImageHeight / 2) * scale.value + screenHeight / 2\n ? withTiming((-currentImageHeight / 2) * scale.value + screenHeight / 2)\n : translateY.value;\n\n /**\n * If the scale has been reduced below one, i.e. zoomed out, translate\n * the zoom back to one\n */\n offsetScale.value = scale.value < 1 ? 1 : scale.value;\n scale.value = scale.value < 1 ? withTiming(1) : scale.value;\n resetTouchValues();\n }\n },\n onStart: (evt) => {\n /**\n * Android starts with a zero event with 1 touch instead of two\n * we therefore must wait to capture starting info until the double\n * touch begins\n */\n if (!isAndroid) {\n /**\n * Cancel any previous motion animation on translations when a touch\n * begins to interrupt the animation and take over the position handling\n */\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n cancelAnimation(scale);\n\n /**\n * Set pinch to true to stop all pan gesture interactions\n */\n isPinch.value = true;\n\n /**\n * Reset isSwiping as now the pan gesture handler is no longer running\n */\n isSwiping.value = IsSwiping.UNDETERMINED;\n\n /**\n * Set initial values for pinch gesture interaction handler\n */\n numberOfPinchFingers.value = evt.numberOfPointers;\n offsetX.value = translateX.value;\n offsetY.value = translateY.value;\n adjustedFocalX.value = evt.focalX - (halfScreenWidth - offsetX.value);\n adjustedFocalY.value = evt.focalY - (halfScreenHeight + offsetY.value);\n originX.value = adjustedFocalX.value;\n originY.value = adjustedFocalY.value;\n offsetScale.value = scale.value;\n }\n\n /**\n * Reset hasPinched for Android single finger offset\n */\n hasPinched.value = HasPinched.FALSE;\n },\n },\n [currentImageHeight],\n );\n\n /**\n * Single tap handler for header hiding and showing\n */\n const onSingleTap = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>({\n onActive: () => {\n cancelAnimation(headerFooterVisible);\n headerFooterVisible.value = headerFooterVisible.value > 0 ? withTiming(0) : withTiming(1);\n },\n });\n\n /**\n * Double tap handler to zoom back out and hide header and footer\n */\n const onDoubleTap = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>({\n onActive: (evt) => {\n if (Math.abs(tapX.value - evt.absoluteX) < 64 && Math.abs(tapY.value - evt.absoluteY) < 64) {\n if (offsetScale.value === 1 && offsetX.value === 0 && offsetY.value === 0) {\n offsetScale.value = 2;\n scale.value = withTiming(2, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n translateX.value = withTiming(evt.absoluteX - halfScreenWidth, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n if (currentImageHeight * 2 > screenHeight) {\n const translateYTopBottom =\n evt.absoluteY > halfScreenHeight\n ? -(currentImageHeight * 2 - screenHeight) / 2\n : (currentImageHeight * 2 - screenHeight) / 2;\n translateY.value = withTiming(translateYTopBottom, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n }\n } else {\n offsetScale.value = 1;\n scale.value = withTiming(1, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n offsetX.value = 0;\n offsetY.value = 0;\n translateX.value = withTiming(0, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n translateY.value = withTiming(0, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n if (headerFooterVisible.value !== 0) {\n cancelAnimation(headerFooterVisible);\n headerFooterVisible.value = withTiming(0);\n }\n }\n }\n },\n onStart: (evt) => {\n tapX.value = evt.absoluteX;\n tapY.value = evt.absoluteY;\n },\n });\n\n /**\n * If the header is visible we scale down the opacity of it as the\n * image is swiped downward\n */\n const headerFooterOpacity = useDerivedValue(\n () =>\n currentImageHeight * scale.value < screenHeight && translateY.value > 0\n ? 1 - translateY.value / quarterScreenHeight\n : currentImageHeight * scale.value > screenHeight &&\n translateY.value > (currentImageHeight / 2) * scale.value - halfScreenHeight\n ? 1 -\n (translateY.value - ((currentImageHeight / 2) * scale.value - halfScreenHeight)) /\n quarterScreenHeight\n : 1,\n [currentImageHeight],\n );\n\n /**\n * This transition and scaleX reverse lets use scroll left\n */\n const pagerStyle = useAnimatedStyle<ImageStyle>(\n () => ({\n transform: [\n { scaleX: -1 },\n {\n translateX: translationX.value,\n },\n ],\n }),\n [visible],\n );\n\n /**\n * Simple background color animation on Y movement\n */\n const containerBackground = useAnimatedStyle<ViewStyle>(\n () => ({\n backgroundColor: backgroundColor || white_snow,\n opacity: headerFooterOpacity.value,\n }),\n [headerFooterOpacity],\n );\n\n /**\n * Show screen style as component is always rendered we hide it\n * down and up and set opacity to 0 for good measure\n */\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: interpolate(showScreen.value, [0, 0.01, 1], [0, 1, 1]),\n transform: [\n {\n translateY: interpolate(showScreen.value, [0, 1], [screenHeight, 0]),\n },\n ],\n }),\n [],\n );\n\n /**\n * Functions toclose BottomSheetModal with image grid\n */\n const closeGridView = () => {\n if (bottomSheetModalRef.current?.close) {\n bottomSheetModalRef.current.close();\n setGridPhotos([]);\n }\n };\n\n /**\n * Function to open BottomSheetModal with image grid\n */\n const openGridView = () => {\n if (bottomSheetModalRef.current?.present) {\n bottomSheetModalRef.current.present();\n setGridPhotos(photos);\n }\n };\n\n return (\n <Animated.View\n pointerEvents={visible ? 'auto' : 'none'}\n style={[StyleSheet.absoluteFillObject, showScreenStyle]}\n >\n <Animated.View style={[StyleSheet.absoluteFillObject, containerBackground]} />\n <TapGestureHandler\n minPointers={1}\n numberOfTaps={1}\n onGestureEvent={onSingleTap}\n ref={singleTapRef}\n waitFor={[panRef, pinchRef, doubleTapRef]}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <TapGestureHandler\n maxDeltaX={8}\n maxDeltaY={8}\n maxDist={8}\n minPointers={1}\n numberOfTaps={2}\n onGestureEvent={onDoubleTap}\n ref={doubleTapRef}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <PinchGestureHandler\n onGestureEvent={onPinch}\n ref={pinchRef}\n simultaneousHandlers={[panRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <PanGestureHandler\n enabled={overlay === 'gallery'}\n maxPointers={isAndroid ? undefined : 1}\n minDist={10}\n onGestureEvent={onPan}\n ref={panRef}\n simultaneousHandlers={[pinchRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <Animated.View\n style={[\n styles.animatedContainer,\n pagerStyle,\n {\n transform: [\n { scaleX: -1 }, // Also only here for opening, wrong direction when not included\n {\n translateX: translationX.value, // Only here for opening, wrong index when this is not included\n },\n ],\n },\n ]}\n >\n {photos.map((photo, i) => (\n <AnimatedGalleryImage\n index={i}\n key={`${photo.uri}-${i}`}\n offsetScale={offsetScale}\n photo={photo}\n previous={selectedIndex > i}\n scale={scale}\n screenHeight={screenHeight}\n selected={selectedIndex === i}\n shouldRender={Math.abs(selectedIndex - i) < 4}\n style={{\n height: screenHeight * 8,\n marginRight: MARGIN,\n width: screenWidth * 8,\n }}\n translateX={translateX}\n translateY={translateY}\n />\n ))}\n </Animated.View>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </PinchGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n <ImageGalleryHeader<Us>\n opacity={headerFooterOpacity}\n photo={photos[selectedIndex]}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.header}\n />\n <ImageGalleryFooter<Us>\n opacity={headerFooterOpacity}\n openGridView={openGridView}\n photo={photos[selectedIndex]}\n photoLength={photoLength}\n selectedIndex={selectedIndex}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.footer}\n />\n <ImageGalleryOverlay\n animatedBottomSheetIndex={animatedBottomSheetIndex}\n closeGridView={closeGridView}\n currentBottomSheetIndex={currentBottomSheetIndex}\n />\n <BottomSheetModalProvider>\n <BottomSheetModal\n animatedIndex={animatedBottomSheetIndex}\n enablePanDownToClose={true}\n handleComponent={() => (\n <ImageGridHandle\n closeGridView={closeGridView}\n {...imageGalleryCustomComponents?.gridHandle}\n />\n )}\n handleHeight={imageGalleryGridHandleHeight ?? 40}\n index={0}\n onChange={(index: number) => setCurrentBottomSheetIndex(index)}\n ref={bottomSheetModalRef}\n snapPoints={imageGalleryGridSnapPoints || snapPoints}\n >\n <ImageGrid\n closeGridView={closeGridView}\n numberOfImageGalleryGridColumns={numberOfImageGalleryGridColumns}\n photos={gridPhotos}\n resetVisibleValues={resetVisibleValues}\n setImage={setImage}\n {...imageGalleryCustomComponents?.grid}\n />\n </BottomSheetModal>\n </BottomSheetModalProvider>\n </Animated.View>\n );\n};\n\n/**\n * Clamping worklet to clamp the scaling\n */\nexport const clamp = (value: number, lowerBound: number, upperBound: number) => {\n 'worklet';\n return Math.min(Math.max(lowerBound, value), upperBound);\n};\n\nconst styles = StyleSheet.create({\n animatedContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n },\n});\n\nexport type Photo<Us extends UnknownType = DefaultUserType> = {\n id: string;\n uri: string;\n channelId?: string;\n created_at?: string | Date;\n messageId?: string;\n original_height?: number;\n original_width?: number;\n user?: UserResponse<Us> | null;\n user_id?: string;\n};\n\nImageGallery.displayName = 'ImageGallery{imageGallery}';\n"]}
1
+ {"version":3,"sources":["ImageGallery.tsx"],"names":["isAndroid","Platform","OS","fullScreenHeight","Dimensions","get","height","measuredScreenHeight","screenWidth","halfScreenWidth","MARGIN","HasPinched","IsSwiping","ImageGallery","props","imageGalleryCustomComponents","imageGalleryGridHandleHeight","imageGalleryGridSnapPoints","numberOfImageGalleryGridColumns","overlayOpacity","visible","theme","white_snow","colors","backgroundColor","imageGallery","gridPhotos","setGridPhotos","overlay","setOverlay","translucentStatusBar","image","images","setImage","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","androidScreenHeightAdjustment","screenHeight","halfScreenHeight","quarterScreenHeight","snapPoints","React","useMemo","bottomSheetModalRef","currentBottomSheetIndex","setCurrentBottomSheetIndex","animatedBottomSheetIndex","showScreen","fadeScreen","show","value","duration","easing","Easing","out","ease","Keyboard","dismiss","currentImageHeight","setCurrentImageHeight","selectedIndex","setSelectedIndex","index","headerFooterVisible","hasHitBottomScale","hasHitTopScale","doubleTapRef","panRef","pinchRef","singleTapRef","offsetX","offsetY","translateX","translateY","offsetScale","scale","translationX","originX","originY","focalX","focalY","oldFocalX","oldFocalY","focalOffsetX","focalOffsetY","adjustedFocalX","adjustedFocalY","tapX","tapY","numberOfPinchFingers","isSwiping","isPinch","hasPinched","resetTouchValues","UNDETERMINED","resetMovementValues","resetVisibleValues","photos","reduce","acc","cur","attachmentImages","attachments","filter","attachment","type","title_link","og_scrape_url","attachmentPhotos","map","a","imageUrl","channelId","cid","created_at","id","messageId","original_height","original_width","uri","url","width","user","user_id","photoLength","length","updatePosition","newIndex","findIndex","photo","uriForCurrentImage","imageHeight","Math","floor","Image","getSize","onPan","onActive","evt","numberOfPointers","TRUE","FALSE","translationY","maxXYRatio","abs","localEvtScale","onFinish","finalXPosition","velocityX","finalYPosition","velocityY","clamp","deceleration","velocity","onStart","onPinch","triggerHaptic","onSingleTap","onDoubleTap","absoluteX","absoluteY","translateYTopBottom","headerFooterOpacity","pagerStyle","transform","scaleX","containerBackground","opacity","showScreenStyle","closeGridView","current","close","openGridView","present","StyleSheet","absoluteFillObject","absoluteFill","undefined","styles","animatedContainer","i","marginRight","header","footer","gridHandle","grid","lowerBound","upperBound","min","max","create","alignItems","flexDirection","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport {\n Dimensions,\n Image,\n ImageStyle,\n Keyboard,\n Platform,\n StatusBar,\n StyleSheet,\n ViewStyle,\n} from 'react-native';\n\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n PinchGestureHandler,\n PinchGestureHandlerGestureEvent,\n TapGestureHandler,\n TapGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\n\nimport Animated, {\n cancelAnimation,\n Easing,\n interpolate,\n runOnJS,\n runOnUI,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withDecay,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { BottomSheetModal, BottomSheetModalProvider } from '@gorhom/bottom-sheet';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { AnimatedGalleryImage } from './components/AnimatedGalleryImage';\nimport {\n ImageGalleryFooter,\n ImageGalleryFooterCustomComponentProps,\n} from './components/ImageGalleryFooter';\nimport {\n ImageGalleryHeader,\n ImageGalleryHeaderCustomComponentProps,\n} from './components/ImageGalleryHeader';\nimport { ImageGalleryOverlay } from './components/ImageGalleryOverlay';\nimport { ImageGalleryGridImageComponents, ImageGrid } from './components/ImageGrid';\nimport {\n ImageGalleryGridHandleCustomComponentProps,\n ImageGridHandle,\n} from './components/ImageGridHandle';\n\nimport { useImageGalleryContext } from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport { useOverlayContext } from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { triggerHaptic } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { getUrlOfImageAttachment } from '../../utils/getUrlOfImageAttachment';\nimport { vh, vw } from '../../utils/utils';\n\nconst isAndroid = Platform.OS === 'android';\nconst fullScreenHeight = Dimensions.get('screen').height;\nconst measuredScreenHeight = vh(100);\nconst screenWidth = vw(100);\nconst halfScreenWidth = vw(50);\nconst MARGIN = 32;\n\nexport enum HasPinched {\n FALSE = 0,\n TRUE,\n}\n\nexport enum IsSwiping {\n UNDETERMINED = 0,\n TRUE,\n FALSE,\n}\n\nexport type ImageGalleryCustomComponents<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Override props for following UI components, which are part of [image gallery](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#gallery-components).\n *\n * - [ImageGalleryFooter](#ImageGalleryFooter)\n *\n * - [ImageGrid](#ImageGrid)\n *\n * - [ImageGridHandle](#ImageGridHandle)\n *\n * - [ImageGalleryHeader](#ImageGalleryHeader)\n *\n * e.g.,\n *\n * ```js\n * {\n * footer: {\n * ShareIcon: CustomShareIconComponent\n * },\n * grid: {\n * avatarComponent: CustomAvatarComponent\n * },\n * gridHandle: {\n * centerComponent: CustomCenterComponent\n * },\n * header: {\n * CloseIcon: CustomCloseButtonComponent\n * },\n * }\n * ```\n * @overrideType object\n */\n imageGalleryCustomComponents?: {\n footer?: ImageGalleryFooterCustomComponentProps<StreamChatGenerics>;\n grid?: ImageGalleryGridImageComponents<StreamChatGenerics>;\n gridHandle?: ImageGalleryGridHandleCustomComponentProps;\n header?: ImageGalleryHeaderCustomComponentProps<StreamChatGenerics>;\n };\n};\n\ntype Props<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n ImageGalleryCustomComponents<StreamChatGenerics> & {\n overlayOpacity: Animated.SharedValue<number>;\n visible: boolean;\n imageGalleryGridHandleHeight?: number;\n /**\n * This should be\n */\n imageGalleryGridSnapPoints?: [string | number, string | number];\n numberOfImageGalleryGridColumns?: number;\n };\n\nexport const ImageGallery = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: Props<StreamChatGenerics>,\n) => {\n const {\n imageGalleryCustomComponents,\n imageGalleryGridHandleHeight,\n imageGalleryGridSnapPoints,\n numberOfImageGalleryGridColumns,\n overlayOpacity,\n visible,\n } = props;\n const {\n theme: {\n colors: { white_snow },\n imageGallery: { backgroundColor },\n },\n } = useTheme();\n const [gridPhotos, setGridPhotos] = useState<Photo<StreamChatGenerics>[]>([]);\n const { overlay, setOverlay, translucentStatusBar } = useOverlayContext();\n const { image, images, setImage } = useImageGalleryContext<StreamChatGenerics>();\n\n /**\n * Height constants\n */\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - measuredScreenHeight - statusBarHeight;\n const androidScreenHeightAdjustment = translucentStatusBar\n ? bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? 0\n : statusBarHeight\n : bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? -statusBarHeight\n : 0;\n const screenHeight = isAndroid\n ? Dimensions.get('window').height + androidScreenHeightAdjustment\n : vh(100);\n const halfScreenHeight = screenHeight / 2;\n const quarterScreenHeight = screenHeight / 4;\n const snapPoints = React.useMemo(() => [(screenHeight * 9) / 10], []);\n\n /**\n * BottomSheetModal ref\n */\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n\n /**\n * BottomSheetModal state\n */\n const [currentBottomSheetIndex, setCurrentBottomSheetIndex] = useState(0);\n const animatedBottomSheetIndex = useSharedValue(0);\n\n /**\n * Fade animation for screen, it is always rendered with pointerEvents\n * set to none for fast opening\n */\n const showScreen = useSharedValue(0);\n const fadeScreen = (show: boolean) => {\n 'worklet';\n showScreen.value = withTiming(show ? 1 : 0, {\n duration: 250,\n easing: Easing.out(Easing.ease),\n });\n };\n\n /**\n * Run the fade animation on visible change\n */\n useEffect(() => {\n if (visible) {\n Keyboard.dismiss();\n }\n fadeScreen(visible);\n }, [visible]);\n\n /**\n * Image height from URL or default to full screen height\n */\n const [currentImageHeight, setCurrentImageHeight] = useState<number>(screenHeight);\n\n /**\n * JS and UI index values, the JS follows the UI but is needed\n * for rendering the virtualized image list\n */\n const [selectedIndex, setSelectedIndex] = useState(0);\n const index = useSharedValue(0);\n\n /**\n * Header visible value for animating in out\n */\n const headerFooterVisible = useSharedValue(1);\n\n /**\n * Values to track scale for haptic feedback firing\n */\n const hasHitBottomScale = useSharedValue(1);\n const hasHitTopScale = useSharedValue(0);\n\n /**\n * Gesture handler refs\n */\n const doubleTapRef = useRef<TapGestureHandler>(null);\n const panRef = useRef<PanGestureHandler>(null);\n const pinchRef = useRef<PinchGestureHandler>(null);\n const singleTapRef = useRef<TapGestureHandler>(null);\n\n /**\n * Shared values for movement\n */\n const offsetX = useSharedValue(0);\n const offsetY = useSharedValue(0);\n const translateX = useSharedValue(0);\n const translateY = useSharedValue(0);\n const offsetScale = useSharedValue(1);\n const scale = useSharedValue(1);\n const translationX = useSharedValue(0);\n\n /**\n * Shared values for touch tracking\n */\n const originX = useSharedValue(0);\n const originY = useSharedValue(0);\n const focalX = useSharedValue(0);\n const focalY = useSharedValue(0);\n const oldFocalX = useSharedValue(0);\n const oldFocalY = useSharedValue(0);\n const focalOffsetX = useSharedValue(0);\n const focalOffsetY = useSharedValue(0);\n const adjustedFocalX = useSharedValue(0);\n const adjustedFocalY = useSharedValue(0);\n const tapX = useSharedValue(0);\n const tapY = useSharedValue(0);\n\n /**\n * Shared values for gesture tracking\n */\n const numberOfPinchFingers = useSharedValue(0);\n const isSwiping = useSharedValue(0);\n const isPinch = useSharedValue(false);\n const hasPinched = useSharedValue(0);\n\n /**\n * Reset gesture values for use on touch release\n */\n const resetTouchValues = () => {\n 'worklet';\n focalX.value = 0;\n focalY.value = 0;\n oldFocalX.value = 0;\n oldFocalY.value = 0;\n originX.value = 0;\n originY.value = 0;\n focalOffsetX.value = 0;\n focalOffsetY.value = 0;\n numberOfPinchFingers.value = 0;\n isPinch.value = false;\n isSwiping.value = IsSwiping.UNDETERMINED;\n };\n\n /**\n * Reset movement values for use on selected photo change\n */\n const resetMovementValues = () => {\n 'worklet';\n translateX.value = 0;\n translateY.value = 0;\n scale.value = 1;\n offsetScale.value = 1;\n };\n\n /**\n * Reset all key values for visible\n */\n const resetVisibleValues = () => {\n 'worklet';\n resetTouchValues();\n resetMovementValues();\n headerFooterVisible.value = 1;\n offsetX.value = 0;\n offsetY.value = 0;\n adjustedFocalX.value = 0;\n adjustedFocalY.value = 0;\n tapX.value = 0;\n tapY.value = 0;\n };\n\n useEffect(() => {\n if (!visible) {\n resetVisibleValues();\n }\n }, [visible]);\n\n /**\n * Photos array created from all currently available\n * photo attachments\n */\n const photos = images.reduce((acc: Photo<StreamChatGenerics>[], cur) => {\n const attachmentImages =\n cur.attachments?.filter(\n (attachment) =>\n attachment.type === 'image' &&\n !attachment.title_link &&\n !attachment.og_scrape_url &&\n getUrlOfImageAttachment(attachment),\n ) || [];\n\n const attachmentPhotos = attachmentImages.map((a) => {\n const imageUrl = getUrlOfImageAttachment(a) as string;\n\n return {\n channelId: cur.cid,\n created_at: cur.created_at,\n id: `photoId-${cur.id}-${imageUrl}`,\n messageId: cur.id,\n original_height: a.original_height,\n original_width: a.original_width,\n uri: getResizedImageUrl({\n height: screenHeight,\n url: imageUrl,\n width: screenWidth,\n }),\n user: cur.user,\n user_id: cur.user_id,\n };\n });\n\n return [...acc, ...attachmentPhotos] as Photo<StreamChatGenerics>[];\n }, []);\n\n /**\n * Photos length needs to be kept as a const here so if the length\n * changes it causes the pan gesture handler function to refresh. This\n * does not work if the calculation for the length of the array is left\n * inside the gesture handler as it will have an array as a dependency\n */\n const photoLength = photos.length;\n\n /**\n * Set selected photo when changed via pressing in the message list\n */\n useEffect(() => {\n const updatePosition = (newIndex: number) => {\n 'worklet';\n\n if (newIndex > -1) {\n index.value = newIndex;\n translationX.value = -(screenWidth + MARGIN) * newIndex;\n runOnJS(setSelectedIndex)(newIndex);\n }\n };\n\n const newIndex = photos.findIndex(\n (photo) => photo.messageId === image?.messageId && photo.uri === image?.url,\n );\n\n runOnUI(updatePosition)(newIndex);\n }, [image, photoLength]);\n\n /**\n * Image heights are not provided and therefore need to be calculated.\n * We start by allowing the image to be the full height then reduce it\n * to the proper scaled height based on the width being restricted to the\n * screen width when the dimensions are received.\n */\n const uriForCurrentImage = photos[selectedIndex]?.uri;\n useEffect(() => {\n setCurrentImageHeight(screenHeight);\n const photo = photos[index.value];\n const height = photo?.original_height;\n const width = photo?.original_width;\n\n if (height && width) {\n const imageHeight = Math.floor(height * (screenWidth / width));\n setCurrentImageHeight(imageHeight > screenHeight ? screenHeight : imageHeight);\n } else if (photo?.uri) {\n Image.getSize(photo.uri, (width, height) => {\n const imageHeight = Math.floor(height * (screenWidth / width));\n setCurrentImageHeight(imageHeight > screenHeight ? screenHeight : imageHeight);\n });\n }\n }, [uriForCurrentImage]);\n\n /**\n * We use simultaneousHandlers to allow pan and pinch gesture handlers\n * depending on the gesture. The touch is fully handled by the pinch\n * gesture handler once it has began so all interactions by the pan\n * handler are blocked if isPinch.value is true\n */\n const onPan = useAnimatedGestureHandler<PanGestureHandlerGestureEvent>(\n {\n onActive: (evt) => {\n if (evt.numberOfPointers === 1 && !isPinch.value) {\n /**\n * If Android where a second finger cannot be added back and\n * removing one finger returns to Pan Handler then adjust origin\n * on finger remove and set swiping false\n */\n if (isAndroid && hasPinched.value === HasPinched.TRUE) {\n hasPinched.value = HasPinched.FALSE;\n isSwiping.value = IsSwiping.FALSE;\n offsetX.value = translateX.value + evt.translationX;\n offsetY.value = translateY.value - evt.translationY;\n }\n\n /**\n * isSwiping is used to prevent Y movement if a clear swipe to next\n * or previous is begun when at the edge of a photo. The value is\n * either 0, 1, or 2, via the IsSwiping enum designating undetermined,\n * true, or false and is reset on releasing the touch\n */\n if (isSwiping.value === IsSwiping.UNDETERMINED) {\n const maxXYRatio = isAndroid ? 1 : 0.25;\n if (\n Math.abs(evt.translationX / evt.translationY) > maxXYRatio &&\n (Math.abs(-halfScreenWidth * (scale.value - 1) - offsetX.value) < 3 ||\n Math.abs(halfScreenWidth * (scale.value - 1) - offsetX.value) < 3)\n ) {\n isSwiping.value = IsSwiping.TRUE;\n }\n if (Math.abs(evt.translationY) > 25) {\n isSwiping.value = IsSwiping.FALSE;\n }\n }\n\n /**\n * localEvtScale is used for swipe away\n */\n const localEvtScale = scale.value / offsetScale.value;\n\n /**\n * If not swiping translate the image in X and Y to the event\n * translation plus offset. If swiping only translate X, if\n * swiping down when at top of screen or centered balance scale\n * using offset to a degree (this needs improvement the calculation\n * is incorrect but likely needs origin use to be 100%)\n */\n translateX.value =\n scale.value !== offsetScale.value\n ? offsetX.value * localEvtScale - evt.translationX\n : offsetX.value - evt.translationX;\n translateY.value =\n isSwiping.value !== IsSwiping.TRUE\n ? scale.value !== offsetScale.value\n ? offsetY.value * localEvtScale + evt.translationY\n : offsetY.value + evt.translationY\n : translateY.value;\n\n /**\n * If swiping down start scaling down the image for swipe\n * away effect\n */\n scale.value =\n currentImageHeight * offsetScale.value < screenHeight && translateY.value > 0\n ? offsetScale.value * (1 - (1 / 3) * (translateY.value / screenHeight))\n : currentImageHeight * offsetScale.value > screenHeight &&\n translateY.value > (currentImageHeight / 2) * offsetScale.value - halfScreenHeight\n ? offsetScale.value *\n (1 -\n (1 / 3) *\n ((translateY.value -\n ((currentImageHeight / 2) * offsetScale.value - halfScreenHeight)) /\n screenHeight))\n : scale.value;\n\n overlayOpacity.value = localEvtScale;\n }\n },\n onFinish: (evt) => {\n if (!isPinch.value && evt.numberOfPointers < 2) {\n /**\n * To determine if the fling should page to the next image we\n * calculate a final position based on the current position and\n * event velocity\n */\n const finalXPosition = evt.translationX - evt.velocityX * 0.3;\n const finalYPosition = evt.translationY + evt.velocityY * 0.1;\n\n /**\n * If there is a next photo, the image is lined up to the right\n * edge, the swipe is to the left, and the final position is more\n * than half the screen width, move to the next image\n */\n if (\n index.value < photoLength - 1 &&\n Math.abs(halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&\n translateX.value < 0 &&\n finalXPosition < -halfScreenWidth &&\n isSwiping.value === IsSwiping.TRUE\n ) {\n cancelAnimation(translationX);\n translationX.value = withTiming(\n -(screenWidth + MARGIN) * (index.value + 1),\n {\n duration: 200,\n easing: Easing.out(Easing.ease),\n },\n () => {\n resetMovementValues();\n index.value = index.value + 1;\n runOnJS(setSelectedIndex)(index.value);\n },\n );\n\n /**\n * If there is a previous photo, the image is lined up to the left\n * edge, the swipe is to the right, and the final position is more\n * than half the screen width, move to the previous image\n */\n } else if (\n index.value > 0 &&\n Math.abs(-halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&\n translateX.value > 0 &&\n finalXPosition > halfScreenWidth &&\n isSwiping.value === IsSwiping.TRUE\n ) {\n cancelAnimation(translationX);\n translationX.value = withTiming(\n -(screenWidth + MARGIN) * (index.value - 1),\n {\n duration: 200,\n easing: Easing.out(Easing.ease),\n },\n () => {\n resetMovementValues();\n index.value = index.value - 1;\n runOnJS(setSelectedIndex)(index.value);\n },\n );\n }\n\n /**\n * When the pan is finished if the scale is less than 1 return the\n * photo to center, if the photo is inside the edges of the screen\n * return the photo to line up with the edges, otherwise use decay\n * with a clamping at the edges to give the effect the image is\n * sliding along using velocity and friction\n */\n translateX.value =\n scale.value < 1\n ? withTiming(0)\n : translateX.value > halfScreenWidth * (scale.value - 1)\n ? withTiming(halfScreenWidth * (scale.value - 1), {\n duration: 200,\n })\n : translateX.value < -halfScreenWidth * (scale.value - 1)\n ? withTiming(-halfScreenWidth * (scale.value - 1), {\n duration: 200,\n })\n : withDecay({\n clamp: [\n -halfScreenWidth * (scale.value - 1),\n halfScreenWidth * (scale.value - 1),\n ],\n deceleration: 0.99,\n velocity: -evt.velocityX,\n });\n\n /**\n * When the pan is finished if the height is less than the screen\n * height return the photo to center, if the photo is inside the\n * edges of the screen return the photo to line up with the edges,\n * otherwise use decay with a clamping at the edges to give the effect\n * the image is sliding along using velocity and friction\n */\n translateY.value =\n currentImageHeight * scale.value < screenHeight\n ? withTiming(0)\n : translateY.value > (currentImageHeight / 2) * scale.value - halfScreenHeight\n ? withTiming((currentImageHeight / 2) * scale.value - halfScreenHeight)\n : translateY.value < (-currentImageHeight / 2) * scale.value + halfScreenHeight\n ? withTiming((-currentImageHeight / 2) * scale.value + halfScreenHeight)\n : withDecay({\n clamp: [\n (-currentImageHeight / 2) * scale.value + halfScreenHeight,\n (currentImageHeight / 2) * scale.value - halfScreenHeight,\n ],\n deceleration: 0.99,\n velocity: evt.velocityY,\n });\n\n resetTouchValues();\n\n /**\n * If the scale has been reduced below one, i.e. zoomed out, translate\n * the zoom back to one\n */\n scale.value =\n scale.value !== offsetScale.value ? withTiming(offsetScale.value) : offsetScale.value;\n\n /**\n * If the photo is centered or at the top of the screen if scaled larger\n * than the screen, and not paging left or right, and the final Y position\n * is greater than half the screen using swipe velocity and position, close\n * the overlay\n */\n if (\n finalYPosition > halfScreenHeight &&\n offsetY.value + 8 >= (currentImageHeight / 2) * scale.value - halfScreenHeight &&\n isSwiping.value !== IsSwiping.TRUE &&\n translateY.value !== 0 &&\n !(\n Math.abs(halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&\n translateX.value < 0 &&\n finalXPosition < -halfScreenWidth\n ) &&\n !(\n Math.abs(-halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&\n translateX.value > 0 &&\n finalXPosition > halfScreenWidth\n )\n ) {\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n cancelAnimation(scale);\n overlayOpacity.value = withTiming(\n 0,\n {\n duration: 200,\n easing: Easing.out(Easing.ease),\n },\n () => {\n showScreen.value = 0;\n runOnJS(setOverlay)('none');\n },\n );\n scale.value = withTiming(0.6, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n translateY.value =\n evt.velocityY > 1000\n ? withDecay({\n velocity: evt.velocityY,\n })\n : withTiming(halfScreenHeight + (currentImageHeight / 2) * scale.value, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n translateX.value = withDecay({\n velocity: -evt.velocityX,\n });\n }\n }\n },\n\n onStart: () => {\n if (!isPinch.value) {\n /**\n * Cancel any previous motion animation on translations when a touch\n * begins to interrupt the animation and take over the position handling\n */\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n cancelAnimation(scale);\n offsetX.value = translateX.value;\n offsetY.value = translateY.value;\n }\n\n /**\n * Reset hasPinched for Android single finger offset\n */\n hasPinched.value = HasPinched.FALSE;\n },\n },\n [currentImageHeight, photoLength],\n );\n\n /**\n * On pinch is run when two or more fingers touch the screen, it then takes over\n * all touch handling even if the number of fingers is reduced to one until the\n * touch is complete\n */\n const onPinch = useAnimatedGestureHandler<PinchGestureHandlerGestureEvent>(\n {\n onActive: (evt) => {\n /**\n * Android starts with a zero event with 1 touch instead of two\n * we therefore must wait to capture starting info until the double\n * touch begins\n */\n if (!isPinch.value && isAndroid) {\n /**\n * Set hasPinched to true so when removing one finger the pan active\n * state adjusts the offset\n */\n hasPinched.value = HasPinched.TRUE;\n\n /**\n * Cancel any previous motion animation on translations when a touch\n * begins to interrupt the animation and take over the position handling\n */\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n cancelAnimation(scale);\n\n /**\n * Reset isSwiping as now the pan gesture handler is no longer running\n */\n isSwiping.value = IsSwiping.UNDETERMINED;\n\n /**\n * Set initial values for pinch gesture interaction handler\n */\n numberOfPinchFingers.value = evt.numberOfPointers;\n offsetX.value = translateX.value;\n offsetY.value = translateY.value;\n adjustedFocalX.value = evt.focalX - (halfScreenWidth - offsetX.value);\n adjustedFocalY.value = evt.focalY - (halfScreenHeight + offsetY.value);\n originX.value = adjustedFocalX.value;\n originY.value = adjustedFocalY.value;\n offsetScale.value = scale.value;\n }\n\n /**\n * Set pinch to true to stop all pan gesture interactions, we do this\n * again here for Android outside the check that creates type\n */\n isPinch.value = true;\n\n /**\n * The scale is clamped to a minimum of 1 and maximum of 8 for aesthetics.\n * We use the clamped value to determine a local event scale so the focal\n * point does not become out of sync with the actual photo scaling, e.g.\n * evt.scale is 20 but scale is 8, using evt.scale for offset will put the\n * photo and calculations out of sync\n */\n scale.value = clamp(offsetScale.value * evt.scale, 1, 8);\n const localEvtScale = scale.value / offsetScale.value;\n\n /**\n * When we hit the top or bottom of the scale clamping we run a haptic\n * trigger, we track if it has been run to not spam the trigger\n */\n if (scale.value !== 8 && scale.value !== 1) {\n hasHitTopScale.value = 0;\n hasHitBottomScale.value = 0;\n } else if (scale.value === 8 && hasHitTopScale.value === 0) {\n hasHitTopScale.value = 1;\n runOnJS(triggerHaptic)('impactLight');\n } else if (scale.value === 1 && hasHitBottomScale.value === 0) {\n hasHitBottomScale.value = 1;\n runOnJS(triggerHaptic)('impactLight');\n }\n\n /**\n * We calculate the adjusted focal point on the photo using the events\n * focal position on the screen, screen size, and current photo offset\n */\n adjustedFocalX.value = evt.focalX - (halfScreenWidth - offsetX.value);\n adjustedFocalY.value = evt.focalY - (halfScreenHeight + offsetY.value);\n\n /**\n * If the number of fingers on the screen changes, the position of the\n * focal point will change and this needs to be accounted for, e.g. if\n * two fingers are on the screen the focal is between them, but if one is\n * then removed the focal is now at the remaining fingers touch position.\n * If this happens without accounting for the change the image will jump\n * around, we keep track of the previous two finger focal to adjust for this\n * change in a reduction from two fingers to one, then if another finger\n * is added again we adjust the origin to account for the difference between\n * the original two finger touch and the new two finger touch position.\n */\n if (numberOfPinchFingers.value !== evt.numberOfPointers) {\n numberOfPinchFingers.value = evt.numberOfPointers;\n if (evt.numberOfPointers === 1) {\n focalOffsetX.value = oldFocalX.value - adjustedFocalX.value;\n focalOffsetY.value = oldFocalY.value - adjustedFocalY.value;\n } else if (numberOfPinchFingers.value > 1) {\n originX.value =\n originX.value -\n (oldFocalX.value / localEvtScale - adjustedFocalX.value / localEvtScale);\n originY.value =\n originY.value -\n (oldFocalY.value / localEvtScale - adjustedFocalY.value / localEvtScale);\n }\n }\n\n /**\n * If pinch handler has been activated via two fingers then the fingers\n * reduced to one we keep track of the old focal using the focal offset\n * from when the number of fingers was two. We then translate the photo\n * taking into account the offset, focal, focal offset, origin, and scale.\n */\n if (numberOfPinchFingers.value === 1) {\n oldFocalX.value = adjustedFocalX.value + focalOffsetX.value;\n oldFocalY.value = adjustedFocalY.value + focalOffsetY.value;\n translateX.value = offsetX.value - oldFocalX.value + localEvtScale * originX.value;\n translateY.value = offsetY.value + oldFocalY.value - localEvtScale * originY.value;\n\n /**\n * If the number of fingers in the gesture is greater than one the\n * adjusted focal point is saved as the old focal and the photo is\n * translated taking into account the offset, focal, origin, and scale.\n */\n } else if (numberOfPinchFingers.value > 1) {\n oldFocalX.value = adjustedFocalX.value;\n oldFocalY.value = adjustedFocalY.value;\n translateX.value = offsetX.value - adjustedFocalX.value + localEvtScale * originX.value;\n translateY.value = offsetY.value + adjustedFocalY.value - localEvtScale * originY.value;\n }\n },\n onFinish: () => {\n if (isPinch.value) {\n /**\n * When the pinch is finished if the scale is less than 1 return the\n * photo to center, if the photo is inside the edges of the screen\n * return the photo to line up with the edges, otherwise leave the\n * photo in its current position\n */\n translateX.value =\n scale.value < 1\n ? withTiming(0)\n : translateX.value > halfScreenWidth * (scale.value - 1)\n ? withTiming(halfScreenWidth * (scale.value - 1))\n : translateX.value < -halfScreenWidth * (scale.value - 1)\n ? withTiming(-halfScreenWidth * (scale.value - 1))\n : translateX.value;\n\n /**\n * When the pinch is finished if the height is less than the screen\n * height return the photo to center, if the photo is inside the\n * edges of the screen return the photo to line up with the edges,\n * otherwise leave the photo in its current position\n */\n translateY.value =\n currentImageHeight * scale.value < screenHeight\n ? withTiming(0)\n : translateY.value > (currentImageHeight / 2) * scale.value - screenHeight / 2\n ? withTiming((currentImageHeight / 2) * scale.value - screenHeight / 2)\n : translateY.value < (-currentImageHeight / 2) * scale.value + screenHeight / 2\n ? withTiming((-currentImageHeight / 2) * scale.value + screenHeight / 2)\n : translateY.value;\n\n /**\n * If the scale has been reduced below one, i.e. zoomed out, translate\n * the zoom back to one\n */\n offsetScale.value = scale.value < 1 ? 1 : scale.value;\n scale.value = scale.value < 1 ? withTiming(1) : scale.value;\n resetTouchValues();\n }\n },\n onStart: (evt) => {\n /**\n * Android starts with a zero event with 1 touch instead of two\n * we therefore must wait to capture starting info until the double\n * touch begins\n */\n if (!isAndroid) {\n /**\n * Cancel any previous motion animation on translations when a touch\n * begins to interrupt the animation and take over the position handling\n */\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n cancelAnimation(scale);\n\n /**\n * Set pinch to true to stop all pan gesture interactions\n */\n isPinch.value = true;\n\n /**\n * Reset isSwiping as now the pan gesture handler is no longer running\n */\n isSwiping.value = IsSwiping.UNDETERMINED;\n\n /**\n * Set initial values for pinch gesture interaction handler\n */\n numberOfPinchFingers.value = evt.numberOfPointers;\n offsetX.value = translateX.value;\n offsetY.value = translateY.value;\n adjustedFocalX.value = evt.focalX - (halfScreenWidth - offsetX.value);\n adjustedFocalY.value = evt.focalY - (halfScreenHeight + offsetY.value);\n originX.value = adjustedFocalX.value;\n originY.value = adjustedFocalY.value;\n offsetScale.value = scale.value;\n }\n\n /**\n * Reset hasPinched for Android single finger offset\n */\n hasPinched.value = HasPinched.FALSE;\n },\n },\n [currentImageHeight],\n );\n\n /**\n * Single tap handler for header hiding and showing\n */\n const onSingleTap = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>({\n onActive: () => {\n cancelAnimation(headerFooterVisible);\n headerFooterVisible.value = headerFooterVisible.value > 0 ? withTiming(0) : withTiming(1);\n },\n });\n\n /**\n * Double tap handler to zoom back out and hide header and footer\n */\n const onDoubleTap = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>({\n onActive: (evt) => {\n if (Math.abs(tapX.value - evt.absoluteX) < 64 && Math.abs(tapY.value - evt.absoluteY) < 64) {\n if (offsetScale.value === 1 && offsetX.value === 0 && offsetY.value === 0) {\n offsetScale.value = 2;\n scale.value = withTiming(2, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n translateX.value = withTiming(evt.absoluteX - halfScreenWidth, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n if (currentImageHeight * 2 > screenHeight) {\n const translateYTopBottom =\n evt.absoluteY > halfScreenHeight\n ? -(currentImageHeight * 2 - screenHeight) / 2\n : (currentImageHeight * 2 - screenHeight) / 2;\n translateY.value = withTiming(translateYTopBottom, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n }\n } else {\n offsetScale.value = 1;\n scale.value = withTiming(1, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n offsetX.value = 0;\n offsetY.value = 0;\n translateX.value = withTiming(0, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n translateY.value = withTiming(0, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n if (headerFooterVisible.value !== 0) {\n cancelAnimation(headerFooterVisible);\n headerFooterVisible.value = withTiming(0);\n }\n }\n }\n },\n onStart: (evt) => {\n tapX.value = evt.absoluteX;\n tapY.value = evt.absoluteY;\n },\n });\n\n /**\n * If the header is visible we scale down the opacity of it as the\n * image is swiped downward\n */\n const headerFooterOpacity = useDerivedValue(\n () =>\n currentImageHeight * scale.value < screenHeight && translateY.value > 0\n ? 1 - translateY.value / quarterScreenHeight\n : currentImageHeight * scale.value > screenHeight &&\n translateY.value > (currentImageHeight / 2) * scale.value - halfScreenHeight\n ? 1 -\n (translateY.value - ((currentImageHeight / 2) * scale.value - halfScreenHeight)) /\n quarterScreenHeight\n : 1,\n [currentImageHeight],\n );\n\n /**\n * This transition and scaleX reverse lets use scroll left\n */\n const pagerStyle = useAnimatedStyle<ImageStyle>(\n () => ({\n transform: [\n { scaleX: -1 },\n {\n translateX: translationX.value,\n },\n ],\n }),\n [visible],\n );\n\n /**\n * Simple background color animation on Y movement\n */\n const containerBackground = useAnimatedStyle<ViewStyle>(\n () => ({\n backgroundColor: backgroundColor || white_snow,\n opacity: headerFooterOpacity.value,\n }),\n [headerFooterOpacity],\n );\n\n /**\n * Show screen style as component is always rendered we hide it\n * down and up and set opacity to 0 for good measure\n */\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: interpolate(showScreen.value, [0, 0.01, 1], [0, 1, 1]),\n transform: [\n {\n translateY: interpolate(showScreen.value, [0, 1], [screenHeight, 0]),\n },\n ],\n }),\n [],\n );\n\n /**\n * Functions toclose BottomSheetModal with image grid\n */\n const closeGridView = () => {\n if (bottomSheetModalRef.current?.close) {\n bottomSheetModalRef.current.close();\n setGridPhotos([]);\n }\n };\n\n /**\n * Function to open BottomSheetModal with image grid\n */\n const openGridView = () => {\n if (bottomSheetModalRef.current?.present) {\n bottomSheetModalRef.current.present();\n setGridPhotos(photos);\n }\n };\n\n return (\n <Animated.View\n pointerEvents={visible ? 'auto' : 'none'}\n style={[StyleSheet.absoluteFillObject, showScreenStyle]}\n >\n <Animated.View style={[StyleSheet.absoluteFillObject, containerBackground]} />\n <TapGestureHandler\n minPointers={1}\n numberOfTaps={1}\n onGestureEvent={onSingleTap}\n ref={singleTapRef}\n waitFor={[panRef, pinchRef, doubleTapRef]}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <TapGestureHandler\n maxDeltaX={8}\n maxDeltaY={8}\n maxDist={8}\n minPointers={1}\n numberOfTaps={2}\n onGestureEvent={onDoubleTap}\n ref={doubleTapRef}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <PinchGestureHandler\n onGestureEvent={onPinch}\n ref={pinchRef}\n simultaneousHandlers={[panRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <PanGestureHandler\n enabled={overlay === 'gallery'}\n maxPointers={isAndroid ? undefined : 1}\n minDist={10}\n onGestureEvent={onPan}\n ref={panRef}\n simultaneousHandlers={[pinchRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <Animated.View\n style={[\n styles.animatedContainer,\n pagerStyle,\n {\n transform: [\n { scaleX: -1 }, // Also only here for opening, wrong direction when not included\n {\n translateX: translationX.value, // Only here for opening, wrong index when this is not included\n },\n ],\n },\n ]}\n >\n {photos.map((photo, i) => (\n <AnimatedGalleryImage\n index={i}\n key={`${photo.uri}-${i}`}\n offsetScale={offsetScale}\n photo={photo}\n previous={selectedIndex > i}\n scale={scale}\n screenHeight={screenHeight}\n selected={selectedIndex === i}\n shouldRender={Math.abs(selectedIndex - i) < 4}\n style={{\n height: screenHeight * 8,\n marginRight: MARGIN,\n width: screenWidth * 8,\n }}\n translateX={translateX}\n translateY={translateY}\n />\n ))}\n </Animated.View>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </PinchGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n <ImageGalleryHeader<StreamChatGenerics>\n opacity={headerFooterOpacity}\n photo={photos[selectedIndex]}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.header}\n />\n <ImageGalleryFooter<StreamChatGenerics>\n opacity={headerFooterOpacity}\n openGridView={openGridView}\n photo={photos[selectedIndex]}\n photoLength={photoLength}\n selectedIndex={selectedIndex}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.footer}\n />\n <ImageGalleryOverlay\n animatedBottomSheetIndex={animatedBottomSheetIndex}\n closeGridView={closeGridView}\n currentBottomSheetIndex={currentBottomSheetIndex}\n />\n <BottomSheetModalProvider>\n <BottomSheetModal\n animatedIndex={animatedBottomSheetIndex}\n enablePanDownToClose={true}\n handleComponent={() => (\n <ImageGridHandle\n closeGridView={closeGridView}\n {...imageGalleryCustomComponents?.gridHandle}\n />\n )}\n handleHeight={imageGalleryGridHandleHeight ?? 40}\n index={0}\n onChange={(index: number) => setCurrentBottomSheetIndex(index)}\n ref={bottomSheetModalRef}\n snapPoints={imageGalleryGridSnapPoints || snapPoints}\n >\n <ImageGrid\n closeGridView={closeGridView}\n numberOfImageGalleryGridColumns={numberOfImageGalleryGridColumns}\n photos={gridPhotos}\n resetVisibleValues={resetVisibleValues}\n setImage={setImage}\n {...imageGalleryCustomComponents?.grid}\n />\n </BottomSheetModal>\n </BottomSheetModalProvider>\n </Animated.View>\n );\n};\n\n/**\n * Clamping worklet to clamp the scaling\n */\nexport const clamp = (value: number, lowerBound: number, upperBound: number) => {\n 'worklet';\n return Math.min(Math.max(lowerBound, value), upperBound);\n};\n\nconst styles = StyleSheet.create({\n animatedContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n },\n});\n\nexport type Photo<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n id: string;\n uri: string;\n channelId?: string;\n created_at?: string | Date;\n messageId?: string;\n original_height?: number;\n original_width?: number;\n user?: UserResponse<StreamChatGenerics> | null;\n user_id?: string;\n};\n\nImageGallery.displayName = 'ImageGallery{imageGallery}';\n"]}
@@ -180,7 +180,7 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
180
180
  __self: _this,
181
181
  __source: {
182
182
  fileName: _jsxFileName,
183
- lineNumber: 140,
183
+ lineNumber: 148,
184
184
  columnNumber: 5
185
185
  }
186
186
  }, _react["default"].createElement(ReanimatedSafeAreaView, {
@@ -190,7 +190,7 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
190
190
  __self: _this,
191
191
  __source: {
192
192
  fileName: _jsxFileName,
193
- lineNumber: 145,
193
+ lineNumber: 153,
194
194
  columnNumber: 7
195
195
  }
196
196
  }, _react["default"].createElement(_reactNative.View, {
@@ -198,7 +198,7 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
198
198
  __self: _this,
199
199
  __source: {
200
200
  fileName: _jsxFileName,
201
- lineNumber: 146,
201
+ lineNumber: 154,
202
202
  columnNumber: 9
203
203
  }
204
204
  }, leftElement ? leftElement({
@@ -212,7 +212,7 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
212
212
  __self: _this,
213
213
  __source: {
214
214
  fileName: _jsxFileName,
215
- lineNumber: 150,
215
+ lineNumber: 158,
216
216
  columnNumber: 13
217
217
  }
218
218
  }, _react["default"].createElement(_reactNative.View, {
@@ -220,14 +220,14 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
220
220
  __self: _this,
221
221
  __source: {
222
222
  fileName: _jsxFileName,
223
- lineNumber: 151,
223
+ lineNumber: 159,
224
224
  columnNumber: 15
225
225
  }
226
226
  }, ShareIcon ? ShareIcon : _react["default"].createElement(_icons.Share, {
227
227
  __self: _this,
228
228
  __source: {
229
229
  fileName: _jsxFileName,
230
- lineNumber: 152,
230
+ lineNumber: 160,
231
231
  columnNumber: 42
232
232
  }
233
233
  }))), centerElement ? centerElement({
@@ -240,7 +240,7 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
240
240
  __self: _this,
241
241
  __source: {
242
242
  fileName: _jsxFileName,
243
- lineNumber: 159,
243
+ lineNumber: 167,
244
244
  columnNumber: 13
245
245
  }
246
246
  }, _react["default"].createElement(_reactNative.Text, {
@@ -250,7 +250,7 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
250
250
  __self: _this,
251
251
  __source: {
252
252
  fileName: _jsxFileName,
253
- lineNumber: 160,
253
+ lineNumber: 168,
254
254
  columnNumber: 15
255
255
  }
256
256
  }, t('{{ index }} of {{ photoLength }}', {
@@ -266,7 +266,7 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
266
266
  __self: _this,
267
267
  __source: {
268
268
  fileName: _jsxFileName,
269
- lineNumber: 171,
269
+ lineNumber: 179,
270
270
  columnNumber: 13
271
271
  }
272
272
  }, _react["default"].createElement(_reactNative.View, {
@@ -274,14 +274,14 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
274
274
  __self: _this,
275
275
  __source: {
276
276
  fileName: _jsxFileName,
277
- lineNumber: 172,
277
+ lineNumber: 180,
278
278
  columnNumber: 15
279
279
  }
280
280
  }, GridIcon ? GridIcon : _react["default"].createElement(_icons.Grid, {
281
281
  __self: _this,
282
282
  __source: {
283
283
  fileName: _jsxFileName,
284
- lineNumber: 173,
284
+ lineNumber: 181,
285
285
  columnNumber: 40
286
286
  }
287
287
  }))))));