stream-chat-react-native-core 5.22.0-beta.1 → 5.22.0-beta.10

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 (269) hide show
  1. package/README.md +10 -5
  2. package/lib/commonjs/components/Attachment/AudioAttachment.js +12 -12
  3. package/lib/commonjs/components/Attachment/AudioAttachment.js.map +1 -1
  4. package/lib/commonjs/components/Attachment/FileAttachment.js +10 -7
  5. package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
  6. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +8 -6
  7. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  8. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js +24 -20
  9. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  10. package/lib/commonjs/components/AttachmentPicker/components/AttachmentSelectionBar.js +26 -11
  11. package/lib/commonjs/components/AttachmentPicker/components/AttachmentSelectionBar.js.map +1 -1
  12. package/lib/commonjs/components/Channel/Channel.js +65 -46
  13. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  14. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js +2 -0
  15. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  16. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -2
  17. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  18. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js +16 -14
  19. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  20. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js +4 -2
  21. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
  22. package/lib/commonjs/components/ImageGallery/ImageGallery.js +29 -32
  23. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  24. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +7 -5
  25. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  26. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +10 -8
  27. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  28. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +10 -8
  29. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
  30. package/lib/commonjs/components/Indicators/EmptyStateIndicator.js +17 -12
  31. package/lib/commonjs/components/Indicators/EmptyStateIndicator.js.map +1 -1
  32. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +20 -17
  33. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  34. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +18 -17
  35. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -1
  36. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.js +7 -5
  37. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.js.map +1 -1
  38. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.test.js +8 -0
  39. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.test.js.map +1 -0
  40. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +25 -17
  41. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  42. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +30 -20
  43. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  44. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +13 -13
  45. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  46. package/lib/commonjs/components/MessageInput/MessageInput.js +1 -1
  47. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  48. package/lib/commonjs/components/MessageInput/UploadProgressIndicator.js.map +1 -1
  49. package/lib/commonjs/components/MessageList/InlineUnreadIndicator.js +13 -11
  50. package/lib/commonjs/components/MessageList/InlineUnreadIndicator.js.map +1 -1
  51. package/lib/commonjs/components/MessageOverlay/MessageActionList.js +8 -14
  52. package/lib/commonjs/components/MessageOverlay/MessageActionList.js.map +1 -1
  53. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js +11 -8
  54. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js.map +1 -1
  55. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +32 -29
  56. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
  57. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +17 -15
  58. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  59. package/lib/commonjs/contexts/channelContext/ChannelContext.js +2 -2
  60. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  61. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +66 -45
  62. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  63. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -2
  64. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  65. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  66. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  67. package/lib/commonjs/contexts/themeContext/utils/theme.js +1 -4
  68. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  69. package/lib/commonjs/hooks/index.js +11 -0
  70. package/lib/commonjs/hooks/index.js.map +1 -1
  71. package/lib/commonjs/hooks/useViewport.js +47 -0
  72. package/lib/commonjs/hooks/useViewport.js.map +1 -0
  73. package/lib/commonjs/i18n/en.json +5 -0
  74. package/lib/commonjs/i18n/es.json +6 -1
  75. package/lib/commonjs/i18n/fr.json +20 -15
  76. package/lib/commonjs/i18n/he.json +6 -1
  77. package/lib/commonjs/i18n/hi.json +20 -15
  78. package/lib/commonjs/i18n/it.json +20 -15
  79. package/lib/commonjs/i18n/ja.json +6 -1
  80. package/lib/commonjs/i18n/ko.json +6 -1
  81. package/lib/commonjs/i18n/nl.json +20 -15
  82. package/lib/commonjs/i18n/ru.json +20 -15
  83. package/lib/commonjs/i18n/tr.json +20 -15
  84. package/lib/commonjs/native.js.map +1 -1
  85. package/lib/commonjs/types/types.js.map +1 -1
  86. package/lib/commonjs/utils/compressImage.js +37 -0
  87. package/lib/commonjs/utils/compressImage.js.map +1 -0
  88. package/lib/commonjs/utils/utils.js +1 -15
  89. package/lib/commonjs/utils/utils.js.map +1 -1
  90. package/lib/commonjs/version.json +1 -1
  91. package/lib/module/components/Attachment/AudioAttachment.js +12 -12
  92. package/lib/module/components/Attachment/AudioAttachment.js.map +1 -1
  93. package/lib/module/components/Attachment/FileAttachment.js +10 -7
  94. package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
  95. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +8 -6
  96. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  97. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js +24 -20
  98. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  99. package/lib/module/components/AttachmentPicker/components/AttachmentSelectionBar.js +26 -11
  100. package/lib/module/components/AttachmentPicker/components/AttachmentSelectionBar.js.map +1 -1
  101. package/lib/module/components/Channel/Channel.js +65 -46
  102. package/lib/module/components/Channel/Channel.js.map +1 -1
  103. package/lib/module/components/Channel/hooks/useCreateChannelContext.js +2 -0
  104. package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  105. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -2
  106. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  107. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +16 -14
  108. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  109. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js +4 -2
  110. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
  111. package/lib/module/components/ImageGallery/ImageGallery.js +29 -32
  112. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  113. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +7 -5
  114. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  115. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +10 -8
  116. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  117. package/lib/module/components/ImageGallery/components/ImageGrid.js +10 -8
  118. package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
  119. package/lib/module/components/Indicators/EmptyStateIndicator.js +17 -12
  120. package/lib/module/components/Indicators/EmptyStateIndicator.js.map +1 -1
  121. package/lib/module/components/Message/MessageSimple/MessageContent.js +20 -17
  122. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  123. package/lib/module/components/Message/MessageSimple/ReactionList.js +18 -17
  124. package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
  125. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.js +7 -5
  126. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.js.map +1 -1
  127. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.test.js +8 -0
  128. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.test.js.map +1 -0
  129. package/lib/module/components/Message/MessageSimple/utils/renderText.js +25 -17
  130. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  131. package/lib/module/components/MessageInput/FileUploadPreview.js +30 -20
  132. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  133. package/lib/module/components/MessageInput/ImageUploadPreview.js +13 -13
  134. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  135. package/lib/module/components/MessageInput/MessageInput.js +1 -1
  136. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  137. package/lib/module/components/MessageInput/UploadProgressIndicator.js.map +1 -1
  138. package/lib/module/components/MessageList/InlineUnreadIndicator.js +13 -11
  139. package/lib/module/components/MessageList/InlineUnreadIndicator.js.map +1 -1
  140. package/lib/module/components/MessageOverlay/MessageActionList.js +8 -14
  141. package/lib/module/components/MessageOverlay/MessageActionList.js.map +1 -1
  142. package/lib/module/components/MessageOverlay/MessageActionListItem.js +11 -8
  143. package/lib/module/components/MessageOverlay/MessageActionListItem.js.map +1 -1
  144. package/lib/module/components/MessageOverlay/MessageOverlay.js +32 -29
  145. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  146. package/lib/module/components/Thread/components/ThreadFooterComponent.js +17 -15
  147. package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  148. package/lib/module/contexts/channelContext/ChannelContext.js +2 -2
  149. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  150. package/lib/module/contexts/messageInputContext/MessageInputContext.js +66 -45
  151. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  152. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -2
  153. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  154. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  155. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  156. package/lib/module/contexts/themeContext/utils/theme.js +1 -4
  157. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  158. package/lib/module/hooks/index.js +11 -0
  159. package/lib/module/hooks/index.js.map +1 -1
  160. package/lib/module/hooks/useViewport.js +47 -0
  161. package/lib/module/hooks/useViewport.js.map +1 -0
  162. package/lib/module/i18n/en.json +5 -0
  163. package/lib/module/i18n/es.json +6 -1
  164. package/lib/module/i18n/fr.json +20 -15
  165. package/lib/module/i18n/he.json +6 -1
  166. package/lib/module/i18n/hi.json +20 -15
  167. package/lib/module/i18n/it.json +20 -15
  168. package/lib/module/i18n/ja.json +6 -1
  169. package/lib/module/i18n/ko.json +6 -1
  170. package/lib/module/i18n/nl.json +20 -15
  171. package/lib/module/i18n/ru.json +20 -15
  172. package/lib/module/i18n/tr.json +20 -15
  173. package/lib/module/native.js.map +1 -1
  174. package/lib/module/types/types.js.map +1 -1
  175. package/lib/module/utils/compressImage.js +37 -0
  176. package/lib/module/utils/compressImage.js.map +1 -0
  177. package/lib/module/utils/utils.js +1 -15
  178. package/lib/module/utils/utils.js.map +1 -1
  179. package/lib/module/version.json +1 -1
  180. package/lib/typescript/components/Attachment/AudioAttachment.d.ts +1 -1
  181. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +1 -1
  182. package/lib/typescript/components/Message/MessageSimple/utils/generateMarkdownText.d.ts +1 -3
  183. package/lib/typescript/components/Message/MessageSimple/utils/generateMarkdownText.test.d.ts +1 -0
  184. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +1 -1
  185. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +1 -1
  186. package/lib/typescript/components/MessageInput/UploadProgressIndicator.d.ts +5 -2
  187. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +5 -0
  188. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +1 -1
  189. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +3 -23
  190. package/lib/typescript/contexts/messageInputContext/hooks/useMessageDetailsForState.d.ts +2 -2
  191. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +2 -2
  192. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +1 -3
  193. package/lib/typescript/hooks/index.d.ts +1 -0
  194. package/lib/typescript/hooks/useViewport.d.ts +11 -0
  195. package/lib/typescript/i18n/en.json +5 -0
  196. package/lib/typescript/i18n/es.json +6 -1
  197. package/lib/typescript/i18n/fr.json +20 -15
  198. package/lib/typescript/i18n/he.json +6 -1
  199. package/lib/typescript/i18n/hi.json +20 -15
  200. package/lib/typescript/i18n/it.json +20 -15
  201. package/lib/typescript/i18n/ja.json +6 -1
  202. package/lib/typescript/i18n/ko.json +6 -1
  203. package/lib/typescript/i18n/nl.json +20 -15
  204. package/lib/typescript/i18n/ru.json +20 -15
  205. package/lib/typescript/i18n/tr.json +20 -15
  206. package/lib/typescript/native.d.ts +2 -0
  207. package/lib/typescript/store/mappers/mapStorableToChannel.d.ts +1 -1
  208. package/lib/typescript/types/types.d.ts +27 -10
  209. package/lib/typescript/utils/Streami18n.d.ts +5 -5
  210. package/lib/typescript/utils/compressImage.d.ts +8 -0
  211. package/lib/typescript/utils/utils.d.ts +0 -2
  212. package/package.json +2 -2
  213. package/src/components/Attachment/AudioAttachment.tsx +2 -1
  214. package/src/components/Attachment/FileAttachment.tsx +12 -3
  215. package/src/components/AttachmentPicker/AttachmentPicker.tsx +4 -2
  216. package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx +7 -5
  217. package/src/components/AttachmentPicker/components/AttachmentSelectionBar.tsx +13 -1
  218. package/src/components/Channel/Channel.tsx +32 -8
  219. package/src/components/Channel/hooks/useCreateChannelContext.ts +2 -0
  220. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +2 -9
  221. package/src/components/ChannelPreview/ChannelPreviewMessenger.tsx +4 -3
  222. package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayName.ts +4 -3
  223. package/src/components/ImageGallery/ImageGallery.tsx +9 -19
  224. package/src/components/ImageGallery/components/AnimatedGalleryImage.tsx +5 -3
  225. package/src/components/ImageGallery/components/AnimatedGalleryVideo.tsx +5 -3
  226. package/src/components/ImageGallery/components/ImageGrid.tsx +2 -1
  227. package/src/components/Indicators/EmptyStateIndicator.tsx +8 -7
  228. package/src/components/Message/MessageSimple/MessageContent.tsx +3 -1
  229. package/src/components/Message/MessageSimple/ReactionList.tsx +2 -1
  230. package/src/components/Message/MessageSimple/utils/generateMarkdownText.test.ts +23 -0
  231. package/src/components/Message/MessageSimple/utils/generateMarkdownText.ts +12 -13
  232. package/src/components/Message/MessageSimple/utils/renderText.tsx +12 -2
  233. package/src/components/MessageInput/FileUploadPreview.tsx +17 -3
  234. package/src/components/MessageInput/ImageUploadPreview.tsx +1 -2
  235. package/src/components/MessageInput/MessageInput.tsx +1 -1
  236. package/src/components/MessageInput/UploadProgressIndicator.tsx +2 -2
  237. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.tsx +1 -1
  238. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.tsx +1 -1
  239. package/src/components/MessageInput/__tests__/MessageInput.test.js +2 -2
  240. package/src/components/MessageList/InlineUnreadIndicator.tsx +2 -1
  241. package/src/components/MessageOverlay/MessageActionList.tsx +3 -11
  242. package/src/components/MessageOverlay/MessageActionListItem.tsx +5 -2
  243. package/src/components/MessageOverlay/MessageOverlay.tsx +5 -3
  244. package/src/components/Thread/components/ThreadFooterComponent.tsx +2 -1
  245. package/src/contexts/channelContext/ChannelContext.tsx +5 -0
  246. package/src/contexts/messageInputContext/MessageInputContext.tsx +81 -69
  247. package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessage.test.tsx.snap +3 -3
  248. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +2 -2
  249. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +2 -2
  250. package/src/contexts/messagesContext/MessagesContext.tsx +2 -2
  251. package/src/contexts/themeContext/utils/theme.ts +2 -7
  252. package/src/hooks/index.ts +1 -0
  253. package/src/hooks/useViewport.ts +41 -0
  254. package/src/i18n/en.json +5 -0
  255. package/src/i18n/es.json +6 -1
  256. package/src/i18n/fr.json +20 -15
  257. package/src/i18n/he.json +6 -1
  258. package/src/i18n/hi.json +20 -15
  259. package/src/i18n/it.json +20 -15
  260. package/src/i18n/ja.json +6 -1
  261. package/src/i18n/ko.json +6 -1
  262. package/src/i18n/nl.json +20 -15
  263. package/src/i18n/ru.json +20 -15
  264. package/src/i18n/tr.json +20 -15
  265. package/src/native.ts +5 -1
  266. package/src/types/types.ts +29 -10
  267. package/src/utils/compressImage.ts +32 -0
  268. package/src/utils/utils.ts +0 -13
  269. package/src/version.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","fail","Error","compressImage","exports","deleteFile","getLocalAssetUri","oniOS14GalleryLibrarySelectionChange","iOS14RefreshGallerySelection","getPhotos","FlatList","DefaultFlatList","NetInfo","addEventListener","fetch","pickDocument","saveFile","setClipboardString","shareImage","takePhoto","triggerHaptic","SDK","Sound","Video","registerNativeHandlers","handlers","undefined","isVideoPackageAvailable","isAudioPackageAvailable","Player","initializeSound"],"sources":["native.ts"],"sourcesContent":["import type React from 'react';\nimport { FlatList as DefaultFlatList, StyleProp, ViewStyle } from 'react-native';\n\nimport type { NetInfoSubscription } from '@react-native-community/netinfo';\n\nimport type { Asset, File } from './types/types';\n\nconst fail = () => {\n throw Error(\n 'Native handler was not registered, you should import stream-chat-expo or stream-chat-react-native',\n );\n};\n\ntype CompressImage = ({\n compressImageQuality,\n height,\n uri,\n width,\n}: {\n compressImageQuality: number;\n height: number;\n uri: string;\n width: number;\n}) => Promise<string> | never;\nexport let compressImage: CompressImage = fail;\n\ntype DeleteFile = ({ uri }: { uri: string }) => Promise<boolean> | never;\nexport let deleteFile: DeleteFile = fail;\n\ntype GetLocalAssetUri = (uriOrAssetId: string) => Promise<string | undefined> | never;\nexport let getLocalAssetUri: GetLocalAssetUri = fail;\n\ntype OniOS14LibrarySelectionChange = (callback: () => void) => { unsubscribe: () => void };\nexport let oniOS14GalleryLibrarySelectionChange: OniOS14LibrarySelectionChange = fail;\n\ntype iOS14RefreshGallerySelection = () => Promise<void>;\nexport let iOS14RefreshGallerySelection: iOS14RefreshGallerySelection = fail;\n\ntype GetPhotos = ({ after, first }: { first: number; after?: string }) =>\n | Promise<{\n assets: Array<Omit<Asset, 'source'> & { source: 'picker' }>;\n endCursor: string;\n hasNextPage: boolean;\n iOSLimited: boolean;\n }>\n | never;\nexport let getPhotos: GetPhotos = fail;\n\ntype NetInfo = {\n addEventListener: (listener: (isConnected: boolean) => void) => NetInfoSubscription | never;\n fetch: (requestedInterface?: string | undefined) => Promise<boolean> | never;\n};\n\nexport let FlatList = DefaultFlatList;\n\nexport let NetInfo: NetInfo = {\n addEventListener: fail,\n fetch: fail,\n};\n\ntype PickDocument = ({ maxNumberOfFiles }: { maxNumberOfFiles?: number }) =>\n | Promise<{\n cancelled: boolean;\n assets?: File[];\n }>\n | never;\nexport let pickDocument: PickDocument = fail;\n\ntype SaveFileOptions = {\n fileName: string;\n fromUrl: string;\n};\ntype SaveFile = (options: SaveFileOptions) => Promise<string> | never;\nexport let saveFile: SaveFile = fail;\n\ntype SetClipboardString = (text: string) => Promise<void> | never;\nexport let setClipboardString: SetClipboardString = fail;\n\ntype ShareOptions = {\n type?: string;\n url?: string;\n};\ntype ShareImage = (options: ShareOptions) => Promise<boolean> | never;\nexport let shareImage: ShareImage = fail;\n\ntype Photo =\n | (Omit<Asset, 'source'> & {\n cancelled: false;\n source: 'camera';\n })\n | { cancelled: true };\ntype TakePhoto = (options: { compressImageQuality?: number }) => Promise<Photo> | never;\nexport let takePhoto: TakePhoto = fail;\n\ntype HapticFeedbackMethod =\n | 'impactHeavy'\n | 'impactLight'\n | 'impactMedium'\n | 'notificationError'\n | 'notificationSuccess'\n | 'notificationWarning'\n | 'selection';\ntype TriggerHaptic = (method: HapticFeedbackMethod) => void | never;\nexport let triggerHaptic: TriggerHaptic = fail;\n\nexport type PlaybackStatus = {\n didJustFinish: boolean;\n durationMillis: number;\n error: string;\n isBuffering: boolean;\n isLoaded: boolean;\n isLooping: boolean;\n isPlaying: boolean;\n positionMillis: number;\n};\n\nexport type AVPlaybackStatusToSet = {\n isLooping: boolean;\n isMuted: boolean;\n positionMillis: number;\n progressUpdateIntervalMillis: number;\n rate: number;\n shouldCorrectPitch: boolean;\n shouldPlay: boolean;\n volume: number;\n};\n\nexport let SDK: string;\n\nexport type SoundOptions = {\n basePathOrCallback?: string;\n callback?: () => void;\n filenameOrFile?: string;\n initialStatus?: Partial<AVPlaybackStatusToSet>;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n source?: { uri: string };\n};\n\nexport type SoundReturnType = {\n paused: boolean;\n testID: string;\n getDuration?: () => number;\n isPlaying?: () => boolean;\n onBuffer?: (props: { isBuffering: boolean }) => void;\n onEnd?: () => void;\n onLoad?: (payload: VideoPayloadData) => void;\n onLoadStart?: () => void;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n onProgress?: (data: VideoProgressData) => void;\n onReadyForDisplay?: () => void;\n pauseAsync?: () => void;\n play?: () => void;\n playAsync?: () => void;\n replayAsync?: () => void;\n resizeMode?: string;\n seek?: (progress: number) => void;\n setPositionAsync?: (millis: number) => void;\n soundRef?: React.RefObject<SoundReturnType>;\n stopAsync?: () => void;\n style?: StyleProp<ViewStyle>;\n unloadAsync?: () => void;\n uri?: string;\n};\n\nexport type SoundType = {\n initializeSound: (\n source?: { uri: string },\n initialStatus?: Partial<AVPlaybackStatusToSet>,\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void,\n ) => Promise<SoundReturnType | null>;\n Player: React.ComponentType<SoundReturnType> | null;\n};\n\nexport let Sound: SoundType;\n\nexport type VideoProgressData = {\n currentTime: number;\n seekableDuration: number;\n playableDuration?: number;\n};\n\nexport type VideoPayloadData = {\n duration: number;\n audioTracks?: { index: number; language: string; title: string; type: string }[];\n currentPosition?: number;\n naturalSize?: { height: number; orientation: 'portrait' | 'landscape'; width: number };\n textTracks?: { index: number; language: string; title: string; type: string }[];\n videoTracks?: {\n bitrate: number;\n codecs: string;\n height: number;\n trackId: number;\n width: number;\n }[];\n};\n\nexport type VideoType = {\n paused: boolean;\n testID: string;\n uri: string;\n videoRef: React.RefObject<VideoType>;\n onBuffer?: (props: { isBuffering: boolean }) => void;\n onEnd?: () => void;\n onLoad?: (payload: VideoPayloadData) => void;\n onLoadStart?: () => void;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n onProgress?: (data: VideoProgressData) => void;\n onReadyForDisplay?: () => void;\n repeat?: boolean;\n replayAsync?: () => void;\n resizeMode?: string;\n seek?: (progress: number) => void;\n setPositionAsync?: (position: number) => void;\n style?: StyleProp<ViewStyle>;\n};\n\nexport let Video: React.ComponentType<VideoType>;\n\ntype Handlers = {\n iOS14RefreshGallerySelection: iOS14RefreshGallerySelection;\n compressImage?: CompressImage;\n deleteFile?: DeleteFile;\n FlatList?: typeof DefaultFlatList;\n getLocalAssetUri?: GetLocalAssetUri;\n getPhotos?: GetPhotos;\n NetInfo?: NetInfo;\n oniOS14GalleryLibrarySelectionChange?: OniOS14LibrarySelectionChange;\n pickDocument?: PickDocument;\n saveFile?: SaveFile;\n SDK?: string;\n setClipboardString?: SetClipboardString;\n shareImage?: ShareImage;\n Sound?: SoundType;\n takePhoto?: TakePhoto;\n triggerHaptic?: TriggerHaptic;\n Video?: React.ComponentType<VideoType>;\n};\n\nexport const registerNativeHandlers = (handlers: Handlers) => {\n if (handlers.compressImage) {\n compressImage = handlers.compressImage;\n }\n\n if (handlers.deleteFile) {\n deleteFile = handlers.deleteFile;\n }\n\n if (handlers.FlatList) {\n FlatList = handlers.FlatList;\n }\n if (handlers.NetInfo) {\n NetInfo = handlers.NetInfo;\n }\n\n if (handlers.getLocalAssetUri) {\n getLocalAssetUri = handlers.getLocalAssetUri;\n }\n\n if (handlers.getPhotos) {\n getPhotos = handlers.getPhotos;\n }\n\n if (handlers.iOS14RefreshGallerySelection) {\n iOS14RefreshGallerySelection = handlers.iOS14RefreshGallerySelection;\n }\n\n if (handlers.oniOS14GalleryLibrarySelectionChange) {\n oniOS14GalleryLibrarySelectionChange = handlers.oniOS14GalleryLibrarySelectionChange;\n }\n\n if (handlers.pickDocument !== undefined) {\n pickDocument = handlers.pickDocument;\n }\n\n if (handlers.saveFile) {\n saveFile = handlers.saveFile;\n }\n\n if (handlers.SDK) {\n SDK = handlers.SDK;\n }\n\n if (handlers.shareImage !== undefined) {\n shareImage = handlers.shareImage;\n }\n\n if (handlers.Sound) {\n Sound = handlers.Sound;\n }\n\n if (handlers.takePhoto) {\n takePhoto = handlers.takePhoto;\n }\n\n if (handlers.triggerHaptic) {\n triggerHaptic = handlers.triggerHaptic;\n }\n\n if (handlers.Video) {\n Video = handlers.Video;\n }\n\n if (handlers.setClipboardString !== undefined) {\n setClipboardString = handlers.setClipboardString;\n }\n};\n\nexport const isVideoPackageAvailable = () => !!Video;\nexport const isAudioPackageAvailable = () => !!Sound.Player || !!Sound.initializeSound;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","fail","Error","compressImage","exports","deleteFile","getLocalAssetUri","oniOS14GalleryLibrarySelectionChange","iOS14RefreshGallerySelection","getPhotos","FlatList","DefaultFlatList","NetInfo","addEventListener","fetch","pickDocument","saveFile","setClipboardString","shareImage","takePhoto","triggerHaptic","SDK","Sound","Video","registerNativeHandlers","handlers","undefined","isVideoPackageAvailable","isAudioPackageAvailable","Player","initializeSound"],"sources":["native.ts"],"sourcesContent":["import type React from 'react';\nimport { FlatList as DefaultFlatList, StyleProp, ViewStyle } from 'react-native';\n\nimport type { NetInfoSubscription } from '@react-native-community/netinfo';\n\nimport type { Asset, File } from './types/types';\n\nconst fail = () => {\n throw Error(\n 'Native handler was not registered, you should import stream-chat-expo or stream-chat-react-native',\n );\n};\n\ntype CompressImage = ({\n compressImageQuality,\n height,\n uri,\n width,\n}: {\n compressImageQuality: number;\n height: number;\n uri: string;\n width: number;\n}) => Promise<string> | never;\nexport let compressImage: CompressImage = fail;\n\ntype DeleteFile = ({ uri }: { uri: string }) => Promise<boolean> | never;\nexport let deleteFile: DeleteFile = fail;\n\ntype GetLocalAssetUri = (uriOrAssetId: string) => Promise<string | undefined> | never;\nexport let getLocalAssetUri: GetLocalAssetUri = fail;\n\ntype OniOS14LibrarySelectionChange = (callback: () => void) => { unsubscribe: () => void };\nexport let oniOS14GalleryLibrarySelectionChange: OniOS14LibrarySelectionChange = fail;\n\ntype iOS14RefreshGallerySelection = () => Promise<void>;\nexport let iOS14RefreshGallerySelection: iOS14RefreshGallerySelection = fail;\n\ntype GetPhotos = ({ after, first }: { first: number; after?: string }) =>\n | Promise<{\n assets: Array<Omit<Asset, 'source'> & { source: 'picker' }>;\n endCursor: string;\n hasNextPage: boolean;\n iOSLimited: boolean;\n }>\n | never;\nexport let getPhotos: GetPhotos = fail;\n\ntype NetInfo = {\n addEventListener: (listener: (isConnected: boolean) => void) => NetInfoSubscription | never;\n fetch: (requestedInterface?: string | undefined) => Promise<boolean> | never;\n};\n\nexport let FlatList = DefaultFlatList;\n\nexport let NetInfo: NetInfo = {\n addEventListener: fail,\n fetch: fail,\n};\n\ntype PickDocument = ({ maxNumberOfFiles }: { maxNumberOfFiles?: number }) =>\n | Promise<{\n cancelled: boolean;\n assets?: File[];\n }>\n | never;\nexport let pickDocument: PickDocument = fail;\n\ntype SaveFileOptions = {\n fileName: string;\n fromUrl: string;\n};\ntype SaveFile = (options: SaveFileOptions) => Promise<string> | never;\nexport let saveFile: SaveFile = fail;\n\ntype SetClipboardString = (text: string) => Promise<void> | never;\nexport let setClipboardString: SetClipboardString = fail;\n\ntype ShareOptions = {\n type?: string;\n url?: string;\n};\ntype ShareImage = (options: ShareOptions) => Promise<boolean> | never;\nexport let shareImage: ShareImage = fail;\n\ntype Photo =\n | (Omit<Asset, 'source'> & {\n cancelled: false;\n source: 'camera';\n askToOpenSettings?: boolean;\n })\n | {\n cancelled: true;\n askToOpenSettings?: boolean;\n };\ntype TakePhoto = (options: { compressImageQuality?: number }) => Promise<Photo> | never;\nexport let takePhoto: TakePhoto = fail;\n\ntype HapticFeedbackMethod =\n | 'impactHeavy'\n | 'impactLight'\n | 'impactMedium'\n | 'notificationError'\n | 'notificationSuccess'\n | 'notificationWarning'\n | 'selection';\ntype TriggerHaptic = (method: HapticFeedbackMethod) => void | never;\nexport let triggerHaptic: TriggerHaptic = fail;\n\nexport type PlaybackStatus = {\n didJustFinish: boolean;\n durationMillis: number;\n error: string;\n isBuffering: boolean;\n isLoaded: boolean;\n isLooping: boolean;\n isPlaying: boolean;\n positionMillis: number;\n};\n\nexport type AVPlaybackStatusToSet = {\n isLooping: boolean;\n isMuted: boolean;\n positionMillis: number;\n progressUpdateIntervalMillis: number;\n rate: number;\n shouldCorrectPitch: boolean;\n shouldPlay: boolean;\n volume: number;\n};\n\nexport let SDK: string;\n\nexport type SoundOptions = {\n basePathOrCallback?: string;\n callback?: () => void;\n filenameOrFile?: string;\n initialStatus?: Partial<AVPlaybackStatusToSet>;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n source?: { uri: string };\n};\n\nexport type SoundReturnType = {\n paused: boolean;\n testID: string;\n getDuration?: () => number;\n isPlaying?: () => boolean;\n onBuffer?: (props: { isBuffering: boolean }) => void;\n onEnd?: () => void;\n onLoad?: (payload: VideoPayloadData) => void;\n onLoadStart?: () => void;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n onProgress?: (data: VideoProgressData) => void;\n onReadyForDisplay?: () => void;\n pauseAsync?: () => void;\n play?: () => void;\n playAsync?: () => void;\n replayAsync?: () => void;\n resizeMode?: string;\n seek?: (progress: number) => void;\n setPositionAsync?: (millis: number) => void;\n soundRef?: React.RefObject<SoundReturnType>;\n stopAsync?: () => void;\n style?: StyleProp<ViewStyle>;\n unloadAsync?: () => void;\n uri?: string;\n};\n\nexport type SoundType = {\n initializeSound: (\n source?: { uri: string },\n initialStatus?: Partial<AVPlaybackStatusToSet>,\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void,\n ) => Promise<SoundReturnType | null>;\n Player: React.ComponentType<SoundReturnType> | null;\n};\n\nexport let Sound: SoundType;\n\nexport type VideoProgressData = {\n currentTime: number;\n seekableDuration: number;\n playableDuration?: number;\n};\n\nexport type VideoPayloadData = {\n duration: number;\n audioTracks?: { index: number; language: string; title: string; type: string }[];\n currentPosition?: number;\n naturalSize?: { height: number; orientation: 'portrait' | 'landscape'; width: number };\n textTracks?: { index: number; language: string; title: string; type: string }[];\n videoTracks?: {\n bitrate: number;\n codecs: string;\n height: number;\n trackId: number;\n width: number;\n }[];\n};\n\nexport type VideoType = {\n paused: boolean;\n testID: string;\n uri: string;\n videoRef: React.RefObject<VideoType>;\n onBuffer?: (props: { isBuffering: boolean }) => void;\n onEnd?: () => void;\n onLoad?: (payload: VideoPayloadData) => void;\n onLoadStart?: () => void;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n onProgress?: (data: VideoProgressData) => void;\n onReadyForDisplay?: () => void;\n repeat?: boolean;\n replayAsync?: () => void;\n resizeMode?: string;\n seek?: (progress: number) => void;\n setPositionAsync?: (position: number) => void;\n style?: StyleProp<ViewStyle>;\n};\n\nexport let Video: React.ComponentType<VideoType>;\n\ntype Handlers = {\n iOS14RefreshGallerySelection: iOS14RefreshGallerySelection;\n compressImage?: CompressImage;\n deleteFile?: DeleteFile;\n FlatList?: typeof DefaultFlatList;\n getLocalAssetUri?: GetLocalAssetUri;\n getPhotos?: GetPhotos;\n NetInfo?: NetInfo;\n oniOS14GalleryLibrarySelectionChange?: OniOS14LibrarySelectionChange;\n pickDocument?: PickDocument;\n saveFile?: SaveFile;\n SDK?: string;\n setClipboardString?: SetClipboardString;\n shareImage?: ShareImage;\n Sound?: SoundType;\n takePhoto?: TakePhoto;\n triggerHaptic?: TriggerHaptic;\n Video?: React.ComponentType<VideoType>;\n};\n\nexport const registerNativeHandlers = (handlers: Handlers) => {\n if (handlers.compressImage) {\n compressImage = handlers.compressImage;\n }\n\n if (handlers.deleteFile) {\n deleteFile = handlers.deleteFile;\n }\n\n if (handlers.FlatList) {\n FlatList = handlers.FlatList;\n }\n if (handlers.NetInfo) {\n NetInfo = handlers.NetInfo;\n }\n\n if (handlers.getLocalAssetUri) {\n getLocalAssetUri = handlers.getLocalAssetUri;\n }\n\n if (handlers.getPhotos) {\n getPhotos = handlers.getPhotos;\n }\n\n if (handlers.iOS14RefreshGallerySelection) {\n iOS14RefreshGallerySelection = handlers.iOS14RefreshGallerySelection;\n }\n\n if (handlers.oniOS14GalleryLibrarySelectionChange) {\n oniOS14GalleryLibrarySelectionChange = handlers.oniOS14GalleryLibrarySelectionChange;\n }\n\n if (handlers.pickDocument !== undefined) {\n pickDocument = handlers.pickDocument;\n }\n\n if (handlers.saveFile) {\n saveFile = handlers.saveFile;\n }\n\n if (handlers.SDK) {\n SDK = handlers.SDK;\n }\n\n if (handlers.shareImage !== undefined) {\n shareImage = handlers.shareImage;\n }\n\n if (handlers.Sound) {\n Sound = handlers.Sound;\n }\n\n if (handlers.takePhoto) {\n takePhoto = handlers.takePhoto;\n }\n\n if (handlers.triggerHaptic) {\n triggerHaptic = handlers.triggerHaptic;\n }\n\n if (handlers.Video) {\n Video = handlers.Video;\n }\n\n if (handlers.setClipboardString !== undefined) {\n setClipboardString = handlers.setClipboardString;\n }\n};\n\nexport const isVideoPackageAvailable = () => !!Video;\nexport const isAudioPackageAvailable = () => !!Sound.Player || !!Sound.initializeSound;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ExtendableGenerics, LiteralStringForUnion } from 'stream-chat';\n\nexport type Asset = {\n duration: number | null;\n filename: string;\n height: number;\n source: 'camera' | 'picker';\n type: string;\n uri: string;\n width: number;\n fileSize?: number;\n id?: string;\n size?: number | string;\n};\n\nexport type FileAssetType = {\n name: string;\n mimeType?: string;\n size?: number | string;\n // The uri should be of type `string`. But is `string|undefined` because the same type is used for the response from Stream's Attachment. This shall be fixed.\n uri?: string;\n};\n\nexport type File = FileAssetType & {\n duration?: string | null;\n id?: string;\n};\n\nexport type DefaultAttachmentType = UnknownType & {\n file_size?: number | string;\n mime_type?: string;\n originalFile?: File;\n};\n\ninterface DefaultUserType extends UnknownType {\n image?: string;\n}\n\ninterface DefaultChannelType extends UnknownType {\n [key: string]: unknown;\n\n image?: string;\n}\n\nexport interface DefaultStreamChatGenerics extends ExtendableGenerics {\n attachmentType: DefaultAttachmentType;\n channelType: DefaultChannelType;\n commandType: LiteralStringForUnion;\n eventType: UnknownType;\n messageType: UnknownType;\n reactionType: UnknownType;\n userType: DefaultUserType;\n}\n\nexport type UnknownType = Record<string, unknown>;\n\nexport type ValueOf<T> = T[keyof T];\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ExtendableGenerics, LiteralStringForUnion } from 'stream-chat';\n\nimport type { FileStateValue } from '../utils/utils';\n\nexport type Asset = {\n duration: number;\n height: number;\n name: string;\n source: 'camera' | 'picker';\n type: string;\n uri: string;\n width: number;\n id?: string;\n size?: number;\n};\n\nexport type File = {\n name: string;\n duration?: number;\n id?: string;\n mimeType?: string;\n size?: number;\n // The uri should be of type `string`. But is `string|undefined` because the same type is used for the response from Stream's Attachment. This shall be fixed.\n uri?: string;\n};\n\nexport type FileUpload = {\n file: File;\n id: string;\n state: FileStateValue;\n duration?: number;\n paused?: boolean;\n progress?: number;\n thumb_url?: string;\n url?: string;\n};\n\nexport type ImageUpload = {\n file: Partial<Asset>;\n id: string;\n state: FileStateValue;\n height?: number;\n url?: string;\n width?: number;\n};\n\nexport type DefaultAttachmentType = UnknownType & {\n file_size?: number;\n mime_type?: string;\n originalFile?: File;\n originalImage?: Partial<Asset>;\n};\n\ninterface DefaultUserType extends UnknownType {\n image?: string;\n}\n\ninterface DefaultChannelType extends UnknownType {\n [key: string]: unknown;\n\n image?: string;\n}\n\nexport interface DefaultStreamChatGenerics extends ExtendableGenerics {\n attachmentType: DefaultAttachmentType;\n channelType: DefaultChannelType;\n commandType: LiteralStringForUnion;\n eventType: UnknownType;\n messageType: UnknownType;\n reactionType: UnknownType;\n userType: DefaultUserType;\n}\n\nexport type UnknownType = Record<string, unknown>;\n\nexport type ValueOf<T> = T[keyof T];\n"],"mappings":""}
@@ -0,0 +1,37 @@
1
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.compressedImageURI = void 0;
6
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
7
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
+ var _native = require("../native");
9
+ var compressedImageURI = function () {
10
+ var _ref = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(image, compressImageQuality) {
11
+ var uri, compressedUri;
12
+ return _regenerator["default"].wrap(function _callee$(_context) {
13
+ while (1) switch (_context.prev = _context.next) {
14
+ case 0:
15
+ uri = image.uri || '';
16
+ _context.next = 3;
17
+ return image.source === 'camera' || !image.height || !image.width || typeof compressImageQuality !== 'number' || compressImageQuality === 1 ? uri : (0, _native.compressImage)({
18
+ compressImageQuality: compressImageQuality,
19
+ height: image.height,
20
+ uri: uri,
21
+ width: image.width
22
+ });
23
+ case 3:
24
+ compressedUri = _context.sent;
25
+ return _context.abrupt("return", compressedUri);
26
+ case 5:
27
+ case "end":
28
+ return _context.stop();
29
+ }
30
+ }, _callee);
31
+ }));
32
+ return function compressedImageURI(_x, _x2) {
33
+ return _ref.apply(this, arguments);
34
+ };
35
+ }();
36
+ exports.compressedImageURI = compressedImageURI;
37
+ //# sourceMappingURL=compressImage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_native","require","compressedImageURI","_ref","_asyncToGenerator2","_regenerator","mark","_callee","image","compressImageQuality","uri","compressedUri","wrap","_callee$","_context","prev","next","source","height","width","compressImage","sent","abrupt","stop","_x","_x2","apply","arguments","exports"],"sources":["compressImage.ts"],"sourcesContent":["import { compressImage } from '../native';\nimport type { Asset } from '../types/types';\n\n/**\n * Function to compress and Image and return the compressed Image URI\n * @param image\n * @param compressImageQuality\n * @returns string\n */\nexport const compressedImageURI = async (image: Partial<Asset>, compressImageQuality?: number) => {\n const uri = image.uri || '';\n /**\n * We skip compression if:\n * - the file is from the camera as that should already be compressed\n * - the file has no height/width value to maintain for compression\n * - the compressImageQuality number is not present or is 1 (meaning no compression)\n */\n const compressedUri = await (image.source === 'camera' ||\n !image.height ||\n !image.width ||\n typeof compressImageQuality !== 'number' ||\n compressImageQuality === 1\n ? uri\n : compressImage({\n compressImageQuality,\n height: image.height,\n uri,\n width: image.width,\n }));\n\n return compressedUri;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AASO,IAAMC,kBAAkB;EAAA,IAAAC,IAAA,OAAAC,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAC,QAAOC,KAAqB,EAAEC,oBAA6B;IAAA,IAAAC,GAAA,EAAAC,aAAA;IAAA,OAAAN,YAAA,YAAAO,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UACrFN,GAAG,GAAGF,KAAK,CAACE,GAAG,IAAI,EAAE;UAAAI,QAAA,CAAAE,IAAA;UAAA,OAOER,KAAK,CAACS,MAAM,KAAK,QAAQ,IACtD,CAACT,KAAK,CAACU,MAAM,IACb,CAACV,KAAK,CAACW,KAAK,IACZ,OAAOV,oBAAoB,KAAK,QAAQ,IACxCA,oBAAoB,KAAK,CAAC,GACtBC,GAAG,GACH,IAAAU,qBAAa,EAAC;YACZX,oBAAoB,EAApBA,oBAAoB;YACpBS,MAAM,EAAEV,KAAK,CAACU,MAAM;YACpBR,GAAG,EAAHA,GAAG;YACHS,KAAK,EAAEX,KAAK,CAACW;UACf,CAAC,CAAC;QAAA;UAXAR,aAAa,GAAAG,QAAA,CAAAO,IAAA;UAAA,OAAAP,QAAA,CAAAQ,MAAA,WAaZX,aAAa;QAAA;QAAA;UAAA,OAAAG,QAAA,CAAAS,IAAA;MAAA;IAAA,GAAAhB,OAAA;EAAA,CACrB;EAAA,gBAtBYL,kBAAkBA,CAAAsB,EAAA,EAAAC,GAAA;IAAA,OAAAtB,IAAA,CAAAuB,KAAA,OAAAC,SAAA;EAAA;AAAA,GAsB9B;AAACC,OAAA,CAAA1B,kBAAA,GAAAA,kBAAA"}
@@ -2,13 +2,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.vw = exports.vh = exports.urlRegex = exports.reduceMessagesToString = exports.queryUsersDebounced = exports.queryMembersDebounced = exports.makeImageCompatibleUrl = exports.isMentionTrigger = exports.isLocalUrl = exports.isEmojiTrigger = exports.isCommandTrigger = exports.getUrlWithoutParams = exports.getIndicatorTypeForFileState = exports.generateRandomId = exports.emojiRegex = exports.ProgressIndicatorTypes = exports.MessageStatusTypes = exports.FileState = exports.ACITriggerSettings = void 0;
5
+ exports.urlRegex = exports.reduceMessagesToString = exports.queryUsersDebounced = exports.queryMembersDebounced = exports.makeImageCompatibleUrl = exports.isMentionTrigger = exports.isLocalUrl = exports.isEmojiTrigger = exports.isCommandTrigger = exports.getUrlWithoutParams = exports.getIndicatorTypeForFileState = exports.generateRandomId = exports.emojiRegex = exports.ProgressIndicatorTypes = exports.MessageStatusTypes = exports.FileState = exports.ACITriggerSettings = void 0;
6
6
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
7
7
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
8
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
9
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
- var _reactNative = require("react-native");
12
11
  var _debounce = _interopRequireDefault(require("lodash/debounce"));
13
12
  var _compiled = require("../emoji-data/compiled");
14
13
  var FileState = Object.freeze({
@@ -358,19 +357,6 @@ var isLocalUrl = function isLocalUrl(url) {
358
357
  return url.indexOf('http') !== 0;
359
358
  };
360
359
  exports.isLocalUrl = isLocalUrl;
361
- var vw = function vw(percentageWidth) {
362
- var rounded = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
363
- var value = _reactNative.Dimensions.get('window').width * (percentageWidth / 100);
364
- return rounded ? Math.round(value) : value;
365
- };
366
- exports.vw = vw;
367
- var vh = function vh(percentageHeight) {
368
- var rounded = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
369
- var height = _reactNative.Dimensions.get('window').height;
370
- var value = height * (percentageHeight / 100);
371
- return rounded ? Math.round(value) : value;
372
- };
373
- exports.vh = vh;
374
360
  var generateRandomId = function generateRandomId() {
375
361
  var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
376
362
  return a ? ((Number(a) ^ Math.random() * 16) >> Number(a) / 4).toString(16) : (1e7 + "-" + 1e3 + "-" + 4e3 + "-" + 8e3 + "-" + 1e11).replace(/[018]/g, generateRandomId);
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_debounce","_interopRequireDefault","_compiled","FileState","Object","freeze","FINISHED","NOT_SUPPORTED","UPLOAD_FAILED","UPLOADED","UPLOADING","exports","ProgressIndicatorTypes","IN_PROGRESS","INACTIVE","RETRY","MessageStatusTypes","FAILED","RECEIVED","SENDING","getIndicatorTypeForFileState","fileState","enableOfflineSupport","_indicatorMap","indicatorMap","_defineProperty2","defaultAutoCompleteSuggestionsLimit","defaultMentionAllAppUsersQuery","filters","options","sort","isUserResponse","user","undefined","getCommands","channel","_channel$getConfig","getConfig","commands","getMembers","members","state","values","length","filter","member","map","getWatchers","watchers","_toConsumableArray2","getMembersAndWatchers","users","concat","reduce","acc","cur","id","queryMembers","_ref","_asyncToGenerator2","_regenerator","mark","_callee","query","onReady","_options$limit","limit","response","_users","_args","arguments","wrap","_callee$","_context","prev","next","name","$autocomplete","sent","forEach","push","stop","_x","_x2","_x3","apply","queryMembersDebounced","debounce","leading","trailing","queryUsers","_ref2","_callee2","client","_options$limit2","_options$mentionAllAp","mentionAllAppUsersQuery","_users2","_args2","_callee2$","_context2","_extends2","$ne","userID","$or","_x4","_x5","_x6","queryUsersDebounced","isCommandTrigger","trigger","isEmojiTrigger","isMentionTrigger","ACITriggerSettings","_ref3","onMentionSelectItem","dataProvider","text","indexOf","_options$limit3","selectedCommands","command","_command$name","a","b","_a$name","_b$name","nameA","toLowerCase","nameB","result","slice","output","entity","caretPosition","key","type","_","compiledEmojis","emojiArray","names","some","includes","emoji","emojiLib","skin_variations","tone","index","unicode","callback","item","mentionAllAppUsersEnabled","data","matchingUsers","_user$name","makeImageCompatibleUrl","url","trim","getUrlWithoutParams","indexOfQuestion","substring","isLocalUrl","vw","percentageWidth","rounded","value","Dimensions","get","width","Math","round","vh","percentageHeight","height","generateRandomId","Number","random","toString","replace","emojiRegex","urlRegex","stringifyMessage","_ref4","deleted_at","latest_reactions","reply_count","status","updated_at","_ref5","join","toISOString","reduceMessagesToString","messages"],"sources":["utils.ts"],"sourcesContent":["import type React from 'react';\nimport { Dimensions } from 'react-native';\n\nimport type { DebouncedFunc } from 'lodash';\nimport debounce from 'lodash/debounce';\nimport type {\n Channel,\n ChannelMemberAPIResponse,\n ChannelMemberResponse,\n CommandResponse,\n FormatMessageResponse,\n StreamChat,\n UserResponse,\n} from 'stream-chat';\n\nimport type { MentionAllAppUsersQuery } from '../contexts/messageInputContext/MessageInputContext';\nimport type {\n SuggestionCommand,\n SuggestionComponentType,\n SuggestionUser,\n} from '../contexts/suggestionsContext/SuggestionsContext';\nimport { compiledEmojis, Emoji } from '../emoji-data/compiled';\nimport type { IconProps } from '../icons/utils/base';\nimport type { DefaultStreamChatGenerics, ValueOf } from '../types/types';\n\nexport type ReactionData = {\n Icon: React.FC<IconProps>;\n type: string;\n};\n\nexport const FileState = Object.freeze({\n // finished and uploaded state are the same thing. First is set on frontend,\n // while later is set on backend side\n // TODO: Unify both of them\n FINISHED: 'finished',\n NOT_SUPPORTED: 'not_supported',\n UPLOAD_FAILED: 'upload_failed',\n UPLOADED: 'uploaded',\n UPLOADING: 'uploading',\n});\n\nexport const ProgressIndicatorTypes: {\n IN_PROGRESS: 'in_progress';\n INACTIVE: 'inactive';\n NOT_SUPPORTED: 'not_supported';\n RETRY: 'retry';\n} = Object.freeze({\n IN_PROGRESS: 'in_progress',\n INACTIVE: 'inactive',\n NOT_SUPPORTED: 'not_supported',\n RETRY: 'retry',\n});\n\nexport const MessageStatusTypes = {\n FAILED: 'failed',\n RECEIVED: 'received',\n SENDING: 'sending',\n};\n\nexport type FileStateValue = typeof FileState[keyof typeof FileState];\n\ntype Progress = ValueOf<typeof ProgressIndicatorTypes>;\ntype IndicatorStatesMap = Record<ValueOf<typeof FileState>, Progress | null>;\n\nexport const getIndicatorTypeForFileState = (\n fileState: FileStateValue,\n enableOfflineSupport: boolean,\n): Progress | null => {\n const indicatorMap: IndicatorStatesMap = {\n [FileState.UPLOADING]: enableOfflineSupport\n ? ProgressIndicatorTypes.INACTIVE\n : ProgressIndicatorTypes.IN_PROGRESS,\n // If offline support is disabled, then there is no need\n [FileState.UPLOAD_FAILED]: enableOfflineSupport\n ? ProgressIndicatorTypes.INACTIVE\n : ProgressIndicatorTypes.RETRY,\n [FileState.NOT_SUPPORTED]: ProgressIndicatorTypes.NOT_SUPPORTED,\n [FileState.UPLOADED]: ProgressIndicatorTypes.INACTIVE,\n [FileState.FINISHED]: ProgressIndicatorTypes.INACTIVE,\n };\n\n return indicatorMap[fileState];\n};\n\nconst defaultAutoCompleteSuggestionsLimit = 10;\nconst defaultMentionAllAppUsersQuery = {\n filters: {},\n options: {},\n sort: {},\n};\n\nconst isUserResponse = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n user: SuggestionUser<StreamChatGenerics> | undefined,\n): user is SuggestionUser<StreamChatGenerics> =>\n (user as SuggestionUser<StreamChatGenerics>) !== undefined;\n\nconst getCommands = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n) => channel.getConfig()?.commands || [];\n\nconst getMembers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n) => {\n const members = channel.state.members;\n\n return Object.values(members).length\n ? (\n Object.values(members).filter((member) => member.user) as Array<\n ChannelMemberResponse<StreamChatGenerics> & { user: UserResponse<StreamChatGenerics> }\n >\n ).map((member) => member.user)\n : [];\n};\n\nconst getWatchers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n) => {\n const watchers = channel.state.watchers;\n return Object.values(watchers).length ? [...Object.values(watchers)] : [];\n};\n\nconst getMembersAndWatchers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n) => {\n const users = [...getMembers(channel), ...getWatchers(channel)];\n\n return Object.values(\n users.reduce((acc, cur) => {\n if (!acc[cur.id]) {\n acc[cur.id] = cur;\n }\n\n return acc;\n }, {} as { [key: string]: SuggestionUser<StreamChatGenerics> }),\n );\n};\n\nconst queryMembers = async <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n query: SuggestionUser<StreamChatGenerics>['name'],\n onReady?: (users: SuggestionUser<StreamChatGenerics>[]) => void,\n options: {\n limit?: number;\n } = {},\n): Promise<void> => {\n const { limit = defaultAutoCompleteSuggestionsLimit } = options;\n\n if (typeof query === 'string') {\n const response = (await (channel as unknown as Channel).queryMembers(\n {\n name: { $autocomplete: query },\n },\n {},\n { limit },\n )) as ChannelMemberAPIResponse<StreamChatGenerics>;\n\n const users: SuggestionUser<StreamChatGenerics>[] = [];\n response.members.forEach((member) => isUserResponse(member.user) && users.push(member.user));\n if (onReady && users) {\n onReady(users);\n }\n }\n};\n\nexport const queryMembersDebounced = debounce(queryMembers, 200, {\n leading: false,\n trailing: true,\n});\n\nconst queryUsers = async <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n client: StreamChat<StreamChatGenerics>,\n query: SuggestionUser<StreamChatGenerics>['name'],\n onReady?: (users: SuggestionUser<StreamChatGenerics>[]) => void,\n options: {\n limit?: number;\n mentionAllAppUsersQuery?: MentionAllAppUsersQuery<StreamChatGenerics>;\n } = {},\n): Promise<void> => {\n if (typeof query === 'string') {\n const {\n limit = defaultAutoCompleteSuggestionsLimit,\n mentionAllAppUsersQuery = defaultMentionAllAppUsersQuery,\n } = options;\n const filters = {\n id: { $ne: client.userID },\n ...mentionAllAppUsersQuery?.filters,\n };\n\n if (query) {\n // @ts-ignore\n filters.$or = [{ id: { $autocomplete: query } }, { name: { $autocomplete: query } }];\n }\n\n const response = await client.queryUsers(\n // @ts-ignore\n filters,\n { id: 1, ...mentionAllAppUsersQuery?.sort },\n { limit, ...mentionAllAppUsersQuery?.options },\n );\n const users: SuggestionUser<StreamChatGenerics>[] = [];\n response.users.forEach((user) => isUserResponse(user) && users.push(user));\n if (onReady && users) {\n onReady(users);\n }\n }\n};\n\nexport const queryUsersDebounced = debounce(queryUsers, 200, {\n leading: false,\n trailing: true,\n});\n\nexport const isCommandTrigger = (trigger: Trigger): trigger is '/' => trigger === '/';\n\nexport const isEmojiTrigger = (trigger: Trigger): trigger is ':' => trigger === ':';\n\nexport const isMentionTrigger = (trigger: Trigger): trigger is '@' => trigger === '@';\n\nexport type Trigger = '/' | '@' | ':';\n\nexport type TriggerSettings<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n '/'?: {\n dataProvider: (\n query: CommandResponse<StreamChatGenerics>['name'],\n text: string,\n onReady?: (\n data: CommandResponse<StreamChatGenerics>[],\n q: CommandResponse<StreamChatGenerics>['name'],\n ) => void,\n options?: {\n limit?: number;\n },\n ) => SuggestionCommand<StreamChatGenerics>[];\n output: (entity: CommandResponse<StreamChatGenerics>) => {\n caretPosition: string;\n key: string;\n text: string;\n };\n type: SuggestionComponentType;\n };\n ':'?: {\n dataProvider: (\n query: Emoji['name'],\n _: string,\n onReady?: (data: Emoji[], q: Emoji['name']) => void,\n ) => Emoji[];\n output: (entity: Emoji) => {\n caretPosition: string;\n key: string;\n text: string;\n };\n type: SuggestionComponentType;\n };\n '@'?: {\n callback: (item: SuggestionUser<StreamChatGenerics>) => void;\n dataProvider: (\n query: SuggestionUser<StreamChatGenerics>['name'],\n _: string,\n onReady?: (\n data: SuggestionUser<StreamChatGenerics>[],\n q: SuggestionUser<StreamChatGenerics>['name'],\n ) => void,\n options?: {\n limit?: number;\n mentionAllAppUsersEnabled?: boolean;\n mentionAllAppUsersQuery?: MentionAllAppUsersQuery<StreamChatGenerics>;\n },\n ) => SuggestionUser<StreamChatGenerics>[] | Promise<void> | void;\n output: (entity: SuggestionUser<StreamChatGenerics>) => {\n caretPosition: string;\n key: string;\n text: string;\n };\n type: SuggestionComponentType;\n };\n};\n\nexport type ACITriggerSettingsParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n channel: Channel<StreamChatGenerics>;\n client: StreamChat<StreamChatGenerics>;\n onMentionSelectItem: (item: SuggestionUser<StreamChatGenerics>) => void;\n};\n\nexport type QueryUsersFunction<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = (\n client: StreamChat<StreamChatGenerics>,\n query: SuggestionUser<StreamChatGenerics>['name'],\n onReady?: (users: SuggestionUser<StreamChatGenerics>[]) => void,\n options?: {\n limit?: number;\n mentionAllAppUsersQuery?: MentionAllAppUsersQuery<StreamChatGenerics>;\n },\n) => Promise<void>;\n\nexport type QueryMembersFunction<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = (\n channel: Channel<StreamChatGenerics>,\n query: SuggestionUser<StreamChatGenerics>['name'],\n onReady?: (users: SuggestionUser<StreamChatGenerics>[]) => void,\n options?: {\n limit?: number;\n },\n) => Promise<void>;\n\n/**\n * ACI = AutoCompleteInput\n *\n * DataProvider accepts `onReady` function, which will execute once the data is ready.\n * Another approach would have been to simply return the data from dataProvider and let the\n * component await for it and then execute the required logic. We are going for callback instead\n * of async-await since we have debounce function in dataProvider. Which will delay the execution\n * of api call on trailing end of debounce (lets call it a1) but will return with result of\n * previous call without waiting for a1. So in this case, we want to execute onReady, when trailing\n * end of debounce executes.\n */\nexport const ACITriggerSettings = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channel,\n client,\n onMentionSelectItem,\n}: ACITriggerSettingsParams<StreamChatGenerics>): TriggerSettings<StreamChatGenerics> => ({\n '/': {\n dataProvider: (query, text, onReady, options = {}) => {\n if (text.indexOf('/') !== 0) return [];\n\n const { limit = defaultAutoCompleteSuggestionsLimit } = options;\n const selectedCommands = !query\n ? getCommands(channel)\n : getCommands(channel).filter((command) => query && command.name?.indexOf(query) !== -1);\n\n // sort alphabetically unless the you're matching the first char\n selectedCommands.sort((a, b) => {\n let nameA = a.name?.toLowerCase() || '';\n let nameB = b.name?.toLowerCase() || '';\n if (query && nameA.indexOf(query) === 0) {\n nameA = `0${nameA}`;\n }\n if (query && nameB.indexOf(query) === 0) {\n nameB = `0${nameB}`;\n }\n if (nameA < nameB) return -1;\n if (nameA > nameB) return 1;\n\n return 0;\n });\n\n const result = selectedCommands.slice(0, limit);\n\n if (onReady) {\n onReady(result, query);\n }\n\n return result;\n },\n output: (entity) => ({\n caretPosition: 'next',\n key: `${entity.name}`,\n text: `/${entity.name}`,\n }),\n type: 'command',\n },\n ':': {\n dataProvider: (query, _, onReady) => {\n if (!query) return [];\n\n const result = compiledEmojis.emojiArray.reduce((acc, cur) => {\n if (acc.length >= 10) return acc;\n\n if (cur.names.some((name) => name.includes(query))) {\n const emoji = compiledEmojis.emojiLib[cur.name];\n if (emoji.skin_variations) {\n acc.push({\n ...emoji,\n name: `${emoji.name}-tone-1`,\n skin_variations: undefined,\n });\n emoji.skin_variations.forEach((tone, index) =>\n acc.push({\n ...emoji,\n name: `${emoji.name}-tone-${index + 2}`,\n skin_variations: undefined,\n unicode: tone,\n }),\n );\n } else {\n acc.push(emoji);\n }\n }\n\n return acc;\n }, [] as Emoji[]);\n\n if (onReady) {\n onReady(result, query);\n }\n\n return result;\n },\n output: (entity) => ({\n caretPosition: 'next',\n key: entity.name,\n text: entity.unicode,\n }),\n type: 'emoji',\n },\n '@': {\n callback: (item) => {\n onMentionSelectItem(item);\n },\n dataProvider: (\n query,\n _,\n onReady,\n options = {\n limit: defaultAutoCompleteSuggestionsLimit,\n mentionAllAppUsersEnabled: false,\n mentionAllAppUsersQuery: defaultMentionAllAppUsersQuery,\n },\n ) => {\n if (options?.mentionAllAppUsersEnabled) {\n return (queryUsersDebounced as DebouncedFunc<QueryUsersFunction<StreamChatGenerics>>)(\n client,\n query,\n (data) => {\n if (onReady) {\n onReady(data, query);\n }\n },\n {\n limit: options.limit,\n mentionAllAppUsersQuery: options.mentionAllAppUsersQuery,\n },\n );\n }\n\n /**\n * By default, we return maximum 100 members via queryChannels api call.\n * Thus it is safe to assume, that if number of members in channel.state is < 100,\n * then all the members are already available on client side and we don't need to\n * make any api call to queryMembers endpoint.\n */\n if (!query || Object.values(channel.state.members).length < 100) {\n const users = getMembersAndWatchers(channel);\n\n const matchingUsers = users.filter((user) => {\n if (!query) return true;\n if (user.name?.toLowerCase().indexOf(query.toLowerCase()) !== -1) {\n return true;\n }\n if (user.id.toLowerCase().indexOf(query.toLowerCase()) !== -1) {\n return true;\n }\n return false;\n });\n\n const data = matchingUsers.slice(0, options?.limit);\n\n if (onReady) {\n onReady(data, query);\n }\n\n return data;\n }\n\n return (queryMembersDebounced as DebouncedFunc<QueryMembersFunction<StreamChatGenerics>>)(\n channel,\n query,\n (data) => {\n if (onReady) {\n onReady(data, query);\n }\n },\n {\n limit: options.limit,\n },\n );\n },\n output: (entity) => ({\n caretPosition: 'next',\n key: entity.id,\n text: `@${entity.name || entity.id}`,\n }),\n type: 'mention',\n },\n});\n\nexport const makeImageCompatibleUrl = (url: string) =>\n (url.indexOf('//') === 0 ? `https:${url}` : url).trim();\n\nexport const getUrlWithoutParams = (url?: string) => {\n if (!url) return url;\n\n const indexOfQuestion = url.indexOf('?');\n if (indexOfQuestion === -1) return url;\n\n return url.substring(0, url.indexOf('?'));\n};\n\nexport const isLocalUrl = (url: string) => url.indexOf('http') !== 0;\n\nexport const vw = (percentageWidth: number, rounded = false) => {\n const value = Dimensions.get('window').width * (percentageWidth / 100);\n return rounded ? Math.round(value) : value;\n};\n\nexport const vh = (percentageHeight: number, rounded = false) => {\n const height = Dimensions.get('window').height;\n\n const value = height * (percentageHeight / 100);\n return rounded ? Math.round(value) : value;\n};\n\nexport const generateRandomId = (a = ''): string =>\n a\n ? /* eslint-disable no-bitwise */\n ((Number(a) ^ (Math.random() * 16)) >> (Number(a) / 4)).toString(16)\n : `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, generateRandomId);\n\n// source: https://raw.githubusercontent.com/mathiasbynens/emoji-regex/master/RGI_Emoji.js\n// [#\\*0-9]\\uFE0F\\u20E3 was replaced with [#*0-9]\\uFE0F\\u20E3 due to a lint warning\nexport const emojiRegex =\n /^(\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC68(?:\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83E\\uDDD1(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69])(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69])(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69])(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69])(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69])(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83C\\uDFF3\\uFE0F\\u200D\\u26A7|\\uD83E\\uDDD1(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDC3B\\u200D\\u2744|(?:(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\uD83C\\uDFF4\\u200D\\u2620|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])\\u200D[\\u2640\\u2642]|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u2600-\\u2604\\u260E\\u2611\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26B0\\u26B1\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0\\u26F1\\u26F4\\u26F7\\u26F8\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2763\\u2764\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]|\\uD83D[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3])\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83D\\uDC08\\u200D\\u2B1B|\\uD83D\\uDC41\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|[#*0-9]\\uFE0F\\u20E3|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDFF4|(?:[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270C\\u270D]|\\uD83D[\\uDD74\\uDD90])(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC08\\uDC15\\uDC3B\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5]|\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD]|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF]|[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD1D\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78\\uDD7A-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCB\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])+$/;\n\nexport const urlRegex =\n /(?:\\s|^)((?:https?:\\/\\/)?(?:[a-z0-9-]+(?:\\.[a-z0-9-]+)+)(?::[0-9]+)?(?:\\/(?:[^\\s]+)?)?)/g;\n\n/**\n * Stringifies a message object\n * @param {FormatMessageResponse<StreamChatGenerics>} message - the message object to be stringified\n * @returns {string} The stringified message\n */\nconst stringifyMessage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n deleted_at,\n latest_reactions,\n reply_count,\n status,\n type,\n updated_at,\n}: FormatMessageResponse<StreamChatGenerics>): string =>\n `${type}${deleted_at}${\n latest_reactions ? latest_reactions.map(({ type }) => type).join() : ''\n }${reply_count}${status}${updated_at?.toISOString?.() || updated_at}`;\n\n/**\n * Reduces a list of messages to strings that are used in useEffect & useMemo\n * @param {messages} messages - the array of messages to be compared\n * @returns {string} The mapped message string\n */\nexport const reduceMessagesToString = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n messages: FormatMessageResponse<StreamChatGenerics>[],\n): string => messages.map(stringifyMessage).join();\n"],"mappings":";;;;;;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAGA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AAiBA,IAAAG,SAAA,GAAAH,OAAA;AASO,IAAMI,SAAS,GAAGC,MAAM,CAACC,MAAM,CAAC;EAIrCC,QAAQ,EAAE,UAAU;EACpBC,aAAa,EAAE,eAAe;EAC9BC,aAAa,EAAE,eAAe;EAC9BC,QAAQ,EAAE,UAAU;EACpBC,SAAS,EAAE;AACb,CAAC,CAAC;AAACC,OAAA,CAAAR,SAAA,GAAAA,SAAA;AAEI,IAAMS,sBAKZ,GAAGR,MAAM,CAACC,MAAM,CAAC;EAChBQ,WAAW,EAAE,aAAa;EAC1BC,QAAQ,EAAE,UAAU;EACpBP,aAAa,EAAE,eAAe;EAC9BQ,KAAK,EAAE;AACT,CAAC,CAAC;AAACJ,OAAA,CAAAC,sBAAA,GAAAA,sBAAA;AAEI,IAAMI,kBAAkB,GAAG;EAChCC,MAAM,EAAE,QAAQ;EAChBC,QAAQ,EAAE,UAAU;EACpBC,OAAO,EAAE;AACX,CAAC;AAACR,OAAA,CAAAK,kBAAA,GAAAA,kBAAA;AAOK,IAAMI,4BAA4B,GAAG,SAA/BA,4BAA4BA,CACvCC,SAAyB,EACzBC,oBAA6B,EACT;EAAA,IAAAC,aAAA;EACpB,IAAMC,YAAgC,IAAAD,aAAA,WAAAE,gBAAA,aAAAF,aAAA,EACnCpB,SAAS,CAACO,SAAS,EAAGY,oBAAoB,GACvCV,sBAAsB,CAACE,QAAQ,GAC/BF,sBAAsB,CAACC,WAAW,OAAAY,gBAAA,aAAAF,aAAA,EAErCpB,SAAS,CAACK,aAAa,EAAGc,oBAAoB,GAC3CV,sBAAsB,CAACE,QAAQ,GAC/BF,sBAAsB,CAACG,KAAK,OAAAU,gBAAA,aAAAF,aAAA,EAC/BpB,SAAS,CAACI,aAAa,EAAGK,sBAAsB,CAACL,aAAa,OAAAkB,gBAAA,aAAAF,aAAA,EAC9DpB,SAAS,CAACM,QAAQ,EAAGG,sBAAsB,CAACE,QAAQ,OAAAW,gBAAA,aAAAF,aAAA,EACpDpB,SAAS,CAACG,QAAQ,EAAGM,sBAAsB,CAACE,QAAQ,GAAAS,aAAA,CACtD;EAED,OAAOC,YAAY,CAACH,SAAS,CAAC;AAChC,CAAC;AAACV,OAAA,CAAAS,4BAAA,GAAAA,4BAAA;AAEF,IAAMM,mCAAmC,GAAG,EAAE;AAC9C,IAAMC,8BAA8B,GAAG;EACrCC,OAAO,EAAE,CAAC,CAAC;EACXC,OAAO,EAAE,CAAC,CAAC;EACXC,IAAI,EAAE,CAAC;AACT,CAAC;AAED,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAGlBC,IAAoD;EAAA,OAEnDA,IAAI,KAA4CC,SAAS;AAAA;AAE5D,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAGfC,OAAoC;EAAA,IAAAC,kBAAA;EAAA,OACjC,EAAAA,kBAAA,GAAAD,OAAO,CAACE,SAAS,CAAC,CAAC,qBAAnBD,kBAAA,CAAqBE,QAAQ,KAAI,EAAE;AAAA;AAExC,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAGdJ,OAAoC,EACjC;EACH,IAAMK,OAAO,GAAGL,OAAO,CAACM,KAAK,CAACD,OAAO;EAErC,OAAOpC,MAAM,CAACsC,MAAM,CAACF,OAAO,CAAC,CAACG,MAAM,GAE9BvC,MAAM,CAACsC,MAAM,CAACF,OAAO,CAAC,CAACI,MAAM,CAAC,UAACC,MAAM;IAAA,OAAKA,MAAM,CAACb,IAAI;EAAA,EAAC,CAGtDc,GAAG,CAAC,UAACD,MAAM;IAAA,OAAKA,MAAM,CAACb,IAAI;EAAA,EAAC,GAC9B,EAAE;AACR,CAAC;AAED,IAAMe,WAAW,GAAG,SAAdA,WAAWA,CAGfZ,OAAoC,EACjC;EACH,IAAMa,QAAQ,GAAGb,OAAO,CAACM,KAAK,CAACO,QAAQ;EACvC,OAAO5C,MAAM,CAACsC,MAAM,CAACM,QAAQ,CAAC,CAACL,MAAM,OAAAM,mBAAA,aAAO7C,MAAM,CAACsC,MAAM,CAACM,QAAQ,CAAC,IAAI,EAAE;AAC3E,CAAC;AAED,IAAME,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAGzBf,OAAoC,EACjC;EACH,IAAMgB,KAAK,MAAAC,MAAA,KAAAH,mBAAA,aAAOV,UAAU,CAACJ,OAAO,CAAC,OAAAc,mBAAA,aAAKF,WAAW,CAACZ,OAAO,CAAC,EAAC;EAE/D,OAAO/B,MAAM,CAACsC,MAAM,CAClBS,KAAK,CAACE,MAAM,CAAC,UAACC,GAAG,EAAEC,GAAG,EAAK;IACzB,IAAI,CAACD,GAAG,CAACC,GAAG,CAACC,EAAE,CAAC,EAAE;MAChBF,GAAG,CAACC,GAAG,CAACC,EAAE,CAAC,GAAGD,GAAG;IACnB;IAEA,OAAOD,GAAG;EACZ,CAAC,EAAE,CAAC,CAA0D,CAChE,CAAC;AACH,CAAC;AAED,IAAMG,YAAY;EAAA,IAAAC,IAAA,OAAAC,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAC,QAGnB3B,OAAoC,EACpC4B,KAAiD,EACjDC,OAA+D;IAAA,IAAAnC,OAAA;MAAAoC,cAAA;MAAAC,KAAA;MAAAC,QAAA;MAAAC,MAAA;MAAAC,KAAA,GAAAC,SAAA;IAAA,OAAAV,YAAA,YAAAW,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAC/D9C,OAEC,GAAAwC,KAAA,CAAA1B,MAAA,QAAA0B,KAAA,QAAApC,SAAA,GAAAoC,KAAA,MAAG,CAAC,CAAC;UAAAJ,cAAA,GAEkDpC,OAAO,CAAvDqC,KAAK,EAALA,KAAK,GAAAD,cAAA,cAAGvC,mCAAmC,GAAAuC,cAAA;UAAA,MAE/C,OAAOF,KAAK,KAAK,QAAQ;YAAAU,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAAF,QAAA,CAAAE,IAAA;UAAA,OACFxC,OAAO,CAAwBsB,YAAY,CAClE;YACEmB,IAAI,EAAE;cAAEC,aAAa,EAAEd;YAAM;UAC/B,CAAC,EACD,CAAC,CAAC,EACF;YAAEG,KAAK,EAALA;UAAM,CACV,CAAC;QAAA;UANKC,QAAQ,GAAAM,QAAA,CAAAK,IAAA;UAQR3B,MAA2C,GAAG,EAAE;UACtDgB,QAAQ,CAAC3B,OAAO,CAACuC,OAAO,CAAC,UAAClC,MAAM;YAAA,OAAKd,cAAc,CAACc,MAAM,CAACb,IAAI,CAAC,IAAImB,MAAK,CAAC6B,IAAI,CAACnC,MAAM,CAACb,IAAI,CAAC;UAAA,EAAC;UAC5F,IAAIgC,OAAO,IAAIb,MAAK,EAAE;YACpBa,OAAO,CAACb,MAAK,CAAC;UAChB;QAAC;QAAA;UAAA,OAAAsB,QAAA,CAAAQ,IAAA;MAAA;IAAA,GAAAnB,OAAA;EAAA,CAEJ;EAAA,gBA3BKL,YAAYA,CAAAyB,EAAA,EAAAC,GAAA,EAAAC,GAAA;IAAA,OAAA1B,IAAA,CAAA2B,KAAA,OAAAf,SAAA;EAAA;AAAA,GA2BjB;AAEM,IAAMgB,qBAAqB,GAAG,IAAAC,oBAAQ,EAAC9B,YAAY,EAAE,GAAG,EAAE;EAC/D+B,OAAO,EAAE,KAAK;EACdC,QAAQ,EAAE;AACZ,CAAC,CAAC;AAAC9E,OAAA,CAAA2E,qBAAA,GAAAA,qBAAA;AAEH,IAAMI,UAAU;EAAA,IAAAC,KAAA,OAAAhC,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAA+B,SAGjBC,MAAsC,EACtC9B,KAAiD,EACjDC,OAA+D;IAAA,IAAAnC,OAAA;MAAAiE,eAAA;MAAA5B,KAAA;MAAA6B,qBAAA;MAAAC,uBAAA;MAAApE,OAAA;MAAAuC,QAAA;MAAA8B,OAAA;MAAAC,MAAA,GAAA5B,SAAA;IAAA,OAAAV,YAAA,YAAAW,IAAA,UAAA4B,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAA1B,IAAA,GAAA0B,SAAA,CAAAzB,IAAA;QAAA;UAC/D9C,OAGC,GAAAqE,MAAA,CAAAvD,MAAA,QAAAuD,MAAA,QAAAjE,SAAA,GAAAiE,MAAA,MAAG,CAAC,CAAC;UAAA,MAEF,OAAOnC,KAAK,KAAK,QAAQ;YAAAqC,SAAA,CAAAzB,IAAA;YAAA;UAAA;UAAAmB,eAAA,GAIvBjE,OAAO,CAFTqC,KAAK,EAALA,KAAK,GAAA4B,eAAA,cAAGpE,mCAAmC,GAAAoE,eAAA,EAAAC,qBAAA,GAEzClE,OAAO,CADTmE,uBAAuB,EAAvBA,uBAAuB,GAAAD,qBAAA,cAAGpE,8BAA8B,GAAAoE,qBAAA;UAEpDnE,OAAO,OAAAyE,SAAA;YACX7C,EAAE,EAAE;cAAE8C,GAAG,EAAET,MAAM,CAACU;YAAO;UAAC,GACvBP,uBAAuB,oBAAvBA,uBAAuB,CAAEpE,OAAO;UAGrC,IAAImC,KAAK,EAAE;YAETnC,OAAO,CAAC4E,GAAG,GAAG,CAAC;cAAEhD,EAAE,EAAE;gBAAEqB,aAAa,EAAEd;cAAM;YAAE,CAAC,EAAE;cAAEa,IAAI,EAAE;gBAAEC,aAAa,EAAEd;cAAM;YAAE,CAAC,CAAC;UACtF;UAACqC,SAAA,CAAAzB,IAAA;UAAA,OAEsBkB,MAAM,CAACH,UAAU,CAEtC9D,OAAO,MAAAyE,SAAA;YACL7C,EAAE,EAAE;UAAC,GAAKwC,uBAAuB,oBAAvBA,uBAAuB,CAAElE,IAAI,OAAAuE,SAAA;YACvCnC,KAAK,EAALA;UAAK,GAAK8B,uBAAuB,oBAAvBA,uBAAuB,CAAEnE,OAAO,CAC9C,CAAC;QAAA;UALKsC,QAAQ,GAAAiC,SAAA,CAAAtB,IAAA;UAMR3B,OAA2C,GAAG,EAAE;UACtDgB,QAAQ,CAAChB,KAAK,CAAC4B,OAAO,CAAC,UAAC/C,IAAI;YAAA,OAAKD,cAAc,CAACC,IAAI,CAAC,IAAImB,OAAK,CAAC6B,IAAI,CAAChD,IAAI,CAAC;UAAA,EAAC;UAC1E,IAAIgC,OAAO,IAAIb,OAAK,EAAE;YACpBa,OAAO,CAACb,OAAK,CAAC;UAChB;QAAC;QAAA;UAAA,OAAAiD,SAAA,CAAAnB,IAAA;MAAA;IAAA,GAAAW,QAAA;EAAA,CAEJ;EAAA,gBAtCKF,UAAUA,CAAAe,GAAA,EAAAC,GAAA,EAAAC,GAAA;IAAA,OAAAhB,KAAA,CAAAN,KAAA,OAAAf,SAAA;EAAA;AAAA,GAsCf;AAEM,IAAMsC,mBAAmB,GAAG,IAAArB,oBAAQ,EAACG,UAAU,EAAE,GAAG,EAAE;EAC3DF,OAAO,EAAE,KAAK;EACdC,QAAQ,EAAE;AACZ,CAAC,CAAC;AAAC9E,OAAA,CAAAiG,mBAAA,GAAAA,mBAAA;AAEI,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,OAAgB;EAAA,OAAqBA,OAAO,KAAK,GAAG;AAAA;AAACnG,OAAA,CAAAkG,gBAAA,GAAAA,gBAAA;AAE/E,IAAME,cAAc,GAAG,SAAjBA,cAAcA,CAAID,OAAgB;EAAA,OAAqBA,OAAO,KAAK,GAAG;AAAA;AAACnG,OAAA,CAAAoG,cAAA,GAAAA,cAAA;AAE7E,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIF,OAAgB;EAAA,OAAqBA,OAAO,KAAK,GAAG;AAAA;AAACnG,OAAA,CAAAqG,gBAAA,GAAAA,gBAAA;AAyG/E,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAC,KAAA;EAAA,IAG7B/E,OAAO,GAAA+E,KAAA,CAAP/E,OAAO;IACP0D,MAAM,GAAAqB,KAAA,CAANrB,MAAM;IACNsB,mBAAmB,GAAAD,KAAA,CAAnBC,mBAAmB;EAAA,OACqE;IACxF,GAAG,EAAE;MACHC,YAAY,EAAE,SAAAA,aAACrD,KAAK,EAAEsD,IAAI,EAAErD,OAAO,EAAmB;QAAA,IAAjBnC,OAAO,GAAAyC,SAAA,CAAA3B,MAAA,QAAA2B,SAAA,QAAArC,SAAA,GAAAqC,SAAA,MAAG,CAAC,CAAC;QAC/C,IAAI+C,IAAI,CAACC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE;QAEtC,IAAAC,eAAA,GAAwD1F,OAAO,CAAvDqC,KAAK;UAALA,KAAK,GAAAqD,eAAA,cAAG7F,mCAAmC,GAAA6F,eAAA;QACnD,IAAMC,gBAAgB,GAAG,CAACzD,KAAK,GAC3B7B,WAAW,CAACC,OAAO,CAAC,GACpBD,WAAW,CAACC,OAAO,CAAC,CAACS,MAAM,CAAC,UAAC6E,OAAO;UAAA,IAAAC,aAAA;UAAA,OAAK3D,KAAK,IAAI,EAAA2D,aAAA,GAAAD,OAAO,CAAC7C,IAAI,qBAAZ8C,aAAA,CAAcJ,OAAO,CAACvD,KAAK,CAAC,MAAK,CAAC,CAAC;QAAA,EAAC;QAG1FyD,gBAAgB,CAAC1F,IAAI,CAAC,UAAC6F,CAAC,EAAEC,CAAC,EAAK;UAAA,IAAAC,OAAA,EAAAC,OAAA;UAC9B,IAAIC,KAAK,GAAG,EAAAF,OAAA,GAAAF,CAAC,CAAC/C,IAAI,qBAANiD,OAAA,CAAQG,WAAW,CAAC,CAAC,KAAI,EAAE;UACvC,IAAIC,KAAK,GAAG,EAAAH,OAAA,GAAAF,CAAC,CAAChD,IAAI,qBAANkD,OAAA,CAAQE,WAAW,CAAC,CAAC,KAAI,EAAE;UACvC,IAAIjE,KAAK,IAAIgE,KAAK,CAACT,OAAO,CAACvD,KAAK,CAAC,KAAK,CAAC,EAAE;YACvCgE,KAAK,SAAOA,KAAO;UACrB;UACA,IAAIhE,KAAK,IAAIkE,KAAK,CAACX,OAAO,CAACvD,KAAK,CAAC,KAAK,CAAC,EAAE;YACvCkE,KAAK,SAAOA,KAAO;UACrB;UACA,IAAIF,KAAK,GAAGE,KAAK,EAAE,OAAO,CAAC,CAAC;UAC5B,IAAIF,KAAK,GAAGE,KAAK,EAAE,OAAO,CAAC;UAE3B,OAAO,CAAC;QACV,CAAC,CAAC;QAEF,IAAMC,MAAM,GAAGV,gBAAgB,CAACW,KAAK,CAAC,CAAC,EAAEjE,KAAK,CAAC;QAE/C,IAAIF,OAAO,EAAE;UACXA,OAAO,CAACkE,MAAM,EAAEnE,KAAK,CAAC;QACxB;QAEA,OAAOmE,MAAM;MACf,CAAC;MACDE,MAAM,EAAE,SAAAA,OAACC,MAAM;QAAA,OAAM;UACnBC,aAAa,EAAE,MAAM;UACrBC,GAAG,OAAKF,MAAM,CAACzD,IAAM;UACrByC,IAAI,QAAMgB,MAAM,CAACzD;QACnB,CAAC;MAAA,CAAC;MACF4D,IAAI,EAAE;IACR,CAAC;IACD,GAAG,EAAE;MACHpB,YAAY,EAAE,SAAAA,aAACrD,KAAK,EAAE0E,CAAC,EAAEzE,OAAO,EAAK;QACnC,IAAI,CAACD,KAAK,EAAE,OAAO,EAAE;QAErB,IAAMmE,MAAM,GAAGQ,wBAAc,CAACC,UAAU,CAACtF,MAAM,CAAC,UAACC,GAAG,EAAEC,GAAG,EAAK;UAC5D,IAAID,GAAG,CAACX,MAAM,IAAI,EAAE,EAAE,OAAOW,GAAG;UAEhC,IAAIC,GAAG,CAACqF,KAAK,CAACC,IAAI,CAAC,UAACjE,IAAI;YAAA,OAAKA,IAAI,CAACkE,QAAQ,CAAC/E,KAAK,CAAC;UAAA,EAAC,EAAE;YAClD,IAAMgF,KAAK,GAAGL,wBAAc,CAACM,QAAQ,CAACzF,GAAG,CAACqB,IAAI,CAAC;YAC/C,IAAImE,KAAK,CAACE,eAAe,EAAE;cACzB3F,GAAG,CAAC0B,IAAI,KAAAqB,SAAA,iBACH0C,KAAK;gBACRnE,IAAI,EAAKmE,KAAK,CAACnE,IAAI,YAAS;gBAC5BqE,eAAe,EAAEhH;cAAS,EAC3B,CAAC;cACF8G,KAAK,CAACE,eAAe,CAAClE,OAAO,CAAC,UAACmE,IAAI,EAAEC,KAAK;gBAAA,OACxC7F,GAAG,CAAC0B,IAAI,KAAAqB,SAAA,iBACH0C,KAAK;kBACRnE,IAAI,EAAKmE,KAAK,CAACnE,IAAI,eAASuE,KAAK,GAAG,CAAC,CAAE;kBACvCF,eAAe,EAAEhH,SAAS;kBAC1BmH,OAAO,EAAEF;gBAAI,EACd,CAAC;cAAA,CACJ,CAAC;YACH,CAAC,MAAM;cACL5F,GAAG,CAAC0B,IAAI,CAAC+D,KAAK,CAAC;YACjB;UACF;UAEA,OAAOzF,GAAG;QACZ,CAAC,EAAE,EAAa,CAAC;QAEjB,IAAIU,OAAO,EAAE;UACXA,OAAO,CAACkE,MAAM,EAAEnE,KAAK,CAAC;QACxB;QAEA,OAAOmE,MAAM;MACf,CAAC;MACDE,MAAM,EAAE,SAAAA,OAACC,MAAM;QAAA,OAAM;UACnBC,aAAa,EAAE,MAAM;UACrBC,GAAG,EAAEF,MAAM,CAACzD,IAAI;UAChByC,IAAI,EAAEgB,MAAM,CAACe;QACf,CAAC;MAAA,CAAC;MACFZ,IAAI,EAAE;IACR,CAAC;IACD,GAAG,EAAE;MACHa,QAAQ,EAAE,SAAAA,SAACC,IAAI,EAAK;QAClBnC,mBAAmB,CAACmC,IAAI,CAAC;MAC3B,CAAC;MACDlC,YAAY,EAAE,SAAAA,aACZrD,KAAK,EACL0E,CAAC,EACDzE,OAAO,EAMJ;QAAA,IALHnC,OAAO,GAAAyC,SAAA,CAAA3B,MAAA,QAAA2B,SAAA,QAAArC,SAAA,GAAAqC,SAAA,MAAG;UACRJ,KAAK,EAAExC,mCAAmC;UAC1C6H,yBAAyB,EAAE,KAAK;UAChCvD,uBAAuB,EAAErE;QAC3B,CAAC;QAED,IAAIE,OAAO,YAAPA,OAAO,CAAE0H,yBAAyB,EAAE;UACtC,OAAQ3C,mBAAmB,CACzBf,MAAM,EACN9B,KAAK,EACL,UAACyF,IAAI,EAAK;YACR,IAAIxF,OAAO,EAAE;cACXA,OAAO,CAACwF,IAAI,EAAEzF,KAAK,CAAC;YACtB;UACF,CAAC,EACD;YACEG,KAAK,EAAErC,OAAO,CAACqC,KAAK;YACpB8B,uBAAuB,EAAEnE,OAAO,CAACmE;UACnC,CACF,CAAC;QACH;QAQA,IAAI,CAACjC,KAAK,IAAI3D,MAAM,CAACsC,MAAM,CAACP,OAAO,CAACM,KAAK,CAACD,OAAO,CAAC,CAACG,MAAM,GAAG,GAAG,EAAE;UAC/D,IAAMQ,OAAK,GAAGD,qBAAqB,CAACf,OAAO,CAAC;UAE5C,IAAMsH,aAAa,GAAGtG,OAAK,CAACP,MAAM,CAAC,UAACZ,IAAI,EAAK;YAAA,IAAA0H,UAAA;YAC3C,IAAI,CAAC3F,KAAK,EAAE,OAAO,IAAI;YACvB,IAAI,EAAA2F,UAAA,GAAA1H,IAAI,CAAC4C,IAAI,qBAAT8E,UAAA,CAAW1B,WAAW,CAAC,CAAC,CAACV,OAAO,CAACvD,KAAK,CAACiE,WAAW,CAAC,CAAC,CAAC,MAAK,CAAC,CAAC,EAAE;cAChE,OAAO,IAAI;YACb;YACA,IAAIhG,IAAI,CAACwB,EAAE,CAACwE,WAAW,CAAC,CAAC,CAACV,OAAO,CAACvD,KAAK,CAACiE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;cAC7D,OAAO,IAAI;YACb;YACA,OAAO,KAAK;UACd,CAAC,CAAC;UAEF,IAAMwB,KAAI,GAAGC,aAAa,CAACtB,KAAK,CAAC,CAAC,EAAEtG,OAAO,oBAAPA,OAAO,CAAEqC,KAAK,CAAC;UAEnD,IAAIF,OAAO,EAAE;YACXA,OAAO,CAACwF,KAAI,EAAEzF,KAAK,CAAC;UACtB;UAEA,OAAOyF,KAAI;QACb;QAEA,OAAQlE,qBAAqB,CAC3BnD,OAAO,EACP4B,KAAK,EACL,UAACyF,IAAI,EAAK;UACR,IAAIxF,OAAO,EAAE;YACXA,OAAO,CAACwF,IAAI,EAAEzF,KAAK,CAAC;UACtB;QACF,CAAC,EACD;UACEG,KAAK,EAAErC,OAAO,CAACqC;QACjB,CACF,CAAC;MACH,CAAC;MACDkE,MAAM,EAAE,SAAAA,OAACC,MAAM;QAAA,OAAM;UACnBC,aAAa,EAAE,MAAM;UACrBC,GAAG,EAAEF,MAAM,CAAC7E,EAAE;UACd6D,IAAI,SAAMgB,MAAM,CAACzD,IAAI,IAAIyD,MAAM,CAAC7E,EAAE;QACpC,CAAC;MAAA,CAAC;MACFgF,IAAI,EAAE;IACR;EACF,CAAC;AAAA,CAAC;AAAC7H,OAAA,CAAAsG,kBAAA,GAAAA,kBAAA;AAEI,IAAM0C,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAIC,GAAW;EAAA,OAChD,CAACA,GAAG,CAACtC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,cAAYsC,GAAG,GAAKA,GAAG,EAAEC,IAAI,CAAC,CAAC;AAAA;AAAClJ,OAAA,CAAAgJ,sBAAA,GAAAA,sBAAA;AAEnD,IAAMG,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIF,GAAY,EAAK;EACnD,IAAI,CAACA,GAAG,EAAE,OAAOA,GAAG;EAEpB,IAAMG,eAAe,GAAGH,GAAG,CAACtC,OAAO,CAAC,GAAG,CAAC;EACxC,IAAIyC,eAAe,KAAK,CAAC,CAAC,EAAE,OAAOH,GAAG;EAEtC,OAAOA,GAAG,CAACI,SAAS,CAAC,CAAC,EAAEJ,GAAG,CAACtC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC;AAAC3G,OAAA,CAAAmJ,mBAAA,GAAAA,mBAAA;AAEK,IAAMG,UAAU,GAAG,SAAbA,UAAUA,CAAIL,GAAW;EAAA,OAAKA,GAAG,CAACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AAAA;AAAC3G,OAAA,CAAAsJ,UAAA,GAAAA,UAAA;AAE9D,IAAMC,EAAE,GAAG,SAALA,EAAEA,CAAIC,eAAuB,EAAsB;EAAA,IAApBC,OAAO,GAAA9F,SAAA,CAAA3B,MAAA,QAAA2B,SAAA,QAAArC,SAAA,GAAAqC,SAAA,MAAG,KAAK;EACzD,IAAM+F,KAAK,GAAGC,uBAAU,CAACC,GAAG,CAAC,QAAQ,CAAC,CAACC,KAAK,IAAIL,eAAe,GAAG,GAAG,CAAC;EACtE,OAAOC,OAAO,GAAGK,IAAI,CAACC,KAAK,CAACL,KAAK,CAAC,GAAGA,KAAK;AAC5C,CAAC;AAAC1J,OAAA,CAAAuJ,EAAA,GAAAA,EAAA;AAEK,IAAMS,EAAE,GAAG,SAALA,EAAEA,CAAIC,gBAAwB,EAAsB;EAAA,IAApBR,OAAO,GAAA9F,SAAA,CAAA3B,MAAA,QAAA2B,SAAA,QAAArC,SAAA,GAAAqC,SAAA,MAAG,KAAK;EAC1D,IAAMuG,MAAM,GAAGP,uBAAU,CAACC,GAAG,CAAC,QAAQ,CAAC,CAACM,MAAM;EAE9C,IAAMR,KAAK,GAAGQ,MAAM,IAAID,gBAAgB,GAAG,GAAG,CAAC;EAC/C,OAAOR,OAAO,GAAGK,IAAI,CAACC,KAAK,CAACL,KAAK,CAAC,GAAGA,KAAK;AAC5C,CAAC;AAAC1J,OAAA,CAAAgK,EAAA,GAAAA,EAAA;AAEK,IAAMG,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA;EAAA,IAAInD,CAAC,GAAArD,SAAA,CAAA3B,MAAA,QAAA2B,SAAA,QAAArC,SAAA,GAAAqC,SAAA,MAAG,EAAE;EAAA,OACrCqD,CAAC,GAEG,CAAC,CAACoD,MAAM,CAACpD,CAAC,CAAC,GAAI8C,IAAI,CAACO,MAAM,CAAC,CAAC,GAAG,EAAG,KAAMD,MAAM,CAACpD,CAAC,CAAC,GAAG,CAAE,EAAEsD,QAAQ,CAAC,EAAE,CAAC,GACpE,CAAG,GAAG,SAAI,GAAG,SAAI,GAAG,SAAI,GAAG,SAAI,IAAI,EAAGC,OAAO,CAAC,QAAQ,EAAEJ,gBAAgB,CAAC;AAAA;AAACnK,OAAA,CAAAmK,gBAAA,GAAAA,gBAAA;AAIzE,IAAMK,UAAU,GACrB,ikVAAikV;AAACxK,OAAA,CAAAwK,UAAA,GAAAA,UAAA;AAE7jV,IAAMC,QAAQ,GACnB,0FAA0F;AAACzK,OAAA,CAAAyK,QAAA,GAAAA,QAAA;AAO7F,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAAC,KAAA;EAAA,IAGpBC,UAAU,GAAAD,KAAA,CAAVC,UAAU;IACVC,gBAAgB,GAAAF,KAAA,CAAhBE,gBAAgB;IAChBC,WAAW,GAAAH,KAAA,CAAXG,WAAW;IACXC,MAAM,GAAAJ,KAAA,CAANI,MAAM;IACNlD,IAAI,GAAA8C,KAAA,CAAJ9C,IAAI;IACJmD,UAAU,GAAAL,KAAA,CAAVK,UAAU;EAAA,YAEPnD,IAAI,GAAG+C,UAAU,IAClBC,gBAAgB,GAAGA,gBAAgB,CAAC1I,GAAG,CAAC,UAAA8I,KAAA;IAAA,IAAGpD,IAAI,GAAAoD,KAAA,CAAJpD,IAAI;IAAA,OAAOA,IAAI;EAAA,EAAC,CAACqD,IAAI,CAAC,CAAC,GAAG,EAAE,IACtEJ,WAAW,GAAGC,MAAM,IAAG,CAAAC,UAAU,oBAAVA,UAAU,CAAEG,WAAW,oBAAvBH,UAAU,CAAEG,WAAW,CAAG,CAAC,KAAIH,UAAU;AAAA,CAAE;AAOhE,IAAMI,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAGjCC,QAAqD;EAAA,OAC1CA,QAAQ,CAAClJ,GAAG,CAACuI,gBAAgB,CAAC,CAACQ,IAAI,CAAC,CAAC;AAAA;AAAClL,OAAA,CAAAoL,sBAAA,GAAAA,sBAAA"}
1
+ {"version":3,"names":["_debounce","_interopRequireDefault","require","_compiled","FileState","Object","freeze","FINISHED","NOT_SUPPORTED","UPLOAD_FAILED","UPLOADED","UPLOADING","exports","ProgressIndicatorTypes","IN_PROGRESS","INACTIVE","RETRY","MessageStatusTypes","FAILED","RECEIVED","SENDING","getIndicatorTypeForFileState","fileState","enableOfflineSupport","_indicatorMap","indicatorMap","_defineProperty2","defaultAutoCompleteSuggestionsLimit","defaultMentionAllAppUsersQuery","filters","options","sort","isUserResponse","user","undefined","getCommands","channel","_channel$getConfig","getConfig","commands","getMembers","members","state","values","length","filter","member","map","getWatchers","watchers","_toConsumableArray2","getMembersAndWatchers","users","concat","reduce","acc","cur","id","queryMembers","_ref","_asyncToGenerator2","_regenerator","mark","_callee","query","onReady","_options$limit","limit","response","_users","_args","arguments","wrap","_callee$","_context","prev","next","name","$autocomplete","sent","forEach","push","stop","_x","_x2","_x3","apply","queryMembersDebounced","debounce","leading","trailing","queryUsers","_ref2","_callee2","client","_options$limit2","_options$mentionAllAp","mentionAllAppUsersQuery","_users2","_args2","_callee2$","_context2","_extends2","$ne","userID","$or","_x4","_x5","_x6","queryUsersDebounced","isCommandTrigger","trigger","isEmojiTrigger","isMentionTrigger","ACITriggerSettings","_ref3","onMentionSelectItem","dataProvider","text","indexOf","_options$limit3","selectedCommands","command","_command$name","a","b","_a$name","_b$name","nameA","toLowerCase","nameB","result","slice","output","entity","caretPosition","key","type","_","compiledEmojis","emojiArray","names","some","includes","emoji","emojiLib","skin_variations","tone","index","unicode","callback","item","mentionAllAppUsersEnabled","data","matchingUsers","_user$name","makeImageCompatibleUrl","url","trim","getUrlWithoutParams","indexOfQuestion","substring","isLocalUrl","generateRandomId","Number","Math","random","toString","replace","emojiRegex","urlRegex","stringifyMessage","_ref4","deleted_at","latest_reactions","reply_count","status","updated_at","_ref5","join","toISOString","reduceMessagesToString","messages"],"sources":["utils.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { DebouncedFunc } from 'lodash';\nimport debounce from 'lodash/debounce';\nimport type {\n Channel,\n ChannelMemberAPIResponse,\n ChannelMemberResponse,\n CommandResponse,\n FormatMessageResponse,\n StreamChat,\n UserResponse,\n} from 'stream-chat';\n\nimport type { MentionAllAppUsersQuery } from '../contexts/messageInputContext/MessageInputContext';\nimport type {\n SuggestionCommand,\n SuggestionComponentType,\n SuggestionUser,\n} from '../contexts/suggestionsContext/SuggestionsContext';\nimport { compiledEmojis, Emoji } from '../emoji-data/compiled';\nimport type { IconProps } from '../icons/utils/base';\nimport type { DefaultStreamChatGenerics, ValueOf } from '../types/types';\n\nexport type ReactionData = {\n Icon: React.FC<IconProps>;\n type: string;\n};\n\nexport const FileState = Object.freeze({\n // finished and uploaded state are the same thing. First is set on frontend,\n // while later is set on backend side\n // TODO: Unify both of them\n FINISHED: 'finished',\n NOT_SUPPORTED: 'not_supported',\n UPLOAD_FAILED: 'upload_failed',\n UPLOADED: 'uploaded',\n UPLOADING: 'uploading',\n});\n\nexport const ProgressIndicatorTypes: {\n IN_PROGRESS: 'in_progress';\n INACTIVE: 'inactive';\n NOT_SUPPORTED: 'not_supported';\n RETRY: 'retry';\n} = Object.freeze({\n IN_PROGRESS: 'in_progress',\n INACTIVE: 'inactive',\n NOT_SUPPORTED: 'not_supported',\n RETRY: 'retry',\n});\n\nexport const MessageStatusTypes = {\n FAILED: 'failed',\n RECEIVED: 'received',\n SENDING: 'sending',\n};\n\nexport type FileStateValue = typeof FileState[keyof typeof FileState];\n\ntype Progress = ValueOf<typeof ProgressIndicatorTypes>;\ntype IndicatorStatesMap = Record<ValueOf<typeof FileState>, Progress | null>;\n\nexport const getIndicatorTypeForFileState = (\n fileState: FileStateValue,\n enableOfflineSupport: boolean,\n): Progress | null => {\n const indicatorMap: IndicatorStatesMap = {\n [FileState.UPLOADING]: enableOfflineSupport\n ? ProgressIndicatorTypes.INACTIVE\n : ProgressIndicatorTypes.IN_PROGRESS,\n // If offline support is disabled, then there is no need\n [FileState.UPLOAD_FAILED]: enableOfflineSupport\n ? ProgressIndicatorTypes.INACTIVE\n : ProgressIndicatorTypes.RETRY,\n [FileState.NOT_SUPPORTED]: ProgressIndicatorTypes.NOT_SUPPORTED,\n [FileState.UPLOADED]: ProgressIndicatorTypes.INACTIVE,\n [FileState.FINISHED]: ProgressIndicatorTypes.INACTIVE,\n };\n\n return indicatorMap[fileState];\n};\n\nconst defaultAutoCompleteSuggestionsLimit = 10;\nconst defaultMentionAllAppUsersQuery = {\n filters: {},\n options: {},\n sort: {},\n};\n\nconst isUserResponse = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n user: SuggestionUser<StreamChatGenerics> | undefined,\n): user is SuggestionUser<StreamChatGenerics> =>\n (user as SuggestionUser<StreamChatGenerics>) !== undefined;\n\nconst getCommands = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n) => channel.getConfig()?.commands || [];\n\nconst getMembers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n) => {\n const members = channel.state.members;\n\n return Object.values(members).length\n ? (\n Object.values(members).filter((member) => member.user) as Array<\n ChannelMemberResponse<StreamChatGenerics> & { user: UserResponse<StreamChatGenerics> }\n >\n ).map((member) => member.user)\n : [];\n};\n\nconst getWatchers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n) => {\n const watchers = channel.state.watchers;\n return Object.values(watchers).length ? [...Object.values(watchers)] : [];\n};\n\nconst getMembersAndWatchers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n) => {\n const users = [...getMembers(channel), ...getWatchers(channel)];\n\n return Object.values(\n users.reduce((acc, cur) => {\n if (!acc[cur.id]) {\n acc[cur.id] = cur;\n }\n\n return acc;\n }, {} as { [key: string]: SuggestionUser<StreamChatGenerics> }),\n );\n};\n\nconst queryMembers = async <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n query: SuggestionUser<StreamChatGenerics>['name'],\n onReady?: (users: SuggestionUser<StreamChatGenerics>[]) => void,\n options: {\n limit?: number;\n } = {},\n): Promise<void> => {\n const { limit = defaultAutoCompleteSuggestionsLimit } = options;\n\n if (typeof query === 'string') {\n const response = (await (channel as unknown as Channel).queryMembers(\n {\n name: { $autocomplete: query },\n },\n {},\n { limit },\n )) as ChannelMemberAPIResponse<StreamChatGenerics>;\n\n const users: SuggestionUser<StreamChatGenerics>[] = [];\n response.members.forEach((member) => isUserResponse(member.user) && users.push(member.user));\n if (onReady && users) {\n onReady(users);\n }\n }\n};\n\nexport const queryMembersDebounced = debounce(queryMembers, 200, {\n leading: false,\n trailing: true,\n});\n\nconst queryUsers = async <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n client: StreamChat<StreamChatGenerics>,\n query: SuggestionUser<StreamChatGenerics>['name'],\n onReady?: (users: SuggestionUser<StreamChatGenerics>[]) => void,\n options: {\n limit?: number;\n mentionAllAppUsersQuery?: MentionAllAppUsersQuery<StreamChatGenerics>;\n } = {},\n): Promise<void> => {\n if (typeof query === 'string') {\n const {\n limit = defaultAutoCompleteSuggestionsLimit,\n mentionAllAppUsersQuery = defaultMentionAllAppUsersQuery,\n } = options;\n const filters = {\n id: { $ne: client.userID },\n ...mentionAllAppUsersQuery?.filters,\n };\n\n if (query) {\n // @ts-ignore\n filters.$or = [{ id: { $autocomplete: query } }, { name: { $autocomplete: query } }];\n }\n\n const response = await client.queryUsers(\n // @ts-ignore\n filters,\n { id: 1, ...mentionAllAppUsersQuery?.sort },\n { limit, ...mentionAllAppUsersQuery?.options },\n );\n const users: SuggestionUser<StreamChatGenerics>[] = [];\n response.users.forEach((user) => isUserResponse(user) && users.push(user));\n if (onReady && users) {\n onReady(users);\n }\n }\n};\n\nexport const queryUsersDebounced = debounce(queryUsers, 200, {\n leading: false,\n trailing: true,\n});\n\nexport const isCommandTrigger = (trigger: Trigger): trigger is '/' => trigger === '/';\n\nexport const isEmojiTrigger = (trigger: Trigger): trigger is ':' => trigger === ':';\n\nexport const isMentionTrigger = (trigger: Trigger): trigger is '@' => trigger === '@';\n\nexport type Trigger = '/' | '@' | ':';\n\nexport type TriggerSettings<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n '/'?: {\n dataProvider: (\n query: CommandResponse<StreamChatGenerics>['name'],\n text: string,\n onReady?: (\n data: CommandResponse<StreamChatGenerics>[],\n q: CommandResponse<StreamChatGenerics>['name'],\n ) => void,\n options?: {\n limit?: number;\n },\n ) => SuggestionCommand<StreamChatGenerics>[];\n output: (entity: CommandResponse<StreamChatGenerics>) => {\n caretPosition: string;\n key: string;\n text: string;\n };\n type: SuggestionComponentType;\n };\n ':'?: {\n dataProvider: (\n query: Emoji['name'],\n _: string,\n onReady?: (data: Emoji[], q: Emoji['name']) => void,\n ) => Emoji[];\n output: (entity: Emoji) => {\n caretPosition: string;\n key: string;\n text: string;\n };\n type: SuggestionComponentType;\n };\n '@'?: {\n callback: (item: SuggestionUser<StreamChatGenerics>) => void;\n dataProvider: (\n query: SuggestionUser<StreamChatGenerics>['name'],\n _: string,\n onReady?: (\n data: SuggestionUser<StreamChatGenerics>[],\n q: SuggestionUser<StreamChatGenerics>['name'],\n ) => void,\n options?: {\n limit?: number;\n mentionAllAppUsersEnabled?: boolean;\n mentionAllAppUsersQuery?: MentionAllAppUsersQuery<StreamChatGenerics>;\n },\n ) => SuggestionUser<StreamChatGenerics>[] | Promise<void> | void;\n output: (entity: SuggestionUser<StreamChatGenerics>) => {\n caretPosition: string;\n key: string;\n text: string;\n };\n type: SuggestionComponentType;\n };\n};\n\nexport type ACITriggerSettingsParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n channel: Channel<StreamChatGenerics>;\n client: StreamChat<StreamChatGenerics>;\n onMentionSelectItem: (item: SuggestionUser<StreamChatGenerics>) => void;\n};\n\nexport type QueryUsersFunction<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = (\n client: StreamChat<StreamChatGenerics>,\n query: SuggestionUser<StreamChatGenerics>['name'],\n onReady?: (users: SuggestionUser<StreamChatGenerics>[]) => void,\n options?: {\n limit?: number;\n mentionAllAppUsersQuery?: MentionAllAppUsersQuery<StreamChatGenerics>;\n },\n) => Promise<void>;\n\nexport type QueryMembersFunction<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = (\n channel: Channel<StreamChatGenerics>,\n query: SuggestionUser<StreamChatGenerics>['name'],\n onReady?: (users: SuggestionUser<StreamChatGenerics>[]) => void,\n options?: {\n limit?: number;\n },\n) => Promise<void>;\n\n/**\n * ACI = AutoCompleteInput\n *\n * DataProvider accepts `onReady` function, which will execute once the data is ready.\n * Another approach would have been to simply return the data from dataProvider and let the\n * component await for it and then execute the required logic. We are going for callback instead\n * of async-await since we have debounce function in dataProvider. Which will delay the execution\n * of api call on trailing end of debounce (lets call it a1) but will return with result of\n * previous call without waiting for a1. So in this case, we want to execute onReady, when trailing\n * end of debounce executes.\n */\nexport const ACITriggerSettings = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channel,\n client,\n onMentionSelectItem,\n}: ACITriggerSettingsParams<StreamChatGenerics>): TriggerSettings<StreamChatGenerics> => ({\n '/': {\n dataProvider: (query, text, onReady, options = {}) => {\n if (text.indexOf('/') !== 0) return [];\n\n const { limit = defaultAutoCompleteSuggestionsLimit } = options;\n const selectedCommands = !query\n ? getCommands(channel)\n : getCommands(channel).filter((command) => query && command.name?.indexOf(query) !== -1);\n\n // sort alphabetically unless the you're matching the first char\n selectedCommands.sort((a, b) => {\n let nameA = a.name?.toLowerCase() || '';\n let nameB = b.name?.toLowerCase() || '';\n if (query && nameA.indexOf(query) === 0) {\n nameA = `0${nameA}`;\n }\n if (query && nameB.indexOf(query) === 0) {\n nameB = `0${nameB}`;\n }\n if (nameA < nameB) return -1;\n if (nameA > nameB) return 1;\n\n return 0;\n });\n\n const result = selectedCommands.slice(0, limit);\n\n if (onReady) {\n onReady(result, query);\n }\n\n return result;\n },\n output: (entity) => ({\n caretPosition: 'next',\n key: `${entity.name}`,\n text: `/${entity.name}`,\n }),\n type: 'command',\n },\n ':': {\n dataProvider: (query, _, onReady) => {\n if (!query) return [];\n\n const result = compiledEmojis.emojiArray.reduce((acc, cur) => {\n if (acc.length >= 10) return acc;\n\n if (cur.names.some((name) => name.includes(query))) {\n const emoji = compiledEmojis.emojiLib[cur.name];\n if (emoji.skin_variations) {\n acc.push({\n ...emoji,\n name: `${emoji.name}-tone-1`,\n skin_variations: undefined,\n });\n emoji.skin_variations.forEach((tone, index) =>\n acc.push({\n ...emoji,\n name: `${emoji.name}-tone-${index + 2}`,\n skin_variations: undefined,\n unicode: tone,\n }),\n );\n } else {\n acc.push(emoji);\n }\n }\n\n return acc;\n }, [] as Emoji[]);\n\n if (onReady) {\n onReady(result, query);\n }\n\n return result;\n },\n output: (entity) => ({\n caretPosition: 'next',\n key: entity.name,\n text: entity.unicode,\n }),\n type: 'emoji',\n },\n '@': {\n callback: (item) => {\n onMentionSelectItem(item);\n },\n dataProvider: (\n query,\n _,\n onReady,\n options = {\n limit: defaultAutoCompleteSuggestionsLimit,\n mentionAllAppUsersEnabled: false,\n mentionAllAppUsersQuery: defaultMentionAllAppUsersQuery,\n },\n ) => {\n if (options?.mentionAllAppUsersEnabled) {\n return (queryUsersDebounced as DebouncedFunc<QueryUsersFunction<StreamChatGenerics>>)(\n client,\n query,\n (data) => {\n if (onReady) {\n onReady(data, query);\n }\n },\n {\n limit: options.limit,\n mentionAllAppUsersQuery: options.mentionAllAppUsersQuery,\n },\n );\n }\n\n /**\n * By default, we return maximum 100 members via queryChannels api call.\n * Thus it is safe to assume, that if number of members in channel.state is < 100,\n * then all the members are already available on client side and we don't need to\n * make any api call to queryMembers endpoint.\n */\n if (!query || Object.values(channel.state.members).length < 100) {\n const users = getMembersAndWatchers(channel);\n\n const matchingUsers = users.filter((user) => {\n if (!query) return true;\n if (user.name?.toLowerCase().indexOf(query.toLowerCase()) !== -1) {\n return true;\n }\n if (user.id.toLowerCase().indexOf(query.toLowerCase()) !== -1) {\n return true;\n }\n return false;\n });\n\n const data = matchingUsers.slice(0, options?.limit);\n\n if (onReady) {\n onReady(data, query);\n }\n\n return data;\n }\n\n return (queryMembersDebounced as DebouncedFunc<QueryMembersFunction<StreamChatGenerics>>)(\n channel,\n query,\n (data) => {\n if (onReady) {\n onReady(data, query);\n }\n },\n {\n limit: options.limit,\n },\n );\n },\n output: (entity) => ({\n caretPosition: 'next',\n key: entity.id,\n text: `@${entity.name || entity.id}`,\n }),\n type: 'mention',\n },\n});\n\nexport const makeImageCompatibleUrl = (url: string) =>\n (url.indexOf('//') === 0 ? `https:${url}` : url).trim();\n\nexport const getUrlWithoutParams = (url?: string) => {\n if (!url) return url;\n\n const indexOfQuestion = url.indexOf('?');\n if (indexOfQuestion === -1) return url;\n\n return url.substring(0, url.indexOf('?'));\n};\n\nexport const isLocalUrl = (url: string) => url.indexOf('http') !== 0;\n\nexport const generateRandomId = (a = ''): string =>\n a\n ? /* eslint-disable no-bitwise */\n ((Number(a) ^ (Math.random() * 16)) >> (Number(a) / 4)).toString(16)\n : `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, generateRandomId);\n\n// source: https://raw.githubusercontent.com/mathiasbynens/emoji-regex/master/RGI_Emoji.js\n// [#\\*0-9]\\uFE0F\\u20E3 was replaced with [#*0-9]\\uFE0F\\u20E3 due to a lint warning\nexport const emojiRegex =\n /^(\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC68(?:\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83E\\uDDD1(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69])(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69])(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69])(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69])(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69])(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83C\\uDFF3\\uFE0F\\u200D\\u26A7|\\uD83E\\uDDD1(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDC3B\\u200D\\u2744|(?:(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\uD83C\\uDFF4\\u200D\\u2620|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])\\u200D[\\u2640\\u2642]|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u2600-\\u2604\\u260E\\u2611\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26B0\\u26B1\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0\\u26F1\\u26F4\\u26F7\\u26F8\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2763\\u2764\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]|\\uD83D[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3])\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83D\\uDC08\\u200D\\u2B1B|\\uD83D\\uDC41\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|[#*0-9]\\uFE0F\\u20E3|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDFF4|(?:[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270C\\u270D]|\\uD83D[\\uDD74\\uDD90])(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC08\\uDC15\\uDC3B\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5]|\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD]|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF]|[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD1D\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78\\uDD7A-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCB\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])+$/;\n\nexport const urlRegex =\n /(?:\\s|^)((?:https?:\\/\\/)?(?:[a-z0-9-]+(?:\\.[a-z0-9-]+)+)(?::[0-9]+)?(?:\\/(?:[^\\s]+)?)?)/g;\n\n/**\n * Stringifies a message object\n * @param {FormatMessageResponse<StreamChatGenerics>} message - the message object to be stringified\n * @returns {string} The stringified message\n */\nconst stringifyMessage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n deleted_at,\n latest_reactions,\n reply_count,\n status,\n type,\n updated_at,\n}: FormatMessageResponse<StreamChatGenerics>): string =>\n `${type}${deleted_at}${\n latest_reactions ? latest_reactions.map(({ type }) => type).join() : ''\n }${reply_count}${status}${updated_at?.toISOString?.() || updated_at}`;\n\n/**\n * Reduces a list of messages to strings that are used in useEffect & useMemo\n * @param {messages} messages - the array of messages to be compared\n * @returns {string} The mapped message string\n */\nexport const reduceMessagesToString = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n messages: FormatMessageResponse<StreamChatGenerics>[],\n): string => messages.map(stringifyMessage).join();\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.22.0-beta.1"
2
+ "version": "5.22.0-beta.10"
3
3
  }
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { FileUpload } from '../../contexts';
2
+ import type { FileUpload } from '../../types/types';
3
3
  export declare type AudioAttachmentPropsWithContext = {
4
4
  item: Omit<FileUpload, 'state'>;
5
5
  onLoad: (index: string, duration: number) => void;
@@ -1,3 +1,3 @@
1
1
  import type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';
2
2
  import type { DefaultStreamChatGenerics } from '../../../types/types';
3
- export declare const useCreateChannelContext: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channel, disabled, EmptyStateIndicator, enableMessageGroupingByUser, enforceUniqueReaction, error, giphyEnabled, hideDateSeparators, hideStickyDateHeader, isAdmin, isChannelActive, isModerator, isOwner, lastRead, loadChannelAroundMessage, loadChannelAtMessage, loading, LoadingIndicator, markRead, maxTimeBetweenGroupedMessages, members, NetworkDownIndicator, read, reloadChannel, scrollToFirstUnreadThreshold, setLastRead, setTargetedMessage, StickyHeader, targetedMessage, threadList, watcherCount, watchers, }: ChannelContextValue<StreamChatGenerics>) => ChannelContextValue<StreamChatGenerics>;
3
+ export declare const useCreateChannelContext: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channel, disabled, EmptyStateIndicator, enableMessageGroupingByUser, enforceUniqueReaction, error, giphyEnabled, hideDateSeparators, hideStickyDateHeader, isAdmin, isChannelActive, isModerator, isOwner, lastRead, loadChannelAroundMessage, loadChannelAtMessage, loading, LoadingIndicator, markRead, maxTimeBetweenGroupedMessages, members, NetworkDownIndicator, read, reloadChannel, scrollToFirstUnreadThreshold, setLastRead, setTargetedMessage, StickyHeader, targetedMessage, threadList, uploadAbortControllerRef, watcherCount, watchers, }: ChannelContextValue<StreamChatGenerics>) => ChannelContextValue<StreamChatGenerics>;
@@ -1,3 +1 @@
1
- import type { DefaultStreamChatGenerics } from '../../../../types/types';
2
- import type { MessageType } from '../../../MessageList/hooks/useMessageList';
3
- export declare const generateMarkdownText: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(message: MessageType<StreamChatGenerics>) => string | null;
1
+ export declare const generateMarkdownText: (text?: string | undefined) => string | null;
@@ -3,7 +3,7 @@ import type { ChatContextValue } from '../../../contexts/chatContext/ChatContext
3
3
  import type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';
4
4
  import type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';
5
5
  import type { DefaultStreamChatGenerics } from '../../../types/types';
6
- export declare const useMessageActionHandlers: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channel, client, deleteMessage, deleteReaction, message, retrySendMessage, sendReaction, setEditingState, setQuotedMessageState, }: Pick<MessagesContextValue<StreamChatGenerics>, "setQuotedMessageState" | "sendReaction" | "deleteMessage" | "deleteReaction" | "supportedReactions" | "retrySendMessage" | "setEditingState"> & Pick<ChannelContextValue<StreamChatGenerics>, "channel" | "enforceUniqueReaction"> & Pick<ChatContextValue<StreamChatGenerics>, "client"> & Pick<MessageContextValue<StreamChatGenerics>, "message">) => {
6
+ export declare const useMessageActionHandlers: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channel, client, deleteMessage, deleteReaction, message, retrySendMessage, sendReaction, setEditingState, setQuotedMessageState, }: Pick<MessagesContextValue<StreamChatGenerics>, "sendReaction" | "deleteMessage" | "deleteReaction" | "supportedReactions" | "retrySendMessage" | "setEditingState" | "setQuotedMessageState"> & Pick<ChannelContextValue<StreamChatGenerics>, "channel" | "enforceUniqueReaction"> & Pick<ChatContextValue<StreamChatGenerics>, "client"> & Pick<MessageContextValue<StreamChatGenerics>, "message">) => {
7
7
  handleDeleteMessage: () => Promise<void>;
8
8
  handleEditMessage: () => void;
9
9
  handleQuotedReplyMessage: () => void;
@@ -8,7 +8,7 @@ import type { TranslationContextValue } from '../../../contexts/translationConte
8
8
  import type { DefaultStreamChatGenerics } from '../../../types/types';
9
9
  import type { MessageType } from '../../MessageList/hooks/useMessageList';
10
10
  import type { MessageActionType } from '../../MessageOverlay/MessageActionListItem';
11
- export declare const useMessageActions: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channel, client, deleteMessage: deleteMessageFromContext, deleteReaction, enforceUniqueReaction, handleBlock, handleCopy, handleDelete, handleEdit, handleFlag, handleMute, handlePinMessage, handleQuotedReply, handleReaction: handleReactionProp, handleRetry, handleThreadReply, message, onThreadSelect, openThread, retrySendMessage, selectReaction, sendReaction, setEditingState, setOverlay, setQuotedMessageState, supportedReactions, t, }: Pick<MessagesContextValue<StreamChatGenerics>, "setQuotedMessageState" | "updateMessage" | "sendReaction" | "deleteMessage" | "deleteReaction" | "supportedReactions" | "handleReaction" | "removeMessage" | "retrySendMessage" | "setEditingState" | "handleBlock" | "handleCopy" | "handleDelete" | "handleEdit" | "handleFlag" | "handleMute" | "handlePinMessage" | "handleQuotedReply" | "handleRetry" | "handleThreadReply" | "selectReaction"> & Pick<ChannelContextValue<StreamChatGenerics>, "channel" | "enforceUniqueReaction"> & Pick<ChatContextValue<StreamChatGenerics>, "client"> & Pick<OverlayContextValue, "setOverlay"> & Pick<ThreadContextValue<StreamChatGenerics>, "openThread"> & Pick<MessageContextValue<StreamChatGenerics>, "message"> & Pick<TranslationContextValue, "t"> & {
11
+ export declare const useMessageActions: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channel, client, deleteMessage: deleteMessageFromContext, deleteReaction, enforceUniqueReaction, handleBlock, handleCopy, handleDelete, handleEdit, handleFlag, handleMute, handlePinMessage, handleQuotedReply, handleReaction: handleReactionProp, handleRetry, handleThreadReply, message, onThreadSelect, openThread, retrySendMessage, selectReaction, sendReaction, setEditingState, setOverlay, setQuotedMessageState, supportedReactions, t, }: Pick<MessagesContextValue<StreamChatGenerics>, "sendReaction" | "deleteMessage" | "deleteReaction" | "supportedReactions" | "handleReaction" | "removeMessage" | "retrySendMessage" | "setEditingState" | "setQuotedMessageState" | "updateMessage" | "handleBlock" | "handleCopy" | "handleDelete" | "handleEdit" | "handleFlag" | "handleMute" | "handlePinMessage" | "handleQuotedReply" | "handleRetry" | "handleThreadReply" | "selectReaction"> & Pick<ChannelContextValue<StreamChatGenerics>, "channel" | "enforceUniqueReaction"> & Pick<ChatContextValue<StreamChatGenerics>, "client"> & Pick<OverlayContextValue, "setOverlay"> & Pick<ThreadContextValue<StreamChatGenerics>, "openThread"> & Pick<MessageContextValue<StreamChatGenerics>, "message"> & Pick<TranslationContextValue, "t"> & {
12
12
  onThreadSelect?: ((message: MessageType<StreamChatGenerics>) => void) | undefined;
13
13
  }) => {
14
14
  blockUser: MessageActionType;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import { PropsWithChildren } from 'react';
2
2
  import { GestureResponderEvent, StyleProp, ViewStyle } from 'react-native';
3
3
  export declare type UploadProgressIndicatorProps = {
4
4
  /** Action triggered when clicked indicator */
@@ -8,4 +8,7 @@ export declare type UploadProgressIndicatorProps = {
8
8
  /** Type of active indicator */
9
9
  type?: 'in_progress' | 'retry' | 'not_supported' | 'inactive' | null;
10
10
  };
11
- export declare const UploadProgressIndicator: React.FC<UploadProgressIndicatorProps>;
11
+ export declare const UploadProgressIndicator: {
12
+ (props: PropsWithChildren<UploadProgressIndicatorProps>): JSX.Element;
13
+ displayName: string;
14
+ };
@@ -126,6 +126,11 @@ export declare type ChannelContextValue<StreamChatGenerics extends DefaultStream
126
126
  scrollToFirstUnreadThreshold: number;
127
127
  setLastRead: React.Dispatch<React.SetStateAction<Date | undefined>>;
128
128
  setTargetedMessage: (messageId: string) => void;
129
+ /**
130
+ * Abort controller for cancelling async requests made for uploading images/files
131
+ * Its a map of filename and AbortController
132
+ */
133
+ uploadAbortControllerRef: React.MutableRefObject<Map<string, AbortController>>;
129
134
  /**
130
135
  *
131
136
  * ```json
@@ -100,4 +100,4 @@ export declare const useMessageContext: <StreamChatGenerics extends DefaultStrea
100
100
  * typing is desired while using the HOC withMessageContextContext the Props for the
101
101
  * wrapped component must be provided as the first generic.
102
102
  */
103
- export declare const withMessageContext: <P extends UnknownType, StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(Component: React.ComponentType<P>) => React.FC<Omit<P, "disabled" | "onPress" | "onPressIn" | "onLongPress" | "channel" | "members" | "threadList" | "reactions" | "images" | "message" | "handleAction" | "alignment" | "files" | "groupStyles" | "onlyEmojis" | "otherAttachments" | "videos" | "isMyMessage" | "actionsEnabled" | "handleDeleteMessage" | "handleEditMessage" | "handleQuotedReplyMessage" | "handleResendMessage" | "handleToggleBanUser" | "handleToggleMuteUser" | "handleToggleReaction" | "hasReactions" | "lastGroupMessage" | "messageContentOrder" | "onOpenThread" | "showMessageOverlay" | "showMessageStatus" | "goToMessage" | "lastReceivedId" | "preventPress" | "showAvatar">>;
103
+ export declare const withMessageContext: <P extends UnknownType, StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(Component: React.ComponentType<P>) => React.FC<Omit<P, "disabled" | "onPress" | "onPressIn" | "onLongPress" | "channel" | "message" | "reactions" | "members" | "threadList" | "alignment" | "actionsEnabled" | "files" | "groupStyles" | "handleAction" | "handleDeleteMessage" | "handleEditMessage" | "handleQuotedReplyMessage" | "handleResendMessage" | "handleToggleBanUser" | "handleToggleMuteUser" | "handleToggleReaction" | "hasReactions" | "images" | "isMyMessage" | "lastGroupMessage" | "messageContentOrder" | "onlyEmojis" | "onOpenThread" | "otherAttachments" | "showMessageOverlay" | "showMessageStatus" | "videos" | "goToMessage" | "lastReceivedId" | "preventPress" | "showAvatar">>;
@@ -16,29 +16,9 @@ import type { MoreOptionsButtonProps } from '../../components/MessageInput/MoreO
16
16
  import type { SendButtonProps } from '../../components/MessageInput/SendButton';
17
17
  import type { UploadProgressIndicatorProps } from '../../components/MessageInput/UploadProgressIndicator';
18
18
  import type { MessageType } from '../../components/MessageList/hooks/useMessageList';
19
- import type { Asset, DefaultStreamChatGenerics, File, UnknownType } from '../../types/types';
20
- import { ACITriggerSettingsParams, FileStateValue, TriggerSettings } from '../../utils/utils';
19
+ import type { Asset, DefaultStreamChatGenerics, File, FileUpload, ImageUpload, UnknownType } from '../../types/types';
20
+ import { ACITriggerSettingsParams, TriggerSettings } from '../../utils/utils';
21
21
  import { ChannelContextValue } from '../channelContext/ChannelContext';
22
- export declare type FileUpload = {
23
- file: File;
24
- id: string;
25
- state: FileStateValue;
26
- duration?: number;
27
- paused?: boolean;
28
- progress?: number;
29
- thumb_url?: string;
30
- url?: string;
31
- };
32
- export declare type ImageUpload = {
33
- file: Partial<Asset> & {
34
- name?: string;
35
- };
36
- id: string;
37
- state: FileStateValue;
38
- height?: number;
39
- url?: string;
40
- width?: number;
41
- };
42
22
  export declare type MentionAllAppUsersQuery<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
43
23
  filters?: UserFilters<StreamChatGenerics>;
44
24
  options?: UserOptions;
@@ -340,4 +320,4 @@ export declare const useMessageInputContext: <StreamChatGenerics extends Default
340
320
  * typing is desired while using the HOC withMessageInputContext the Props for the
341
321
  * wrapped component must be provided as the first generic.
342
322
  */
343
- export declare const withMessageInputContext: <P extends UnknownType, StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(Component: React.ComponentType<P>) => React.FC<Omit<P, "AttachButton" | "clearEditingState" | "clearQuotedMessageState" | "CommandsButton" | "CooldownTimer" | "editing" | "editMessage" | "FileUploadPreview" | "hasCommands" | "hasFilePicker" | "hasImagePicker" | "ImageUploadPreview" | "InputEditingStateHeader" | "InputGiphySearch" | "InputReplyStateHeader" | "maxNumberOfFiles" | "MoreOptionsButton" | "numberOfLines" | "quotedMessage" | "SendButton" | "sendImageAsync" | "setQuotedMessageState" | "ShowThreadMessageInChannelButton" | "UploadProgressIndicator" | "additionalTextInputProps" | "autoCompleteSuggestionsLimit" | "autoCompleteTriggerSettings" | "compressImageQuality" | "doDocUploadRequest" | "doImageUploadRequest" | "initialValue" | "Input" | "InputButtons" | "maxMessageLength" | "mentionAllAppUsersEnabled" | "mentionAllAppUsersQuery" | "onChangeText" | "SendMessageDisallowedIndicator" | "setInputRef" | keyof LocalMessageInputContext<StreamChatGenerics>>>;
323
+ export declare const withMessageInputContext: <P extends UnknownType, StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(Component: React.ComponentType<P>) => React.FC<Omit<P, "numberOfLines" | "maxNumberOfFiles" | "compressImageQuality" | "setQuotedMessageState" | "AttachButton" | "clearEditingState" | "clearQuotedMessageState" | "CommandsButton" | "CooldownTimer" | "editing" | "editMessage" | "FileUploadPreview" | "hasCommands" | "hasFilePicker" | "hasImagePicker" | "ImageUploadPreview" | "InputEditingStateHeader" | "InputGiphySearch" | "InputReplyStateHeader" | "MoreOptionsButton" | "quotedMessage" | "SendButton" | "sendImageAsync" | "ShowThreadMessageInChannelButton" | "UploadProgressIndicator" | "additionalTextInputProps" | "autoCompleteSuggestionsLimit" | "autoCompleteTriggerSettings" | "doDocUploadRequest" | "doImageUploadRequest" | "initialValue" | "Input" | "InputButtons" | "maxMessageLength" | "mentionAllAppUsersEnabled" | "mentionAllAppUsersQuery" | "onChangeText" | "SendMessageDisallowedIndicator" | "setInputRef" | keyof LocalMessageInputContext<StreamChatGenerics>>>;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import type { DefaultStreamChatGenerics } from '../../../types/types';
3
- import type { FileUpload, ImageUpload, MessageInputContextValue } from '../MessageInputContext';
2
+ import type { DefaultStreamChatGenerics, FileUpload, ImageUpload } from '../../../types/types';
3
+ import type { MessageInputContextValue } from '../MessageInputContext';
4
4
  export declare const isEditingBoolean: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(editing: boolean | import("../../..").MessageType<StreamChatGenerics>) => editing is boolean;
5
5
  export declare const useMessageDetailsForState: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(message: boolean | import("../../..").MessageType<StreamChatGenerics>, initialValue?: string | undefined) => {
6
6
  fileUploads: FileUpload[];
@@ -212,8 +212,8 @@ export declare type MessagesContextValue<StreamChatGenerics extends DefaultStrea
212
212
  */
213
213
  ScrollToBottomButton: React.ComponentType<ScrollToBottomButtonProps>;
214
214
  sendReaction: (type: string, messageId: string) => Promise<void>;
215
- setEditingState: (message: MessageType<StreamChatGenerics>) => void;
216
- setQuotedMessageState: (message: MessageType<StreamChatGenerics>) => void;
215
+ setEditingState: (message: MessageType<StreamChatGenerics> | boolean) => void;
216
+ setQuotedMessageState: (message: MessageType<StreamChatGenerics> | boolean) => void;
217
217
  supportedReactions: ReactionData[];
218
218
  /**
219
219
  * UI component for TypingIndicator
@@ -298,9 +298,6 @@ export declare type Theme = {
298
298
  iconContainer: ViewStyle;
299
299
  title: TextStyle;
300
300
  };
301
- container: ViewStyle & {
302
- maxHeight: number;
303
- };
304
301
  emoji: {
305
302
  container: ViewStyle;
306
303
  text: TextStyle;
@@ -476,6 +473,7 @@ export declare type Theme = {
476
473
  };
477
474
  reactionList: {
478
475
  container: ViewStyle;
476
+ iconFillColor: Color;
479
477
  middleIcon: ViewStyle;
480
478
  radius: number;
481
479
  reactionBubble: ViewStyle;
@@ -1,2 +1,3 @@
1
1
  export * from './useAppStateListener';
2
2
  export * from './useStreami18n';
3
+ export * from './useViewport';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * A custom hook that provides functions to calculate dimensions based on
3
+ * a percentage of the viewport height (vh) and viewport width (vw). It
4
+ * dynamically updates dimensions on changes in device orientation.
5
+ *
6
+ * @returns {Object} An object containing functions vh and vw.
7
+ */
8
+ export declare const useViewport: (rounded?: boolean | undefined) => {
9
+ vh: (percentageHeight: number) => number;
10
+ vw: (percentageWidth: number) => number;
11
+ };