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.
Files changed (61) hide show
  1. package/lib/commonjs/components/Attachment/Gallery.js +3 -5
  2. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  3. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +5 -5
  4. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  5. package/lib/commonjs/components/ChannelList/ChannelListLoadingIndicator.js +6 -4
  6. package/lib/commonjs/components/ChannelList/ChannelListLoadingIndicator.js.map +1 -1
  7. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +32 -11
  8. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  9. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js +1 -1
  10. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  11. package/lib/commonjs/components/Chat/hooks/useIsOnline.js +23 -24
  12. package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
  13. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +1 -1
  14. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  15. package/lib/commonjs/contexts/themeContext/utils/theme.js +3 -0
  16. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  17. package/lib/commonjs/hooks/useIsMountedRef.js +19 -0
  18. package/lib/commonjs/hooks/useIsMountedRef.js.map +1 -0
  19. package/lib/commonjs/hooks/useStreami18n.js +4 -1
  20. package/lib/commonjs/hooks/useStreami18n.js.map +1 -1
  21. package/lib/commonjs/i18n/fr.json +1 -1
  22. package/lib/commonjs/version.json +1 -1
  23. package/lib/module/components/Attachment/Gallery.js +3 -5
  24. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  25. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +5 -5
  26. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  27. package/lib/module/components/ChannelList/ChannelListLoadingIndicator.js +6 -4
  28. package/lib/module/components/ChannelList/ChannelListLoadingIndicator.js.map +1 -1
  29. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +32 -11
  30. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  31. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js +1 -1
  32. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  33. package/lib/module/components/Chat/hooks/useIsOnline.js +23 -24
  34. package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
  35. package/lib/module/components/Message/MessageSimple/utils/renderText.js +1 -1
  36. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  37. package/lib/module/contexts/themeContext/utils/theme.js +3 -0
  38. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  39. package/lib/module/hooks/useIsMountedRef.js +19 -0
  40. package/lib/module/hooks/useIsMountedRef.js.map +1 -0
  41. package/lib/module/hooks/useStreami18n.js +4 -1
  42. package/lib/module/hooks/useStreami18n.js.map +1 -1
  43. package/lib/module/i18n/fr.json +1 -1
  44. package/lib/module/version.json +1 -1
  45. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +3 -0
  46. package/lib/typescript/hooks/useIsMountedRef.d.ts +20 -0
  47. package/lib/typescript/hooks/useStreami18n.d.ts +1 -1
  48. package/lib/typescript/i18n/fr.json +1 -1
  49. package/package.json +1 -1
  50. package/src/components/Attachment/Gallery.tsx +3 -3
  51. package/src/components/AutoCompleteInput/AutoCompleteInput.tsx +3 -8
  52. package/src/components/ChannelList/ChannelListLoadingIndicator.tsx +2 -1
  53. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +7 -1
  54. package/src/components/ChannelPreview/ChannelPreviewMessage.tsx +1 -1
  55. package/src/components/Chat/hooks/useIsOnline.ts +16 -17
  56. package/src/components/Message/MessageSimple/utils/renderText.tsx +1 -1
  57. package/src/contexts/themeContext/utils/theme.ts +6 -0
  58. package/src/hooks/useIsMountedRef.ts +36 -0
  59. package/src/hooks/useStreami18n.ts +5 -3
  60. package/src/i18n/fr.json +1 -1
  61. 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-" + url + "/" + rowIndex + "/" + images.length,
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.search(new RegExp("\\" + trigger + ("[^\\" + trigger + '\\s' + "]") + "*$"));
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].trim();
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: 421,
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: 529,
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
- white_snow = _useTheme.theme.colors.white_snow;
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: 22,
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: 27,
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","white_snow","theme","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,kBAII,6BAJJ;AAAA,MAEcC,UAFd,aACEC,KADF,CAEIC,MAFJ,CAEcF,UAFd;;AAKA,4BAAwC,0CAAxC;AAAA,MAAQG,iBAAR,uBAAQA,iBAAR;AAAA,MAA2BC,QAA3B,uBAA2BA,QAA3B;;AAEA,SACE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CAACV,MAAM,CAACG,SAAR,EAAmB;AAAEQ,MAAAA,eAAe,EAAEL;AAAnB,KAAnB,CADT;AAEE,IAAA,MAAM,EAAC,gCAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAIGM,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,CAlBM","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 colors: { white_snow },\n },\n } = useTheme();\n const { numberOfSkeletons, Skeleton } = useChannelsContext();\n\n return (\n <View\n style={[styles.container, { backgroundColor: white_snow }]}\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"]}
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 = 28;
140
+ _context.next = 32;
128
141
  break;
129
142
 
130
- case 17:
131
- _context.prev = 17;
143
+ case 19:
144
+ _context.prev = 19;
132
145
  _context.t0 = _context["catch"](6);
133
- _context.next = 21;
146
+ _context.next = 23;
134
147
  return wait(2000);
135
148
 
136
- case 21:
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 = 27;
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 27:
169
+ case 31:
149
170
  return _context.abrupt("return", queryChannels(queryType, retryCount + 1));
150
171
 
151
- case 28:
172
+ case 32:
152
173
  setLoadingChannels(false);
153
174
  setLoadingNextPage(false);
154
175
  setRefreshing(false);
155
176
 
156
- case 31:
177
+ case 35:
157
178
  case "end":
158
179
  return _context.stop();
159
180
  }
160
181
  }
161
- }, _callee, null, [[6, 17]]);
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","current","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';\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\n const queryChannels = async (queryType = '', retryCount = 0): Promise<void> => {\n if (!client || loadingChannels || loadingNextPage || refreshing) 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 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 (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"]}
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,