stream-chat-react-native-core 5.40.0-rc.2 → 5.41.0-beta.1

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 (1350) hide show
  1. package/README.md +2 -1
  2. package/lib/commonjs/components/Attachment/Attachment.js +1 -1
  3. package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
  4. package/lib/commonjs/components/Attachment/Card.js +6 -6
  5. package/lib/commonjs/components/Attachment/Card.js.map +1 -1
  6. package/lib/commonjs/components/Attachment/FileAttachment.js +5 -5
  7. package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
  8. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +1 -1
  9. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js.map +1 -1
  10. package/lib/commonjs/components/Attachment/Gallery.js +22 -29
  11. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  12. package/lib/commonjs/components/Attachment/Giphy.js +8 -8
  13. package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
  14. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGallery.js +0 -7
  15. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -1
  16. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js +1 -3
  17. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js.map +1 -1
  18. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js +0 -3
  19. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js.map +1 -1
  20. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js +0 -4
  21. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js.map +1 -1
  22. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js +0 -2
  23. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -1
  24. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnailGrid.js +0 -2
  25. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnailGrid.js.map +1 -1
  26. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js +3 -3
  27. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  28. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js +27 -0
  29. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js.map +1 -1
  30. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +2 -1
  31. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  32. package/lib/commonjs/components/Avatar/Avatar.js +0 -4
  33. package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
  34. package/lib/commonjs/components/Avatar/GroupAvatar.js +0 -4
  35. package/lib/commonjs/components/Avatar/GroupAvatar.js.map +1 -1
  36. package/lib/commonjs/components/Channel/Channel.js +445 -301
  37. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  38. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js +2 -0
  39. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  40. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +9 -3
  41. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  42. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +15 -27
  43. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  44. package/lib/commonjs/components/Channel/hooks/useCreateThreadContext.js +9 -8
  45. package/lib/commonjs/components/Channel/hooks/useCreateThreadContext.js.map +1 -1
  46. package/lib/commonjs/components/ChannelList/ChannelList.js +2 -0
  47. package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
  48. package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js +1 -1
  49. package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
  50. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js +18 -8
  51. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  52. package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js +46 -3
  53. package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
  54. package/lib/commonjs/components/Chat/Chat.js +11 -2
  55. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  56. package/lib/commonjs/components/Chat/hooks/handleEventToSyncDB.js +13 -3
  57. package/lib/commonjs/components/Chat/hooks/handleEventToSyncDB.js.map +1 -1
  58. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +2 -0
  59. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  60. package/lib/commonjs/components/Chat/hooks/useIsOnline.js +13 -16
  61. package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
  62. package/lib/commonjs/components/{UIComponents/ImageBackground.js → ImageBackground.js} +1 -1
  63. package/lib/commonjs/components/ImageBackground.js.map +1 -0
  64. package/lib/commonjs/components/ImageGallery/ImageGallery.js +96 -58
  65. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  66. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +3 -3
  67. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  68. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +90 -92
  69. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  70. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +39 -39
  71. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  72. package/lib/commonjs/components/ImageGallery/components/ImageGalleryOverlay.js.map +1 -1
  73. package/lib/commonjs/components/ImageGallery/hooks/useImageGalleryGestures.js +221 -221
  74. package/lib/commonjs/components/ImageGallery/hooks/useImageGalleryGestures.js.map +1 -1
  75. package/lib/commonjs/components/Indicators/LoadingIndicator.js +1 -1
  76. package/lib/commonjs/components/Indicators/LoadingIndicator.js.map +1 -1
  77. package/lib/commonjs/components/Message/Message.js +186 -123
  78. package/lib/commonjs/components/Message/Message.js.map +1 -1
  79. package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
  80. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +168 -48
  81. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  82. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js +1 -1
  83. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
  84. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +1 -0
  85. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  86. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js +34 -20
  87. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -1
  88. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +44 -180
  89. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  90. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js +1 -1
  91. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  92. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +305 -0
  93. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -0
  94. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +16 -4
  95. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  96. package/lib/commonjs/components/Message/hooks/useMessageActions.js +72 -36
  97. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
  98. package/lib/commonjs/components/Message/hooks/useProcessReactions.js +3 -3
  99. package/lib/commonjs/components/Message/hooks/useProcessReactions.js.map +1 -1
  100. package/lib/commonjs/components/Message/utils/messageActions.js +6 -4
  101. package/lib/commonjs/components/Message/utils/messageActions.js.map +1 -1
  102. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +1 -1
  103. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  104. package/lib/commonjs/components/MessageInput/MessageInput.js +46 -2
  105. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  106. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +0 -1
  107. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
  108. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.js +2 -1
  109. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.js.map +1 -1
  110. package/lib/commonjs/components/MessageInput/components/NativeAttachmentPicker.js +18 -1
  111. package/lib/commonjs/components/MessageInput/components/NativeAttachmentPicker.js.map +1 -1
  112. package/lib/commonjs/components/MessageInput/hooks/useAudioController.js +60 -42
  113. package/lib/commonjs/components/MessageInput/hooks/useAudioController.js.map +1 -1
  114. package/lib/commonjs/components/MessageList/MessageList.js +3 -1
  115. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  116. package/lib/commonjs/components/MessageOverlay/MessageActionList.js +112 -0
  117. package/lib/commonjs/components/MessageOverlay/MessageActionList.js.map +1 -0
  118. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js +87 -0
  119. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js.map +1 -0
  120. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +452 -0
  121. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -0
  122. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js +24 -0
  123. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js.map +1 -0
  124. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js +305 -0
  125. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js.map +1 -0
  126. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js +188 -0
  127. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js.map +1 -0
  128. package/lib/{module/components/MessageMenu/MessageUserReactionsAvatar.js → commonjs/components/MessageOverlay/OverlayReactionsAvatar.js} +6 -5
  129. package/lib/commonjs/components/MessageOverlay/OverlayReactionsAvatar.js.map +1 -0
  130. package/lib/commonjs/components/MessageOverlay/OverlayReactionsItem.js +166 -0
  131. package/lib/commonjs/components/MessageOverlay/OverlayReactionsItem.js.map +1 -0
  132. package/lib/{module/components/MessageMenu → commonjs/components/MessageOverlay}/hooks/useFetchReactions.js +0 -2
  133. package/lib/commonjs/components/MessageOverlay/hooks/useFetchReactions.js.map +1 -0
  134. package/lib/commonjs/components/MessageOverlay/hooks/useMessageActionAnimation.js +34 -0
  135. package/lib/commonjs/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +1 -0
  136. package/lib/commonjs/components/Poll/CreatePollContent.js +386 -0
  137. package/lib/commonjs/components/Poll/CreatePollContent.js.map +1 -0
  138. package/lib/commonjs/components/Poll/Poll.js +112 -0
  139. package/lib/commonjs/components/Poll/Poll.js.map +1 -0
  140. package/lib/commonjs/components/Poll/components/Button.js +513 -0
  141. package/lib/commonjs/components/Poll/components/Button.js.map +1 -0
  142. package/lib/commonjs/components/Poll/components/CreatePollIcon.js +23 -0
  143. package/lib/commonjs/components/Poll/components/CreatePollIcon.js.map +1 -0
  144. package/lib/commonjs/components/Poll/components/CreatePollOptions.js +281 -0
  145. package/lib/commonjs/components/Poll/components/CreatePollOptions.js.map +1 -0
  146. package/lib/commonjs/components/Poll/components/PollAnswersList.js +154 -0
  147. package/lib/commonjs/components/Poll/components/PollAnswersList.js.map +1 -0
  148. package/lib/commonjs/components/Poll/components/PollInputDialog.js +139 -0
  149. package/lib/commonjs/components/Poll/components/PollInputDialog.js.map +1 -0
  150. package/lib/commonjs/components/Poll/components/PollModalHeader.js +60 -0
  151. package/lib/commonjs/components/Poll/components/PollModalHeader.js.map +1 -0
  152. package/lib/commonjs/components/Poll/components/PollOption.js +209 -0
  153. package/lib/commonjs/components/Poll/components/PollOption.js.map +1 -0
  154. package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js +125 -0
  155. package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -0
  156. package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js +158 -0
  157. package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js.map +1 -0
  158. package/lib/commonjs/components/Poll/components/PollResults/PollResults.js +101 -0
  159. package/lib/commonjs/components/Poll/components/PollResults/PollResults.js.map +1 -0
  160. package/lib/commonjs/components/Poll/components/PollResults/index.js +37 -0
  161. package/lib/commonjs/components/Poll/components/PollResults/index.js.map +1 -0
  162. package/lib/commonjs/components/Poll/components/index.js +92 -0
  163. package/lib/commonjs/components/Poll/components/index.js.map +1 -0
  164. package/lib/commonjs/components/Poll/hooks/usePollAnswersPagination.js +129 -0
  165. package/lib/commonjs/components/Poll/hooks/usePollAnswersPagination.js.map +1 -0
  166. package/lib/commonjs/components/Poll/hooks/usePollOptionVotesPagination.js +140 -0
  167. package/lib/commonjs/components/Poll/hooks/usePollOptionVotesPagination.js.map +1 -0
  168. package/lib/commonjs/components/Poll/hooks/usePollState.js +103 -0
  169. package/lib/commonjs/components/Poll/hooks/usePollState.js.map +1 -0
  170. package/lib/commonjs/components/Poll/hooks/usePollStateStore.js +13 -0
  171. package/lib/commonjs/components/Poll/hooks/usePollStateStore.js.map +1 -0
  172. package/lib/commonjs/components/Poll/index.js +81 -0
  173. package/lib/commonjs/components/Poll/index.js.map +1 -0
  174. package/lib/commonjs/components/ProgressControl/ProgressControl.js +28 -21
  175. package/lib/commonjs/components/ProgressControl/ProgressControl.js.map +1 -1
  176. package/lib/commonjs/components/ProgressControl/WaveProgressBar.js +27 -22
  177. package/lib/commonjs/components/ProgressControl/WaveProgressBar.js.map +1 -1
  178. package/lib/commonjs/components/Reply/Reply.js +3 -7
  179. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  180. package/lib/commonjs/components/{UIComponents → Spinner}/Spinner.js +1 -1
  181. package/lib/commonjs/components/Spinner/Spinner.js.map +1 -0
  182. package/lib/commonjs/components/ThreadList/ThreadList.js +8 -7
  183. package/lib/commonjs/components/ThreadList/ThreadList.js.map +1 -1
  184. package/lib/commonjs/components/ThreadList/ThreadListItem.js +12 -9
  185. package/lib/commonjs/components/ThreadList/ThreadListItem.js.map +1 -1
  186. package/lib/commonjs/components/ThreadList/ThreadListUnreadBanner.js +4 -4
  187. package/lib/commonjs/components/ThreadList/ThreadListUnreadBanner.js.map +1 -1
  188. package/lib/commonjs/components/docs/data.js.map +1 -1
  189. package/lib/commonjs/components/index.js +50 -50
  190. package/lib/commonjs/components/index.js.map +1 -1
  191. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +13 -1
  192. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -1
  193. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js +11 -1
  194. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  195. package/lib/commonjs/contexts/channelContext/ChannelContext.js +11 -1
  196. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  197. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js +11 -1
  198. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
  199. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js +11 -1
  200. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
  201. package/lib/commonjs/contexts/chatContext/ChatContext.js +11 -1
  202. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  203. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js +11 -1
  204. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  205. package/lib/commonjs/contexts/index.js +22 -11
  206. package/lib/commonjs/contexts/index.js.map +1 -1
  207. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js +11 -1
  208. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js.map +1 -1
  209. package/lib/commonjs/contexts/messageContext/MessageContext.js +11 -1
  210. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  211. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +40 -7
  212. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  213. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +10 -2
  214. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  215. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js +45 -0
  216. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -0
  217. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.js +27 -0
  218. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.js.map +1 -0
  219. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js +67 -0
  220. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +1 -0
  221. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +11 -1
  222. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  223. package/lib/commonjs/contexts/overlayContext/OverlayContext.js +14 -1
  224. package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
  225. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +58 -18
  226. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
  227. package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +3 -0
  228. package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js.map +1 -1
  229. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +11 -1
  230. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  231. package/lib/commonjs/contexts/pollContext/createPollContentContext.js +33 -0
  232. package/lib/commonjs/contexts/pollContext/createPollContentContext.js.map +1 -0
  233. package/lib/commonjs/contexts/pollContext/index.js +26 -0
  234. package/lib/commonjs/contexts/pollContext/index.js.map +1 -0
  235. package/lib/commonjs/contexts/{chatConfigContext/ChatConfigContext.js → pollContext/pollContext.js} +17 -17
  236. package/lib/commonjs/contexts/pollContext/pollContext.js.map +1 -0
  237. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +11 -1
  238. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  239. package/lib/commonjs/contexts/themeContext/utils/theme.js +176 -68
  240. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  241. package/lib/commonjs/contexts/threadContext/ThreadContext.js +11 -1
  242. package/lib/commonjs/contexts/threadContext/ThreadContext.js.map +1 -1
  243. package/lib/commonjs/contexts/translationContext/TranslationContext.js +11 -1
  244. package/lib/commonjs/contexts/translationContext/TranslationContext.js.map +1 -1
  245. package/lib/commonjs/contexts/typingContext/TypingContext.js +11 -1
  246. package/lib/commonjs/contexts/typingContext/TypingContext.js.map +1 -1
  247. package/lib/commonjs/hooks/useStateStore.js.map +1 -1
  248. package/lib/commonjs/hooks/useTranslatedMessage.js +4 -1
  249. package/lib/commonjs/hooks/useTranslatedMessage.js.map +1 -1
  250. package/lib/commonjs/i18n/en.json +34 -0
  251. package/lib/commonjs/i18n/es.json +38 -0
  252. package/lib/commonjs/i18n/fr.json +38 -0
  253. package/lib/commonjs/i18n/he.json +38 -0
  254. package/lib/commonjs/i18n/hi.json +34 -0
  255. package/lib/commonjs/i18n/it.json +38 -0
  256. package/lib/commonjs/i18n/ja.json +34 -0
  257. package/lib/commonjs/i18n/ko.json +34 -0
  258. package/lib/commonjs/i18n/nl.json +34 -0
  259. package/lib/commonjs/i18n/pt-br.json +38 -0
  260. package/lib/commonjs/i18n/ru.json +42 -0
  261. package/lib/commonjs/i18n/tr.json +34 -0
  262. package/lib/commonjs/icons/Back.js +19 -0
  263. package/lib/commonjs/icons/Back.js.map +1 -0
  264. package/lib/commonjs/icons/DragHandle.js +21 -0
  265. package/lib/commonjs/icons/DragHandle.js.map +1 -0
  266. package/lib/commonjs/icons/PinHeader.js +6 -17
  267. package/lib/commonjs/icons/PinHeader.js.map +1 -1
  268. package/lib/commonjs/icons/PollThumbnail.js +19 -0
  269. package/lib/commonjs/icons/PollThumbnail.js.map +1 -0
  270. package/lib/commonjs/icons/SendPoll.js +19 -0
  271. package/lib/commonjs/icons/SendPoll.js.map +1 -0
  272. package/lib/commonjs/icons/index.js +44 -0
  273. package/lib/commonjs/icons/index.js.map +1 -1
  274. package/lib/commonjs/index.js +23 -4
  275. package/lib/commonjs/index.js.map +1 -1
  276. package/lib/commonjs/mock-builders/DB/mock.js +82 -79
  277. package/lib/commonjs/mock-builders/DB/mock.js.map +1 -1
  278. package/lib/commonjs/native.js +25 -36
  279. package/lib/commonjs/native.js.map +1 -1
  280. package/lib/commonjs/store/QuickSqliteClient.js +158 -0
  281. package/lib/commonjs/store/QuickSqliteClient.js.map +1 -0
  282. package/lib/commonjs/store/apis/addPendingTask.js +5 -5
  283. package/lib/commonjs/store/apis/addPendingTask.js.map +1 -1
  284. package/lib/commonjs/store/apis/deleteChannel.js +3 -3
  285. package/lib/commonjs/store/apis/deleteChannel.js.map +1 -1
  286. package/lib/commonjs/store/apis/deleteMember.js +3 -3
  287. package/lib/commonjs/store/apis/deleteMember.js.map +1 -1
  288. package/lib/commonjs/store/apis/deleteMessage.js +3 -3
  289. package/lib/commonjs/store/apis/deleteMessage.js.map +1 -1
  290. package/lib/commonjs/store/apis/deleteMessagesForChannel.js +3 -3
  291. package/lib/commonjs/store/apis/deleteMessagesForChannel.js.map +1 -1
  292. package/lib/commonjs/store/apis/deletePendingTask.js +3 -3
  293. package/lib/commonjs/store/apis/deletePendingTask.js.map +1 -1
  294. package/lib/commonjs/store/apis/deleteReaction.js +3 -3
  295. package/lib/commonjs/store/apis/deleteReaction.js.map +1 -1
  296. package/lib/commonjs/store/apis/deleteReactions.js +2 -2
  297. package/lib/commonjs/store/apis/deleteReactions.js.map +1 -1
  298. package/lib/commonjs/store/apis/getAllChannelIds.js +2 -2
  299. package/lib/commonjs/store/apis/getAllChannelIds.js.map +1 -1
  300. package/lib/commonjs/store/apis/getAppSettings.js +3 -3
  301. package/lib/commonjs/store/apis/getAppSettings.js.map +1 -1
  302. package/lib/commonjs/store/apis/getChannelMessages.js +2 -2
  303. package/lib/commonjs/store/apis/getChannelMessages.js.map +1 -1
  304. package/lib/commonjs/store/apis/getChannels.js +2 -2
  305. package/lib/commonjs/store/apis/getChannels.js.map +1 -1
  306. package/lib/commonjs/store/apis/getChannelsForFilterSort.js +2 -2
  307. package/lib/commonjs/store/apis/getChannelsForFilterSort.js.map +1 -1
  308. package/lib/commonjs/store/apis/getLastSyncedAt.js +3 -3
  309. package/lib/commonjs/store/apis/getLastSyncedAt.js.map +1 -1
  310. package/lib/commonjs/store/apis/getMembers.js +2 -2
  311. package/lib/commonjs/store/apis/getMembers.js.map +1 -1
  312. package/lib/commonjs/store/apis/getPendingTasks.js +3 -3
  313. package/lib/commonjs/store/apis/getPendingTasks.js.map +1 -1
  314. package/lib/commonjs/store/apis/getReactions.js +2 -2
  315. package/lib/commonjs/store/apis/getReactions.js.map +1 -1
  316. package/lib/commonjs/store/apis/getReactionsforFilterSort.js +3 -6
  317. package/lib/commonjs/store/apis/getReactionsforFilterSort.js.map +1 -1
  318. package/lib/commonjs/store/apis/getReads.js +2 -2
  319. package/lib/commonjs/store/apis/getReads.js.map +1 -1
  320. package/lib/commonjs/store/apis/index.js +11 -0
  321. package/lib/commonjs/store/apis/index.js.map +1 -1
  322. package/lib/commonjs/store/apis/insertReaction.js +3 -3
  323. package/lib/commonjs/store/apis/insertReaction.js.map +1 -1
  324. package/lib/commonjs/store/apis/queries/selectChannelIdsForFilterSort.js +3 -3
  325. package/lib/commonjs/store/apis/queries/selectChannelIdsForFilterSort.js.map +1 -1
  326. package/lib/commonjs/store/apis/queries/selectChannels.js +3 -3
  327. package/lib/commonjs/store/apis/queries/selectChannels.js.map +1 -1
  328. package/lib/commonjs/store/apis/queries/selectMembersForChannels.js +3 -3
  329. package/lib/commonjs/store/apis/queries/selectMembersForChannels.js.map +1 -1
  330. package/lib/commonjs/store/apis/queries/selectMessagesForChannels.js +3 -3
  331. package/lib/commonjs/store/apis/queries/selectMessagesForChannels.js.map +1 -1
  332. package/lib/commonjs/store/apis/queries/selectReactionsForMessages.js +3 -3
  333. package/lib/commonjs/store/apis/queries/selectReactionsForMessages.js.map +1 -1
  334. package/lib/commonjs/store/apis/queries/selectReadsForChannels.js +3 -3
  335. package/lib/commonjs/store/apis/queries/selectReadsForChannels.js.map +1 -1
  336. package/lib/commonjs/store/apis/updateMessage.js +4 -4
  337. package/lib/commonjs/store/apis/updateMessage.js.map +1 -1
  338. package/lib/commonjs/store/apis/updatePollMessage.js +50 -0
  339. package/lib/commonjs/store/apis/updatePollMessage.js.map +1 -0
  340. package/lib/commonjs/store/apis/updateReaction.js +3 -3
  341. package/lib/commonjs/store/apis/updateReaction.js.map +1 -1
  342. package/lib/commonjs/store/apis/upsertAppSettings.js +3 -3
  343. package/lib/commonjs/store/apis/upsertAppSettings.js.map +1 -1
  344. package/lib/commonjs/store/apis/upsertChannelData.js +3 -3
  345. package/lib/commonjs/store/apis/upsertChannelData.js.map +1 -1
  346. package/lib/commonjs/store/apis/upsertChannelDataFromChannel.js +2 -2
  347. package/lib/commonjs/store/apis/upsertChannelDataFromChannel.js.map +1 -1
  348. package/lib/commonjs/store/apis/upsertChannels.js +3 -3
  349. package/lib/commonjs/store/apis/upsertChannels.js.map +1 -1
  350. package/lib/commonjs/store/apis/upsertCidsForQuery.js +3 -3
  351. package/lib/commonjs/store/apis/upsertCidsForQuery.js.map +1 -1
  352. package/lib/commonjs/store/apis/upsertMembers.js +3 -3
  353. package/lib/commonjs/store/apis/upsertMembers.js.map +1 -1
  354. package/lib/commonjs/store/apis/upsertMessages.js +3 -3
  355. package/lib/commonjs/store/apis/upsertMessages.js.map +1 -1
  356. package/lib/commonjs/store/apis/upsertReads.js +3 -3
  357. package/lib/commonjs/store/apis/upsertReads.js.map +1 -1
  358. package/lib/commonjs/store/apis/upsertUserSyncStatus.js +3 -3
  359. package/lib/commonjs/store/apis/upsertUserSyncStatus.js.map +1 -1
  360. package/lib/commonjs/store/mappers/mapMessageToStorable.js +5 -1
  361. package/lib/commonjs/store/mappers/mapMessageToStorable.js.map +1 -1
  362. package/lib/commonjs/store/mappers/mapStorableToMessage.js +5 -1
  363. package/lib/commonjs/store/mappers/mapStorableToMessage.js.map +1 -1
  364. package/lib/commonjs/store/schema.js +2 -0
  365. package/lib/commonjs/store/schema.js.map +1 -1
  366. package/lib/commonjs/utils/DBSyncManager.js +4 -4
  367. package/lib/commonjs/utils/DBSyncManager.js.map +1 -1
  368. package/lib/commonjs/utils/StreamChatRN.js +25 -0
  369. package/lib/commonjs/utils/StreamChatRN.js.map +1 -0
  370. package/lib/commonjs/utils/getResizedImageUrl.js +3 -5
  371. package/lib/commonjs/utils/getResizedImageUrl.js.map +1 -1
  372. package/lib/commonjs/version.json +1 -1
  373. package/lib/module/components/Attachment/Attachment.js +1 -1
  374. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  375. package/lib/module/components/Attachment/Card.js +6 -6
  376. package/lib/module/components/Attachment/Card.js.map +1 -1
  377. package/lib/module/components/Attachment/FileAttachment.js +5 -5
  378. package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
  379. package/lib/module/components/Attachment/FileAttachmentGroup.js +1 -1
  380. package/lib/module/components/Attachment/FileAttachmentGroup.js.map +1 -1
  381. package/lib/module/components/Attachment/Gallery.js +22 -29
  382. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  383. package/lib/module/components/Attachment/Giphy.js +8 -8
  384. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  385. package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js +0 -7
  386. package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -1
  387. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js +1 -3
  388. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js.map +1 -1
  389. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js +0 -3
  390. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js.map +1 -1
  391. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js +0 -4
  392. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js.map +1 -1
  393. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js +0 -2
  394. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -1
  395. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnailGrid.js +0 -2
  396. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnailGrid.js.map +1 -1
  397. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js +3 -3
  398. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  399. package/lib/module/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js +27 -0
  400. package/lib/module/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js.map +1 -1
  401. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +2 -1
  402. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  403. package/lib/module/components/Avatar/Avatar.js +0 -4
  404. package/lib/module/components/Avatar/Avatar.js.map +1 -1
  405. package/lib/module/components/Avatar/GroupAvatar.js +0 -4
  406. package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
  407. package/lib/module/components/Channel/Channel.js +445 -301
  408. package/lib/module/components/Channel/Channel.js.map +1 -1
  409. package/lib/module/components/Channel/hooks/useCreateChannelContext.js +2 -0
  410. package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  411. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +9 -3
  412. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  413. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +15 -27
  414. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  415. package/lib/module/components/Channel/hooks/useCreateThreadContext.js +9 -8
  416. package/lib/module/components/Channel/hooks/useCreateThreadContext.js.map +1 -1
  417. package/lib/module/components/ChannelList/ChannelList.js +2 -0
  418. package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
  419. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js +1 -1
  420. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
  421. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js +18 -8
  422. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  423. package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js +46 -3
  424. package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
  425. package/lib/module/components/Chat/Chat.js +11 -2
  426. package/lib/module/components/Chat/Chat.js.map +1 -1
  427. package/lib/module/components/Chat/hooks/handleEventToSyncDB.js +13 -3
  428. package/lib/module/components/Chat/hooks/handleEventToSyncDB.js.map +1 -1
  429. package/lib/module/components/Chat/hooks/useCreateChatContext.js +2 -0
  430. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  431. package/lib/module/components/Chat/hooks/useIsOnline.js +13 -16
  432. package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
  433. package/lib/module/components/{UIComponents/ImageBackground.js → ImageBackground.js} +1 -1
  434. package/lib/module/components/ImageBackground.js.map +1 -0
  435. package/lib/module/components/ImageGallery/ImageGallery.js +96 -58
  436. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  437. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +3 -3
  438. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  439. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +90 -92
  440. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  441. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +39 -39
  442. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  443. package/lib/module/components/ImageGallery/components/ImageGalleryOverlay.js.map +1 -1
  444. package/lib/module/components/ImageGallery/hooks/useImageGalleryGestures.js +221 -221
  445. package/lib/module/components/ImageGallery/hooks/useImageGalleryGestures.js.map +1 -1
  446. package/lib/module/components/Indicators/LoadingIndicator.js +1 -1
  447. package/lib/module/components/Indicators/LoadingIndicator.js.map +1 -1
  448. package/lib/module/components/Message/Message.js +186 -123
  449. package/lib/module/components/Message/Message.js.map +1 -1
  450. package/lib/module/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
  451. package/lib/module/components/Message/MessageSimple/MessageContent.js +168 -48
  452. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  453. package/lib/module/components/Message/MessageSimple/MessageDeleted.js +1 -1
  454. package/lib/module/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
  455. package/lib/module/components/Message/MessageSimple/MessageFooter.js +1 -0
  456. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  457. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js +34 -20
  458. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -1
  459. package/lib/module/components/Message/MessageSimple/MessageSimple.js +44 -180
  460. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  461. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +1 -1
  462. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  463. package/lib/module/components/Message/MessageSimple/ReactionList.js +305 -0
  464. package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -0
  465. package/lib/module/components/Message/hooks/useCreateMessageContext.js +16 -4
  466. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  467. package/lib/module/components/Message/hooks/useMessageActions.js +72 -36
  468. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
  469. package/lib/module/components/Message/hooks/useProcessReactions.js +3 -3
  470. package/lib/module/components/Message/hooks/useProcessReactions.js.map +1 -1
  471. package/lib/module/components/Message/utils/messageActions.js +6 -4
  472. package/lib/module/components/Message/utils/messageActions.js.map +1 -1
  473. package/lib/module/components/MessageInput/FileUploadPreview.js +1 -1
  474. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  475. package/lib/module/components/MessageInput/MessageInput.js +46 -2
  476. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  477. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +0 -1
  478. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
  479. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.js +2 -1
  480. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.js.map +1 -1
  481. package/lib/module/components/MessageInput/components/NativeAttachmentPicker.js +18 -1
  482. package/lib/module/components/MessageInput/components/NativeAttachmentPicker.js.map +1 -1
  483. package/lib/module/components/MessageInput/hooks/useAudioController.js +60 -42
  484. package/lib/module/components/MessageInput/hooks/useAudioController.js.map +1 -1
  485. package/lib/module/components/MessageList/MessageList.js +3 -1
  486. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  487. package/lib/module/components/MessageOverlay/MessageActionList.js +112 -0
  488. package/lib/module/components/MessageOverlay/MessageActionList.js.map +1 -0
  489. package/lib/module/components/MessageOverlay/MessageActionListItem.js +87 -0
  490. package/lib/module/components/MessageOverlay/MessageActionListItem.js.map +1 -0
  491. package/lib/module/components/MessageOverlay/MessageOverlay.js +452 -0
  492. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -0
  493. package/lib/module/components/MessageOverlay/OverlayBackdrop.js +24 -0
  494. package/lib/module/components/MessageOverlay/OverlayBackdrop.js.map +1 -0
  495. package/lib/module/components/MessageOverlay/OverlayReactionList.js +305 -0
  496. package/lib/module/components/MessageOverlay/OverlayReactionList.js.map +1 -0
  497. package/lib/module/components/MessageOverlay/OverlayReactions.js +188 -0
  498. package/lib/module/components/MessageOverlay/OverlayReactions.js.map +1 -0
  499. package/lib/{commonjs/components/MessageMenu/MessageUserReactionsAvatar.js → module/components/MessageOverlay/OverlayReactionsAvatar.js} +6 -5
  500. package/lib/module/components/MessageOverlay/OverlayReactionsAvatar.js.map +1 -0
  501. package/lib/module/components/MessageOverlay/OverlayReactionsItem.js +166 -0
  502. package/lib/module/components/MessageOverlay/OverlayReactionsItem.js.map +1 -0
  503. package/lib/{commonjs/components/MessageMenu → module/components/MessageOverlay}/hooks/useFetchReactions.js +0 -2
  504. package/lib/module/components/MessageOverlay/hooks/useFetchReactions.js.map +1 -0
  505. package/lib/module/components/MessageOverlay/hooks/useMessageActionAnimation.js +34 -0
  506. package/lib/module/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +1 -0
  507. package/lib/module/components/Poll/CreatePollContent.js +386 -0
  508. package/lib/module/components/Poll/CreatePollContent.js.map +1 -0
  509. package/lib/module/components/Poll/Poll.js +112 -0
  510. package/lib/module/components/Poll/Poll.js.map +1 -0
  511. package/lib/module/components/Poll/components/Button.js +513 -0
  512. package/lib/module/components/Poll/components/Button.js.map +1 -0
  513. package/lib/module/components/Poll/components/CreatePollIcon.js +23 -0
  514. package/lib/module/components/Poll/components/CreatePollIcon.js.map +1 -0
  515. package/lib/module/components/Poll/components/CreatePollOptions.js +281 -0
  516. package/lib/module/components/Poll/components/CreatePollOptions.js.map +1 -0
  517. package/lib/module/components/Poll/components/PollAnswersList.js +154 -0
  518. package/lib/module/components/Poll/components/PollAnswersList.js.map +1 -0
  519. package/lib/module/components/Poll/components/PollInputDialog.js +139 -0
  520. package/lib/module/components/Poll/components/PollInputDialog.js.map +1 -0
  521. package/lib/module/components/Poll/components/PollModalHeader.js +60 -0
  522. package/lib/module/components/Poll/components/PollModalHeader.js.map +1 -0
  523. package/lib/module/components/Poll/components/PollOption.js +209 -0
  524. package/lib/module/components/Poll/components/PollOption.js.map +1 -0
  525. package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js +125 -0
  526. package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -0
  527. package/lib/module/components/Poll/components/PollResults/PollResultItem.js +158 -0
  528. package/lib/module/components/Poll/components/PollResults/PollResultItem.js.map +1 -0
  529. package/lib/module/components/Poll/components/PollResults/PollResults.js +101 -0
  530. package/lib/module/components/Poll/components/PollResults/PollResults.js.map +1 -0
  531. package/lib/module/components/Poll/components/PollResults/index.js +37 -0
  532. package/lib/module/components/Poll/components/PollResults/index.js.map +1 -0
  533. package/lib/module/components/Poll/components/index.js +92 -0
  534. package/lib/module/components/Poll/components/index.js.map +1 -0
  535. package/lib/module/components/Poll/hooks/usePollAnswersPagination.js +129 -0
  536. package/lib/module/components/Poll/hooks/usePollAnswersPagination.js.map +1 -0
  537. package/lib/module/components/Poll/hooks/usePollOptionVotesPagination.js +140 -0
  538. package/lib/module/components/Poll/hooks/usePollOptionVotesPagination.js.map +1 -0
  539. package/lib/module/components/Poll/hooks/usePollState.js +103 -0
  540. package/lib/module/components/Poll/hooks/usePollState.js.map +1 -0
  541. package/lib/module/components/Poll/hooks/usePollStateStore.js +13 -0
  542. package/lib/module/components/Poll/hooks/usePollStateStore.js.map +1 -0
  543. package/lib/module/components/Poll/index.js +81 -0
  544. package/lib/module/components/Poll/index.js.map +1 -0
  545. package/lib/module/components/ProgressControl/ProgressControl.js +28 -21
  546. package/lib/module/components/ProgressControl/ProgressControl.js.map +1 -1
  547. package/lib/module/components/ProgressControl/WaveProgressBar.js +27 -22
  548. package/lib/module/components/ProgressControl/WaveProgressBar.js.map +1 -1
  549. package/lib/module/components/Reply/Reply.js +3 -7
  550. package/lib/module/components/Reply/Reply.js.map +1 -1
  551. package/lib/module/components/{UIComponents → Spinner}/Spinner.js +1 -1
  552. package/lib/module/components/Spinner/Spinner.js.map +1 -0
  553. package/lib/module/components/ThreadList/ThreadList.js +8 -7
  554. package/lib/module/components/ThreadList/ThreadList.js.map +1 -1
  555. package/lib/module/components/ThreadList/ThreadListItem.js +12 -9
  556. package/lib/module/components/ThreadList/ThreadListItem.js.map +1 -1
  557. package/lib/module/components/ThreadList/ThreadListUnreadBanner.js +4 -4
  558. package/lib/module/components/ThreadList/ThreadListUnreadBanner.js.map +1 -1
  559. package/lib/module/components/docs/data.js.map +1 -1
  560. package/lib/module/components/index.js +50 -50
  561. package/lib/module/components/index.js.map +1 -1
  562. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +13 -1
  563. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -1
  564. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js +11 -1
  565. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  566. package/lib/module/contexts/channelContext/ChannelContext.js +11 -1
  567. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  568. package/lib/module/contexts/channelsContext/ChannelsContext.js +11 -1
  569. package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
  570. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js +11 -1
  571. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
  572. package/lib/module/contexts/chatContext/ChatContext.js +11 -1
  573. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  574. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js +11 -1
  575. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  576. package/lib/module/contexts/index.js +22 -11
  577. package/lib/module/contexts/index.js.map +1 -1
  578. package/lib/module/contexts/keyboardContext/KeyboardContext.js +11 -1
  579. package/lib/module/contexts/keyboardContext/KeyboardContext.js.map +1 -1
  580. package/lib/module/contexts/messageContext/MessageContext.js +11 -1
  581. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  582. package/lib/module/contexts/messageInputContext/MessageInputContext.js +40 -7
  583. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  584. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +10 -2
  585. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  586. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js +45 -0
  587. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -0
  588. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.js +27 -0
  589. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.js.map +1 -0
  590. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js +67 -0
  591. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +1 -0
  592. package/lib/module/contexts/messagesContext/MessagesContext.js +11 -1
  593. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  594. package/lib/module/contexts/overlayContext/OverlayContext.js +14 -1
  595. package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
  596. package/lib/module/contexts/overlayContext/OverlayProvider.js +58 -18
  597. package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
  598. package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +3 -0
  599. package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js.map +1 -1
  600. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +11 -1
  601. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  602. package/lib/module/contexts/pollContext/createPollContentContext.js +33 -0
  603. package/lib/module/contexts/pollContext/createPollContentContext.js.map +1 -0
  604. package/lib/module/contexts/pollContext/index.js +26 -0
  605. package/lib/module/contexts/pollContext/index.js.map +1 -0
  606. package/lib/module/contexts/{chatConfigContext/ChatConfigContext.js → pollContext/pollContext.js} +17 -17
  607. package/lib/module/contexts/pollContext/pollContext.js.map +1 -0
  608. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +11 -1
  609. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  610. package/lib/module/contexts/themeContext/utils/theme.js +176 -68
  611. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  612. package/lib/module/contexts/threadContext/ThreadContext.js +11 -1
  613. package/lib/module/contexts/threadContext/ThreadContext.js.map +1 -1
  614. package/lib/module/contexts/translationContext/TranslationContext.js +11 -1
  615. package/lib/module/contexts/translationContext/TranslationContext.js.map +1 -1
  616. package/lib/module/contexts/typingContext/TypingContext.js +11 -1
  617. package/lib/module/contexts/typingContext/TypingContext.js.map +1 -1
  618. package/lib/module/hooks/useStateStore.js.map +1 -1
  619. package/lib/module/hooks/useTranslatedMessage.js +4 -1
  620. package/lib/module/hooks/useTranslatedMessage.js.map +1 -1
  621. package/lib/module/i18n/en.json +34 -0
  622. package/lib/module/i18n/es.json +38 -0
  623. package/lib/module/i18n/fr.json +38 -0
  624. package/lib/module/i18n/he.json +38 -0
  625. package/lib/module/i18n/hi.json +34 -0
  626. package/lib/module/i18n/it.json +38 -0
  627. package/lib/module/i18n/ja.json +34 -0
  628. package/lib/module/i18n/ko.json +34 -0
  629. package/lib/module/i18n/nl.json +34 -0
  630. package/lib/module/i18n/pt-br.json +38 -0
  631. package/lib/module/i18n/ru.json +42 -0
  632. package/lib/module/i18n/tr.json +34 -0
  633. package/lib/module/icons/Back.js +19 -0
  634. package/lib/module/icons/Back.js.map +1 -0
  635. package/lib/module/icons/DragHandle.js +21 -0
  636. package/lib/module/icons/DragHandle.js.map +1 -0
  637. package/lib/module/icons/PinHeader.js +6 -17
  638. package/lib/module/icons/PinHeader.js.map +1 -1
  639. package/lib/module/icons/PollThumbnail.js +19 -0
  640. package/lib/module/icons/PollThumbnail.js.map +1 -0
  641. package/lib/module/icons/SendPoll.js +19 -0
  642. package/lib/module/icons/SendPoll.js.map +1 -0
  643. package/lib/module/icons/index.js +44 -0
  644. package/lib/module/icons/index.js.map +1 -1
  645. package/lib/module/index.js +23 -4
  646. package/lib/module/index.js.map +1 -1
  647. package/lib/module/mock-builders/DB/mock.js +82 -79
  648. package/lib/module/mock-builders/DB/mock.js.map +1 -1
  649. package/lib/module/native.js +25 -36
  650. package/lib/module/native.js.map +1 -1
  651. package/lib/module/store/QuickSqliteClient.js +158 -0
  652. package/lib/module/store/QuickSqliteClient.js.map +1 -0
  653. package/lib/module/store/apis/addPendingTask.js +5 -5
  654. package/lib/module/store/apis/addPendingTask.js.map +1 -1
  655. package/lib/module/store/apis/deleteChannel.js +3 -3
  656. package/lib/module/store/apis/deleteChannel.js.map +1 -1
  657. package/lib/module/store/apis/deleteMember.js +3 -3
  658. package/lib/module/store/apis/deleteMember.js.map +1 -1
  659. package/lib/module/store/apis/deleteMessage.js +3 -3
  660. package/lib/module/store/apis/deleteMessage.js.map +1 -1
  661. package/lib/module/store/apis/deleteMessagesForChannel.js +3 -3
  662. package/lib/module/store/apis/deleteMessagesForChannel.js.map +1 -1
  663. package/lib/module/store/apis/deletePendingTask.js +3 -3
  664. package/lib/module/store/apis/deletePendingTask.js.map +1 -1
  665. package/lib/module/store/apis/deleteReaction.js +3 -3
  666. package/lib/module/store/apis/deleteReaction.js.map +1 -1
  667. package/lib/module/store/apis/deleteReactions.js +2 -2
  668. package/lib/module/store/apis/deleteReactions.js.map +1 -1
  669. package/lib/module/store/apis/getAllChannelIds.js +2 -2
  670. package/lib/module/store/apis/getAllChannelIds.js.map +1 -1
  671. package/lib/module/store/apis/getAppSettings.js +3 -3
  672. package/lib/module/store/apis/getAppSettings.js.map +1 -1
  673. package/lib/module/store/apis/getChannelMessages.js +2 -2
  674. package/lib/module/store/apis/getChannelMessages.js.map +1 -1
  675. package/lib/module/store/apis/getChannels.js +2 -2
  676. package/lib/module/store/apis/getChannels.js.map +1 -1
  677. package/lib/module/store/apis/getChannelsForFilterSort.js +2 -2
  678. package/lib/module/store/apis/getChannelsForFilterSort.js.map +1 -1
  679. package/lib/module/store/apis/getLastSyncedAt.js +3 -3
  680. package/lib/module/store/apis/getLastSyncedAt.js.map +1 -1
  681. package/lib/module/store/apis/getMembers.js +2 -2
  682. package/lib/module/store/apis/getMembers.js.map +1 -1
  683. package/lib/module/store/apis/getPendingTasks.js +3 -3
  684. package/lib/module/store/apis/getPendingTasks.js.map +1 -1
  685. package/lib/module/store/apis/getReactions.js +2 -2
  686. package/lib/module/store/apis/getReactions.js.map +1 -1
  687. package/lib/module/store/apis/getReactionsforFilterSort.js +3 -6
  688. package/lib/module/store/apis/getReactionsforFilterSort.js.map +1 -1
  689. package/lib/module/store/apis/getReads.js +2 -2
  690. package/lib/module/store/apis/getReads.js.map +1 -1
  691. package/lib/module/store/apis/index.js +11 -0
  692. package/lib/module/store/apis/index.js.map +1 -1
  693. package/lib/module/store/apis/insertReaction.js +3 -3
  694. package/lib/module/store/apis/insertReaction.js.map +1 -1
  695. package/lib/module/store/apis/queries/selectChannelIdsForFilterSort.js +3 -3
  696. package/lib/module/store/apis/queries/selectChannelIdsForFilterSort.js.map +1 -1
  697. package/lib/module/store/apis/queries/selectChannels.js +3 -3
  698. package/lib/module/store/apis/queries/selectChannels.js.map +1 -1
  699. package/lib/module/store/apis/queries/selectMembersForChannels.js +3 -3
  700. package/lib/module/store/apis/queries/selectMembersForChannels.js.map +1 -1
  701. package/lib/module/store/apis/queries/selectMessagesForChannels.js +3 -3
  702. package/lib/module/store/apis/queries/selectMessagesForChannels.js.map +1 -1
  703. package/lib/module/store/apis/queries/selectReactionsForMessages.js +3 -3
  704. package/lib/module/store/apis/queries/selectReactionsForMessages.js.map +1 -1
  705. package/lib/module/store/apis/queries/selectReadsForChannels.js +3 -3
  706. package/lib/module/store/apis/queries/selectReadsForChannels.js.map +1 -1
  707. package/lib/module/store/apis/updateMessage.js +4 -4
  708. package/lib/module/store/apis/updateMessage.js.map +1 -1
  709. package/lib/module/store/apis/updatePollMessage.js +50 -0
  710. package/lib/module/store/apis/updatePollMessage.js.map +1 -0
  711. package/lib/module/store/apis/updateReaction.js +3 -3
  712. package/lib/module/store/apis/updateReaction.js.map +1 -1
  713. package/lib/module/store/apis/upsertAppSettings.js +3 -3
  714. package/lib/module/store/apis/upsertAppSettings.js.map +1 -1
  715. package/lib/module/store/apis/upsertChannelData.js +3 -3
  716. package/lib/module/store/apis/upsertChannelData.js.map +1 -1
  717. package/lib/module/store/apis/upsertChannelDataFromChannel.js +2 -2
  718. package/lib/module/store/apis/upsertChannelDataFromChannel.js.map +1 -1
  719. package/lib/module/store/apis/upsertChannels.js +3 -3
  720. package/lib/module/store/apis/upsertChannels.js.map +1 -1
  721. package/lib/module/store/apis/upsertCidsForQuery.js +3 -3
  722. package/lib/module/store/apis/upsertCidsForQuery.js.map +1 -1
  723. package/lib/module/store/apis/upsertMembers.js +3 -3
  724. package/lib/module/store/apis/upsertMembers.js.map +1 -1
  725. package/lib/module/store/apis/upsertMessages.js +3 -3
  726. package/lib/module/store/apis/upsertMessages.js.map +1 -1
  727. package/lib/module/store/apis/upsertReads.js +3 -3
  728. package/lib/module/store/apis/upsertReads.js.map +1 -1
  729. package/lib/module/store/apis/upsertUserSyncStatus.js +3 -3
  730. package/lib/module/store/apis/upsertUserSyncStatus.js.map +1 -1
  731. package/lib/module/store/mappers/mapMessageToStorable.js +5 -1
  732. package/lib/module/store/mappers/mapMessageToStorable.js.map +1 -1
  733. package/lib/module/store/mappers/mapStorableToMessage.js +5 -1
  734. package/lib/module/store/mappers/mapStorableToMessage.js.map +1 -1
  735. package/lib/module/store/schema.js +2 -0
  736. package/lib/module/store/schema.js.map +1 -1
  737. package/lib/module/utils/DBSyncManager.js +4 -4
  738. package/lib/module/utils/DBSyncManager.js.map +1 -1
  739. package/lib/module/utils/StreamChatRN.js +25 -0
  740. package/lib/module/utils/StreamChatRN.js.map +1 -0
  741. package/lib/module/utils/getResizedImageUrl.js +3 -5
  742. package/lib/module/utils/getResizedImageUrl.js.map +1 -1
  743. package/lib/module/version.json +1 -1
  744. package/lib/typescript/components/Attachment/Card.d.ts +2 -2
  745. package/lib/typescript/components/Attachment/Card.d.ts.map +1 -1
  746. package/lib/typescript/components/Attachment/FileAttachment.d.ts +1 -1
  747. package/lib/typescript/components/Attachment/FileAttachment.d.ts.map +1 -1
  748. package/lib/typescript/components/Attachment/Gallery.d.ts +1 -1
  749. package/lib/typescript/components/Attachment/Gallery.d.ts.map +1 -1
  750. package/lib/typescript/components/Attachment/Giphy.d.ts +1 -1
  751. package/lib/typescript/components/Attachment/utils/buildGallery/buildGallery.d.ts +1 -2
  752. package/lib/typescript/components/Attachment/utils/buildGallery/buildGallery.d.ts.map +1 -1
  753. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.d.ts +1 -2
  754. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.d.ts.map +1 -1
  755. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.d.ts +1 -2
  756. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.d.ts.map +1 -1
  757. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.d.ts +1 -2
  758. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.d.ts.map +1 -1
  759. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnail.d.ts +2 -4
  760. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnail.d.ts.map +1 -1
  761. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnailGrid.d.ts +1 -2
  762. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnailGrid.d.ts.map +1 -1
  763. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.d.ts +2 -2
  764. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.d.ts.map +1 -1
  765. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerItem.d.ts.map +1 -1
  766. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerSelectionBar.d.ts.map +1 -1
  767. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts.map +1 -1
  768. package/lib/typescript/components/Avatar/Avatar.d.ts.map +1 -1
  769. package/lib/typescript/components/Avatar/GroupAvatar.d.ts.map +1 -1
  770. package/lib/typescript/components/Channel/Channel.d.ts +2 -2
  771. package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
  772. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +1 -1
  773. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts.map +1 -1
  774. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -1
  775. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts.map +1 -1
  776. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
  777. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts.map +1 -1
  778. package/lib/typescript/components/Channel/hooks/useCreateThreadContext.d.ts.map +1 -1
  779. package/lib/typescript/components/ChannelList/ChannelList.d.ts +12 -0
  780. package/lib/typescript/components/ChannelList/ChannelList.d.ts.map +1 -1
  781. package/lib/typescript/components/ChannelList/hooks/listeners/useNewMessageNotification.d.ts +2 -1
  782. package/lib/typescript/components/ChannelList/hooks/listeners/useNewMessageNotification.d.ts.map +1 -1
  783. package/lib/typescript/components/ChannelPreview/hooks/useLatestMessagePreview.d.ts +5 -1
  784. package/lib/typescript/components/ChannelPreview/hooks/useLatestMessagePreview.d.ts.map +1 -1
  785. package/lib/typescript/components/Chat/Chat.d.ts +1 -1
  786. package/lib/typescript/components/Chat/Chat.d.ts.map +1 -1
  787. package/lib/typescript/components/Chat/hooks/handleEventToSyncDB.d.ts.map +1 -1
  788. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
  789. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  790. package/lib/typescript/components/Chat/hooks/useIsOnline.d.ts.map +1 -1
  791. package/lib/typescript/components/ImageBackground.d.ts.map +1 -0
  792. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts +2 -2
  793. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts.map +1 -1
  794. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryImage.d.ts +5 -5
  795. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryImage.d.ts.map +1 -1
  796. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryVideo.d.ts +5 -5
  797. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryVideo.d.ts.map +1 -1
  798. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +3 -3
  799. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts.map +1 -1
  800. package/lib/typescript/components/ImageGallery/components/ImageGalleryHeader.d.ts +3 -3
  801. package/lib/typescript/components/ImageGallery/components/ImageGalleryHeader.d.ts.map +1 -1
  802. package/lib/typescript/components/ImageGallery/components/ImageGalleryOverlay.d.ts +2 -2
  803. package/lib/typescript/components/ImageGallery/components/ImageGalleryOverlay.d.ts.map +1 -1
  804. package/lib/typescript/components/ImageGallery/hooks/useImageGalleryGestures.d.ts +5 -4
  805. package/lib/typescript/components/ImageGallery/hooks/useImageGalleryGestures.d.ts.map +1 -1
  806. package/lib/typescript/components/Message/Message.d.ts +40 -4
  807. package/lib/typescript/components/Message/Message.d.ts.map +1 -1
  808. package/lib/typescript/components/Message/MessageSimple/MessageAvatar.d.ts.map +1 -1
  809. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +5 -11
  810. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts.map +1 -1
  811. package/lib/typescript/components/Message/MessageSimple/MessagePinnedHeader.d.ts +6 -2
  812. package/lib/typescript/components/Message/MessageSimple/MessagePinnedHeader.d.ts.map +1 -1
  813. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts +1 -1
  814. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts.map +1 -1
  815. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts +2 -1
  816. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts.map +1 -1
  817. package/lib/typescript/components/Message/MessageSimple/ReactionList.d.ts +32 -0
  818. package/lib/typescript/components/Message/MessageSimple/ReactionList.d.ts.map +1 -0
  819. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
  820. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts.map +1 -1
  821. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +6 -5
  822. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts.map +1 -1
  823. package/lib/typescript/components/Message/hooks/useProcessReactions.d.ts +3 -11
  824. package/lib/typescript/components/Message/hooks/useProcessReactions.d.ts.map +1 -1
  825. package/lib/typescript/components/Message/utils/messageActions.d.ts +14 -6
  826. package/lib/typescript/components/Message/utils/messageActions.d.ts.map +1 -1
  827. package/lib/typescript/components/MessageInput/MessageInput.d.ts +1 -1
  828. package/lib/typescript/components/MessageInput/MessageInput.d.ts.map +1 -1
  829. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingButton.d.ts.map +1 -1
  830. package/lib/typescript/components/MessageInput/components/NativeAttachmentPicker.d.ts.map +1 -1
  831. package/lib/typescript/components/MessageInput/hooks/useAudioController.d.ts.map +1 -1
  832. package/lib/typescript/components/MessageOverlay/MessageActionList.d.ts +14 -0
  833. package/lib/typescript/components/MessageOverlay/MessageActionList.d.ts.map +1 -0
  834. package/lib/typescript/components/{MessageMenu → MessageOverlay}/MessageActionListItem.d.ts +8 -2
  835. package/lib/typescript/components/MessageOverlay/MessageActionListItem.d.ts.map +1 -0
  836. package/lib/typescript/components/MessageOverlay/MessageOverlay.d.ts +15 -0
  837. package/lib/typescript/components/MessageOverlay/MessageOverlay.d.ts.map +1 -0
  838. package/lib/typescript/components/MessageOverlay/OverlayBackdrop.d.ts +8 -0
  839. package/lib/typescript/components/MessageOverlay/OverlayBackdrop.d.ts.map +1 -0
  840. package/lib/typescript/components/MessageOverlay/OverlayReactionList.d.ts +36 -0
  841. package/lib/typescript/components/MessageOverlay/OverlayReactionList.d.ts.map +1 -0
  842. package/lib/typescript/components/MessageOverlay/OverlayReactions.d.ts +29 -0
  843. package/lib/typescript/components/MessageOverlay/OverlayReactions.d.ts.map +1 -0
  844. package/lib/typescript/components/MessageOverlay/OverlayReactionsAvatar.d.ts +11 -0
  845. package/lib/typescript/components/MessageOverlay/OverlayReactionsAvatar.d.ts.map +1 -0
  846. package/lib/typescript/components/MessageOverlay/OverlayReactionsItem.d.ts +11 -0
  847. package/lib/typescript/components/MessageOverlay/OverlayReactionsItem.d.ts.map +1 -0
  848. package/lib/typescript/components/MessageOverlay/hooks/useFetchReactions.d.ts.map +1 -0
  849. package/lib/typescript/components/MessageOverlay/hooks/useMessageActionAnimation.d.ts +11 -0
  850. package/lib/typescript/components/MessageOverlay/hooks/useMessageActionAnimation.d.ts.map +1 -0
  851. package/lib/typescript/components/Poll/CreatePollContent.d.ts +6 -0
  852. package/lib/typescript/components/Poll/CreatePollContent.d.ts.map +1 -0
  853. package/lib/typescript/components/Poll/Poll.d.ts +13 -0
  854. package/lib/typescript/components/Poll/Poll.d.ts.map +1 -0
  855. package/lib/typescript/components/Poll/components/Button.d.ts +35 -0
  856. package/lib/typescript/components/Poll/components/Button.d.ts.map +1 -0
  857. package/lib/typescript/components/Poll/components/CreatePollIcon.d.ts +3 -0
  858. package/lib/typescript/components/Poll/components/CreatePollIcon.d.ts.map +1 -0
  859. package/lib/typescript/components/Poll/components/CreatePollOptions.d.ts +34 -0
  860. package/lib/typescript/components/Poll/components/CreatePollOptions.d.ts.map +1 -0
  861. package/lib/typescript/components/Poll/components/PollAnswersList.d.ts +15 -0
  862. package/lib/typescript/components/Poll/components/PollAnswersList.d.ts.map +1 -0
  863. package/lib/typescript/components/Poll/components/PollInputDialog.d.ts +10 -0
  864. package/lib/typescript/components/Poll/components/PollInputDialog.d.ts.map +1 -0
  865. package/lib/typescript/components/Poll/components/PollModalHeader.d.ts +7 -0
  866. package/lib/typescript/components/Poll/components/PollModalHeader.d.ts.map +1 -0
  867. package/lib/typescript/components/Poll/components/PollOption.d.ts +16 -0
  868. package/lib/typescript/components/Poll/components/PollOption.d.ts.map +1 -0
  869. package/lib/typescript/components/Poll/components/PollResults/PollOptionFullResults.d.ts +18 -0
  870. package/lib/typescript/components/Poll/components/PollResults/PollOptionFullResults.d.ts.map +1 -0
  871. package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts +11 -0
  872. package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts.map +1 -0
  873. package/lib/typescript/components/Poll/components/PollResults/PollResults.d.ts +10 -0
  874. package/lib/typescript/components/Poll/components/PollResults/PollResults.d.ts.map +1 -0
  875. package/lib/typescript/components/Poll/components/PollResults/index.d.ts +4 -0
  876. package/lib/typescript/components/Poll/components/PollResults/index.d.ts.map +1 -0
  877. package/lib/typescript/components/Poll/components/index.d.ts +9 -0
  878. package/lib/typescript/components/Poll/components/index.d.ts.map +1 -0
  879. package/lib/typescript/components/Poll/hooks/usePollAnswersPagination.d.ts +29 -0
  880. package/lib/typescript/components/Poll/hooks/usePollAnswersPagination.d.ts.map +1 -0
  881. package/lib/typescript/components/Poll/hooks/usePollOptionVotesPagination.d.ts +32 -0
  882. package/lib/typescript/components/Poll/hooks/usePollOptionVotesPagination.d.ts.map +1 -0
  883. package/lib/typescript/components/Poll/hooks/usePollState.d.ts +26 -0
  884. package/lib/typescript/components/Poll/hooks/usePollState.d.ts.map +1 -0
  885. package/lib/typescript/components/Poll/hooks/usePollStateStore.d.ts +3 -0
  886. package/lib/typescript/components/Poll/hooks/usePollStateStore.d.ts.map +1 -0
  887. package/lib/typescript/components/Poll/index.d.ts +8 -0
  888. package/lib/typescript/components/Poll/index.d.ts.map +1 -0
  889. package/lib/typescript/components/ProgressControl/ProgressControl.d.ts.map +1 -1
  890. package/lib/typescript/components/ProgressControl/WaveProgressBar.d.ts.map +1 -1
  891. package/lib/typescript/components/Reply/Reply.d.ts.map +1 -1
  892. package/lib/typescript/components/Spinner/Spinner.d.ts.map +1 -0
  893. package/lib/typescript/components/ThreadList/ThreadList.d.ts.map +1 -1
  894. package/lib/typescript/components/ThreadList/ThreadListItem.d.ts.map +1 -1
  895. package/lib/typescript/components/ThreadList/ThreadListUnreadBanner.d.ts.map +1 -1
  896. package/lib/typescript/components/index.d.ts +11 -11
  897. package/lib/typescript/components/index.d.ts.map +1 -1
  898. package/lib/typescript/contexts/activeChannelsRefContext/ActiveChannelsRefContext.d.ts +11 -0
  899. package/lib/typescript/contexts/activeChannelsRefContext/ActiveChannelsRefContext.d.ts.map +1 -1
  900. package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts +18 -2
  901. package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts.map +1 -1
  902. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +25 -1
  903. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts.map +1 -1
  904. package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts +11 -1
  905. package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts.map +1 -1
  906. package/lib/typescript/contexts/channelsStateContext/ChannelsStateContext.d.ts +11 -1
  907. package/lib/typescript/contexts/channelsStateContext/ChannelsStateContext.d.ts.map +1 -1
  908. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +15 -1
  909. package/lib/typescript/contexts/chatContext/ChatContext.d.ts.map +1 -1
  910. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts +10 -0
  911. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts.map +1 -1
  912. package/lib/typescript/contexts/index.d.ts +2 -1
  913. package/lib/typescript/contexts/index.d.ts.map +1 -1
  914. package/lib/typescript/contexts/keyboardContext/KeyboardContext.d.ts +11 -0
  915. package/lib/typescript/contexts/keyboardContext/KeyboardContext.d.ts.map +1 -1
  916. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +56 -21
  917. package/lib/typescript/contexts/messageContext/MessageContext.d.ts.map +1 -1
  918. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +22 -3
  919. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts.map +1 -1
  920. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
  921. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  922. package/lib/typescript/contexts/messageOverlayContext/MessageOverlayContext.d.ts +80 -0
  923. package/lib/typescript/contexts/messageOverlayContext/MessageOverlayContext.d.ts.map +1 -0
  924. package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.d.ts +13 -0
  925. package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.d.ts.map +1 -0
  926. package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.test.d.ts +2 -0
  927. package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.test.d.ts.map +1 -0
  928. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +45 -77
  929. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
  930. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +27 -2
  931. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts.map +1 -1
  932. package/lib/typescript/contexts/overlayContext/OverlayProvider.d.ts.map +1 -1
  933. package/lib/typescript/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.d.ts +3 -0
  934. package/lib/typescript/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.d.ts.map +1 -1
  935. package/lib/typescript/contexts/paginatedMessageListContext/PaginatedMessageListContext.d.ts +11 -1
  936. package/lib/typescript/contexts/paginatedMessageListContext/PaginatedMessageListContext.d.ts.map +1 -1
  937. package/lib/typescript/contexts/pollContext/createPollContentContext.d.ts +20 -0
  938. package/lib/typescript/contexts/pollContext/createPollContentContext.d.ts.map +1 -0
  939. package/lib/typescript/contexts/pollContext/index.d.ts +3 -0
  940. package/lib/typescript/contexts/pollContext/index.d.ts.map +1 -0
  941. package/lib/typescript/contexts/pollContext/pollContext.d.ts +14 -0
  942. package/lib/typescript/contexts/pollContext/pollContext.d.ts.map +1 -0
  943. package/lib/typescript/contexts/suggestionsContext/SuggestionsContext.d.ts +11 -1
  944. package/lib/typescript/contexts/suggestionsContext/SuggestionsContext.d.ts.map +1 -1
  945. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +170 -61
  946. package/lib/typescript/contexts/themeContext/utils/theme.d.ts.map +1 -1
  947. package/lib/typescript/contexts/threadContext/ThreadContext.d.ts +11 -1
  948. package/lib/typescript/contexts/threadContext/ThreadContext.d.ts.map +1 -1
  949. package/lib/typescript/contexts/translationContext/TranslationContext.d.ts +11 -0
  950. package/lib/typescript/contexts/translationContext/TranslationContext.d.ts.map +1 -1
  951. package/lib/typescript/contexts/typingContext/TypingContext.d.ts +11 -1
  952. package/lib/typescript/contexts/typingContext/TypingContext.d.ts.map +1 -1
  953. package/lib/typescript/hooks/useStateStore.d.ts +2 -2
  954. package/lib/typescript/hooks/useStateStore.d.ts.map +1 -1
  955. package/lib/typescript/hooks/useTranslatedMessage.d.ts.map +1 -1
  956. package/lib/typescript/i18n/en.json +34 -0
  957. package/lib/typescript/i18n/es.json +38 -0
  958. package/lib/typescript/i18n/fr.json +38 -0
  959. package/lib/typescript/i18n/he.json +38 -0
  960. package/lib/typescript/i18n/hi.json +34 -0
  961. package/lib/typescript/i18n/it.json +38 -0
  962. package/lib/typescript/i18n/ja.json +34 -0
  963. package/lib/typescript/i18n/ko.json +34 -0
  964. package/lib/typescript/i18n/nl.json +34 -0
  965. package/lib/typescript/i18n/pt-br.json +38 -0
  966. package/lib/typescript/i18n/ru.json +42 -0
  967. package/lib/typescript/i18n/tr.json +34 -0
  968. package/lib/typescript/icons/Back.d.ts +4 -0
  969. package/lib/typescript/icons/Back.d.ts.map +1 -0
  970. package/lib/typescript/icons/DragHandle.d.ts +4 -0
  971. package/lib/typescript/icons/DragHandle.d.ts.map +1 -0
  972. package/lib/typescript/icons/PinHeader.d.ts +1 -5
  973. package/lib/typescript/icons/PinHeader.d.ts.map +1 -1
  974. package/lib/typescript/icons/PollThumbnail.d.ts +4 -0
  975. package/lib/typescript/icons/PollThumbnail.d.ts.map +1 -0
  976. package/lib/typescript/icons/SendPoll.d.ts +4 -0
  977. package/lib/typescript/icons/SendPoll.d.ts.map +1 -0
  978. package/lib/typescript/icons/index.d.ts +4 -0
  979. package/lib/typescript/icons/index.d.ts.map +1 -1
  980. package/lib/typescript/index.d.ts +3 -2
  981. package/lib/typescript/index.d.ts.map +1 -1
  982. package/lib/typescript/native.d.ts +11 -9
  983. package/lib/typescript/native.d.ts.map +1 -1
  984. package/lib/typescript/store/{SqliteClient.d.ts → QuickSqliteClient.d.ts} +5 -6
  985. package/lib/typescript/store/QuickSqliteClient.d.ts.map +1 -0
  986. package/lib/typescript/store/apis/getReactionsforFilterSort.d.ts.map +1 -1
  987. package/lib/typescript/store/apis/index.d.ts +1 -0
  988. package/lib/typescript/store/apis/index.d.ts.map +1 -1
  989. package/lib/typescript/store/apis/updatePollMessage.d.ts +7 -0
  990. package/lib/typescript/store/apis/updatePollMessage.d.ts.map +1 -0
  991. package/lib/typescript/store/mappers/mapMessageToStorable.d.ts.map +1 -1
  992. package/lib/typescript/store/mappers/mapStorableToMessage.d.ts.map +1 -1
  993. package/lib/typescript/store/schema.d.ts +2 -0
  994. package/lib/typescript/store/schema.d.ts.map +1 -1
  995. package/lib/typescript/types/types.d.ts +0 -6
  996. package/lib/typescript/types/types.d.ts.map +1 -1
  997. package/lib/typescript/utils/StreamChatRN.d.ts +23 -0
  998. package/lib/typescript/utils/StreamChatRN.d.ts.map +1 -0
  999. package/lib/typescript/utils/getResizedImageUrl.d.ts +2 -3
  1000. package/lib/typescript/utils/getResizedImageUrl.d.ts.map +1 -1
  1001. package/lib/typescript/utils/i18n/Streami18n.d.ts +34 -0
  1002. package/lib/typescript/utils/i18n/Streami18n.d.ts.map +1 -1
  1003. package/package.json +12 -12
  1004. package/src/__tests__/offline-support/offline-feature.js +5 -5
  1005. package/src/__tests__/offline-support/optimistic-update.js +4 -4
  1006. package/src/components/Attachment/Attachment.tsx +2 -2
  1007. package/src/components/Attachment/Card.tsx +10 -10
  1008. package/src/components/Attachment/FileAttachment.tsx +16 -8
  1009. package/src/components/Attachment/FileAttachmentGroup.tsx +2 -2
  1010. package/src/components/Attachment/Gallery.tsx +17 -20
  1011. package/src/components/Attachment/Giphy.tsx +14 -14
  1012. package/src/components/Attachment/__tests__/Attachment.test.js +2 -4
  1013. package/src/components/Attachment/__tests__/Gallery.test.js +2 -0
  1014. package/src/components/Attachment/utils/buildGallery/buildGallery.ts +1 -10
  1015. package/src/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.ts +1 -4
  1016. package/src/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.ts +1 -5
  1017. package/src/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.ts +1 -6
  1018. package/src/components/Attachment/utils/buildGallery/buildThumbnail.ts +6 -13
  1019. package/src/components/Attachment/utils/buildGallery/buildThumbnailGrid.ts +1 -5
  1020. package/src/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.tsx +2 -2
  1021. package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx +1 -1
  1022. package/src/components/AttachmentPicker/components/AttachmentPickerSelectionBar.tsx +35 -2
  1023. package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +1 -1
  1024. package/src/components/Avatar/Avatar.tsx +0 -3
  1025. package/src/components/Avatar/GroupAvatar.tsx +0 -4
  1026. package/src/components/Channel/Channel.tsx +159 -60
  1027. package/src/components/Channel/__tests__/ownCapabilities.test.js +57 -57
  1028. package/src/components/Channel/hooks/useCreateChannelContext.ts +2 -0
  1029. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +22 -3
  1030. package/src/components/Channel/hooks/useCreateMessagesContext.ts +15 -26
  1031. package/src/components/Channel/hooks/useCreateThreadContext.ts +7 -8
  1032. package/src/components/ChannelList/ChannelList.tsx +17 -0
  1033. package/src/components/ChannelList/ChannelListFooterLoadingIndicator.tsx +1 -1
  1034. package/src/components/ChannelList/__tests__/ChannelList.test.js +5 -5
  1035. package/src/components/ChannelList/hooks/listeners/useNewMessageNotification.ts +11 -2
  1036. package/src/components/ChannelPreview/hooks/useLatestMessagePreview.ts +56 -4
  1037. package/src/components/Chat/Chat.tsx +11 -3
  1038. package/src/components/Chat/__tests__/Chat.test.js +179 -184
  1039. package/src/components/Chat/hooks/handleEventToSyncDB.ts +22 -3
  1040. package/src/components/Chat/hooks/useCreateChatContext.ts +2 -0
  1041. package/src/components/Chat/hooks/useIsOnline.ts +10 -13
  1042. package/src/components/ImageGallery/ImageGallery.tsx +121 -71
  1043. package/src/components/ImageGallery/__tests__/AnimatedVideoGallery.test.tsx +11 -0
  1044. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +4 -3
  1045. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +5 -3
  1046. package/src/components/ImageGallery/__tests__/ImageGalleryGrid.test.tsx +1 -1
  1047. package/src/components/ImageGallery/__tests__/ImageGalleryGridHandle.test.tsx +1 -1
  1048. package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +5 -3
  1049. package/src/components/ImageGallery/__tests__/ImageGalleryOverlay.test.tsx +3 -0
  1050. package/src/components/ImageGallery/components/AnimatedGalleryImage.tsx +5 -5
  1051. package/src/components/ImageGallery/components/AnimatedGalleryVideo.tsx +9 -9
  1052. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +86 -97
  1053. package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +44 -46
  1054. package/src/components/ImageGallery/components/ImageGalleryOverlay.tsx +1 -2
  1055. package/src/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.tsx +4 -3
  1056. package/src/components/ImageGallery/hooks/useImageGalleryGestures.tsx +466 -481
  1057. package/src/components/Indicators/LoadingIndicator.tsx +1 -1
  1058. package/src/components/Message/Message.tsx +217 -113
  1059. package/src/components/Message/MessageSimple/MessageAvatar.tsx +0 -1
  1060. package/src/components/Message/MessageSimple/MessageContent.tsx +171 -28
  1061. package/src/components/Message/MessageSimple/MessageDeleted.tsx +1 -1
  1062. package/src/components/Message/MessageSimple/MessageFooter.tsx +1 -1
  1063. package/src/components/Message/MessageSimple/MessagePinnedHeader.tsx +66 -21
  1064. package/src/components/Message/MessageSimple/MessageSimple.tsx +55 -247
  1065. package/src/components/Message/MessageSimple/MessageTextContainer.tsx +4 -3
  1066. package/src/components/Message/MessageSimple/ReactionList.tsx +398 -0
  1067. package/src/components/Message/MessageSimple/__tests__/MessageContent.test.js +2 -1
  1068. package/src/components/Message/MessageSimple/__tests__/MessageTextContainer.test.tsx +3 -3
  1069. package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessagePinnedHeader.test.js.snap +19 -23
  1070. package/src/components/Message/hooks/useCreateMessageContext.ts +16 -4
  1071. package/src/components/Message/hooks/useMessageActions.tsx +68 -48
  1072. package/src/components/Message/hooks/useProcessReactions.ts +10 -17
  1073. package/src/components/Message/utils/messageActions.ts +20 -10
  1074. package/src/components/MessageInput/FileUploadPreview.tsx +2 -2
  1075. package/src/components/MessageInput/MessageInput.tsx +59 -1
  1076. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.tsx +4 -1
  1077. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.tsx +4 -1
  1078. package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +5 -3
  1079. package/src/components/MessageInput/__tests__/MessageInput.test.js +2 -0
  1080. package/src/components/MessageInput/components/AudioRecorder/AudioRecordingButton.tsx +1 -7
  1081. package/src/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.tsx +1 -0
  1082. package/src/components/MessageInput/components/NativeAttachmentPicker.tsx +29 -2
  1083. package/src/components/MessageInput/hooks/useAudioController.tsx +3 -0
  1084. package/src/components/MessageList/MessageList.tsx +1 -1
  1085. package/src/components/MessageList/__tests__/MessageList.test.js +21 -0
  1086. package/src/components/MessageOverlay/MessageActionList.tsx +171 -0
  1087. package/src/components/MessageOverlay/MessageActionListItem.tsx +144 -0
  1088. package/src/components/MessageOverlay/MessageOverlay.tsx +637 -0
  1089. package/src/components/MessageOverlay/OverlayBackdrop.tsx +18 -0
  1090. package/src/components/MessageOverlay/OverlayReactionList.tsx +447 -0
  1091. package/src/components/MessageOverlay/OverlayReactions.tsx +250 -0
  1092. package/src/components/{MessageMenu/MessageUserReactionsAvatar.tsx → MessageOverlay/OverlayReactionsAvatar.tsx} +6 -6
  1093. package/src/components/MessageOverlay/OverlayReactionsItem.tsx +188 -0
  1094. package/src/components/{MessageMenu → MessageOverlay}/hooks/useFetchReactions.ts +0 -2
  1095. package/src/components/MessageOverlay/hooks/useMessageActionAnimation.tsx +44 -0
  1096. package/src/components/Poll/CreatePollContent.tsx +299 -0
  1097. package/src/components/Poll/Poll.tsx +126 -0
  1098. package/src/components/Poll/components/Button.tsx +465 -0
  1099. package/src/components/Poll/components/CreatePollIcon.tsx +14 -0
  1100. package/src/components/Poll/components/CreatePollOptions.tsx +351 -0
  1101. package/src/components/Poll/components/PollAnswersList.tsx +134 -0
  1102. package/src/components/Poll/components/PollInputDialog.tsx +117 -0
  1103. package/src/components/Poll/components/PollModalHeader.tsx +42 -0
  1104. package/src/components/Poll/components/PollOption.tsx +167 -0
  1105. package/src/components/Poll/components/PollResults/PollOptionFullResults.tsx +108 -0
  1106. package/src/components/Poll/components/PollResults/PollResultItem.tsx +119 -0
  1107. package/src/components/Poll/components/PollResults/PollResults.tsx +79 -0
  1108. package/src/components/Poll/components/PollResults/index.ts +3 -0
  1109. package/src/components/Poll/components/index.ts +8 -0
  1110. package/src/components/Poll/hooks/usePollAnswersPagination.ts +109 -0
  1111. package/src/components/Poll/hooks/usePollOptionVotesPagination.ts +119 -0
  1112. package/src/components/Poll/hooks/usePollState.ts +122 -0
  1113. package/src/components/Poll/hooks/usePollStateStore.ts +13 -0
  1114. package/src/components/Poll/index.ts +10 -0
  1115. package/src/components/ProgressControl/ProgressControl.tsx +38 -28
  1116. package/src/components/ProgressControl/WaveProgressBar.tsx +37 -29
  1117. package/src/components/Reply/Reply.tsx +4 -5
  1118. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +796 -903
  1119. package/src/components/ThreadList/ThreadList.tsx +6 -2
  1120. package/src/components/ThreadList/ThreadListItem.tsx +9 -8
  1121. package/src/components/ThreadList/ThreadListUnreadBanner.tsx +3 -2
  1122. package/src/components/docs/data.js +27 -13
  1123. package/src/components/index.ts +11 -11
  1124. package/src/contexts/__tests__/index.test.tsx +5 -0
  1125. package/src/contexts/activeChannelsRefContext/ActiveChannelsRefContext.tsx +27 -0
  1126. package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +41 -2
  1127. package/src/contexts/channelContext/ChannelContext.tsx +46 -2
  1128. package/src/contexts/channelsContext/ChannelsContext.tsx +28 -1
  1129. package/src/contexts/channelsStateContext/ChannelsStateContext.tsx +30 -1
  1130. package/src/contexts/chatContext/ChatContext.tsx +30 -1
  1131. package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +29 -0
  1132. package/src/contexts/index.ts +2 -1
  1133. package/src/contexts/keyboardContext/KeyboardContext.tsx +30 -0
  1134. package/src/contexts/messageContext/MessageContext.tsx +75 -22
  1135. package/src/contexts/messageInputContext/MessageInputContext.tsx +75 -21
  1136. package/src/contexts/messageInputContext/__tests__/isValidMessage.test.tsx +3 -2
  1137. package/src/contexts/messageInputContext/__tests__/pickFile.test.tsx +4 -2
  1138. package/src/contexts/messageInputContext/__tests__/uploadFile.test.tsx +2 -1
  1139. package/src/contexts/messageInputContext/__tests__/uploadImage.test.tsx +2 -1
  1140. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +14 -1
  1141. package/src/contexts/messageOverlayContext/MessageOverlayContext.tsx +148 -0
  1142. package/src/contexts/messageOverlayContext/hooks/useResettableState.test.tsx +48 -0
  1143. package/src/contexts/messageOverlayContext/hooks/useResettableState.ts +22 -0
  1144. package/src/contexts/messagesContext/MessagesContext.tsx +70 -84
  1145. package/src/contexts/overlayContext/OverlayContext.tsx +56 -2
  1146. package/src/contexts/overlayContext/OverlayProvider.tsx +67 -23
  1147. package/src/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.tsx +3 -0
  1148. package/src/contexts/paginatedMessageListContext/PaginatedMessageListContext.tsx +30 -1
  1149. package/src/contexts/pollContext/createPollContentContext.tsx +49 -0
  1150. package/src/contexts/pollContext/index.ts +2 -0
  1151. package/src/contexts/pollContext/pollContext.tsx +43 -0
  1152. package/src/contexts/suggestionsContext/SuggestionsContext.tsx +30 -1
  1153. package/src/contexts/themeContext/utils/theme.ts +326 -126
  1154. package/src/contexts/threadContext/ThreadContext.tsx +28 -1
  1155. package/src/contexts/translationContext/TranslationContext.tsx +29 -0
  1156. package/src/contexts/typingContext/TypingContext.tsx +28 -1
  1157. package/src/hooks/__tests__/useTranslatedMessage.test.tsx +9 -3
  1158. package/src/hooks/useStateStore.ts +12 -12
  1159. package/src/hooks/useTranslatedMessage.ts +4 -1
  1160. package/src/i18n/en.json +34 -0
  1161. package/src/i18n/es.json +38 -0
  1162. package/src/i18n/fr.json +38 -0
  1163. package/src/i18n/he.json +38 -0
  1164. package/src/i18n/hi.json +34 -0
  1165. package/src/i18n/it.json +38 -0
  1166. package/src/i18n/ja.json +34 -0
  1167. package/src/i18n/ko.json +34 -0
  1168. package/src/i18n/nl.json +34 -0
  1169. package/src/i18n/pt-br.json +38 -0
  1170. package/src/i18n/ru.json +42 -0
  1171. package/src/i18n/tr.json +34 -0
  1172. package/src/icons/Back.tsx +12 -0
  1173. package/src/icons/DragHandle.tsx +9 -0
  1174. package/src/icons/PinHeader.tsx +7 -13
  1175. package/src/icons/PollThumbnail.tsx +12 -0
  1176. package/src/icons/SendPoll.tsx +12 -0
  1177. package/src/icons/index.ts +4 -0
  1178. package/src/index.ts +3 -2
  1179. package/src/mock-builders/DB/mock.ts +84 -82
  1180. package/src/native.ts +26 -15
  1181. package/src/store/{SqliteClient.ts → QuickSqliteClient.ts} +55 -75
  1182. package/src/store/apis/addPendingTask.ts +5 -5
  1183. package/src/store/apis/deleteChannel.ts +3 -3
  1184. package/src/store/apis/deleteMember.ts +3 -3
  1185. package/src/store/apis/deleteMessage.ts +3 -3
  1186. package/src/store/apis/deleteMessagesForChannel.ts +3 -3
  1187. package/src/store/apis/deletePendingTask.ts +3 -3
  1188. package/src/store/apis/deleteReaction.ts +3 -3
  1189. package/src/store/apis/deleteReactions.ts +2 -2
  1190. package/src/store/apis/getAllChannelIds.ts +2 -2
  1191. package/src/store/apis/getAppSettings.ts +3 -3
  1192. package/src/store/apis/getChannelMessages.ts +2 -2
  1193. package/src/store/apis/getChannels.ts +2 -2
  1194. package/src/store/apis/getChannelsForFilterSort.ts +2 -2
  1195. package/src/store/apis/getLastSyncedAt.ts +3 -3
  1196. package/src/store/apis/getMembers.ts +2 -2
  1197. package/src/store/apis/getPendingTasks.ts +3 -3
  1198. package/src/store/apis/getReactions.ts +2 -2
  1199. package/src/store/apis/getReactionsforFilterSort.ts +3 -5
  1200. package/src/store/apis/getReads.ts +2 -2
  1201. package/src/store/apis/index.ts +1 -0
  1202. package/src/store/apis/insertReaction.ts +3 -3
  1203. package/src/store/apis/queries/selectChannelIdsForFilterSort.ts +3 -3
  1204. package/src/store/apis/queries/selectChannels.ts +3 -3
  1205. package/src/store/apis/queries/selectMembersForChannels.ts +3 -3
  1206. package/src/store/apis/queries/selectMessagesForChannels.ts +4 -4
  1207. package/src/store/apis/queries/selectReactionsForMessages.ts +3 -3
  1208. package/src/store/apis/queries/selectReadsForChannels.ts +4 -4
  1209. package/src/store/apis/updateMessage.ts +4 -4
  1210. package/src/store/apis/updatePollMessage.ts +48 -0
  1211. package/src/store/apis/updateReaction.ts +3 -3
  1212. package/src/store/apis/upsertAppSettings.ts +3 -3
  1213. package/src/store/apis/upsertChannelData.ts +3 -3
  1214. package/src/store/apis/upsertChannelDataFromChannel.ts +2 -2
  1215. package/src/store/apis/upsertChannels.ts +3 -3
  1216. package/src/store/apis/upsertCidsForQuery.ts +3 -3
  1217. package/src/store/apis/upsertMembers.ts +3 -3
  1218. package/src/store/apis/upsertMessages.ts +3 -3
  1219. package/src/store/apis/upsertReads.ts +3 -3
  1220. package/src/store/apis/upsertUserSyncStatus.ts +3 -3
  1221. package/src/store/mappers/mapMessageToStorable.ts +4 -0
  1222. package/src/store/mappers/mapStorableToMessage.ts +4 -0
  1223. package/src/store/schema.ts +4 -0
  1224. package/src/types/types.ts +0 -7
  1225. package/src/utils/DBSyncManager.ts +4 -4
  1226. package/src/utils/StreamChatRN.ts +27 -0
  1227. package/src/utils/__tests__/getResizedImageUrl.test.ts +2 -1
  1228. package/src/utils/getResizedImageUrl.ts +5 -7
  1229. package/src/version.json +1 -1
  1230. package/lib/commonjs/components/Message/MessageSimple/ReactionList/ReactionListBottom.js +0 -234
  1231. package/lib/commonjs/components/Message/MessageSimple/ReactionList/ReactionListBottom.js.map +0 -1
  1232. package/lib/commonjs/components/Message/MessageSimple/ReactionList/ReactionListTop.js +0 -195
  1233. package/lib/commonjs/components/Message/MessageSimple/ReactionList/ReactionListTop.js.map +0 -1
  1234. package/lib/commonjs/components/Message/hooks/useMessageData.js +0 -38
  1235. package/lib/commonjs/components/Message/hooks/useMessageData.js.map +0 -1
  1236. package/lib/commonjs/components/MessageMenu/MessageActionList.js +0 -35
  1237. package/lib/commonjs/components/MessageMenu/MessageActionList.js.map +0 -1
  1238. package/lib/commonjs/components/MessageMenu/MessageActionListItem.js +0 -60
  1239. package/lib/commonjs/components/MessageMenu/MessageActionListItem.js.map +0 -1
  1240. package/lib/commonjs/components/MessageMenu/MessageMenu.js +0 -70
  1241. package/lib/commonjs/components/MessageMenu/MessageMenu.js.map +0 -1
  1242. package/lib/commonjs/components/MessageMenu/MessageReactionPicker.js +0 -81
  1243. package/lib/commonjs/components/MessageMenu/MessageReactionPicker.js.map +0 -1
  1244. package/lib/commonjs/components/MessageMenu/MessageUserReactions.js +0 -171
  1245. package/lib/commonjs/components/MessageMenu/MessageUserReactions.js.map +0 -1
  1246. package/lib/commonjs/components/MessageMenu/MessageUserReactionsAvatar.js.map +0 -1
  1247. package/lib/commonjs/components/MessageMenu/MessageUserReactionsItem.js +0 -110
  1248. package/lib/commonjs/components/MessageMenu/MessageUserReactionsItem.js.map +0 -1
  1249. package/lib/commonjs/components/MessageMenu/ReactionButton.js +0 -59
  1250. package/lib/commonjs/components/MessageMenu/ReactionButton.js.map +0 -1
  1251. package/lib/commonjs/components/MessageMenu/hooks/useFetchReactions.js.map +0 -1
  1252. package/lib/commonjs/components/UIComponents/BottomSheetModal.js +0 -152
  1253. package/lib/commonjs/components/UIComponents/BottomSheetModal.js.map +0 -1
  1254. package/lib/commonjs/components/UIComponents/ImageBackground.js.map +0 -1
  1255. package/lib/commonjs/components/UIComponents/Spinner.js.map +0 -1
  1256. package/lib/commonjs/components/UIComponents/index.js +0 -37
  1257. package/lib/commonjs/components/UIComponents/index.js.map +0 -1
  1258. package/lib/commonjs/contexts/chatConfigContext/ChatConfigContext.js.map +0 -1
  1259. package/lib/commonjs/store/SqliteClient.js +0 -179
  1260. package/lib/commonjs/store/SqliteClient.js.map +0 -1
  1261. package/lib/module/components/Message/MessageSimple/ReactionList/ReactionListBottom.js +0 -234
  1262. package/lib/module/components/Message/MessageSimple/ReactionList/ReactionListBottom.js.map +0 -1
  1263. package/lib/module/components/Message/MessageSimple/ReactionList/ReactionListTop.js +0 -195
  1264. package/lib/module/components/Message/MessageSimple/ReactionList/ReactionListTop.js.map +0 -1
  1265. package/lib/module/components/Message/hooks/useMessageData.js +0 -38
  1266. package/lib/module/components/Message/hooks/useMessageData.js.map +0 -1
  1267. package/lib/module/components/MessageMenu/MessageActionList.js +0 -35
  1268. package/lib/module/components/MessageMenu/MessageActionList.js.map +0 -1
  1269. package/lib/module/components/MessageMenu/MessageActionListItem.js +0 -60
  1270. package/lib/module/components/MessageMenu/MessageActionListItem.js.map +0 -1
  1271. package/lib/module/components/MessageMenu/MessageMenu.js +0 -70
  1272. package/lib/module/components/MessageMenu/MessageMenu.js.map +0 -1
  1273. package/lib/module/components/MessageMenu/MessageReactionPicker.js +0 -81
  1274. package/lib/module/components/MessageMenu/MessageReactionPicker.js.map +0 -1
  1275. package/lib/module/components/MessageMenu/MessageUserReactions.js +0 -171
  1276. package/lib/module/components/MessageMenu/MessageUserReactions.js.map +0 -1
  1277. package/lib/module/components/MessageMenu/MessageUserReactionsAvatar.js.map +0 -1
  1278. package/lib/module/components/MessageMenu/MessageUserReactionsItem.js +0 -110
  1279. package/lib/module/components/MessageMenu/MessageUserReactionsItem.js.map +0 -1
  1280. package/lib/module/components/MessageMenu/ReactionButton.js +0 -59
  1281. package/lib/module/components/MessageMenu/ReactionButton.js.map +0 -1
  1282. package/lib/module/components/MessageMenu/hooks/useFetchReactions.js.map +0 -1
  1283. package/lib/module/components/UIComponents/BottomSheetModal.js +0 -152
  1284. package/lib/module/components/UIComponents/BottomSheetModal.js.map +0 -1
  1285. package/lib/module/components/UIComponents/ImageBackground.js.map +0 -1
  1286. package/lib/module/components/UIComponents/Spinner.js.map +0 -1
  1287. package/lib/module/components/UIComponents/index.js +0 -37
  1288. package/lib/module/components/UIComponents/index.js.map +0 -1
  1289. package/lib/module/contexts/chatConfigContext/ChatConfigContext.js.map +0 -1
  1290. package/lib/module/store/SqliteClient.js +0 -179
  1291. package/lib/module/store/SqliteClient.js.map +0 -1
  1292. package/lib/typescript/components/Message/MessageSimple/ReactionList/ReactionListBottom.d.ts +0 -12
  1293. package/lib/typescript/components/Message/MessageSimple/ReactionList/ReactionListBottom.d.ts.map +0 -1
  1294. package/lib/typescript/components/Message/MessageSimple/ReactionList/ReactionListTop.d.ts +0 -20
  1295. package/lib/typescript/components/Message/MessageSimple/ReactionList/ReactionListTop.d.ts.map +0 -1
  1296. package/lib/typescript/components/Message/hooks/useMessageData.d.ts +0 -12
  1297. package/lib/typescript/components/Message/hooks/useMessageData.d.ts.map +0 -1
  1298. package/lib/typescript/components/MessageMenu/MessageActionList.d.ts +0 -16
  1299. package/lib/typescript/components/MessageMenu/MessageActionList.d.ts.map +0 -1
  1300. package/lib/typescript/components/MessageMenu/MessageActionListItem.d.ts.map +0 -1
  1301. package/lib/typescript/components/MessageMenu/MessageMenu.d.ts +0 -32
  1302. package/lib/typescript/components/MessageMenu/MessageMenu.d.ts.map +0 -1
  1303. package/lib/typescript/components/MessageMenu/MessageReactionPicker.d.ts +0 -30
  1304. package/lib/typescript/components/MessageMenu/MessageReactionPicker.d.ts.map +0 -1
  1305. package/lib/typescript/components/MessageMenu/MessageUserReactions.d.ts +0 -21
  1306. package/lib/typescript/components/MessageMenu/MessageUserReactions.d.ts.map +0 -1
  1307. package/lib/typescript/components/MessageMenu/MessageUserReactionsAvatar.d.ts +0 -11
  1308. package/lib/typescript/components/MessageMenu/MessageUserReactionsAvatar.d.ts.map +0 -1
  1309. package/lib/typescript/components/MessageMenu/MessageUserReactionsItem.d.ts +0 -16
  1310. package/lib/typescript/components/MessageMenu/MessageUserReactionsItem.d.ts.map +0 -1
  1311. package/lib/typescript/components/MessageMenu/ReactionButton.d.ts +0 -25
  1312. package/lib/typescript/components/MessageMenu/ReactionButton.d.ts.map +0 -1
  1313. package/lib/typescript/components/MessageMenu/hooks/useFetchReactions.d.ts.map +0 -1
  1314. package/lib/typescript/components/UIComponents/BottomSheetModal.d.ts +0 -21
  1315. package/lib/typescript/components/UIComponents/BottomSheetModal.d.ts.map +0 -1
  1316. package/lib/typescript/components/UIComponents/ImageBackground.d.ts.map +0 -1
  1317. package/lib/typescript/components/UIComponents/Spinner.d.ts.map +0 -1
  1318. package/lib/typescript/components/UIComponents/index.d.ts +0 -4
  1319. package/lib/typescript/components/UIComponents/index.d.ts.map +0 -1
  1320. package/lib/typescript/contexts/chatConfigContext/ChatConfigContext.d.ts +0 -16
  1321. package/lib/typescript/contexts/chatConfigContext/ChatConfigContext.d.ts.map +0 -1
  1322. package/lib/typescript/store/SqliteClient.d.ts.map +0 -1
  1323. package/src/components/Message/MessageSimple/ReactionList/ReactionListBottom.tsx +0 -295
  1324. package/src/components/Message/MessageSimple/ReactionList/ReactionListTop.tsx +0 -271
  1325. package/src/components/Message/MessageSimple/__tests__/MessageSimple.test.js +0 -208
  1326. package/src/components/Message/MessageSimple/__tests__/ReactionListBottom.test.js +0 -166
  1327. package/src/components/Message/MessageSimple/__tests__/ReactionListTop.test.js +0 -92
  1328. package/src/components/Message/hooks/useMessageData.ts +0 -59
  1329. package/src/components/MessageMenu/MessageActionList.tsx +0 -49
  1330. package/src/components/MessageMenu/MessageActionListItem.tsx +0 -86
  1331. package/src/components/MessageMenu/MessageMenu.tsx +0 -123
  1332. package/src/components/MessageMenu/MessageReactionPicker.tsx +0 -122
  1333. package/src/components/MessageMenu/MessageUserReactions.tsx +0 -209
  1334. package/src/components/MessageMenu/MessageUserReactionsItem.tsx +0 -130
  1335. package/src/components/MessageMenu/ReactionButton.tsx +0 -72
  1336. package/src/components/MessageMenu/__tests__/MessageActionList.test.tsx +0 -48
  1337. package/src/components/MessageMenu/__tests__/MessageActionListItem.test.tsx +0 -48
  1338. package/src/components/MessageMenu/__tests__/MessageReactionPicker.test.tsx +0 -101
  1339. package/src/components/MessageMenu/__tests__/MessageUserReactions.test.tsx +0 -186
  1340. package/src/components/MessageMenu/__tests__/MessageUserReactionsAvatar.test.tsx +0 -35
  1341. package/src/components/MessageMenu/__tests__/MessageUserReactionsItem.test.tsx +0 -81
  1342. package/src/components/MessageMenu/__tests__/ReactionButton.test.tsx +0 -77
  1343. package/src/components/UIComponents/BottomSheetModal.tsx +0 -170
  1344. package/src/components/UIComponents/index.ts +0 -3
  1345. package/src/contexts/chatConfigContext/ChatConfigContext.tsx +0 -33
  1346. /package/lib/typescript/components/{UIComponents/ImageBackground.d.ts → ImageBackground.d.ts} +0 -0
  1347. /package/lib/typescript/components/{MessageMenu → MessageOverlay}/hooks/useFetchReactions.d.ts +0 -0
  1348. /package/lib/typescript/components/{UIComponents → Spinner}/Spinner.d.ts +0 -0
  1349. /package/src/components/{UIComponents/ImageBackground.tsx → ImageBackground.tsx} +0 -0
  1350. /package/src/components/{UIComponents → Spinner}/Spinner.tsx +0 -0
@@ -1,17 +1,20 @@
1
- import { useRef } from 'react';
2
1
  import { Platform } from 'react-native';
3
- import { Gesture, GestureType } from 'react-native-gesture-handler';
2
+ import type {
3
+ PanGestureHandlerGestureEvent,
4
+ PinchGestureHandlerGestureEvent,
5
+ TapGestureHandlerGestureEvent,
6
+ } from 'react-native-gesture-handler';
4
7
  import {
5
8
  cancelAnimation,
6
9
  Easing,
7
10
  runOnJS,
8
11
  SharedValue,
12
+ useAnimatedGestureHandler,
9
13
  useSharedValue,
10
14
  withDecay,
11
15
  withTiming,
12
16
  } from 'react-native-reanimated';
13
17
 
14
- import { useImageGalleryContext } from '../../../contexts/imageGalleryContext/ImageGalleryContext';
15
18
  import { useOverlayContext } from '../../../contexts/overlayContext/OverlayContext';
16
19
  import { triggerHaptic } from '../../../native';
17
20
 
@@ -61,15 +64,7 @@ export const useImageGalleryGestures = ({
61
64
  translateY: SharedValue<number>;
62
65
  translationX: SharedValue<number>;
63
66
  }) => {
64
- const { setMessages, setSelectedMessage } = useImageGalleryContext();
65
- /**
66
- * Gesture handler refs
67
- */
68
- const doubleTapRef = useRef<GestureType | undefined>(undefined);
69
- const panRef = useRef<GestureType | undefined>(undefined);
70
- const pinchRef = useRef<GestureType | undefined>(undefined);
71
- const singleTapRef = useRef<GestureType | undefined>(undefined);
72
- const { overlay, setOverlay } = useOverlayContext();
67
+ const { setOverlay } = useOverlayContext();
73
68
  const isAndroid = Platform.OS === 'android';
74
69
 
75
70
  /**
@@ -162,548 +157,534 @@ export const useImageGalleryGestures = ({
162
157
  * gesture handler once it has began so all interactions by the pan
163
158
  * handler are blocked if isPinch.value is true
164
159
  */
165
- const pan = Gesture.Pan()
166
- .enabled(overlay === 'gallery')
167
- .maxPointers(isAndroid ? 0 : 1)
168
- .minDistance(10)
169
- .onStart(() => {
170
- if (!isPinch.value) {
171
- /**
172
- * Cancel any previous motion animation on translations when a touch
173
- * begins to interrupt the animation and take over the position handling
174
- */
175
- cancelAnimation(translateX);
176
- cancelAnimation(translateY);
177
- cancelAnimation(scale);
178
- offsetX.value = translateX.value;
179
- offsetY.value = translateY.value;
180
- }
160
+ const onPan = useAnimatedGestureHandler<PanGestureHandlerGestureEvent>(
161
+ {
162
+ onActive: (evt) => {
163
+ if (evt.numberOfPointers === 1 && !isPinch.value) {
164
+ /**
165
+ * If Android where a second finger cannot be added back and
166
+ * removing one finger returns to Pan Handler then adjust origin
167
+ * on finger remove and set swiping false
168
+ */
169
+ if (isAndroid && hasPinched.value === HasPinched.TRUE) {
170
+ hasPinched.value = HasPinched.FALSE;
171
+ isSwiping.value = IsSwiping.FALSE;
172
+ offsetX.value = translateX.value + evt.translationX;
173
+ offsetY.value = translateY.value - evt.translationY;
174
+ }
181
175
 
182
- /**
183
- * Reset hasPinched for Android single finger offset
184
- */
185
- hasPinched.value = HasPinched.FALSE;
186
- })
187
- .onChange((event) => {
188
- if (event.numberOfPointers === 1 && !isPinch.value) {
189
- /**
190
- * If Android where a second finger cannot be added back and
191
- * removing one finger returns to Pan Handler then adjust origin
192
- * on finger remove and set swiping false
193
- */
194
- if (isAndroid && hasPinched.value === HasPinched.TRUE) {
195
- hasPinched.value = HasPinched.FALSE;
196
- isSwiping.value = IsSwiping.FALSE;
197
- offsetX.value = translateX.value + event.translationX;
198
- offsetY.value = translateY.value - event.translationY;
176
+ /**
177
+ * isSwiping is used to prevent Y movement if a clear swipe to next
178
+ * or previous is begun when at the edge of a photo. The value is
179
+ * either 0, 1, or 2, via the IsSwiping enum designating undetermined,
180
+ * true, or false and is reset on releasing the touch
181
+ */
182
+ if (isSwiping.value === IsSwiping.UNDETERMINED) {
183
+ const maxXYRatio = isAndroid ? 1 : 0.25;
184
+ if (
185
+ Math.abs(evt.translationX / evt.translationY) > maxXYRatio &&
186
+ (Math.abs(-halfScreenWidth * (scale.value - 1) - offsetX.value) < 3 ||
187
+ Math.abs(halfScreenWidth * (scale.value - 1) - offsetX.value) < 3)
188
+ ) {
189
+ isSwiping.value = IsSwiping.TRUE;
190
+ }
191
+ if (Math.abs(evt.translationY) > 25) {
192
+ isSwiping.value = IsSwiping.FALSE;
193
+ }
194
+ }
195
+
196
+ /**
197
+ * localEvtScale is used for swipe away
198
+ */
199
+ const localEvtScale = scale.value / offsetScale.value;
200
+
201
+ /**
202
+ * If not swiping translate the image in X and Y to the event
203
+ * translation plus offset. If swiping only translate X, if
204
+ * swiping down when at top of screen or centered balance scale
205
+ * using offset to a degree (this needs improvement the calculation
206
+ * is incorrect but likely needs origin use to be 100%)
207
+ */
208
+ translateX.value =
209
+ scale.value !== offsetScale.value
210
+ ? offsetX.value * localEvtScale - evt.translationX
211
+ : offsetX.value - evt.translationX;
212
+ translateY.value =
213
+ isSwiping.value !== IsSwiping.TRUE
214
+ ? scale.value !== offsetScale.value
215
+ ? offsetY.value * localEvtScale + evt.translationY
216
+ : offsetY.value + evt.translationY
217
+ : translateY.value;
218
+
219
+ /**
220
+ * If swiping down start scaling down the image for swipe
221
+ * away effect
222
+ */
223
+ scale.value =
224
+ currentImageHeight * offsetScale.value < screenHeight && translateY.value > 0
225
+ ? offsetScale.value * (1 - (1 / 3) * (translateY.value / screenHeight))
226
+ : currentImageHeight * offsetScale.value > screenHeight &&
227
+ translateY.value > (currentImageHeight / 2) * offsetScale.value - halfScreenHeight
228
+ ? offsetScale.value *
229
+ (1 -
230
+ (1 / 3) *
231
+ ((translateY.value -
232
+ ((currentImageHeight / 2) * offsetScale.value - halfScreenHeight)) /
233
+ screenHeight))
234
+ : scale.value;
235
+
236
+ overlayOpacity.value = localEvtScale;
199
237
  }
238
+ },
239
+ onFinish: (evt) => {
240
+ if (!isPinch.value && evt.numberOfPointers < 2) {
241
+ /**
242
+ * To determine if the fling should page to the next image we
243
+ * calculate a final position based on the current position and
244
+ * event velocity
245
+ */
246
+ const finalXPosition = evt.translationX - evt.velocityX * 0.3;
247
+ const finalYPosition = evt.translationY + evt.velocityY * 0.1;
200
248
 
201
- /**
202
- * isSwiping is used to prevent Y movement if a clear swipe to next
203
- * or previous is begun when at the edge of a photo. The value is
204
- * either 0, 1, or 2, via the IsSwiping enum designating undetermined,
205
- * true, or false and is reset on releasing the touch
206
- */
207
- if (isSwiping.value === IsSwiping.UNDETERMINED) {
208
- const maxXYRatio = isAndroid ? 1 : 0.25;
249
+ /**
250
+ * If there is a next photo, the image is lined up to the right
251
+ * edge, the swipe is to the left, and the final position is more
252
+ * than half the screen width, move to the next image
253
+ */
209
254
  if (
210
- Math.abs(event.translationX / event.translationY) > maxXYRatio &&
211
- (Math.abs(-halfScreenWidth * (scale.value - 1) - offsetX.value) < 3 ||
212
- Math.abs(halfScreenWidth * (scale.value - 1) - offsetX.value) < 3)
255
+ index.value < photoLength - 1 &&
256
+ Math.abs(halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
257
+ translateX.value < 0 &&
258
+ finalXPosition < -halfScreenWidth &&
259
+ isSwiping.value === IsSwiping.TRUE
213
260
  ) {
214
- isSwiping.value = IsSwiping.TRUE;
215
- }
216
- if (Math.abs(event.translationY) > 25) {
217
- isSwiping.value = IsSwiping.FALSE;
261
+ cancelAnimation(translationX);
262
+ translationX.value = withTiming(
263
+ -(screenWidth + MARGIN) * (index.value + 1),
264
+ {
265
+ duration: 200,
266
+ easing: Easing.out(Easing.ease),
267
+ },
268
+ () => {
269
+ resetMovementValues();
270
+ index.value = index.value + 1;
271
+ runOnJS(setSelectedIndex)(index.value);
272
+ },
273
+ );
274
+
275
+ /**
276
+ * If there is a previous photo, the image is lined up to the left
277
+ * edge, the swipe is to the right, and the final position is more
278
+ * than half the screen width, move to the previous image
279
+ */
280
+ } else if (
281
+ index.value > 0 &&
282
+ Math.abs(-halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
283
+ translateX.value > 0 &&
284
+ finalXPosition > halfScreenWidth &&
285
+ isSwiping.value === IsSwiping.TRUE
286
+ ) {
287
+ cancelAnimation(translationX);
288
+ translationX.value = withTiming(
289
+ -(screenWidth + MARGIN) * (index.value - 1),
290
+ {
291
+ duration: 200,
292
+ easing: Easing.out(Easing.ease),
293
+ },
294
+ () => {
295
+ resetMovementValues();
296
+ index.value = index.value - 1;
297
+ runOnJS(setSelectedIndex)(index.value);
298
+ },
299
+ );
218
300
  }
219
- }
220
301
 
221
- /**
222
- * localEvtScale is used for swipe away
223
- */
224
- const localEvtScale = scale.value / offsetScale.value;
302
+ /**
303
+ * When the pan is finished if the scale is less than 1 return the
304
+ * photo to center, if the photo is inside the edges of the screen
305
+ * return the photo to line up with the edges, otherwise use decay
306
+ * with a clamping at the edges to give the effect the image is
307
+ * sliding along using velocity and friction
308
+ */
309
+ translateX.value =
310
+ scale.value < 1
311
+ ? withTiming(0)
312
+ : translateX.value > halfScreenWidth * (scale.value - 1)
313
+ ? withTiming(halfScreenWidth * (scale.value - 1), {
314
+ duration: 200,
315
+ })
316
+ : translateX.value < -halfScreenWidth * (scale.value - 1)
317
+ ? withTiming(-halfScreenWidth * (scale.value - 1), {
318
+ duration: 200,
319
+ })
320
+ : withDecay({
321
+ clamp: [
322
+ -halfScreenWidth * (scale.value - 1),
323
+ halfScreenWidth * (scale.value - 1),
324
+ ],
325
+ deceleration: 0.99,
326
+ velocity: -evt.velocityX,
327
+ });
225
328
 
226
- /**
227
- * If not swiping translate the image in X and Y to the event
228
- * translation plus offset. If swiping only translate X, if
229
- * swiping down when at top of screen or centered balance scale
230
- * using offset to a degree (this needs improvement the calculation
231
- * is incorrect but likely needs origin use to be 100%)
232
- */
233
- translateX.value =
234
- scale.value !== offsetScale.value
235
- ? offsetX.value * localEvtScale - event.translationX
236
- : offsetX.value - event.translationX;
237
- translateY.value =
238
- isSwiping.value !== IsSwiping.TRUE
239
- ? scale.value !== offsetScale.value
240
- ? offsetY.value * localEvtScale + event.translationY
241
- : offsetY.value + event.translationY
242
- : translateY.value;
329
+ /**
330
+ * When the pan is finished if the height is less than the screen
331
+ * height return the photo to center, if the photo is inside the
332
+ * edges of the screen return the photo to line up with the edges,
333
+ * otherwise use decay with a clamping at the edges to give the effect
334
+ * the image is sliding along using velocity and friction
335
+ */
336
+ translateY.value =
337
+ currentImageHeight * scale.value < screenHeight
338
+ ? withTiming(0)
339
+ : translateY.value > (currentImageHeight / 2) * scale.value - halfScreenHeight
340
+ ? withTiming((currentImageHeight / 2) * scale.value - halfScreenHeight)
341
+ : translateY.value < (-currentImageHeight / 2) * scale.value + halfScreenHeight
342
+ ? withTiming((-currentImageHeight / 2) * scale.value + halfScreenHeight)
343
+ : withDecay({
344
+ clamp: [
345
+ (-currentImageHeight / 2) * scale.value + halfScreenHeight,
346
+ (currentImageHeight / 2) * scale.value - halfScreenHeight,
347
+ ],
348
+ deceleration: 0.99,
349
+ velocity: evt.velocityY,
350
+ });
243
351
 
244
- /**
245
- * If swiping down start scaling down the image for swipe
246
- * away effect
247
- */
248
- scale.value =
249
- currentImageHeight * offsetScale.value < screenHeight && translateY.value > 0
250
- ? offsetScale.value * (1 - (1 / 3) * (translateY.value / screenHeight))
251
- : currentImageHeight * offsetScale.value > screenHeight &&
252
- translateY.value > (currentImageHeight / 2) * offsetScale.value - halfScreenHeight
253
- ? offsetScale.value *
254
- (1 -
255
- (1 / 3) *
256
- ((translateY.value -
257
- ((currentImageHeight / 2) * offsetScale.value - halfScreenHeight)) /
258
- screenHeight))
259
- : scale.value;
260
-
261
- overlayOpacity.value = localEvtScale;
262
- }
263
- })
264
- .onEnd((event) => {
265
- if (!isPinch.value && event.numberOfPointers < 2) {
266
- /**
267
- * To determine if the fling should page to the next image we
268
- * calculate a final position based on the current position and
269
- * event velocity
270
- */
271
- const finalXPosition = event.translationX - event.velocityX * 0.3;
272
- const finalYPosition = event.translationY + event.velocityY * 0.1;
352
+ resetTouchValues();
273
353
 
274
- /**
275
- * If there is a next photo, the image is lined up to the right
276
- * edge, the swipe is to the left, and the final position is more
277
- * than half the screen width, move to the next image
278
- */
279
- if (
280
- index.value < photoLength - 1 &&
281
- Math.abs(halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
282
- translateX.value < 0 &&
283
- finalXPosition < -halfScreenWidth &&
284
- isSwiping.value === IsSwiping.TRUE
285
- ) {
286
- cancelAnimation(translationX);
287
- translationX.value = withTiming(
288
- -(screenWidth + MARGIN) * (index.value + 1),
289
- {
290
- duration: 200,
291
- easing: Easing.out(Easing.ease),
292
- },
293
- () => {
294
- resetMovementValues();
295
- index.value = index.value + 1;
296
- runOnJS(setSelectedIndex)(index.value);
297
- },
298
- );
354
+ /**
355
+ * If the scale has been reduced below one, i.e. zoomed out, translate
356
+ * the zoom back to one
357
+ */
358
+ scale.value =
359
+ scale.value !== offsetScale.value ? withTiming(offsetScale.value) : offsetScale.value;
299
360
 
300
361
  /**
301
- * If there is a previous photo, the image is lined up to the left
302
- * edge, the swipe is to the right, and the final position is more
303
- * than half the screen width, move to the previous image
362
+ * If the photo is centered or at the top of the screen if scaled larger
363
+ * than the screen, and not paging left or right, and the final Y position
364
+ * is greater than half the screen using swipe velocity and position, close
365
+ * the overlay
304
366
  */
305
- } else if (
306
- index.value > 0 &&
307
- Math.abs(-halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
308
- translateX.value > 0 &&
309
- finalXPosition > halfScreenWidth &&
310
- isSwiping.value === IsSwiping.TRUE
311
- ) {
312
- cancelAnimation(translationX);
313
- translationX.value = withTiming(
314
- -(screenWidth + MARGIN) * (index.value - 1),
315
- {
367
+ if (
368
+ finalYPosition > halfScreenHeight &&
369
+ offsetY.value + 8 >= (currentImageHeight / 2) * scale.value - halfScreenHeight &&
370
+ isSwiping.value !== IsSwiping.TRUE &&
371
+ translateY.value !== 0 &&
372
+ !(
373
+ Math.abs(halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
374
+ translateX.value < 0 &&
375
+ finalXPosition < -halfScreenWidth
376
+ ) &&
377
+ !(
378
+ Math.abs(-halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
379
+ translateX.value > 0 &&
380
+ finalXPosition > halfScreenWidth
381
+ )
382
+ ) {
383
+ cancelAnimation(translateX);
384
+ cancelAnimation(translateY);
385
+ cancelAnimation(scale);
386
+ overlayOpacity.value = withTiming(
387
+ 0,
388
+ {
389
+ duration: 200,
390
+ easing: Easing.out(Easing.ease),
391
+ },
392
+ () => {
393
+ runOnJS(setOverlay)('none');
394
+ },
395
+ );
396
+ scale.value = withTiming(0.6, {
316
397
  duration: 200,
317
398
  easing: Easing.out(Easing.ease),
318
- },
319
- () => {
320
- resetMovementValues();
321
- index.value = index.value - 1;
322
- runOnJS(setSelectedIndex)(index.value);
323
- },
324
- );
399
+ });
400
+ translateY.value =
401
+ evt.velocityY > 1000
402
+ ? withDecay({
403
+ velocity: evt.velocityY,
404
+ })
405
+ : withTiming(halfScreenHeight + (currentImageHeight / 2) * scale.value, {
406
+ duration: 200,
407
+ easing: Easing.out(Easing.ease),
408
+ });
409
+ translateX.value = withDecay({
410
+ velocity: -evt.velocityX,
411
+ });
412
+ }
325
413
  }
326
-
327
- /**
328
- * When the pan is finished if the scale is less than 1 return the
329
- * photo to center, if the photo is inside the edges of the screen
330
- * return the photo to line up with the edges, otherwise use decay
331
- * with a clamping at the edges to give the effect the image is
332
- * sliding along using velocity and friction
333
- */
334
- translateX.value =
335
- scale.value < 1
336
- ? withTiming(0)
337
- : translateX.value > halfScreenWidth * (scale.value - 1)
338
- ? withTiming(halfScreenWidth * (scale.value - 1), {
339
- duration: 200,
340
- })
341
- : translateX.value < -halfScreenWidth * (scale.value - 1)
342
- ? withTiming(-halfScreenWidth * (scale.value - 1), {
343
- duration: 200,
344
- })
345
- : withDecay({
346
- clamp: [-halfScreenWidth * (scale.value - 1), halfScreenWidth * (scale.value - 1)],
347
- deceleration: 0.99,
348
- velocity: -event.velocityX,
349
- });
350
-
351
- /**
352
- * When the pan is finished if the height is less than the screen
353
- * height return the photo to center, if the photo is inside the
354
- * edges of the screen return the photo to line up with the edges,
355
- * otherwise use decay with a clamping at the edges to give the effect
356
- * the image is sliding along using velocity and friction
357
- */
358
- translateY.value =
359
- currentImageHeight * scale.value < screenHeight
360
- ? withTiming(0)
361
- : translateY.value > (currentImageHeight / 2) * scale.value - halfScreenHeight
362
- ? withTiming((currentImageHeight / 2) * scale.value - halfScreenHeight)
363
- : translateY.value < (-currentImageHeight / 2) * scale.value + halfScreenHeight
364
- ? withTiming((-currentImageHeight / 2) * scale.value + halfScreenHeight)
365
- : withDecay({
366
- clamp: [
367
- (-currentImageHeight / 2) * scale.value + halfScreenHeight,
368
- (currentImageHeight / 2) * scale.value - halfScreenHeight,
369
- ],
370
- deceleration: 0.99,
371
- velocity: event.velocityY,
372
- });
373
-
374
- resetTouchValues();
375
-
376
- /**
377
- * If the scale has been reduced below one, i.e. zoomed out, translate
378
- * the zoom back to one
379
- */
380
- scale.value =
381
- scale.value !== offsetScale.value ? withTiming(offsetScale.value) : offsetScale.value;
382
-
383
- /**
384
- * If the photo is centered or at the top of the screen if scaled larger
385
- * than the screen, and not paging left or right, and the final Y position
386
- * is greater than half the screen using swipe velocity and position, close
387
- * the overlay
388
- */
389
- if (
390
- finalYPosition > halfScreenHeight &&
391
- offsetY.value + 8 >= (currentImageHeight / 2) * scale.value - halfScreenHeight &&
392
- isSwiping.value !== IsSwiping.TRUE &&
393
- translateY.value !== 0 &&
394
- !(
395
- Math.abs(halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
396
- translateX.value < 0 &&
397
- finalXPosition < -halfScreenWidth
398
- ) &&
399
- !(
400
- Math.abs(-halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
401
- translateX.value > 0 &&
402
- finalXPosition > halfScreenWidth
403
- )
404
- ) {
414
+ },
415
+ onStart: () => {
416
+ if (!isPinch.value) {
417
+ /**
418
+ * Cancel any previous motion animation on translations when a touch
419
+ * begins to interrupt the animation and take over the position handling
420
+ */
405
421
  cancelAnimation(translateX);
406
422
  cancelAnimation(translateY);
407
423
  cancelAnimation(scale);
408
-
409
- overlayOpacity.value = withTiming(
410
- 0,
411
- {
412
- duration: 200,
413
- easing: Easing.out(Easing.ease),
414
- },
415
- () => {
416
- runOnJS(setSelectedMessage)(undefined);
417
- runOnJS(setMessages)([]);
418
- runOnJS(setOverlay)('none');
419
- },
420
- );
421
- scale.value = withTiming(0.6, {
422
- duration: 200,
423
- easing: Easing.out(Easing.ease),
424
- });
425
- translateY.value =
426
- event.velocityY > 1000
427
- ? withDecay({
428
- velocity: event.velocityY,
429
- })
430
- : withTiming(halfScreenHeight + (currentImageHeight / 2) * scale.value, {
431
- duration: 200,
432
- easing: Easing.out(Easing.ease),
433
- });
434
- translateX.value = withDecay({
435
- velocity: -event.velocityX,
436
- });
424
+ offsetX.value = translateX.value;
425
+ offsetY.value = translateY.value;
437
426
  }
438
- }
439
- })
440
- .simultaneousWithExternalGesture(pinchRef)
441
- .withRef(panRef);
427
+
428
+ /**
429
+ * Reset hasPinched for Android single finger offset
430
+ */
431
+ hasPinched.value = HasPinched.FALSE;
432
+ },
433
+ },
434
+ [currentImageHeight, photoLength],
435
+ );
442
436
 
443
437
  /**
444
438
  * On pinch is run when two or more fingers touch the screen, it then takes over
445
439
  * all touch handling even if the number of fingers is reduced to one until the
446
440
  * touch is complete
447
441
  */
448
- const pinch = Gesture.Pinch()
449
- .onStart((event) => {
450
- /**
451
- * Android starts with a zero event with 1 touch instead of two
452
- * we therefore must wait to capture starting info until the double
453
- * touch begins
454
- */
455
- if (!isAndroid) {
442
+ const onPinch = useAnimatedGestureHandler<PinchGestureHandlerGestureEvent>(
443
+ {
444
+ onActive: (evt) => {
456
445
  /**
457
- * Cancel any previous motion animation on translations when a touch
458
- * begins to interrupt the animation and take over the position handling
446
+ * Android starts with a zero event with 1 touch instead of two
447
+ * we therefore must wait to capture starting info until the double
448
+ * touch begins
459
449
  */
460
- cancelAnimation(translateX);
461
- cancelAnimation(translateY);
462
- cancelAnimation(scale);
450
+ if (!isPinch.value && isAndroid) {
451
+ /**
452
+ * Set hasPinched to true so when removing one finger the pan active
453
+ * state adjusts the offset
454
+ */
455
+ hasPinched.value = HasPinched.TRUE;
463
456
 
464
- /**
465
- * Set pinch to true to stop all pan gesture interactions
466
- */
467
- isPinch.value = true;
457
+ /**
458
+ * Cancel any previous motion animation on translations when a touch
459
+ * begins to interrupt the animation and take over the position handling
460
+ */
461
+ cancelAnimation(translateX);
462
+ cancelAnimation(translateY);
463
+ cancelAnimation(scale);
464
+
465
+ /**
466
+ * Reset isSwiping as now the pan gesture handler is no longer running
467
+ */
468
+ isSwiping.value = IsSwiping.UNDETERMINED;
469
+
470
+ /**
471
+ * Set initial values for pinch gesture interaction handler
472
+ */
473
+ numberOfPinchFingers.value = evt.numberOfPointers;
474
+ offsetX.value = translateX.value;
475
+ offsetY.value = translateY.value;
476
+ adjustedFocalX.value = evt.focalX - (halfScreenWidth - offsetX.value);
477
+ adjustedFocalY.value = evt.focalY - (halfScreenHeight + offsetY.value);
478
+ originX.value = adjustedFocalX.value;
479
+ originY.value = adjustedFocalY.value;
480
+ offsetScale.value = scale.value;
481
+ }
468
482
 
469
483
  /**
470
- * Reset isSwiping as now the pan gesture handler is no longer running
484
+ * Set pinch to true to stop all pan gesture interactions, we do this
485
+ * again here for Android outside the check that creates type
471
486
  */
472
- isSwiping.value = IsSwiping.UNDETERMINED;
487
+ isPinch.value = true;
473
488
 
474
489
  /**
475
- * Set initial values for pinch gesture interaction handler
490
+ * The scale is clamped to a minimum of 1 and maximum of 8 for aesthetics.
491
+ * We use the clamped value to determine a local event scale so the focal
492
+ * point does not become out of sync with the actual photo scaling, e.g.
493
+ * evt.scale is 20 but scale is 8, using evt.scale for offset will put the
494
+ * photo and calculations out of sync
476
495
  */
477
- numberOfPinchFingers.value = event.numberOfPointers;
478
- offsetX.value = translateX.value;
479
- offsetY.value = translateY.value;
480
- adjustedFocalX.value = event.focalX - (halfScreenWidth - offsetX.value);
481
- adjustedFocalY.value = event.focalY - (halfScreenHeight + offsetY.value);
482
- originX.value = adjustedFocalX.value;
483
- originY.value = adjustedFocalY.value;
484
- offsetScale.value = scale.value;
485
- }
496
+ scale.value = clamp(offsetScale.value * evt.scale, 1, 8);
497
+ const localEvtScale = scale.value / offsetScale.value;
486
498
 
487
- /**
488
- * Reset hasPinched for Android single finger offset
489
- */
490
- hasPinched.value = HasPinched.FALSE;
491
- })
492
- .onChange((event) => {
493
- /**
494
- * Android starts with a zero event with 1 touch instead of two
495
- * we therefore must wait to capture starting info until the double
496
- * touch begins
497
- */
498
- if (!isPinch.value && isAndroid) {
499
499
  /**
500
- * Set hasPinched to true so when removing one finger the pan active
501
- * state adjusts the offset
500
+ * When we hit the top or bottom of the scale clamping we run a haptic
501
+ * trigger, we track if it has been run to not spam the trigger
502
502
  */
503
- hasPinched.value = HasPinched.TRUE;
503
+ if (scale.value !== 8 && scale.value !== 1) {
504
+ hasHitTopScale.value = 0;
505
+ hasHitBottomScale.value = 0;
506
+ } else if (scale.value === 8 && hasHitTopScale.value === 0) {
507
+ hasHitTopScale.value = 1;
508
+ runOnJS(triggerHaptic)('impactLight');
509
+ } else if (scale.value === 1 && hasHitBottomScale.value === 0) {
510
+ hasHitBottomScale.value = 1;
511
+ runOnJS(triggerHaptic)('impactLight');
512
+ }
504
513
 
505
514
  /**
506
- * Cancel any previous motion animation on translations when a touch
507
- * begins to interrupt the animation and take over the position handling
515
+ * We calculate the adjusted focal point on the photo using the events
516
+ * focal position on the screen, screen size, and current photo offset
508
517
  */
509
- cancelAnimation(translateX);
510
- cancelAnimation(translateY);
511
- cancelAnimation(scale);
518
+ adjustedFocalX.value = evt.focalX - (halfScreenWidth - offsetX.value);
519
+ adjustedFocalY.value = evt.focalY - (halfScreenHeight + offsetY.value);
512
520
 
513
521
  /**
514
- * Reset isSwiping as now the pan gesture handler is no longer running
522
+ * If the number of fingers on the screen changes, the position of the
523
+ * focal point will change and this needs to be accounted for, e.g. if
524
+ * two fingers are on the screen the focal is between them, but if one is
525
+ * then removed the focal is now at the remaining fingers touch position.
526
+ * If this happens without accounting for the change the image will jump
527
+ * around, we keep track of the previous two finger focal to adjust for this
528
+ * change in a reduction from two fingers to one, then if another finger
529
+ * is added again we adjust the origin to account for the difference between
530
+ * the original two finger touch and the new two finger touch position.
515
531
  */
516
- isSwiping.value = IsSwiping.UNDETERMINED;
532
+ if (numberOfPinchFingers.value !== evt.numberOfPointers) {
533
+ numberOfPinchFingers.value = evt.numberOfPointers;
534
+ if (evt.numberOfPointers === 1) {
535
+ focalOffsetX.value = oldFocalX.value - adjustedFocalX.value;
536
+ focalOffsetY.value = oldFocalY.value - adjustedFocalY.value;
537
+ } else if (numberOfPinchFingers.value > 1) {
538
+ originX.value =
539
+ originX.value -
540
+ (oldFocalX.value / localEvtScale - adjustedFocalX.value / localEvtScale);
541
+ originY.value =
542
+ originY.value -
543
+ (oldFocalY.value / localEvtScale - adjustedFocalY.value / localEvtScale);
544
+ }
545
+ }
517
546
 
518
547
  /**
519
- * Set initial values for pinch gesture interaction handler
548
+ * If pinch handler has been activated via two fingers then the fingers
549
+ * reduced to one we keep track of the old focal using the focal offset
550
+ * from when the number of fingers was two. We then translate the photo
551
+ * taking into account the offset, focal, focal offset, origin, and scale.
520
552
  */
521
- numberOfPinchFingers.value = event.numberOfPointers;
522
- offsetX.value = translateX.value;
523
- offsetY.value = translateY.value;
524
- adjustedFocalX.value = event.focalX - (halfScreenWidth - offsetX.value);
525
- adjustedFocalY.value = event.focalY - (halfScreenHeight + offsetY.value);
526
- originX.value = adjustedFocalX.value;
527
- originY.value = adjustedFocalY.value;
528
- offsetScale.value = scale.value;
529
- }
553
+ if (numberOfPinchFingers.value === 1) {
554
+ oldFocalX.value = adjustedFocalX.value + focalOffsetX.value;
555
+ oldFocalY.value = adjustedFocalY.value + focalOffsetY.value;
556
+ translateX.value = offsetX.value - oldFocalX.value + localEvtScale * originX.value;
557
+ translateY.value = offsetY.value + oldFocalY.value - localEvtScale * originY.value;
530
558
 
531
- /**
532
- * Set pinch to true to stop all pan gesture interactions, we do this
533
- * again here for Android outside the check that creates type
534
- */
535
- isPinch.value = true;
536
-
537
- /**
538
- * The scale is clamped to a minimum of 1 and maximum of 8 for aesthetics.
539
- * We use the clamped value to determine a local event scale so the focal
540
- * point does not become out of sync with the actual photo scaling, e.g.
541
- * evt.scale is 20 but scale is 8, using evt.scale for offset will put the
542
- * photo and calculations out of sync
543
- */
544
- scale.value = clamp(offsetScale.value * event.scale, 1, 8);
545
- const localEvtScale = scale.value / offsetScale.value;
546
-
547
- /**
548
- * When we hit the top or bottom of the scale clamping we run a haptic
549
- * trigger, we track if it has been run to not spam the trigger
550
- */
551
- if (scale.value !== 8 && scale.value !== 1) {
552
- hasHitTopScale.value = 0;
553
- hasHitBottomScale.value = 0;
554
- } else if (scale.value === 8 && hasHitTopScale.value === 0) {
555
- hasHitTopScale.value = 1;
556
- runOnJS(triggerHaptic)('impactLight');
557
- } else if (scale.value === 1 && hasHitBottomScale.value === 0) {
558
- hasHitBottomScale.value = 1;
559
- runOnJS(triggerHaptic)('impactLight');
560
- }
561
-
562
- /**
563
- * We calculate the adjusted focal point on the photo using the events
564
- * focal position on the screen, screen size, and current photo offset
565
- */
566
- adjustedFocalX.value = event.focalX - (halfScreenWidth - offsetX.value);
567
- adjustedFocalY.value = event.focalY - (halfScreenHeight + offsetY.value);
568
-
569
- /**
570
- * If the number of fingers on the screen changes, the position of the
571
- * focal point will change and this needs to be accounted for, e.g. if
572
- * two fingers are on the screen the focal is between them, but if one is
573
- * then removed the focal is now at the remaining fingers touch position.
574
- * If this happens without accounting for the change the image will jump
575
- * around, we keep track of the previous two finger focal to adjust for this
576
- * change in a reduction from two fingers to one, then if another finger
577
- * is added again we adjust the origin to account for the difference between
578
- * the original two finger touch and the new two finger touch position.
579
- */
580
- if (numberOfPinchFingers.value !== event.numberOfPointers) {
581
- numberOfPinchFingers.value = event.numberOfPointers;
582
- if (event.numberOfPointers === 1) {
583
- focalOffsetX.value = oldFocalX.value - adjustedFocalX.value;
584
- focalOffsetY.value = oldFocalY.value - adjustedFocalY.value;
559
+ /**
560
+ * If the number of fingers in the gesture is greater than one the
561
+ * adjusted focal point is saved as the old focal and the photo is
562
+ * translated taking into account the offset, focal, origin, and scale.
563
+ */
585
564
  } else if (numberOfPinchFingers.value > 1) {
586
- originX.value =
587
- originX.value -
588
- (oldFocalX.value / localEvtScale - adjustedFocalX.value / localEvtScale);
589
- originY.value =
590
- originY.value -
591
- (oldFocalY.value / localEvtScale - adjustedFocalY.value / localEvtScale);
565
+ oldFocalX.value = adjustedFocalX.value;
566
+ oldFocalY.value = adjustedFocalY.value;
567
+ translateX.value = offsetX.value - adjustedFocalX.value + localEvtScale * originX.value;
568
+ translateY.value = offsetY.value + adjustedFocalY.value - localEvtScale * originY.value;
592
569
  }
593
- }
570
+ },
571
+ onFinish: () => {
572
+ if (isPinch.value) {
573
+ /**
574
+ * When the pinch is finished if the scale is less than 1 return the
575
+ * photo to center, if the photo is inside the edges of the screen
576
+ * return the photo to line up with the edges, otherwise leave the
577
+ * photo in its current position
578
+ */
579
+ translateX.value =
580
+ scale.value < 1
581
+ ? withTiming(0)
582
+ : translateX.value > halfScreenWidth * (scale.value - 1)
583
+ ? withTiming(halfScreenWidth * (scale.value - 1))
584
+ : translateX.value < -halfScreenWidth * (scale.value - 1)
585
+ ? withTiming(-halfScreenWidth * (scale.value - 1))
586
+ : translateX.value;
594
587
 
595
- /**
596
- * If pinch handler has been activated via two fingers then the fingers
597
- * reduced to one we keep track of the old focal using the focal offset
598
- * from when the number of fingers was two. We then translate the photo
599
- * taking into account the offset, focal, focal offset, origin, and scale.
600
- */
601
- if (numberOfPinchFingers.value === 1) {
602
- oldFocalX.value = adjustedFocalX.value + focalOffsetX.value;
603
- oldFocalY.value = adjustedFocalY.value + focalOffsetY.value;
604
- translateX.value = offsetX.value - oldFocalX.value + localEvtScale * originX.value;
605
- translateY.value = offsetY.value + oldFocalY.value - localEvtScale * originY.value;
588
+ /**
589
+ * When the pinch is finished if the height is less than the screen
590
+ * height return the photo to center, if the photo is inside the
591
+ * edges of the screen return the photo to line up with the edges,
592
+ * otherwise leave the photo in its current position
593
+ */
594
+ translateY.value =
595
+ currentImageHeight * scale.value < screenHeight
596
+ ? withTiming(0)
597
+ : translateY.value > (currentImageHeight / 2) * scale.value - screenHeight / 2
598
+ ? withTiming((currentImageHeight / 2) * scale.value - screenHeight / 2)
599
+ : translateY.value < (-currentImageHeight / 2) * scale.value + screenHeight / 2
600
+ ? withTiming((-currentImageHeight / 2) * scale.value + screenHeight / 2)
601
+ : translateY.value;
606
602
 
603
+ /**
604
+ * If the scale has been reduced below one, i.e. zoomed out, translate
605
+ * the zoom back to one
606
+ */
607
+ offsetScale.value = scale.value < 1 ? 1 : scale.value;
608
+ scale.value = scale.value < 1 ? withTiming(1) : scale.value;
609
+ resetTouchValues();
610
+ }
611
+ },
612
+ onStart: (evt) => {
607
613
  /**
608
- * If the number of fingers in the gesture is greater than one the
609
- * adjusted focal point is saved as the old focal and the photo is
610
- * translated taking into account the offset, focal, origin, and scale.
611
- */
612
- } else if (numberOfPinchFingers.value > 1) {
613
- oldFocalX.value = adjustedFocalX.value;
614
- oldFocalY.value = adjustedFocalY.value;
615
- translateX.value = offsetX.value - adjustedFocalX.value + localEvtScale * originX.value;
616
- translateY.value = offsetY.value + adjustedFocalY.value - localEvtScale * originY.value;
617
- }
618
- })
619
- .onEnd(() => {
620
- if (isPinch.value) {
621
- /**
622
- * When the pinch is finished if the scale is less than 1 return the
623
- * photo to center, if the photo is inside the edges of the screen
624
- * return the photo to line up with the edges, otherwise leave the
625
- * photo in its current position
614
+ * Android starts with a zero event with 1 touch instead of two
615
+ * we therefore must wait to capture starting info until the double
616
+ * touch begins
626
617
  */
627
- translateX.value =
628
- scale.value < 1
629
- ? withTiming(0)
630
- : translateX.value > halfScreenWidth * (scale.value - 1)
631
- ? withTiming(halfScreenWidth * (scale.value - 1))
632
- : translateX.value < -halfScreenWidth * (scale.value - 1)
633
- ? withTiming(-halfScreenWidth * (scale.value - 1))
634
- : translateX.value;
618
+ if (!isAndroid) {
619
+ /**
620
+ * Cancel any previous motion animation on translations when a touch
621
+ * begins to interrupt the animation and take over the position handling
622
+ */
623
+ cancelAnimation(translateX);
624
+ cancelAnimation(translateY);
625
+ cancelAnimation(scale);
635
626
 
636
- /**
637
- * When the pinch is finished if the height is less than the screen
638
- * height return the photo to center, if the photo is inside the
639
- * edges of the screen return the photo to line up with the edges,
640
- * otherwise leave the photo in its current position
641
- */
642
- translateY.value =
643
- currentImageHeight * scale.value < screenHeight
644
- ? withTiming(0)
645
- : translateY.value > (currentImageHeight / 2) * scale.value - screenHeight / 2
646
- ? withTiming((currentImageHeight / 2) * scale.value - screenHeight / 2)
647
- : translateY.value < (-currentImageHeight / 2) * scale.value + screenHeight / 2
648
- ? withTiming((-currentImageHeight / 2) * scale.value + screenHeight / 2)
649
- : translateY.value;
627
+ /**
628
+ * Set pinch to true to stop all pan gesture interactions
629
+ */
630
+ isPinch.value = true;
631
+
632
+ /**
633
+ * Reset isSwiping as now the pan gesture handler is no longer running
634
+ */
635
+ isSwiping.value = IsSwiping.UNDETERMINED;
636
+
637
+ /**
638
+ * Set initial values for pinch gesture interaction handler
639
+ */
640
+ numberOfPinchFingers.value = evt.numberOfPointers;
641
+ offsetX.value = translateX.value;
642
+ offsetY.value = translateY.value;
643
+ adjustedFocalX.value = evt.focalX - (halfScreenWidth - offsetX.value);
644
+ adjustedFocalY.value = evt.focalY - (halfScreenHeight + offsetY.value);
645
+ originX.value = adjustedFocalX.value;
646
+ originY.value = adjustedFocalY.value;
647
+ offsetScale.value = scale.value;
648
+ }
650
649
 
651
650
  /**
652
- * If the scale has been reduced below one, i.e. zoomed out, translate
653
- * the zoom back to one
651
+ * Reset hasPinched for Android single finger offset
654
652
  */
655
- offsetScale.value = scale.value < 1 ? 1 : scale.value;
656
- scale.value = scale.value < 1 ? withTiming(1) : scale.value;
657
- resetTouchValues();
658
- }
659
- })
660
- .withRef(pinchRef)
661
- .simultaneousWithExternalGesture(panRef);
653
+ hasPinched.value = HasPinched.FALSE;
654
+ },
655
+ },
656
+ [currentImageHeight],
657
+ );
662
658
 
663
659
  /**
664
660
  * Single tap handler for header hiding and showing
665
661
  */
666
- const singleTap = Gesture.Tap()
667
- .minPointers(1)
668
- .numberOfTaps(1)
669
- .onEnd(() => {
662
+ const onSingleTap = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>({
663
+ onActive: () => {
670
664
  cancelAnimation(headerFooterVisible);
671
665
  headerFooterVisible.value = headerFooterVisible.value > 0 ? withTiming(0) : withTiming(1);
672
- })
673
- .requireExternalGestureToFail(panRef, pinchRef, doubleTapRef)
674
- .withRef(singleTapRef);
666
+ },
667
+ });
675
668
 
676
669
  /**
677
670
  * Double tap handler to zoom back out and hide header and footer
678
671
  */
679
- const doubleTap = Gesture.Tap()
680
- .maxDeltaX(8)
681
- .maxDeltaY(8)
682
- .maxDistance(8)
683
- .minPointers(1)
684
- .numberOfTaps(2)
685
- .onStart((event) => {
686
- tapX.value = event.absoluteX;
687
- tapY.value = event.absoluteY;
688
- })
689
- .onEnd((event) => {
690
- if (
691
- Math.abs(tapX.value - event.absoluteX) < 64 &&
692
- Math.abs(tapY.value - event.absoluteY) < 64
693
- ) {
672
+ const onDoubleTap = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>({
673
+ onActive: (evt) => {
674
+ if (Math.abs(tapX.value - evt.absoluteX) < 64 && Math.abs(tapY.value - evt.absoluteY) < 64) {
694
675
  if (offsetScale.value === 1 && offsetX.value === 0 && offsetY.value === 0) {
695
676
  offsetScale.value = 2;
696
677
  scale.value = withTiming(2, {
697
678
  duration: 200,
698
679
  easing: Easing.out(Easing.ease),
699
680
  });
700
- translateX.value = withTiming(event.absoluteX - halfScreenWidth, {
681
+ translateX.value = withTiming(evt.absoluteX - halfScreenWidth, {
701
682
  duration: 200,
702
683
  easing: Easing.out(Easing.ease),
703
684
  });
704
685
  if (currentImageHeight * 2 > screenHeight) {
705
686
  const translateYTopBottom =
706
- event.absoluteY > halfScreenHeight
687
+ evt.absoluteY > halfScreenHeight
707
688
  ? -(currentImageHeight * 2 - screenHeight) / 2
708
689
  : (currentImageHeight * 2 - screenHeight) / 2;
709
690
  translateY.value = withTiming(translateYTopBottom, {
@@ -733,14 +714,18 @@ export const useImageGalleryGestures = ({
733
714
  }
734
715
  }
735
716
  }
736
- })
737
- .withRef(doubleTapRef);
717
+ },
718
+ onStart: (evt) => {
719
+ tapX.value = evt.absoluteX;
720
+ tapY.value = evt.absoluteY;
721
+ },
722
+ });
738
723
 
739
724
  return {
740
- doubleTap,
741
- pan,
742
- pinch,
743
- singleTap,
725
+ onDoubleTap,
726
+ onPan,
727
+ onPinch,
728
+ onSingleTap,
744
729
  };
745
730
  };
746
731