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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/lib/commonjs/components/Channel/Channel.js +23 -17
  2. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  3. package/lib/commonjs/components/Chat/Chat.js +1 -1
  4. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  5. package/lib/commonjs/components/Chat/hooks/useAppSettings.js +51 -22
  6. package/lib/commonjs/components/Chat/hooks/useAppSettings.js.map +1 -1
  7. package/lib/commonjs/components/Chat/hooks/useIsOnline.js +1 -1
  8. package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
  9. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +4 -1
  10. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
  11. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js +2 -2
  12. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
  13. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  14. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +16 -7
  15. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  16. package/lib/commonjs/contexts/themeContext/utils/theme.js +1 -0
  17. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  18. package/lib/commonjs/native.js +1 -1
  19. package/lib/commonjs/native.js.map +1 -1
  20. package/lib/commonjs/store/QuickSqliteClient.js +46 -1
  21. package/lib/commonjs/store/QuickSqliteClient.js.map +1 -1
  22. package/lib/commonjs/store/QuickSqliteClient_v4.js +112 -0
  23. package/lib/commonjs/store/QuickSqliteClient_v4.js.map +1 -0
  24. package/lib/commonjs/store/apis/getAppSettings.js +23 -0
  25. package/lib/commonjs/store/apis/getAppSettings.js.map +1 -0
  26. package/lib/commonjs/store/apis/getPendingTasks.js.map +1 -1
  27. package/lib/commonjs/store/apis/index.js +26 -0
  28. package/lib/commonjs/store/apis/index.js.map +1 -1
  29. package/lib/commonjs/store/apis/queries/selectChannels.js.map +1 -1
  30. package/lib/commonjs/store/apis/queries/selectMembersForChannels.js.map +1 -1
  31. package/lib/commonjs/store/apis/queries/selectMessagesForChannels.js.map +1 -1
  32. package/lib/commonjs/store/apis/queries/selectReactionsForMessages.js.map +1 -1
  33. package/lib/commonjs/store/apis/queries/selectReadsForChannels.js.map +1 -1
  34. package/lib/commonjs/store/apis/upsertAppSettings.js +26 -0
  35. package/lib/commonjs/store/apis/upsertAppSettings.js.map +1 -0
  36. package/lib/commonjs/store/schema.js +1 -0
  37. package/lib/commonjs/store/schema.js.map +1 -1
  38. package/lib/commonjs/version.json +1 -1
  39. package/lib/module/components/Channel/Channel.js +23 -17
  40. package/lib/module/components/Channel/Channel.js.map +1 -1
  41. package/lib/module/components/Chat/Chat.js +1 -1
  42. package/lib/module/components/Chat/Chat.js.map +1 -1
  43. package/lib/module/components/Chat/hooks/useAppSettings.js +51 -22
  44. package/lib/module/components/Chat/hooks/useAppSettings.js.map +1 -1
  45. package/lib/module/components/Chat/hooks/useIsOnline.js +1 -1
  46. package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
  47. package/lib/module/components/ImageGallery/components/ImageGrid.js +4 -1
  48. package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
  49. package/lib/module/components/ImageGallery/components/ImageGridHandle.js +2 -2
  50. package/lib/module/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
  51. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  52. package/lib/module/contexts/messageInputContext/MessageInputContext.js +16 -7
  53. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  54. package/lib/module/contexts/themeContext/utils/theme.js +1 -0
  55. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  56. package/lib/module/native.js +1 -1
  57. package/lib/module/native.js.map +1 -1
  58. package/lib/module/store/QuickSqliteClient.js +46 -1
  59. package/lib/module/store/QuickSqliteClient.js.map +1 -1
  60. package/lib/module/store/QuickSqliteClient_v4.js +112 -0
  61. package/lib/module/store/QuickSqliteClient_v4.js.map +1 -0
  62. package/lib/module/store/apis/getAppSettings.js +23 -0
  63. package/lib/module/store/apis/getAppSettings.js.map +1 -0
  64. package/lib/module/store/apis/getPendingTasks.js.map +1 -1
  65. package/lib/module/store/apis/index.js +26 -0
  66. package/lib/module/store/apis/index.js.map +1 -1
  67. package/lib/module/store/apis/queries/selectChannels.js.map +1 -1
  68. package/lib/module/store/apis/queries/selectMembersForChannels.js.map +1 -1
  69. package/lib/module/store/apis/queries/selectMessagesForChannels.js.map +1 -1
  70. package/lib/module/store/apis/queries/selectReactionsForMessages.js.map +1 -1
  71. package/lib/module/store/apis/queries/selectReadsForChannels.js.map +1 -1
  72. package/lib/module/store/apis/upsertAppSettings.js +26 -0
  73. package/lib/module/store/apis/upsertAppSettings.js.map +1 -0
  74. package/lib/module/store/schema.js +1 -0
  75. package/lib/module/store/schema.js.map +1 -1
  76. package/lib/module/version.json +1 -1
  77. package/lib/typescript/components/Chat/hooks/useAppSettings.d.ts +2 -2
  78. package/lib/typescript/components/Chat/hooks/useIsOnline.d.ts +1 -1
  79. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +1 -1
  80. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +1 -0
  81. package/lib/typescript/store/QuickSqliteClient.d.ts +4 -1
  82. package/lib/typescript/store/QuickSqliteClient_v4.d.ts +12 -0
  83. package/lib/typescript/store/apis/getAppSettings.d.ts +4 -0
  84. package/lib/typescript/store/apis/getPendingTasks.d.ts +1 -1
  85. package/lib/typescript/store/apis/index.d.ts +2 -0
  86. package/lib/typescript/store/apis/upsertAppSettings.d.ts +6 -0
  87. package/lib/typescript/store/schema.d.ts +1 -0
  88. package/package.json +2 -2
  89. package/src/components/Attachment/__tests__/Gallery.test.js +9 -2
  90. package/src/components/Attachment/__tests__/Giphy.test.js +9 -5
  91. package/src/components/Channel/Channel.tsx +11 -3
  92. package/src/components/Chat/Chat.tsx +1 -1
  93. package/src/components/Chat/hooks/__tests__/useAppSettings.test.tsx +1 -0
  94. package/src/components/Chat/hooks/useAppSettings.ts +19 -6
  95. package/src/components/Chat/hooks/useIsOnline.ts +1 -1
  96. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +29 -15
  97. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +12 -6
  98. package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +9 -4
  99. package/src/components/ImageGallery/components/ImageGrid.tsx +2 -1
  100. package/src/components/ImageGallery/components/ImageGridHandle.tsx +2 -2
  101. package/src/contexts/chatContext/ChatContext.tsx +1 -1
  102. package/src/contexts/messageInputContext/MessageInputContext.tsx +7 -0
  103. package/src/contexts/messageInputContext/__tests__/MessageInputContext.test.tsx +8 -3
  104. package/src/contexts/messageInputContext/__tests__/uploadFile.test.tsx +16 -6
  105. package/src/contexts/themeContext/utils/theme.ts +2 -0
  106. package/src/native.ts +1 -1
  107. package/src/store/QuickSqliteClient.ts +49 -5
  108. package/src/store/QuickSqliteClient_v4.ts +98 -0
  109. package/src/store/apis/getAppSettings.ts +19 -0
  110. package/src/store/apis/getPendingTasks.ts +2 -1
  111. package/src/store/apis/index.ts +2 -0
  112. package/src/store/apis/queries/selectChannels.ts +4 -1
  113. package/src/store/apis/queries/selectMembersForChannels.ts +1 -1
  114. package/src/store/apis/queries/selectMessagesForChannels.ts +1 -1
  115. package/src/store/apis/queries/selectReactionsForMessages.ts +1 -1
  116. package/src/store/apis/queries/selectReadsForChannels.ts +1 -1
  117. package/src/store/apis/upsertAppSettings.ts +23 -0
  118. package/src/store/schema.ts +2 -0
  119. package/src/version.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["MessageInputContext.tsx"],"names":["MessageInputContext","React","createContext","DEFAULT_BASE_CONTEXT_VALUE","MessageInputProvider","children","value","closePicker","openPicker","selectedPicker","setSelectedPicker","appSettings","client","enableOfflineSupport","getFileUploadConfig","fileConfig","app","file_upload_config","undefined","blockedFileExtensionTypes","blocked_file_extensions","blockedFileMimeTypes","blocked_mime_types","getImageUploadConfig","imageConfig","image_upload_config","blockedImageExtensionTypes","blockedImageMimeTypes","channelCapabities","channel","giphyEnabled","thread","t","inputBoxRef","sending","asyncIds","setAsyncIds","asyncUploads","setAsyncUploads","giphyActive","setGiphyActive","sendThreadMessageInChannel","setSendThreadMessageInChannel","editing","hasFilePicker","hasImagePicker","initialValue","fileUploads","imageUploads","mentionedUsers","numberOfUploads","setFileUploads","setImageUploads","setMentionedUsers","setNumberOfUploads","setShowMoreOptions","setText","showMoreOptions","text","cooldownEndsAt","endsAt","startCooldown","start","threadId","id","appendText","newText","prevText","isValidMessage","trim","imagesAndFiles","file","state","FileState","NOT_SUPPORTED","UPLOAD_FAILED","UPLOADING","onChange","current","sendTypingEvents","keystroke","onChangeText","openCommandsPicker","focus","openMentionsPicker","openAttachmentPicker","Keyboard","dismiss","pickFile","closeAttachmentPicker","toggleAttachmentPicker","onSelectItem","item","prevMentionedUsers","maxNumberOfFiles","Alert","alert","result","cancelled","docs","forEach","doc","uploadNewFile","removeFile","some","prevFileUploads","filter","prevNumberOfUploads","removeImage","image","prevImageUploads","resetInput","pendingAttachments","length","mapImageUploadToAttachment","mime_type","filename","fallback","name","image_url","url","original_height","height","original_width","width","originalFile","type","mapFileUploadToAttachment","startsWith","asset_url","uri","duration","file_size","size","title","thumb_url","sendMessage","sendLinks","match","urlRegex","clear","attachments","push","sendImageAsync","prevAsyncIds","UPLOADED","FINISHED","updatedMessage","mentioned_users","quoted_message","clearEditingState","updateMessagePromise","editMessage","then","parent_id","quoted_message_id","quotedMessage","show_in_channel","clearQuotedMessageState","_error","setQuotedMessageState","slice","console","log","sendMessageAsync","splice","indexOf","prevAsyncUploads","setInputBoxRef","ref","setInputRef","getTriggerSettings","triggerSettings","autoCompleteTriggerSettings","onMentionSelectItem","updateMessage","regExcondition","getUploadSetStateAction","fileState","extraData","uploads","prevUploads","map","prevUpload","handleFileOrImageUploadError","error","isImageError","Error","test","message","uploadFile","newFile","response","doDocUploadRequest","sendFile","uploadImage","newImage","getLocalUri","source","compressImageQuality","compressedUri","replace","contentType","doImageUploadRequest","sendImage","res","includes","newImageUploads","Object","keys","mimeType","isBlockedFileExtension","fileExtensionType","isBlockedFileMimeType","paused","progress","Promise","all","concat","uploadNewImage","isBlockedImageMimeType","isBlockedImageExtension","imageExtensionType","imageState","messageInputContext","openFilePicker","useMessageInputContext","contextValue","withMessageInputContext","Component","WithMessageInputContextComponent","props","displayName"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, useContext, useEffect, useRef, useState } from 'react';\n\nimport { Alert, Keyboard } from 'react-native';\n\nimport type { TextInput, TextInputProps } from 'react-native';\n\nimport uniq from 'lodash/uniq';\nimport { lookup } from 'mime-types';\nimport {\n Attachment,\n logChatPromiseExecution,\n SendFileAPIResponse,\n StreamChat,\n Message as StreamMessage,\n UserFilters,\n UserOptions,\n UserResponse,\n UserSort,\n} from 'stream-chat';\n\nimport { useCreateMessageInputContext } from './hooks/useCreateMessageInputContext';\nimport { isEditingBoolean, useMessageDetailsForState } from './hooks/useMessageDetailsForState';\n\nimport type { AttachButtonProps } from '../../components/MessageInput/AttachButton';\nimport type { CommandsButtonProps } from '../../components/MessageInput/CommandsButton';\nimport type { InputEditingStateHeaderProps } from '../../components/MessageInput/components/InputEditingStateHeader';\nimport type { InputGiphySearchProps } from '../../components/MessageInput/components/InputGiphySearch';\nimport type { InputReplyStateHeaderProps } from '../../components/MessageInput/components/InputReplyStateHeader';\nimport type { CooldownTimerProps } from '../../components/MessageInput/CooldownTimer';\nimport type { FileUploadPreviewProps } from '../../components/MessageInput/FileUploadPreview';\nimport { useCooldown } from '../../components/MessageInput/hooks/useCooldown';\nimport type { ImageUploadPreviewProps } from '../../components/MessageInput/ImageUploadPreview';\nimport type { InputButtonsProps } from '../../components/MessageInput/InputButtons';\nimport type { MessageInputProps } from '../../components/MessageInput/MessageInput';\nimport type { MoreOptionsButtonProps } from '../../components/MessageInput/MoreOptionsButton';\nimport type { SendButtonProps } from '../../components/MessageInput/SendButton';\nimport type { UploadProgressIndicatorProps } from '../../components/MessageInput/UploadProgressIndicator';\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport { compressImage, getLocalAssetUri, pickDocument } from '../../native';\nimport type { Asset, DefaultStreamChatGenerics, File, UnknownType } from '../../types/types';\nimport { removeReservedFields } from '../../utils/removeReservedFields';\nimport {\n ACITriggerSettings,\n ACITriggerSettingsParams,\n FileState,\n FileStateValue,\n generateRandomId,\n TriggerSettings,\n urlRegex,\n} from '../../utils/utils';\nimport { useAttachmentPickerContext } from '../attachmentPickerContext/AttachmentPickerContext';\nimport { ChannelContextValue, useChannelContext } from '../channelContext/ChannelContext';\nimport { useChatContext } from '../chatContext/ChatContext';\nimport { useOwnCapabilitiesContext } from '../ownCapabilitiesContext/OwnCapabilitiesContext';\nimport { useThreadContext } from '../threadContext/ThreadContext';\nimport { useTranslationContext } from '../translationContext/TranslationContext';\nimport { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';\n\nimport { getDisplayName } from '../utils/getDisplayName';\nimport { isTestEnvironment } from '../utils/isTestEnvironment';\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 name?: string;\n };\n id: string;\n state: FileStateValue;\n height?: number;\n url?: string;\n width?: number;\n};\n\nexport type MentionAllAppUsersQuery<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n filters?: UserFilters<StreamChatGenerics>;\n options?: UserOptions;\n sort?: UserSort<StreamChatGenerics>;\n};\n\nexport type LocalMessageInputContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n appendText: (newText: string) => void;\n asyncIds: string[];\n asyncUploads: {\n [key: string]: {\n state: string;\n url: string;\n };\n };\n closeAttachmentPicker: () => void;\n /** The time at which the active cooldown will end */\n cooldownEndsAt: Date;\n /**\n * An array of file objects which are set for upload. It has the following structure:\n *\n * ```json\n * [\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_1\",\n * \"state\": \"uploading\" // or \"finished\",\n * \"url\": \"https://url1.com\",\n * },\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_2\",\n * \"state\": \"uploading\" // or \"finished\",\n * \"url\": \"https://url1.com\",\n * },\n * ]\n * ```\n *\n */\n fileUploads: FileUpload[];\n giphyActive: boolean;\n /**\n * An array of image objects which are set for upload. It has the following structure:\n *\n * ```json\n * [\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_1\",\n * \"state\": \"uploading\" // or \"finished\",\n * },\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_2\",\n * \"state\": \"uploading\" // or \"finished\",\n * },\n * ]\n * ```\n *\n */\n imageUploads: ImageUpload[];\n inputBoxRef: React.MutableRefObject<TextInput | null>;\n isValidMessage: () => boolean;\n mentionedUsers: string[];\n numberOfUploads: number;\n onChange: (newText: string) => void;\n onSelectItem: (item: UserResponse<StreamChatGenerics>) => void;\n openAttachmentPicker: () => void;\n openCommandsPicker: () => void;\n openFilePicker: () => void;\n openMentionsPicker: () => void;\n pickFile: () => Promise<void>;\n /**\n * Function for removing a file from the upload preview\n *\n * @param id string ID of file in `fileUploads` object in state of MessageInput\n */\n removeFile: (id: string) => void;\n /**\n * Function for removing an image from the upload preview\n *\n * @param id string ID of image in `imageUploads` object in state of MessageInput\n */\n removeImage: (id: string) => void;\n resetInput: (pendingAttachments?: Attachment<StreamChatGenerics>[]) => void;\n selectedPicker: string | undefined;\n sending: React.MutableRefObject<boolean>;\n sendMessage: () => Promise<void>;\n sendMessageAsync: (id: string) => void;\n sendThreadMessageInChannel: boolean;\n setAsyncIds: React.Dispatch<React.SetStateAction<string[]>>;\n setAsyncUploads: React.Dispatch<\n React.SetStateAction<{\n [key: string]: {\n state: string;\n url: string;\n };\n }>\n >;\n setFileUploads: React.Dispatch<React.SetStateAction<FileUpload[]>>;\n setGiphyActive: React.Dispatch<React.SetStateAction<boolean>>;\n setImageUploads: React.Dispatch<React.SetStateAction<ImageUpload[]>>;\n /**\n * Ref callback to set reference on input box\n */\n setInputBoxRef: (ref: TextInput | null) => void;\n setMentionedUsers: React.Dispatch<React.SetStateAction<string[]>>;\n setNumberOfUploads: React.Dispatch<React.SetStateAction<number>>;\n setSendThreadMessageInChannel: React.Dispatch<React.SetStateAction<boolean>>;\n setShowMoreOptions: React.Dispatch<React.SetStateAction<boolean>>;\n setText: React.Dispatch<React.SetStateAction<string>>;\n showMoreOptions: boolean;\n /**\n * Text value of the TextInput\n */\n text: string;\n toggleAttachmentPicker: () => void;\n /**\n * Mapping of input triggers to the outputs to be displayed by the AutoCompleteInput\n */\n triggerSettings: TriggerSettings<StreamChatGenerics>;\n updateMessage: () => Promise<void>;\n /** Function for attempting to upload a file */\n uploadFile: ({ newFile }: { newFile: FileUpload }) => Promise<void>;\n /** Function for attempting to upload an image */\n uploadImage: ({ newImage }: { newImage: ImageUpload }) => Promise<void>;\n uploadNewFile: (file: File) => Promise<void>;\n uploadNewImage: (image: Partial<Asset>) => Promise<void>;\n};\n\nexport type InputMessageInputContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Custom UI component for attach button.\n *\n * Defaults to and accepts same props as: [AttachButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/attach-button/)\n */\n AttachButton: React.ComponentType<AttachButtonProps<StreamChatGenerics>>;\n\n clearEditingState: () => void;\n clearQuotedMessageState: () => void;\n /**\n * Custom UI component for commands button.\n *\n * Defaults to and accepts same props as: [CommandsButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/commands-button/)\n */\n CommandsButton: React.ComponentType<CommandsButtonProps<StreamChatGenerics>>;\n /**\n * Custom UI component to display the remaining cooldown a user will have to wait before\n * being allowed to send another message. This component is displayed in place of the\n * send button for the MessageInput component.\n *\n * **default** [CooldownTimer](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/CooldownTimer.tsx)\n */\n CooldownTimer: React.ComponentType<CooldownTimerProps>;\n editing: boolean | MessageType<StreamChatGenerics>;\n editMessage: StreamChat<StreamChatGenerics>['updateMessage'];\n\n /**\n * Custom UI component for FileUploadPreview.\n * Defaults to and accepts same props as: https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/FileUploadPreview.tsx\n */\n FileUploadPreview: React.ComponentType<FileUploadPreviewProps<StreamChatGenerics>>;\n\n /** When false, CommandsButton will be hidden */\n hasCommands: boolean;\n /** When false, FileSelectorIcon will be hidden */\n hasFilePicker: boolean;\n /** When false, ImageSelectorIcon will be hidden */\n hasImagePicker: boolean;\n /**\n * Custom UI component for ImageUploadPreview.\n * Defaults to and accepts same props as: https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/ImageUploadPreview.tsx\n */\n ImageUploadPreview: React.ComponentType<ImageUploadPreviewProps<StreamChatGenerics>>;\n InputEditingStateHeader: React.ComponentType<InputEditingStateHeaderProps<StreamChatGenerics>>;\n InputGiphySearch: React.ComponentType<InputGiphySearchProps<StreamChatGenerics>>;\n InputReplyStateHeader: React.ComponentType<InputReplyStateHeaderProps<StreamChatGenerics>>;\n /** Limit on allowed number of files to attach at a time. */\n maxNumberOfFiles: number;\n /**\n * Custom UI component for more options button.\n *\n * Defaults to and accepts same props as: [MoreOptionsButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/more-options-button/)\n */\n MoreOptionsButton: React.ComponentType<MoreOptionsButtonProps<StreamChatGenerics>>;\n /** Limit on the number of lines in the text input before scrolling */\n numberOfLines: number;\n quotedMessage: boolean | MessageType<StreamChatGenerics>;\n /**\n * Custom UI component for send button.\n *\n * Defaults to and accepts same props as: [SendButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/send-button/)\n */\n SendButton: React.ComponentType<SendButtonProps<StreamChatGenerics>>;\n sendImageAsync: boolean;\n sendMessage: (message: Partial<StreamMessage<StreamChatGenerics>>) => Promise<void>;\n setQuotedMessageState: (message: MessageType<StreamChatGenerics>) => void;\n /**\n * Custom UI component to render checkbox with text (\"Also send to channel\") in Thread's input box.\n * When ticked, message will also be sent in parent channel.\n */\n ShowThreadMessageInChannelButton: React.ComponentType<{\n threadList?: boolean;\n }>;\n /**\n * Custom UI component to render upload progress indicator on attachment preview.\n *\n * **Default** [UploadProgressIndicator](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/UploadProgressIndicator.tsx)\n */\n UploadProgressIndicator: React.ComponentType<UploadProgressIndicatorProps>;\n /**\n * Additional props for underlying TextInput component. These props will be forwarded as it is to TextInput component.\n *\n * @see See https://reactnative.dev/docs/textinput#reference\n */\n additionalTextInputProps?: TextInputProps;\n /** Max number of suggestions to display in autocomplete list. Defaults to 10. */\n autoCompleteSuggestionsLimit?: number;\n /**\n * Mapping of input triggers to the outputs to be displayed by the AutoCompleteInput\n */\n autoCompleteTriggerSettings?: (\n settings: ACITriggerSettingsParams<StreamChatGenerics>,\n ) => TriggerSettings<StreamChatGenerics>;\n /**\n * Compress image with quality (from 0 to 1, where 1 is best quality).\n * On iOS, values larger than 0.8 don't produce a noticeable quality increase in most images,\n * while a value of 0.8 will reduce the file size by about half or less compared to a value of 1.\n * Image picker defaults to 0.8 for iOS and 1 for Android\n */\n compressImageQuality?: number;\n /**\n * Override file upload request\n *\n * @param file File object - { uri: '', name: '' }\n * @param channel Current channel object\n *\n * @overrideType Function\n */\n doDocUploadRequest?: (\n file: {\n name: string;\n size?: string | number;\n type?: string;\n uri?: string;\n },\n channel: ChannelContextValue<StreamChatGenerics>['channel'],\n ) => Promise<SendFileAPIResponse>;\n /**\n * Override image upload request\n *\n * @param file File object - { uri: '' }\n * @param channel Current channel object\n *\n * @overrideType Function\n */\n doImageUploadRequest?: (\n file: {\n name?: string;\n uri?: string;\n },\n channel: ChannelContextValue<StreamChatGenerics>['channel'],\n ) => Promise<SendFileAPIResponse>;\n\n /** Initial value to set on input */\n initialValue?: string;\n /**\n * Custom UI component for AutoCompleteInput.\n * Has access to all of [MessageInputContext](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/contexts/messageInputContext/MessageInputContext.tsx)\n */\n Input?: React.ComponentType<\n Omit<MessageInputProps<StreamChatGenerics>, 'Input'> &\n InputButtonsProps<StreamChatGenerics> & {\n getUsers: () => UserResponse<StreamChatGenerics>[];\n }\n >;\n /**\n * Custom UI component to override buttons on left side of input box\n * Defaults to [InputButtons](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/InputButtons.tsx),\n * which contain following components/buttons:\n *\n * - AttachButton\n * - CommandsButtom\n *\n * You have access to following prop functions:\n *\n * - closeAttachmentPicker\n * - openAttachmentPicker\n * - openCommandsPicker\n * - toggleAttachmentPicker\n */\n InputButtons?: React.ComponentType<InputButtonsProps<StreamChatGenerics>>;\n maxMessageLength?: number;\n mentionAllAppUsersEnabled?: boolean;\n /** Object containing filters/sort/options overrides for an @mention user query */\n mentionAllAppUsersQuery?: MentionAllAppUsersQuery<StreamChatGenerics>;\n /**\n * Callback that is called when the text input's text changes. Changed text is passed as a single string argument to the callback handler.\n */\n onChangeText?: (newText: string) => void;\n SendMessageDisallowedIndicator?: React.ComponentType;\n /**\n * ref for input setter function\n *\n * @param ref [Ref object](https://reactjs.org/docs/refs-and-the-dom.html) for underling `TextInput` component.\n *\n * @overrideType Function\n */\n setInputRef?: (ref: TextInput | null) => void;\n};\n\nexport type MessageInputContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = LocalMessageInputContext<StreamChatGenerics> &\n Omit<InputMessageInputContextValue<StreamChatGenerics>, 'sendMessage'>;\n\nexport const MessageInputContext = React.createContext(\n DEFAULT_BASE_CONTEXT_VALUE as MessageInputContextValue,\n);\n\nexport const MessageInputProvider = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n children,\n value,\n}: PropsWithChildren<{\n value: InputMessageInputContextValue<StreamChatGenerics>;\n}>) => {\n const { closePicker, openPicker, selectedPicker, setSelectedPicker } =\n useAttachmentPickerContext();\n const { appSettings, client, enableOfflineSupport } = useChatContext<StreamChatGenerics>();\n\n const getFileUploadConfig = () => {\n const fileConfig = appSettings?.app?.file_upload_config;\n if (fileConfig !== null || fileConfig !== undefined) {\n return fileConfig;\n } else {\n return {};\n }\n };\n\n const blockedFileExtensionTypes = getFileUploadConfig()?.blocked_file_extensions;\n const blockedFileMimeTypes = getFileUploadConfig()?.blocked_mime_types;\n\n const getImageUploadConfig = () => {\n const imageConfig = appSettings?.app?.image_upload_config;\n if (imageConfig !== null || imageConfig !== undefined) {\n return imageConfig;\n }\n return {};\n };\n\n const blockedImageExtensionTypes = getImageUploadConfig()?.blocked_file_extensions;\n const blockedImageMimeTypes = getImageUploadConfig()?.blocked_mime_types;\n\n const channelCapabities = useOwnCapabilitiesContext();\n\n const { channel, giphyEnabled } = useChannelContext<StreamChatGenerics>();\n const { thread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n const inputBoxRef = useRef<TextInput | null>(null);\n const sending = useRef(false);\n\n const [asyncIds, setAsyncIds] = useState<string[]>([]);\n const [asyncUploads, setAsyncUploads] = useState<{\n [key: string]: {\n state: string;\n url: string;\n };\n }>({});\n const [giphyActive, setGiphyActive] = useState(false);\n const [sendThreadMessageInChannel, setSendThreadMessageInChannel] = useState(false);\n const { editing, hasFilePicker, hasImagePicker, initialValue } = value;\n const {\n fileUploads,\n imageUploads,\n mentionedUsers,\n numberOfUploads,\n setFileUploads,\n setImageUploads,\n setMentionedUsers,\n setNumberOfUploads,\n setShowMoreOptions,\n setText,\n showMoreOptions,\n text,\n } = useMessageDetailsForState<StreamChatGenerics>(editing, initialValue);\n const { endsAt: cooldownEndsAt, start: startCooldown } = useCooldown<StreamChatGenerics>();\n\n const threadId = thread?.id;\n useEffect(() => {\n setSendThreadMessageInChannel(false);\n }, [threadId]);\n\n const appendText = (newText: string) => {\n setText((prevText) => `${prevText}${newText}`);\n };\n\n /** Checks if the message is valid or not. Accordingly we can enable/disable send button */\n const isValidMessage = () => {\n if (text && text.trim()) {\n return true;\n }\n\n const imagesAndFiles = [...imageUploads, ...fileUploads];\n if (enableOfflineSupport) {\n // Allow only if none of the attachments have unsupported status\n for (const file of imagesAndFiles) {\n if (file.state === FileState.NOT_SUPPORTED) {\n return false;\n }\n }\n\n return true;\n }\n\n for (const file of imagesAndFiles) {\n if (!file || file.state === FileState.UPLOAD_FAILED) {\n continue;\n }\n if (file.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n return false;\n }\n\n return true;\n }\n\n return false;\n };\n\n const onChange = (newText: string) => {\n if (sending.current) {\n return;\n }\n setText(newText);\n\n if (newText && channel && channelCapabities.sendTypingEvents) {\n logChatPromiseExecution(channel.keystroke(thread?.id), 'start typing event');\n }\n\n if (value.onChangeText) {\n value.onChangeText(newText);\n }\n };\n\n const openCommandsPicker = () => {\n appendText('/');\n if (inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n };\n\n const openMentionsPicker = () => {\n appendText('@');\n if (inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n };\n\n const openAttachmentPicker = () => {\n if (hasImagePicker) {\n Keyboard.dismiss();\n setSelectedPicker('images');\n openPicker();\n } else if (hasFilePicker) {\n pickFile();\n }\n };\n\n const closeAttachmentPicker = () => {\n setSelectedPicker(undefined);\n closePicker();\n };\n\n const toggleAttachmentPicker = () => {\n if (selectedPicker) {\n closeAttachmentPicker();\n } else {\n openAttachmentPicker();\n }\n };\n\n const onSelectItem = (item: UserResponse<StreamChatGenerics>) => {\n setMentionedUsers((prevMentionedUsers) => [...prevMentionedUsers, item.id]);\n };\n\n const pickFile = async () => {\n if (numberOfUploads >= value.maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return;\n }\n\n const result = await pickDocument({\n maxNumberOfFiles: value.maxNumberOfFiles - numberOfUploads,\n });\n if (!result.cancelled && result.docs) {\n result.docs.forEach((doc) => {\n /**\n * TODO: The current tight coupling of images to the image\n * picker does not allow images picked from the file picker\n * to be rendered in a preview via the uploadNewImage call.\n * This should be updated alongside allowing image a file\n * uploads together.\n */\n uploadNewFile(doc);\n });\n }\n };\n\n const removeFile = (id: string) => {\n if (fileUploads.some((file) => file.id === id)) {\n setFileUploads((prevFileUploads) => prevFileUploads.filter((file) => file.id !== id));\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n }\n };\n\n const removeImage = (id: string) => {\n if (imageUploads.some((image) => image.id === id)) {\n setImageUploads((prevImageUploads) => prevImageUploads.filter((image) => image.id !== id));\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n }\n };\n\n const resetInput = (pendingAttachments: Attachment<StreamChatGenerics>[] = []) => {\n setFileUploads([]);\n setGiphyActive(false);\n setShowMoreOptions(true);\n setImageUploads([]);\n setMentionedUsers([]);\n setNumberOfUploads(\n (prevNumberOfUploads) => prevNumberOfUploads - (pendingAttachments?.length || 0),\n );\n setText('');\n };\n\n const mapImageUploadToAttachment = (image: ImageUpload) => {\n const mime_type: string | boolean = lookup(image.file.filename as string);\n return {\n fallback: image.file.name,\n image_url: image.url,\n mime_type: mime_type ? mime_type : undefined,\n original_height: image.height,\n original_width: image.width,\n originalFile: image.file,\n type: 'image',\n } as Attachment;\n };\n\n const mapFileUploadToAttachment = (file: FileUpload) => {\n const mime_type: string | boolean = lookup(file.file.name as string);\n if (file.file.type?.startsWith('image/')) {\n return {\n fallback: file.file.name,\n image_url: file.url,\n mime_type: mime_type ? mime_type : undefined,\n originalFile: file.file,\n type: 'image',\n };\n } else if (file.file.type?.startsWith('audio/')) {\n return {\n asset_url: file.url || file.file.uri,\n duration: file.file.duration,\n file_size: file.file.size,\n mime_type: file.file.type,\n originalFile: file.file,\n title: file.file.name,\n type: 'audio',\n };\n } else if (file.file.type?.startsWith('video/')) {\n return {\n asset_url: file.url || file.file.uri,\n duration: file.file.duration,\n file_size: file.file.size,\n mime_type: file.file.type,\n originalFile: file.file,\n thumb_url: file.thumb_url,\n title: file.file.name,\n type: 'video',\n };\n } else {\n return {\n asset_url: file.url || file.file.uri,\n file_size: file.file.size,\n mime_type: file.file.type,\n originalFile: file.file,\n title: file.file.name,\n type: 'file',\n };\n }\n };\n\n // TODO: Figure out why this is async, as it doesn't await any promise.\n // eslint-disable-next-line require-await\n const sendMessage = async () => {\n if (sending.current) {\n return;\n }\n\n if (!channelCapabities.sendLinks && !!text.match(urlRegex)) {\n Alert.alert(t('Links are disabled'), t('Sending links is not allowed in this conversation'));\n\n return;\n }\n\n sending.current = true;\n\n startCooldown();\n\n const prevText = giphyEnabled && giphyActive ? `/giphy ${text}` : text;\n setText('');\n if (inputBoxRef.current) {\n inputBoxRef.current.clear();\n }\n\n const attachments = [] as Attachment<StreamChatGenerics>[];\n for (const image of imageUploads) {\n if (enableOfflineSupport) {\n if (image.state === FileState.NOT_SUPPORTED) {\n return;\n }\n attachments.push(mapImageUploadToAttachment(image));\n continue;\n }\n\n if ((!image || image.state === FileState.UPLOAD_FAILED) && !enableOfflineSupport) {\n continue;\n }\n\n if (image.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n if (value.sendImageAsync) {\n /**\n * If user hit send before image uploaded, push ID into a queue to later\n * be matched with the successful CDN response\n */\n setAsyncIds((prevAsyncIds) => [...prevAsyncIds, image.id]);\n } else {\n sending.current = false;\n return setText(prevText);\n }\n }\n\n // To get the mime type of the image from the file name and send it as an response for an image\n if (image.state === FileState.UPLOADED || image.state === FileState.FINISHED) {\n attachments.push(mapImageUploadToAttachment(image));\n }\n }\n\n for (const file of fileUploads) {\n if (enableOfflineSupport) {\n if (file.state === FileState.NOT_SUPPORTED) {\n return;\n }\n attachments.push(mapFileUploadToAttachment(file));\n continue;\n }\n\n if (!file || file.state === FileState.UPLOAD_FAILED) {\n continue;\n }\n\n if (file.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n sending.current = false;\n return;\n }\n\n if (file.state === FileState.UPLOADED || file.state === FileState.FINISHED) {\n attachments.push(mapFileUploadToAttachment(file));\n }\n }\n\n // Disallow sending message if its empty.\n if (!prevText && attachments.length === 0) {\n sending.current = false;\n return;\n }\n\n if (value.editing && !isEditingBoolean(value.editing)) {\n const updatedMessage = {\n ...value.editing,\n attachments,\n mentioned_users: mentionedUsers,\n quoted_message: undefined,\n text: prevText,\n } as Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0];\n\n // TODO: Remove this line and show an error when submit fails\n value.clearEditingState();\n\n const updateMessagePromise = value\n .editMessage(\n // @ts-ignore\n removeReservedFields(updatedMessage),\n )\n .then(value.clearEditingState);\n resetInput(attachments);\n logChatPromiseExecution(updateMessagePromise, 'update message');\n\n sending.current = false;\n } else {\n try {\n value.sendMessage({\n attachments,\n mentioned_users: uniq(mentionedUsers),\n /** Parent message id - in case of thread */\n parent_id: thread?.id,\n quoted_message_id:\n typeof value.quotedMessage === 'boolean' ? undefined : value.quotedMessage.id,\n show_in_channel: sendThreadMessageInChannel || undefined,\n text: prevText,\n } as unknown as StreamMessage<StreamChatGenerics>);\n\n value.clearQuotedMessageState();\n sending.current = false;\n resetInput(attachments);\n } catch (_error) {\n sending.current = false;\n if (value.quotedMessage && typeof value.quotedMessage !== 'boolean') {\n value.setQuotedMessageState(value.quotedMessage);\n }\n setText(prevText.slice(giphyEnabled && giphyActive ? 7 : 0)); // 7 because of '/giphy ' length\n console.log('Failed to send message');\n }\n }\n };\n\n const sendMessageAsync = (id: string) => {\n const image = asyncUploads[id];\n if (!image || image.state === FileState.UPLOAD_FAILED) {\n return;\n }\n\n if (image.state === FileState.UPLOADED || image.state === FileState.FINISHED) {\n const attachments = [\n {\n image_url: image.url,\n type: 'image',\n },\n ] as StreamMessage<StreamChatGenerics>['attachments'];\n\n startCooldown();\n try {\n value.sendMessage({\n attachments,\n mentioned_users: [],\n parent_id: thread?.id,\n quoted_message_id:\n typeof value.quotedMessage === 'boolean' ? undefined : value.quotedMessage.id,\n show_in_channel: sendThreadMessageInChannel || undefined,\n text: '',\n } as unknown as Partial<StreamMessage<StreamChatGenerics>>);\n\n setAsyncIds((prevAsyncIds) => prevAsyncIds.splice(prevAsyncIds.indexOf(id), 1));\n setAsyncUploads((prevAsyncUploads) => {\n delete prevAsyncUploads[id];\n return prevAsyncUploads;\n });\n\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n } catch (_error) {\n console.log('Failed');\n }\n }\n };\n\n const setInputBoxRef = (ref: TextInput | null) => {\n inputBoxRef.current = ref;\n if (value.setInputRef) {\n value.setInputRef(ref);\n }\n };\n\n const getTriggerSettings = () => {\n let triggerSettings: TriggerSettings<StreamChatGenerics> = {};\n if (channel) {\n if (value.autoCompleteTriggerSettings) {\n triggerSettings = value.autoCompleteTriggerSettings({\n channel,\n client,\n onMentionSelectItem: onSelectItem,\n });\n } else {\n triggerSettings = ACITriggerSettings<StreamChatGenerics>({\n channel,\n client,\n onMentionSelectItem: onSelectItem,\n });\n }\n }\n return triggerSettings;\n };\n\n const triggerSettings = getTriggerSettings();\n\n const updateMessage = async () => {\n try {\n if (!isEditingBoolean(value.editing)) {\n await client.updateMessage({\n ...value.editing,\n quoted_message: undefined,\n text: giphyEnabled && giphyActive ? `/giphy ${text}` : text,\n } as Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0]);\n }\n\n resetInput();\n value.clearEditingState();\n } catch (error) {\n console.log(error);\n }\n };\n\n const regExcondition = /File (extension \\.\\w{2,4}|type \\S+) is not supported/;\n\n const getUploadSetStateAction = <UploadType extends ImageUpload | FileUpload>(\n id: string,\n fileState: FileStateValue,\n extraData: Partial<UploadType> = {},\n ): React.SetStateAction<UploadType[]> => {\n const uploads: (prevUploads: UploadType[]) => UploadType[] = (prevUploads: UploadType[]) =>\n prevUploads.map((prevUpload) => {\n if (prevUpload.id === id) {\n return {\n ...prevUpload,\n ...extraData,\n state: fileState,\n };\n }\n return prevUpload;\n });\n\n return uploads;\n };\n\n const handleFileOrImageUploadError = (error: unknown, isImageError: boolean, id: string) => {\n if (isImageError) {\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n if (error instanceof Error) {\n if (regExcondition.test(error.message)) {\n return setImageUploads(getUploadSetStateAction(id, FileState.NOT_SUPPORTED));\n }\n\n return setImageUploads(getUploadSetStateAction(id, FileState.UPLOAD_FAILED));\n }\n } else {\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n\n if (error instanceof Error) {\n if (regExcondition.test(error.message)) {\n return setFileUploads(getUploadSetStateAction(id, FileState.NOT_SUPPORTED));\n }\n return setFileUploads(getUploadSetStateAction(id, FileState.UPLOAD_FAILED));\n }\n }\n };\n\n const uploadFile = async ({ newFile }: { newFile: FileUpload }) => {\n const { file, id } = newFile;\n\n setFileUploads(getUploadSetStateAction(id, FileState.UPLOADING));\n\n let response: Partial<SendFileAPIResponse> = {};\n try {\n if (value.doDocUploadRequest) {\n response = await value.doDocUploadRequest(file, channel);\n } else if (channel && file.uri) {\n response = await channel.sendFile(file.uri, file.name, file.type);\n }\n const extraData: Partial<FileUpload> = { thumb_url: response.thumb_url, url: response.file };\n setFileUploads(getUploadSetStateAction(id, FileState.UPLOADED, extraData));\n } catch (error: unknown) {\n handleFileOrImageUploadError(error, false, id);\n }\n };\n\n const uploadImage = async ({ newImage }: { newImage: ImageUpload }) => {\n const { file, id } = newImage || {};\n\n if (!file) {\n return;\n }\n\n let response = {} as SendFileAPIResponse;\n\n try {\n /**\n * Expo now uses the assets-library which is also how remote\n * native files are presented. We now return a file id from Expo\n * only, if that file id exits we call getLocalAssetUri to download\n * the asset for expo before uploading it. We do the same for native\n * if the uri includes assets-library, this uses the CameraRoll.save\n * function to also create a local uri.\n */\n const getLocalUri = async () => {\n if (file.id) {\n return await getLocalAssetUri(file.id);\n } else if (file.uri?.match(/assets-library/)) {\n return await getLocalAssetUri(file.uri);\n }\n return file.uri;\n };\n const uri = file.name || (await getLocalUri()) || '';\n /**\n * We skip compression if:\n * - the file is from the camera as that should already be compressed\n * - the file has not 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 (file.source === 'camera' ||\n !file.height ||\n !file.width ||\n typeof value.compressImageQuality !== 'number' ||\n value.compressImageQuality === 1\n ? uri\n : compressImage({\n compressImageQuality: value.compressImageQuality,\n height: file.height,\n uri,\n width: file.width,\n }));\n const filename = uri.replace(/^(file:\\/\\/|content:\\/\\/|assets-library:\\/\\/)/, '');\n const contentType = lookup(filename) || 'multipart/form-data';\n if (value.doImageUploadRequest) {\n response = await value.doImageUploadRequest(file, channel);\n } else if (compressedUri && channel) {\n if (value.sendImageAsync) {\n channel.sendImage(compressedUri, file.filename, contentType).then((res) => {\n if (asyncIds.includes(id)) {\n // Evaluates to true if user hit send before image successfully uploaded\n setAsyncUploads((prevAsyncUploads) => {\n prevAsyncUploads[id] = {\n ...prevAsyncUploads[id],\n state: FileState.UPLOADED,\n url: res.file,\n };\n return prevAsyncUploads;\n });\n } else {\n const newImageUploads = getUploadSetStateAction<ImageUpload>(id, FileState.UPLOADED, {\n url: res.file,\n });\n setImageUploads(newImageUploads);\n }\n });\n } else {\n response = await channel.sendImage(compressedUri, file.filename, contentType);\n }\n }\n\n if (Object.keys(response).length) {\n const newImageUploads = getUploadSetStateAction<ImageUpload>(id, FileState.UPLOADED, {\n height: file.height,\n url: response.file,\n width: file.width,\n });\n setImageUploads(newImageUploads);\n }\n } catch (error) {\n handleFileOrImageUploadError(error, true, id);\n }\n };\n\n const uploadNewFile = async (file: {\n name: string;\n size?: number | string;\n type?: string;\n uri?: string;\n }) => {\n const id: string = generateRandomId();\n const mimeType: string | boolean = lookup(file.name);\n\n const isBlockedFileExtension: boolean | undefined = blockedFileExtensionTypes?.some(\n (fileExtensionType: string) => file.name?.includes(fileExtensionType),\n );\n const isBlockedFileMimeType: boolean | undefined = blockedFileMimeTypes?.some(\n (mimeType: string) => file.name?.includes(mimeType),\n );\n\n const fileState =\n isBlockedFileExtension || isBlockedFileMimeType\n ? FileState.NOT_SUPPORTED\n : FileState.UPLOADING;\n\n const newFile: FileUpload = {\n duration: 0,\n file: { ...file, type: mimeType || file?.type },\n id,\n paused: true,\n progress: 0,\n state: fileState,\n };\n\n await Promise.all([\n setFileUploads((prevFileUploads) => prevFileUploads.concat([newFile])),\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads + 1),\n ]);\n\n if (!isBlockedFileExtension) {\n uploadFile({ newFile });\n }\n };\n\n const uploadNewImage = async (image: Partial<Asset>) => {\n const id = generateRandomId();\n\n const isBlockedImageMimeType = blockedImageMimeTypes?.some((mimeType: string) =>\n image.uri?.includes(mimeType),\n );\n\n const isBlockedImageExtension = blockedImageExtensionTypes?.some((imageExtensionType: string) =>\n image.uri?.includes(imageExtensionType),\n );\n\n const imageState =\n isBlockedImageExtension || isBlockedImageMimeType\n ? FileState.NOT_SUPPORTED\n : FileState.UPLOADING;\n\n const newImage: ImageUpload = {\n file: image,\n height: image.height,\n id,\n state: imageState,\n url: image.uri,\n width: image.width,\n };\n\n await Promise.all([\n setImageUploads((prevImageUploads) => prevImageUploads.concat([newImage])),\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads + 1),\n ]);\n\n if (!isBlockedImageExtension) {\n uploadImage({ newImage });\n }\n };\n\n const messageInputContext = useCreateMessageInputContext({\n appendText,\n asyncIds,\n asyncUploads,\n closeAttachmentPicker,\n cooldownEndsAt,\n fileUploads,\n giphyActive,\n imageUploads,\n inputBoxRef,\n isValidMessage,\n mentionedUsers,\n numberOfUploads,\n onChange,\n onSelectItem,\n openAttachmentPicker,\n openCommandsPicker,\n openFilePicker: pickFile,\n openMentionsPicker,\n pickFile,\n removeFile,\n removeImage,\n resetInput,\n selectedPicker,\n sending,\n sendMessageAsync,\n sendThreadMessageInChannel,\n setAsyncIds,\n setAsyncUploads,\n setFileUploads,\n setGiphyActive,\n setImageUploads,\n setInputBoxRef,\n setMentionedUsers,\n setNumberOfUploads,\n setSendThreadMessageInChannel,\n setShowMoreOptions,\n setText,\n showMoreOptions,\n text,\n thread,\n toggleAttachmentPicker,\n triggerSettings,\n updateMessage,\n uploadFile,\n uploadImage,\n uploadNewFile,\n uploadNewImage,\n ...value,\n sendMessage, // overriding the originally passed in sendMessage\n });\n\n return (\n <MessageInputContext.Provider\n value={messageInputContext as unknown as MessageInputContextValue}\n >\n {children}\n </MessageInputContext.Provider>\n );\n};\n\nexport const useMessageInputContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const contextValue = useContext(\n MessageInputContext,\n ) as unknown as MessageInputContextValue<StreamChatGenerics>;\n\n if (contextValue === DEFAULT_BASE_CONTEXT_VALUE && !isTestEnvironment()) {\n throw new Error(\n `The useMessageInputContext hook was called outside of the MessageInputContext provider. Make sure you have configured Channel component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#channel`,\n );\n }\n\n return contextValue;\n};\n\n/**\n * Typescript currently does not support partial inference so if MessageInputContext\n * typing is desired while using the HOC withMessageInputContext the Props for the\n * wrapped component must be provided as the first generic.\n */\nexport const withMessageInputContext = <\n P extends UnknownType,\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<P>,\n): React.FC<Omit<P, keyof MessageInputContextValue<StreamChatGenerics>>> => {\n const WithMessageInputContextComponent = (\n props: Omit<P, keyof MessageInputContextValue<StreamChatGenerics>>,\n ) => {\n const messageInputContext = useMessageInputContext<StreamChatGenerics>();\n\n return <Component {...(props as P)} {...messageInputContext} />;\n };\n WithMessageInputContextComponent.displayName = `WithMessageInputContext${getDisplayName(\n Component,\n )}`;\n return WithMessageInputContextComponent;\n};\n"]}
1
+ {"version":3,"sources":["MessageInputContext.tsx"],"names":["MessageInputContext","React","createContext","DEFAULT_BASE_CONTEXT_VALUE","MessageInputProvider","children","value","closePicker","openPicker","selectedPicker","setSelectedPicker","appSettings","client","enableOfflineSupport","getFileUploadConfig","fileConfig","app","file_upload_config","undefined","blockedFileExtensionTypes","blocked_file_extensions","blockedFileMimeTypes","blocked_mime_types","getImageUploadConfig","imageConfig","image_upload_config","blockedImageExtensionTypes","blockedImageMimeTypes","channelCapabities","channel","giphyEnabled","thread","t","inputBoxRef","sending","asyncIds","setAsyncIds","asyncUploads","setAsyncUploads","giphyActive","setGiphyActive","sendThreadMessageInChannel","setSendThreadMessageInChannel","editing","hasFilePicker","hasImagePicker","initialValue","fileUploads","imageUploads","mentionedUsers","numberOfUploads","setFileUploads","setImageUploads","setMentionedUsers","setNumberOfUploads","setShowMoreOptions","setText","showMoreOptions","text","cooldownEndsAt","endsAt","startCooldown","start","threadId","id","appendText","newText","prevText","isValidMessage","trim","imagesAndFiles","file","state","FileState","NOT_SUPPORTED","UPLOAD_FAILED","UPLOADING","onChange","current","sendTypingEvents","keystroke","onChangeText","openCommandsPicker","focus","openMentionsPicker","openAttachmentPicker","Keyboard","dismiss","pickFile","closeAttachmentPicker","toggleAttachmentPicker","onSelectItem","item","prevMentionedUsers","pickDocument","console","log","maxNumberOfFiles","Alert","alert","result","cancelled","docs","forEach","doc","uploadNewFile","removeFile","some","prevFileUploads","filter","prevNumberOfUploads","removeImage","image","prevImageUploads","resetInput","pendingAttachments","length","mapImageUploadToAttachment","mime_type","filename","fallback","name","image_url","url","original_height","height","original_width","width","originalFile","type","mapFileUploadToAttachment","startsWith","asset_url","uri","duration","file_size","size","title","thumb_url","sendMessage","sendLinks","match","urlRegex","clear","attachments","push","sendImageAsync","prevAsyncIds","UPLOADED","FINISHED","updatedMessage","mentioned_users","quoted_message","clearEditingState","updateMessagePromise","editMessage","then","parent_id","quoted_message_id","quotedMessage","show_in_channel","clearQuotedMessageState","_error","setQuotedMessageState","slice","sendMessageAsync","splice","indexOf","prevAsyncUploads","setInputBoxRef","ref","setInputRef","getTriggerSettings","triggerSettings","autoCompleteTriggerSettings","onMentionSelectItem","updateMessage","regExcondition","getUploadSetStateAction","fileState","extraData","uploads","prevUploads","map","prevUpload","handleFileOrImageUploadError","error","isImageError","Error","test","message","uploadFile","newFile","response","doDocUploadRequest","sendFile","uploadImage","newImage","getLocalUri","source","compressImageQuality","compressedUri","replace","contentType","doImageUploadRequest","sendImage","res","includes","newImageUploads","Object","keys","mimeType","isBlockedFileExtension","fileExtensionType","isBlockedFileMimeType","paused","progress","Promise","all","concat","uploadNewImage","isBlockedImageMimeType","isBlockedImageExtension","imageExtensionType","imageState","messageInputContext","openFilePicker","useMessageInputContext","contextValue","withMessageInputContext","Component","WithMessageInputContextComponent","props","displayName"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, useContext, useEffect, useRef, useState } from 'react';\n\nimport { Alert, Keyboard } from 'react-native';\n\nimport type { TextInput, TextInputProps } from 'react-native';\n\nimport uniq from 'lodash/uniq';\nimport { lookup } from 'mime-types';\nimport {\n Attachment,\n logChatPromiseExecution,\n SendFileAPIResponse,\n StreamChat,\n Message as StreamMessage,\n UserFilters,\n UserOptions,\n UserResponse,\n UserSort,\n} from 'stream-chat';\n\nimport { useCreateMessageInputContext } from './hooks/useCreateMessageInputContext';\nimport { isEditingBoolean, useMessageDetailsForState } from './hooks/useMessageDetailsForState';\n\nimport type { AttachButtonProps } from '../../components/MessageInput/AttachButton';\nimport type { CommandsButtonProps } from '../../components/MessageInput/CommandsButton';\nimport type { InputEditingStateHeaderProps } from '../../components/MessageInput/components/InputEditingStateHeader';\nimport type { InputGiphySearchProps } from '../../components/MessageInput/components/InputGiphySearch';\nimport type { InputReplyStateHeaderProps } from '../../components/MessageInput/components/InputReplyStateHeader';\nimport type { CooldownTimerProps } from '../../components/MessageInput/CooldownTimer';\nimport type { FileUploadPreviewProps } from '../../components/MessageInput/FileUploadPreview';\nimport { useCooldown } from '../../components/MessageInput/hooks/useCooldown';\nimport type { ImageUploadPreviewProps } from '../../components/MessageInput/ImageUploadPreview';\nimport type { InputButtonsProps } from '../../components/MessageInput/InputButtons';\nimport type { MessageInputProps } from '../../components/MessageInput/MessageInput';\nimport type { MoreOptionsButtonProps } from '../../components/MessageInput/MoreOptionsButton';\nimport type { SendButtonProps } from '../../components/MessageInput/SendButton';\nimport type { UploadProgressIndicatorProps } from '../../components/MessageInput/UploadProgressIndicator';\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport { compressImage, getLocalAssetUri, pickDocument } from '../../native';\nimport type { Asset, DefaultStreamChatGenerics, File, UnknownType } from '../../types/types';\nimport { removeReservedFields } from '../../utils/removeReservedFields';\nimport {\n ACITriggerSettings,\n ACITriggerSettingsParams,\n FileState,\n FileStateValue,\n generateRandomId,\n TriggerSettings,\n urlRegex,\n} from '../../utils/utils';\nimport { useAttachmentPickerContext } from '../attachmentPickerContext/AttachmentPickerContext';\nimport { ChannelContextValue, useChannelContext } from '../channelContext/ChannelContext';\nimport { useChatContext } from '../chatContext/ChatContext';\nimport { useOwnCapabilitiesContext } from '../ownCapabilitiesContext/OwnCapabilitiesContext';\nimport { useThreadContext } from '../threadContext/ThreadContext';\nimport { useTranslationContext } from '../translationContext/TranslationContext';\nimport { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';\n\nimport { getDisplayName } from '../utils/getDisplayName';\nimport { isTestEnvironment } from '../utils/isTestEnvironment';\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 name?: string;\n };\n id: string;\n state: FileStateValue;\n height?: number;\n url?: string;\n width?: number;\n};\n\nexport type MentionAllAppUsersQuery<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n filters?: UserFilters<StreamChatGenerics>;\n options?: UserOptions;\n sort?: UserSort<StreamChatGenerics>;\n};\n\nexport type LocalMessageInputContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n appendText: (newText: string) => void;\n asyncIds: string[];\n asyncUploads: {\n [key: string]: {\n state: string;\n url: string;\n };\n };\n closeAttachmentPicker: () => void;\n /** The time at which the active cooldown will end */\n cooldownEndsAt: Date;\n /**\n * An array of file objects which are set for upload. It has the following structure:\n *\n * ```json\n * [\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_1\",\n * \"state\": \"uploading\" // or \"finished\",\n * \"url\": \"https://url1.com\",\n * },\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_2\",\n * \"state\": \"uploading\" // or \"finished\",\n * \"url\": \"https://url1.com\",\n * },\n * ]\n * ```\n *\n */\n fileUploads: FileUpload[];\n giphyActive: boolean;\n /**\n * An array of image objects which are set for upload. It has the following structure:\n *\n * ```json\n * [\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_1\",\n * \"state\": \"uploading\" // or \"finished\",\n * },\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_2\",\n * \"state\": \"uploading\" // or \"finished\",\n * },\n * ]\n * ```\n *\n */\n imageUploads: ImageUpload[];\n inputBoxRef: React.MutableRefObject<TextInput | null>;\n isValidMessage: () => boolean;\n mentionedUsers: string[];\n numberOfUploads: number;\n onChange: (newText: string) => void;\n onSelectItem: (item: UserResponse<StreamChatGenerics>) => void;\n openAttachmentPicker: () => void;\n openCommandsPicker: () => void;\n openFilePicker: () => void;\n openMentionsPicker: () => void;\n pickFile: () => Promise<void>;\n /**\n * Function for removing a file from the upload preview\n *\n * @param id string ID of file in `fileUploads` object in state of MessageInput\n */\n removeFile: (id: string) => void;\n /**\n * Function for removing an image from the upload preview\n *\n * @param id string ID of image in `imageUploads` object in state of MessageInput\n */\n removeImage: (id: string) => void;\n resetInput: (pendingAttachments?: Attachment<StreamChatGenerics>[]) => void;\n selectedPicker: string | undefined;\n sending: React.MutableRefObject<boolean>;\n sendMessage: () => Promise<void>;\n sendMessageAsync: (id: string) => void;\n sendThreadMessageInChannel: boolean;\n setAsyncIds: React.Dispatch<React.SetStateAction<string[]>>;\n setAsyncUploads: React.Dispatch<\n React.SetStateAction<{\n [key: string]: {\n state: string;\n url: string;\n };\n }>\n >;\n setFileUploads: React.Dispatch<React.SetStateAction<FileUpload[]>>;\n setGiphyActive: React.Dispatch<React.SetStateAction<boolean>>;\n setImageUploads: React.Dispatch<React.SetStateAction<ImageUpload[]>>;\n /**\n * Ref callback to set reference on input box\n */\n setInputBoxRef: (ref: TextInput | null) => void;\n setMentionedUsers: React.Dispatch<React.SetStateAction<string[]>>;\n setNumberOfUploads: React.Dispatch<React.SetStateAction<number>>;\n setSendThreadMessageInChannel: React.Dispatch<React.SetStateAction<boolean>>;\n setShowMoreOptions: React.Dispatch<React.SetStateAction<boolean>>;\n setText: React.Dispatch<React.SetStateAction<string>>;\n showMoreOptions: boolean;\n /**\n * Text value of the TextInput\n */\n text: string;\n toggleAttachmentPicker: () => void;\n /**\n * Mapping of input triggers to the outputs to be displayed by the AutoCompleteInput\n */\n triggerSettings: TriggerSettings<StreamChatGenerics>;\n updateMessage: () => Promise<void>;\n /** Function for attempting to upload a file */\n uploadFile: ({ newFile }: { newFile: FileUpload }) => Promise<void>;\n /** Function for attempting to upload an image */\n uploadImage: ({ newImage }: { newImage: ImageUpload }) => Promise<void>;\n uploadNewFile: (file: File) => Promise<void>;\n uploadNewImage: (image: Partial<Asset>) => Promise<void>;\n};\n\nexport type InputMessageInputContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Custom UI component for attach button.\n *\n * Defaults to and accepts same props as: [AttachButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/attach-button/)\n */\n AttachButton: React.ComponentType<AttachButtonProps<StreamChatGenerics>>;\n\n clearEditingState: () => void;\n clearQuotedMessageState: () => void;\n /**\n * Custom UI component for commands button.\n *\n * Defaults to and accepts same props as: [CommandsButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/commands-button/)\n */\n CommandsButton: React.ComponentType<CommandsButtonProps<StreamChatGenerics>>;\n /**\n * Custom UI component to display the remaining cooldown a user will have to wait before\n * being allowed to send another message. This component is displayed in place of the\n * send button for the MessageInput component.\n *\n * **default** [CooldownTimer](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/CooldownTimer.tsx)\n */\n CooldownTimer: React.ComponentType<CooldownTimerProps>;\n editing: boolean | MessageType<StreamChatGenerics>;\n editMessage: StreamChat<StreamChatGenerics>['updateMessage'];\n\n /**\n * Custom UI component for FileUploadPreview.\n * Defaults to and accepts same props as: https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/FileUploadPreview.tsx\n */\n FileUploadPreview: React.ComponentType<FileUploadPreviewProps<StreamChatGenerics>>;\n\n /** When false, CommandsButton will be hidden */\n hasCommands: boolean;\n /** When false, FileSelectorIcon will be hidden */\n hasFilePicker: boolean;\n /** When false, ImageSelectorIcon will be hidden */\n hasImagePicker: boolean;\n /**\n * Custom UI component for ImageUploadPreview.\n * Defaults to and accepts same props as: https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/ImageUploadPreview.tsx\n */\n ImageUploadPreview: React.ComponentType<ImageUploadPreviewProps<StreamChatGenerics>>;\n InputEditingStateHeader: React.ComponentType<InputEditingStateHeaderProps<StreamChatGenerics>>;\n InputGiphySearch: React.ComponentType<InputGiphySearchProps<StreamChatGenerics>>;\n InputReplyStateHeader: React.ComponentType<InputReplyStateHeaderProps<StreamChatGenerics>>;\n /** Limit on allowed number of files to attach at a time. */\n maxNumberOfFiles: number;\n /**\n * Custom UI component for more options button.\n *\n * Defaults to and accepts same props as: [MoreOptionsButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/more-options-button/)\n */\n MoreOptionsButton: React.ComponentType<MoreOptionsButtonProps<StreamChatGenerics>>;\n /** Limit on the number of lines in the text input before scrolling */\n numberOfLines: number;\n quotedMessage: boolean | MessageType<StreamChatGenerics>;\n /**\n * Custom UI component for send button.\n *\n * Defaults to and accepts same props as: [SendButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/send-button/)\n */\n SendButton: React.ComponentType<SendButtonProps<StreamChatGenerics>>;\n sendImageAsync: boolean;\n sendMessage: (message: Partial<StreamMessage<StreamChatGenerics>>) => Promise<void>;\n setQuotedMessageState: (message: MessageType<StreamChatGenerics>) => void;\n /**\n * Custom UI component to render checkbox with text (\"Also send to channel\") in Thread's input box.\n * When ticked, message will also be sent in parent channel.\n */\n ShowThreadMessageInChannelButton: React.ComponentType<{\n threadList?: boolean;\n }>;\n /**\n * Custom UI component to render upload progress indicator on attachment preview.\n *\n * **Default** [UploadProgressIndicator](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/UploadProgressIndicator.tsx)\n */\n UploadProgressIndicator: React.ComponentType<UploadProgressIndicatorProps>;\n /**\n * Additional props for underlying TextInput component. These props will be forwarded as it is to TextInput component.\n *\n * @see See https://reactnative.dev/docs/textinput#reference\n */\n additionalTextInputProps?: TextInputProps;\n /** Max number of suggestions to display in autocomplete list. Defaults to 10. */\n autoCompleteSuggestionsLimit?: number;\n /**\n * Mapping of input triggers to the outputs to be displayed by the AutoCompleteInput\n */\n autoCompleteTriggerSettings?: (\n settings: ACITriggerSettingsParams<StreamChatGenerics>,\n ) => TriggerSettings<StreamChatGenerics>;\n /**\n * Compress image with quality (from 0 to 1, where 1 is best quality).\n * On iOS, values larger than 0.8 don't produce a noticeable quality increase in most images,\n * while a value of 0.8 will reduce the file size by about half or less compared to a value of 1.\n * Image picker defaults to 0.8 for iOS and 1 for Android\n */\n compressImageQuality?: number;\n /**\n * Override file upload request\n *\n * @param file File object - { uri: '', name: '' }\n * @param channel Current channel object\n *\n * @overrideType Function\n */\n doDocUploadRequest?: (\n file: {\n name: string;\n size?: string | number;\n type?: string;\n uri?: string;\n },\n channel: ChannelContextValue<StreamChatGenerics>['channel'],\n ) => Promise<SendFileAPIResponse>;\n /**\n * Override image upload request\n *\n * @param file File object - { uri: '' }\n * @param channel Current channel object\n *\n * @overrideType Function\n */\n doImageUploadRequest?: (\n file: {\n name?: string;\n uri?: string;\n },\n channel: ChannelContextValue<StreamChatGenerics>['channel'],\n ) => Promise<SendFileAPIResponse>;\n\n /** Initial value to set on input */\n initialValue?: string;\n /**\n * Custom UI component for AutoCompleteInput.\n * Has access to all of [MessageInputContext](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/contexts/messageInputContext/MessageInputContext.tsx)\n */\n Input?: React.ComponentType<\n Omit<MessageInputProps<StreamChatGenerics>, 'Input'> &\n InputButtonsProps<StreamChatGenerics> & {\n getUsers: () => UserResponse<StreamChatGenerics>[];\n }\n >;\n /**\n * Custom UI component to override buttons on left side of input box\n * Defaults to [InputButtons](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/InputButtons.tsx),\n * which contain following components/buttons:\n *\n * - AttachButton\n * - CommandsButtom\n *\n * You have access to following prop functions:\n *\n * - closeAttachmentPicker\n * - openAttachmentPicker\n * - openCommandsPicker\n * - toggleAttachmentPicker\n */\n InputButtons?: React.ComponentType<InputButtonsProps<StreamChatGenerics>>;\n maxMessageLength?: number;\n mentionAllAppUsersEnabled?: boolean;\n /** Object containing filters/sort/options overrides for an @mention user query */\n mentionAllAppUsersQuery?: MentionAllAppUsersQuery<StreamChatGenerics>;\n /**\n * Callback that is called when the text input's text changes. Changed text is passed as a single string argument to the callback handler.\n */\n onChangeText?: (newText: string) => void;\n SendMessageDisallowedIndicator?: React.ComponentType;\n /**\n * ref for input setter function\n *\n * @param ref [Ref object](https://reactjs.org/docs/refs-and-the-dom.html) for underling `TextInput` component.\n *\n * @overrideType Function\n */\n setInputRef?: (ref: TextInput | null) => void;\n};\n\nexport type MessageInputContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = LocalMessageInputContext<StreamChatGenerics> &\n Omit<InputMessageInputContextValue<StreamChatGenerics>, 'sendMessage'>;\n\nexport const MessageInputContext = React.createContext(\n DEFAULT_BASE_CONTEXT_VALUE as MessageInputContextValue,\n);\n\nexport const MessageInputProvider = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n children,\n value,\n}: PropsWithChildren<{\n value: InputMessageInputContextValue<StreamChatGenerics>;\n}>) => {\n const { closePicker, openPicker, selectedPicker, setSelectedPicker } =\n useAttachmentPickerContext();\n const { appSettings, client, enableOfflineSupport } = useChatContext<StreamChatGenerics>();\n\n const getFileUploadConfig = () => {\n const fileConfig = appSettings?.app?.file_upload_config;\n if (fileConfig !== null || fileConfig !== undefined) {\n return fileConfig;\n } else {\n return {};\n }\n };\n\n const blockedFileExtensionTypes = getFileUploadConfig()?.blocked_file_extensions;\n const blockedFileMimeTypes = getFileUploadConfig()?.blocked_mime_types;\n\n const getImageUploadConfig = () => {\n const imageConfig = appSettings?.app?.image_upload_config;\n if (imageConfig !== null || imageConfig !== undefined) {\n return imageConfig;\n }\n return {};\n };\n\n const blockedImageExtensionTypes = getImageUploadConfig()?.blocked_file_extensions;\n const blockedImageMimeTypes = getImageUploadConfig()?.blocked_mime_types;\n\n const channelCapabities = useOwnCapabilitiesContext();\n\n const { channel, giphyEnabled } = useChannelContext<StreamChatGenerics>();\n const { thread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n const inputBoxRef = useRef<TextInput | null>(null);\n const sending = useRef(false);\n\n const [asyncIds, setAsyncIds] = useState<string[]>([]);\n const [asyncUploads, setAsyncUploads] = useState<{\n [key: string]: {\n state: string;\n url: string;\n };\n }>({});\n const [giphyActive, setGiphyActive] = useState(false);\n const [sendThreadMessageInChannel, setSendThreadMessageInChannel] = useState(false);\n const { editing, hasFilePicker, hasImagePicker, initialValue } = value;\n const {\n fileUploads,\n imageUploads,\n mentionedUsers,\n numberOfUploads,\n setFileUploads,\n setImageUploads,\n setMentionedUsers,\n setNumberOfUploads,\n setShowMoreOptions,\n setText,\n showMoreOptions,\n text,\n } = useMessageDetailsForState<StreamChatGenerics>(editing, initialValue);\n const { endsAt: cooldownEndsAt, start: startCooldown } = useCooldown<StreamChatGenerics>();\n\n const threadId = thread?.id;\n useEffect(() => {\n setSendThreadMessageInChannel(false);\n }, [threadId]);\n\n const appendText = (newText: string) => {\n setText((prevText) => `${prevText}${newText}`);\n };\n\n /** Checks if the message is valid or not. Accordingly we can enable/disable send button */\n const isValidMessage = () => {\n if (text && text.trim()) {\n return true;\n }\n\n const imagesAndFiles = [...imageUploads, ...fileUploads];\n if (enableOfflineSupport) {\n // Allow only if none of the attachments have unsupported status\n for (const file of imagesAndFiles) {\n if (file.state === FileState.NOT_SUPPORTED) {\n return false;\n }\n }\n\n return true;\n }\n\n for (const file of imagesAndFiles) {\n if (!file || file.state === FileState.UPLOAD_FAILED) {\n continue;\n }\n if (file.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n return false;\n }\n\n return true;\n }\n\n return false;\n };\n\n const onChange = (newText: string) => {\n if (sending.current) {\n return;\n }\n setText(newText);\n\n if (newText && channel && channelCapabities.sendTypingEvents) {\n logChatPromiseExecution(channel.keystroke(thread?.id), 'start typing event');\n }\n\n if (value.onChangeText) {\n value.onChangeText(newText);\n }\n };\n\n const openCommandsPicker = () => {\n appendText('/');\n if (inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n };\n\n const openMentionsPicker = () => {\n appendText('@');\n if (inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n };\n\n const openAttachmentPicker = () => {\n if (hasImagePicker) {\n Keyboard.dismiss();\n setSelectedPicker('images');\n openPicker();\n } else if (hasFilePicker) {\n pickFile();\n }\n };\n\n const closeAttachmentPicker = () => {\n setSelectedPicker(undefined);\n closePicker();\n };\n\n const toggleAttachmentPicker = () => {\n if (selectedPicker) {\n closeAttachmentPicker();\n } else {\n openAttachmentPicker();\n }\n };\n\n const onSelectItem = (item: UserResponse<StreamChatGenerics>) => {\n setMentionedUsers((prevMentionedUsers) => [...prevMentionedUsers, item.id]);\n };\n\n const pickFile = async () => {\n if (pickDocument === null) {\n console.log(\n 'The file picker is not installed. Check our Getting Started documentation to install it.',\n );\n return;\n }\n\n if (numberOfUploads >= value.maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return;\n }\n\n const result = await pickDocument({\n maxNumberOfFiles: value.maxNumberOfFiles - numberOfUploads,\n });\n if (!result.cancelled && result.docs) {\n result.docs.forEach((doc) => {\n /**\n * TODO: The current tight coupling of images to the image\n * picker does not allow images picked from the file picker\n * to be rendered in a preview via the uploadNewImage call.\n * This should be updated alongside allowing image a file\n * uploads together.\n */\n uploadNewFile(doc);\n });\n }\n };\n\n const removeFile = (id: string) => {\n if (fileUploads.some((file) => file.id === id)) {\n setFileUploads((prevFileUploads) => prevFileUploads.filter((file) => file.id !== id));\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n }\n };\n\n const removeImage = (id: string) => {\n if (imageUploads.some((image) => image.id === id)) {\n setImageUploads((prevImageUploads) => prevImageUploads.filter((image) => image.id !== id));\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n }\n };\n\n const resetInput = (pendingAttachments: Attachment<StreamChatGenerics>[] = []) => {\n setFileUploads([]);\n setGiphyActive(false);\n setShowMoreOptions(true);\n setImageUploads([]);\n setMentionedUsers([]);\n setNumberOfUploads(\n (prevNumberOfUploads) => prevNumberOfUploads - (pendingAttachments?.length || 0),\n );\n setText('');\n };\n\n const mapImageUploadToAttachment = (image: ImageUpload) => {\n const mime_type: string | boolean = lookup(image.file.filename as string);\n return {\n fallback: image.file.name,\n image_url: image.url,\n mime_type: mime_type ? mime_type : undefined,\n original_height: image.height,\n original_width: image.width,\n originalFile: image.file,\n type: 'image',\n } as Attachment;\n };\n\n const mapFileUploadToAttachment = (file: FileUpload) => {\n const mime_type: string | boolean = lookup(file.file.name as string);\n if (file.file.type?.startsWith('image/')) {\n return {\n fallback: file.file.name,\n image_url: file.url,\n mime_type: mime_type ? mime_type : undefined,\n originalFile: file.file,\n type: 'image',\n };\n } else if (file.file.type?.startsWith('audio/')) {\n return {\n asset_url: file.url || file.file.uri,\n duration: file.file.duration,\n file_size: file.file.size,\n mime_type: file.file.type,\n originalFile: file.file,\n title: file.file.name,\n type: 'audio',\n };\n } else if (file.file.type?.startsWith('video/')) {\n return {\n asset_url: file.url || file.file.uri,\n duration: file.file.duration,\n file_size: file.file.size,\n mime_type: file.file.type,\n originalFile: file.file,\n thumb_url: file.thumb_url,\n title: file.file.name,\n type: 'video',\n };\n } else {\n return {\n asset_url: file.url || file.file.uri,\n file_size: file.file.size,\n mime_type: file.file.type,\n originalFile: file.file,\n title: file.file.name,\n type: 'file',\n };\n }\n };\n\n // TODO: Figure out why this is async, as it doesn't await any promise.\n // eslint-disable-next-line require-await\n const sendMessage = async () => {\n if (sending.current) {\n return;\n }\n\n if (!channelCapabities.sendLinks && !!text.match(urlRegex)) {\n Alert.alert(t('Links are disabled'), t('Sending links is not allowed in this conversation'));\n\n return;\n }\n\n sending.current = true;\n\n startCooldown();\n\n const prevText = giphyEnabled && giphyActive ? `/giphy ${text}` : text;\n setText('');\n if (inputBoxRef.current) {\n inputBoxRef.current.clear();\n }\n\n const attachments = [] as Attachment<StreamChatGenerics>[];\n for (const image of imageUploads) {\n if (enableOfflineSupport) {\n if (image.state === FileState.NOT_SUPPORTED) {\n return;\n }\n attachments.push(mapImageUploadToAttachment(image));\n continue;\n }\n\n if ((!image || image.state === FileState.UPLOAD_FAILED) && !enableOfflineSupport) {\n continue;\n }\n\n if (image.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n if (value.sendImageAsync) {\n /**\n * If user hit send before image uploaded, push ID into a queue to later\n * be matched with the successful CDN response\n */\n setAsyncIds((prevAsyncIds) => [...prevAsyncIds, image.id]);\n } else {\n sending.current = false;\n return setText(prevText);\n }\n }\n\n // To get the mime type of the image from the file name and send it as an response for an image\n if (image.state === FileState.UPLOADED || image.state === FileState.FINISHED) {\n attachments.push(mapImageUploadToAttachment(image));\n }\n }\n\n for (const file of fileUploads) {\n if (enableOfflineSupport) {\n if (file.state === FileState.NOT_SUPPORTED) {\n return;\n }\n attachments.push(mapFileUploadToAttachment(file));\n continue;\n }\n\n if (!file || file.state === FileState.UPLOAD_FAILED) {\n continue;\n }\n\n if (file.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n sending.current = false;\n return;\n }\n\n if (file.state === FileState.UPLOADED || file.state === FileState.FINISHED) {\n attachments.push(mapFileUploadToAttachment(file));\n }\n }\n\n // Disallow sending message if its empty.\n if (!prevText && attachments.length === 0) {\n sending.current = false;\n return;\n }\n\n if (value.editing && !isEditingBoolean(value.editing)) {\n const updatedMessage = {\n ...value.editing,\n attachments,\n mentioned_users: mentionedUsers,\n quoted_message: undefined,\n text: prevText,\n } as Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0];\n\n // TODO: Remove this line and show an error when submit fails\n value.clearEditingState();\n\n const updateMessagePromise = value\n .editMessage(\n // @ts-ignore\n removeReservedFields(updatedMessage),\n )\n .then(value.clearEditingState);\n resetInput(attachments);\n logChatPromiseExecution(updateMessagePromise, 'update message');\n\n sending.current = false;\n } else {\n try {\n value.sendMessage({\n attachments,\n mentioned_users: uniq(mentionedUsers),\n /** Parent message id - in case of thread */\n parent_id: thread?.id,\n quoted_message_id:\n typeof value.quotedMessage === 'boolean' ? undefined : value.quotedMessage.id,\n show_in_channel: sendThreadMessageInChannel || undefined,\n text: prevText,\n } as unknown as StreamMessage<StreamChatGenerics>);\n\n value.clearQuotedMessageState();\n sending.current = false;\n resetInput(attachments);\n } catch (_error) {\n sending.current = false;\n if (value.quotedMessage && typeof value.quotedMessage !== 'boolean') {\n value.setQuotedMessageState(value.quotedMessage);\n }\n setText(prevText.slice(giphyEnabled && giphyActive ? 7 : 0)); // 7 because of '/giphy ' length\n console.log('Failed to send message');\n }\n }\n };\n\n const sendMessageAsync = (id: string) => {\n const image = asyncUploads[id];\n if (!image || image.state === FileState.UPLOAD_FAILED) {\n return;\n }\n\n if (image.state === FileState.UPLOADED || image.state === FileState.FINISHED) {\n const attachments = [\n {\n image_url: image.url,\n type: 'image',\n },\n ] as StreamMessage<StreamChatGenerics>['attachments'];\n\n startCooldown();\n try {\n value.sendMessage({\n attachments,\n mentioned_users: [],\n parent_id: thread?.id,\n quoted_message_id:\n typeof value.quotedMessage === 'boolean' ? undefined : value.quotedMessage.id,\n show_in_channel: sendThreadMessageInChannel || undefined,\n text: '',\n } as unknown as Partial<StreamMessage<StreamChatGenerics>>);\n\n setAsyncIds((prevAsyncIds) => prevAsyncIds.splice(prevAsyncIds.indexOf(id), 1));\n setAsyncUploads((prevAsyncUploads) => {\n delete prevAsyncUploads[id];\n return prevAsyncUploads;\n });\n\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n } catch (_error) {\n console.log('Failed');\n }\n }\n };\n\n const setInputBoxRef = (ref: TextInput | null) => {\n inputBoxRef.current = ref;\n if (value.setInputRef) {\n value.setInputRef(ref);\n }\n };\n\n const getTriggerSettings = () => {\n let triggerSettings: TriggerSettings<StreamChatGenerics> = {};\n if (channel) {\n if (value.autoCompleteTriggerSettings) {\n triggerSettings = value.autoCompleteTriggerSettings({\n channel,\n client,\n onMentionSelectItem: onSelectItem,\n });\n } else {\n triggerSettings = ACITriggerSettings<StreamChatGenerics>({\n channel,\n client,\n onMentionSelectItem: onSelectItem,\n });\n }\n }\n return triggerSettings;\n };\n\n const triggerSettings = getTriggerSettings();\n\n const updateMessage = async () => {\n try {\n if (!isEditingBoolean(value.editing)) {\n await client.updateMessage({\n ...value.editing,\n quoted_message: undefined,\n text: giphyEnabled && giphyActive ? `/giphy ${text}` : text,\n } as Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0]);\n }\n\n resetInput();\n value.clearEditingState();\n } catch (error) {\n console.log(error);\n }\n };\n\n const regExcondition = /File (extension \\.\\w{2,4}|type \\S+) is not supported/;\n\n const getUploadSetStateAction = <UploadType extends ImageUpload | FileUpload>(\n id: string,\n fileState: FileStateValue,\n extraData: Partial<UploadType> = {},\n ): React.SetStateAction<UploadType[]> => {\n const uploads: (prevUploads: UploadType[]) => UploadType[] = (prevUploads: UploadType[]) =>\n prevUploads.map((prevUpload) => {\n if (prevUpload.id === id) {\n return {\n ...prevUpload,\n ...extraData,\n state: fileState,\n };\n }\n return prevUpload;\n });\n\n return uploads;\n };\n\n const handleFileOrImageUploadError = (error: unknown, isImageError: boolean, id: string) => {\n if (isImageError) {\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n if (error instanceof Error) {\n if (regExcondition.test(error.message)) {\n return setImageUploads(getUploadSetStateAction(id, FileState.NOT_SUPPORTED));\n }\n\n return setImageUploads(getUploadSetStateAction(id, FileState.UPLOAD_FAILED));\n }\n } else {\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n\n if (error instanceof Error) {\n if (regExcondition.test(error.message)) {\n return setFileUploads(getUploadSetStateAction(id, FileState.NOT_SUPPORTED));\n }\n return setFileUploads(getUploadSetStateAction(id, FileState.UPLOAD_FAILED));\n }\n }\n };\n\n const uploadFile = async ({ newFile }: { newFile: FileUpload }) => {\n const { file, id } = newFile;\n\n setFileUploads(getUploadSetStateAction(id, FileState.UPLOADING));\n\n let response: Partial<SendFileAPIResponse> = {};\n try {\n if (value.doDocUploadRequest) {\n response = await value.doDocUploadRequest(file, channel);\n } else if (channel && file.uri) {\n response = await channel.sendFile(file.uri, file.name, file.type);\n }\n const extraData: Partial<FileUpload> = { thumb_url: response.thumb_url, url: response.file };\n setFileUploads(getUploadSetStateAction(id, FileState.UPLOADED, extraData));\n } catch (error: unknown) {\n handleFileOrImageUploadError(error, false, id);\n }\n };\n\n const uploadImage = async ({ newImage }: { newImage: ImageUpload }) => {\n const { file, id } = newImage || {};\n\n if (!file) {\n return;\n }\n\n let response = {} as SendFileAPIResponse;\n\n try {\n /**\n * Expo now uses the assets-library which is also how remote\n * native files are presented. We now return a file id from Expo\n * only, if that file id exits we call getLocalAssetUri to download\n * the asset for expo before uploading it. We do the same for native\n * if the uri includes assets-library, this uses the CameraRoll.save\n * function to also create a local uri.\n */\n const getLocalUri = async () => {\n if (file.id) {\n return await getLocalAssetUri(file.id);\n } else if (file.uri?.match(/assets-library/)) {\n return await getLocalAssetUri(file.uri);\n }\n return file.uri;\n };\n const uri = file.name || (await getLocalUri()) || '';\n /**\n * We skip compression if:\n * - the file is from the camera as that should already be compressed\n * - the file has not 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 (file.source === 'camera' ||\n !file.height ||\n !file.width ||\n typeof value.compressImageQuality !== 'number' ||\n value.compressImageQuality === 1\n ? uri\n : compressImage({\n compressImageQuality: value.compressImageQuality,\n height: file.height,\n uri,\n width: file.width,\n }));\n const filename = uri.replace(/^(file:\\/\\/|content:\\/\\/|assets-library:\\/\\/)/, '');\n const contentType = lookup(filename) || 'multipart/form-data';\n if (value.doImageUploadRequest) {\n response = await value.doImageUploadRequest(file, channel);\n } else if (compressedUri && channel) {\n if (value.sendImageAsync) {\n channel.sendImage(compressedUri, file.filename, contentType).then((res) => {\n if (asyncIds.includes(id)) {\n // Evaluates to true if user hit send before image successfully uploaded\n setAsyncUploads((prevAsyncUploads) => {\n prevAsyncUploads[id] = {\n ...prevAsyncUploads[id],\n state: FileState.UPLOADED,\n url: res.file,\n };\n return prevAsyncUploads;\n });\n } else {\n const newImageUploads = getUploadSetStateAction<ImageUpload>(id, FileState.UPLOADED, {\n url: res.file,\n });\n setImageUploads(newImageUploads);\n }\n });\n } else {\n response = await channel.sendImage(compressedUri, file.filename, contentType);\n }\n }\n\n if (Object.keys(response).length) {\n const newImageUploads = getUploadSetStateAction<ImageUpload>(id, FileState.UPLOADED, {\n height: file.height,\n url: response.file,\n width: file.width,\n });\n setImageUploads(newImageUploads);\n }\n } catch (error) {\n handleFileOrImageUploadError(error, true, id);\n }\n };\n\n const uploadNewFile = async (file: {\n name: string;\n size?: number | string;\n type?: string;\n uri?: string;\n }) => {\n const id: string = generateRandomId();\n const mimeType: string | boolean = lookup(file.name);\n\n const isBlockedFileExtension: boolean | undefined = blockedFileExtensionTypes?.some(\n (fileExtensionType: string) => file.name?.includes(fileExtensionType),\n );\n const isBlockedFileMimeType: boolean | undefined = blockedFileMimeTypes?.some(\n (mimeType: string) => file.name?.includes(mimeType),\n );\n\n const fileState =\n isBlockedFileExtension || isBlockedFileMimeType\n ? FileState.NOT_SUPPORTED\n : FileState.UPLOADING;\n\n const newFile: FileUpload = {\n duration: 0,\n file: { ...file, type: mimeType || file?.type },\n id,\n paused: true,\n progress: 0,\n state: fileState,\n };\n\n await Promise.all([\n setFileUploads((prevFileUploads) => prevFileUploads.concat([newFile])),\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads + 1),\n ]);\n\n if (!isBlockedFileExtension) {\n uploadFile({ newFile });\n }\n };\n\n const uploadNewImage = async (image: Partial<Asset>) => {\n const id = generateRandomId();\n\n const isBlockedImageMimeType = blockedImageMimeTypes?.some((mimeType: string) =>\n image.uri?.includes(mimeType),\n );\n\n const isBlockedImageExtension = blockedImageExtensionTypes?.some((imageExtensionType: string) =>\n image.uri?.includes(imageExtensionType),\n );\n\n const imageState =\n isBlockedImageExtension || isBlockedImageMimeType\n ? FileState.NOT_SUPPORTED\n : FileState.UPLOADING;\n\n const newImage: ImageUpload = {\n file: image,\n height: image.height,\n id,\n state: imageState,\n url: image.uri,\n width: image.width,\n };\n\n await Promise.all([\n setImageUploads((prevImageUploads) => prevImageUploads.concat([newImage])),\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads + 1),\n ]);\n\n if (!isBlockedImageExtension) {\n uploadImage({ newImage });\n }\n };\n\n const messageInputContext = useCreateMessageInputContext({\n appendText,\n asyncIds,\n asyncUploads,\n closeAttachmentPicker,\n cooldownEndsAt,\n fileUploads,\n giphyActive,\n imageUploads,\n inputBoxRef,\n isValidMessage,\n mentionedUsers,\n numberOfUploads,\n onChange,\n onSelectItem,\n openAttachmentPicker,\n openCommandsPicker,\n openFilePicker: pickFile,\n openMentionsPicker,\n pickFile,\n removeFile,\n removeImage,\n resetInput,\n selectedPicker,\n sending,\n sendMessageAsync,\n sendThreadMessageInChannel,\n setAsyncIds,\n setAsyncUploads,\n setFileUploads,\n setGiphyActive,\n setImageUploads,\n setInputBoxRef,\n setMentionedUsers,\n setNumberOfUploads,\n setSendThreadMessageInChannel,\n setShowMoreOptions,\n setText,\n showMoreOptions,\n text,\n thread,\n toggleAttachmentPicker,\n triggerSettings,\n updateMessage,\n uploadFile,\n uploadImage,\n uploadNewFile,\n uploadNewImage,\n ...value,\n sendMessage, // overriding the originally passed in sendMessage\n });\n\n return (\n <MessageInputContext.Provider\n value={messageInputContext as unknown as MessageInputContextValue}\n >\n {children}\n </MessageInputContext.Provider>\n );\n};\n\nexport const useMessageInputContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const contextValue = useContext(\n MessageInputContext,\n ) as unknown as MessageInputContextValue<StreamChatGenerics>;\n\n if (contextValue === DEFAULT_BASE_CONTEXT_VALUE && !isTestEnvironment()) {\n throw new Error(\n `The useMessageInputContext hook was called outside of the MessageInputContext provider. Make sure you have configured Channel component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#channel`,\n );\n }\n\n return contextValue;\n};\n\n/**\n * Typescript currently does not support partial inference so if MessageInputContext\n * typing is desired while using the HOC withMessageInputContext the Props for the\n * wrapped component must be provided as the first generic.\n */\nexport const withMessageInputContext = <\n P extends UnknownType,\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<P>,\n): React.FC<Omit<P, keyof MessageInputContextValue<StreamChatGenerics>>> => {\n const WithMessageInputContextComponent = (\n props: Omit<P, keyof MessageInputContextValue<StreamChatGenerics>>,\n ) => {\n const messageInputContext = useMessageInputContext<StreamChatGenerics>();\n\n return <Component {...(props as P)} {...messageInputContext} />;\n };\n WithMessageInputContextComponent.displayName = `WithMessageInputContext${getDisplayName(\n Component,\n )}`;\n return WithMessageInputContextComponent;\n};\n"]}
@@ -161,6 +161,7 @@ var defaultTheme = {
161
161
  rightContainer: {}
162
162
  },
163
163
  grid: {
164
+ container: {},
164
165
  contentContainer: {},
165
166
  gridAvatar: {},
166
167
  gridAvatarWrapper: {},
@@ -1 +1 @@
1
- {"version":3,"sources":["theme.ts"],"names":["DEFAULT_STATUS_ICON_SIZE","Colors","accent_blue","accent_green","accent_red","bg_gradient_end","bg_gradient_start","black","blue_alice","border","grey","grey_dark","grey_gainsboro","grey_whisper","icon_background","label_bg_transparent","light_gray","modal_shadow","overlay","shadow_icon","static_black","static_white","targetedMessageBackground","transparent","white","white_smoke","white_snow","defaultTheme","attachmentPicker","bottomSheetContentContainer","durationText","errorButtonText","errorContainer","errorText","image","imageOverlay","imageOverlaySelectedComponent","check","attachmentSelectionBar","container","icon","avatar","BASE_AVATAR_SIZE","borderRadius","height","width","presenceIndicator","cx","cy","r","strokeWidth","presenceIndicatorContainer","channel","selectChannel","channelListFooterLoadingIndicator","channelListHeaderErrorIndicator","channelListLoadingIndicator","channelListMessenger","flatList","flatListContent","channelListSkeleton","animationTime","background","gradientStart","stopOpacity","gradientStop","channelPreview","checkAllIcon","checkIcon","contentContainer","date","message","fontWeight","mutedStatus","iconStyle","row","title","unreadContainer","unreadText","colors","dateHeader","text","emptyStateIndicator","channelContainer","channelDetails","channelTitle","groupAvatar","resizeMode","iconBadge","iconInner","unreadCount","iconSquare","imageGallery","footer","centerContainer","imageCountText","innerContainer","leftContainer","rightContainer","grid","gridAvatar","gridAvatarWrapper","gridImage","handle","handleText","header","dateText","usernameText","videoControl","durationTextStyle","roundedView","videoContainer","inlineDateSeparator","loadingDots","loadingDot","spacing","loadingErrorIndicator","retryText","loadingIndicator","loadingText","messageInput","attachButton","attachButtonContainer","autoCompleteInputContainer","commandsButton","commandsButtonContainer","composerContainer","cooldownTimer","editingBoxContainer","editingBoxHeader","editingBoxHeaderTitle","editingStateHeader","fileUploadPreview","audioAttachment","progressControlView","progressDurationText","audioAttachmentFileContainer","dismiss","fileContainer","fileContentContainer","filenameText","fileSizeText","fileTextContainer","giphyCommandInput","giphyContainer","giphyText","imageUploadPreview","dismissIconColor","itemContainer","upload","inputBox","inputBoxContainer","moreOptionsButton","optionsContainer","replyContainer","sendButton","sendButtonContainer","sendMessageDisallowedIndicator","showThreadMessageInChannelButton","checkBoxActive","checkBoxInactive","suggestions","command","args","iconContainer","maxHeight","emoji","item","mention","avatarSize","column","name","tag","suggestionsListContainer","flatlist","uploadProgressIndicator","messageList","errorNotification","errorNotificationText","inlineUnreadIndicator","listContainer","messageSystem","line","textContainer","scrollToBottomButton","touchable","unreadCountNotificationContainer","unreadCountNotificationText","wrapper","typingIndicatorContainer","messageSimple","actions","button","buttonText","avatarWrapper","leftAlign","marginRight","rightAlign","marginLeft","spacer","card","authorName","authorNameContainer","authorNameFooter","authorNameFooterContainer","authorNameMask","cover","description","noURI","borderLeftWidth","paddingLeft","playButtonStyle","playIcon","content","borderRadiusL","borderRadiusS","containerInner","deletedContainer","deletedContainerInner","deletedMetaText","paddingHorizontal","deletedText","em","fontSize","fontStyle","paddingRight","paddingTop","errorIcon","errorIconContainer","bottom","position","right","eyeIcon","markdown","messageUser","metaContainer","flexDirection","marginTop","metaText","replyBorder","onlyEmojiMarkdown","file","details","fileSize","fileAttachmentGroup","gallery","galleryContainer","galleryItemColumn","gridHeight","gridWidth","imageContainer","maxWidth","minHeight","minWidth","moreImagesContainer","moreImagesText","giphy","buttonContainer","cancel","giphyHeaderText","giphyHeaderTitle","giphyMask","giphyMaskText","selectionContainer","send","shuffle","pinnedHeader","label","reactionList","middleIcon","radius","reactionBubble","reactionBubbleBackground","reactionSize","strokeSize","replies","avatarContainerMultiple","avatarContainerSingle","leftAvatarsContainer","leftCurve","messageRepliesText","rightAvatarsContainer","rightCurve","status","readByCount","statusContainer","timeIcon","targetedMessageUnderlay","videoThumbnail","messageActions","actionContainer","padding","reactions","avatarContainer","avatarName","flatListContainer","reactionsList","reaction","reply","fileAttachmentContainer","imageAttachment","markdownStyles","messageContainer","screenPadding","spinner","thread","newThread","typingIndicator"],"mappings":"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","sourcesContent":["import type { ImageStyle, TextStyle, ViewStyle } from 'react-native';\nimport type { CircleProps, Color, StopProps } from 'react-native-svg';\n\nimport type { IconProps } from '../../../icons/utils/base';\nimport { vh } from '../../../utils/utils';\n\nexport const DEFAULT_STATUS_ICON_SIZE = 16;\n\nexport const Colors = {\n accent_blue: '#005FFF',\n accent_green: '#20E070',\n accent_red: '#FF3742',\n bg_gradient_end: '#F7F7F7',\n bg_gradient_start: '#FCFCFC',\n black: '#000000',\n blue_alice: '#E9F2FF',\n border: '#00000014', // 14 = 8% opacity; top: x=0, y=-1; bottom: x=0, y=1\n grey: '#7A7A7A',\n grey_dark: '#72767E',\n grey_gainsboro: '#DBDBDB',\n grey_whisper: '#ECEBEB',\n icon_background: '#FFFFFF',\n label_bg_transparent: '#00000033', // 33 = 20% opacity\n light_gray: '#DBDDE1',\n modal_shadow: '#00000099', // 99 = 60% opacity; x=0, y= 1, radius=4\n overlay: '#000000CC', // CC = 80% opacity\n shadow_icon: '#00000040', // 40 = 25% opacity; x=0, y=0, radius=4\n static_black: '#000000',\n static_white: '#ffffff',\n targetedMessageBackground: '#FBF4DD', // dark mode = #302D22\n transparent: 'transparent',\n white: '#FFFFFF',\n white_smoke: '#F2F2F2',\n white_snow: '#FCFCFC',\n};\n\nexport type MarkdownStyle = Partial<{\n autolink: TextStyle;\n blockQuoteBar: ViewStyle;\n blockQuoteSection: ViewStyle;\n blockQuoteSectionBar: ViewStyle;\n blockQuoteText: TextStyle | ViewStyle;\n br: TextStyle;\n codeBlock: TextStyle;\n del: TextStyle;\n em: TextStyle;\n heading: TextStyle;\n heading1: TextStyle;\n heading2: TextStyle;\n heading3: TextStyle;\n heading4: TextStyle;\n heading5: TextStyle;\n heading6: TextStyle;\n hr: ViewStyle;\n image: ImageStyle;\n inlineCode: TextStyle;\n list: ViewStyle;\n listItem: ViewStyle;\n listItemBullet: TextStyle;\n listItemNumber: TextStyle;\n listItemText: TextStyle;\n listRow: ViewStyle;\n mailTo: TextStyle;\n mentions: TextStyle;\n newline: TextStyle;\n noMargin: TextStyle;\n paragraph: TextStyle;\n paragraphCenter: TextStyle;\n paragraphWithImage: ViewStyle;\n strong: TextStyle;\n sublist: ViewStyle;\n table: ViewStyle;\n tableHeader: ViewStyle;\n tableHeaderCell: TextStyle;\n tableRow: ViewStyle;\n tableRowCell: ViewStyle;\n tableRowLast: ViewStyle;\n text: TextStyle;\n u: TextStyle;\n view: ViewStyle;\n}>;\n\nexport type Theme = {\n attachmentPicker: {\n bottomSheetContentContainer: ViewStyle;\n durationText: TextStyle;\n errorButtonText: TextStyle;\n errorContainer: ViewStyle;\n errorText: TextStyle;\n image: ViewStyle;\n imageOverlay: ViewStyle;\n imageOverlaySelectedComponent: {\n check: ViewStyle;\n };\n };\n attachmentSelectionBar: {\n container: ViewStyle;\n icon: ViewStyle;\n };\n avatar: {\n BASE_AVATAR_SIZE: number;\n container: ViewStyle;\n image: ImageStyle;\n presenceIndicator: CircleProps;\n presenceIndicatorContainer: ViewStyle;\n };\n channel: {\n selectChannel: TextStyle;\n };\n channelListFooterLoadingIndicator: {\n container: ViewStyle;\n };\n channelListHeaderErrorIndicator: {\n container: ViewStyle;\n errorText: TextStyle;\n };\n channelListLoadingIndicator: {\n container: ViewStyle;\n };\n channelListMessenger: {\n flatList: ViewStyle;\n flatListContent: ViewStyle;\n };\n channelListSkeleton: {\n animationTime: number;\n background: ViewStyle;\n container: ViewStyle;\n gradientStart: StopProps;\n gradientStop: StopProps;\n height: number;\n maskFillColor?: Color;\n };\n channelPreview: {\n checkAllIcon: IconProps;\n checkIcon: IconProps;\n container: ViewStyle;\n contentContainer: ViewStyle;\n date: TextStyle;\n message: TextStyle & {\n fontWeight: TextStyle['fontWeight'];\n };\n mutedStatus: {\n height: number;\n iconStyle: ViewStyle;\n width: number;\n };\n row: ViewStyle;\n title: TextStyle;\n unreadContainer: ViewStyle;\n unreadText: TextStyle;\n };\n colors: typeof Colors & { [key: string]: string };\n dateHeader: {\n container: ViewStyle;\n text: TextStyle;\n };\n emptyStateIndicator: {\n channelContainer: ViewStyle;\n channelDetails: TextStyle;\n channelTitle: TextStyle;\n };\n groupAvatar: {\n container: ViewStyle;\n image: ImageStyle;\n };\n iconBadge: {\n icon: ViewStyle;\n iconInner: ViewStyle;\n unreadCount: TextStyle;\n };\n iconSquare: {\n container: ViewStyle;\n image: ImageStyle;\n };\n imageGallery: {\n footer: {\n centerContainer: ViewStyle;\n container: ViewStyle;\n imageCountText: TextStyle;\n innerContainer: ViewStyle;\n leftContainer: ViewStyle;\n rightContainer: ViewStyle;\n };\n grid: {\n contentContainer: ViewStyle;\n gridAvatar: ImageStyle;\n gridAvatarWrapper: ViewStyle;\n gridImage: ViewStyle;\n handle: ViewStyle;\n handleText: TextStyle;\n overlay: ViewStyle;\n };\n header: {\n centerContainer: ViewStyle;\n container: ViewStyle;\n dateText: TextStyle;\n innerContainer: ViewStyle;\n leftContainer: ViewStyle;\n rightContainer: ViewStyle;\n usernameText: TextStyle;\n };\n videoControl: {\n durationTextStyle: TextStyle;\n roundedView: ViewStyle;\n videoContainer: ViewStyle;\n };\n backgroundColor?: string;\n pager?: ViewStyle;\n slide?: ImageStyle;\n };\n inlineDateSeparator: {\n container: ViewStyle;\n text: TextStyle;\n };\n loadingDots: {\n container: ViewStyle;\n loadingDot: ViewStyle;\n spacing: number;\n };\n loadingErrorIndicator: {\n container: ViewStyle;\n errorText: TextStyle;\n retryText: TextStyle;\n };\n loadingIndicator: {\n container: ViewStyle;\n loadingText: TextStyle;\n };\n messageInput: {\n attachButton: ViewStyle;\n attachButtonContainer: ViewStyle;\n attachmentSelectionBar: ViewStyle;\n autoCompleteInputContainer: ViewStyle;\n commandsButton: ViewStyle;\n commandsButtonContainer: ViewStyle;\n composerContainer: ViewStyle;\n container: ViewStyle;\n cooldownTimer: {\n container: ViewStyle;\n text: TextStyle;\n };\n editingBoxContainer: ViewStyle;\n editingBoxHeader: ViewStyle;\n editingBoxHeaderTitle: TextStyle;\n editingStateHeader: {\n editingBoxHeader: ViewStyle;\n editingBoxHeaderTitle: TextStyle;\n };\n fileUploadPreview: {\n audioAttachment: {\n progressControlView: ViewStyle;\n progressDurationText: TextStyle;\n roundedView: ViewStyle;\n };\n audioAttachmentFileContainer: ViewStyle;\n dismiss: ViewStyle;\n fileContainer: ViewStyle;\n fileContentContainer: ViewStyle;\n filenameText: TextStyle;\n fileSizeText: TextStyle;\n fileTextContainer: ViewStyle;\n flatList: ViewStyle;\n };\n giphyCommandInput: {\n giphyContainer: ViewStyle;\n giphyText: TextStyle;\n };\n imageUploadPreview: {\n dismiss: ViewStyle;\n dismissIconColor: Color;\n flatList: ViewStyle;\n itemContainer: ViewStyle;\n upload: ImageStyle;\n };\n inputBox: TextStyle;\n inputBoxContainer: ViewStyle;\n moreOptionsButton: ViewStyle;\n optionsContainer: ViewStyle;\n replyContainer: ViewStyle;\n sendButton: ViewStyle;\n sendButtonContainer: ViewStyle;\n sendMessageDisallowedIndicator: {\n container: ViewStyle;\n text: TextStyle;\n };\n showThreadMessageInChannelButton: {\n check: IconProps;\n checkBoxActive: ViewStyle;\n checkBoxInactive: ViewStyle;\n container: ViewStyle;\n innerContainer: ViewStyle;\n text: TextStyle;\n };\n suggestions: {\n command: {\n args: TextStyle;\n container: ViewStyle;\n iconContainer: ViewStyle;\n title: TextStyle;\n };\n container: ViewStyle & {\n maxHeight: number;\n };\n emoji: {\n container: ViewStyle;\n text: TextStyle;\n };\n header: {\n container: ViewStyle;\n title: TextStyle;\n };\n item: ViewStyle;\n mention: {\n avatarSize: number;\n column: ViewStyle;\n container: ViewStyle;\n name: TextStyle;\n tag: TextStyle;\n };\n };\n suggestionsListContainer: {\n container: ViewStyle;\n flatlist: ViewStyle;\n };\n uploadProgressIndicator: {\n container: ViewStyle;\n overlay: ViewStyle;\n };\n };\n messageList: {\n container: ViewStyle;\n contentContainer: ViewStyle;\n errorNotification: ViewStyle;\n errorNotificationText: TextStyle;\n inlineUnreadIndicator: {\n container: ViewStyle;\n text: TextStyle;\n };\n listContainer: ViewStyle;\n messageSystem: {\n container: ViewStyle;\n dateText: TextStyle;\n line: ViewStyle;\n text: TextStyle;\n textContainer: ViewStyle;\n };\n scrollToBottomButton: {\n container: ViewStyle;\n touchable: ViewStyle;\n unreadCountNotificationContainer: ViewStyle;\n unreadCountNotificationText: TextStyle;\n wrapper: ViewStyle;\n chevronColor?: Color;\n };\n typingIndicatorContainer: ViewStyle;\n };\n messageSimple: {\n actions: {\n button: ViewStyle & {\n defaultBackgroundColor?: ViewStyle['backgroundColor'];\n defaultBorderColor?: ViewStyle['borderColor'];\n primaryBackgroundColor?: ViewStyle['backgroundColor'];\n primaryBorderColor?: ViewStyle['borderColor'];\n };\n buttonText: TextStyle & {\n defaultColor?: TextStyle['color'];\n primaryColor?: TextStyle['color'];\n };\n container: ViewStyle;\n };\n avatarWrapper: {\n container: ViewStyle;\n leftAlign: ViewStyle;\n rightAlign: ViewStyle;\n spacer: ViewStyle;\n };\n card: {\n authorName: TextStyle;\n authorNameContainer: ViewStyle;\n authorNameFooter: TextStyle;\n authorNameFooterContainer: ViewStyle;\n authorNameMask: ViewStyle;\n container: ViewStyle;\n cover: ImageStyle;\n footer: ViewStyle & {\n description: TextStyle;\n title: TextStyle;\n };\n noURI: ViewStyle;\n playButtonStyle: {\n durationTextStyle: TextStyle;\n roundedView: ViewStyle;\n videoContainer: ViewStyle;\n };\n playIcon: IconProps;\n };\n container: ViewStyle;\n content: {\n container: ViewStyle & {\n borderRadiusL: ViewStyle['borderBottomLeftRadius' | 'borderTopLeftRadius'];\n borderRadiusS: ViewStyle['borderBottomRightRadius' | 'borderTopRightRadius'];\n };\n containerInner: ViewStyle;\n deletedContainer: ViewStyle;\n deletedContainerInner: ViewStyle;\n deletedMetaText: TextStyle;\n deletedText: MarkdownStyle;\n errorContainer: ViewStyle;\n errorIcon: IconProps;\n errorIconContainer: ViewStyle;\n eyeIcon: IconProps;\n /**\n * Available options for styling text:\n * https://github.com/andangrd/react-native-markdown-package/blob/main/styles.js\n */\n markdown: MarkdownStyle;\n messageUser: TextStyle;\n metaContainer: ViewStyle;\n metaText: TextStyle;\n replyBorder: ViewStyle;\n replyContainer: ViewStyle;\n textContainer: ViewStyle & {\n onlyEmojiMarkdown: MarkdownStyle;\n };\n wrapper: ViewStyle;\n };\n file: {\n container: ViewStyle;\n details: ViewStyle;\n fileSize: TextStyle;\n icon: IconProps;\n title: TextStyle;\n };\n fileAttachmentGroup: {\n container: ViewStyle;\n };\n gallery: {\n galleryContainer: ViewStyle;\n galleryItemColumn: ViewStyle;\n gridHeight: number;\n gridWidth: number;\n image: ImageStyle;\n imageContainer: ViewStyle;\n maxHeight: number;\n maxWidth: number;\n minHeight: number;\n minWidth: number;\n moreImagesContainer: ViewStyle;\n moreImagesText: TextStyle;\n };\n giphy: {\n buttonContainer: ViewStyle;\n cancel: TextStyle;\n container: ViewStyle;\n giphy: ImageStyle;\n giphyContainer: ViewStyle;\n giphyHeaderText: TextStyle;\n giphyHeaderTitle: TextStyle;\n giphyMask: ViewStyle;\n giphyMaskText: TextStyle;\n header: ViewStyle;\n selectionContainer: ViewStyle;\n send: TextStyle;\n shuffle: TextStyle;\n title: TextStyle;\n };\n loadingIndicator: {\n container: ViewStyle;\n roundedView: ViewStyle;\n };\n pinnedHeader: {\n container: ViewStyle;\n label: TextStyle;\n };\n reactionList: {\n container: ViewStyle;\n middleIcon: ViewStyle;\n radius: number;\n reactionBubble: ViewStyle;\n reactionBubbleBackground: ViewStyle;\n reactionSize: number;\n strokeSize: number;\n };\n replies: {\n avatar: ViewStyle;\n avatarContainerMultiple: ViewStyle;\n avatarContainerSingle: ViewStyle;\n container: ViewStyle;\n leftAvatarsContainer: ViewStyle;\n leftCurve: ViewStyle;\n messageRepliesText: TextStyle;\n rightAvatarsContainer: ViewStyle;\n rightCurve: ViewStyle;\n avatarSize?: number;\n };\n status: {\n checkAllIcon: IconProps;\n checkIcon: IconProps;\n readByCount: TextStyle;\n statusContainer: ViewStyle;\n timeIcon: IconProps;\n };\n targetedMessageUnderlay: ViewStyle;\n videoThumbnail: {\n container: ViewStyle;\n roundedView: ViewStyle;\n };\n };\n overlay: {\n container: ViewStyle;\n messageActions: {\n actionContainer: ViewStyle;\n icon: ViewStyle;\n title: TextStyle;\n };\n padding: number;\n reactions: {\n avatarContainer: ViewStyle;\n avatarName: TextStyle;\n avatarSize: number;\n container: ViewStyle;\n flatListContainer: ViewStyle;\n radius: number;\n reactionBubble: ViewStyle;\n reactionBubbleBackground: ViewStyle;\n title: TextStyle;\n };\n reactionsList: {\n radius: number;\n reaction: ViewStyle;\n reactionList: ViewStyle;\n reactionSize: number;\n };\n };\n reply: {\n container: ViewStyle;\n fileAttachmentContainer: ViewStyle;\n imageAttachment: ImageStyle;\n markdownStyles: MarkdownStyle;\n messageContainer: ViewStyle;\n textContainer: ViewStyle;\n videoThumbnail: {\n container: ViewStyle;\n image: ImageStyle;\n };\n };\n screenPadding: number;\n spinner: ViewStyle;\n thread: {\n newThread: ViewStyle & {\n text: TextStyle;\n backgroundGradientStart?: string;\n backgroundGradientStop?: string;\n };\n };\n typingIndicator: {\n container: ViewStyle;\n text: TextStyle & {\n fontSize: TextStyle['fontSize'];\n };\n };\n};\n\nexport const defaultTheme: Theme = {\n attachmentPicker: {\n bottomSheetContentContainer: {},\n durationText: {},\n errorButtonText: {},\n errorContainer: {},\n errorText: {},\n image: {},\n imageOverlay: {},\n imageOverlaySelectedComponent: {\n check: {},\n },\n },\n attachmentSelectionBar: {\n container: {},\n icon: {},\n },\n avatar: {\n BASE_AVATAR_SIZE: 32,\n container: {},\n image: {\n borderRadius: 16,\n height: 32,\n width: 32,\n },\n presenceIndicator: {\n cx: 6,\n cy: 6,\n r: 5,\n strokeWidth: 2,\n },\n presenceIndicatorContainer: {},\n },\n channel: {\n selectChannel: {},\n },\n channelListFooterLoadingIndicator: {\n container: {},\n },\n channelListHeaderErrorIndicator: {\n container: {},\n errorText: {},\n },\n channelListLoadingIndicator: {\n container: {},\n },\n channelListMessenger: {\n flatList: {},\n flatListContent: {},\n },\n channelListSkeleton: {\n animationTime: 1800, // in milliseconds\n background: {},\n container: {},\n gradientStart: {\n stopOpacity: 0,\n },\n gradientStop: {\n stopOpacity: 0.5,\n },\n height: 64,\n },\n channelPreview: {\n checkAllIcon: {\n height: DEFAULT_STATUS_ICON_SIZE,\n width: DEFAULT_STATUS_ICON_SIZE,\n },\n checkIcon: {\n height: DEFAULT_STATUS_ICON_SIZE,\n width: DEFAULT_STATUS_ICON_SIZE,\n },\n container: {},\n contentContainer: {},\n date: {},\n message: {\n fontWeight: '400',\n },\n mutedStatus: {\n height: 20,\n iconStyle: {},\n width: 20,\n },\n row: {},\n title: {},\n unreadContainer: {},\n unreadText: {},\n },\n colors: {\n ...Colors,\n },\n dateHeader: {\n container: {},\n text: {},\n },\n emptyStateIndicator: {\n channelContainer: {},\n channelDetails: {},\n channelTitle: {},\n },\n groupAvatar: {\n container: {},\n image: {\n resizeMode: 'cover',\n },\n },\n iconBadge: {\n icon: {},\n iconInner: {},\n unreadCount: {},\n },\n iconSquare: {\n container: {},\n image: {},\n },\n imageGallery: {\n footer: {\n centerContainer: {},\n container: {},\n imageCountText: {},\n innerContainer: {},\n leftContainer: {},\n rightContainer: {},\n },\n grid: {\n contentContainer: {},\n gridAvatar: {},\n gridAvatarWrapper: {},\n gridImage: {},\n handle: {},\n handleText: {},\n overlay: {},\n },\n header: {\n centerContainer: {},\n container: {},\n dateText: {},\n innerContainer: {},\n leftContainer: {},\n rightContainer: {},\n usernameText: {},\n },\n videoControl: {\n durationTextStyle: {},\n roundedView: {},\n videoContainer: {},\n },\n },\n inlineDateSeparator: {\n container: {},\n text: {},\n },\n loadingDots: {\n container: {},\n loadingDot: {},\n spacing: 4,\n },\n loadingErrorIndicator: {\n container: {},\n errorText: {},\n retryText: {},\n },\n loadingIndicator: {\n container: {},\n loadingText: {},\n },\n messageInput: {\n attachButton: {},\n attachButtonContainer: {},\n attachmentSelectionBar: {},\n autoCompleteInputContainer: {},\n commandsButton: {},\n commandsButtonContainer: {},\n composerContainer: {},\n container: {},\n cooldownTimer: {\n container: {},\n text: {},\n },\n editingBoxContainer: {},\n editingBoxHeader: {},\n editingBoxHeaderTitle: {},\n editingStateHeader: {\n editingBoxHeader: {},\n editingBoxHeaderTitle: {},\n },\n fileUploadPreview: {\n audioAttachment: {\n progressControlView: {},\n progressDurationText: {},\n roundedView: {},\n },\n audioAttachmentFileContainer: {},\n dismiss: {},\n fileContainer: {},\n fileContentContainer: {},\n filenameText: {},\n fileSizeText: {},\n fileTextContainer: {},\n flatList: {},\n },\n giphyCommandInput: {\n giphyContainer: {},\n giphyText: {},\n },\n imageUploadPreview: {\n dismiss: {},\n dismissIconColor: '',\n flatList: {},\n itemContainer: {},\n upload: {},\n },\n inputBox: {},\n inputBoxContainer: {},\n moreOptionsButton: {},\n optionsContainer: {},\n replyContainer: {},\n sendButton: {},\n sendButtonContainer: {},\n sendMessageDisallowedIndicator: {\n container: {},\n text: {},\n },\n showThreadMessageInChannelButton: {\n check: {},\n checkBoxActive: {},\n checkBoxInactive: {},\n container: {},\n innerContainer: {},\n text: {},\n },\n suggestions: {\n command: {\n args: {},\n container: {},\n iconContainer: {},\n title: {},\n },\n container: {\n maxHeight: vh(25),\n },\n emoji: {\n container: {},\n text: {},\n },\n header: {\n container: {},\n title: {},\n },\n item: {},\n mention: {\n avatarSize: 40,\n column: {},\n container: {},\n name: {},\n tag: {},\n },\n },\n suggestionsListContainer: {\n container: {},\n flatlist: {},\n },\n uploadProgressIndicator: {\n container: {},\n overlay: {},\n },\n },\n messageList: {\n container: {},\n contentContainer: {},\n errorNotification: {},\n errorNotificationText: {},\n inlineUnreadIndicator: {\n container: {},\n text: {},\n },\n listContainer: {},\n messageSystem: {\n container: {},\n dateText: {},\n line: {},\n text: {},\n textContainer: {},\n },\n scrollToBottomButton: {\n container: {},\n touchable: {},\n unreadCountNotificationContainer: {},\n unreadCountNotificationText: {},\n wrapper: {},\n },\n typingIndicatorContainer: {},\n },\n messageSimple: {\n actions: {\n button: {},\n buttonText: {},\n container: {},\n },\n avatarWrapper: {\n container: {},\n leftAlign: {\n marginRight: 8,\n },\n rightAlign: {\n marginLeft: 8,\n },\n spacer: {\n height: 28,\n width: 32, // same as BASE_AVATAR_SIZE\n },\n },\n card: {\n authorName: {},\n authorNameContainer: {},\n authorNameFooter: {},\n authorNameFooterContainer: {},\n authorNameMask: {},\n container: {},\n cover: {},\n footer: {\n description: {},\n title: {\n fontWeight: '700',\n },\n },\n noURI: {\n borderLeftWidth: 2,\n paddingLeft: 8,\n },\n playButtonStyle: {\n durationTextStyle: {},\n roundedView: {},\n videoContainer: {},\n },\n playIcon: {\n height: 24,\n width: 24,\n },\n },\n container: {},\n content: {\n container: {\n borderRadiusL: 16,\n borderRadiusS: 0,\n },\n containerInner: {},\n deletedContainer: {},\n deletedContainerInner: {},\n deletedMetaText: {\n paddingHorizontal: 5,\n },\n deletedText: {\n em: {\n fontSize: 15,\n fontStyle: 'italic',\n fontWeight: '400',\n },\n },\n errorContainer: {\n paddingRight: 12,\n paddingTop: 0,\n },\n errorIcon: {\n height: 20,\n width: 20,\n },\n errorIconContainer: {\n bottom: -2,\n position: 'absolute',\n right: -12,\n },\n eyeIcon: {\n height: 16,\n width: 16,\n },\n markdown: {},\n messageUser: {\n fontSize: 12,\n fontWeight: '700',\n paddingRight: 6,\n },\n metaContainer: {\n flexDirection: 'row',\n marginTop: 4,\n },\n metaText: {\n fontSize: 12,\n },\n replyBorder: {},\n replyContainer: {},\n textContainer: {\n onlyEmojiMarkdown: { text: { fontSize: 50 } },\n },\n wrapper: {},\n },\n file: {\n container: {},\n details: {},\n fileSize: {},\n icon: {},\n title: {},\n },\n fileAttachmentGroup: {\n container: {},\n },\n gallery: {\n galleryContainer: {},\n galleryItemColumn: {},\n gridHeight: 195,\n gridWidth: 256,\n image: {},\n imageContainer: {},\n maxHeight: 300,\n maxWidth: 256,\n minHeight: 100,\n minWidth: 170,\n moreImagesContainer: {},\n moreImagesText: {},\n },\n giphy: {\n buttonContainer: {},\n cancel: {},\n container: {},\n giphy: {},\n giphyContainer: {},\n giphyHeaderText: {},\n giphyHeaderTitle: {},\n giphyMask: {},\n giphyMaskText: {},\n header: {},\n selectionContainer: {},\n send: {},\n shuffle: {},\n title: {},\n },\n loadingIndicator: {\n container: {},\n roundedView: {},\n },\n pinnedHeader: {\n container: {},\n label: {},\n },\n reactionList: {\n container: {},\n middleIcon: {},\n radius: 2, // not recommended to change this\n reactionBubble: {},\n reactionBubbleBackground: {},\n reactionSize: 24,\n strokeSize: 1, // not recommended to change this\n },\n replies: {\n avatar: {},\n avatarContainerMultiple: {},\n avatarContainerSingle: {},\n container: {},\n leftAvatarsContainer: {},\n leftCurve: {},\n messageRepliesText: {},\n rightAvatarsContainer: {},\n rightCurve: {},\n },\n status: {\n checkAllIcon: {\n height: DEFAULT_STATUS_ICON_SIZE,\n width: DEFAULT_STATUS_ICON_SIZE,\n },\n checkIcon: {\n height: DEFAULT_STATUS_ICON_SIZE,\n width: DEFAULT_STATUS_ICON_SIZE,\n },\n readByCount: {},\n statusContainer: {},\n timeIcon: {\n height: DEFAULT_STATUS_ICON_SIZE,\n width: DEFAULT_STATUS_ICON_SIZE,\n },\n },\n targetedMessageUnderlay: {},\n videoThumbnail: {\n container: {},\n roundedView: {},\n },\n },\n overlay: {\n container: {},\n messageActions: {\n actionContainer: {},\n icon: {},\n title: {},\n },\n padding: 8,\n reactions: {\n avatarContainer: {},\n avatarName: {},\n avatarSize: 64,\n container: {},\n flatListContainer: {},\n radius: 2,\n reactionBubble: {},\n reactionBubbleBackground: {},\n title: {},\n },\n reactionsList: {\n radius: 2.5,\n reaction: {},\n reactionList: {},\n reactionSize: 24,\n },\n },\n reply: {\n container: {},\n fileAttachmentContainer: {},\n imageAttachment: {},\n markdownStyles: {},\n messageContainer: {},\n textContainer: {},\n videoThumbnail: {\n container: {},\n image: {},\n },\n },\n screenPadding: 8,\n spinner: {},\n thread: {\n newThread: {\n text: {},\n },\n },\n typingIndicator: {\n container: {},\n text: {\n fontSize: 14,\n },\n },\n};\n"]}
1
+ {"version":3,"sources":["theme.ts"],"names":["DEFAULT_STATUS_ICON_SIZE","Colors","accent_blue","accent_green","accent_red","bg_gradient_end","bg_gradient_start","black","blue_alice","border","grey","grey_dark","grey_gainsboro","grey_whisper","icon_background","label_bg_transparent","light_gray","modal_shadow","overlay","shadow_icon","static_black","static_white","targetedMessageBackground","transparent","white","white_smoke","white_snow","defaultTheme","attachmentPicker","bottomSheetContentContainer","durationText","errorButtonText","errorContainer","errorText","image","imageOverlay","imageOverlaySelectedComponent","check","attachmentSelectionBar","container","icon","avatar","BASE_AVATAR_SIZE","borderRadius","height","width","presenceIndicator","cx","cy","r","strokeWidth","presenceIndicatorContainer","channel","selectChannel","channelListFooterLoadingIndicator","channelListHeaderErrorIndicator","channelListLoadingIndicator","channelListMessenger","flatList","flatListContent","channelListSkeleton","animationTime","background","gradientStart","stopOpacity","gradientStop","channelPreview","checkAllIcon","checkIcon","contentContainer","date","message","fontWeight","mutedStatus","iconStyle","row","title","unreadContainer","unreadText","colors","dateHeader","text","emptyStateIndicator","channelContainer","channelDetails","channelTitle","groupAvatar","resizeMode","iconBadge","iconInner","unreadCount","iconSquare","imageGallery","footer","centerContainer","imageCountText","innerContainer","leftContainer","rightContainer","grid","gridAvatar","gridAvatarWrapper","gridImage","handle","handleText","header","dateText","usernameText","videoControl","durationTextStyle","roundedView","videoContainer","inlineDateSeparator","loadingDots","loadingDot","spacing","loadingErrorIndicator","retryText","loadingIndicator","loadingText","messageInput","attachButton","attachButtonContainer","autoCompleteInputContainer","commandsButton","commandsButtonContainer","composerContainer","cooldownTimer","editingBoxContainer","editingBoxHeader","editingBoxHeaderTitle","editingStateHeader","fileUploadPreview","audioAttachment","progressControlView","progressDurationText","audioAttachmentFileContainer","dismiss","fileContainer","fileContentContainer","filenameText","fileSizeText","fileTextContainer","giphyCommandInput","giphyContainer","giphyText","imageUploadPreview","dismissIconColor","itemContainer","upload","inputBox","inputBoxContainer","moreOptionsButton","optionsContainer","replyContainer","sendButton","sendButtonContainer","sendMessageDisallowedIndicator","showThreadMessageInChannelButton","checkBoxActive","checkBoxInactive","suggestions","command","args","iconContainer","maxHeight","emoji","item","mention","avatarSize","column","name","tag","suggestionsListContainer","flatlist","uploadProgressIndicator","messageList","errorNotification","errorNotificationText","inlineUnreadIndicator","listContainer","messageSystem","line","textContainer","scrollToBottomButton","touchable","unreadCountNotificationContainer","unreadCountNotificationText","wrapper","typingIndicatorContainer","messageSimple","actions","button","buttonText","avatarWrapper","leftAlign","marginRight","rightAlign","marginLeft","spacer","card","authorName","authorNameContainer","authorNameFooter","authorNameFooterContainer","authorNameMask","cover","description","noURI","borderLeftWidth","paddingLeft","playButtonStyle","playIcon","content","borderRadiusL","borderRadiusS","containerInner","deletedContainer","deletedContainerInner","deletedMetaText","paddingHorizontal","deletedText","em","fontSize","fontStyle","paddingRight","paddingTop","errorIcon","errorIconContainer","bottom","position","right","eyeIcon","markdown","messageUser","metaContainer","flexDirection","marginTop","metaText","replyBorder","onlyEmojiMarkdown","file","details","fileSize","fileAttachmentGroup","gallery","galleryContainer","galleryItemColumn","gridHeight","gridWidth","imageContainer","maxWidth","minHeight","minWidth","moreImagesContainer","moreImagesText","giphy","buttonContainer","cancel","giphyHeaderText","giphyHeaderTitle","giphyMask","giphyMaskText","selectionContainer","send","shuffle","pinnedHeader","label","reactionList","middleIcon","radius","reactionBubble","reactionBubbleBackground","reactionSize","strokeSize","replies","avatarContainerMultiple","avatarContainerSingle","leftAvatarsContainer","leftCurve","messageRepliesText","rightAvatarsContainer","rightCurve","status","readByCount","statusContainer","timeIcon","targetedMessageUnderlay","videoThumbnail","messageActions","actionContainer","padding","reactions","avatarContainer","avatarName","flatListContainer","reactionsList","reaction","reply","fileAttachmentContainer","imageAttachment","markdownStyles","messageContainer","screenPadding","spinner","thread","newThread","typingIndicator"],"mappings":"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","sourcesContent":["import type { ImageStyle, TextStyle, ViewStyle } from 'react-native';\nimport type { CircleProps, Color, StopProps } from 'react-native-svg';\n\nimport type { IconProps } from '../../../icons/utils/base';\nimport { vh } from '../../../utils/utils';\n\nexport const DEFAULT_STATUS_ICON_SIZE = 16;\n\nexport const Colors = {\n accent_blue: '#005FFF',\n accent_green: '#20E070',\n accent_red: '#FF3742',\n bg_gradient_end: '#F7F7F7',\n bg_gradient_start: '#FCFCFC',\n black: '#000000',\n blue_alice: '#E9F2FF',\n border: '#00000014', // 14 = 8% opacity; top: x=0, y=-1; bottom: x=0, y=1\n grey: '#7A7A7A',\n grey_dark: '#72767E',\n grey_gainsboro: '#DBDBDB',\n grey_whisper: '#ECEBEB',\n icon_background: '#FFFFFF',\n label_bg_transparent: '#00000033', // 33 = 20% opacity\n light_gray: '#DBDDE1',\n modal_shadow: '#00000099', // 99 = 60% opacity; x=0, y= 1, radius=4\n overlay: '#000000CC', // CC = 80% opacity\n shadow_icon: '#00000040', // 40 = 25% opacity; x=0, y=0, radius=4\n static_black: '#000000',\n static_white: '#ffffff',\n targetedMessageBackground: '#FBF4DD', // dark mode = #302D22\n transparent: 'transparent',\n white: '#FFFFFF',\n white_smoke: '#F2F2F2',\n white_snow: '#FCFCFC',\n};\n\nexport type MarkdownStyle = Partial<{\n autolink: TextStyle;\n blockQuoteBar: ViewStyle;\n blockQuoteSection: ViewStyle;\n blockQuoteSectionBar: ViewStyle;\n blockQuoteText: TextStyle | ViewStyle;\n br: TextStyle;\n codeBlock: TextStyle;\n del: TextStyle;\n em: TextStyle;\n heading: TextStyle;\n heading1: TextStyle;\n heading2: TextStyle;\n heading3: TextStyle;\n heading4: TextStyle;\n heading5: TextStyle;\n heading6: TextStyle;\n hr: ViewStyle;\n image: ImageStyle;\n inlineCode: TextStyle;\n list: ViewStyle;\n listItem: ViewStyle;\n listItemBullet: TextStyle;\n listItemNumber: TextStyle;\n listItemText: TextStyle;\n listRow: ViewStyle;\n mailTo: TextStyle;\n mentions: TextStyle;\n newline: TextStyle;\n noMargin: TextStyle;\n paragraph: TextStyle;\n paragraphCenter: TextStyle;\n paragraphWithImage: ViewStyle;\n strong: TextStyle;\n sublist: ViewStyle;\n table: ViewStyle;\n tableHeader: ViewStyle;\n tableHeaderCell: TextStyle;\n tableRow: ViewStyle;\n tableRowCell: ViewStyle;\n tableRowLast: ViewStyle;\n text: TextStyle;\n u: TextStyle;\n view: ViewStyle;\n}>;\n\nexport type Theme = {\n attachmentPicker: {\n bottomSheetContentContainer: ViewStyle;\n durationText: TextStyle;\n errorButtonText: TextStyle;\n errorContainer: ViewStyle;\n errorText: TextStyle;\n image: ViewStyle;\n imageOverlay: ViewStyle;\n imageOverlaySelectedComponent: {\n check: ViewStyle;\n };\n };\n attachmentSelectionBar: {\n container: ViewStyle;\n icon: ViewStyle;\n };\n avatar: {\n BASE_AVATAR_SIZE: number;\n container: ViewStyle;\n image: ImageStyle;\n presenceIndicator: CircleProps;\n presenceIndicatorContainer: ViewStyle;\n };\n channel: {\n selectChannel: TextStyle;\n };\n channelListFooterLoadingIndicator: {\n container: ViewStyle;\n };\n channelListHeaderErrorIndicator: {\n container: ViewStyle;\n errorText: TextStyle;\n };\n channelListLoadingIndicator: {\n container: ViewStyle;\n };\n channelListMessenger: {\n flatList: ViewStyle;\n flatListContent: ViewStyle;\n };\n channelListSkeleton: {\n animationTime: number;\n background: ViewStyle;\n container: ViewStyle;\n gradientStart: StopProps;\n gradientStop: StopProps;\n height: number;\n maskFillColor?: Color;\n };\n channelPreview: {\n checkAllIcon: IconProps;\n checkIcon: IconProps;\n container: ViewStyle;\n contentContainer: ViewStyle;\n date: TextStyle;\n message: TextStyle & {\n fontWeight: TextStyle['fontWeight'];\n };\n mutedStatus: {\n height: number;\n iconStyle: ViewStyle;\n width: number;\n };\n row: ViewStyle;\n title: TextStyle;\n unreadContainer: ViewStyle;\n unreadText: TextStyle;\n };\n colors: typeof Colors & { [key: string]: string };\n dateHeader: {\n container: ViewStyle;\n text: TextStyle;\n };\n emptyStateIndicator: {\n channelContainer: ViewStyle;\n channelDetails: TextStyle;\n channelTitle: TextStyle;\n };\n groupAvatar: {\n container: ViewStyle;\n image: ImageStyle;\n };\n iconBadge: {\n icon: ViewStyle;\n iconInner: ViewStyle;\n unreadCount: TextStyle;\n };\n iconSquare: {\n container: ViewStyle;\n image: ImageStyle;\n };\n imageGallery: {\n footer: {\n centerContainer: ViewStyle;\n container: ViewStyle;\n imageCountText: TextStyle;\n innerContainer: ViewStyle;\n leftContainer: ViewStyle;\n rightContainer: ViewStyle;\n };\n grid: {\n container: ViewStyle;\n contentContainer: ViewStyle;\n gridAvatar: ImageStyle;\n gridAvatarWrapper: ViewStyle;\n gridImage: ViewStyle;\n handle: ViewStyle;\n handleText: TextStyle;\n overlay: ViewStyle;\n };\n header: {\n centerContainer: ViewStyle;\n container: ViewStyle;\n dateText: TextStyle;\n innerContainer: ViewStyle;\n leftContainer: ViewStyle;\n rightContainer: ViewStyle;\n usernameText: TextStyle;\n };\n videoControl: {\n durationTextStyle: TextStyle;\n roundedView: ViewStyle;\n videoContainer: ViewStyle;\n };\n backgroundColor?: string;\n pager?: ViewStyle;\n slide?: ImageStyle;\n };\n inlineDateSeparator: {\n container: ViewStyle;\n text: TextStyle;\n };\n loadingDots: {\n container: ViewStyle;\n loadingDot: ViewStyle;\n spacing: number;\n };\n loadingErrorIndicator: {\n container: ViewStyle;\n errorText: TextStyle;\n retryText: TextStyle;\n };\n loadingIndicator: {\n container: ViewStyle;\n loadingText: TextStyle;\n };\n messageInput: {\n attachButton: ViewStyle;\n attachButtonContainer: ViewStyle;\n attachmentSelectionBar: ViewStyle;\n autoCompleteInputContainer: ViewStyle;\n commandsButton: ViewStyle;\n commandsButtonContainer: ViewStyle;\n composerContainer: ViewStyle;\n container: ViewStyle;\n cooldownTimer: {\n container: ViewStyle;\n text: TextStyle;\n };\n editingBoxContainer: ViewStyle;\n editingBoxHeader: ViewStyle;\n editingBoxHeaderTitle: TextStyle;\n editingStateHeader: {\n editingBoxHeader: ViewStyle;\n editingBoxHeaderTitle: TextStyle;\n };\n fileUploadPreview: {\n audioAttachment: {\n progressControlView: ViewStyle;\n progressDurationText: TextStyle;\n roundedView: ViewStyle;\n };\n audioAttachmentFileContainer: ViewStyle;\n dismiss: ViewStyle;\n fileContainer: ViewStyle;\n fileContentContainer: ViewStyle;\n filenameText: TextStyle;\n fileSizeText: TextStyle;\n fileTextContainer: ViewStyle;\n flatList: ViewStyle;\n };\n giphyCommandInput: {\n giphyContainer: ViewStyle;\n giphyText: TextStyle;\n };\n imageUploadPreview: {\n dismiss: ViewStyle;\n dismissIconColor: Color;\n flatList: ViewStyle;\n itemContainer: ViewStyle;\n upload: ImageStyle;\n };\n inputBox: TextStyle;\n inputBoxContainer: ViewStyle;\n moreOptionsButton: ViewStyle;\n optionsContainer: ViewStyle;\n replyContainer: ViewStyle;\n sendButton: ViewStyle;\n sendButtonContainer: ViewStyle;\n sendMessageDisallowedIndicator: {\n container: ViewStyle;\n text: TextStyle;\n };\n showThreadMessageInChannelButton: {\n check: IconProps;\n checkBoxActive: ViewStyle;\n checkBoxInactive: ViewStyle;\n container: ViewStyle;\n innerContainer: ViewStyle;\n text: TextStyle;\n };\n suggestions: {\n command: {\n args: TextStyle;\n container: ViewStyle;\n iconContainer: ViewStyle;\n title: TextStyle;\n };\n container: ViewStyle & {\n maxHeight: number;\n };\n emoji: {\n container: ViewStyle;\n text: TextStyle;\n };\n header: {\n container: ViewStyle;\n title: TextStyle;\n };\n item: ViewStyle;\n mention: {\n avatarSize: number;\n column: ViewStyle;\n container: ViewStyle;\n name: TextStyle;\n tag: TextStyle;\n };\n };\n suggestionsListContainer: {\n container: ViewStyle;\n flatlist: ViewStyle;\n };\n uploadProgressIndicator: {\n container: ViewStyle;\n overlay: ViewStyle;\n };\n };\n messageList: {\n container: ViewStyle;\n contentContainer: ViewStyle;\n errorNotification: ViewStyle;\n errorNotificationText: TextStyle;\n inlineUnreadIndicator: {\n container: ViewStyle;\n text: TextStyle;\n };\n listContainer: ViewStyle;\n messageSystem: {\n container: ViewStyle;\n dateText: TextStyle;\n line: ViewStyle;\n text: TextStyle;\n textContainer: ViewStyle;\n };\n scrollToBottomButton: {\n container: ViewStyle;\n touchable: ViewStyle;\n unreadCountNotificationContainer: ViewStyle;\n unreadCountNotificationText: TextStyle;\n wrapper: ViewStyle;\n chevronColor?: Color;\n };\n typingIndicatorContainer: ViewStyle;\n };\n messageSimple: {\n actions: {\n button: ViewStyle & {\n defaultBackgroundColor?: ViewStyle['backgroundColor'];\n defaultBorderColor?: ViewStyle['borderColor'];\n primaryBackgroundColor?: ViewStyle['backgroundColor'];\n primaryBorderColor?: ViewStyle['borderColor'];\n };\n buttonText: TextStyle & {\n defaultColor?: TextStyle['color'];\n primaryColor?: TextStyle['color'];\n };\n container: ViewStyle;\n };\n avatarWrapper: {\n container: ViewStyle;\n leftAlign: ViewStyle;\n rightAlign: ViewStyle;\n spacer: ViewStyle;\n };\n card: {\n authorName: TextStyle;\n authorNameContainer: ViewStyle;\n authorNameFooter: TextStyle;\n authorNameFooterContainer: ViewStyle;\n authorNameMask: ViewStyle;\n container: ViewStyle;\n cover: ImageStyle;\n footer: ViewStyle & {\n description: TextStyle;\n title: TextStyle;\n };\n noURI: ViewStyle;\n playButtonStyle: {\n durationTextStyle: TextStyle;\n roundedView: ViewStyle;\n videoContainer: ViewStyle;\n };\n playIcon: IconProps;\n };\n container: ViewStyle;\n content: {\n container: ViewStyle & {\n borderRadiusL: ViewStyle['borderBottomLeftRadius' | 'borderTopLeftRadius'];\n borderRadiusS: ViewStyle['borderBottomRightRadius' | 'borderTopRightRadius'];\n };\n containerInner: ViewStyle;\n deletedContainer: ViewStyle;\n deletedContainerInner: ViewStyle;\n deletedMetaText: TextStyle;\n deletedText: MarkdownStyle;\n errorContainer: ViewStyle;\n errorIcon: IconProps;\n errorIconContainer: ViewStyle;\n eyeIcon: IconProps;\n /**\n * Available options for styling text:\n * https://github.com/andangrd/react-native-markdown-package/blob/main/styles.js\n */\n markdown: MarkdownStyle;\n messageUser: TextStyle;\n metaContainer: ViewStyle;\n metaText: TextStyle;\n replyBorder: ViewStyle;\n replyContainer: ViewStyle;\n textContainer: ViewStyle & {\n onlyEmojiMarkdown: MarkdownStyle;\n };\n wrapper: ViewStyle;\n };\n file: {\n container: ViewStyle;\n details: ViewStyle;\n fileSize: TextStyle;\n icon: IconProps;\n title: TextStyle;\n };\n fileAttachmentGroup: {\n container: ViewStyle;\n };\n gallery: {\n galleryContainer: ViewStyle;\n galleryItemColumn: ViewStyle;\n gridHeight: number;\n gridWidth: number;\n image: ImageStyle;\n imageContainer: ViewStyle;\n maxHeight: number;\n maxWidth: number;\n minHeight: number;\n minWidth: number;\n moreImagesContainer: ViewStyle;\n moreImagesText: TextStyle;\n };\n giphy: {\n buttonContainer: ViewStyle;\n cancel: TextStyle;\n container: ViewStyle;\n giphy: ImageStyle;\n giphyContainer: ViewStyle;\n giphyHeaderText: TextStyle;\n giphyHeaderTitle: TextStyle;\n giphyMask: ViewStyle;\n giphyMaskText: TextStyle;\n header: ViewStyle;\n selectionContainer: ViewStyle;\n send: TextStyle;\n shuffle: TextStyle;\n title: TextStyle;\n };\n loadingIndicator: {\n container: ViewStyle;\n roundedView: ViewStyle;\n };\n pinnedHeader: {\n container: ViewStyle;\n label: TextStyle;\n };\n reactionList: {\n container: ViewStyle;\n middleIcon: ViewStyle;\n radius: number;\n reactionBubble: ViewStyle;\n reactionBubbleBackground: ViewStyle;\n reactionSize: number;\n strokeSize: number;\n };\n replies: {\n avatar: ViewStyle;\n avatarContainerMultiple: ViewStyle;\n avatarContainerSingle: ViewStyle;\n container: ViewStyle;\n leftAvatarsContainer: ViewStyle;\n leftCurve: ViewStyle;\n messageRepliesText: TextStyle;\n rightAvatarsContainer: ViewStyle;\n rightCurve: ViewStyle;\n avatarSize?: number;\n };\n status: {\n checkAllIcon: IconProps;\n checkIcon: IconProps;\n readByCount: TextStyle;\n statusContainer: ViewStyle;\n timeIcon: IconProps;\n };\n targetedMessageUnderlay: ViewStyle;\n videoThumbnail: {\n container: ViewStyle;\n roundedView: ViewStyle;\n };\n };\n overlay: {\n container: ViewStyle;\n messageActions: {\n actionContainer: ViewStyle;\n icon: ViewStyle;\n title: TextStyle;\n };\n padding: number;\n reactions: {\n avatarContainer: ViewStyle;\n avatarName: TextStyle;\n avatarSize: number;\n container: ViewStyle;\n flatListContainer: ViewStyle;\n radius: number;\n reactionBubble: ViewStyle;\n reactionBubbleBackground: ViewStyle;\n title: TextStyle;\n };\n reactionsList: {\n radius: number;\n reaction: ViewStyle;\n reactionList: ViewStyle;\n reactionSize: number;\n };\n };\n reply: {\n container: ViewStyle;\n fileAttachmentContainer: ViewStyle;\n imageAttachment: ImageStyle;\n markdownStyles: MarkdownStyle;\n messageContainer: ViewStyle;\n textContainer: ViewStyle;\n videoThumbnail: {\n container: ViewStyle;\n image: ImageStyle;\n };\n };\n screenPadding: number;\n spinner: ViewStyle;\n thread: {\n newThread: ViewStyle & {\n text: TextStyle;\n backgroundGradientStart?: string;\n backgroundGradientStop?: string;\n };\n };\n typingIndicator: {\n container: ViewStyle;\n text: TextStyle & {\n fontSize: TextStyle['fontSize'];\n };\n };\n};\n\nexport const defaultTheme: Theme = {\n attachmentPicker: {\n bottomSheetContentContainer: {},\n durationText: {},\n errorButtonText: {},\n errorContainer: {},\n errorText: {},\n image: {},\n imageOverlay: {},\n imageOverlaySelectedComponent: {\n check: {},\n },\n },\n attachmentSelectionBar: {\n container: {},\n icon: {},\n },\n avatar: {\n BASE_AVATAR_SIZE: 32,\n container: {},\n image: {\n borderRadius: 16,\n height: 32,\n width: 32,\n },\n presenceIndicator: {\n cx: 6,\n cy: 6,\n r: 5,\n strokeWidth: 2,\n },\n presenceIndicatorContainer: {},\n },\n channel: {\n selectChannel: {},\n },\n channelListFooterLoadingIndicator: {\n container: {},\n },\n channelListHeaderErrorIndicator: {\n container: {},\n errorText: {},\n },\n channelListLoadingIndicator: {\n container: {},\n },\n channelListMessenger: {\n flatList: {},\n flatListContent: {},\n },\n channelListSkeleton: {\n animationTime: 1800, // in milliseconds\n background: {},\n container: {},\n gradientStart: {\n stopOpacity: 0,\n },\n gradientStop: {\n stopOpacity: 0.5,\n },\n height: 64,\n },\n channelPreview: {\n checkAllIcon: {\n height: DEFAULT_STATUS_ICON_SIZE,\n width: DEFAULT_STATUS_ICON_SIZE,\n },\n checkIcon: {\n height: DEFAULT_STATUS_ICON_SIZE,\n width: DEFAULT_STATUS_ICON_SIZE,\n },\n container: {},\n contentContainer: {},\n date: {},\n message: {\n fontWeight: '400',\n },\n mutedStatus: {\n height: 20,\n iconStyle: {},\n width: 20,\n },\n row: {},\n title: {},\n unreadContainer: {},\n unreadText: {},\n },\n colors: {\n ...Colors,\n },\n dateHeader: {\n container: {},\n text: {},\n },\n emptyStateIndicator: {\n channelContainer: {},\n channelDetails: {},\n channelTitle: {},\n },\n groupAvatar: {\n container: {},\n image: {\n resizeMode: 'cover',\n },\n },\n iconBadge: {\n icon: {},\n iconInner: {},\n unreadCount: {},\n },\n iconSquare: {\n container: {},\n image: {},\n },\n imageGallery: {\n footer: {\n centerContainer: {},\n container: {},\n imageCountText: {},\n innerContainer: {},\n leftContainer: {},\n rightContainer: {},\n },\n grid: {\n container: {},\n contentContainer: {},\n gridAvatar: {},\n gridAvatarWrapper: {},\n gridImage: {},\n handle: {},\n handleText: {},\n overlay: {},\n },\n header: {\n centerContainer: {},\n container: {},\n dateText: {},\n innerContainer: {},\n leftContainer: {},\n rightContainer: {},\n usernameText: {},\n },\n videoControl: {\n durationTextStyle: {},\n roundedView: {},\n videoContainer: {},\n },\n },\n inlineDateSeparator: {\n container: {},\n text: {},\n },\n loadingDots: {\n container: {},\n loadingDot: {},\n spacing: 4,\n },\n loadingErrorIndicator: {\n container: {},\n errorText: {},\n retryText: {},\n },\n loadingIndicator: {\n container: {},\n loadingText: {},\n },\n messageInput: {\n attachButton: {},\n attachButtonContainer: {},\n attachmentSelectionBar: {},\n autoCompleteInputContainer: {},\n commandsButton: {},\n commandsButtonContainer: {},\n composerContainer: {},\n container: {},\n cooldownTimer: {\n container: {},\n text: {},\n },\n editingBoxContainer: {},\n editingBoxHeader: {},\n editingBoxHeaderTitle: {},\n editingStateHeader: {\n editingBoxHeader: {},\n editingBoxHeaderTitle: {},\n },\n fileUploadPreview: {\n audioAttachment: {\n progressControlView: {},\n progressDurationText: {},\n roundedView: {},\n },\n audioAttachmentFileContainer: {},\n dismiss: {},\n fileContainer: {},\n fileContentContainer: {},\n filenameText: {},\n fileSizeText: {},\n fileTextContainer: {},\n flatList: {},\n },\n giphyCommandInput: {\n giphyContainer: {},\n giphyText: {},\n },\n imageUploadPreview: {\n dismiss: {},\n dismissIconColor: '',\n flatList: {},\n itemContainer: {},\n upload: {},\n },\n inputBox: {},\n inputBoxContainer: {},\n moreOptionsButton: {},\n optionsContainer: {},\n replyContainer: {},\n sendButton: {},\n sendButtonContainer: {},\n sendMessageDisallowedIndicator: {\n container: {},\n text: {},\n },\n showThreadMessageInChannelButton: {\n check: {},\n checkBoxActive: {},\n checkBoxInactive: {},\n container: {},\n innerContainer: {},\n text: {},\n },\n suggestions: {\n command: {\n args: {},\n container: {},\n iconContainer: {},\n title: {},\n },\n container: {\n maxHeight: vh(25),\n },\n emoji: {\n container: {},\n text: {},\n },\n header: {\n container: {},\n title: {},\n },\n item: {},\n mention: {\n avatarSize: 40,\n column: {},\n container: {},\n name: {},\n tag: {},\n },\n },\n suggestionsListContainer: {\n container: {},\n flatlist: {},\n },\n uploadProgressIndicator: {\n container: {},\n overlay: {},\n },\n },\n messageList: {\n container: {},\n contentContainer: {},\n errorNotification: {},\n errorNotificationText: {},\n inlineUnreadIndicator: {\n container: {},\n text: {},\n },\n listContainer: {},\n messageSystem: {\n container: {},\n dateText: {},\n line: {},\n text: {},\n textContainer: {},\n },\n scrollToBottomButton: {\n container: {},\n touchable: {},\n unreadCountNotificationContainer: {},\n unreadCountNotificationText: {},\n wrapper: {},\n },\n typingIndicatorContainer: {},\n },\n messageSimple: {\n actions: {\n button: {},\n buttonText: {},\n container: {},\n },\n avatarWrapper: {\n container: {},\n leftAlign: {\n marginRight: 8,\n },\n rightAlign: {\n marginLeft: 8,\n },\n spacer: {\n height: 28,\n width: 32, // same as BASE_AVATAR_SIZE\n },\n },\n card: {\n authorName: {},\n authorNameContainer: {},\n authorNameFooter: {},\n authorNameFooterContainer: {},\n authorNameMask: {},\n container: {},\n cover: {},\n footer: {\n description: {},\n title: {\n fontWeight: '700',\n },\n },\n noURI: {\n borderLeftWidth: 2,\n paddingLeft: 8,\n },\n playButtonStyle: {\n durationTextStyle: {},\n roundedView: {},\n videoContainer: {},\n },\n playIcon: {\n height: 24,\n width: 24,\n },\n },\n container: {},\n content: {\n container: {\n borderRadiusL: 16,\n borderRadiusS: 0,\n },\n containerInner: {},\n deletedContainer: {},\n deletedContainerInner: {},\n deletedMetaText: {\n paddingHorizontal: 5,\n },\n deletedText: {\n em: {\n fontSize: 15,\n fontStyle: 'italic',\n fontWeight: '400',\n },\n },\n errorContainer: {\n paddingRight: 12,\n paddingTop: 0,\n },\n errorIcon: {\n height: 20,\n width: 20,\n },\n errorIconContainer: {\n bottom: -2,\n position: 'absolute',\n right: -12,\n },\n eyeIcon: {\n height: 16,\n width: 16,\n },\n markdown: {},\n messageUser: {\n fontSize: 12,\n fontWeight: '700',\n paddingRight: 6,\n },\n metaContainer: {\n flexDirection: 'row',\n marginTop: 4,\n },\n metaText: {\n fontSize: 12,\n },\n replyBorder: {},\n replyContainer: {},\n textContainer: {\n onlyEmojiMarkdown: { text: { fontSize: 50 } },\n },\n wrapper: {},\n },\n file: {\n container: {},\n details: {},\n fileSize: {},\n icon: {},\n title: {},\n },\n fileAttachmentGroup: {\n container: {},\n },\n gallery: {\n galleryContainer: {},\n galleryItemColumn: {},\n gridHeight: 195,\n gridWidth: 256,\n image: {},\n imageContainer: {},\n maxHeight: 300,\n maxWidth: 256,\n minHeight: 100,\n minWidth: 170,\n moreImagesContainer: {},\n moreImagesText: {},\n },\n giphy: {\n buttonContainer: {},\n cancel: {},\n container: {},\n giphy: {},\n giphyContainer: {},\n giphyHeaderText: {},\n giphyHeaderTitle: {},\n giphyMask: {},\n giphyMaskText: {},\n header: {},\n selectionContainer: {},\n send: {},\n shuffle: {},\n title: {},\n },\n loadingIndicator: {\n container: {},\n roundedView: {},\n },\n pinnedHeader: {\n container: {},\n label: {},\n },\n reactionList: {\n container: {},\n middleIcon: {},\n radius: 2, // not recommended to change this\n reactionBubble: {},\n reactionBubbleBackground: {},\n reactionSize: 24,\n strokeSize: 1, // not recommended to change this\n },\n replies: {\n avatar: {},\n avatarContainerMultiple: {},\n avatarContainerSingle: {},\n container: {},\n leftAvatarsContainer: {},\n leftCurve: {},\n messageRepliesText: {},\n rightAvatarsContainer: {},\n rightCurve: {},\n },\n status: {\n checkAllIcon: {\n height: DEFAULT_STATUS_ICON_SIZE,\n width: DEFAULT_STATUS_ICON_SIZE,\n },\n checkIcon: {\n height: DEFAULT_STATUS_ICON_SIZE,\n width: DEFAULT_STATUS_ICON_SIZE,\n },\n readByCount: {},\n statusContainer: {},\n timeIcon: {\n height: DEFAULT_STATUS_ICON_SIZE,\n width: DEFAULT_STATUS_ICON_SIZE,\n },\n },\n targetedMessageUnderlay: {},\n videoThumbnail: {\n container: {},\n roundedView: {},\n },\n },\n overlay: {\n container: {},\n messageActions: {\n actionContainer: {},\n icon: {},\n title: {},\n },\n padding: 8,\n reactions: {\n avatarContainer: {},\n avatarName: {},\n avatarSize: 64,\n container: {},\n flatListContainer: {},\n radius: 2,\n reactionBubble: {},\n reactionBubbleBackground: {},\n title: {},\n },\n reactionsList: {\n radius: 2.5,\n reaction: {},\n reactionList: {},\n reactionSize: 24,\n },\n },\n reply: {\n container: {},\n fileAttachmentContainer: {},\n imageAttachment: {},\n markdownStyles: {},\n messageContainer: {},\n textContainer: {},\n videoThumbnail: {\n container: {},\n image: {},\n },\n },\n screenPadding: 8,\n spinner: {},\n thread: {\n newThread: {\n text: {},\n },\n },\n typingIndicator: {\n container: {},\n text: {\n fontSize: 14,\n },\n },\n};\n"]}