stream-chat-react-native-core 4.2.0-beta.3 → 4.3.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Attachment/Giphy.js +71 -31
- package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
- package/lib/commonjs/components/Channel/Channel.js +28 -13
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +6 -0
- package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/ImageGallery.js +24 -21
- package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/commonjs/components/MessageInput/MessageInput.js +50 -173
- package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/InputEditingStateHeader.js +138 -0
- package/lib/commonjs/components/MessageInput/components/InputEditingStateHeader.js.map +1 -0
- package/lib/commonjs/components/MessageInput/components/InputGiphySearch.js +179 -0
- package/lib/commonjs/components/MessageInput/components/InputGiphySearch.js.map +1 -0
- package/lib/commonjs/components/MessageInput/components/InputReplyStateHeader.js +138 -0
- package/lib/commonjs/components/MessageInput/components/InputReplyStateHeader.js.map +1 -0
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +2 -2
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +6 -0
- package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayContext.js +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +15 -12
- package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js +8 -2
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Giphy.js +71 -31
- package/lib/module/components/Attachment/Giphy.js.map +1 -1
- package/lib/module/components/Channel/Channel.js +28 -13
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +6 -0
- package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
- package/lib/module/components/ImageGallery/ImageGallery.js +24 -21
- package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageContent.js +1 -1
- package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/module/components/MessageInput/MessageInput.js +50 -173
- package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/module/components/MessageInput/components/InputEditingStateHeader.js +138 -0
- package/lib/module/components/MessageInput/components/InputEditingStateHeader.js.map +1 -0
- package/lib/module/components/MessageInput/components/InputGiphySearch.js +179 -0
- package/lib/module/components/MessageInput/components/InputGiphySearch.js.map +1 -0
- package/lib/module/components/MessageInput/components/InputReplyStateHeader.js +138 -0
- package/lib/module/components/MessageInput/components/InputReplyStateHeader.js.map +1 -0
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +2 -2
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +6 -0
- package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
- package/lib/module/contexts/overlayContext/OverlayContext.js +1 -1
- package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
- package/lib/module/contexts/overlayContext/OverlayProvider.js +15 -12
- package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js +8 -2
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Attachment/Giphy.d.ts +5 -3
- package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -1
- package/lib/typescript/components/ImageGallery/ImageGallery.d.ts +2 -1
- package/lib/typescript/components/MessageInput/MessageInput.d.ts +1 -1
- package/lib/typescript/components/MessageInput/components/InputEditingStateHeader.d.ts +10 -0
- package/lib/typescript/components/MessageInput/components/InputGiphySearch.d.ts +10 -0
- package/lib/typescript/components/MessageInput/components/InputReplyStateHeader.d.ts +10 -0
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts +1 -1
- package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +7 -1
- package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
- package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +5 -0
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts +8 -2
- package/package.json +1 -1
- package/src/components/Attachment/Giphy.tsx +58 -16
- package/src/components/Channel/Channel.tsx +9 -0
- package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +6 -0
- package/src/components/ImageGallery/ImageGallery.tsx +11 -6
- package/src/components/Message/MessageSimple/MessageContent.tsx +1 -1
- package/src/components/MessageInput/MessageInput.tsx +28 -109
- package/src/components/MessageInput/__tests__/__snapshots__/MessageInput.test.js.snap +0 -2
- package/src/components/MessageInput/components/InputEditingStateHeader.tsx +102 -0
- package/src/components/MessageInput/components/InputGiphySearch.tsx +129 -0
- package/src/components/MessageInput/components/InputReplyStateHeader.tsx +102 -0
- package/src/contexts/messageInputContext/MessageInputContext.tsx +9 -0
- package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +6 -0
- package/src/contexts/overlayContext/OverlayContext.tsx +5 -0
- package/src/contexts/overlayContext/OverlayProvider.tsx +2 -0
- package/src/contexts/themeContext/utils/theme.ts +16 -4
- package/src/version.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MessageInput.tsx"],"names":["styles","StyleSheet","create","attachmentSeparator","borderBottomWidth","marginBottom","autoCompleteInputContainer","alignItems","flexDirection","composerContainer","container","borderTopWidth","padding","editingBoxHeader","justifyContent","paddingBottom","editingBoxHeaderTitle","fontSize","fontWeight","giphyContainer","borderRadius","height","marginRight","paddingHorizontal","giphyText","inputBoxContainer","borderWidth","flex","optionsContainer","paddingRight","replyContainer","sendButtonContainer","paddingLeft","suggestionsListContainer","elevation","left","position","right","shadowOffset","width","shadowOpacity","MessageInputWithContext","props","additionalTextInputProps","asyncIds","asyncUploads","AutoCompleteSuggestionList","clearEditingState","clearQuotedMessageState","closeAttachmentPicker","cooldownEndsAt","CooldownTimer","disabled","editing","FileUploadPreview","fileUploads","giphyActive","ImageUploadPreview","imageUploads","Input","inputBoxRef","InputButtons","isValidMessage","maxNumberOfFiles","members","mentionedUsers","numberOfUploads","quotedMessage","removeImage","Reply","resetInput","SendButton","sending","sendMessageAsync","setGiphyActive","setShowMoreOptions","ShowThreadMessageInChannelButton","suggestions","t","thread","threadList","triggerType","uploadNewImage","watchers","setHeight","theme","colors","accent_blue","black","border","grey","grey_gainsboro","grey_whisper","white","white_smoke","messageInput","attachmentSelectionBar","suggestionListContainer","attachmentPickerBottomSheetHeight","attachmentSelectionBarHeight","bottomInset","selectedImages","selectedPicker","setMaxNumberOfFiles","setSelectedImages","cooldownRemainingSeconds","seconds","hasResetImages","setHasResetImages","selectedImagesLength","length","imageUploadsLength","imagesForInput","forEach","image","id","imagesToUpload","filter","selectedImage","uploadedImage","find","imageUpload","file","uri","url","imagesToRemove","updatedSelectedImages","map","source","Boolean","editingExists","current","focus","asyncIdsString","join","asyncUploadsString","Object","values","state","keys","getMembers","result","member","user","push","getUsers","users","getWatchers","uniqueUsers","usersArray","additionalTextInputContainerProps","editable","undefined","newHeight","nativeEvent","layout","backgroundColor","borderColor","color","paddingVertical","quoted_message","borderBottomColor","marginHorizontal","bottom","data","onSelect","queryText","areEqual","prevProps","nextProps","prevAdditionalTextInputProps","prevAsyncUploads","prevDisabled","prevEditing","prevFileUploads","prevGiphyActive","prevImageUploads","prevIsValidMessage","prevMentionedUsers","prevQuotedMessage","prevSending","prevShowMoreOptions","showMoreOptions","prevSuggestions","prevT","prevThread","prevThreadList","nextAdditionalTextInputProps","nextAsyncUploads","nextDisabled","nextEditing","nextFileUploads","nextGiphyActive","nextImageUploads","nextIsValidMessage","nextMentionedUsers","nextQuotedMessage","nextSending","nextShowMoreOptions","nextSuggestions","nextT","nextThread","nextThreadList","tEqual","additionalTextInputPropsEven","disabledEqual","editingEqual","imageUploadsEqual","giphyActiveEqual","quotedMessageEqual","sendingEqual","showMoreOptionsEqual","isValidMessageEqual","asyncUploadsEqual","every","key","fileUploadsEqual","mentionedUsersEqual","suggestionsEqual","index","name","threadEqual","text","reply_count","threadListEqual","MemoizedMessageInput","React","memo","MessageInput","ownCapabilities","SendMessageDisallowedIndicator","AutoCompleteSuggestionHeader","AutoCompleteSuggestionItem","sendMessage","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { useCountdown } from './hooks/useCountdown';\n\nimport { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n SuggestionsContextValue,\n useSuggestionsContext,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport { CircleClose, CurveLineLeftUp, Edit, Lightning } from '../../icons';\n\nimport type { Asset } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { AttachmentSelectionBar } from '../AttachmentPicker/components/AttachmentSelectionBar';\nimport { AutoCompleteInput } from '../AutoCompleteInput/AutoCompleteInput';\n\nconst styles = StyleSheet.create({\n attachmentSeparator: {\n borderBottomWidth: 1,\n marginBottom: 10,\n },\n autoCompleteInputContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n },\n composerContainer: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n container: {\n borderTopWidth: 1,\n padding: 10,\n },\n editingBoxHeader: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingBottom: 10,\n },\n editingBoxHeaderTitle: {\n fontSize: 14,\n fontWeight: 'bold',\n },\n giphyContainer: {\n alignItems: 'center',\n borderRadius: 12,\n flexDirection: 'row',\n height: 24,\n marginRight: 8,\n paddingHorizontal: 8,\n },\n giphyText: {\n fontSize: 12,\n fontWeight: 'bold',\n },\n inputBoxContainer: {\n borderRadius: 20,\n borderWidth: 1,\n flex: 1,\n },\n optionsContainer: {\n flexDirection: 'row',\n paddingBottom: 10,\n paddingRight: 10,\n },\n replyContainer: { paddingBottom: 12, paddingHorizontal: 8 },\n sendButtonContainer: { paddingBottom: 10, paddingLeft: 10 },\n suggestionsListContainer: {\n borderRadius: 10,\n elevation: 3,\n left: 8,\n position: 'absolute',\n right: 8,\n shadowOffset: { height: 1, width: 0 },\n shadowOpacity: 0.15,\n },\n});\n\ntype MessageInputPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelContextValue<StreamChatGenerics>, 'disabled' | 'members' | 'watchers'> &\n Pick<\n MessageInputContextValue<StreamChatGenerics>,\n | 'additionalTextInputProps'\n | 'asyncIds'\n | 'asyncUploads'\n | 'cooldownEndsAt'\n | 'CooldownTimer'\n | 'clearEditingState'\n | 'clearQuotedMessageState'\n | 'closeAttachmentPicker'\n | 'editing'\n | 'FileUploadPreview'\n | 'fileUploads'\n | 'giphyActive'\n | 'ImageUploadPreview'\n | 'imageUploads'\n | 'Input'\n | 'inputBoxRef'\n | 'InputButtons'\n | 'isValidMessage'\n | 'maxNumberOfFiles'\n | 'mentionedUsers'\n | 'numberOfUploads'\n | 'quotedMessage'\n | 'resetInput'\n | 'SendButton'\n | 'sending'\n | 'sendMessageAsync'\n | 'setShowMoreOptions'\n | 'setGiphyActive'\n | 'showMoreOptions'\n | 'ShowThreadMessageInChannelButton'\n | 'removeImage'\n | 'uploadNewImage'\n > &\n Pick<MessagesContextValue<StreamChatGenerics>, 'Reply'> &\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n | 'AutoCompleteSuggestionHeader'\n | 'AutoCompleteSuggestionItem'\n | 'AutoCompleteSuggestionList'\n | 'suggestions'\n | 'triggerType'\n > &\n Pick<ThreadContextValue<StreamChatGenerics>, 'thread'> &\n Pick<TranslationContextValue, 't'> & {\n threadList?: boolean;\n };\n\nconst MessageInputWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionList,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n setGiphyActive,\n setShowMoreOptions,\n ShowThreadMessageInChannelButton,\n suggestions,\n t,\n thread,\n threadList,\n triggerType,\n uploadNewImage,\n watchers,\n } = props;\n\n const [height, setHeight] = useState(0);\n\n const {\n theme: {\n colors: {\n accent_blue,\n black,\n border,\n grey,\n grey_gainsboro,\n grey_whisper,\n white,\n white_smoke,\n },\n messageInput: {\n attachmentSelectionBar,\n autoCompleteInputContainer,\n composerContainer,\n container,\n editingBoxHeader,\n editingBoxHeaderTitle,\n giphyContainer,\n giphyText,\n inputBoxContainer,\n optionsContainer,\n replyContainer,\n sendButtonContainer,\n suggestionsListContainer: { container: suggestionListContainer },\n },\n },\n } = useTheme();\n\n const {\n attachmentPickerBottomSheetHeight,\n attachmentSelectionBarHeight,\n bottomInset,\n selectedImages,\n selectedPicker,\n setMaxNumberOfFiles,\n setSelectedImages,\n } = useAttachmentPickerContext();\n\n const { seconds: cooldownRemainingSeconds } = useCountdown(cooldownEndsAt);\n\n /**\n * Mounting and un-mounting logic are un-related in following useEffect.\n * While mounting we want to pass maxNumberOfFiles (which is prop on Channel component)\n * to AttachmentPicker (on OverlayProvider)\n *\n * While un-mounting, we want to close the picker e.g., while navigating away.\n */\n useEffect(() => {\n setMaxNumberOfFiles(maxNumberOfFiles ?? 10);\n\n return closeAttachmentPicker;\n }, []);\n\n const [hasResetImages, setHasResetImages] = useState(false);\n const selectedImagesLength = hasResetImages ? selectedImages.length : 0;\n const imageUploadsLength = hasResetImages ? imageUploads.length : 0;\n const imagesForInput = (!!thread && !!threadList) || (!thread && !threadList);\n\n useEffect(() => {\n setSelectedImages([]);\n if (imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n return () => setSelectedImages([]);\n }, []);\n\n useEffect(() => {\n if (hasResetImages === false && imageUploadsLength === 0 && selectedImagesLength === 0) {\n setHasResetImages(true);\n }\n }, [imageUploadsLength, selectedImagesLength]);\n\n useEffect(() => {\n if (imagesForInput === false && imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n }, [imagesForInput]);\n\n useEffect(() => {\n if (imagesForInput) {\n if (selectedImagesLength > imageUploadsLength) {\n /** User selected an image in bottom sheet attachment picker */\n const imagesToUpload = selectedImages.filter((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return !uploadedImage;\n });\n imagesToUpload.forEach((image) => uploadNewImage(image));\n } else if (selectedImagesLength < imageUploadsLength) {\n /** User de-selected an image in bottom sheet attachment picker */\n const imagesToRemove = imageUploads.filter(\n (imageUpload) =>\n !selectedImages.find(\n (selectedImage) =>\n selectedImage.uri === imageUpload.file.uri || selectedImage.uri === imageUpload.url,\n ),\n );\n imagesToRemove.forEach((image) => removeImage(image.id));\n }\n }\n }, [selectedImagesLength]);\n\n useEffect(() => {\n if (imagesForInput) {\n if (imageUploadsLength < selectedImagesLength) {\n /** User removed some image from seleted images within ImageUploadPreview. */\n const updatedSelectedImages = selectedImages.filter((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return uploadedImage;\n });\n setSelectedImages(updatedSelectedImages);\n } else if (imageUploadsLength > selectedImagesLength) {\n /**\n * User is editing some message which contains image attachments OR\n * image attachment is added from custom image picker (other than the default bottomsheet image picker)\n * using `uploadNewImage` function from `MessageInputContext`.\n **/\n setSelectedImages(\n imageUploads\n .map((imageUpload) => ({\n height: imageUpload.file.height,\n source: imageUpload.file.source,\n uri: imageUpload.url || imageUpload.file.uri,\n width: imageUpload.file.width,\n }))\n .filter(Boolean) as Asset[],\n );\n }\n }\n }, [imageUploadsLength]);\n\n const editingExists = !!editing;\n useEffect(() => {\n if (editing && inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n\n /**\n * Make sure to test `initialValue` functionality, if you are modifying following condition.\n *\n * We have the following condition, to make sure - when user comes out of \"editing message\" state,\n * we wipe out all the state around message input such as text, mentioned users, image uploads etc.\n * But it also means, this condition will be fired up on first render, which may result in clearing\n * the initial value set on input box, through the prop - `initialValue`.\n * This prop generally gets used for the case of draft message functionality.\n */\n if (\n !editing &&\n (giphyActive ||\n fileUploads.length > 0 ||\n mentionedUsers.length > 0 ||\n imageUploads.length > 0 ||\n numberOfUploads > 0)\n ) {\n resetInput();\n }\n }, [editingExists]);\n\n const asyncIdsString = asyncIds.join();\n const asyncUploadsString = Object.values(asyncUploads)\n .map(({ state, url }) => `${state}${url}`)\n .join();\n useEffect(() => {\n if (Object.keys(asyncUploads).length) {\n /**\n * When successful image upload response occurs after hitting send,\n * send a follow up message with the image\n */\n sending.current = true;\n asyncIds.forEach((id) => sendMessageAsync(id));\n sending.current = false;\n }\n }, [asyncIdsString, asyncUploadsString, sendMessageAsync]);\n\n const getMembers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (members && Object.values(members).length) {\n Object.values(members).forEach((member) => {\n if (member.user) {\n result.push(member.user);\n }\n });\n }\n\n return result;\n };\n\n const getUsers = () => {\n const users = [...getMembers(), ...getWatchers()];\n\n // make sure we don't list users twice\n const uniqueUsers: { [key: string]: UserResponse<StreamChatGenerics> } = {};\n for (const user of users) {\n if (user && !uniqueUsers[user.id]) {\n uniqueUsers[user.id] = user;\n }\n }\n const usersArray = Object.values(uniqueUsers);\n\n return usersArray;\n };\n\n const getWatchers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (watchers && Object.values(watchers).length) {\n result.push(...Object.values(watchers));\n }\n\n return result;\n };\n\n const additionalTextInputContainerProps = {\n editable: disabled ? false : undefined,\n ...additionalTextInputProps,\n };\n\n return (\n <>\n <View\n onLayout={({\n nativeEvent: {\n layout: { height: newHeight },\n },\n }) => setHeight(newHeight)}\n style={[styles.container, { backgroundColor: white, borderColor: border }, container]}\n >\n {(editing || quotedMessage) && (\n <View style={[styles.editingBoxHeader, editingBoxHeader]}>\n {editing ? (\n <Edit pathFill={grey_gainsboro} />\n ) : (\n <CurveLineLeftUp pathFill={grey_gainsboro} />\n )}\n <Text style={[styles.editingBoxHeaderTitle, { color: black }, editingBoxHeaderTitle]}>\n {editing ? t('Editing Message') : t('Reply to Message')}\n </Text>\n <TouchableOpacity\n disabled={disabled}\n onPress={() => {\n resetInput();\n if (editing) {\n clearEditingState();\n }\n if (quotedMessage) {\n clearQuotedMessageState();\n }\n }}\n testID='close-button'\n >\n <CircleClose pathFill={grey} />\n </TouchableOpacity>\n </View>\n )}\n <View style={[styles.composerContainer, composerContainer]}>\n {Input ? (\n <Input\n additionalTextInputProps={additionalTextInputContainerProps}\n getUsers={getUsers}\n />\n ) : (\n <>\n <View style={[styles.optionsContainer, optionsContainer]}>\n {InputButtons && <InputButtons />}\n </View>\n <View\n style={[\n styles.inputBoxContainer,\n {\n borderColor: grey_whisper,\n paddingVertical: giphyActive ? 8 : 12,\n },\n inputBoxContainer,\n ]}\n >\n {((typeof editing !== 'boolean' && editing?.quoted_message) || quotedMessage) && (\n <View style={[styles.replyContainer, replyContainer]}>\n <Reply />\n </View>\n )}\n {imageUploads.length ? <ImageUploadPreview /> : null}\n {imageUploads.length && fileUploads.length ? (\n <View\n style={[\n styles.attachmentSeparator,\n {\n borderBottomColor: grey_whisper,\n marginHorizontal: giphyActive ? 8 : 12,\n },\n ]}\n />\n ) : null}\n {fileUploads.length ? <FileUploadPreview /> : null}\n <View\n style={[\n styles.autoCompleteInputContainer,\n {\n paddingLeft: giphyActive ? 8 : 16,\n paddingRight: giphyActive ? 10 : 16,\n },\n autoCompleteInputContainer,\n ]}\n >\n {giphyActive && (\n <View\n style={[\n styles.giphyContainer,\n { backgroundColor: accent_blue },\n giphyContainer,\n ]}\n >\n <Lightning height={16} pathFill={white} width={16} />\n <Text style={[styles.giphyText, { color: white }, giphyText]}>GIPHY</Text>\n </View>\n )}\n <AutoCompleteInput<StreamChatGenerics>\n additionalTextInputProps={additionalTextInputProps}\n cooldownActive={!!cooldownRemainingSeconds}\n />\n {giphyActive && (\n <TouchableOpacity\n disabled={disabled}\n onPress={() => {\n setGiphyActive(false);\n setShowMoreOptions(true);\n }}\n testID='close-button'\n >\n <CircleClose height={20} pathFill={grey} width={20} />\n </TouchableOpacity>\n )}\n </View>\n </View>\n <View style={[styles.sendButtonContainer, sendButtonContainer]}>\n {cooldownRemainingSeconds ? (\n <CooldownTimer seconds={cooldownRemainingSeconds} />\n ) : (\n <SendButton disabled={disabled || sending.current || !isValidMessage()} />\n )}\n </View>\n </>\n )}\n </View>\n <ShowThreadMessageInChannelButton threadList={threadList} />\n </View>\n\n {triggerType && suggestions ? (\n <View\n style={[\n suggestionListContainer,\n styles.suggestionsListContainer,\n { backgroundColor: white, bottom: height },\n ]}\n >\n <AutoCompleteSuggestionList\n active={!!suggestions}\n data={suggestions.data}\n onSelect={suggestions.onSelect}\n queryText={suggestions.queryText}\n triggerType={triggerType}\n />\n </View>\n ) : null}\n {selectedPicker && (\n <View\n style={[\n {\n backgroundColor: white_smoke,\n height:\n (attachmentPickerBottomSheetHeight\n ? attachmentPickerBottomSheetHeight + (attachmentSelectionBarHeight ?? 52)\n : 360) - bottomInset,\n },\n attachmentSelectionBar,\n ]}\n >\n <AttachmentSelectionBar />\n </View>\n )}\n </>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageInputPropsWithContext<StreamChatGenerics>,\n nextProps: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps: prevAdditionalTextInputProps,\n asyncUploads: prevAsyncUploads,\n disabled: prevDisabled,\n editing: prevEditing,\n fileUploads: prevFileUploads,\n giphyActive: prevGiphyActive,\n imageUploads: prevImageUploads,\n isValidMessage: prevIsValidMessage,\n mentionedUsers: prevMentionedUsers,\n quotedMessage: prevQuotedMessage,\n sending: prevSending,\n showMoreOptions: prevShowMoreOptions,\n suggestions: prevSuggestions,\n t: prevT,\n thread: prevThread,\n threadList: prevThreadList,\n } = prevProps;\n const {\n additionalTextInputProps: nextAdditionalTextInputProps,\n asyncUploads: nextAsyncUploads,\n disabled: nextDisabled,\n editing: nextEditing,\n fileUploads: nextFileUploads,\n giphyActive: nextGiphyActive,\n imageUploads: nextImageUploads,\n isValidMessage: nextIsValidMessage,\n mentionedUsers: nextMentionedUsers,\n quotedMessage: nextQuotedMessage,\n sending: nextSending,\n showMoreOptions: nextShowMoreOptions,\n suggestions: nextSuggestions,\n t: nextT,\n thread: nextThread,\n threadList: nextThreadList,\n } = nextProps;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const additionalTextInputPropsEven =\n prevAdditionalTextInputProps === nextAdditionalTextInputProps;\n if (!additionalTextInputPropsEven) return false;\n\n const disabledEqual = prevDisabled === nextDisabled;\n if (!disabledEqual) return false;\n\n const editingEqual = !!prevEditing === !!nextEditing;\n if (!editingEqual) return false;\n\n const imageUploadsEqual = prevImageUploads.length === nextImageUploads.length;\n if (!imageUploadsEqual) return false;\n\n const giphyActiveEqual = prevGiphyActive === nextGiphyActive;\n if (!giphyActiveEqual) return false;\n\n const quotedMessageEqual =\n !!prevQuotedMessage &&\n !!nextQuotedMessage &&\n typeof prevQuotedMessage !== 'boolean' &&\n typeof nextQuotedMessage !== 'boolean'\n ? prevQuotedMessage.id === nextQuotedMessage.id\n : !!prevQuotedMessage === !!nextQuotedMessage;\n if (!quotedMessageEqual) return false;\n\n const sendingEqual = prevSending.current === nextSending.current;\n if (!sendingEqual) return false;\n\n const showMoreOptionsEqual = prevShowMoreOptions === nextShowMoreOptions;\n if (!showMoreOptionsEqual) return false;\n\n const isValidMessageEqual = prevIsValidMessage() === nextIsValidMessage();\n if (!isValidMessageEqual) return false;\n\n const asyncUploadsEqual = Object.keys(prevAsyncUploads).every(\n (key) =>\n prevAsyncUploads[key].state === nextAsyncUploads[key].state &&\n prevAsyncUploads[key].url === nextAsyncUploads[key].url,\n );\n if (!asyncUploadsEqual) return false;\n\n const fileUploadsEqual = prevFileUploads.length === nextFileUploads.length;\n if (!fileUploadsEqual) return false;\n\n const mentionedUsersEqual = prevMentionedUsers.length === nextMentionedUsers.length;\n if (!mentionedUsersEqual) return false;\n\n const suggestionsEqual =\n !!prevSuggestions?.data && !!nextSuggestions?.data\n ? prevSuggestions.data.length === nextSuggestions.data.length &&\n prevSuggestions.data.every(({ name }, index) => name === nextSuggestions.data[index].name)\n : !!prevSuggestions === !!nextSuggestions;\n if (!suggestionsEqual) return false;\n\n const threadEqual =\n prevThread?.id === nextThread?.id &&\n prevThread?.text === nextThread?.text &&\n prevThread?.reply_count === nextThread?.reply_count;\n if (!threadEqual) return false;\n\n const threadListEqual = prevThreadList === nextThreadList;\n if (!threadListEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageInput = React.memo(\n MessageInputWithContext,\n areEqual,\n) as typeof MessageInputWithContext;\n\nexport type MessageInputProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageInputPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for message input\n * It's a consumer of\n * [Channel Context](https://getstream.github.io/stream-chat-react-native/v3/#channelcontext),\n * [Chat Context](https://getstream.github.io/stream-chat-react-native/v3/#chatcontext),\n * [MessageInput Context](https://getstream.github.io/stream-chat-react-native/v3/#messageinputcontext),\n * [Suggestions Context](https://getstream.github.io/stream-chat-react-native/v3/#suggestionscontext), and\n * [Translation Context](https://getstream.github.io/stream-chat-react-native/v3/#translationcontext)\n */\nexport const MessageInput = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputProps<StreamChatGenerics>,\n) => {\n const ownCapabilities = useOwnCapabilitiesContext();\n\n const { disabled = false, members, watchers } = useChannelContext<StreamChatGenerics>();\n\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n isValidMessage,\n maxNumberOfFiles,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeImage,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n SendMessageDisallowedIndicator,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n uploadNewImage,\n } = useMessageInputContext<StreamChatGenerics>();\n\n const { Reply } = useMessagesContext<StreamChatGenerics>();\n\n const {\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n suggestions,\n triggerType,\n } = useSuggestionsContext<StreamChatGenerics>();\n\n const { thread } = useThreadContext<StreamChatGenerics>();\n\n const { t } = useTranslationContext();\n\n if (!ownCapabilities.sendMessage && SendMessageDisallowedIndicator) {\n return <SendMessageDisallowedIndicator />;\n }\n\n return (\n <MemoizedMessageInput\n {...{\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n suggestions,\n t,\n thread,\n triggerType,\n uploadNewImage,\n watchers,\n }}\n {...props}\n />\n );\n};\n\nMessageInput.displayName = 'MessageInput{messageInput}';\n"]}
|
|
1
|
+
{"version":3,"sources":["MessageInput.tsx"],"names":["styles","StyleSheet","create","attachmentSeparator","borderBottomWidth","marginBottom","autoCompleteInputContainer","alignItems","flexDirection","paddingLeft","paddingRight","composerContainer","container","borderTopWidth","padding","inputBoxContainer","borderRadius","borderWidth","flex","optionsContainer","paddingBottom","replyContainer","paddingHorizontal","sendButtonContainer","suggestionsListContainer","elevation","left","position","right","shadowOffset","height","width","shadowOpacity","MessageInputWithContext","props","additionalTextInputProps","asyncIds","asyncUploads","AutoCompleteSuggestionList","closeAttachmentPicker","cooldownEndsAt","CooldownTimer","disabled","editing","FileUploadPreview","fileUploads","giphyActive","ImageUploadPreview","imageUploads","Input","inputBoxRef","InputButtons","InputEditingStateHeader","InputGiphySearch","InputReplyStateHeader","isValidMessage","maxNumberOfFiles","members","mentionedUsers","numberOfUploads","quotedMessage","removeImage","Reply","resetInput","SendButton","sending","sendMessageAsync","ShowThreadMessageInChannelButton","suggestions","thread","threadList","triggerType","uploadNewImage","watchers","setHeight","theme","colors","border","grey_whisper","white","white_smoke","messageInput","attachmentSelectionBar","suggestionListContainer","attachmentPickerBottomSheetHeight","attachmentSelectionBarHeight","bottomInset","selectedImages","selectedPicker","setMaxNumberOfFiles","setSelectedImages","cooldownRemainingSeconds","seconds","hasResetImages","setHasResetImages","selectedImagesLength","length","imageUploadsLength","imagesForInput","forEach","image","id","imagesToUpload","filter","selectedImage","uploadedImage","find","imageUpload","file","uri","url","imagesToRemove","updatedSelectedImages","map","source","Boolean","editingExists","current","focus","asyncIdsString","join","asyncUploadsString","Object","values","state","keys","getMembers","result","member","user","push","getUsers","users","getWatchers","uniqueUsers","usersArray","additionalTextInputContainerProps","editable","undefined","newHeight","nativeEvent","layout","backgroundColor","borderColor","paddingVertical","quoted_message","borderBottomColor","marginHorizontal","bottom","data","onSelect","queryText","areEqual","prevProps","nextProps","prevAdditionalTextInputProps","prevAsyncUploads","prevDisabled","prevEditing","prevFileUploads","prevGiphyActive","prevImageUploads","prevIsValidMessage","prevMentionedUsers","prevQuotedMessage","prevSending","prevShowMoreOptions","showMoreOptions","prevSuggestions","prevT","t","prevThread","prevThreadList","nextAdditionalTextInputProps","nextAsyncUploads","nextDisabled","nextEditing","nextFileUploads","nextGiphyActive","nextImageUploads","nextIsValidMessage","nextMentionedUsers","nextQuotedMessage","nextSending","nextShowMoreOptions","nextSuggestions","nextT","nextThread","nextThreadList","tEqual","additionalTextInputPropsEven","disabledEqual","editingEqual","imageUploadsEqual","giphyActiveEqual","quotedMessageEqual","sendingEqual","showMoreOptionsEqual","isValidMessageEqual","asyncUploadsEqual","every","key","fileUploadsEqual","mentionedUsersEqual","suggestionsEqual","index","name","threadEqual","text","reply_count","threadListEqual","MemoizedMessageInput","React","memo","MessageInput","ownCapabilities","clearEditingState","clearQuotedMessageState","SendMessageDisallowedIndicator","setGiphyActive","setShowMoreOptions","AutoCompleteSuggestionHeader","AutoCompleteSuggestionItem","sendMessage","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { useCountdown } from './hooks/useCountdown';\n\nimport { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n SuggestionsContextValue,\n useSuggestionsContext,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport type { Asset } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { AttachmentSelectionBar } from '../AttachmentPicker/components/AttachmentSelectionBar';\nimport { AutoCompleteInput } from '../AutoCompleteInput/AutoCompleteInput';\n\nconst styles = StyleSheet.create({\n attachmentSeparator: {\n borderBottomWidth: 1,\n marginBottom: 10,\n },\n autoCompleteInputContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n paddingLeft: 16,\n paddingRight: 16,\n },\n composerContainer: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n container: {\n borderTopWidth: 1,\n padding: 10,\n },\n inputBoxContainer: {\n borderRadius: 20,\n borderWidth: 1,\n flex: 1,\n },\n optionsContainer: {\n flexDirection: 'row',\n paddingBottom: 10,\n paddingRight: 10,\n },\n replyContainer: { paddingBottom: 12, paddingHorizontal: 8 },\n sendButtonContainer: { paddingBottom: 10, paddingLeft: 10 },\n suggestionsListContainer: {\n borderRadius: 10,\n elevation: 3,\n left: 8,\n position: 'absolute',\n right: 8,\n shadowOffset: { height: 1, width: 0 },\n shadowOpacity: 0.15,\n },\n});\n\ntype MessageInputPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelContextValue<StreamChatGenerics>, 'disabled' | 'members' | 'watchers'> &\n Pick<\n MessageInputContextValue<StreamChatGenerics>,\n | 'additionalTextInputProps'\n | 'asyncIds'\n | 'asyncUploads'\n | 'cooldownEndsAt'\n | 'CooldownTimer'\n | 'clearEditingState'\n | 'clearQuotedMessageState'\n | 'closeAttachmentPicker'\n | 'editing'\n | 'FileUploadPreview'\n | 'fileUploads'\n | 'giphyActive'\n | 'ImageUploadPreview'\n | 'imageUploads'\n | 'Input'\n | 'inputBoxRef'\n | 'InputButtons'\n | 'InputEditingStateHeader'\n | 'InputGiphySearch'\n | 'InputReplyStateHeader'\n | 'isValidMessage'\n | 'maxNumberOfFiles'\n | 'mentionedUsers'\n | 'numberOfUploads'\n | 'quotedMessage'\n | 'resetInput'\n | 'SendButton'\n | 'sending'\n | 'sendMessageAsync'\n | 'setShowMoreOptions'\n | 'setGiphyActive'\n | 'showMoreOptions'\n | 'ShowThreadMessageInChannelButton'\n | 'removeImage'\n | 'uploadNewImage'\n > &\n Pick<MessagesContextValue<StreamChatGenerics>, 'Reply'> &\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n | 'AutoCompleteSuggestionHeader'\n | 'AutoCompleteSuggestionItem'\n | 'AutoCompleteSuggestionList'\n | 'suggestions'\n | 'triggerType'\n > &\n Pick<ThreadContextValue<StreamChatGenerics>, 'thread'> &\n Pick<TranslationContextValue, 't'> & {\n threadList?: boolean;\n };\n\nconst MessageInputWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionList,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n ShowThreadMessageInChannelButton,\n suggestions,\n thread,\n threadList,\n triggerType,\n uploadNewImage,\n watchers,\n } = props;\n\n const [height, setHeight] = useState(0);\n\n const {\n theme: {\n colors: { border, grey_whisper, white, white_smoke },\n messageInput: {\n attachmentSelectionBar,\n autoCompleteInputContainer,\n composerContainer,\n container,\n inputBoxContainer,\n optionsContainer,\n replyContainer,\n sendButtonContainer,\n suggestionsListContainer: { container: suggestionListContainer },\n },\n },\n } = useTheme();\n\n const {\n attachmentPickerBottomSheetHeight,\n attachmentSelectionBarHeight,\n bottomInset,\n selectedImages,\n selectedPicker,\n setMaxNumberOfFiles,\n setSelectedImages,\n } = useAttachmentPickerContext();\n\n const { seconds: cooldownRemainingSeconds } = useCountdown(cooldownEndsAt);\n\n /**\n * Mounting and un-mounting logic are un-related in following useEffect.\n * While mounting we want to pass maxNumberOfFiles (which is prop on Channel component)\n * to AttachmentPicker (on OverlayProvider)\n *\n * While un-mounting, we want to close the picker e.g., while navigating away.\n */\n useEffect(() => {\n setMaxNumberOfFiles(maxNumberOfFiles ?? 10);\n\n return closeAttachmentPicker;\n }, []);\n\n const [hasResetImages, setHasResetImages] = useState(false);\n const selectedImagesLength = hasResetImages ? selectedImages.length : 0;\n const imageUploadsLength = hasResetImages ? imageUploads.length : 0;\n const imagesForInput = (!!thread && !!threadList) || (!thread && !threadList);\n\n useEffect(() => {\n setSelectedImages([]);\n if (imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n return () => setSelectedImages([]);\n }, []);\n\n useEffect(() => {\n if (hasResetImages === false && imageUploadsLength === 0 && selectedImagesLength === 0) {\n setHasResetImages(true);\n }\n }, [imageUploadsLength, selectedImagesLength]);\n\n useEffect(() => {\n if (imagesForInput === false && imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n }, [imagesForInput]);\n\n useEffect(() => {\n if (imagesForInput) {\n if (selectedImagesLength > imageUploadsLength) {\n /** User selected an image in bottom sheet attachment picker */\n const imagesToUpload = selectedImages.filter((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return !uploadedImage;\n });\n imagesToUpload.forEach((image) => uploadNewImage(image));\n } else if (selectedImagesLength < imageUploadsLength) {\n /** User de-selected an image in bottom sheet attachment picker */\n const imagesToRemove = imageUploads.filter(\n (imageUpload) =>\n !selectedImages.find(\n (selectedImage) =>\n selectedImage.uri === imageUpload.file.uri || selectedImage.uri === imageUpload.url,\n ),\n );\n imagesToRemove.forEach((image) => removeImage(image.id));\n }\n }\n }, [selectedImagesLength]);\n\n useEffect(() => {\n if (imagesForInput) {\n if (imageUploadsLength < selectedImagesLength) {\n /** User removed some image from seleted images within ImageUploadPreview. */\n const updatedSelectedImages = selectedImages.filter((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return uploadedImage;\n });\n setSelectedImages(updatedSelectedImages);\n } else if (imageUploadsLength > selectedImagesLength) {\n /**\n * User is editing some message which contains image attachments OR\n * image attachment is added from custom image picker (other than the default bottomsheet image picker)\n * using `uploadNewImage` function from `MessageInputContext`.\n **/\n setSelectedImages(\n imageUploads\n .map((imageUpload) => ({\n height: imageUpload.file.height,\n source: imageUpload.file.source,\n uri: imageUpload.url || imageUpload.file.uri,\n width: imageUpload.file.width,\n }))\n .filter(Boolean) as Asset[],\n );\n }\n }\n }, [imageUploadsLength]);\n\n const editingExists = !!editing;\n useEffect(() => {\n if (editing && inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n\n /**\n * Make sure to test `initialValue` functionality, if you are modifying following condition.\n *\n * We have the following condition, to make sure - when user comes out of \"editing message\" state,\n * we wipe out all the state around message input such as text, mentioned users, image uploads etc.\n * But it also means, this condition will be fired up on first render, which may result in clearing\n * the initial value set on input box, through the prop - `initialValue`.\n * This prop generally gets used for the case of draft message functionality.\n */\n if (\n !editing &&\n (giphyActive ||\n fileUploads.length > 0 ||\n mentionedUsers.length > 0 ||\n imageUploads.length > 0 ||\n numberOfUploads > 0)\n ) {\n resetInput();\n }\n }, [editingExists]);\n\n const asyncIdsString = asyncIds.join();\n const asyncUploadsString = Object.values(asyncUploads)\n .map(({ state, url }) => `${state}${url}`)\n .join();\n useEffect(() => {\n if (Object.keys(asyncUploads).length) {\n /**\n * When successful image upload response occurs after hitting send,\n * send a follow up message with the image\n */\n sending.current = true;\n asyncIds.forEach((id) => sendMessageAsync(id));\n sending.current = false;\n }\n }, [asyncIdsString, asyncUploadsString, sendMessageAsync]);\n\n const getMembers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (members && Object.values(members).length) {\n Object.values(members).forEach((member) => {\n if (member.user) {\n result.push(member.user);\n }\n });\n }\n\n return result;\n };\n\n const getUsers = () => {\n const users = [...getMembers(), ...getWatchers()];\n\n // make sure we don't list users twice\n const uniqueUsers: { [key: string]: UserResponse<StreamChatGenerics> } = {};\n for (const user of users) {\n if (user && !uniqueUsers[user.id]) {\n uniqueUsers[user.id] = user;\n }\n }\n const usersArray = Object.values(uniqueUsers);\n\n return usersArray;\n };\n\n const getWatchers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (watchers && Object.values(watchers).length) {\n result.push(...Object.values(watchers));\n }\n\n return result;\n };\n\n const additionalTextInputContainerProps = {\n editable: disabled ? false : undefined,\n ...additionalTextInputProps,\n };\n\n return (\n <>\n <View\n onLayout={({\n nativeEvent: {\n layout: { height: newHeight },\n },\n }) => setHeight(newHeight)}\n style={[styles.container, { backgroundColor: white, borderColor: border }, container]}\n >\n {editing && <InputEditingStateHeader />}\n {quotedMessage && <InputReplyStateHeader />}\n <View style={[styles.composerContainer, composerContainer]}>\n {Input ? (\n <Input\n additionalTextInputProps={additionalTextInputContainerProps}\n getUsers={getUsers}\n />\n ) : (\n <>\n <View style={[styles.optionsContainer, optionsContainer]}>\n {InputButtons && <InputButtons />}\n </View>\n <View\n style={[\n styles.inputBoxContainer,\n {\n borderColor: grey_whisper,\n paddingVertical: giphyActive ? 8 : 12,\n },\n inputBoxContainer,\n ]}\n >\n {((typeof editing !== 'boolean' && editing?.quoted_message) || quotedMessage) && (\n <View style={[styles.replyContainer, replyContainer]}>\n <Reply />\n </View>\n )}\n {imageUploads.length ? <ImageUploadPreview /> : null}\n {imageUploads.length && fileUploads.length ? (\n <View\n style={[\n styles.attachmentSeparator,\n {\n borderBottomColor: grey_whisper,\n marginHorizontal: giphyActive ? 8 : 12,\n },\n ]}\n />\n ) : null}\n {fileUploads.length ? <FileUploadPreview /> : null}\n {giphyActive ? (\n <InputGiphySearch />\n ) : (\n <View style={[styles.autoCompleteInputContainer, autoCompleteInputContainer]}>\n <AutoCompleteInput<StreamChatGenerics>\n additionalTextInputProps={additionalTextInputProps}\n cooldownActive={!!cooldownRemainingSeconds}\n />\n </View>\n )}\n </View>\n <View style={[styles.sendButtonContainer, sendButtonContainer]}>\n {cooldownRemainingSeconds ? (\n <CooldownTimer seconds={cooldownRemainingSeconds} />\n ) : (\n <SendButton disabled={disabled || sending.current || !isValidMessage()} />\n )}\n </View>\n </>\n )}\n </View>\n <ShowThreadMessageInChannelButton threadList={threadList} />\n </View>\n\n {triggerType && suggestions ? (\n <View\n style={[\n suggestionListContainer,\n styles.suggestionsListContainer,\n { backgroundColor: white, bottom: height },\n ]}\n >\n <AutoCompleteSuggestionList\n active={!!suggestions}\n data={suggestions.data}\n onSelect={suggestions.onSelect}\n queryText={suggestions.queryText}\n triggerType={triggerType}\n />\n </View>\n ) : null}\n {selectedPicker && (\n <View\n style={[\n {\n backgroundColor: white_smoke,\n height:\n (attachmentPickerBottomSheetHeight\n ? attachmentPickerBottomSheetHeight + (attachmentSelectionBarHeight ?? 52)\n : 360) - bottomInset,\n },\n attachmentSelectionBar,\n ]}\n >\n <AttachmentSelectionBar />\n </View>\n )}\n </>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageInputPropsWithContext<StreamChatGenerics>,\n nextProps: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps: prevAdditionalTextInputProps,\n asyncUploads: prevAsyncUploads,\n disabled: prevDisabled,\n editing: prevEditing,\n fileUploads: prevFileUploads,\n giphyActive: prevGiphyActive,\n imageUploads: prevImageUploads,\n isValidMessage: prevIsValidMessage,\n mentionedUsers: prevMentionedUsers,\n quotedMessage: prevQuotedMessage,\n sending: prevSending,\n showMoreOptions: prevShowMoreOptions,\n suggestions: prevSuggestions,\n t: prevT,\n thread: prevThread,\n threadList: prevThreadList,\n } = prevProps;\n const {\n additionalTextInputProps: nextAdditionalTextInputProps,\n asyncUploads: nextAsyncUploads,\n disabled: nextDisabled,\n editing: nextEditing,\n fileUploads: nextFileUploads,\n giphyActive: nextGiphyActive,\n imageUploads: nextImageUploads,\n isValidMessage: nextIsValidMessage,\n mentionedUsers: nextMentionedUsers,\n quotedMessage: nextQuotedMessage,\n sending: nextSending,\n showMoreOptions: nextShowMoreOptions,\n suggestions: nextSuggestions,\n t: nextT,\n thread: nextThread,\n threadList: nextThreadList,\n } = nextProps;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const additionalTextInputPropsEven =\n prevAdditionalTextInputProps === nextAdditionalTextInputProps;\n if (!additionalTextInputPropsEven) return false;\n\n const disabledEqual = prevDisabled === nextDisabled;\n if (!disabledEqual) return false;\n\n const editingEqual = !!prevEditing === !!nextEditing;\n if (!editingEqual) return false;\n\n const imageUploadsEqual = prevImageUploads.length === nextImageUploads.length;\n if (!imageUploadsEqual) return false;\n\n const giphyActiveEqual = prevGiphyActive === nextGiphyActive;\n if (!giphyActiveEqual) return false;\n\n const quotedMessageEqual =\n !!prevQuotedMessage &&\n !!nextQuotedMessage &&\n typeof prevQuotedMessage !== 'boolean' &&\n typeof nextQuotedMessage !== 'boolean'\n ? prevQuotedMessage.id === nextQuotedMessage.id\n : !!prevQuotedMessage === !!nextQuotedMessage;\n if (!quotedMessageEqual) return false;\n\n const sendingEqual = prevSending.current === nextSending.current;\n if (!sendingEqual) return false;\n\n const showMoreOptionsEqual = prevShowMoreOptions === nextShowMoreOptions;\n if (!showMoreOptionsEqual) return false;\n\n const isValidMessageEqual = prevIsValidMessage() === nextIsValidMessage();\n if (!isValidMessageEqual) return false;\n\n const asyncUploadsEqual = Object.keys(prevAsyncUploads).every(\n (key) =>\n prevAsyncUploads[key].state === nextAsyncUploads[key].state &&\n prevAsyncUploads[key].url === nextAsyncUploads[key].url,\n );\n if (!asyncUploadsEqual) return false;\n\n const fileUploadsEqual = prevFileUploads.length === nextFileUploads.length;\n if (!fileUploadsEqual) return false;\n\n const mentionedUsersEqual = prevMentionedUsers.length === nextMentionedUsers.length;\n if (!mentionedUsersEqual) return false;\n\n const suggestionsEqual =\n !!prevSuggestions?.data && !!nextSuggestions?.data\n ? prevSuggestions.data.length === nextSuggestions.data.length &&\n prevSuggestions.data.every(({ name }, index) => name === nextSuggestions.data[index].name)\n : !!prevSuggestions === !!nextSuggestions;\n if (!suggestionsEqual) return false;\n\n const threadEqual =\n prevThread?.id === nextThread?.id &&\n prevThread?.text === nextThread?.text &&\n prevThread?.reply_count === nextThread?.reply_count;\n if (!threadEqual) return false;\n\n const threadListEqual = prevThreadList === nextThreadList;\n if (!threadListEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageInput = React.memo(\n MessageInputWithContext,\n areEqual,\n) as typeof MessageInputWithContext;\n\nexport type MessageInputProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageInputPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for message input\n * It's a consumer of\n * [Channel Context](https://getstream.github.io/stream-chat-react-native/v3/#channelcontext),\n * [Chat Context](https://getstream.github.io/stream-chat-react-native/v3/#chatcontext),\n * [MessageInput Context](https://getstream.github.io/stream-chat-react-native/v3/#messageinputcontext),\n * [Suggestions Context](https://getstream.github.io/stream-chat-react-native/v3/#suggestionscontext), and\n * [Translation Context](https://getstream.github.io/stream-chat-react-native/v3/#translationcontext)\n */\nexport const MessageInput = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputProps<StreamChatGenerics>,\n) => {\n const ownCapabilities = useOwnCapabilitiesContext();\n\n const { disabled = false, members, watchers } = useChannelContext<StreamChatGenerics>();\n\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n isValidMessage,\n maxNumberOfFiles,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeImage,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n SendMessageDisallowedIndicator,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n uploadNewImage,\n } = useMessageInputContext<StreamChatGenerics>();\n\n const { Reply } = useMessagesContext<StreamChatGenerics>();\n\n const {\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n suggestions,\n triggerType,\n } = useSuggestionsContext<StreamChatGenerics>();\n\n const { thread } = useThreadContext<StreamChatGenerics>();\n\n const { t } = useTranslationContext();\n\n if (!ownCapabilities.sendMessage && SendMessageDisallowedIndicator) {\n return <SendMessageDisallowedIndicator />;\n }\n\n return (\n <MemoizedMessageInput\n {...{\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n suggestions,\n t,\n thread,\n triggerType,\n uploadNewImage,\n watchers,\n }}\n {...props}\n />\n );\n};\n\nMessageInput.displayName = 'MessageInput{messageInput}';\n"]}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.InputEditingStateHeaderWithContext = exports.InputEditingStateHeader = void 0;
|
|
7
|
+
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _reactNative = require("react-native");
|
|
13
|
+
|
|
14
|
+
var _MessageInputContext = require("../../../contexts/messageInputContext/MessageInputContext");
|
|
15
|
+
|
|
16
|
+
var _ThemeContext = require("../../../contexts/themeContext/ThemeContext");
|
|
17
|
+
|
|
18
|
+
var _TranslationContext = require("../../../contexts/translationContext/TranslationContext");
|
|
19
|
+
|
|
20
|
+
var _icons = require("../../../icons");
|
|
21
|
+
|
|
22
|
+
var _this = this,
|
|
23
|
+
_jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageInput/components/InputEditingStateHeader.tsx";
|
|
24
|
+
|
|
25
|
+
var styles = _reactNative.StyleSheet.create({
|
|
26
|
+
editingBoxHeader: {
|
|
27
|
+
alignItems: 'center',
|
|
28
|
+
flexDirection: 'row',
|
|
29
|
+
justifyContent: 'space-between',
|
|
30
|
+
paddingBottom: 10
|
|
31
|
+
},
|
|
32
|
+
editingBoxHeaderTitle: {
|
|
33
|
+
fontSize: 14,
|
|
34
|
+
fontWeight: 'bold'
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
var InputEditingStateHeaderWithContext = function InputEditingStateHeaderWithContext(_ref) {
|
|
39
|
+
var clearEditingState = _ref.clearEditingState,
|
|
40
|
+
disabled = _ref.disabled,
|
|
41
|
+
resetInput = _ref.resetInput;
|
|
42
|
+
|
|
43
|
+
var _useTranslationContex = (0, _TranslationContext.useTranslationContext)(),
|
|
44
|
+
t = _useTranslationContex.t;
|
|
45
|
+
|
|
46
|
+
var _useTheme = (0, _ThemeContext.useTheme)(),
|
|
47
|
+
_useTheme$theme = _useTheme.theme,
|
|
48
|
+
_useTheme$theme$color = _useTheme$theme.colors,
|
|
49
|
+
black = _useTheme$theme$color.black,
|
|
50
|
+
grey = _useTheme$theme$color.grey,
|
|
51
|
+
grey_gainsboro = _useTheme$theme$color.grey_gainsboro,
|
|
52
|
+
_useTheme$theme$messa = _useTheme$theme.messageInput.editingStateHeader,
|
|
53
|
+
editingBoxHeader = _useTheme$theme$messa.editingBoxHeader,
|
|
54
|
+
editingBoxHeaderTitle = _useTheme$theme$messa.editingBoxHeaderTitle;
|
|
55
|
+
|
|
56
|
+
return _react["default"].createElement(_reactNative.View, {
|
|
57
|
+
style: [styles.editingBoxHeader, editingBoxHeader],
|
|
58
|
+
__self: _this,
|
|
59
|
+
__source: {
|
|
60
|
+
fileName: _jsxFileName,
|
|
61
|
+
lineNumber: 51,
|
|
62
|
+
columnNumber: 5
|
|
63
|
+
}
|
|
64
|
+
}, _react["default"].createElement(_icons.Edit, {
|
|
65
|
+
pathFill: grey_gainsboro,
|
|
66
|
+
__self: _this,
|
|
67
|
+
__source: {
|
|
68
|
+
fileName: _jsxFileName,
|
|
69
|
+
lineNumber: 52,
|
|
70
|
+
columnNumber: 7
|
|
71
|
+
}
|
|
72
|
+
}), _react["default"].createElement(_reactNative.Text, {
|
|
73
|
+
style: [styles.editingBoxHeaderTitle, {
|
|
74
|
+
color: black
|
|
75
|
+
}, editingBoxHeaderTitle],
|
|
76
|
+
__self: _this,
|
|
77
|
+
__source: {
|
|
78
|
+
fileName: _jsxFileName,
|
|
79
|
+
lineNumber: 53,
|
|
80
|
+
columnNumber: 7
|
|
81
|
+
}
|
|
82
|
+
}, t('Editing Message')), _react["default"].createElement(_reactNative.TouchableOpacity, {
|
|
83
|
+
disabled: disabled,
|
|
84
|
+
onPress: function onPress() {
|
|
85
|
+
resetInput();
|
|
86
|
+
clearEditingState();
|
|
87
|
+
},
|
|
88
|
+
testID: "close-button",
|
|
89
|
+
__self: _this,
|
|
90
|
+
__source: {
|
|
91
|
+
fileName: _jsxFileName,
|
|
92
|
+
lineNumber: 56,
|
|
93
|
+
columnNumber: 7
|
|
94
|
+
}
|
|
95
|
+
}, _react["default"].createElement(_icons.CircleClose, {
|
|
96
|
+
pathFill: grey,
|
|
97
|
+
__self: _this,
|
|
98
|
+
__source: {
|
|
99
|
+
fileName: _jsxFileName,
|
|
100
|
+
lineNumber: 64,
|
|
101
|
+
columnNumber: 9
|
|
102
|
+
}
|
|
103
|
+
})));
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
exports.InputEditingStateHeaderWithContext = InputEditingStateHeaderWithContext;
|
|
107
|
+
|
|
108
|
+
var areEqual = function areEqual(prevProps, nextProps) {
|
|
109
|
+
var prevDisabled = prevProps.disabled;
|
|
110
|
+
var nextDisabled = nextProps.disabled;
|
|
111
|
+
var disabledEqual = prevDisabled === nextDisabled;
|
|
112
|
+
if (!disabledEqual) return false;
|
|
113
|
+
return true;
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
var MemoizedInputEditingStateHeader = _react["default"].memo(InputEditingStateHeaderWithContext, areEqual);
|
|
117
|
+
|
|
118
|
+
var InputEditingStateHeader = function InputEditingStateHeader(props) {
|
|
119
|
+
var _useMessageInputConte = (0, _MessageInputContext.useMessageInputContext)(),
|
|
120
|
+
clearEditingState = _useMessageInputConte.clearEditingState,
|
|
121
|
+
resetInput = _useMessageInputConte.resetInput;
|
|
122
|
+
|
|
123
|
+
return _react["default"].createElement(MemoizedInputEditingStateHeader, (0, _extends2["default"])({
|
|
124
|
+
clearEditingState: clearEditingState,
|
|
125
|
+
resetInput: resetInput
|
|
126
|
+
}, props, {
|
|
127
|
+
__self: _this,
|
|
128
|
+
__source: {
|
|
129
|
+
fileName: _jsxFileName,
|
|
130
|
+
lineNumber: 99,
|
|
131
|
+
columnNumber: 10
|
|
132
|
+
}
|
|
133
|
+
}));
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
exports.InputEditingStateHeader = InputEditingStateHeader;
|
|
137
|
+
InputEditingStateHeader.displayName = 'EditingStateHeader{messageInput}';
|
|
138
|
+
//# sourceMappingURL=InputEditingStateHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["InputEditingStateHeader.tsx"],"names":["styles","StyleSheet","create","editingBoxHeader","alignItems","flexDirection","justifyContent","paddingBottom","editingBoxHeaderTitle","fontSize","fontWeight","InputEditingStateHeaderWithContext","clearEditingState","disabled","resetInput","t","theme","colors","black","grey","grey_gainsboro","messageInput","editingStateHeader","color","areEqual","prevProps","nextProps","prevDisabled","nextDisabled","disabledEqual","MemoizedInputEditingStateHeader","React","memo","InputEditingStateHeader","props","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../../contexts/messageInputContext/MessageInputContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\n\nimport { CircleClose, Edit } from '../../../icons';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nconst styles = StyleSheet.create({\n editingBoxHeader: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingBottom: 10,\n },\n editingBoxHeaderTitle: {\n fontSize: 14,\n fontWeight: 'bold',\n },\n});\n\nexport type InputEditingStateHeaderPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<MessageInputContextValue<StreamChatGenerics>, 'clearEditingState' | 'resetInput'> &\n Pick<ChannelContextValue<StreamChatGenerics>, 'disabled'>;\n\nexport const InputEditingStateHeaderWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n clearEditingState,\n disabled,\n resetInput,\n}: InputEditingStateHeaderPropsWithContext<StreamChatGenerics>) => {\n const { t } = useTranslationContext();\n const {\n theme: {\n colors: { black, grey, grey_gainsboro },\n messageInput: {\n editingStateHeader: { editingBoxHeader, editingBoxHeaderTitle },\n },\n },\n } = useTheme();\n\n return (\n <View style={[styles.editingBoxHeader, editingBoxHeader]}>\n <Edit pathFill={grey_gainsboro} />\n <Text style={[styles.editingBoxHeaderTitle, { color: black }, editingBoxHeaderTitle]}>\n {t('Editing Message')}\n </Text>\n <TouchableOpacity\n disabled={disabled}\n onPress={() => {\n resetInput();\n clearEditingState();\n }}\n testID='close-button'\n >\n <CircleClose pathFill={grey} />\n </TouchableOpacity>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: InputEditingStateHeaderPropsWithContext<StreamChatGenerics>,\n nextProps: InputEditingStateHeaderPropsWithContext<StreamChatGenerics>,\n) => {\n const { disabled: prevDisabled } = prevProps;\n const { disabled: nextDisabled } = nextProps;\n\n const disabledEqual = prevDisabled === nextDisabled;\n if (!disabledEqual) return false;\n\n return true;\n};\n\nconst MemoizedInputEditingStateHeader = React.memo(\n InputEditingStateHeaderWithContext,\n areEqual,\n) as typeof InputEditingStateHeaderWithContext;\n\nexport type InputEditingStateHeaderProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<InputEditingStateHeaderPropsWithContext<StreamChatGenerics>>;\n\nexport const InputEditingStateHeader = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: InputEditingStateHeaderProps<StreamChatGenerics>,\n) => {\n const { clearEditingState, resetInput } = useMessageInputContext<StreamChatGenerics>();\n\n return <MemoizedInputEditingStateHeader {...{ clearEditingState, resetInput }} {...props} />;\n};\n\nInputEditingStateHeader.displayName = 'EditingStateHeader{messageInput}';\n"]}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.InputGiphySearchWithContext = exports.InputGiphySearch = void 0;
|
|
7
|
+
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _reactNative = require("react-native");
|
|
13
|
+
|
|
14
|
+
var _MessageInputContext = require("../../../contexts/messageInputContext/MessageInputContext");
|
|
15
|
+
|
|
16
|
+
var _ThemeContext = require("../../../contexts/themeContext/ThemeContext");
|
|
17
|
+
|
|
18
|
+
var _icons = require("../../../icons");
|
|
19
|
+
|
|
20
|
+
var _AutoCompleteInput = require("../../AutoCompleteInput/AutoCompleteInput");
|
|
21
|
+
|
|
22
|
+
var _useCountdown2 = require("../hooks/useCountdown");
|
|
23
|
+
|
|
24
|
+
var _this = this,
|
|
25
|
+
_jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageInput/components/InputGiphySearch.tsx";
|
|
26
|
+
|
|
27
|
+
var styles = _reactNative.StyleSheet.create({
|
|
28
|
+
autoCompleteInputContainer: {
|
|
29
|
+
alignItems: 'center',
|
|
30
|
+
flexDirection: 'row',
|
|
31
|
+
paddingLeft: 8,
|
|
32
|
+
paddingRight: 10
|
|
33
|
+
},
|
|
34
|
+
giphyContainer: {
|
|
35
|
+
alignItems: 'center',
|
|
36
|
+
borderRadius: 12,
|
|
37
|
+
flexDirection: 'row',
|
|
38
|
+
height: 24,
|
|
39
|
+
marginRight: 8,
|
|
40
|
+
paddingHorizontal: 8
|
|
41
|
+
},
|
|
42
|
+
giphyText: {
|
|
43
|
+
fontSize: 12,
|
|
44
|
+
fontWeight: 'bold'
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
var InputGiphySearchWithContext = function InputGiphySearchWithContext(_ref) {
|
|
49
|
+
var additionalTextInputProps = _ref.additionalTextInputProps,
|
|
50
|
+
cooldownEndsAt = _ref.cooldownEndsAt,
|
|
51
|
+
disabled = _ref.disabled,
|
|
52
|
+
setGiphyActive = _ref.setGiphyActive,
|
|
53
|
+
setShowMoreOptions = _ref.setShowMoreOptions;
|
|
54
|
+
|
|
55
|
+
var _useCountdown = (0, _useCountdown2.useCountdown)(cooldownEndsAt),
|
|
56
|
+
cooldownRemainingSeconds = _useCountdown.seconds;
|
|
57
|
+
|
|
58
|
+
var _useTheme = (0, _ThemeContext.useTheme)(),
|
|
59
|
+
_useTheme$theme = _useTheme.theme,
|
|
60
|
+
_useTheme$theme$color = _useTheme$theme.colors,
|
|
61
|
+
accent_blue = _useTheme$theme$color.accent_blue,
|
|
62
|
+
grey = _useTheme$theme$color.grey,
|
|
63
|
+
white = _useTheme$theme$color.white,
|
|
64
|
+
_useTheme$theme$messa = _useTheme$theme.messageInput,
|
|
65
|
+
autoCompleteInputContainer = _useTheme$theme$messa.autoCompleteInputContainer,
|
|
66
|
+
_useTheme$theme$messa2 = _useTheme$theme$messa.giphyCommandInput,
|
|
67
|
+
giphyContainer = _useTheme$theme$messa2.giphyContainer,
|
|
68
|
+
giphyText = _useTheme$theme$messa2.giphyText;
|
|
69
|
+
|
|
70
|
+
return _react["default"].createElement(_reactNative.View, {
|
|
71
|
+
style: [styles.autoCompleteInputContainer, autoCompleteInputContainer],
|
|
72
|
+
__self: _this,
|
|
73
|
+
__source: {
|
|
74
|
+
fileName: _jsxFileName,
|
|
75
|
+
lineNumber: 67,
|
|
76
|
+
columnNumber: 5
|
|
77
|
+
}
|
|
78
|
+
}, _react["default"].createElement(_reactNative.View, {
|
|
79
|
+
style: [styles.giphyContainer, {
|
|
80
|
+
backgroundColor: accent_blue
|
|
81
|
+
}, giphyContainer],
|
|
82
|
+
__self: _this,
|
|
83
|
+
__source: {
|
|
84
|
+
fileName: _jsxFileName,
|
|
85
|
+
lineNumber: 68,
|
|
86
|
+
columnNumber: 7
|
|
87
|
+
}
|
|
88
|
+
}, _react["default"].createElement(_icons.Lightning, {
|
|
89
|
+
height: 16,
|
|
90
|
+
pathFill: white,
|
|
91
|
+
width: 16,
|
|
92
|
+
__self: _this,
|
|
93
|
+
__source: {
|
|
94
|
+
fileName: _jsxFileName,
|
|
95
|
+
lineNumber: 69,
|
|
96
|
+
columnNumber: 9
|
|
97
|
+
}
|
|
98
|
+
}), _react["default"].createElement(_reactNative.Text, {
|
|
99
|
+
style: [styles.giphyText, {
|
|
100
|
+
color: white
|
|
101
|
+
}, giphyText],
|
|
102
|
+
__self: _this,
|
|
103
|
+
__source: {
|
|
104
|
+
fileName: _jsxFileName,
|
|
105
|
+
lineNumber: 70,
|
|
106
|
+
columnNumber: 9
|
|
107
|
+
}
|
|
108
|
+
}, "GIPHY")), _react["default"].createElement(_AutoCompleteInput.AutoCompleteInput, {
|
|
109
|
+
additionalTextInputProps: additionalTextInputProps,
|
|
110
|
+
cooldownActive: !!cooldownRemainingSeconds,
|
|
111
|
+
__self: _this,
|
|
112
|
+
__source: {
|
|
113
|
+
fileName: _jsxFileName,
|
|
114
|
+
lineNumber: 73,
|
|
115
|
+
columnNumber: 7
|
|
116
|
+
}
|
|
117
|
+
}), _react["default"].createElement(_reactNative.TouchableOpacity, {
|
|
118
|
+
disabled: disabled,
|
|
119
|
+
onPress: function onPress() {
|
|
120
|
+
setGiphyActive(false);
|
|
121
|
+
setShowMoreOptions(true);
|
|
122
|
+
},
|
|
123
|
+
testID: "close-button",
|
|
124
|
+
__self: _this,
|
|
125
|
+
__source: {
|
|
126
|
+
fileName: _jsxFileName,
|
|
127
|
+
lineNumber: 77,
|
|
128
|
+
columnNumber: 7
|
|
129
|
+
}
|
|
130
|
+
}, _react["default"].createElement(_icons.CircleClose, {
|
|
131
|
+
height: 20,
|
|
132
|
+
pathFill: grey,
|
|
133
|
+
width: 20,
|
|
134
|
+
__self: _this,
|
|
135
|
+
__source: {
|
|
136
|
+
fileName: _jsxFileName,
|
|
137
|
+
lineNumber: 85,
|
|
138
|
+
columnNumber: 9
|
|
139
|
+
}
|
|
140
|
+
})));
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
exports.InputGiphySearchWithContext = InputGiphySearchWithContext;
|
|
144
|
+
|
|
145
|
+
var areEqual = function areEqual(prevProps, nextProps) {
|
|
146
|
+
var prevDisabled = prevProps.disabled;
|
|
147
|
+
var nextDisabled = nextProps.disabled;
|
|
148
|
+
var disabledEqual = prevDisabled === nextDisabled;
|
|
149
|
+
if (!disabledEqual) return false;
|
|
150
|
+
return true;
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
var MemoizedInputGiphySearch = _react["default"].memo(InputGiphySearchWithContext, areEqual);
|
|
154
|
+
|
|
155
|
+
var InputGiphySearch = function InputGiphySearch(props) {
|
|
156
|
+
var _useMessageInputConte = (0, _MessageInputContext.useMessageInputContext)(),
|
|
157
|
+
additionalTextInputProps = _useMessageInputConte.additionalTextInputProps,
|
|
158
|
+
cooldownEndsAt = _useMessageInputConte.cooldownEndsAt,
|
|
159
|
+
setGiphyActive = _useMessageInputConte.setGiphyActive,
|
|
160
|
+
setShowMoreOptions = _useMessageInputConte.setShowMoreOptions;
|
|
161
|
+
|
|
162
|
+
return _react["default"].createElement(MemoizedInputGiphySearch, (0, _extends2["default"])({
|
|
163
|
+
additionalTextInputProps: additionalTextInputProps,
|
|
164
|
+
cooldownEndsAt: cooldownEndsAt,
|
|
165
|
+
setGiphyActive: setGiphyActive,
|
|
166
|
+
setShowMoreOptions: setShowMoreOptions
|
|
167
|
+
}, props, {
|
|
168
|
+
__self: _this,
|
|
169
|
+
__source: {
|
|
170
|
+
fileName: _jsxFileName,
|
|
171
|
+
lineNumber: 122,
|
|
172
|
+
columnNumber: 5
|
|
173
|
+
}
|
|
174
|
+
}));
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
exports.InputGiphySearch = InputGiphySearch;
|
|
178
|
+
InputGiphySearch.displayName = 'InputGiphySearch{messageInput}';
|
|
179
|
+
//# sourceMappingURL=InputGiphySearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["InputGiphySearch.tsx"],"names":["styles","StyleSheet","create","autoCompleteInputContainer","alignItems","flexDirection","paddingLeft","paddingRight","giphyContainer","borderRadius","height","marginRight","paddingHorizontal","giphyText","fontSize","fontWeight","InputGiphySearchWithContext","additionalTextInputProps","cooldownEndsAt","disabled","setGiphyActive","setShowMoreOptions","cooldownRemainingSeconds","seconds","theme","colors","accent_blue","grey","white","messageInput","giphyCommandInput","backgroundColor","color","areEqual","prevProps","nextProps","prevDisabled","nextDisabled","disabledEqual","MemoizedInputGiphySearch","React","memo","InputGiphySearch","props","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../../contexts/messageInputContext/MessageInputContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport { CircleClose, Lightning } from '../../../icons';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { AutoCompleteInput } from '../../AutoCompleteInput/AutoCompleteInput';\nimport { useCountdown } from '../hooks/useCountdown';\n\nconst styles = StyleSheet.create({\n autoCompleteInputContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n paddingLeft: 8,\n paddingRight: 10,\n },\n giphyContainer: {\n alignItems: 'center',\n borderRadius: 12,\n flexDirection: 'row',\n height: 24,\n marginRight: 8,\n paddingHorizontal: 8,\n },\n giphyText: {\n fontSize: 12,\n fontWeight: 'bold',\n },\n});\n\nexport type InputGiphySearchPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'additionalTextInputProps' | 'cooldownEndsAt' | 'setGiphyActive' | 'setShowMoreOptions'\n> &\n Pick<ChannelContextValue<StreamChatGenerics>, 'disabled'>;\n\nexport const InputGiphySearchWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n additionalTextInputProps,\n cooldownEndsAt,\n disabled,\n setGiphyActive,\n setShowMoreOptions,\n}: InputGiphySearchPropsWithContext<StreamChatGenerics>) => {\n const { seconds: cooldownRemainingSeconds } = useCountdown(cooldownEndsAt);\n\n const {\n theme: {\n colors: { accent_blue, grey, white },\n messageInput: {\n autoCompleteInputContainer,\n giphyCommandInput: { giphyContainer, giphyText },\n },\n },\n } = useTheme();\n\n return (\n <View style={[styles.autoCompleteInputContainer, autoCompleteInputContainer]}>\n <View style={[styles.giphyContainer, { backgroundColor: accent_blue }, giphyContainer]}>\n <Lightning height={16} pathFill={white} width={16} />\n <Text style={[styles.giphyText, { color: white }, giphyText]}>GIPHY</Text>\n </View>\n\n <AutoCompleteInput<StreamChatGenerics>\n additionalTextInputProps={additionalTextInputProps}\n cooldownActive={!!cooldownRemainingSeconds}\n />\n <TouchableOpacity\n disabled={disabled}\n onPress={() => {\n setGiphyActive(false);\n setShowMoreOptions(true);\n }}\n testID='close-button'\n >\n <CircleClose height={20} pathFill={grey} width={20} />\n </TouchableOpacity>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: InputGiphySearchPropsWithContext<StreamChatGenerics>,\n nextProps: InputGiphySearchPropsWithContext<StreamChatGenerics>,\n) => {\n const { disabled: prevDisabled } = prevProps;\n const { disabled: nextDisabled } = nextProps;\n\n const disabledEqual = prevDisabled === nextDisabled;\n if (!disabledEqual) return false;\n\n return true;\n};\n\nconst MemoizedInputGiphySearch = React.memo(\n InputGiphySearchWithContext,\n areEqual,\n) as typeof InputGiphySearchWithContext;\n\nexport type InputGiphySearchProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<InputGiphySearchPropsWithContext<StreamChatGenerics>>;\n\nexport const InputGiphySearch = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: InputGiphySearchProps<StreamChatGenerics>,\n) => {\n const { additionalTextInputProps, cooldownEndsAt, setGiphyActive, setShowMoreOptions } =\n useMessageInputContext<StreamChatGenerics>();\n\n return (\n <MemoizedInputGiphySearch\n {...{ additionalTextInputProps, cooldownEndsAt, setGiphyActive, setShowMoreOptions }}\n {...props}\n />\n );\n};\n\nInputGiphySearch.displayName = 'InputGiphySearch{messageInput}';\n"]}
|