stream-chat-react-native-core 3.9.0-next.8 → 3.9.2-next.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/Gallery.js +3 -5
- package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +5 -5
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelListLoadingIndicator.js +6 -4
- package/lib/commonjs/components/ChannelList/ChannelListLoadingIndicator.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +32 -11
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
- package/lib/commonjs/components/Chat/hooks/useIsOnline.js +23 -24
- package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js +3 -0
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/hooks/useIsMountedRef.js +19 -0
- package/lib/commonjs/hooks/useIsMountedRef.js.map +1 -0
- package/lib/commonjs/hooks/useStreami18n.js +4 -1
- package/lib/commonjs/hooks/useStreami18n.js.map +1 -1
- package/lib/commonjs/i18n/fr.json +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Gallery.js +3 -5
- package/lib/module/components/Attachment/Gallery.js.map +1 -1
- package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +5 -5
- package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelListLoadingIndicator.js +6 -4
- package/lib/module/components/ChannelList/ChannelListLoadingIndicator.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +32 -11
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
- package/lib/module/components/Chat/hooks/useIsOnline.js +23 -24
- package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/renderText.js +1 -1
- package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js +3 -0
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/hooks/useIsMountedRef.js +19 -0
- package/lib/module/hooks/useIsMountedRef.js.map +1 -0
- package/lib/module/hooks/useStreami18n.js +4 -1
- package/lib/module/hooks/useStreami18n.js.map +1 -1
- package/lib/module/i18n/fr.json +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts +3 -0
- package/lib/typescript/hooks/useIsMountedRef.d.ts +20 -0
- package/lib/typescript/hooks/useStreami18n.d.ts +1 -1
- package/lib/typescript/i18n/fr.json +1 -1
- package/package.json +1 -1
- package/src/components/Attachment/Gallery.tsx +3 -3
- package/src/components/AutoCompleteInput/AutoCompleteInput.tsx +3 -8
- package/src/components/ChannelList/ChannelListLoadingIndicator.tsx +2 -1
- package/src/components/ChannelList/hooks/usePaginatedChannels.ts +7 -1
- package/src/components/ChannelPreview/ChannelPreviewMessage.tsx +1 -1
- package/src/components/Chat/hooks/useIsOnline.ts +16 -17
- package/src/components/Message/MessageSimple/utils/renderText.tsx +1 -1
- package/src/contexts/themeContext/utils/theme.ts +6 -0
- package/src/hooks/useIsMountedRef.ts +36 -0
- package/src/hooks/useStreami18n.ts +5 -3
- package/src/i18n/fr.json +1 -1
- package/src/version.json +1 -1
|
@@ -50,9 +50,7 @@ var GalleryImage = function GalleryImage(props) {
|
|
|
50
50
|
error = _useState2[0],
|
|
51
51
|
setError = _useState2[1];
|
|
52
52
|
|
|
53
|
-
return _react["default"].createElement(_reactNative.Image, (0, _extends2["default"])({
|
|
54
|
-
key: uri
|
|
55
|
-
}, rest, {
|
|
53
|
+
return _react["default"].createElement(_reactNative.Image, (0, _extends2["default"])({}, rest, {
|
|
56
54
|
onError: function onError() {
|
|
57
55
|
return setError(true);
|
|
58
56
|
},
|
|
@@ -70,7 +68,7 @@ var GalleryImage = function GalleryImage(props) {
|
|
|
70
68
|
};
|
|
71
69
|
|
|
72
70
|
var MemoizedGalleryImage = _react["default"].memo(GalleryImage, function (prevProps, nextProps) {
|
|
73
|
-
return prevProps.height === nextProps.height && prevProps.uri === nextProps.uri;
|
|
71
|
+
return prevProps.height === nextProps.height && (0, _utils.getUrlWithoutParams)(prevProps.uri) === (0, _utils.getUrlWithoutParams)(nextProps.uri);
|
|
74
72
|
});
|
|
75
73
|
|
|
76
74
|
var styles = _reactNative.StyleSheet.create({
|
|
@@ -222,7 +220,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
|
|
|
222
220
|
return _react["default"].createElement(_reactNative.TouchableOpacity, (0, _extends2["default"])({
|
|
223
221
|
activeOpacity: 0.8,
|
|
224
222
|
disabled: preventPress,
|
|
225
|
-
key: "gallery-item-" +
|
|
223
|
+
key: "gallery-item-" + messageId + "/" + colIndex + "/" + rowIndex + "/" + images.length,
|
|
226
224
|
onLongPress: function onLongPress(event) {
|
|
227
225
|
if (_onLongPress) {
|
|
228
226
|
_onLongPress({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Gallery.tsx"],"names":["GalleryImage","props","height","uri","rest","error","setError","includes","replace","PixelRatio","getPixelSizeForLayoutSize","Number","MemoizedGalleryImage","React","memo","prevProps","nextProps","styles","StyleSheet","create","flex","galleryContainer","borderTopLeftRadius","borderTopRightRadius","flexDirection","flexWrap","overflow","imageContainer","padding","moreImagesContainer","alignItems","justifyContent","margin","moreImagesText","color","fontSize","fontWeight","GalleryWithContext","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","images","legacyImageViewerSwipeBehaviour","message","messageId","messageTextProp","messageText","onLongPress","onPress","onPressIn","preventPress","setBlurType","setImage","setImages","setOverlay","threadList","theme","overlay","colors","blurType","imageGallery","messageSimple","gallery","galleryItemColumn","halfSize","image","size","width","length","galleryImages","slice","reduce","returnArray","currentImage","index","attachmentUrl","image_url","thumb_url","url","groupStyle","toLowerCase","text","map","column","colIndex","rowIndex","defaultOnPress","id","event","emitter","defaultHandler","borderBottomLeftRadius","borderBottomRightRadius","absoluteFillObject","backgroundColor","areEqual","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessageText","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessageText","messageTextEqual","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","MemoizedGallery","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","propImages","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetBlurType","propSetImage","propSetOverlay","propThreadList","contextSetImage","contextAlignment","contextGroupStyles","contextImages","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextAdditionalTouchableProps","contextSetBlurType","contextSetOverlay","reply_count","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport {\n Image,\n ImageProps,\n PixelRatio,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n} from 'react-native';\n\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { getUrlWithoutParams, makeImageCompatibleUrl } from '../../utils/utils';\n\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\n\nconst GalleryImage: React.FC<\n Omit<ImageProps, 'height' | 'source'> & {\n height: number | string;\n uri: string;\n }\n> = (props) => {\n const { height, uri, ...rest } = props;\n\n const [error, setError] = useState(false);\n\n return (\n <Image\n key={uri}\n {...rest}\n onError={() => setError(true)}\n source={{\n uri: uri.includes('&h=%2A')\n ? error\n ? uri\n : uri.replace('h=%2A', `h=${PixelRatio.getPixelSizeForLayoutSize(Number(height))}`)\n : uri,\n }}\n testID='image-attachment-single'\n />\n );\n};\n\nconst MemoizedGalleryImage = React.memo(\n GalleryImage,\n (prevProps, nextProps) =>\n prevProps.height === nextProps.height && prevProps.uri === nextProps.uri,\n) as typeof GalleryImage;\n\nconst styles = StyleSheet.create({\n flex: { flex: 1 },\n galleryContainer: {\n borderTopLeftRadius: 13,\n borderTopRightRadius: 13,\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflow: 'hidden',\n },\n imageContainer: { flex: 1, padding: 1 },\n moreImagesContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n margin: 1,\n },\n moreImagesText: { color: '#FFFFFF', fontSize: 26, fontWeight: '700' },\n});\n\nexport type GalleryPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<ImageGalleryContextValue, 'setImage' | 'setImages'> &\n Pick<\n MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'alignment'\n | 'groupStyles'\n | 'images'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'threadList'\n > &\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'additionalTouchableProps' | 'legacyImageViewerSwipeBehaviour'\n > &\n Pick<OverlayContextValue, 'setBlurType' | 'setOverlay'> & {\n /**\n * `message` prop has been introduced here as part of `legacyImageViewerSwipeBehaviour` prop.\n * https://github.com/GetStream/stream-chat-react-native/commit/d5eac6193047916f140efe8e396a671675c9a63f\n * messageId and messageText may seem redundant now, but to avoid breaking change as part\n * of minor release, we are keeping those props.\n *\n * Also `message` type should ideally be imported from MessageContextValue and not be explicitely mentioned\n * here, but due to some circular dependencies within the SDK, it causes \"exccesive deep nesting\" issue with\n * typescript within Channel component. We should take it as a mini-project and resolve all these circular imports.\n *\n * TODO[major]: remove messageId and messageText\n * TODO: Fix circular dependencies of imports\n */\n hasThreadReplies?: boolean;\n message?: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n messageId?: string;\n messageText?: string;\n };\n\nconst GalleryWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n messageId,\n messageText: messageTextProp,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setBlurType,\n setImage,\n setImages,\n setOverlay,\n threadList,\n } = props;\n\n const {\n theme: {\n colors: { overlay },\n imageGallery: { blurType },\n messageSimple: {\n gallery: {\n galleryContainer,\n galleryItemColumn,\n halfSize,\n image,\n imageContainer,\n moreImagesContainer,\n moreImagesText,\n size,\n width,\n },\n },\n },\n } = useTheme();\n\n if (!images?.length) return null;\n\n // [[{ height: number; url: string; }], [{ height: number; url: string; }, { height: number; url: string; }]]\n const galleryImages = images.slice(0, 4).reduce((returnArray, currentImage, index) => {\n const attachmentUrl = currentImage.image_url || currentImage.thumb_url;\n if (attachmentUrl) {\n const url = makeImageCompatibleUrl(attachmentUrl);\n if (images.length <= 2) {\n returnArray[0] = [...(returnArray[0] || []), { height: size || 200, url }];\n } else if (images.length === 3) {\n if (index === 0) {\n returnArray[0] = [{ height: size || 200, url }];\n } else {\n returnArray[1] = [...(returnArray[1] || []), { height: halfSize || 100, url }];\n }\n } else {\n returnArray[index % 2] = [\n ...(returnArray[index % 2] || []),\n { height: halfSize || 100, url },\n ];\n }\n }\n return returnArray;\n }, [] as { height: number | string; url: string }[][]);\n\n const groupStyle = `${alignment}_${groupStyles?.[0]?.toLowerCase?.()}`;\n const messageText = messageTextProp || message?.text;\n\n return (\n <View\n style={[\n styles.galleryContainer,\n {\n width,\n },\n galleryContainer,\n ]}\n testID='image-multiple-container'\n >\n {galleryImages.map((column, colIndex) => (\n <View\n key={`gallery-item-column-${colIndex}`}\n style={[\n styles.flex,\n {\n flexDirection: images.length === 2 ? 'row' : 'column',\n },\n galleryItemColumn,\n ]}\n >\n {column.map(({ height, url }, rowIndex) => {\n const defaultOnPress = () => {\n // Added if-else to keep the logic readable, instead of DRY.\n // if - legacyImageViewerSwipeBehaviour is disabled\n // else - legacyImageViewerSwipeBehaviour is enabled\n if (!legacyImageViewerSwipeBehaviour && message) {\n setImages([message]);\n setImage({ messageId: messageId || message.id, url });\n setBlurType(blurType);\n setOverlay('gallery');\n } else if (legacyImageViewerSwipeBehaviour) {\n setImage({ messageId: messageId || message?.id, url });\n setBlurType(blurType);\n setOverlay('gallery');\n }\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n disabled={preventPress}\n key={`gallery-item-${url}/${rowIndex}/${images.length}`}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n style={[\n styles.imageContainer,\n {\n height,\n },\n imageContainer,\n ]}\n testID='image-multiple'\n {...additionalTouchableProps}\n >\n <MemoizedGalleryImage\n height={height}\n resizeMode='cover'\n style={[\n styles.flex,\n {\n borderBottomLeftRadius:\n (images.length === 1 ||\n (images.length === 2 && rowIndex === 0) ||\n (images.length === 3 && colIndex === 0 && rowIndex === 0) ||\n (images.length === 4 && colIndex === 0 && rowIndex === 1)) &&\n !messageText &&\n ((groupStyle !== 'left_bottom' && groupStyle !== 'left_single') ||\n (hasThreadReplies && !threadList))\n ? 14\n : 0,\n borderBottomRightRadius:\n (images.length === 1 ||\n (colIndex === 1 && (images.length === 2 || rowIndex === 1))) &&\n !messageText &&\n ((groupStyle !== 'right_bottom' && groupStyle !== 'right_single') ||\n (hasThreadReplies && !threadList))\n ? 14\n : 0,\n borderTopLeftRadius: colIndex === 0 && rowIndex === 0 ? 14 : 0,\n borderTopRightRadius:\n ((colIndex === 1 || images.length === 1) && rowIndex === 0) ||\n (images.length === 3 && colIndex === 0 && rowIndex === 1) ||\n (images.length === 2 && rowIndex === 1)\n ? 14\n : 0,\n },\n image,\n ]}\n uri={url}\n />\n {colIndex === 1 && rowIndex === 1 && images.length > 3 ? (\n <View\n style={[\n StyleSheet.absoluteFillObject,\n styles.moreImagesContainer,\n { backgroundColor: overlay },\n moreImagesContainer,\n ]}\n >\n <Text style={[styles.moreImagesText, moreImagesText]}>\n {`+${images.length - 3}`}\n </Text>\n </View>\n ) : null}\n </TouchableOpacity>\n );\n })}\n </View>\n ))}\n </View>\n );\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n groupStyles: prevGroupStyles,\n hasThreadReplies: prevHasThreadReplies,\n images: prevImages,\n messageText: prevMessageText,\n } = prevProps;\n const {\n groupStyles: nextGroupStyles,\n hasThreadReplies: nextHasThreadReplies,\n images: nextImages,\n messageText: nextMessageText,\n } = nextProps;\n\n const messageTextEqual = prevMessageText === nextMessageText;\n if (!messageTextEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];\n if (!groupStylesEqual) return false;\n\n const hasThreadRepliesEqual = prevHasThreadReplies === nextHasThreadReplies;\n if (!hasThreadRepliesEqual) return false;\n\n const imagesEqual =\n prevImages.length === nextImages.length &&\n prevImages.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextImages[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextImages[index].thumb_url),\n );\n if (!imagesEqual) return false;\n\n return true;\n};\n\nconst MemoizedGallery = React.memo(GalleryWithContext, areEqual) as typeof GalleryWithContext;\n\nexport type GalleryProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>>;\n\n/**\n * UI component for card in attachments.\n */\nexport const Gallery = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: GalleryProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n additionalTouchableProps: propAdditionalTouchableProps,\n alignment: propAlignment,\n groupStyles: propGroupStyles,\n hasThreadReplies,\n images: propImages,\n messageId,\n messageText,\n onLongPress: propOnLongPress,\n onPress: propOnPress,\n onPressIn: propOnPressIn,\n preventPress: propPreventPress,\n setBlurType: propSetBlurType,\n setImage: propSetImage,\n setOverlay: propSetOverlay,\n threadList: propThreadList,\n } = props;\n\n const { setImage: contextSetImage, setImages } = useImageGalleryContext();\n const {\n alignment: contextAlignment,\n groupStyles: contextGroupStyles,\n images: contextImages,\n message,\n onLongPress: contextOnLongPress,\n onPress: contextOnPress,\n onPressIn: contextOnPressIn,\n preventPress: contextPreventPress,\n threadList: contextThreadList,\n } = useMessageContext<At, Ch, Co, Ev, Me, Re, Us>();\n const {\n additionalTouchableProps: contextAdditionalTouchableProps,\n legacyImageViewerSwipeBehaviour,\n } = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { setBlurType: contextSetBlurType, setOverlay: contextSetOverlay } = useOverlayContext();\n\n const images = propImages || contextImages;\n\n if (!images.length) return null;\n\n const additionalTouchableProps = propAdditionalTouchableProps || contextAdditionalTouchableProps;\n const alignment = propAlignment || contextAlignment;\n const groupStyles = propGroupStyles || contextGroupStyles;\n const onLongPress = propOnLongPress || contextOnLongPress;\n const onPressIn = propOnPressIn || contextOnPressIn;\n const onPress = propOnPress || contextOnPress;\n const preventPress =\n typeof propPreventPress === 'boolean' ? propPreventPress : contextPreventPress;\n const setBlurType = propSetBlurType || contextSetBlurType;\n const setImage = propSetImage || contextSetImage;\n const setOverlay = propSetOverlay || contextSetOverlay;\n const threadList = propThreadList || contextThreadList;\n\n return (\n <MemoizedGallery\n {...{\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies: hasThreadReplies || !!message?.reply_count,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n messageId: messageId || message?.id,\n messageText: messageText || message?.text,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setBlurType,\n setImage,\n setImages,\n setOverlay,\n threadList,\n }}\n />\n );\n};\n\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"]}
|
|
1
|
+
{"version":3,"sources":["Gallery.tsx"],"names":["GalleryImage","props","height","uri","rest","error","setError","includes","replace","PixelRatio","getPixelSizeForLayoutSize","Number","MemoizedGalleryImage","React","memo","prevProps","nextProps","styles","StyleSheet","create","flex","galleryContainer","borderTopLeftRadius","borderTopRightRadius","flexDirection","flexWrap","overflow","imageContainer","padding","moreImagesContainer","alignItems","justifyContent","margin","moreImagesText","color","fontSize","fontWeight","GalleryWithContext","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","images","legacyImageViewerSwipeBehaviour","message","messageId","messageTextProp","messageText","onLongPress","onPress","onPressIn","preventPress","setBlurType","setImage","setImages","setOverlay","threadList","theme","overlay","colors","blurType","imageGallery","messageSimple","gallery","galleryItemColumn","halfSize","image","size","width","length","galleryImages","slice","reduce","returnArray","currentImage","index","attachmentUrl","image_url","thumb_url","url","groupStyle","toLowerCase","text","map","column","colIndex","rowIndex","defaultOnPress","id","event","emitter","defaultHandler","borderBottomLeftRadius","borderBottomRightRadius","absoluteFillObject","backgroundColor","areEqual","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessageText","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessageText","messageTextEqual","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","MemoizedGallery","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","propImages","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetBlurType","propSetImage","propSetOverlay","propThreadList","contextSetImage","contextAlignment","contextGroupStyles","contextImages","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextAdditionalTouchableProps","contextSetBlurType","contextSetOverlay","reply_count","displayName"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;AAUA;;AAIA;;AAIA;;AAIA;;AAIA;;AACA;;;;;;;;;;;AAcA,IAAMA,YAKL,GAAG,SALEA,YAKF,CAACC,KAAD,EAAW;AACb,MAAQC,MAAR,GAAiCD,KAAjC,CAAQC,MAAR;AAAA,MAAgBC,GAAhB,GAAiCF,KAAjC,CAAgBE,GAAhB;AAAA,MAAwBC,IAAxB,6CAAiCH,KAAjC;;AAEA,kBAA0B,qBAAS,KAAT,CAA1B;AAAA;AAAA,MAAOI,KAAP;AAAA,MAAcC,QAAd;;AAEA,SACE,gCAAC,kBAAD,gCACMF,IADN;AAEE,IAAA,OAAO,EAAE;AAAA,aAAME,QAAQ,CAAC,IAAD,CAAd;AAAA,KAFX;AAGE,IAAA,MAAM,EAAE;AACNH,MAAAA,GAAG,EAAEA,GAAG,CAACI,QAAJ,CAAa,QAAb,IACDF,KAAK,GACHF,GADG,GAEHA,GAAG,CAACK,OAAJ,CAAY,OAAZ,SAA0BC,wBAAWC,yBAAX,CAAqCC,MAAM,CAACT,MAAD,CAA3C,CAA1B,CAHD,GAIDC;AALE,KAHV;AAUE,IAAA,MAAM,EAAC,yBAVT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AAcD,CAxBD;;AA0BA,IAAMS,oBAAoB,GAAGC,kBAAMC,IAAN,CAC3Bd,YAD2B,EAE3B,UAACe,SAAD,EAAYC,SAAZ;AAAA,SACED,SAAS,CAACb,MAAV,KAAqBc,SAAS,CAACd,MAA/B,IACA,gCAAoBa,SAAS,CAACZ,GAA9B,MAAuC,gCAAoBa,SAAS,CAACb,GAA9B,CAFzC;AAAA,CAF2B,CAA7B;;AAOA,IAAMc,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,IAAI,EAAE;AAAEA,IAAAA,IAAI,EAAE;AAAR,GADyB;AAE/BC,EAAAA,gBAAgB,EAAE;AAChBC,IAAAA,mBAAmB,EAAE,EADL;AAEhBC,IAAAA,oBAAoB,EAAE,EAFN;AAGhBC,IAAAA,aAAa,EAAE,KAHC;AAIhBC,IAAAA,QAAQ,EAAE,MAJM;AAKhBC,IAAAA,QAAQ,EAAE;AALM,GAFa;AAS/BC,EAAAA,cAAc,EAAE;AAAEP,IAAAA,IAAI,EAAE,CAAR;AAAWQ,IAAAA,OAAO,EAAE;AAApB,GATe;AAU/BC,EAAAA,mBAAmB,EAAE;AACnBC,IAAAA,UAAU,EAAE,QADO;AAEnBC,IAAAA,cAAc,EAAE,QAFG;AAGnBC,IAAAA,MAAM,EAAE;AAHW,GAVU;AAe/BC,EAAAA,cAAc,EAAE;AAAEC,IAAAA,KAAK,EAAE,SAAT;AAAoBC,IAAAA,QAAQ,EAAE,EAA9B;AAAkCC,IAAAA,UAAU,EAAE;AAA9C;AAfe,CAAlB,CAAf;;AA8DA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CASzBpC,KATyB,EAUtB;AAAA;;AACH,MACEqC,wBADF,GAmBIrC,KAnBJ,CACEqC,wBADF;AAAA,MAEEC,SAFF,GAmBItC,KAnBJ,CAEEsC,SAFF;AAAA,MAGEC,WAHF,GAmBIvC,KAnBJ,CAGEuC,WAHF;AAAA,MAIEC,gBAJF,GAmBIxC,KAnBJ,CAIEwC,gBAJF;AAAA,MAKEC,MALF,GAmBIzC,KAnBJ,CAKEyC,MALF;AAAA,MAMEC,+BANF,GAmBI1C,KAnBJ,CAME0C,+BANF;AAAA,MAOEC,OAPF,GAmBI3C,KAnBJ,CAOE2C,OAPF;AAAA,MAQEC,SARF,GAmBI5C,KAnBJ,CAQE4C,SARF;AAAA,MASeC,eATf,GAmBI7C,KAnBJ,CASE8C,WATF;AAAA,MAUEC,YAVF,GAmBI/C,KAnBJ,CAUE+C,WAVF;AAAA,MAWEC,QAXF,GAmBIhD,KAnBJ,CAWEgD,OAXF;AAAA,MAYEC,UAZF,GAmBIjD,KAnBJ,CAYEiD,SAZF;AAAA,MAaEC,YAbF,GAmBIlD,KAnBJ,CAaEkD,YAbF;AAAA,MAcEC,WAdF,GAmBInD,KAnBJ,CAcEmD,WAdF;AAAA,MAeEC,QAfF,GAmBIpD,KAnBJ,CAeEoD,QAfF;AAAA,MAgBEC,SAhBF,GAmBIrD,KAnBJ,CAgBEqD,SAhBF;AAAA,MAiBEC,UAjBF,GAmBItD,KAnBJ,CAiBEsD,UAjBF;AAAA,MAkBEC,UAlBF,GAmBIvD,KAnBJ,CAkBEuD,UAlBF;;AAqBA,kBAkBI,6BAlBJ;AAAA,kCACEC,KADF;AAAA,MAEcC,OAFd,mBAEIC,MAFJ,CAEcD,OAFd;AAAA,MAGoBE,QAHpB,mBAGIC,YAHJ,CAGoBD,QAHpB;AAAA,8CAIIE,aAJJ,CAKMC,OALN;AAAA,MAMQ1C,gBANR,yBAMQA,gBANR;AAAA,MAOQ2C,iBAPR,yBAOQA,iBAPR;AAAA,MAQQC,QARR,yBAQQA,QARR;AAAA,MASQC,KATR,yBASQA,KATR;AAAA,MAUQvC,cAVR,yBAUQA,cAVR;AAAA,MAWQE,mBAXR,yBAWQA,mBAXR;AAAA,MAYQI,cAZR,yBAYQA,cAZR;AAAA,MAaQkC,IAbR,yBAaQA,IAbR;AAAA,MAcQC,KAdR,yBAcQA,KAdR;;AAoBA,MAAI,EAAC1B,MAAD,YAACA,MAAM,CAAE2B,MAAT,CAAJ,EAAqB,OAAO,IAAP;AAGrB,MAAMC,aAAa,GAAG5B,MAAM,CAAC6B,KAAP,CAAa,CAAb,EAAgB,CAAhB,EAAmBC,MAAnB,CAA0B,UAACC,WAAD,EAAcC,YAAd,EAA4BC,KAA5B,EAAsC;AACpF,QAAMC,aAAa,GAAGF,YAAY,CAACG,SAAb,IAA0BH,YAAY,CAACI,SAA7D;;AACA,QAAIF,aAAJ,EAAmB;AACjB,UAAMG,GAAG,GAAG,mCAAuBH,aAAvB,CAAZ;;AACA,UAAIlC,MAAM,CAAC2B,MAAP,IAAiB,CAArB,EAAwB;AACtBI,QAAAA,WAAW,CAAC,CAAD,CAAX,iDAAsBA,WAAW,CAAC,CAAD,CAAX,IAAkB,EAAxC,IAA6C;AAAEvE,UAAAA,MAAM,EAAEiE,IAAI,IAAI,GAAlB;AAAuBY,UAAAA,GAAG,EAAHA;AAAvB,SAA7C;AACD,OAFD,MAEO,IAAIrC,MAAM,CAAC2B,MAAP,KAAkB,CAAtB,EAAyB;AAC9B,YAAIM,KAAK,KAAK,CAAd,EAAiB;AACfF,UAAAA,WAAW,CAAC,CAAD,CAAX,GAAiB,CAAC;AAAEvE,YAAAA,MAAM,EAAEiE,IAAI,IAAI,GAAlB;AAAuBY,YAAAA,GAAG,EAAHA;AAAvB,WAAD,CAAjB;AACD,SAFD,MAEO;AACLN,UAAAA,WAAW,CAAC,CAAD,CAAX,iDAAsBA,WAAW,CAAC,CAAD,CAAX,IAAkB,EAAxC,IAA6C;AAAEvE,YAAAA,MAAM,EAAE+D,QAAQ,IAAI,GAAtB;AAA2Bc,YAAAA,GAAG,EAAHA;AAA3B,WAA7C;AACD;AACF,OANM,MAMA;AACLN,QAAAA,WAAW,CAACE,KAAK,GAAG,CAAT,CAAX,iDACMF,WAAW,CAACE,KAAK,GAAG,CAAT,CAAX,IAA0B,EADhC,IAEE;AAAEzE,UAAAA,MAAM,EAAE+D,QAAQ,IAAI,GAAtB;AAA2Bc,UAAAA,GAAG,EAAHA;AAA3B,SAFF;AAID;AACF;;AACD,WAAON,WAAP;AACD,GApBqB,EAoBnB,EApBmB,CAAtB;AAsBA,MAAMO,UAAU,GAAMzC,SAAN,UAAmBC,WAAnB,qCAAmBA,WAAW,CAAG,CAAH,CAA9B,qBAAmB,cAAkByC,WAArC,oBAAmB,cAAkBA,WAAlB,EAAnB,CAAhB;AACA,MAAMlC,WAAW,GAAGD,eAAe,KAAIF,OAAJ,oBAAIA,OAAO,CAAEsC,IAAb,CAAnC;AAEA,SACE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLjE,MAAM,CAACI,gBADF,EAEL;AACE+C,MAAAA,KAAK,EAALA;AADF,KAFK,EAKL/C,gBALK,CADT;AAQE,IAAA,MAAM,EAAC,0BART;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAUGiD,aAAa,CAACa,GAAd,CAAkB,UAACC,MAAD,EAASC,QAAT;AAAA,WACjB,gCAAC,iBAAD;AACE,MAAA,GAAG,2BAAyBA,QAD9B;AAEE,MAAA,KAAK,EAAE,CACLpE,MAAM,CAACG,IADF,EAEL;AACEI,QAAAA,aAAa,EAAEkB,MAAM,CAAC2B,MAAP,KAAkB,CAAlB,GAAsB,KAAtB,GAA8B;AAD/C,OAFK,EAKLL,iBALK,CAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAUGoB,MAAM,CAACD,GAAP,CAAW,gBAAkBG,QAAlB,EAA+B;AAAA,UAA5BpF,MAA4B,QAA5BA,MAA4B;AAAA,UAApB6E,GAAoB,QAApBA,GAAoB;;AACzC,UAAMQ,cAAc,GAAG,SAAjBA,cAAiB,GAAM;AAI3B,YAAI,CAAC5C,+BAAD,IAAoCC,OAAxC,EAAiD;AAC/CU,UAAAA,SAAS,CAAC,CAACV,OAAD,CAAD,CAAT;AACAS,UAAAA,QAAQ,CAAC;AAAER,YAAAA,SAAS,EAAEA,SAAS,IAAID,OAAO,CAAC4C,EAAlC;AAAsCT,YAAAA,GAAG,EAAHA;AAAtC,WAAD,CAAR;AACA3B,UAAAA,WAAW,CAACQ,QAAD,CAAX;AACAL,UAAAA,UAAU,CAAC,SAAD,CAAV;AACD,SALD,MAKO,IAAIZ,+BAAJ,EAAqC;AAC1CU,UAAAA,QAAQ,CAAC;AAAER,YAAAA,SAAS,EAAEA,SAAS,KAAID,OAAJ,oBAAIA,OAAO,CAAE4C,EAAb,CAAtB;AAAuCT,YAAAA,GAAG,EAAHA;AAAvC,WAAD,CAAR;AACA3B,UAAAA,WAAW,CAACQ,QAAD,CAAX;AACAL,UAAAA,UAAU,CAAC,SAAD,CAAV;AACD;AACF,OAdD;;AAgBA,aACE,gCAAC,6BAAD;AACE,QAAA,aAAa,EAAE,GADjB;AAEE,QAAA,QAAQ,EAAEJ,YAFZ;AAGE,QAAA,GAAG,oBAAkBN,SAAlB,SAA+BwC,QAA/B,SAA2CC,QAA3C,SAAuD5C,MAAM,CAAC2B,MAHnE;AAIE,QAAA,WAAW,EAAE,qBAACoB,KAAD,EAAW;AACtB,cAAIzC,YAAJ,EAAiB;AACfA,YAAAA,YAAW,CAAC;AACV0C,cAAAA,OAAO,EAAE,SADC;AAEVD,cAAAA,KAAK,EAALA;AAFU,aAAD,CAAX;AAID;AACF,SAXH;AAYE,QAAA,OAAO,EAAE,iBAACA,KAAD,EAAW;AAClB,cAAIxC,QAAJ,EAAa;AACXA,YAAAA,QAAO,CAAC;AACN0C,cAAAA,cAAc,EAAEJ,cADV;AAENG,cAAAA,OAAO,EAAE,SAFH;AAGND,cAAAA,KAAK,EAALA;AAHM,aAAD,CAAP;AAKD;AACF,SApBH;AAqBE,QAAA,SAAS,EAAE,mBAACA,KAAD,EAAW;AACpB,cAAIvC,UAAJ,EAAe;AACbA,YAAAA,UAAS,CAAC;AACRyC,cAAAA,cAAc,EAAEJ,cADR;AAERG,cAAAA,OAAO,EAAE,SAFD;AAGRD,cAAAA,KAAK,EAALA;AAHQ,aAAD,CAAT;AAKD;AACF,SA7BH;AA8BE,QAAA,KAAK,EAAE,CACLxE,MAAM,CAACU,cADF,EAEL;AACEzB,UAAAA,MAAM,EAANA;AADF,SAFK,EAKLyB,cALK,CA9BT;AAqCE,QAAA,MAAM,EAAC;AArCT,SAsCMW,wBAtCN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAwCE,gCAAC,oBAAD;AACE,QAAA,MAAM,EAAEpC,MADV;AAEE,QAAA,UAAU,EAAC,OAFb;AAGE,QAAA,KAAK,EAAE,CACLe,MAAM,CAACG,IADF,EAEL;AACEwE,UAAAA,sBAAsB,EACpB,CAAClD,MAAM,CAAC2B,MAAP,KAAkB,CAAlB,IACE3B,MAAM,CAAC2B,MAAP,KAAkB,CAAlB,IAAuBiB,QAAQ,KAAK,CADtC,IAEE5C,MAAM,CAAC2B,MAAP,KAAkB,CAAlB,IAAuBgB,QAAQ,KAAK,CAApC,IAAyCC,QAAQ,KAAK,CAFxD,IAGE5C,MAAM,CAAC2B,MAAP,KAAkB,CAAlB,IAAuBgB,QAAQ,KAAK,CAApC,IAAyCC,QAAQ,KAAK,CAHzD,KAIA,CAACvC,WAJD,KAKEiC,UAAU,KAAK,aAAf,IAAgCA,UAAU,KAAK,aAAhD,IACEvC,gBAAgB,IAAI,CAACe,UANxB,IAOI,EAPJ,GAQI,CAVR;AAWEqC,UAAAA,uBAAuB,EACrB,CAACnD,MAAM,CAAC2B,MAAP,KAAkB,CAAlB,IACEgB,QAAQ,KAAK,CAAb,KAAmB3C,MAAM,CAAC2B,MAAP,KAAkB,CAAlB,IAAuBiB,QAAQ,KAAK,CAAvD,CADH,KAEA,CAACvC,WAFD,KAGEiC,UAAU,KAAK,cAAf,IAAiCA,UAAU,KAAK,cAAjD,IACEvC,gBAAgB,IAAI,CAACe,UAJxB,IAKI,EALJ,GAMI,CAlBR;AAmBElC,UAAAA,mBAAmB,EAAE+D,QAAQ,KAAK,CAAb,IAAkBC,QAAQ,KAAK,CAA/B,GAAmC,EAAnC,GAAwC,CAnB/D;AAoBE/D,UAAAA,oBAAoB,EACjB,CAAC8D,QAAQ,KAAK,CAAb,IAAkB3C,MAAM,CAAC2B,MAAP,KAAkB,CAArC,KAA2CiB,QAAQ,KAAK,CAAzD,IACC5C,MAAM,CAAC2B,MAAP,KAAkB,CAAlB,IAAuBgB,QAAQ,KAAK,CAApC,IAAyCC,QAAQ,KAAK,CADvD,IAEC5C,MAAM,CAAC2B,MAAP,KAAkB,CAAlB,IAAuBiB,QAAQ,KAAK,CAFrC,GAGI,EAHJ,GAII;AAzBR,SAFK,EA6BLpB,KA7BK,CAHT;AAkCE,QAAA,GAAG,EAAEa,GAlCP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAxCF,EA4EGM,QAAQ,KAAK,CAAb,IAAkBC,QAAQ,KAAK,CAA/B,IAAoC5C,MAAM,CAAC2B,MAAP,GAAgB,CAApD,GACC,gCAAC,iBAAD;AACE,QAAA,KAAK,EAAE,CACLnD,wBAAW4E,kBADN,EAEL7E,MAAM,CAACY,mBAFF,EAGL;AAAEkE,UAAAA,eAAe,EAAErC;AAAnB,SAHK,EAIL7B,mBAJK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAQE,gCAAC,iBAAD;AAAM,QAAA,KAAK,EAAE,CAACZ,MAAM,CAACgB,cAAR,EAAwBA,cAAxB,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBACOS,MAAM,CAAC2B,MAAP,GAAgB,CADvB,EARF,CADD,GAaG,IAzFN,CADF;AA6FD,KA9GA,CAVH,CADiB;AAAA,GAAlB,CAVH,CADF;AAyID,CAzND;;AA2NA,IAAM2B,QAAQ,GAAG,SAAXA,QAAW,CASfjF,SATe,EAUfC,SAVe,EAWZ;AACH,MACeiF,eADf,GAKIlF,SALJ,CACEyB,WADF;AAAA,MAEoB0D,oBAFpB,GAKInF,SALJ,CAEE0B,gBAFF;AAAA,MAGU0D,UAHV,GAKIpF,SALJ,CAGE2B,MAHF;AAAA,MAIe0D,eAJf,GAKIrF,SALJ,CAIEgC,WAJF;AAMA,MACesD,eADf,GAKIrF,SALJ,CACEwB,WADF;AAAA,MAEoB8D,oBAFpB,GAKItF,SALJ,CAEEyB,gBAFF;AAAA,MAGU8D,UAHV,GAKIvF,SALJ,CAGE0B,MAHF;AAAA,MAIe8D,eAJf,GAKIxF,SALJ,CAIE+B,WAJF;AAOA,MAAM0D,gBAAgB,GAAGL,eAAe,KAAKI,eAA7C;AACA,MAAI,CAACC,gBAAL,EAAuB,OAAO,KAAP;AAEvB,MAAMC,gBAAgB,GACpBT,eAAe,CAAC5B,MAAhB,KAA2BgC,eAAe,CAAChC,MAA3C,IAAqD4B,eAAe,CAAC,CAAD,CAAf,KAAuBI,eAAe,CAAC,CAAD,CAD7F;AAEA,MAAI,CAACK,gBAAL,EAAuB,OAAO,KAAP;AAEvB,MAAMC,qBAAqB,GAAGT,oBAAoB,KAAKI,oBAAvD;AACA,MAAI,CAACK,qBAAL,EAA4B,OAAO,KAAP;AAE5B,MAAMC,WAAW,GACfT,UAAU,CAAC9B,MAAX,KAAsBkC,UAAU,CAAClC,MAAjC,IACA8B,UAAU,CAACU,KAAX,CACE,UAAC3C,KAAD,EAAQS,KAAR;AAAA,WACE,gCAAoBT,KAAK,CAACW,SAA1B,MAAyC,gCAAoB0B,UAAU,CAAC5B,KAAD,CAAV,CAAkBE,SAAtC,CAAzC,IACA,gCAAoBX,KAAK,CAACY,SAA1B,MAAyC,gCAAoByB,UAAU,CAAC5B,KAAD,CAAV,CAAkBG,SAAtC,CAF3C;AAAA,GADF,CAFF;AAOA,MAAI,CAAC8B,WAAL,EAAkB,OAAO,KAAP;AAElB,SAAO,IAAP;AACD,CA7CD;;AA+CA,IAAME,eAAe,GAAGjG,kBAAMC,IAAN,CAAWuB,kBAAX,EAA+B2D,QAA/B,CAAxB;;AAeO,IAAMe,OAAO,GAAG,SAAVA,OAAU,CASrB9G,KATqB,EAUlB;AACH,MAC4B+G,4BAD5B,GAgBI/G,KAhBJ,CACEqC,wBADF;AAAA,MAEa2E,aAFb,GAgBIhH,KAhBJ,CAEEsC,SAFF;AAAA,MAGe2E,eAHf,GAgBIjH,KAhBJ,CAGEuC,WAHF;AAAA,MAIEC,gBAJF,GAgBIxC,KAhBJ,CAIEwC,gBAJF;AAAA,MAKU0E,UALV,GAgBIlH,KAhBJ,CAKEyC,MALF;AAAA,MAMEG,SANF,GAgBI5C,KAhBJ,CAME4C,SANF;AAAA,MAOEE,WAPF,GAgBI9C,KAhBJ,CAOE8C,WAPF;AAAA,MAQeqE,eARf,GAgBInH,KAhBJ,CAQE+C,WARF;AAAA,MASWqE,WATX,GAgBIpH,KAhBJ,CASEgD,OATF;AAAA,MAUaqE,aAVb,GAgBIrH,KAhBJ,CAUEiD,SAVF;AAAA,MAWgBqE,gBAXhB,GAgBItH,KAhBJ,CAWEkD,YAXF;AAAA,MAYeqE,eAZf,GAgBIvH,KAhBJ,CAYEmD,WAZF;AAAA,MAaYqE,YAbZ,GAgBIxH,KAhBJ,CAaEoD,QAbF;AAAA,MAccqE,cAdd,GAgBIzH,KAhBJ,CAcEsD,UAdF;AAAA,MAecoE,cAfd,GAgBI1H,KAhBJ,CAeEuD,UAfF;;AAkBA,8BAAiD,kDAAjD;AAAA,MAAkBoE,eAAlB,yBAAQvE,QAAR;AAAA,MAAmCC,SAAnC,yBAAmCA,SAAnC;;AACA,2BAUI,wCAVJ;AAAA,MACauE,gBADb,sBACEtF,SADF;AAAA,MAEeuF,kBAFf,sBAEEtF,WAFF;AAAA,MAGUuF,aAHV,sBAGErF,MAHF;AAAA,MAIEE,OAJF,sBAIEA,OAJF;AAAA,MAKeoF,kBALf,sBAKEhF,WALF;AAAA,MAMWiF,cANX,sBAMEhF,OANF;AAAA,MAOaiF,gBAPb,sBAOEhF,SAPF;AAAA,MAQgBiF,mBARhB,sBAQEhF,YARF;AAAA,MASciF,iBATd,sBASE5E,UATF;;AAWA,4BAGI,0CAHJ;AAAA,MAC4B6E,+BAD5B,uBACE/F,wBADF;AAAA,MAEEK,+BAFF,uBAEEA,+BAFF;;AAIA,2BAA2E,wCAA3E;AAAA,MAAqB2F,kBAArB,sBAAQlF,WAAR;AAAA,MAAqDmF,iBAArD,sBAAyChF,UAAzC;;AAEA,MAAMb,MAAM,GAAGyE,UAAU,IAAIY,aAA7B;AAEA,MAAI,CAACrF,MAAM,CAAC2B,MAAZ,EAAoB,OAAO,IAAP;AAEpB,MAAM/B,wBAAwB,GAAG0E,4BAA4B,IAAIqB,+BAAjE;AACA,MAAM9F,SAAS,GAAG0E,aAAa,IAAIY,gBAAnC;AACA,MAAMrF,WAAW,GAAG0E,eAAe,IAAIY,kBAAvC;AACA,MAAM9E,WAAW,GAAGoE,eAAe,IAAIY,kBAAvC;AACA,MAAM9E,SAAS,GAAGoE,aAAa,IAAIY,gBAAnC;AACA,MAAMjF,OAAO,GAAGoE,WAAW,IAAIY,cAA/B;AACA,MAAM9E,YAAY,GAChB,OAAOoE,gBAAP,KAA4B,SAA5B,GAAwCA,gBAAxC,GAA2DY,mBAD7D;AAEA,MAAM/E,WAAW,GAAGoE,eAAe,IAAIc,kBAAvC;AACA,MAAMjF,QAAQ,GAAGoE,YAAY,IAAIG,eAAjC;AACA,MAAMrE,UAAU,GAAGmE,cAAc,IAAIa,iBAArC;AACA,MAAM/E,UAAU,GAAGmE,cAAc,IAAIS,iBAArC;AAEA,SACE,gCAAC,eAAD;AAEI9F,IAAAA,wBAAwB,EAAxBA,wBAFJ;AAGIC,IAAAA,SAAS,EAATA,SAHJ;AAIIC,IAAAA,WAAW,EAAXA,WAJJ;AAKIC,IAAAA,gBAAgB,EAAEA,gBAAgB,IAAI,CAAC,EAACG,OAAD,YAACA,OAAO,CAAE4F,WAAV,CAL3C;AAMI9F,IAAAA,MAAM,EAANA,MANJ;AAOIC,IAAAA,+BAA+B,EAA/BA,+BAPJ;AAQIC,IAAAA,OAAO,EAAPA,OARJ;AASIC,IAAAA,SAAS,EAAEA,SAAS,KAAID,OAAJ,oBAAIA,OAAO,CAAE4C,EAAb,CATxB;AAUIzC,IAAAA,WAAW,EAAEA,WAAW,KAAIH,OAAJ,oBAAIA,OAAO,CAAEsC,IAAb,CAV5B;AAWIlC,IAAAA,WAAW,EAAXA,WAXJ;AAYIC,IAAAA,OAAO,EAAPA,OAZJ;AAaIC,IAAAA,SAAS,EAATA,SAbJ;AAcIC,IAAAA,YAAY,EAAZA,YAdJ;AAeIC,IAAAA,WAAW,EAAXA,WAfJ;AAgBIC,IAAAA,QAAQ,EAARA,QAhBJ;AAiBIC,IAAAA,SAAS,EAATA,SAjBJ;AAkBIC,IAAAA,UAAU,EAAVA,UAlBJ;AAmBIC,IAAAA,UAAU,EAAVA,UAnBJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF;AAwBD,CAxFM;;;AA0FPuD,OAAO,CAAC0B,WAAR,GAAsB,iCAAtB","sourcesContent":["import React, { useState } from 'react';\nimport {\n Image,\n ImageProps,\n PixelRatio,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n} from 'react-native';\n\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { getUrlWithoutParams, makeImageCompatibleUrl } from '../../utils/utils';\n\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\n\nconst GalleryImage: React.FC<\n Omit<ImageProps, 'height' | 'source'> & {\n height: number | string;\n uri: string;\n }\n> = (props) => {\n const { height, uri, ...rest } = props;\n\n const [error, setError] = useState(false);\n\n return (\n <Image\n {...rest}\n onError={() => setError(true)}\n source={{\n uri: uri.includes('&h=%2A')\n ? error\n ? uri\n : uri.replace('h=%2A', `h=${PixelRatio.getPixelSizeForLayoutSize(Number(height))}`)\n : uri,\n }}\n testID='image-attachment-single'\n />\n );\n};\n\nconst MemoizedGalleryImage = React.memo(\n GalleryImage,\n (prevProps, nextProps) =>\n prevProps.height === nextProps.height &&\n getUrlWithoutParams(prevProps.uri) === getUrlWithoutParams(nextProps.uri),\n) as typeof GalleryImage;\n\nconst styles = StyleSheet.create({\n flex: { flex: 1 },\n galleryContainer: {\n borderTopLeftRadius: 13,\n borderTopRightRadius: 13,\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflow: 'hidden',\n },\n imageContainer: { flex: 1, padding: 1 },\n moreImagesContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n margin: 1,\n },\n moreImagesText: { color: '#FFFFFF', fontSize: 26, fontWeight: '700' },\n});\n\nexport type GalleryPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<ImageGalleryContextValue, 'setImage' | 'setImages'> &\n Pick<\n MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'alignment'\n | 'groupStyles'\n | 'images'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'threadList'\n > &\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'additionalTouchableProps' | 'legacyImageViewerSwipeBehaviour'\n > &\n Pick<OverlayContextValue, 'setBlurType' | 'setOverlay'> & {\n /**\n * `message` prop has been introduced here as part of `legacyImageViewerSwipeBehaviour` prop.\n * https://github.com/GetStream/stream-chat-react-native/commit/d5eac6193047916f140efe8e396a671675c9a63f\n * messageId and messageText may seem redundant now, but to avoid breaking change as part\n * of minor release, we are keeping those props.\n *\n * Also `message` type should ideally be imported from MessageContextValue and not be explicitely mentioned\n * here, but due to some circular dependencies within the SDK, it causes \"exccesive deep nesting\" issue with\n * typescript within Channel component. We should take it as a mini-project and resolve all these circular imports.\n *\n * TODO[major]: remove messageId and messageText\n * TODO: Fix circular dependencies of imports\n */\n hasThreadReplies?: boolean;\n message?: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n messageId?: string;\n messageText?: string;\n };\n\nconst GalleryWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n messageId,\n messageText: messageTextProp,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setBlurType,\n setImage,\n setImages,\n setOverlay,\n threadList,\n } = props;\n\n const {\n theme: {\n colors: { overlay },\n imageGallery: { blurType },\n messageSimple: {\n gallery: {\n galleryContainer,\n galleryItemColumn,\n halfSize,\n image,\n imageContainer,\n moreImagesContainer,\n moreImagesText,\n size,\n width,\n },\n },\n },\n } = useTheme();\n\n if (!images?.length) return null;\n\n // [[{ height: number; url: string; }], [{ height: number; url: string; }, { height: number; url: string; }]]\n const galleryImages = images.slice(0, 4).reduce((returnArray, currentImage, index) => {\n const attachmentUrl = currentImage.image_url || currentImage.thumb_url;\n if (attachmentUrl) {\n const url = makeImageCompatibleUrl(attachmentUrl);\n if (images.length <= 2) {\n returnArray[0] = [...(returnArray[0] || []), { height: size || 200, url }];\n } else if (images.length === 3) {\n if (index === 0) {\n returnArray[0] = [{ height: size || 200, url }];\n } else {\n returnArray[1] = [...(returnArray[1] || []), { height: halfSize || 100, url }];\n }\n } else {\n returnArray[index % 2] = [\n ...(returnArray[index % 2] || []),\n { height: halfSize || 100, url },\n ];\n }\n }\n return returnArray;\n }, [] as { height: number | string; url: string }[][]);\n\n const groupStyle = `${alignment}_${groupStyles?.[0]?.toLowerCase?.()}`;\n const messageText = messageTextProp || message?.text;\n\n return (\n <View\n style={[\n styles.galleryContainer,\n {\n width,\n },\n galleryContainer,\n ]}\n testID='image-multiple-container'\n >\n {galleryImages.map((column, colIndex) => (\n <View\n key={`gallery-item-column-${colIndex}`}\n style={[\n styles.flex,\n {\n flexDirection: images.length === 2 ? 'row' : 'column',\n },\n galleryItemColumn,\n ]}\n >\n {column.map(({ height, url }, rowIndex) => {\n const defaultOnPress = () => {\n // Added if-else to keep the logic readable, instead of DRY.\n // if - legacyImageViewerSwipeBehaviour is disabled\n // else - legacyImageViewerSwipeBehaviour is enabled\n if (!legacyImageViewerSwipeBehaviour && message) {\n setImages([message]);\n setImage({ messageId: messageId || message.id, url });\n setBlurType(blurType);\n setOverlay('gallery');\n } else if (legacyImageViewerSwipeBehaviour) {\n setImage({ messageId: messageId || message?.id, url });\n setBlurType(blurType);\n setOverlay('gallery');\n }\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n disabled={preventPress}\n key={`gallery-item-${messageId}/${colIndex}/${rowIndex}/${images.length}`}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n style={[\n styles.imageContainer,\n {\n height,\n },\n imageContainer,\n ]}\n testID='image-multiple'\n {...additionalTouchableProps}\n >\n <MemoizedGalleryImage\n height={height}\n resizeMode='cover'\n style={[\n styles.flex,\n {\n borderBottomLeftRadius:\n (images.length === 1 ||\n (images.length === 2 && rowIndex === 0) ||\n (images.length === 3 && colIndex === 0 && rowIndex === 0) ||\n (images.length === 4 && colIndex === 0 && rowIndex === 1)) &&\n !messageText &&\n ((groupStyle !== 'left_bottom' && groupStyle !== 'left_single') ||\n (hasThreadReplies && !threadList))\n ? 14\n : 0,\n borderBottomRightRadius:\n (images.length === 1 ||\n (colIndex === 1 && (images.length === 2 || rowIndex === 1))) &&\n !messageText &&\n ((groupStyle !== 'right_bottom' && groupStyle !== 'right_single') ||\n (hasThreadReplies && !threadList))\n ? 14\n : 0,\n borderTopLeftRadius: colIndex === 0 && rowIndex === 0 ? 14 : 0,\n borderTopRightRadius:\n ((colIndex === 1 || images.length === 1) && rowIndex === 0) ||\n (images.length === 3 && colIndex === 0 && rowIndex === 1) ||\n (images.length === 2 && rowIndex === 1)\n ? 14\n : 0,\n },\n image,\n ]}\n uri={url}\n />\n {colIndex === 1 && rowIndex === 1 && images.length > 3 ? (\n <View\n style={[\n StyleSheet.absoluteFillObject,\n styles.moreImagesContainer,\n { backgroundColor: overlay },\n moreImagesContainer,\n ]}\n >\n <Text style={[styles.moreImagesText, moreImagesText]}>\n {`+${images.length - 3}`}\n </Text>\n </View>\n ) : null}\n </TouchableOpacity>\n );\n })}\n </View>\n ))}\n </View>\n );\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n groupStyles: prevGroupStyles,\n hasThreadReplies: prevHasThreadReplies,\n images: prevImages,\n messageText: prevMessageText,\n } = prevProps;\n const {\n groupStyles: nextGroupStyles,\n hasThreadReplies: nextHasThreadReplies,\n images: nextImages,\n messageText: nextMessageText,\n } = nextProps;\n\n const messageTextEqual = prevMessageText === nextMessageText;\n if (!messageTextEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];\n if (!groupStylesEqual) return false;\n\n const hasThreadRepliesEqual = prevHasThreadReplies === nextHasThreadReplies;\n if (!hasThreadRepliesEqual) return false;\n\n const imagesEqual =\n prevImages.length === nextImages.length &&\n prevImages.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextImages[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextImages[index].thumb_url),\n );\n if (!imagesEqual) return false;\n\n return true;\n};\n\nconst MemoizedGallery = React.memo(GalleryWithContext, areEqual) as typeof GalleryWithContext;\n\nexport type GalleryProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>>;\n\n/**\n * UI component for card in attachments.\n */\nexport const Gallery = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: GalleryProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n additionalTouchableProps: propAdditionalTouchableProps,\n alignment: propAlignment,\n groupStyles: propGroupStyles,\n hasThreadReplies,\n images: propImages,\n messageId,\n messageText,\n onLongPress: propOnLongPress,\n onPress: propOnPress,\n onPressIn: propOnPressIn,\n preventPress: propPreventPress,\n setBlurType: propSetBlurType,\n setImage: propSetImage,\n setOverlay: propSetOverlay,\n threadList: propThreadList,\n } = props;\n\n const { setImage: contextSetImage, setImages } = useImageGalleryContext();\n const {\n alignment: contextAlignment,\n groupStyles: contextGroupStyles,\n images: contextImages,\n message,\n onLongPress: contextOnLongPress,\n onPress: contextOnPress,\n onPressIn: contextOnPressIn,\n preventPress: contextPreventPress,\n threadList: contextThreadList,\n } = useMessageContext<At, Ch, Co, Ev, Me, Re, Us>();\n const {\n additionalTouchableProps: contextAdditionalTouchableProps,\n legacyImageViewerSwipeBehaviour,\n } = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { setBlurType: contextSetBlurType, setOverlay: contextSetOverlay } = useOverlayContext();\n\n const images = propImages || contextImages;\n\n if (!images.length) return null;\n\n const additionalTouchableProps = propAdditionalTouchableProps || contextAdditionalTouchableProps;\n const alignment = propAlignment || contextAlignment;\n const groupStyles = propGroupStyles || contextGroupStyles;\n const onLongPress = propOnLongPress || contextOnLongPress;\n const onPressIn = propOnPressIn || contextOnPressIn;\n const onPress = propOnPress || contextOnPress;\n const preventPress =\n typeof propPreventPress === 'boolean' ? propPreventPress : contextPreventPress;\n const setBlurType = propSetBlurType || contextSetBlurType;\n const setImage = propSetImage || contextSetImage;\n const setOverlay = propSetOverlay || contextSetOverlay;\n const threadList = propThreadList || contextThreadList;\n\n return (\n <MemoizedGallery\n {...{\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies: hasThreadReplies || !!message?.reply_count,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n messageId: messageId || message?.id,\n messageText: messageText || message?.text,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setBlurType,\n setImage,\n setImages,\n setOverlay,\n threadList,\n }}\n />\n );\n};\n\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"]}
|
|
@@ -315,7 +315,7 @@ var AutoCompleteInputWithContext = function AutoCompleteInputWithContext(props)
|
|
|
315
315
|
}
|
|
316
316
|
|
|
317
317
|
var textToModify = text.slice(0, selectionEnd.current);
|
|
318
|
-
var startOfTokenPosition = textToModify.
|
|
318
|
+
var startOfTokenPosition = textToModify.lastIndexOf(trigger, selectionEnd.current);
|
|
319
319
|
var newCaretPosition = computeCaretPosition(newTokenString, startOfTokenPosition);
|
|
320
320
|
var modifiedText = "" + textToModify.substring(0, startOfTokenPosition) + newTokenString;
|
|
321
321
|
stopTracking();
|
|
@@ -383,7 +383,7 @@ var AutoCompleteInputWithContext = function AutoCompleteInputWithContext(props)
|
|
|
383
383
|
|
|
384
384
|
var handleMentions = function handleMentions(_ref6) {
|
|
385
385
|
var tokenMatch = _ref6.tokenMatch;
|
|
386
|
-
var lastToken = tokenMatch == null ? void 0 : tokenMatch[tokenMatch.length - 1]
|
|
386
|
+
var lastToken = tokenMatch == null ? void 0 : tokenMatch[tokenMatch.length - 1];
|
|
387
387
|
var handleMentionsTrigger = lastToken && Object.keys(triggerSettings).find(function (trigger) {
|
|
388
388
|
return trigger === lastToken[0];
|
|
389
389
|
}) || null;
|
|
@@ -473,7 +473,7 @@ var AutoCompleteInputWithContext = function AutoCompleteInputWithContext(props)
|
|
|
473
473
|
break;
|
|
474
474
|
}
|
|
475
475
|
|
|
476
|
-
mentionTokenMatch = text.slice(0, selectionEnd.current).match(/(?!^|\W)?@[^\s]*\s?[^\s]*$/g);
|
|
476
|
+
mentionTokenMatch = text.slice(0, selectionEnd.current).match(/(?!^|\W)?@[^\s@]*\s?[^\s@]*$/g);
|
|
477
477
|
|
|
478
478
|
if (mentionTokenMatch) {
|
|
479
479
|
handleMentions({
|
|
@@ -541,7 +541,7 @@ var AutoCompleteInputWithContext = function AutoCompleteInputWithContext(props)
|
|
|
541
541
|
__self: _this,
|
|
542
542
|
__source: {
|
|
543
543
|
fileName: _jsxFileName,
|
|
544
|
-
lineNumber:
|
|
544
|
+
lineNumber: 416,
|
|
545
545
|
columnNumber: 5
|
|
546
546
|
}
|
|
547
547
|
}));
|
|
@@ -615,7 +615,7 @@ var AutoCompleteInput = function AutoCompleteInput(props) {
|
|
|
615
615
|
__self: _this,
|
|
616
616
|
__source: {
|
|
617
617
|
fileName: _jsxFileName,
|
|
618
|
-
lineNumber:
|
|
618
|
+
lineNumber: 524,
|
|
619
619
|
columnNumber: 5
|
|
620
620
|
}
|
|
621
621
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["AutoCompleteInput.tsx"],"names":["styles","StyleSheet","create","inputBox","flex","fontSize","includeFontPadding","padding","paddingTop","textAlignVertical","computeCaretPosition","token","startOfTokenPosition","length","isCommand","text","split","AutoCompleteInputWithContext","props","additionalTextInputProps","autoCompleteSuggestionsLimit","closeSuggestions","giphyActive","giphyEnabled","maxMessageLength","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","numberOfLines","onChange","openSuggestions","setGiphyActive","setInputBoxRef","setShowMoreOptions","t","triggerSettings","updateSuggestionsContext","updateSuggestions","isTrackingStarted","selectionEnd","textHeight","setTextHeight","theme","colors","black","grey","messageInput","handleChange","newText","fromUpdate","handleSuggestionsThrottled","startTracking","trigger","triggerSetting","current","Component","component","undefined","stopTracking","query","dataProvider","data","queryCallback","onSelect","item","onSelectSuggestion","limit","handleSelectionChange","end","nativeEvent","selection","newTokenString","output","textToModify","slice","search","RegExp","newCaretPosition","modifiedText","substring","replace","startsWith","callback","handleCommand","actualToken","trim","handleMentions","tokenMatch","lastToken","handleMentionsTrigger","Object","keys","find","handleEmojis","handleEmojisTrigger","handleSuggestions","test","mentionTokenMatch","match","emojiTokenMatch","leading","height","contentSize","color","maxHeight","event","onBlur","areEqual","prevProps","nextProps","prevGiphyActive","prevT","prevText","nextGiphyActive","nextT","nextText","giphyActiveEqual","tEqual","textEqual","MemoizedAutoCompleteInput","React","memo","AutoCompleteInput","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { StyleSheet, TextInput } from 'react-native';\nimport throttle from 'lodash/throttle';\n\nimport { CommandsHeader } from './CommandsHeader';\nimport { EmojisHeader } from './EmojisHeader';\n\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n isSuggestionCommand,\n isSuggestionEmoji,\n isSuggestionUser,\n Suggestion,\n SuggestionCommand,\n SuggestionsContextValue,\n SuggestionUser,\n useSuggestionsContext,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport { isCommandTrigger, isEmojiTrigger, isMentionTrigger } from '../../utils/utils';\n\nimport type { TextInputProps } from 'react-native';\n\nimport type { Emoji } from '../../emoji-data/compiled';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\nimport type { Trigger } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n inputBox: {\n flex: 1,\n fontSize: 14,\n includeFontPadding: false, // for android vertical text centering\n padding: 0, // removal of default text input padding on android\n paddingTop: 0, // removal of iOS top padding for weird centering\n textAlignVertical: 'center', // for android vertical text centering\n },\n});\n\nconst computeCaretPosition = (token: string, startOfTokenPosition: number) =>\n startOfTokenPosition + token.length;\n\nconst isCommand = (text: string) => text[0] === '/' && text.split(' ').length <= 1;\n\ntype AutoCompleteInputPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'giphyEnabled'> &\n Pick<\n MessageInputContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'additionalTextInputProps'\n | 'autoCompleteSuggestionsLimit'\n | 'giphyActive'\n | 'maxMessageLength'\n | 'mentionAllAppUsersEnabled'\n | 'mentionAllAppUsersQuery'\n | 'numberOfLines'\n | 'onChange'\n | 'setGiphyActive'\n | 'setInputBoxRef'\n | 'setShowMoreOptions'\n | 'text'\n | 'triggerSettings'\n > &\n Pick<\n SuggestionsContextValue<Co, Us>,\n 'closeSuggestions' | 'openSuggestions' | 'updateSuggestions'\n > &\n Pick<TranslationContextValue, 't'>;\n\nexport type AutoCompleteInputProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<AutoCompleteInputPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>>;\n\nconst AutoCompleteInputWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: AutoCompleteInputPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n additionalTextInputProps,\n autoCompleteSuggestionsLimit,\n closeSuggestions,\n giphyActive,\n giphyEnabled,\n maxMessageLength,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n numberOfLines,\n onChange,\n openSuggestions,\n setGiphyActive,\n setInputBoxRef,\n setShowMoreOptions,\n t,\n text,\n triggerSettings,\n updateSuggestions: updateSuggestionsContext,\n } = props;\n\n const isTrackingStarted = useRef(false);\n const selectionEnd = useRef(0);\n const [textHeight, setTextHeight] = useState(0);\n\n const {\n theme: {\n colors: { black, grey },\n messageInput: { inputBox },\n },\n } = useTheme();\n\n const handleChange = (newText: string, fromUpdate = false) => {\n if (!fromUpdate) {\n onChange(newText);\n } else {\n handleSuggestionsThrottled(newText);\n }\n };\n\n useEffect(() => {\n handleChange(text, true);\n }, [text]);\n\n const startTracking = (trigger: Trigger) => {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n isTrackingStarted.current = true;\n const { component: Component } = triggerSetting;\n openSuggestions(\n typeof Component === 'string' ? Component : <Component />,\n trigger === ':' ? (\n <EmojisHeader title='' />\n ) : trigger === '/' ? (\n <CommandsHeader />\n ) : undefined,\n );\n }\n };\n\n const stopTracking = () => {\n isTrackingStarted.current = false;\n closeSuggestions();\n };\n\n const updateSuggestions = async ({\n query,\n trigger,\n }: {\n query: Suggestion['name'];\n trigger: Trigger;\n }) => {\n if (isMentionTrigger(trigger)) {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n await triggerSetting.dataProvider(\n query as SuggestionUser<Us>['name'],\n text,\n (data, queryCallback) => {\n if (query === queryCallback) {\n updateSuggestionsContext({\n data,\n onSelect: (item) => onSelectSuggestion({ item, trigger }),\n });\n }\n },\n {\n limit: autoCompleteSuggestionsLimit,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n },\n );\n }\n } else if (isCommandTrigger(trigger)) {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n await triggerSetting.dataProvider(\n query as SuggestionCommand<Co>['name'],\n text,\n (data, queryCallback) => {\n if (query !== queryCallback) {\n return;\n }\n\n updateSuggestionsContext({\n data,\n onSelect: (item) => onSelectSuggestion({ item, trigger }),\n });\n },\n {\n limit: autoCompleteSuggestionsLimit,\n },\n );\n }\n } else {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n await triggerSetting.dataProvider(query as Emoji['name'], text, (data, queryCallback) => {\n if (query !== queryCallback) {\n return;\n }\n\n updateSuggestionsContext(\n {\n data,\n onSelect: (item) => onSelectSuggestion({ item, trigger }),\n },\n <EmojisHeader title={query} />,\n );\n });\n }\n }\n };\n\n const handleSelectionChange: TextInputProps['onSelectionChange'] = ({\n nativeEvent: {\n selection: { end },\n },\n }) => {\n selectionEnd.current = end;\n };\n\n const onSelectSuggestion = ({\n item,\n trigger,\n }: {\n item: Suggestion<Co, Us>;\n trigger: Trigger;\n }) => {\n if (!trigger || !triggerSettings[trigger]) {\n return;\n }\n\n let newTokenString = '';\n if (isCommandTrigger(trigger) && isSuggestionCommand(item)) {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n newTokenString = `${triggerSetting.output(item).text} `;\n }\n }\n if (isEmojiTrigger(trigger) && isSuggestionEmoji(item)) {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n newTokenString = `${triggerSetting.output(item).text} `;\n }\n }\n if (isMentionTrigger(trigger) && isSuggestionUser(item)) {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n newTokenString = `${triggerSetting.output(item).text} `;\n }\n }\n\n const textToModify = text.slice(0, selectionEnd.current);\n\n const startOfTokenPosition = textToModify.search(\n /**\n * It's important to escape the trigger char for chars like [, (,...\n */\n new RegExp(`\\\\${trigger}${`[^\\\\${trigger}${'\\\\s'}]`}*$`),\n );\n\n const newCaretPosition = computeCaretPosition(newTokenString, startOfTokenPosition);\n\n const modifiedText = `${textToModify.substring(0, startOfTokenPosition)}${newTokenString}`;\n\n stopTracking();\n\n const newText = text.replace(textToModify, modifiedText);\n\n if (giphyEnabled && newText.startsWith('/giphy ')) {\n onChange(newText.slice(7)); // 7 because of '/giphy ' length\n setGiphyActive(true);\n } else {\n onChange(newText);\n }\n\n selectionEnd.current = newCaretPosition || 0;\n\n if (isMentionTrigger(trigger) && isSuggestionUser(item)) {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n triggerSetting.callback(item);\n }\n }\n };\n\n const handleCommand = async (text: string) => {\n if (!isCommand(text)) {\n return false;\n }\n\n if (!isTrackingStarted.current) {\n startTracking('/');\n }\n const actualToken = text.trim().slice(1);\n await updateSuggestions({ query: actualToken, trigger: '/' });\n\n return true;\n };\n\n const handleMentions = ({ tokenMatch }: { tokenMatch: RegExpMatchArray | null }) => {\n const lastToken = tokenMatch?.[tokenMatch.length - 1].trim();\n const handleMentionsTrigger =\n (lastToken && Object.keys(triggerSettings).find((trigger) => trigger === lastToken[0])) ||\n null;\n\n /*\n if we lost the trigger token or there is no following character we want to close\n the autocomplete\n */\n if (!lastToken || lastToken.length <= 0) {\n stopTracking();\n return;\n }\n\n const actualToken = lastToken.slice(1);\n\n // if trigger is not configured step out from the function, otherwise proceed\n if (!handleMentionsTrigger) {\n return;\n }\n\n if (!isTrackingStarted.current) {\n startTracking('@');\n }\n\n updateSuggestions({ query: actualToken, trigger: '@' });\n };\n\n const handleEmojis = ({ tokenMatch }: { tokenMatch: RegExpMatchArray | null }) => {\n const lastToken = tokenMatch?.[tokenMatch.length - 1].trim();\n const handleEmojisTrigger =\n (lastToken && Object.keys(triggerSettings).find((trigger) => trigger === lastToken[0])) ||\n null;\n\n /*\n if we lost the trigger token or there is no following character we want to close\n the autocomplete\n */\n if (!lastToken || lastToken.length <= 0) {\n stopTracking();\n return;\n }\n\n const actualToken = lastToken.slice(1);\n\n // if trigger is not configured step out from the function, otherwise proceed\n if (!handleEmojisTrigger) {\n return;\n }\n\n if (!isTrackingStarted.current) {\n startTracking(':');\n }\n\n updateSuggestions({ query: actualToken, trigger: ':' });\n };\n\n const handleSuggestions = async (text: string) => {\n if (\n /\\s/.test(text.slice(selectionEnd.current - 1, selectionEnd.current)) &&\n isTrackingStarted.current\n ) {\n stopTracking();\n } else if (giphyEnabled && !(await handleCommand(text))) {\n const mentionTokenMatch = text\n .slice(0, selectionEnd.current)\n .match(/(?!^|\\W)?@[^\\s]*\\s?[^\\s]*$/g);\n if (mentionTokenMatch) {\n handleMentions({ tokenMatch: mentionTokenMatch });\n } else {\n const emojiTokenMatch = text\n .slice(0, selectionEnd.current)\n .match(/(?!^|\\W)?:\\w{2,}[^\\s]*\\s?[^\\s]*$/g);\n handleEmojis({ tokenMatch: emojiTokenMatch });\n }\n }\n };\n\n const handleSuggestionsThrottled = throttle(handleSuggestions, 100, {\n leading: false,\n });\n\n return (\n <TextInput\n maxLength={maxMessageLength}\n multiline\n onChangeText={(newText) => {\n if (giphyEnabled && newText.startsWith('/giphy ')) {\n handleChange(newText.slice(7)); // 7 because of '/giphy' length\n setGiphyActive(true);\n } else {\n handleChange(newText);\n }\n }}\n onContentSizeChange={({\n nativeEvent: {\n contentSize: { height },\n },\n }) => {\n if (!textHeight) {\n setTextHeight(height);\n }\n }}\n onSelectionChange={handleSelectionChange}\n placeholder={giphyActive ? t('Search GIFs') : t('Send a message')}\n placeholderTextColor={grey}\n ref={setInputBoxRef}\n style={[\n styles.inputBox,\n {\n color: black,\n maxHeight: (textHeight || 17) * numberOfLines,\n },\n inputBox,\n ]}\n testID='auto-complete-text-input'\n value={text}\n {...additionalTextInputProps}\n onBlur={(event) => {\n if (additionalTextInputProps?.onBlur) {\n additionalTextInputProps?.onBlur(event);\n }\n setShowMoreOptions(true);\n }}\n />\n );\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: AutoCompleteInputPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: AutoCompleteInputPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { giphyActive: prevGiphyActive, t: prevT, text: prevText } = prevProps;\n const { giphyActive: nextGiphyActive, t: nextT, text: nextText } = nextProps;\n\n const giphyActiveEqual = prevGiphyActive === nextGiphyActive;\n if (!giphyActiveEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const textEqual = prevText === nextText;\n if (!textEqual) return false;\n\n return true;\n};\n\nconst MemoizedAutoCompleteInput = React.memo(\n AutoCompleteInputWithContext,\n areEqual,\n) as typeof AutoCompleteInputWithContext;\n\nexport const AutoCompleteInput = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: AutoCompleteInputProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { giphyEnabled } = useChannelContext<At, Ch, Co, Ev, Me, Re, Us>();\n const {\n additionalTextInputProps,\n autoCompleteSuggestionsLimit,\n giphyActive,\n maxMessageLength,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n numberOfLines,\n onChange,\n setGiphyActive,\n setInputBoxRef,\n setShowMoreOptions,\n text,\n triggerSettings,\n } = useMessageInputContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { closeSuggestions, openSuggestions, updateSuggestions } = useSuggestionsContext<Co, Us>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedAutoCompleteInput\n {...{\n additionalTextInputProps,\n autoCompleteSuggestionsLimit,\n closeSuggestions,\n giphyActive,\n giphyEnabled,\n maxMessageLength,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n numberOfLines,\n onChange,\n openSuggestions,\n setGiphyActive,\n setInputBoxRef,\n setShowMoreOptions,\n t,\n text,\n triggerSettings,\n updateSuggestions,\n }}\n {...props}\n />\n );\n};\n\nAutoCompleteInput.displayName = 'AutoCompleteInput{messageInput{inputBox}}';\n"]}
|
|
1
|
+
{"version":3,"sources":["AutoCompleteInput.tsx"],"names":["styles","StyleSheet","create","inputBox","flex","fontSize","includeFontPadding","padding","paddingTop","textAlignVertical","computeCaretPosition","token","startOfTokenPosition","length","isCommand","text","split","AutoCompleteInputWithContext","props","additionalTextInputProps","autoCompleteSuggestionsLimit","closeSuggestions","giphyActive","giphyEnabled","maxMessageLength","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","numberOfLines","onChange","openSuggestions","setGiphyActive","setInputBoxRef","setShowMoreOptions","t","triggerSettings","updateSuggestionsContext","updateSuggestions","isTrackingStarted","selectionEnd","textHeight","setTextHeight","theme","colors","black","grey","messageInput","handleChange","newText","fromUpdate","handleSuggestionsThrottled","startTracking","trigger","triggerSetting","current","Component","component","undefined","stopTracking","query","dataProvider","data","queryCallback","onSelect","item","onSelectSuggestion","limit","handleSelectionChange","end","nativeEvent","selection","newTokenString","output","textToModify","slice","lastIndexOf","newCaretPosition","modifiedText","substring","replace","startsWith","callback","handleCommand","actualToken","trim","handleMentions","tokenMatch","lastToken","handleMentionsTrigger","Object","keys","find","handleEmojis","handleEmojisTrigger","handleSuggestions","test","mentionTokenMatch","match","emojiTokenMatch","leading","height","contentSize","color","maxHeight","event","onBlur","areEqual","prevProps","nextProps","prevGiphyActive","prevT","prevText","nextGiphyActive","nextT","nextText","giphyActiveEqual","tEqual","textEqual","MemoizedAutoCompleteInput","React","memo","AutoCompleteInput","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { StyleSheet, TextInput } from 'react-native';\nimport throttle from 'lodash/throttle';\n\nimport { CommandsHeader } from './CommandsHeader';\nimport { EmojisHeader } from './EmojisHeader';\n\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n isSuggestionCommand,\n isSuggestionEmoji,\n isSuggestionUser,\n Suggestion,\n SuggestionCommand,\n SuggestionsContextValue,\n SuggestionUser,\n useSuggestionsContext,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport { isCommandTrigger, isEmojiTrigger, isMentionTrigger } from '../../utils/utils';\n\nimport type { TextInputProps } from 'react-native';\n\nimport type { Emoji } from '../../emoji-data/compiled';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\nimport type { Trigger } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n inputBox: {\n flex: 1,\n fontSize: 14,\n includeFontPadding: false, // for android vertical text centering\n padding: 0, // removal of default text input padding on android\n paddingTop: 0, // removal of iOS top padding for weird centering\n textAlignVertical: 'center', // for android vertical text centering\n },\n});\n\nconst computeCaretPosition = (token: string, startOfTokenPosition: number) =>\n startOfTokenPosition + token.length;\n\nconst isCommand = (text: string) => text[0] === '/' && text.split(' ').length <= 1;\n\ntype AutoCompleteInputPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'giphyEnabled'> &\n Pick<\n MessageInputContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'additionalTextInputProps'\n | 'autoCompleteSuggestionsLimit'\n | 'giphyActive'\n | 'maxMessageLength'\n | 'mentionAllAppUsersEnabled'\n | 'mentionAllAppUsersQuery'\n | 'numberOfLines'\n | 'onChange'\n | 'setGiphyActive'\n | 'setInputBoxRef'\n | 'setShowMoreOptions'\n | 'text'\n | 'triggerSettings'\n > &\n Pick<\n SuggestionsContextValue<Co, Us>,\n 'closeSuggestions' | 'openSuggestions' | 'updateSuggestions'\n > &\n Pick<TranslationContextValue, 't'>;\n\nexport type AutoCompleteInputProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<AutoCompleteInputPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>>;\n\nconst AutoCompleteInputWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: AutoCompleteInputPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n additionalTextInputProps,\n autoCompleteSuggestionsLimit,\n closeSuggestions,\n giphyActive,\n giphyEnabled,\n maxMessageLength,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n numberOfLines,\n onChange,\n openSuggestions,\n setGiphyActive,\n setInputBoxRef,\n setShowMoreOptions,\n t,\n text,\n triggerSettings,\n updateSuggestions: updateSuggestionsContext,\n } = props;\n\n const isTrackingStarted = useRef(false);\n const selectionEnd = useRef(0);\n const [textHeight, setTextHeight] = useState(0);\n\n const {\n theme: {\n colors: { black, grey },\n messageInput: { inputBox },\n },\n } = useTheme();\n\n const handleChange = (newText: string, fromUpdate = false) => {\n if (!fromUpdate) {\n onChange(newText);\n } else {\n handleSuggestionsThrottled(newText);\n }\n };\n\n useEffect(() => {\n handleChange(text, true);\n }, [text]);\n\n const startTracking = (trigger: Trigger) => {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n isTrackingStarted.current = true;\n const { component: Component } = triggerSetting;\n openSuggestions(\n typeof Component === 'string' ? Component : <Component />,\n trigger === ':' ? (\n <EmojisHeader title='' />\n ) : trigger === '/' ? (\n <CommandsHeader />\n ) : undefined,\n );\n }\n };\n\n const stopTracking = () => {\n isTrackingStarted.current = false;\n closeSuggestions();\n };\n\n const updateSuggestions = async ({\n query,\n trigger,\n }: {\n query: Suggestion['name'];\n trigger: Trigger;\n }) => {\n if (isMentionTrigger(trigger)) {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n await triggerSetting.dataProvider(\n query as SuggestionUser<Us>['name'],\n text,\n (data, queryCallback) => {\n if (query === queryCallback) {\n updateSuggestionsContext({\n data,\n onSelect: (item) => onSelectSuggestion({ item, trigger }),\n });\n }\n },\n {\n limit: autoCompleteSuggestionsLimit,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n },\n );\n }\n } else if (isCommandTrigger(trigger)) {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n await triggerSetting.dataProvider(\n query as SuggestionCommand<Co>['name'],\n text,\n (data, queryCallback) => {\n if (query !== queryCallback) {\n return;\n }\n\n updateSuggestionsContext({\n data,\n onSelect: (item) => onSelectSuggestion({ item, trigger }),\n });\n },\n {\n limit: autoCompleteSuggestionsLimit,\n },\n );\n }\n } else {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n await triggerSetting.dataProvider(query as Emoji['name'], text, (data, queryCallback) => {\n if (query !== queryCallback) {\n return;\n }\n\n updateSuggestionsContext(\n {\n data,\n onSelect: (item) => onSelectSuggestion({ item, trigger }),\n },\n <EmojisHeader title={query} />,\n );\n });\n }\n }\n };\n\n const handleSelectionChange: TextInputProps['onSelectionChange'] = ({\n nativeEvent: {\n selection: { end },\n },\n }) => {\n selectionEnd.current = end;\n };\n\n const onSelectSuggestion = ({\n item,\n trigger,\n }: {\n item: Suggestion<Co, Us>;\n trigger: Trigger;\n }) => {\n if (!trigger || !triggerSettings[trigger]) {\n return;\n }\n\n let newTokenString = '';\n if (isCommandTrigger(trigger) && isSuggestionCommand(item)) {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n newTokenString = `${triggerSetting.output(item).text} `;\n }\n }\n if (isEmojiTrigger(trigger) && isSuggestionEmoji(item)) {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n newTokenString = `${triggerSetting.output(item).text} `;\n }\n }\n if (isMentionTrigger(trigger) && isSuggestionUser(item)) {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n newTokenString = `${triggerSetting.output(item).text} `;\n }\n }\n\n const textToModify = text.slice(0, selectionEnd.current);\n\n const startOfTokenPosition = textToModify.lastIndexOf(trigger, selectionEnd.current);\n\n const newCaretPosition = computeCaretPosition(newTokenString, startOfTokenPosition);\n\n const modifiedText = `${textToModify.substring(0, startOfTokenPosition)}${newTokenString}`;\n\n stopTracking();\n\n const newText = text.replace(textToModify, modifiedText);\n\n if (giphyEnabled && newText.startsWith('/giphy ')) {\n onChange(newText.slice(7)); // 7 because of '/giphy ' length\n setGiphyActive(true);\n } else {\n onChange(newText);\n }\n\n selectionEnd.current = newCaretPosition || 0;\n\n if (isMentionTrigger(trigger) && isSuggestionUser(item)) {\n const triggerSetting = triggerSettings[trigger];\n if (triggerSetting) {\n triggerSetting.callback(item);\n }\n }\n };\n\n const handleCommand = async (text: string) => {\n if (!isCommand(text)) {\n return false;\n }\n\n if (!isTrackingStarted.current) {\n startTracking('/');\n }\n const actualToken = text.trim().slice(1);\n await updateSuggestions({ query: actualToken, trigger: '/' });\n\n return true;\n };\n\n const handleMentions = ({ tokenMatch }: { tokenMatch: RegExpMatchArray | null }) => {\n const lastToken = tokenMatch?.[tokenMatch.length - 1];\n const handleMentionsTrigger =\n (lastToken && Object.keys(triggerSettings).find((trigger) => trigger === lastToken[0])) ||\n null;\n\n /*\n if we lost the trigger token or there is no following character we want to close\n the autocomplete\n */\n if (!lastToken || lastToken.length <= 0) {\n stopTracking();\n return;\n }\n\n const actualToken = lastToken.slice(1);\n\n // if trigger is not configured step out from the function, otherwise proceed\n if (!handleMentionsTrigger) {\n return;\n }\n\n if (!isTrackingStarted.current) {\n startTracking('@');\n }\n\n updateSuggestions({ query: actualToken, trigger: '@' });\n };\n\n const handleEmojis = ({ tokenMatch }: { tokenMatch: RegExpMatchArray | null }) => {\n const lastToken = tokenMatch?.[tokenMatch.length - 1].trim();\n const handleEmojisTrigger =\n (lastToken && Object.keys(triggerSettings).find((trigger) => trigger === lastToken[0])) ||\n null;\n\n /*\n if we lost the trigger token or there is no following character we want to close\n the autocomplete\n */\n if (!lastToken || lastToken.length <= 0) {\n stopTracking();\n return;\n }\n\n const actualToken = lastToken.slice(1);\n\n // if trigger is not configured step out from the function, otherwise proceed\n if (!handleEmojisTrigger) {\n return;\n }\n\n if (!isTrackingStarted.current) {\n startTracking(':');\n }\n\n updateSuggestions({ query: actualToken, trigger: ':' });\n };\n\n const handleSuggestions = async (text: string) => {\n if (\n /\\s/.test(text.slice(selectionEnd.current - 1, selectionEnd.current)) &&\n isTrackingStarted.current\n ) {\n stopTracking();\n } else if (giphyEnabled && !(await handleCommand(text))) {\n const mentionTokenMatch = text\n .slice(0, selectionEnd.current)\n .match(/(?!^|\\W)?@[^\\s@]*\\s?[^\\s@]*$/g);\n if (mentionTokenMatch) {\n handleMentions({ tokenMatch: mentionTokenMatch });\n } else {\n const emojiTokenMatch = text\n .slice(0, selectionEnd.current)\n .match(/(?!^|\\W)?:\\w{2,}[^\\s]*\\s?[^\\s]*$/g);\n handleEmojis({ tokenMatch: emojiTokenMatch });\n }\n }\n };\n\n const handleSuggestionsThrottled = throttle(handleSuggestions, 100, {\n leading: false,\n });\n\n return (\n <TextInput\n maxLength={maxMessageLength}\n multiline\n onChangeText={(newText) => {\n if (giphyEnabled && newText.startsWith('/giphy ')) {\n handleChange(newText.slice(7)); // 7 because of '/giphy' length\n setGiphyActive(true);\n } else {\n handleChange(newText);\n }\n }}\n onContentSizeChange={({\n nativeEvent: {\n contentSize: { height },\n },\n }) => {\n if (!textHeight) {\n setTextHeight(height);\n }\n }}\n onSelectionChange={handleSelectionChange}\n placeholder={giphyActive ? t('Search GIFs') : t('Send a message')}\n placeholderTextColor={grey}\n ref={setInputBoxRef}\n style={[\n styles.inputBox,\n {\n color: black,\n maxHeight: (textHeight || 17) * numberOfLines,\n },\n inputBox,\n ]}\n testID='auto-complete-text-input'\n value={text}\n {...additionalTextInputProps}\n onBlur={(event) => {\n if (additionalTextInputProps?.onBlur) {\n additionalTextInputProps?.onBlur(event);\n }\n setShowMoreOptions(true);\n }}\n />\n );\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: AutoCompleteInputPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: AutoCompleteInputPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { giphyActive: prevGiphyActive, t: prevT, text: prevText } = prevProps;\n const { giphyActive: nextGiphyActive, t: nextT, text: nextText } = nextProps;\n\n const giphyActiveEqual = prevGiphyActive === nextGiphyActive;\n if (!giphyActiveEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const textEqual = prevText === nextText;\n if (!textEqual) return false;\n\n return true;\n};\n\nconst MemoizedAutoCompleteInput = React.memo(\n AutoCompleteInputWithContext,\n areEqual,\n) as typeof AutoCompleteInputWithContext;\n\nexport const AutoCompleteInput = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: AutoCompleteInputProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { giphyEnabled } = useChannelContext<At, Ch, Co, Ev, Me, Re, Us>();\n const {\n additionalTextInputProps,\n autoCompleteSuggestionsLimit,\n giphyActive,\n maxMessageLength,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n numberOfLines,\n onChange,\n setGiphyActive,\n setInputBoxRef,\n setShowMoreOptions,\n text,\n triggerSettings,\n } = useMessageInputContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { closeSuggestions, openSuggestions, updateSuggestions } = useSuggestionsContext<Co, Us>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedAutoCompleteInput\n {...{\n additionalTextInputProps,\n autoCompleteSuggestionsLimit,\n closeSuggestions,\n giphyActive,\n giphyEnabled,\n maxMessageLength,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n numberOfLines,\n onChange,\n openSuggestions,\n setGiphyActive,\n setInputBoxRef,\n setShowMoreOptions,\n t,\n text,\n triggerSettings,\n updateSuggestions,\n }}\n {...props}\n />\n );\n};\n\nAutoCompleteInput.displayName = 'AutoCompleteInput{messageInput{inputBox}}';\n"]}
|
|
@@ -24,7 +24,9 @@ var styles = _reactNative.StyleSheet.create({
|
|
|
24
24
|
|
|
25
25
|
var ChannelListLoadingIndicator = function ChannelListLoadingIndicator() {
|
|
26
26
|
var _useTheme = (0, _ThemeContext.useTheme)(),
|
|
27
|
-
|
|
27
|
+
_useTheme$theme = _useTheme.theme,
|
|
28
|
+
container = _useTheme$theme.channelListLoadingIndicator.container,
|
|
29
|
+
white_snow = _useTheme$theme.colors.white_snow;
|
|
28
30
|
|
|
29
31
|
var _useChannelsContext = (0, _ChannelsContext.useChannelsContext)(),
|
|
30
32
|
numberOfSkeletons = _useChannelsContext.numberOfSkeletons,
|
|
@@ -33,12 +35,12 @@ var ChannelListLoadingIndicator = function ChannelListLoadingIndicator() {
|
|
|
33
35
|
return _react["default"].createElement(_reactNative.View, {
|
|
34
36
|
style: [styles.container, {
|
|
35
37
|
backgroundColor: white_snow
|
|
36
|
-
}],
|
|
38
|
+
}, container],
|
|
37
39
|
testID: "channel-list-loading-indicator",
|
|
38
40
|
__self: _this,
|
|
39
41
|
__source: {
|
|
40
42
|
fileName: _jsxFileName,
|
|
41
|
-
lineNumber:
|
|
43
|
+
lineNumber: 23,
|
|
42
44
|
columnNumber: 5
|
|
43
45
|
}
|
|
44
46
|
}, Array.from(Array(numberOfSkeletons)).map(function (_, index) {
|
|
@@ -47,7 +49,7 @@ var ChannelListLoadingIndicator = function ChannelListLoadingIndicator() {
|
|
|
47
49
|
__self: _this,
|
|
48
50
|
__source: {
|
|
49
51
|
fileName: _jsxFileName,
|
|
50
|
-
lineNumber:
|
|
52
|
+
lineNumber: 28,
|
|
51
53
|
columnNumber: 9
|
|
52
54
|
}
|
|
53
55
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ChannelListLoadingIndicator.tsx"],"names":["styles","StyleSheet","create","container","flex","ChannelListLoadingIndicator","
|
|
1
|
+
{"version":3,"sources":["ChannelListLoadingIndicator.tsx"],"names":["styles","StyleSheet","create","container","flex","ChannelListLoadingIndicator","theme","channelListLoadingIndicator","white_snow","colors","numberOfSkeletons","Skeleton","backgroundColor","Array","from","map","_","index"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;;AAEA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,IAAI,EAAE;AADG;AADoB,CAAlB,CAAf;;AAMO,IAAMC,2BAAqC,GAAG,SAAxCA,2BAAwC,GAAM;AACzD,kBAKI,6BALJ;AAAA,kCACEC,KADF;AAAA,MAEmCH,SAFnC,mBAEII,2BAFJ,CAEmCJ,SAFnC;AAAA,MAGcK,UAHd,mBAGIC,MAHJ,CAGcD,UAHd;;AAMA,4BAAwC,0CAAxC;AAAA,MAAQE,iBAAR,uBAAQA,iBAAR;AAAA,MAA2BC,QAA3B,uBAA2BA,QAA3B;;AAEA,SACE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CAACX,MAAM,CAACG,SAAR,EAAmB;AAAES,MAAAA,eAAe,EAAEJ;AAAnB,KAAnB,EAAoDL,SAApD,CADT;AAEE,IAAA,MAAM,EAAC,gCAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAIGU,KAAK,CAACC,IAAN,CAAWD,KAAK,CAACH,iBAAD,CAAhB,EAAqCK,GAArC,CAAyC,UAACC,CAAD,EAAIC,KAAJ;AAAA,WACxC,gCAAC,QAAD;AAAU,MAAA,GAAG,gBAAcA,KAA3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MADwC;AAAA,GAAzC,CAJH,CADF;AAUD,CAnBM","sourcesContent":["import React from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { useChannelsContext } from '../../contexts/channelsContext/ChannelsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n\nexport const ChannelListLoadingIndicator: React.FC = () => {\n const {\n theme: {\n channelListLoadingIndicator: { container },\n colors: { white_snow },\n },\n } = useTheme();\n const { numberOfSkeletons, Skeleton } = useChannelsContext();\n\n return (\n <View\n style={[styles.container, { backgroundColor: white_snow }, container]}\n testID='channel-list-loading-indicator'\n >\n {Array.from(Array(numberOfSkeletons)).map((_, index) => (\n <Skeleton key={`skeleton_${index}`} />\n ))}\n </View>\n );\n};\n"]}
|
|
@@ -21,6 +21,8 @@ var _utils = require("../utils");
|
|
|
21
21
|
|
|
22
22
|
var _ChatContext = require("../../../contexts/chatContext/ChatContext");
|
|
23
23
|
|
|
24
|
+
var _useIsMountedRef = require("../../../hooks/useIsMountedRef");
|
|
25
|
+
|
|
24
26
|
var wait = function wait(ms) {
|
|
25
27
|
return new Promise(function (resolve) {
|
|
26
28
|
setTimeout(resolve, ms);
|
|
@@ -74,6 +76,8 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
74
76
|
refreshing = _useState12[0],
|
|
75
77
|
setRefreshing = _useState12[1];
|
|
76
78
|
|
|
79
|
+
var isMounted = (0, _useIsMountedRef.useIsMountedRef)();
|
|
80
|
+
|
|
77
81
|
var queryChannels = function () {
|
|
78
82
|
var _ref2 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
|
|
79
83
|
var _options$limit;
|
|
@@ -91,7 +95,7 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
91
95
|
queryType = _args.length > 0 && _args[0] !== undefined ? _args[0] : '';
|
|
92
96
|
retryCount = _args.length > 1 && _args[1] !== undefined ? _args[1] : 0;
|
|
93
97
|
|
|
94
|
-
if (!(!client || loadingChannels || loadingNextPage || refreshing)) {
|
|
98
|
+
if (!(!client || loadingChannels || loadingNextPage || refreshing || !isMounted.current)) {
|
|
95
99
|
_context.next = 4;
|
|
96
100
|
break;
|
|
97
101
|
}
|
|
@@ -117,6 +121,15 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
117
121
|
|
|
118
122
|
case 9:
|
|
119
123
|
channelQueryResponse = _context.sent;
|
|
124
|
+
|
|
125
|
+
if (isMounted.current) {
|
|
126
|
+
_context.next = 12;
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return _context.abrupt("return");
|
|
131
|
+
|
|
132
|
+
case 12:
|
|
120
133
|
channelQueryResponse.forEach(function (channel) {
|
|
121
134
|
return channel.state.setIsUpToDate(true);
|
|
122
135
|
});
|
|
@@ -124,18 +137,26 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
124
137
|
setChannels(newChannels);
|
|
125
138
|
setHasNextPage(channelQueryResponse.length >= newOptions.limit);
|
|
126
139
|
setError(false);
|
|
127
|
-
_context.next =
|
|
140
|
+
_context.next = 32;
|
|
128
141
|
break;
|
|
129
142
|
|
|
130
|
-
case
|
|
131
|
-
_context.prev =
|
|
143
|
+
case 19:
|
|
144
|
+
_context.prev = 19;
|
|
132
145
|
_context.t0 = _context["catch"](6);
|
|
133
|
-
_context.next =
|
|
146
|
+
_context.next = 23;
|
|
134
147
|
return wait(2000);
|
|
135
148
|
|
|
136
|
-
case
|
|
149
|
+
case 23:
|
|
150
|
+
if (isMounted.current) {
|
|
151
|
+
_context.next = 25;
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
return _context.abrupt("return");
|
|
156
|
+
|
|
157
|
+
case 25:
|
|
137
158
|
if (!(retryCount === 3)) {
|
|
138
|
-
_context.next =
|
|
159
|
+
_context.next = 31;
|
|
139
160
|
break;
|
|
140
161
|
}
|
|
141
162
|
|
|
@@ -145,20 +166,20 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
145
166
|
console.warn(_context.t0);
|
|
146
167
|
return _context.abrupt("return", setError(true));
|
|
147
168
|
|
|
148
|
-
case
|
|
169
|
+
case 31:
|
|
149
170
|
return _context.abrupt("return", queryChannels(queryType, retryCount + 1));
|
|
150
171
|
|
|
151
|
-
case
|
|
172
|
+
case 32:
|
|
152
173
|
setLoadingChannels(false);
|
|
153
174
|
setLoadingNextPage(false);
|
|
154
175
|
setRefreshing(false);
|
|
155
176
|
|
|
156
|
-
case
|
|
177
|
+
case 35:
|
|
157
178
|
case "end":
|
|
158
179
|
return _context.stop();
|
|
159
180
|
}
|
|
160
181
|
}
|
|
161
|
-
}, _callee, null, [[6,
|
|
182
|
+
}, _callee, null, [[6, 19]]);
|
|
162
183
|
}));
|
|
163
184
|
|
|
164
185
|
return function queryChannels() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["usePaginatedChannels.ts"],"names":["wait","ms","Promise","resolve","setTimeout","DEFAULT_OPTIONS","message_limit","usePaginatedChannels","filters","options","sort","client","channels","setChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","loadingChannels","setLoadingChannels","loadingNextPage","setLoadingNextPage","refreshing","setRefreshing","queryChannels","queryType","retryCount","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","offset","length","channelQueryResponse","forEach","channel","state","setIsUpToDate","newChannels","console","warn","loadNextPage","undefined","refreshList","
|
|
1
|
+
{"version":3,"sources":["usePaginatedChannels.ts"],"names":["wait","ms","Promise","resolve","setTimeout","DEFAULT_OPTIONS","message_limit","usePaginatedChannels","filters","options","sort","client","channels","setChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","loadingChannels","setLoadingChannels","loadingNextPage","setLoadingNextPage","refreshing","setRefreshing","isMounted","queryChannels","queryType","retryCount","current","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","offset","length","channelQueryResponse","forEach","channel","state","setIsUpToDate","newChannels","console","warn","loadNextPage","undefined","refreshList","reloadList","filterStr","JSON","stringify","sortStr"],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\nconst wait = (ms: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n\ntype Parameters<\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Us extends UnknownType = DefaultUserType,\n> = {\n filters: ChannelFilters<Ch, Co, Us>;\n options: ChannelOptions;\n sort: ChannelSort<Ch>;\n};\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nexport const usePaginatedChannels = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>({\n filters = {},\n options = DEFAULT_OPTIONS,\n sort = {},\n}: Parameters<Ch, Co, Us>) => {\n const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n const [channels, setChannels] = useState<Channel<At, Ch, Co, Ev, Me, Re, Us>[]>([]);\n const [error, setError] = useState(false);\n const [hasNextPage, setHasNextPage] = useState(true);\n const lastRefresh = useRef(Date.now());\n const [loadingChannels, setLoadingChannels] = useState(false);\n const [loadingNextPage, setLoadingNextPage] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n const isMounted = useIsMountedRef();\n\n const queryChannels = async (queryType = '', retryCount = 0): Promise<void> => {\n if (!client || loadingChannels || loadingNextPage || refreshing || !isMounted.current) return;\n\n if (queryType === 'reload') {\n setLoadingChannels(true);\n } else if (queryType === 'refresh') {\n setRefreshing(true);\n } else if (!queryType) {\n setLoadingNextPage(true);\n }\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset: queryType === 'reload' || queryType === 'refresh' ? 0 : channels.length,\n ...options,\n };\n\n try {\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions);\n\n if (!isMounted.current) return;\n\n channelQueryResponse.forEach((channel) => channel.state.setIsUpToDate(true));\n\n const newChannels =\n queryType === 'reload' || queryType === 'refresh'\n ? channelQueryResponse\n : [...channels, ...channelQueryResponse];\n\n setChannels(newChannels);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n setError(false);\n } catch (err) {\n await wait(2000);\n\n if (!isMounted.current) return;\n\n if (retryCount === 3) {\n setLoadingChannels(false);\n setLoadingNextPage(false);\n setRefreshing(false);\n console.warn(err);\n return setError(true);\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setLoadingChannels(false);\n setLoadingNextPage(false);\n setRefreshing(false);\n };\n\n const loadNextPage = hasNextPage ? queryChannels : undefined;\n const refreshList = () => {\n const now = Date.now();\n // Only allow pull-to-refresh 5 seconds after last successful refresh.\n if (now - lastRefresh.current < 5000 && !error) {\n return;\n }\n\n lastRefresh.current = Date.now();\n return queryChannels('refresh');\n };\n const reloadList = () => queryChannels('reload');\n\n /**\n * Equality check using stringified filters/sort ensure that we don't make un-necessary queryChannels api calls\n * for the scenario:\n *\n * <ChannelList\n * filters={{\n * members: { $in: ['vishal'] }\n * }}\n * ...\n * />\n *\n * Here we have passed filters as inline object, which means on every re-render of\n * parent component, ChannelList will receive new object reference (even though value is same), which\n * in return will trigger useEffect. To avoid this, we can add a value check.\n */\n const filterStr = useMemo(() => JSON.stringify(filters), [filters]);\n const sortStr = useMemo(() => JSON.stringify(sort), [sort]);\n\n useEffect(() => {\n reloadList();\n }, [filterStr, sortStr]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels,\n loadingNextPage,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setChannels,\n };\n};\n"]}
|
|
@@ -48,7 +48,7 @@ var ChannelPreviewMessage = function ChannelPreviewMessage(_ref) {
|
|
|
48
48
|
key: preview.text + "_" + index,
|
|
49
49
|
style: [{
|
|
50
50
|
color: grey
|
|
51
|
-
}, preview.bold ? styles.bold : {}],
|
|
51
|
+
}, preview.bold ? styles.bold : {}, message],
|
|
52
52
|
__self: _this,
|
|
53
53
|
__source: {
|
|
54
54
|
fileName: _jsxFileName,
|