stream-chat-react-native-core 5.6.0-beta.0 → 5.6.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/lib/commonjs/components/Attachment/Gallery.js +21 -16
  2. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/GalleryImage.js +3 -3
  4. package/lib/commonjs/components/Attachment/GalleryImage.js.map +1 -1
  5. package/lib/commonjs/components/Channel/Channel.js +34 -30
  6. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  7. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +5 -1
  8. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  9. package/lib/commonjs/components/Message/hooks/useMessageActions.js +2 -2
  10. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
  11. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +18 -21
  12. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  13. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +7 -32
  14. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  15. package/lib/commonjs/components/index.js +1 -1
  16. package/lib/commonjs/components/index.js.map +1 -1
  17. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +128 -89
  18. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  19. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +1 -0
  20. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  21. package/lib/commonjs/utils/DBSyncManager.js +16 -16
  22. package/lib/commonjs/utils/DBSyncManager.js.map +1 -1
  23. package/lib/commonjs/{components/Message/utils → utils}/removeReservedFields.js +1 -1
  24. package/lib/commonjs/utils/removeReservedFields.js.map +1 -0
  25. package/lib/commonjs/utils/utils.js +2 -2
  26. package/lib/commonjs/utils/utils.js.map +1 -1
  27. package/lib/commonjs/version.json +1 -1
  28. package/lib/module/components/Attachment/Gallery.js +21 -16
  29. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  30. package/lib/module/components/Attachment/GalleryImage.js +3 -3
  31. package/lib/module/components/Attachment/GalleryImage.js.map +1 -1
  32. package/lib/module/components/Channel/Channel.js +34 -30
  33. package/lib/module/components/Channel/Channel.js.map +1 -1
  34. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +5 -1
  35. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  36. package/lib/module/components/Message/hooks/useMessageActions.js +2 -2
  37. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
  38. package/lib/module/components/MessageInput/FileUploadPreview.js +18 -21
  39. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  40. package/lib/module/components/MessageInput/ImageUploadPreview.js +7 -32
  41. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  42. package/lib/module/components/index.js +1 -1
  43. package/lib/module/components/index.js.map +1 -1
  44. package/lib/module/contexts/messageInputContext/MessageInputContext.js +128 -89
  45. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  46. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +1 -0
  47. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  48. package/lib/module/utils/DBSyncManager.js +16 -16
  49. package/lib/module/utils/DBSyncManager.js.map +1 -1
  50. package/lib/module/{components/Message/utils → utils}/removeReservedFields.js +1 -1
  51. package/lib/module/utils/removeReservedFields.js.map +1 -0
  52. package/lib/module/utils/utils.js +2 -2
  53. package/lib/module/utils/utils.js.map +1 -1
  54. package/lib/module/version.json +1 -1
  55. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +1 -1
  56. package/lib/typescript/components/MessageInput/ImageUploadPreview.d.ts +1 -1
  57. package/lib/typescript/components/index.d.ts +1 -1
  58. package/lib/typescript/store/mappers/mapTaskToStorable.d.ts +0 -8
  59. package/lib/typescript/store/types.d.ts +0 -4
  60. package/lib/typescript/utils/DBSyncManager.d.ts +1 -1
  61. package/lib/typescript/{components/Message/utils → utils}/removeReservedFields.d.ts +2 -2
  62. package/lib/typescript/utils/utils.d.ts +1 -1
  63. package/package.json +1 -1
  64. package/src/components/Attachment/Gallery.tsx +5 -1
  65. package/src/components/Attachment/GalleryImage.tsx +2 -0
  66. package/src/components/Channel/Channel.tsx +12 -11
  67. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +6 -4
  68. package/src/components/Message/hooks/useMessageActions.tsx +1 -1
  69. package/src/components/MessageInput/FileUploadPreview.tsx +4 -5
  70. package/src/components/MessageInput/ImageUploadPreview.tsx +10 -35
  71. package/src/components/index.ts +1 -1
  72. package/src/contexts/messageInputContext/MessageInputContext.tsx +94 -75
  73. package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessage.test.tsx.snap +0 -3
  74. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +1 -0
  75. package/src/store/types.ts +0 -5
  76. package/src/utils/DBSyncManager.ts +1 -1
  77. package/src/{components/Message/utils → utils}/removeReservedFields.ts +7 -3
  78. package/src/utils/utils.ts +7 -6
  79. package/src/version.json +1 -1
  80. package/lib/commonjs/components/Message/utils/removeReservedFields.js.map +0 -1
  81. package/lib/commonjs/utils/pendingTaskUtils.js +0 -302
  82. package/lib/commonjs/utils/pendingTaskUtils.js.map +0 -1
  83. package/lib/module/components/Message/utils/removeReservedFields.js.map +0 -1
  84. package/lib/module/utils/pendingTaskUtils.js +0 -302
  85. package/lib/module/utils/pendingTaskUtils.js.map +0 -1
  86. package/lib/typescript/utils/pendingTaskUtils.d.ts +0 -13
  87. package/src/utils/pendingTaskUtils.ts +0 -131
@@ -1 +1 @@
1
- {"version":3,"sources":["utils.ts"],"names":["FileState","Object","freeze","FINISHED","NOT_SUPPORTED","UPLOAD_FAILED","UPLOADED","UPLOADING","ProgressIndicatorTypes","IN_PROGRESS","INACTIVE","RETRY","MessageStatusTypes","FAILED","RECEIVED","SENDING","getIndicatorTypeForFileState","fileState","isOnline","enableOfflineSupport","indicatorMap","defaultAutoCompleteSuggestionsLimit","defaultMentionAllAppUsersQuery","filters","options","sort","isUserResponse","user","undefined","getCommands","channel","getConfig","commands","getMembers","members","state","values","length","filter","member","map","getWatchers","watchers","getMembersAndWatchers","users","reduce","acc","cur","id","queryMembers","query","onReady","limit","name","$autocomplete","response","forEach","push","queryMembersDebounced","leading","trailing","queryUsers","client","mentionAllAppUsersQuery","$ne","userID","$or","queryUsersDebounced","isCommandTrigger","trigger","isEmojiTrigger","isMentionTrigger","ACITriggerSettings","onMentionSelectItem","dataProvider","text","indexOf","selectedCommands","command","a","b","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","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","deleted_at","latest_reactions","reply_count","status","updated_at","join","toISOString","reduceMessagesToString","messages"],"mappings":"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","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 isOnline: boolean,\n enableOfflineSupport: boolean,\n): Progress | null => {\n const indicatorMap: IndicatorStatesMap = {\n [FileState.UPLOADING]: ProgressIndicatorTypes.IN_PROGRESS,\n [FileState.UPLOAD_FAILED]:\n !isOnline && 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 updated_at,\n}: FormatMessageResponse<StreamChatGenerics>): string =>\n `${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"]}
1
+ {"version":3,"sources":["utils.ts"],"names":["FileState","Object","freeze","FINISHED","NOT_SUPPORTED","UPLOAD_FAILED","UPLOADED","UPLOADING","ProgressIndicatorTypes","IN_PROGRESS","INACTIVE","RETRY","MessageStatusTypes","FAILED","RECEIVED","SENDING","getIndicatorTypeForFileState","fileState","enableOfflineSupport","indicatorMap","defaultAutoCompleteSuggestionsLimit","defaultMentionAllAppUsersQuery","filters","options","sort","isUserResponse","user","undefined","getCommands","channel","getConfig","commands","getMembers","members","state","values","length","filter","member","map","getWatchers","watchers","getMembersAndWatchers","users","reduce","acc","cur","id","queryMembers","query","onReady","limit","name","$autocomplete","response","forEach","push","queryMembersDebounced","leading","trailing","queryUsers","client","mentionAllAppUsersQuery","$ne","userID","$or","queryUsersDebounced","isCommandTrigger","trigger","isEmojiTrigger","isMentionTrigger","ACITriggerSettings","onMentionSelectItem","dataProvider","text","indexOf","selectedCommands","command","a","b","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","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","deleted_at","latest_reactions","reply_count","status","updated_at","join","toISOString","reduceMessagesToString","messages"],"mappings":"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","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 updated_at,\n}: FormatMessageResponse<StreamChatGenerics>): string =>\n `${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"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.6.0-beta.0"
2
+ "version": "5.6.0-beta.1"
3
3
  }
@@ -2,7 +2,7 @@ import { ChatContextValue } from '../../contexts';
2
2
  import { MessageInputContextValue } from '../../contexts/messageInputContext/MessageInputContext';
3
3
  import { MessagesContextValue } from '../../contexts/messagesContext/MessagesContext';
4
4
  import type { DefaultStreamChatGenerics } from '../../types/types';
5
- declare type FileUploadPreviewPropsWithContext<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Pick<MessageInputContextValue<StreamChatGenerics>, 'fileUploads' | 'removeFile' | 'uploadFile' | 'setFileUploads'> & Pick<MessagesContextValue<StreamChatGenerics>, 'AudioAttachment' | 'FileAttachmentIcon'> & Pick<ChatContextValue<StreamChatGenerics>, 'isOnline' | 'enableOfflineSupport'>;
5
+ declare type FileUploadPreviewPropsWithContext<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Pick<MessageInputContextValue<StreamChatGenerics>, 'fileUploads' | 'removeFile' | 'uploadFile' | 'setFileUploads'> & Pick<MessagesContextValue<StreamChatGenerics>, 'AudioAttachment' | 'FileAttachmentIcon'> & Pick<ChatContextValue<StreamChatGenerics>, 'enableOfflineSupport'>;
6
6
  export declare type FileUploadPreviewProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Partial<FileUploadPreviewPropsWithContext<StreamChatGenerics>>;
7
7
  /**
8
8
  * FileUploadPreview
@@ -1,7 +1,7 @@
1
1
  import { ChatContextValue } from '../../contexts';
2
2
  import { MessageInputContextValue } from '../../contexts/messageInputContext/MessageInputContext';
3
3
  import type { DefaultStreamChatGenerics } from '../../types/types';
4
- declare type ImageUploadPreviewPropsWithContext<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Pick<MessageInputContextValue<StreamChatGenerics>, 'imageUploads' | 'removeImage' | 'uploadImage'> & Pick<ChatContextValue<StreamChatGenerics>, 'isOnline' | 'enableOfflineSupport'>;
4
+ declare type ImageUploadPreviewPropsWithContext<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Pick<MessageInputContextValue<StreamChatGenerics>, 'imageUploads' | 'removeImage' | 'uploadImage'> & Pick<ChatContextValue<StreamChatGenerics>, 'enableOfflineSupport'>;
5
5
  export declare type ImageUploadPreviewProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Partial<ImageUploadPreviewPropsWithContext<StreamChatGenerics>>;
6
6
  /**
7
7
  * UI Component to preview the images set for upload
@@ -97,7 +97,7 @@ export * from './Message/MessageSimple/MessageTextContainer';
97
97
  export * from './Message/MessageSimple/ReactionList';
98
98
  export * from './Message/MessageSimple/utils/renderText';
99
99
  export * from './Message/utils/messageActions';
100
- export * from './Message/utils/removeReservedFields';
100
+ export * from '../utils/removeReservedFields';
101
101
  export * from './MessageInput/AttachButton';
102
102
  export * from './MessageInput/CommandsButton';
103
103
  export * from './MessageInput/CooldownTimer';
@@ -7,14 +7,6 @@ export declare const mapTaskToStorable: (task: PendingTask) => {
7
7
  messageId: string;
8
8
  id?: number | undefined;
9
9
  type: "send-reaction";
10
- } | {
11
- createdAt: string;
12
- payload: string;
13
- channelId: string;
14
- channelType: string;
15
- messageId: string;
16
- id?: number | undefined;
17
- type: "send-message";
18
10
  } | {
19
11
  createdAt: string;
20
12
  payload: string;
@@ -11,7 +11,6 @@ export declare type PreparedQueries = [string] | [string, Array<any>];
11
11
  export declare type PendingTaskTypes = {
12
12
  deleteMessage: 'delete-message';
13
13
  deleteReaction: 'delete-reaction';
14
- sendMessage: 'send-message';
15
14
  sendReaction: 'send-reaction';
16
15
  };
17
16
  export declare type PendingTask = {
@@ -22,9 +21,6 @@ export declare type PendingTask = {
22
21
  } & ({
23
22
  payload: Parameters<Channel['sendReaction']>;
24
23
  type: PendingTaskTypes['sendReaction'];
25
- } | {
26
- payload: Parameters<Channel['sendMessage']>;
27
- type: PendingTaskTypes['sendMessage'];
28
24
  } | {
29
25
  payload: Parameters<StreamChat['deleteMessage']>;
30
26
  type: PendingTaskTypes['deleteMessage'];
@@ -41,7 +41,7 @@ export declare class DBSyncManager {
41
41
  message: import("stream-chat").MessageResponse<StreamChatGenerics>;
42
42
  }>;
43
43
  static executePendingTasks: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(client: StreamChat<StreamChatGenerics>) => Promise<void>;
44
- dropPendingTasks: (conditions: {
44
+ static dropPendingTasks: (conditions: {
45
45
  messageId: string;
46
46
  }) => void;
47
47
  }
@@ -1,3 +1,3 @@
1
- import type { DefaultStreamChatGenerics } from '../../../types/types';
2
- import type { MessageType } from '../../MessageList/hooks/useMessageList';
1
+ import type { MessageType } from '../components/MessageList/hooks/useMessageList';
2
+ import type { DefaultStreamChatGenerics } from '../types/types';
3
3
  export declare const removeReservedFields: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(message: MessageType<StreamChatGenerics>) => MessageType<StreamChatGenerics>;
@@ -30,7 +30,7 @@ export declare const MessageStatusTypes: {
30
30
  };
31
31
  export declare type FileStateValue = typeof FileState[keyof typeof FileState];
32
32
  declare type Progress = ValueOf<typeof ProgressIndicatorTypes>;
33
- export declare const getIndicatorTypeForFileState: (fileState: FileStateValue, isOnline: boolean, enableOfflineSupport: boolean) => Progress | null;
33
+ export declare const getIndicatorTypeForFileState: (fileState: FileStateValue, enableOfflineSupport: boolean) => Progress | null;
34
34
  export declare const queryMembersDebounced: DebouncedFunc<(<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(channel: Channel<StreamChatGenerics>, query: SuggestionUser<StreamChatGenerics>["name"], onReady?: ((users: SuggestionUser<StreamChatGenerics>[]) => void) | undefined, options?: {
35
35
  limit?: number;
36
36
  }) => Promise<void>)>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "stream-chat-react-native-core",
3
3
  "description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
4
- "version": "5.6.0-beta.0",
4
+ "version": "5.6.0-beta.1",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -170,13 +170,17 @@ const GalleryWithContext = <
170
170
  };
171
171
 
172
172
  const imagesAndVideos = [...(images || []), ...(videos || [])];
173
+ const imagesAndVideosValue = `${images?.length}${videos?.length}${images
174
+ ?.map((i) => `${i.image_url}${i.thumb_url}`)
175
+ .join('')}${videos?.map((i) => `${i.image_url}${i.thumb_url}`).join('')}`;
176
+
173
177
  const { height, invertedDirections, thumbnailGrid, width } = useMemo(
174
178
  () =>
175
179
  buildGallery({
176
180
  images: imagesAndVideos,
177
181
  sizeConfig,
178
182
  }),
179
- [imagesAndVideos.length],
183
+ [imagesAndVideosValue],
180
184
  );
181
185
 
182
186
  if (!imagesAndVideos?.length) return null;
@@ -13,6 +13,8 @@ export type GalleryImageWithContextProps<
13
13
  export const GalleryImageWithContext: React.FC<GalleryImageWithContextProps> = (props) => {
14
14
  const { ImageComponent = Image, uri, ...rest } = props;
15
15
 
16
+ // Caching image components such as FastImage will not work with local images.
17
+ // This for the case of local uris, we use the default Image component.
16
18
  if (!isLocalUrl(uri)) {
17
19
  return (
18
20
  <ImageComponent
@@ -79,7 +79,6 @@ import * as dbApi from '../../store/apis';
79
79
  import type { DefaultStreamChatGenerics } from '../../types/types';
80
80
  import { addReactionToLocalState } from '../../utils/addReactionToLocalState';
81
81
  import { DBSyncManager } from '../../utils/DBSyncManager';
82
- import { dropPendingTasks, queueTask } from '../../utils/pendingTaskUtils';
83
82
  import { removeReactionFromLocalState } from '../../utils/removeReactionFromLocalState';
84
83
  import { generateRandomId, isLocalUrl, MessageStatusTypes, ReactionData } from '../../utils/utils';
85
84
  import { Attachment as AttachmentDefault } from '../Attachment/Attachment';
@@ -182,7 +181,7 @@ const throttleOptions = {
182
181
  trailing: true,
183
182
  };
184
183
  const debounceOptions = {
185
- leading: false,
184
+ leading: true,
186
185
  trailing: true,
187
186
  };
188
187
 
@@ -682,14 +681,14 @@ const ChannelWithContext = <
682
681
  ).current;
683
682
 
684
683
  const copyMessagesState = useRef(
685
- debounce(
684
+ throttle(
686
685
  () => {
687
686
  if (channel) {
688
687
  setMessages([...channel.state.messages]);
689
688
  }
690
689
  },
691
690
  newMessageStateUpdateThrottleInterval,
692
- debounceOptions,
691
+ throttleOptions,
693
692
  ),
694
693
  ).current;
695
694
 
@@ -718,7 +717,7 @@ const ChannelWithContext = <
718
717
  ).current;
719
718
 
720
719
  const copyChannelState = useRef(
721
- debounce(
720
+ throttle(
722
721
  () => {
723
722
  setLoading(false);
724
723
  if (channel) {
@@ -731,7 +730,7 @@ const ChannelWithContext = <
731
730
  }
732
731
  },
733
732
  stateUpdateThrottleInterval,
734
- debounceOptions,
733
+ throttleOptions,
735
734
  ),
736
735
  ).current;
737
736
 
@@ -1233,7 +1232,6 @@ const ChannelWithContext = <
1233
1232
  const updatedMessage = { ...message };
1234
1233
  if (updatedMessage.attachments?.length) {
1235
1234
  for (let i = 0; i < updatedMessage.attachments?.length; i++) {
1236
- // TODO: abstract the following logic to a separate function for DRY within MessageInputContext
1237
1235
  const attachment = updatedMessage.attachments[i];
1238
1236
  const file = attachment.originalFile;
1239
1237
  // check if image_url is not a remote url
@@ -1270,6 +1268,9 @@ const ChannelWithContext = <
1270
1268
  ? await doDocUploadRequest(file, channel)
1271
1269
  : await channel.sendFile(file.uri, file.name, file.type);
1272
1270
  attachment.asset_url = response.file;
1271
+ if (response.thumb_url) {
1272
+ attachment.thumb_url = response.thumb_url;
1273
+ }
1273
1274
  delete attachment.originalFile;
1274
1275
  dbApi.updateMessage({
1275
1276
  message: { ...updatedMessage, cid: channel.cid },
@@ -1588,7 +1589,7 @@ const ChannelWithContext = <
1588
1589
 
1589
1590
  setMessages(channel.state.messages);
1590
1591
 
1591
- await queueTask<StreamChatGenerics>({
1592
+ await DBSyncManager.queueTask<StreamChatGenerics>({
1592
1593
  client,
1593
1594
  task: {
1594
1595
  channelId: channel.id,
@@ -1612,7 +1613,7 @@ const ChannelWithContext = <
1612
1613
  }
1613
1614
 
1614
1615
  if (message.status === MessageStatusTypes.FAILED) {
1615
- dropPendingTasks({ messageId: message.id });
1616
+ DBSyncManager.dropPendingTasks({ messageId: message.id });
1616
1617
  removeMessage(message);
1617
1618
  } else {
1618
1619
  updateMessage({
@@ -1622,7 +1623,7 @@ const ChannelWithContext = <
1622
1623
  type: 'deleted',
1623
1624
  });
1624
1625
 
1625
- const data = await queueTask<StreamChatGenerics>({
1626
+ const data = await DBSyncManager.queueTask<StreamChatGenerics>({
1626
1627
  client,
1627
1628
  task: {
1628
1629
  channelId: channel.id,
@@ -1663,7 +1664,7 @@ const ChannelWithContext = <
1663
1664
 
1664
1665
  setMessages(channel.state.messages);
1665
1666
 
1666
- await queueTask({
1667
+ await DBSyncManager.queueTask<StreamChatGenerics>({
1667
1668
  client,
1668
1669
  task: {
1669
1670
  channelId: channel.id,
@@ -2,6 +2,8 @@ import { useEffect, useMemo, useRef, useState } from 'react';
2
2
 
3
3
  import type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';
4
4
 
5
+ import { useActiveChannelsRefContext } from '../../../contexts/activeChannelsRefContext/ActiveChannelsRefContext';
6
+
5
7
  import { useChatContext } from '../../../contexts/chatContext/ChatContext';
6
8
  import { useIsMountedRef } from '../../../hooks/useIsMountedRef';
7
9
 
@@ -48,7 +50,7 @@ export const usePaginatedChannels = <
48
50
  const { client } = useChatContext<StreamChatGenerics>();
49
51
  const [channels, setChannels] = useState<Channel<StreamChatGenerics>[] | null>(null);
50
52
  const [staticChannelsActive, setStaticChannelsActive] = useState<boolean>(false);
51
-
53
+ const activeChannels = useActiveChannelsRefContext();
52
54
  const [error, setError] = useState<Error>();
53
55
  const [hasNextPage, setHasNextPage] = useState(true);
54
56
  const lastRefresh = useRef(Date.now());
@@ -99,17 +101,17 @@ export const usePaginatedChannels = <
99
101
  };
100
102
 
101
103
  try {
102
- const activeChannelIds = [];
104
+ const activeChannelIds: string[] = [];
103
105
  for (const cid in client.activeChannels) {
104
106
  if (client.activeChannels[cid].id) {
107
+ // @ts-ignore
105
108
  activeChannelIds.push(client.activeChannels[cid].id);
106
109
  }
107
110
  }
108
111
 
109
112
  // TODO: Think about the implications of this.
110
113
  const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {
111
- // @ts-ignore
112
- skipInitialization: activeChannelIds,
114
+ skipInitialization: enableOfflineSupport ? activeChannelIds : activeChannels.current,
113
115
  });
114
116
  if (isQueryStale() || !isMountedRef.current) {
115
117
  return;
@@ -26,11 +26,11 @@ import {
26
26
  } from '../../../icons';
27
27
  import { setClipboardString } from '../../../native';
28
28
  import type { DefaultStreamChatGenerics } from '../../../types/types';
29
+ import { removeReservedFields } from '../../../utils/removeReservedFields';
29
30
  import { MessageStatusTypes } from '../../../utils/utils';
30
31
 
31
32
  import type { MessageType } from '../../MessageList/hooks/useMessageList';
32
33
  import type { MessageActionType } from '../../MessageOverlay/MessageActionListItem';
33
- import { removeReservedFields } from '../utils/removeReservedFields';
34
34
 
35
35
  export const useMessageActions = <
36
36
  StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
@@ -128,7 +128,7 @@ type FileUploadPreviewPropsWithContext<
128
128
  'fileUploads' | 'removeFile' | 'uploadFile' | 'setFileUploads'
129
129
  > &
130
130
  Pick<MessagesContextValue<StreamChatGenerics>, 'AudioAttachment' | 'FileAttachmentIcon'> &
131
- Pick<ChatContextValue<StreamChatGenerics>, 'isOnline' | 'enableOfflineSupport'>;
131
+ Pick<ChatContextValue<StreamChatGenerics>, 'enableOfflineSupport'>;
132
132
 
133
133
  const FileUploadPreviewWithContext = <
134
134
  StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
@@ -140,7 +140,6 @@ const FileUploadPreviewWithContext = <
140
140
  enableOfflineSupport,
141
141
  FileAttachmentIcon,
142
142
  fileUploads,
143
- isOnline,
144
143
  removeFile,
145
144
  setFileUploads,
146
145
  uploadFile,
@@ -215,7 +214,7 @@ const FileUploadPreviewWithContext = <
215
214
  } = useTheme();
216
215
 
217
216
  const renderItem = ({ index, item }: { index: number; item: FileUpload }) => {
218
- const indicatorType = getIndicatorTypeForFileState(item.state, isOnline, enableOfflineSupport);
217
+ const indicatorType = getIndicatorTypeForFileState(item.state, enableOfflineSupport);
219
218
 
220
219
  const lastIndexOfDot = item.file.name.lastIndexOf('.');
221
220
 
@@ -393,7 +392,7 @@ export const FileUploadPreview = <
393
392
  >(
394
393
  props: FileUploadPreviewProps<StreamChatGenerics>,
395
394
  ) => {
396
- const { enableOfflineSupport, isOnline } = useChatContext<StreamChatGenerics>();
395
+ const { enableOfflineSupport } = useChatContext<StreamChatGenerics>();
397
396
  const { fileUploads, removeFile, setFileUploads, uploadFile } =
398
397
  useMessageInputContext<StreamChatGenerics>();
399
398
  const { AudioAttachment, FileAttachmentIcon } = useMessagesContext<StreamChatGenerics>();
@@ -408,7 +407,7 @@ export const FileUploadPreview = <
408
407
  setFileUploads,
409
408
  uploadFile,
410
409
  }}
411
- {...{ enableOfflineSupport, isOnline }}
410
+ {...{ enableOfflineSupport }}
412
411
  {...props}
413
412
  />
414
413
  );