stream-chat-react-native-core 5.21.0 → 5.22.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/ImageGallery/ImageGallery.js +6 -5
- package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +18 -15
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +41 -12
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
- package/lib/commonjs/components/Indicators/EmptyStateIndicator.js +10 -7
- package/lib/commonjs/components/Indicators/EmptyStateIndicator.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +18 -17
- package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js +1 -0
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/i18n/en.json +2 -0
- package/lib/commonjs/i18n/es.json +74 -0
- package/lib/commonjs/i18n/fr.json +30 -28
- package/lib/commonjs/i18n/he.json +3 -1
- package/lib/commonjs/i18n/hi.json +30 -28
- package/lib/commonjs/i18n/it.json +30 -28
- package/lib/commonjs/i18n/ja.json +3 -1
- package/lib/commonjs/i18n/ko.json +3 -1
- package/lib/commonjs/i18n/nl.json +30 -28
- package/lib/commonjs/i18n/ru.json +30 -28
- package/lib/commonjs/i18n/tr.json +30 -28
- package/lib/commonjs/utils/Streami18n.js +4 -1
- package/lib/commonjs/utils/Streami18n.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/ImageGallery/ImageGallery.js +6 -5
- package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +18 -15
- package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +41 -12
- package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
- package/lib/module/components/Indicators/EmptyStateIndicator.js +10 -7
- package/lib/module/components/Indicators/EmptyStateIndicator.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/ReactionList.js +18 -17
- package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js +1 -0
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/i18n/en.json +2 -0
- package/lib/module/i18n/es.json +74 -0
- package/lib/module/i18n/fr.json +30 -28
- package/lib/module/i18n/he.json +3 -1
- package/lib/module/i18n/hi.json +30 -28
- package/lib/module/i18n/it.json +30 -28
- package/lib/module/i18n/ja.json +3 -1
- package/lib/module/i18n/ko.json +3 -1
- package/lib/module/i18n/nl.json +30 -28
- package/lib/module/i18n/ru.json +30 -28
- package/lib/module/i18n/tr.json +30 -28
- package/lib/module/utils/Streami18n.js +4 -1
- package/lib/module/utils/Streami18n.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +3 -0
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts +1 -0
- package/lib/typescript/i18n/en.json +2 -0
- package/lib/typescript/i18n/es.json +74 -0
- package/lib/typescript/i18n/fr.json +30 -28
- package/lib/typescript/i18n/he.json +3 -1
- package/lib/typescript/i18n/hi.json +30 -28
- package/lib/typescript/i18n/it.json +30 -28
- package/lib/typescript/i18n/ja.json +3 -1
- package/lib/typescript/i18n/ko.json +3 -1
- package/lib/typescript/i18n/nl.json +30 -28
- package/lib/typescript/i18n/ru.json +30 -28
- package/lib/typescript/i18n/tr.json +30 -28
- package/lib/typescript/utils/Streami18n.d.ts +13 -1
- package/package.json +1 -1
- package/src/components/ImageGallery/ImageGallery.tsx +1 -0
- package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +6 -2
- package/src/components/ImageGallery/components/ImageGalleryVideoControl.tsx +12 -7
- package/src/components/Indicators/EmptyStateIndicator.tsx +4 -2
- package/src/components/Message/MessageSimple/ReactionList.tsx +2 -1
- package/src/contexts/themeContext/utils/theme.ts +2 -0
- package/src/i18n/en.json +2 -0
- package/src/i18n/es.json +74 -0
- package/src/i18n/fr.json +30 -28
- package/src/i18n/he.json +3 -1
- package/src/i18n/hi.json +30 -28
- package/src/i18n/it.json +30 -28
- package/src/i18n/ja.json +3 -1
- package/src/i18n/ko.json +3 -1
- package/src/i18n/nl.json +30 -28
- package/src/i18n/ru.json +30 -28
- package/src/i18n/tr.json +30 -28
- package/src/utils/Streami18n.ts +13 -6
- package/src/version.json +1 -1
|
@@ -511,6 +511,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
511
511
|
photoLength: imageGalleryAttachments.length,
|
|
512
512
|
progress: imageGalleryAttachments[selectedIndex].progress || 0,
|
|
513
513
|
selectedIndex: selectedIndex,
|
|
514
|
+
videoRef: videoRef,
|
|
514
515
|
visible: headerFooterVisible
|
|
515
516
|
}, imageGalleryCustomComponents == null ? void 0 : imageGalleryCustomComponents.footer, {
|
|
516
517
|
__self: _this,
|
|
@@ -526,14 +527,14 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
526
527
|
__self: _this,
|
|
527
528
|
__source: {
|
|
528
529
|
fileName: _jsxFileName,
|
|
529
|
-
lineNumber:
|
|
530
|
+
lineNumber: 678,
|
|
530
531
|
columnNumber: 7
|
|
531
532
|
}
|
|
532
533
|
}), _react["default"].createElement(_bottomSheet.BottomSheetModalProvider, {
|
|
533
534
|
__self: _this,
|
|
534
535
|
__source: {
|
|
535
536
|
fileName: _jsxFileName,
|
|
536
|
-
lineNumber:
|
|
537
|
+
lineNumber: 683,
|
|
537
538
|
columnNumber: 7
|
|
538
539
|
}
|
|
539
540
|
}, _react["default"].createElement(_bottomSheet.BottomSheetModal, {
|
|
@@ -546,7 +547,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
546
547
|
__self: _this,
|
|
547
548
|
__source: {
|
|
548
549
|
fileName: _jsxFileName,
|
|
549
|
-
lineNumber:
|
|
550
|
+
lineNumber: 688,
|
|
550
551
|
columnNumber: 13
|
|
551
552
|
}
|
|
552
553
|
}));
|
|
@@ -561,7 +562,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
561
562
|
__self: _this,
|
|
562
563
|
__source: {
|
|
563
564
|
fileName: _jsxFileName,
|
|
564
|
-
lineNumber:
|
|
565
|
+
lineNumber: 684,
|
|
565
566
|
columnNumber: 9
|
|
566
567
|
}
|
|
567
568
|
}, _react["default"].createElement(_ImageGrid.ImageGrid, (0, _extends2["default"])({
|
|
@@ -573,7 +574,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
573
574
|
__self: _this,
|
|
574
575
|
__source: {
|
|
575
576
|
fileName: _jsxFileName,
|
|
576
|
-
lineNumber:
|
|
577
|
+
lineNumber: 699,
|
|
577
578
|
columnNumber: 11
|
|
578
579
|
}
|
|
579
580
|
})))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_bottomSheet","_AnimatedGalleryImage","_AnimatedGalleryVideo","_ImageGalleryFooter","_ImageGalleryHeader","_ImageGalleryOverlay","_ImageGrid","_ImageGridHandle","_useImageGalleryGestures","_ImageGalleryContext","_OverlayContext","_ThemeContext","_native","_getResizedImageUrl","_getUrlOfImageAttachment","_utils","_getGiphyMimeType","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","isAndroid","Platform","OS","fullScreenHeight","Dimensions","height","measuredScreenHeight","vh","screenWidth","vw","halfScreenWidth","MARGIN","HasPinched","exports","IsSwiping","ImageGallery","props","_StatusBar$currentHei","_imageGalleryAttachme","_props$autoPlayVideo","autoPlayVideo","_props$giphyVersion","giphyVersion","imageGalleryCustomComponents","imageGalleryGridHandleHeight","imageGalleryGridSnapPoints","numberOfImageGalleryGridColumns","overlayOpacity","_useState","useState","_useState2","_slicedToArray2","imageGalleryAttachments","setImageGalleryAttachments","_useTheme","useTheme","_useTheme$theme","theme","white_snow","colors","_useTheme$theme$image","imageGallery","backgroundColor","pager","slide","_useState3","_useState4","gridPhotos","setGridPhotos","_useOverlayContext","useOverlayContext","overlay","translucentStatusBar","_useImageGalleryConte","useImageGalleryContext","messages","selectedMessage","setSelectedMessage","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","androidScreenHeightAdjustment","screenHeight","halfScreenHeight","quarterScreenHeight","snapPoints","React","useMemo","bottomSheetModalRef","useRef","_useState5","_useState6","currentBottomSheetIndex","setCurrentBottomSheetIndex","animatedBottomSheetIndex","useSharedValue","screenTranslateY","showScreen","value","withTiming","duration","easing","Easing","out","ease","useEffect","Keyboard","dismiss","_useState7","_useState8","currentImageHeight","setCurrentImageHeight","_useState9","_useState10","selectedIndex","setSelectedIndex","index","headerFooterVisible","doubleTapRef","panRef","pinchRef","singleTapRef","translateX","translateY","offsetScale","scale","translationX","photos","reduce","acc","cur","_cur$attachments","attachmentImages","attachments","filter","attachment","_attachment$giphy","_attachment$giphy$gip","type","giphy","url","thumb_url","image_url","title_link","og_scrape_url","getUrlOfImageAttachment","isVideoPackageAvailable","reverse","attachmentPhotos","map","a","_a$giphy","_a$giphy$giphyVersion","imageUrl","giphyURL","isInitiallyPaused","channelId","cid","created_at","id","messageId","mime_type","getGiphyMimeType","original_height","original_width","paused","progress","uri","getResizedImageUrl","width","user","user_id","concat","_toConsumableArray2","photoLength","length","stripQueryFromUrl","split","updatePosition","newIndex","runOnJS","findIndex","photo","runOnUI","uriForCurrentImage","imageHeight","Math","floor","Image","getSize","_useImageGalleryGestu","useImageGalleryGestures","onDoubleTap","onPan","onPinch","onSingleTap","headerFooterOpacity","useDerivedValue","pagerStyle","useAnimatedStyle","transform","scaleX","containerBackground","opacity","showScreenStyle","closeGridView","_bottomSheetModalRef$","current","close","openGridView","_bottomSheetModalRef$2","present","handleEnd","handlePlayPause","handleProgress","videoRef","handleLoad","prevImageGalleryAttachment","imageGalleryAttachment","_extends2","hasEnd","prevImageGalleryAttachments","pausedStatus","onPlayPause","status","undefined","createElement","View","accessibilityLabel","pointerEvents","style","StyleSheet","absoluteFillObject","__self","__source","fileName","lineNumber","columnNumber","TapGestureHandler","minPointers","numberOfTaps","onGestureEvent","ref","waitFor","maxDeltaX","maxDeltaY","maxDist","PinchGestureHandler","simultaneousHandlers","absoluteFill","PanGestureHandler","enabled","maxPointers","minDist","styles","animatedContainer","i","AnimatedGalleryVideo","attachmentId","previous","repeat","selected","shouldRender","abs","source","marginRight","AnimatedGalleryImage","ImageGalleryHeader","visible","header","ImageGalleryFooter","footer","ImageGalleryOverlay","BottomSheetModalProvider","BottomSheetModal","animatedIndex","enablePanDownToClose","handleComponent","ImageGridHandle","gridHandle","handleHeight","onChange","ImageGrid","grid","clamp","lowerBound","upperBound","min","max","create","alignItems","flexDirection","displayName"],"sources":["ImageGallery.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport {\n Dimensions,\n Image,\n ImageStyle,\n Keyboard,\n Platform,\n StatusBar,\n StyleSheet,\n ViewStyle,\n} from 'react-native';\n\nimport {\n PanGestureHandler,\n PinchGestureHandler,\n TapGestureHandler,\n} from 'react-native-gesture-handler';\n\nimport Animated, {\n Easing,\n runOnJS,\n runOnUI,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { BottomSheetModal, BottomSheetModalProvider } from '@gorhom/bottom-sheet';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { AnimatedGalleryImage } from './components/AnimatedGalleryImage';\nimport { AnimatedGalleryVideo } from './components/AnimatedGalleryVideo';\nimport {\n ImageGalleryFooter,\n ImageGalleryFooterCustomComponentProps,\n} from './components/ImageGalleryFooter';\nimport {\n ImageGalleryHeader,\n ImageGalleryHeaderCustomComponentProps,\n} from './components/ImageGalleryHeader';\nimport { ImageGalleryOverlay } from './components/ImageGalleryOverlay';\nimport { ImageGalleryGridImageComponents, ImageGrid } from './components/ImageGrid';\nimport {\n ImageGalleryGridHandleCustomComponentProps,\n ImageGridHandle,\n} from './components/ImageGridHandle';\n\nimport { useImageGalleryGestures } from './hooks/useImageGalleryGestures';\n\nimport { useImageGalleryContext } from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n OverlayProviderProps,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { isVideoPackageAvailable, VideoType } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { getUrlOfImageAttachment } from '../../utils/getUrlOfImageAttachment';\nimport { vh, vw } from '../../utils/utils';\nimport { getGiphyMimeType } from '../Attachment/utils/getGiphyMimeType';\n\nconst isAndroid = Platform.OS === 'android';\nconst fullScreenHeight = Dimensions.get('screen').height;\nconst measuredScreenHeight = vh(100);\nconst screenWidth = vw(100);\nconst halfScreenWidth = vw(50);\nconst MARGIN = 32;\n\nexport enum HasPinched {\n FALSE = 0,\n TRUE,\n}\n\nexport enum IsSwiping {\n UNDETERMINED = 0,\n TRUE,\n FALSE,\n}\n\nexport type ImageGalleryCustomComponents<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Override props for following UI components, which are part of [image gallery](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#gallery-components).\n *\n * - [ImageGalleryFooter](#ImageGalleryFooter)\n *\n * - [ImageGrid](#ImageGrid)\n *\n * - [ImageGridHandle](#ImageGridHandle)\n *\n * - [ImageGalleryHeader](#ImageGalleryHeader)\n *\n * e.g.,\n *\n * ```js\n * {\n * footer: {\n * ShareIcon: CustomShareIconComponent\n * },\n * grid: {\n * avatarComponent: CustomAvatarComponent\n * },\n * gridHandle: {\n * centerComponent: CustomCenterComponent\n * },\n * header: {\n * CloseIcon: CustomCloseButtonComponent\n * },\n * }\n * ```\n * @overrideType object\n */\n imageGalleryCustomComponents?: {\n footer?: ImageGalleryFooterCustomComponentProps<StreamChatGenerics>;\n grid?: ImageGalleryGridImageComponents<StreamChatGenerics>;\n gridHandle?: ImageGalleryGridHandleCustomComponentProps;\n header?: ImageGalleryHeaderCustomComponentProps<StreamChatGenerics>;\n };\n};\n\ntype Props<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n ImageGalleryCustomComponents<StreamChatGenerics> & {\n overlayOpacity: Animated.SharedValue<number>;\n } & Pick<\n OverlayProviderProps<StreamChatGenerics>,\n | 'giphyVersion'\n | 'imageGalleryGridSnapPoints'\n | 'imageGalleryGridHandleHeight'\n | 'numberOfImageGalleryGridColumns'\n | 'autoPlayVideo'\n >;\n\nexport const ImageGallery = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: Props<StreamChatGenerics>,\n) => {\n const {\n autoPlayVideo = false,\n giphyVersion = 'fixed_height',\n imageGalleryCustomComponents,\n imageGalleryGridHandleHeight,\n imageGalleryGridSnapPoints,\n numberOfImageGalleryGridColumns,\n overlayOpacity,\n } = props;\n const [imageGalleryAttachments, setImageGalleryAttachments] = useState<\n Photo<StreamChatGenerics>[]\n >([]);\n const {\n theme: {\n colors: { white_snow },\n imageGallery: { backgroundColor, pager, slide },\n },\n } = useTheme();\n const [gridPhotos, setGridPhotos] = useState<Photo<StreamChatGenerics>[]>([]);\n const { overlay, translucentStatusBar } = useOverlayContext();\n const { messages, selectedMessage, setSelectedMessage } =\n useImageGalleryContext<StreamChatGenerics>();\n\n /**\n * Height constants\n */\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - measuredScreenHeight - statusBarHeight;\n const androidScreenHeightAdjustment = translucentStatusBar\n ? bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? 0\n : statusBarHeight\n : bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? -statusBarHeight\n : 0;\n const screenHeight = isAndroid\n ? Dimensions.get('window').height + androidScreenHeightAdjustment\n : vh(100);\n const halfScreenHeight = screenHeight / 2;\n const quarterScreenHeight = screenHeight / 4;\n const snapPoints = React.useMemo(\n () => [(screenHeight * 3) / 4, screenHeight - (imageGalleryGridHandleHeight ?? 40)],\n [],\n );\n\n /**\n * BottomSheetModal ref\n */\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n\n /**\n * BottomSheetModal state\n */\n const [currentBottomSheetIndex, setCurrentBottomSheetIndex] = useState(0);\n const animatedBottomSheetIndex = useSharedValue(0);\n\n /**\n * Fade animation for screen, it is always rendered with pointerEvents\n * set to none for fast opening\n */\n const screenTranslateY = useSharedValue(screenHeight);\n const showScreen = () => {\n 'worklet';\n screenTranslateY.value = withTiming(0, {\n duration: 250,\n easing: Easing.out(Easing.ease),\n });\n };\n\n /**\n * Run the fade animation on visible change\n */\n useEffect(() => {\n Keyboard.dismiss();\n showScreen();\n }, []);\n\n /**\n * Image height from URL or default to full screen height\n */\n const [currentImageHeight, setCurrentImageHeight] = useState<number>(screenHeight);\n\n /**\n * JS and UI index values, the JS follows the UI but is needed\n * for rendering the virtualized image list\n */\n const [selectedIndex, setSelectedIndex] = useState(0);\n const index = useSharedValue(0);\n\n /**\n * Header visible value for animating in out\n */\n const headerFooterVisible = useSharedValue(1);\n\n /**\n * Gesture handler refs\n */\n const doubleTapRef = useRef<TapGestureHandler>(null);\n const panRef = useRef<PanGestureHandler>(null);\n const pinchRef = useRef<PinchGestureHandler>(null);\n const singleTapRef = useRef<TapGestureHandler>(null);\n\n /**\n * Shared values for movement\n */\n const translateX = useSharedValue(0);\n const translateY = useSharedValue(0);\n const offsetScale = useSharedValue(1);\n const scale = useSharedValue(1);\n const translationX = useSharedValue(0);\n\n /**\n * Photos array created from all currently available\n * photo attachments\n */\n\n const photos = messages.reduce((acc: Photo<StreamChatGenerics>[], cur) => {\n const attachmentImages =\n cur.attachments\n ?.filter(\n (attachment) =>\n (attachment.type === 'giphy' &&\n (attachment.giphy?.[giphyVersion]?.url ||\n attachment.thumb_url ||\n attachment.image_url)) ||\n (attachment.type === 'image' &&\n !attachment.title_link &&\n !attachment.og_scrape_url &&\n getUrlOfImageAttachment(attachment)) ||\n (isVideoPackageAvailable() && attachment.type === 'video'),\n )\n .reverse() || [];\n\n const attachmentPhotos = attachmentImages.map((a) => {\n const imageUrl = getUrlOfImageAttachment(a) as string;\n const giphyURL = a.giphy?.[giphyVersion]?.url || a.thumb_url || a.image_url;\n const isInitiallyPaused = !autoPlayVideo;\n\n return {\n channelId: cur.cid,\n created_at: cur.created_at,\n duration: 0,\n id: `photoId-${cur.id}-${imageUrl}`,\n messageId: cur.id,\n mime_type: a.type === 'giphy' ? getGiphyMimeType(giphyURL ?? '') : a.mime_type,\n original_height: a.original_height,\n original_width: a.original_width,\n paused: isInitiallyPaused,\n progress: 0,\n type: a.type,\n uri:\n a.type === 'giphy'\n ? giphyURL\n : getResizedImageUrl({\n height: screenHeight,\n url: imageUrl,\n width: screenWidth,\n }),\n user: cur.user,\n user_id: cur.user_id,\n };\n });\n\n return [...attachmentPhotos, ...acc] as Photo<StreamChatGenerics>[];\n }, []);\n\n /**\n * Photos length needs to be kept as a const here so if the length\n * changes it causes the pan gesture handler function to refresh. This\n * does not work if the calculation for the length of the array is left\n * inside the gesture handler as it will have an array as a dependency\n */\n const photoLength = photos.length;\n\n useEffect(() => {\n setImageGalleryAttachments(photos);\n }, []);\n\n /**\n * The URL for the images may differ because of dimensions passed as\n * part of the query.\n */\n const stripQueryFromUrl = (url: string) => url.split('?')[0];\n\n /**\n * Set selected photo when changed via pressing in the message list\n */\n useEffect(() => {\n const updatePosition = (newIndex: number) => {\n 'worklet';\n\n if (newIndex > -1) {\n index.value = newIndex;\n translationX.value = -(screenWidth + MARGIN) * newIndex;\n runOnJS(setSelectedIndex)(newIndex);\n }\n };\n\n const newIndex = photos.findIndex(\n (photo) =>\n photo.messageId === selectedMessage?.messageId &&\n stripQueryFromUrl(photo.uri) === stripQueryFromUrl(selectedMessage?.url || ''),\n );\n\n runOnUI(updatePosition)(newIndex);\n }, [selectedMessage, photoLength]);\n\n /**\n * Image heights are not provided and therefore need to be calculated.\n * We start by allowing the image to be the full height then reduce it\n * to the proper scaled height based on the width being restricted to the\n * screen width when the dimensions are received.\n */\n const uriForCurrentImage = imageGalleryAttachments[selectedIndex]?.uri;\n\n useEffect(() => {\n setCurrentImageHeight(screenHeight);\n const photo = imageGalleryAttachments[index.value];\n const height = photo?.original_height;\n const width = photo?.original_width;\n\n if (height && width) {\n const imageHeight = Math.floor(height * (screenWidth / width));\n setCurrentImageHeight(imageHeight > screenHeight ? screenHeight : imageHeight);\n } else if (photo?.uri) {\n if (photo.type === 'image') {\n Image.getSize(photo.uri, (width, height) => {\n const imageHeight = Math.floor(height * (screenWidth / width));\n setCurrentImageHeight(imageHeight > screenHeight ? screenHeight : imageHeight);\n });\n }\n }\n }, [uriForCurrentImage]);\n\n const { onDoubleTap, onPan, onPinch, onSingleTap } = useImageGalleryGestures({\n currentImageHeight,\n halfScreenHeight,\n halfScreenWidth,\n headerFooterVisible,\n offsetScale,\n overlayOpacity,\n photoLength,\n scale,\n screenHeight,\n screenWidth,\n selectedIndex,\n setSelectedIndex,\n translateX,\n translateY,\n translationX,\n });\n\n /**\n * If the header is visible we scale down the opacity of it as the\n * image is swiped downward\n */\n const headerFooterOpacity = useDerivedValue(\n () =>\n currentImageHeight * scale.value < screenHeight && translateY.value > 0\n ? 1 - translateY.value / quarterScreenHeight\n : currentImageHeight * scale.value > screenHeight &&\n translateY.value > (currentImageHeight / 2) * scale.value - halfScreenHeight\n ? 1 -\n (translateY.value - ((currentImageHeight / 2) * scale.value - halfScreenHeight)) /\n quarterScreenHeight\n : 1,\n [currentImageHeight],\n );\n\n /**\n * This transition and scaleX reverse lets use scroll left\n */\n const pagerStyle = useAnimatedStyle<ImageStyle>(\n () => ({\n transform: [\n { scaleX: -1 },\n {\n translateX: translationX.value,\n },\n ],\n }),\n [],\n );\n\n /**\n * Simple background color animation on Y movement\n */\n const containerBackground = useAnimatedStyle<ViewStyle>(\n () => ({\n backgroundColor: backgroundColor || white_snow,\n opacity: headerFooterOpacity.value,\n }),\n [headerFooterOpacity],\n );\n\n /**\n * Show screen style as component is always rendered we hide it\n * down and up and set opacity to 0 for good measure\n */\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n translateY: screenTranslateY.value,\n },\n ],\n }),\n [],\n );\n\n /**\n * Functions toclose BottomSheetModal with image grid\n */\n const closeGridView = () => {\n if (bottomSheetModalRef.current?.close) {\n bottomSheetModalRef.current.close();\n setGridPhotos([]);\n }\n };\n\n /**\n * Function to open BottomSheetModal with image grid\n */\n const openGridView = () => {\n if (bottomSheetModalRef.current?.present) {\n bottomSheetModalRef.current.present();\n setGridPhotos(imageGalleryAttachments);\n }\n };\n\n const handleEnd = () => {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, true);\n handleProgress(imageGalleryAttachments[selectedIndex].id, 1, true);\n };\n\n const videoRef = useRef<VideoType>(null);\n\n const handleLoad = (index: string, duration: number) => {\n setImageGalleryAttachments((prevImageGalleryAttachment) =>\n prevImageGalleryAttachment.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n duration: imageGalleryAttachment.id === index ? duration : imageGalleryAttachment.duration,\n })),\n );\n };\n\n const handleProgress = (index: string, progress: number, hasEnd?: boolean) => {\n setImageGalleryAttachments((prevImageGalleryAttachments) =>\n prevImageGalleryAttachments.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n progress:\n imageGalleryAttachment.id === index\n ? hasEnd\n ? 1\n : progress\n : imageGalleryAttachment.progress,\n })),\n );\n };\n\n const handlePlayPause = (index: string, pausedStatus?: boolean) => {\n if (pausedStatus === false) {\n // If the status is false we set the audio with the index as playing and the others as paused.\n setImageGalleryAttachments((prevImageGalleryAttachment) =>\n prevImageGalleryAttachment.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n paused: imageGalleryAttachment.id === index ? false : true,\n })),\n );\n } else {\n // If the status is true we simply set all the audio's paused state as true.\n setImageGalleryAttachments((prevImageGalleryAttachment) =>\n prevImageGalleryAttachment.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n paused: true,\n })),\n );\n }\n };\n\n const onPlayPause = (status?: boolean) => {\n if (status === undefined) {\n if (imageGalleryAttachments[selectedIndex].paused) {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, false);\n } else {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, true);\n }\n } else {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, status);\n }\n };\n\n return (\n <Animated.View\n accessibilityLabel='Image Gallery'\n pointerEvents={'auto'}\n style={[StyleSheet.absoluteFillObject, showScreenStyle]}\n >\n <Animated.View style={[StyleSheet.absoluteFillObject, containerBackground]} />\n <TapGestureHandler\n minPointers={1}\n numberOfTaps={1}\n onGestureEvent={onSingleTap}\n ref={singleTapRef}\n waitFor={[panRef, pinchRef, doubleTapRef]}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <TapGestureHandler\n maxDeltaX={8}\n maxDeltaY={8}\n maxDist={8}\n minPointers={1}\n numberOfTaps={2}\n onGestureEvent={onDoubleTap}\n ref={doubleTapRef}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <PinchGestureHandler\n onGestureEvent={onPinch}\n ref={pinchRef}\n simultaneousHandlers={[panRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <PanGestureHandler\n enabled={overlay === 'gallery'}\n maxPointers={isAndroid ? undefined : 1}\n minDist={10}\n onGestureEvent={onPan}\n ref={panRef}\n simultaneousHandlers={[pinchRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <Animated.View\n style={[\n styles.animatedContainer,\n pagerStyle,\n pager,\n {\n transform: [\n { scaleX: -1 }, // Also only here for opening, wrong direction when not included\n {\n translateX: translationX.value, // Only here for opening, wrong index when this is not included\n },\n ],\n },\n ]}\n >\n {imageGalleryAttachments.map((photo, i) =>\n photo.type === 'video' ? (\n <AnimatedGalleryVideo\n attachmentId={photo.id}\n handleEnd={handleEnd}\n handleLoad={handleLoad}\n handleProgress={handleProgress}\n index={i}\n key={`${photo.uri}-${i}`}\n offsetScale={offsetScale}\n paused={photo.paused || false}\n previous={selectedIndex > i}\n repeat={true}\n scale={scale}\n screenHeight={screenHeight}\n selected={selectedIndex === i}\n shouldRender={Math.abs(selectedIndex - i) < 4}\n source={{ uri: photo.uri }}\n style={[\n {\n height: screenHeight * 8,\n marginRight: MARGIN,\n width: screenWidth * 8,\n },\n slide,\n ]}\n translateX={translateX}\n translateY={translateY}\n videoRef={videoRef}\n />\n ) : (\n <AnimatedGalleryImage\n accessibilityLabel={'Image Item'}\n index={i}\n key={`${photo.uri}-${i}`}\n offsetScale={offsetScale}\n photo={photo}\n previous={selectedIndex > i}\n scale={scale}\n screenHeight={screenHeight}\n selected={selectedIndex === i}\n shouldRender={Math.abs(selectedIndex - i) < 4}\n style={[\n {\n height: screenHeight * 8,\n marginRight: MARGIN,\n width: screenWidth * 8,\n },\n slide,\n ]}\n translateX={translateX}\n translateY={translateY}\n />\n ),\n )}\n </Animated.View>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </PinchGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n <ImageGalleryHeader<StreamChatGenerics>\n opacity={headerFooterOpacity}\n photo={imageGalleryAttachments[selectedIndex]}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.header}\n />\n\n {imageGalleryAttachments.length > 0 && (\n <ImageGalleryFooter<StreamChatGenerics>\n accessibilityLabel={'Image Gallery Footer'}\n duration={imageGalleryAttachments[selectedIndex].duration || 0}\n onPlayPause={onPlayPause}\n opacity={headerFooterOpacity}\n openGridView={openGridView}\n paused={imageGalleryAttachments[selectedIndex].paused || false}\n photo={imageGalleryAttachments[selectedIndex]}\n photoLength={imageGalleryAttachments.length}\n progress={imageGalleryAttachments[selectedIndex].progress || 0}\n selectedIndex={selectedIndex}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.footer}\n />\n )}\n\n <ImageGalleryOverlay\n animatedBottomSheetIndex={animatedBottomSheetIndex}\n closeGridView={closeGridView}\n currentBottomSheetIndex={currentBottomSheetIndex}\n />\n <BottomSheetModalProvider>\n <BottomSheetModal\n animatedIndex={animatedBottomSheetIndex}\n enablePanDownToClose={true}\n handleComponent={() => (\n <ImageGridHandle\n closeGridView={closeGridView}\n {...imageGalleryCustomComponents?.gridHandle}\n />\n )}\n handleHeight={imageGalleryGridHandleHeight ?? 40}\n index={0}\n onChange={(index: number) => setCurrentBottomSheetIndex(index)}\n ref={bottomSheetModalRef}\n snapPoints={imageGalleryGridSnapPoints || snapPoints}\n >\n <ImageGrid\n closeGridView={closeGridView}\n numberOfImageGalleryGridColumns={numberOfImageGalleryGridColumns}\n photos={gridPhotos}\n setSelectedMessage={setSelectedMessage}\n {...imageGalleryCustomComponents?.grid}\n />\n </BottomSheetModal>\n </BottomSheetModalProvider>\n </Animated.View>\n );\n};\n\n/**\n * Clamping worklet to clamp the scaling\n */\nexport const clamp = (value: number, lowerBound: number, upperBound: number) => {\n 'worklet';\n return Math.min(Math.max(lowerBound, value), upperBound);\n};\n\nconst styles = StyleSheet.create({\n animatedContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n },\n});\n\nexport type Photo<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n id: string;\n uri: string;\n channelId?: string;\n created_at?: string | Date;\n duration?: number;\n messageId?: string;\n mime_type?: string;\n original_height?: number;\n original_width?: number;\n paused?: boolean;\n progress?: number;\n type?: string;\n user?: UserResponse<StreamChatGenerics> | null;\n user_id?: string;\n};\n\nImageGallery.displayName = 'ImageGallery{imageGallery}';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_bottomSheet","_AnimatedGalleryImage","_AnimatedGalleryVideo","_ImageGalleryFooter","_ImageGalleryHeader","_ImageGalleryOverlay","_ImageGrid","_ImageGridHandle","_useImageGalleryGestures","_ImageGalleryContext","_OverlayContext","_ThemeContext","_native","_getResizedImageUrl","_getUrlOfImageAttachment","_utils","_getGiphyMimeType","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","isAndroid","Platform","OS","fullScreenHeight","Dimensions","height","measuredScreenHeight","vh","screenWidth","vw","halfScreenWidth","MARGIN","HasPinched","exports","IsSwiping","ImageGallery","props","_StatusBar$currentHei","_imageGalleryAttachme","_props$autoPlayVideo","autoPlayVideo","_props$giphyVersion","giphyVersion","imageGalleryCustomComponents","imageGalleryGridHandleHeight","imageGalleryGridSnapPoints","numberOfImageGalleryGridColumns","overlayOpacity","_useState","useState","_useState2","_slicedToArray2","imageGalleryAttachments","setImageGalleryAttachments","_useTheme","useTheme","_useTheme$theme","theme","white_snow","colors","_useTheme$theme$image","imageGallery","backgroundColor","pager","slide","_useState3","_useState4","gridPhotos","setGridPhotos","_useOverlayContext","useOverlayContext","overlay","translucentStatusBar","_useImageGalleryConte","useImageGalleryContext","messages","selectedMessage","setSelectedMessage","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","androidScreenHeightAdjustment","screenHeight","halfScreenHeight","quarterScreenHeight","snapPoints","React","useMemo","bottomSheetModalRef","useRef","_useState5","_useState6","currentBottomSheetIndex","setCurrentBottomSheetIndex","animatedBottomSheetIndex","useSharedValue","screenTranslateY","showScreen","value","withTiming","duration","easing","Easing","out","ease","useEffect","Keyboard","dismiss","_useState7","_useState8","currentImageHeight","setCurrentImageHeight","_useState9","_useState10","selectedIndex","setSelectedIndex","index","headerFooterVisible","doubleTapRef","panRef","pinchRef","singleTapRef","translateX","translateY","offsetScale","scale","translationX","photos","reduce","acc","cur","_cur$attachments","attachmentImages","attachments","filter","attachment","_attachment$giphy","_attachment$giphy$gip","type","giphy","url","thumb_url","image_url","title_link","og_scrape_url","getUrlOfImageAttachment","isVideoPackageAvailable","reverse","attachmentPhotos","map","a","_a$giphy","_a$giphy$giphyVersion","imageUrl","giphyURL","isInitiallyPaused","channelId","cid","created_at","id","messageId","mime_type","getGiphyMimeType","original_height","original_width","paused","progress","uri","getResizedImageUrl","width","user","user_id","concat","_toConsumableArray2","photoLength","length","stripQueryFromUrl","split","updatePosition","newIndex","runOnJS","findIndex","photo","runOnUI","uriForCurrentImage","imageHeight","Math","floor","Image","getSize","_useImageGalleryGestu","useImageGalleryGestures","onDoubleTap","onPan","onPinch","onSingleTap","headerFooterOpacity","useDerivedValue","pagerStyle","useAnimatedStyle","transform","scaleX","containerBackground","opacity","showScreenStyle","closeGridView","_bottomSheetModalRef$","current","close","openGridView","_bottomSheetModalRef$2","present","handleEnd","handlePlayPause","handleProgress","videoRef","handleLoad","prevImageGalleryAttachment","imageGalleryAttachment","_extends2","hasEnd","prevImageGalleryAttachments","pausedStatus","onPlayPause","status","undefined","createElement","View","accessibilityLabel","pointerEvents","style","StyleSheet","absoluteFillObject","__self","__source","fileName","lineNumber","columnNumber","TapGestureHandler","minPointers","numberOfTaps","onGestureEvent","ref","waitFor","maxDeltaX","maxDeltaY","maxDist","PinchGestureHandler","simultaneousHandlers","absoluteFill","PanGestureHandler","enabled","maxPointers","minDist","styles","animatedContainer","i","AnimatedGalleryVideo","attachmentId","previous","repeat","selected","shouldRender","abs","source","marginRight","AnimatedGalleryImage","ImageGalleryHeader","visible","header","ImageGalleryFooter","footer","ImageGalleryOverlay","BottomSheetModalProvider","BottomSheetModal","animatedIndex","enablePanDownToClose","handleComponent","ImageGridHandle","gridHandle","handleHeight","onChange","ImageGrid","grid","clamp","lowerBound","upperBound","min","max","create","alignItems","flexDirection","displayName"],"sources":["ImageGallery.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport {\n Dimensions,\n Image,\n ImageStyle,\n Keyboard,\n Platform,\n StatusBar,\n StyleSheet,\n ViewStyle,\n} from 'react-native';\n\nimport {\n PanGestureHandler,\n PinchGestureHandler,\n TapGestureHandler,\n} from 'react-native-gesture-handler';\n\nimport Animated, {\n Easing,\n runOnJS,\n runOnUI,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { BottomSheetModal, BottomSheetModalProvider } from '@gorhom/bottom-sheet';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { AnimatedGalleryImage } from './components/AnimatedGalleryImage';\nimport { AnimatedGalleryVideo } from './components/AnimatedGalleryVideo';\nimport {\n ImageGalleryFooter,\n ImageGalleryFooterCustomComponentProps,\n} from './components/ImageGalleryFooter';\nimport {\n ImageGalleryHeader,\n ImageGalleryHeaderCustomComponentProps,\n} from './components/ImageGalleryHeader';\nimport { ImageGalleryOverlay } from './components/ImageGalleryOverlay';\nimport { ImageGalleryGridImageComponents, ImageGrid } from './components/ImageGrid';\nimport {\n ImageGalleryGridHandleCustomComponentProps,\n ImageGridHandle,\n} from './components/ImageGridHandle';\n\nimport { useImageGalleryGestures } from './hooks/useImageGalleryGestures';\n\nimport { useImageGalleryContext } from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n OverlayProviderProps,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { isVideoPackageAvailable, VideoType } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { getUrlOfImageAttachment } from '../../utils/getUrlOfImageAttachment';\nimport { vh, vw } from '../../utils/utils';\nimport { getGiphyMimeType } from '../Attachment/utils/getGiphyMimeType';\n\nconst isAndroid = Platform.OS === 'android';\nconst fullScreenHeight = Dimensions.get('screen').height;\nconst measuredScreenHeight = vh(100);\nconst screenWidth = vw(100);\nconst halfScreenWidth = vw(50);\nconst MARGIN = 32;\n\nexport enum HasPinched {\n FALSE = 0,\n TRUE,\n}\n\nexport enum IsSwiping {\n UNDETERMINED = 0,\n TRUE,\n FALSE,\n}\n\nexport type ImageGalleryCustomComponents<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Override props for following UI components, which are part of [image gallery](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#gallery-components).\n *\n * - [ImageGalleryFooter](#ImageGalleryFooter)\n *\n * - [ImageGrid](#ImageGrid)\n *\n * - [ImageGridHandle](#ImageGridHandle)\n *\n * - [ImageGalleryHeader](#ImageGalleryHeader)\n *\n * e.g.,\n *\n * ```js\n * {\n * footer: {\n * ShareIcon: CustomShareIconComponent\n * },\n * grid: {\n * avatarComponent: CustomAvatarComponent\n * },\n * gridHandle: {\n * centerComponent: CustomCenterComponent\n * },\n * header: {\n * CloseIcon: CustomCloseButtonComponent\n * },\n * }\n * ```\n * @overrideType object\n */\n imageGalleryCustomComponents?: {\n footer?: ImageGalleryFooterCustomComponentProps<StreamChatGenerics>;\n grid?: ImageGalleryGridImageComponents<StreamChatGenerics>;\n gridHandle?: ImageGalleryGridHandleCustomComponentProps;\n header?: ImageGalleryHeaderCustomComponentProps<StreamChatGenerics>;\n };\n};\n\ntype Props<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n ImageGalleryCustomComponents<StreamChatGenerics> & {\n overlayOpacity: Animated.SharedValue<number>;\n } & Pick<\n OverlayProviderProps<StreamChatGenerics>,\n | 'giphyVersion'\n | 'imageGalleryGridSnapPoints'\n | 'imageGalleryGridHandleHeight'\n | 'numberOfImageGalleryGridColumns'\n | 'autoPlayVideo'\n >;\n\nexport const ImageGallery = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: Props<StreamChatGenerics>,\n) => {\n const {\n autoPlayVideo = false,\n giphyVersion = 'fixed_height',\n imageGalleryCustomComponents,\n imageGalleryGridHandleHeight,\n imageGalleryGridSnapPoints,\n numberOfImageGalleryGridColumns,\n overlayOpacity,\n } = props;\n const [imageGalleryAttachments, setImageGalleryAttachments] = useState<\n Photo<StreamChatGenerics>[]\n >([]);\n const {\n theme: {\n colors: { white_snow },\n imageGallery: { backgroundColor, pager, slide },\n },\n } = useTheme();\n const [gridPhotos, setGridPhotos] = useState<Photo<StreamChatGenerics>[]>([]);\n const { overlay, translucentStatusBar } = useOverlayContext();\n const { messages, selectedMessage, setSelectedMessage } =\n useImageGalleryContext<StreamChatGenerics>();\n\n /**\n * Height constants\n */\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - measuredScreenHeight - statusBarHeight;\n const androidScreenHeightAdjustment = translucentStatusBar\n ? bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? 0\n : statusBarHeight\n : bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? -statusBarHeight\n : 0;\n const screenHeight = isAndroid\n ? Dimensions.get('window').height + androidScreenHeightAdjustment\n : vh(100);\n const halfScreenHeight = screenHeight / 2;\n const quarterScreenHeight = screenHeight / 4;\n const snapPoints = React.useMemo(\n () => [(screenHeight * 3) / 4, screenHeight - (imageGalleryGridHandleHeight ?? 40)],\n [],\n );\n\n /**\n * BottomSheetModal ref\n */\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n\n /**\n * BottomSheetModal state\n */\n const [currentBottomSheetIndex, setCurrentBottomSheetIndex] = useState(0);\n const animatedBottomSheetIndex = useSharedValue(0);\n\n /**\n * Fade animation for screen, it is always rendered with pointerEvents\n * set to none for fast opening\n */\n const screenTranslateY = useSharedValue(screenHeight);\n const showScreen = () => {\n 'worklet';\n screenTranslateY.value = withTiming(0, {\n duration: 250,\n easing: Easing.out(Easing.ease),\n });\n };\n\n /**\n * Run the fade animation on visible change\n */\n useEffect(() => {\n Keyboard.dismiss();\n showScreen();\n }, []);\n\n /**\n * Image height from URL or default to full screen height\n */\n const [currentImageHeight, setCurrentImageHeight] = useState<number>(screenHeight);\n\n /**\n * JS and UI index values, the JS follows the UI but is needed\n * for rendering the virtualized image list\n */\n const [selectedIndex, setSelectedIndex] = useState(0);\n const index = useSharedValue(0);\n\n /**\n * Header visible value for animating in out\n */\n const headerFooterVisible = useSharedValue(1);\n\n /**\n * Gesture handler refs\n */\n const doubleTapRef = useRef<TapGestureHandler>(null);\n const panRef = useRef<PanGestureHandler>(null);\n const pinchRef = useRef<PinchGestureHandler>(null);\n const singleTapRef = useRef<TapGestureHandler>(null);\n\n /**\n * Shared values for movement\n */\n const translateX = useSharedValue(0);\n const translateY = useSharedValue(0);\n const offsetScale = useSharedValue(1);\n const scale = useSharedValue(1);\n const translationX = useSharedValue(0);\n\n /**\n * Photos array created from all currently available\n * photo attachments\n */\n\n const photos = messages.reduce((acc: Photo<StreamChatGenerics>[], cur) => {\n const attachmentImages =\n cur.attachments\n ?.filter(\n (attachment) =>\n (attachment.type === 'giphy' &&\n (attachment.giphy?.[giphyVersion]?.url ||\n attachment.thumb_url ||\n attachment.image_url)) ||\n (attachment.type === 'image' &&\n !attachment.title_link &&\n !attachment.og_scrape_url &&\n getUrlOfImageAttachment(attachment)) ||\n (isVideoPackageAvailable() && attachment.type === 'video'),\n )\n .reverse() || [];\n\n const attachmentPhotos = attachmentImages.map((a) => {\n const imageUrl = getUrlOfImageAttachment(a) as string;\n const giphyURL = a.giphy?.[giphyVersion]?.url || a.thumb_url || a.image_url;\n const isInitiallyPaused = !autoPlayVideo;\n\n return {\n channelId: cur.cid,\n created_at: cur.created_at,\n duration: 0,\n id: `photoId-${cur.id}-${imageUrl}`,\n messageId: cur.id,\n mime_type: a.type === 'giphy' ? getGiphyMimeType(giphyURL ?? '') : a.mime_type,\n original_height: a.original_height,\n original_width: a.original_width,\n paused: isInitiallyPaused,\n progress: 0,\n type: a.type,\n uri:\n a.type === 'giphy'\n ? giphyURL\n : getResizedImageUrl({\n height: screenHeight,\n url: imageUrl,\n width: screenWidth,\n }),\n user: cur.user,\n user_id: cur.user_id,\n };\n });\n\n return [...attachmentPhotos, ...acc] as Photo<StreamChatGenerics>[];\n }, []);\n\n /**\n * Photos length needs to be kept as a const here so if the length\n * changes it causes the pan gesture handler function to refresh. This\n * does not work if the calculation for the length of the array is left\n * inside the gesture handler as it will have an array as a dependency\n */\n const photoLength = photos.length;\n\n useEffect(() => {\n setImageGalleryAttachments(photos);\n }, []);\n\n /**\n * The URL for the images may differ because of dimensions passed as\n * part of the query.\n */\n const stripQueryFromUrl = (url: string) => url.split('?')[0];\n\n /**\n * Set selected photo when changed via pressing in the message list\n */\n useEffect(() => {\n const updatePosition = (newIndex: number) => {\n 'worklet';\n\n if (newIndex > -1) {\n index.value = newIndex;\n translationX.value = -(screenWidth + MARGIN) * newIndex;\n runOnJS(setSelectedIndex)(newIndex);\n }\n };\n\n const newIndex = photos.findIndex(\n (photo) =>\n photo.messageId === selectedMessage?.messageId &&\n stripQueryFromUrl(photo.uri) === stripQueryFromUrl(selectedMessage?.url || ''),\n );\n\n runOnUI(updatePosition)(newIndex);\n }, [selectedMessage, photoLength]);\n\n /**\n * Image heights are not provided and therefore need to be calculated.\n * We start by allowing the image to be the full height then reduce it\n * to the proper scaled height based on the width being restricted to the\n * screen width when the dimensions are received.\n */\n const uriForCurrentImage = imageGalleryAttachments[selectedIndex]?.uri;\n\n useEffect(() => {\n setCurrentImageHeight(screenHeight);\n const photo = imageGalleryAttachments[index.value];\n const height = photo?.original_height;\n const width = photo?.original_width;\n\n if (height && width) {\n const imageHeight = Math.floor(height * (screenWidth / width));\n setCurrentImageHeight(imageHeight > screenHeight ? screenHeight : imageHeight);\n } else if (photo?.uri) {\n if (photo.type === 'image') {\n Image.getSize(photo.uri, (width, height) => {\n const imageHeight = Math.floor(height * (screenWidth / width));\n setCurrentImageHeight(imageHeight > screenHeight ? screenHeight : imageHeight);\n });\n }\n }\n }, [uriForCurrentImage]);\n\n const { onDoubleTap, onPan, onPinch, onSingleTap } = useImageGalleryGestures({\n currentImageHeight,\n halfScreenHeight,\n halfScreenWidth,\n headerFooterVisible,\n offsetScale,\n overlayOpacity,\n photoLength,\n scale,\n screenHeight,\n screenWidth,\n selectedIndex,\n setSelectedIndex,\n translateX,\n translateY,\n translationX,\n });\n\n /**\n * If the header is visible we scale down the opacity of it as the\n * image is swiped downward\n */\n const headerFooterOpacity = useDerivedValue(\n () =>\n currentImageHeight * scale.value < screenHeight && translateY.value > 0\n ? 1 - translateY.value / quarterScreenHeight\n : currentImageHeight * scale.value > screenHeight &&\n translateY.value > (currentImageHeight / 2) * scale.value - halfScreenHeight\n ? 1 -\n (translateY.value - ((currentImageHeight / 2) * scale.value - halfScreenHeight)) /\n quarterScreenHeight\n : 1,\n [currentImageHeight],\n );\n\n /**\n * This transition and scaleX reverse lets use scroll left\n */\n const pagerStyle = useAnimatedStyle<ImageStyle>(\n () => ({\n transform: [\n { scaleX: -1 },\n {\n translateX: translationX.value,\n },\n ],\n }),\n [],\n );\n\n /**\n * Simple background color animation on Y movement\n */\n const containerBackground = useAnimatedStyle<ViewStyle>(\n () => ({\n backgroundColor: backgroundColor || white_snow,\n opacity: headerFooterOpacity.value,\n }),\n [headerFooterOpacity],\n );\n\n /**\n * Show screen style as component is always rendered we hide it\n * down and up and set opacity to 0 for good measure\n */\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n translateY: screenTranslateY.value,\n },\n ],\n }),\n [],\n );\n\n /**\n * Functions toclose BottomSheetModal with image grid\n */\n const closeGridView = () => {\n if (bottomSheetModalRef.current?.close) {\n bottomSheetModalRef.current.close();\n setGridPhotos([]);\n }\n };\n\n /**\n * Function to open BottomSheetModal with image grid\n */\n const openGridView = () => {\n if (bottomSheetModalRef.current?.present) {\n bottomSheetModalRef.current.present();\n setGridPhotos(imageGalleryAttachments);\n }\n };\n\n const handleEnd = () => {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, true);\n handleProgress(imageGalleryAttachments[selectedIndex].id, 1, true);\n };\n\n const videoRef = useRef<VideoType>(null);\n\n const handleLoad = (index: string, duration: number) => {\n setImageGalleryAttachments((prevImageGalleryAttachment) =>\n prevImageGalleryAttachment.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n duration: imageGalleryAttachment.id === index ? duration : imageGalleryAttachment.duration,\n })),\n );\n };\n\n const handleProgress = (index: string, progress: number, hasEnd?: boolean) => {\n setImageGalleryAttachments((prevImageGalleryAttachments) =>\n prevImageGalleryAttachments.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n progress:\n imageGalleryAttachment.id === index\n ? hasEnd\n ? 1\n : progress\n : imageGalleryAttachment.progress,\n })),\n );\n };\n\n const handlePlayPause = (index: string, pausedStatus?: boolean) => {\n if (pausedStatus === false) {\n // If the status is false we set the audio with the index as playing and the others as paused.\n setImageGalleryAttachments((prevImageGalleryAttachment) =>\n prevImageGalleryAttachment.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n paused: imageGalleryAttachment.id === index ? false : true,\n })),\n );\n } else {\n // If the status is true we simply set all the audio's paused state as true.\n setImageGalleryAttachments((prevImageGalleryAttachment) =>\n prevImageGalleryAttachment.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n paused: true,\n })),\n );\n }\n };\n\n const onPlayPause = (status?: boolean) => {\n if (status === undefined) {\n if (imageGalleryAttachments[selectedIndex].paused) {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, false);\n } else {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, true);\n }\n } else {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, status);\n }\n };\n\n return (\n <Animated.View\n accessibilityLabel='Image Gallery'\n pointerEvents={'auto'}\n style={[StyleSheet.absoluteFillObject, showScreenStyle]}\n >\n <Animated.View style={[StyleSheet.absoluteFillObject, containerBackground]} />\n <TapGestureHandler\n minPointers={1}\n numberOfTaps={1}\n onGestureEvent={onSingleTap}\n ref={singleTapRef}\n waitFor={[panRef, pinchRef, doubleTapRef]}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <TapGestureHandler\n maxDeltaX={8}\n maxDeltaY={8}\n maxDist={8}\n minPointers={1}\n numberOfTaps={2}\n onGestureEvent={onDoubleTap}\n ref={doubleTapRef}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <PinchGestureHandler\n onGestureEvent={onPinch}\n ref={pinchRef}\n simultaneousHandlers={[panRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <PanGestureHandler\n enabled={overlay === 'gallery'}\n maxPointers={isAndroid ? undefined : 1}\n minDist={10}\n onGestureEvent={onPan}\n ref={panRef}\n simultaneousHandlers={[pinchRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <Animated.View\n style={[\n styles.animatedContainer,\n pagerStyle,\n pager,\n {\n transform: [\n { scaleX: -1 }, // Also only here for opening, wrong direction when not included\n {\n translateX: translationX.value, // Only here for opening, wrong index when this is not included\n },\n ],\n },\n ]}\n >\n {imageGalleryAttachments.map((photo, i) =>\n photo.type === 'video' ? (\n <AnimatedGalleryVideo\n attachmentId={photo.id}\n handleEnd={handleEnd}\n handleLoad={handleLoad}\n handleProgress={handleProgress}\n index={i}\n key={`${photo.uri}-${i}`}\n offsetScale={offsetScale}\n paused={photo.paused || false}\n previous={selectedIndex > i}\n repeat={true}\n scale={scale}\n screenHeight={screenHeight}\n selected={selectedIndex === i}\n shouldRender={Math.abs(selectedIndex - i) < 4}\n source={{ uri: photo.uri }}\n style={[\n {\n height: screenHeight * 8,\n marginRight: MARGIN,\n width: screenWidth * 8,\n },\n slide,\n ]}\n translateX={translateX}\n translateY={translateY}\n videoRef={videoRef}\n />\n ) : (\n <AnimatedGalleryImage\n accessibilityLabel={'Image Item'}\n index={i}\n key={`${photo.uri}-${i}`}\n offsetScale={offsetScale}\n photo={photo}\n previous={selectedIndex > i}\n scale={scale}\n screenHeight={screenHeight}\n selected={selectedIndex === i}\n shouldRender={Math.abs(selectedIndex - i) < 4}\n style={[\n {\n height: screenHeight * 8,\n marginRight: MARGIN,\n width: screenWidth * 8,\n },\n slide,\n ]}\n translateX={translateX}\n translateY={translateY}\n />\n ),\n )}\n </Animated.View>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </PinchGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n <ImageGalleryHeader<StreamChatGenerics>\n opacity={headerFooterOpacity}\n photo={imageGalleryAttachments[selectedIndex]}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.header}\n />\n\n {imageGalleryAttachments.length > 0 && (\n <ImageGalleryFooter<StreamChatGenerics>\n accessibilityLabel={'Image Gallery Footer'}\n duration={imageGalleryAttachments[selectedIndex].duration || 0}\n onPlayPause={onPlayPause}\n opacity={headerFooterOpacity}\n openGridView={openGridView}\n paused={imageGalleryAttachments[selectedIndex].paused || false}\n photo={imageGalleryAttachments[selectedIndex]}\n photoLength={imageGalleryAttachments.length}\n progress={imageGalleryAttachments[selectedIndex].progress || 0}\n selectedIndex={selectedIndex}\n videoRef={videoRef}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.footer}\n />\n )}\n\n <ImageGalleryOverlay\n animatedBottomSheetIndex={animatedBottomSheetIndex}\n closeGridView={closeGridView}\n currentBottomSheetIndex={currentBottomSheetIndex}\n />\n <BottomSheetModalProvider>\n <BottomSheetModal\n animatedIndex={animatedBottomSheetIndex}\n enablePanDownToClose={true}\n handleComponent={() => (\n <ImageGridHandle\n closeGridView={closeGridView}\n {...imageGalleryCustomComponents?.gridHandle}\n />\n )}\n handleHeight={imageGalleryGridHandleHeight ?? 40}\n index={0}\n onChange={(index: number) => setCurrentBottomSheetIndex(index)}\n ref={bottomSheetModalRef}\n snapPoints={imageGalleryGridSnapPoints || snapPoints}\n >\n <ImageGrid\n closeGridView={closeGridView}\n numberOfImageGalleryGridColumns={numberOfImageGalleryGridColumns}\n photos={gridPhotos}\n setSelectedMessage={setSelectedMessage}\n {...imageGalleryCustomComponents?.grid}\n />\n </BottomSheetModal>\n </BottomSheetModalProvider>\n </Animated.View>\n );\n};\n\n/**\n * Clamping worklet to clamp the scaling\n */\nexport const clamp = (value: number, lowerBound: number, upperBound: number) => {\n 'worklet';\n return Math.min(Math.max(lowerBound, value), upperBound);\n};\n\nconst styles = StyleSheet.create({\n animatedContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n },\n});\n\nexport type Photo<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n id: string;\n uri: string;\n channelId?: string;\n created_at?: string | Date;\n duration?: number;\n messageId?: string;\n mime_type?: string;\n original_height?: number;\n original_width?: number;\n paused?: boolean;\n progress?: number;\n type?: string;\n user?: UserResponse<StreamChatGenerics> | null;\n user_id?: string;\n};\n\nImageGallery.displayName = 'ImageGallery{imageGallery}';\n"],"mappings":"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"}
|
|
@@ -69,6 +69,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
69
69
|
selectedIndex = props.selectedIndex,
|
|
70
70
|
ShareIcon = props.ShareIcon,
|
|
71
71
|
videoControlElement = props.videoControlElement,
|
|
72
|
+
videoRef = props.videoRef,
|
|
72
73
|
visible = props.visible;
|
|
73
74
|
var _useState = (0, _react.useState)(200),
|
|
74
75
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
@@ -154,7 +155,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
154
155
|
__self: _this,
|
|
155
156
|
__source: {
|
|
156
157
|
fileName: _jsxFileName,
|
|
157
|
-
lineNumber:
|
|
158
|
+
lineNumber: 178,
|
|
158
159
|
columnNumber: 5
|
|
159
160
|
}
|
|
160
161
|
}, _react["default"].createElement(ReanimatedSafeAreaView, {
|
|
@@ -164,23 +165,25 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
164
165
|
__self: _this,
|
|
165
166
|
__source: {
|
|
166
167
|
fileName: _jsxFileName,
|
|
167
|
-
lineNumber:
|
|
168
|
+
lineNumber: 184,
|
|
168
169
|
columnNumber: 7
|
|
169
170
|
}
|
|
170
171
|
}, photo.type === 'video' ? videoControlElement ? videoControlElement({
|
|
171
172
|
duration: duration,
|
|
172
173
|
onPlayPause: onPlayPause,
|
|
173
174
|
paused: paused,
|
|
174
|
-
progress: progress
|
|
175
|
+
progress: progress,
|
|
176
|
+
videoRef: videoRef
|
|
175
177
|
}) : _react["default"].createElement(_ImageGalleryVideoControl.ImageGalleryVideoControl, {
|
|
176
178
|
duration: duration,
|
|
177
179
|
onPlayPause: onPlayPause,
|
|
178
180
|
paused: paused,
|
|
179
181
|
progress: progress,
|
|
182
|
+
videoRef: videoRef,
|
|
180
183
|
__self: _this,
|
|
181
184
|
__source: {
|
|
182
185
|
fileName: _jsxFileName,
|
|
183
|
-
lineNumber:
|
|
186
|
+
lineNumber: 189,
|
|
184
187
|
columnNumber: 13
|
|
185
188
|
}
|
|
186
189
|
}) : null, _react["default"].createElement(_reactNative.View, {
|
|
@@ -190,7 +193,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
190
193
|
__self: _this,
|
|
191
194
|
__source: {
|
|
192
195
|
fileName: _jsxFileName,
|
|
193
|
-
lineNumber:
|
|
196
|
+
lineNumber: 198,
|
|
194
197
|
columnNumber: 9
|
|
195
198
|
}
|
|
196
199
|
}, leftElement ? leftElement({
|
|
@@ -205,7 +208,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
205
208
|
__self: _this,
|
|
206
209
|
__source: {
|
|
207
210
|
fileName: _jsxFileName,
|
|
208
|
-
lineNumber:
|
|
211
|
+
lineNumber: 202,
|
|
209
212
|
columnNumber: 13
|
|
210
213
|
}
|
|
211
214
|
}), centerElement ? centerElement({
|
|
@@ -218,7 +221,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
218
221
|
__self: _this,
|
|
219
222
|
__source: {
|
|
220
223
|
fileName: _jsxFileName,
|
|
221
|
-
lineNumber:
|
|
224
|
+
lineNumber: 207,
|
|
222
225
|
columnNumber: 13
|
|
223
226
|
}
|
|
224
227
|
}, _react["default"].createElement(_reactNative.Text, {
|
|
@@ -228,7 +231,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
228
231
|
__self: _this,
|
|
229
232
|
__source: {
|
|
230
233
|
fileName: _jsxFileName,
|
|
231
|
-
lineNumber:
|
|
234
|
+
lineNumber: 208,
|
|
232
235
|
columnNumber: 15
|
|
233
236
|
}
|
|
234
237
|
}, t('{{ index }} of {{ photoLength }}', {
|
|
@@ -244,7 +247,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
244
247
|
__self: _this,
|
|
245
248
|
__source: {
|
|
246
249
|
fileName: _jsxFileName,
|
|
247
|
-
lineNumber:
|
|
250
|
+
lineNumber: 219,
|
|
248
251
|
columnNumber: 13
|
|
249
252
|
}
|
|
250
253
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -252,14 +255,14 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
252
255
|
__self: _this,
|
|
253
256
|
__source: {
|
|
254
257
|
fileName: _jsxFileName,
|
|
255
|
-
lineNumber:
|
|
258
|
+
lineNumber: 220,
|
|
256
259
|
columnNumber: 15
|
|
257
260
|
}
|
|
258
261
|
}, GridIcon ? GridIcon : _react["default"].createElement(_icons.Grid, {
|
|
259
262
|
__self: _this,
|
|
260
263
|
__source: {
|
|
261
264
|
fileName: _jsxFileName,
|
|
262
|
-
lineNumber:
|
|
265
|
+
lineNumber: 221,
|
|
263
266
|
columnNumber: 40
|
|
264
267
|
}
|
|
265
268
|
}))))));
|
|
@@ -283,7 +286,7 @@ var ShareButton = function ShareButton(_ref2) {
|
|
|
283
286
|
__self: _this,
|
|
284
287
|
__source: {
|
|
285
288
|
fileName: _jsxFileName,
|
|
286
|
-
lineNumber:
|
|
289
|
+
lineNumber: 252,
|
|
287
290
|
columnNumber: 5
|
|
288
291
|
}
|
|
289
292
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -291,7 +294,7 @@ var ShareButton = function ShareButton(_ref2) {
|
|
|
291
294
|
__self: _this,
|
|
292
295
|
__source: {
|
|
293
296
|
fileName: _jsxFileName,
|
|
294
|
-
lineNumber:
|
|
297
|
+
lineNumber: 253,
|
|
295
298
|
columnNumber: 7
|
|
296
299
|
}
|
|
297
300
|
}, ShareIcon ? ShareIcon : _react["default"].createElement(_icons.Share, {
|
|
@@ -299,7 +302,7 @@ var ShareButton = function ShareButton(_ref2) {
|
|
|
299
302
|
__self: _this,
|
|
300
303
|
__source: {
|
|
301
304
|
fileName: _jsxFileName,
|
|
302
|
-
lineNumber:
|
|
305
|
+
lineNumber: 254,
|
|
303
306
|
columnNumber: 34
|
|
304
307
|
}
|
|
305
308
|
})));
|
|
@@ -329,7 +332,7 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
|
|
|
329
332
|
__self: _this,
|
|
330
333
|
__source: {
|
|
331
334
|
fileName: _jsxFileName,
|
|
332
|
-
lineNumber:
|
|
335
|
+
lineNumber: 305,
|
|
333
336
|
columnNumber: 6
|
|
334
337
|
}
|
|
335
338
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_ImageGalleryVideoControl","_ThemeContext","_TranslationContext","_icons","_native","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ReanimatedSafeAreaView","Animated","createAnimatedComponent","SafeAreaView","styles","StyleSheet","create","centerContainer","alignItems","flex","justifyContent","imageCountText","fontSize","fontWeight","innerContainer","flexDirection","height","leftContainer","marginLeft","rightContainer","marginRight","wrapper","bottom","left","position","right","ImageGalleryFooterWithContext","props","accessibilityLabel","centerElement","duration","GridIcon","leftElement","onPlayPause","opacity","openGridView","paused","photo","photoLength","progress","rightElement","selectedIndex","ShareIcon","videoControlElement","visible","_useState","useState","_useState2","_slicedToArray2","setHeight","_useState3","_useState4","shareMenuOpen","setShareMenuOpen","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","black","white","_useTheme$theme$image","imageGallery","footer","container","_useTranslationContex","useTranslationContext","t","footerStyle","useAnimatedStyle","value","transform","translateY","interpolate","Extrapolate","CLAMP","share","_ref","_asyncToGenerator2","_regenerator","mark","_callee","_photo$mime_type","_photo$user","extension","localFile","wrap","_callee$","_context","prev","next","mime_type","split","saveFile","fileName","user","id","messageId","fromUrl","uri","sent","shareImage","type","url","deleteFile","t0","console","log","stop","apply","arguments","createElement","View","onLayout","event","nativeEvent","layout","pointerEvents","style","__self","__source","lineNumber","columnNumber","backgroundColor","ImageGalleryVideoControl","ShareButton","Text","color","index","TouchableOpacity","onPress","Grid","exports","_ref2","_useTheme2","_useTheme2$theme","disabled","Share","pathFill","areEqual","prevProps","nextProps","prevDuration","prevPaused","prevProgress","prevSelectedIndex","nextDuration","nextPaused","nextProgress","nextSelectedIndex","isDurationEqual","isPausedEqual","isProgressEqual","isSelectedIndexEqual","MemoizedImageGalleryFooter","React","memo","ImageGalleryFooter","_extends2","displayName"],"sources":["ImageGalleryFooter.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { SafeAreaView, StyleSheet, Text, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport Animated, { Extrapolate, interpolate, useAnimatedStyle } from 'react-native-reanimated';\n\nimport { ImageGalleryVideoControl } from './ImageGalleryVideoControl';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { Grid as GridIconDefault, Share as ShareIconDefault } from '../../../icons';\nimport { deleteFile, saveFile, shareImage } from '../../../native';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { Photo } from '../ImageGallery';\n\nconst ReanimatedSafeAreaView = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(SafeAreaView)\n : SafeAreaView;\n\nconst styles = StyleSheet.create({\n centerContainer: {\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n imageCountText: {\n fontSize: 16,\n fontWeight: '600',\n },\n innerContainer: {\n flexDirection: 'row',\n height: 56,\n },\n leftContainer: {\n flex: 1,\n justifyContent: 'center',\n marginLeft: 8,\n },\n rightContainer: {\n flex: 1,\n justifyContent: 'center',\n marginRight: 8,\n },\n wrapper: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n },\n});\n\nexport type ImageGalleryFooterCustomComponent<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ({\n openGridView,\n photo,\n share,\n shareMenuOpen,\n}: {\n openGridView: () => void;\n share: () => Promise<void>;\n shareMenuOpen: boolean;\n photo?: Photo<StreamChatGenerics>;\n}) => React.ReactElement | null;\n\nexport type ImageGalleryFooterVideoControlProps = {\n duration: number;\n onPlayPause: (status?: boolean) => void;\n paused: boolean;\n progress: number;\n};\n\nexport type ImageGalleryFooterVideoControlComponent = ({\n duration,\n onPlayPause,\n paused,\n progress,\n}: ImageGalleryFooterVideoControlProps) => React.ReactElement | null;\n\nexport type ImageGalleryFooterCustomComponentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n centerElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n GridIcon?: React.ReactElement;\n leftElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n rightElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n ShareIcon?: React.ReactElement;\n videoControlElement?: ImageGalleryFooterVideoControlComponent;\n};\n\ntype ImageGalleryFooterPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryFooterCustomComponentProps<StreamChatGenerics> & {\n accessibilityLabel: string;\n duration: number;\n onPlayPause: () => void;\n opacity: Animated.SharedValue<number>;\n openGridView: () => void;\n paused: boolean;\n photo: Photo<StreamChatGenerics>;\n photoLength: number;\n progress: number;\n selectedIndex: number;\n visible: Animated.SharedValue<number>;\n};\n\nexport const ImageGalleryFooterWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n accessibilityLabel,\n centerElement,\n duration,\n GridIcon,\n leftElement,\n onPlayPause,\n opacity,\n openGridView,\n paused,\n photo,\n photoLength,\n progress,\n rightElement,\n selectedIndex,\n ShareIcon,\n videoControlElement,\n visible,\n } = props;\n\n const [height, setHeight] = useState(200);\n const [shareMenuOpen, setShareMenuOpen] = useState(false);\n const {\n theme: {\n colors: { black, white },\n imageGallery: {\n footer: { centerContainer, container, imageCountText, innerContainer, rightContainer },\n },\n },\n } = useTheme();\n const { t } = useTranslationContext();\n\n const footerStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: opacity.value,\n transform: [\n {\n translateY: interpolate(visible.value, [0, 1], [height, 0], Extrapolate.CLAMP),\n },\n ],\n }),\n [height],\n );\n\n const share = async () => {\n setShareMenuOpen(true);\n try {\n const extension = photo.mime_type?.split('/')[1] || 'jpg';\n const localFile = await saveFile({\n fileName: `${photo.user?.id || 'ChatPhoto'}-${\n photo.messageId\n }-${selectedIndex}.${extension}`,\n fromUrl: photo.uri,\n });\n // `image/jpeg` is added for the case where the mime_type isn't available for a file/image\n await shareImage({ type: photo.mime_type || 'image/jpeg', url: localFile });\n await deleteFile({ uri: localFile });\n } catch (error) {\n console.log(error);\n }\n setShareMenuOpen(false);\n };\n\n return (\n <Animated.View\n accessibilityLabel={accessibilityLabel}\n onLayout={(event) => setHeight(event.nativeEvent.layout.height)}\n pointerEvents={'box-none'}\n style={styles.wrapper}\n >\n <ReanimatedSafeAreaView style={[container, footerStyle, { backgroundColor: white }]}>\n {photo.type === 'video' ? (\n videoControlElement ? (\n videoControlElement({ duration, onPlayPause, paused, progress })\n ) : (\n <ImageGalleryVideoControl\n duration={duration}\n onPlayPause={onPlayPause}\n paused={paused}\n progress={progress}\n />\n )\n ) : null}\n <View style={[styles.innerContainer, innerContainer, { backgroundColor: white }]}>\n {leftElement ? (\n leftElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <ShareButton share={share} ShareIcon={ShareIcon} shareMenuOpen={shareMenuOpen} />\n )}\n {centerElement ? (\n centerElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <View style={[styles.centerContainer, centerContainer]}>\n <Text style={[styles.imageCountText, { color: black }, imageCountText]}>\n {t('{{ index }} of {{ photoLength }}', {\n index: photoLength - selectedIndex,\n photoLength,\n })}\n </Text>\n </View>\n )}\n {rightElement ? (\n rightElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <TouchableOpacity onPress={openGridView}>\n <View style={[styles.rightContainer, rightContainer]}>\n {GridIcon ? GridIcon : <GridIconDefault />}\n </View>\n </TouchableOpacity>\n )}\n </View>\n </ReanimatedSafeAreaView>\n </Animated.View>\n );\n};\n\ntype ShareButtonProps = {\n share: () => Promise<void>;\n shareMenuOpen: boolean;\n ShareIcon?: React.ReactElement;\n};\n\nconst ShareButton = ({ share, ShareIcon, shareMenuOpen }: ShareButtonProps) => {\n const {\n theme: {\n colors: { black },\n imageGallery: {\n footer: { leftContainer },\n },\n },\n } = useTheme();\n\n if (shareImage === null) {\n return null;\n }\n\n return (\n <TouchableOpacity accessibilityLabel='Share Button' disabled={shareMenuOpen} onPress={share}>\n <View style={[styles.leftContainer, leftContainer]}>\n {ShareIcon ? ShareIcon : <ShareIconDefault pathFill={black} />}\n </View>\n </TouchableOpacity>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n nextProps: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n duration: prevDuration,\n paused: prevPaused,\n progress: prevProgress,\n selectedIndex: prevSelectedIndex,\n } = prevProps;\n const {\n duration: nextDuration,\n paused: nextPaused,\n progress: nextProgress,\n selectedIndex: nextSelectedIndex,\n } = nextProps;\n\n const isDurationEqual = prevDuration === nextDuration;\n if (!isDurationEqual) return false;\n\n const isPausedEqual = prevPaused === nextPaused;\n if (!isPausedEqual) return false;\n\n const isProgressEqual = prevProgress === nextProgress;\n if (!isProgressEqual) return false;\n\n const isSelectedIndexEqual = prevSelectedIndex === nextSelectedIndex;\n if (!isSelectedIndexEqual) return false;\n\n return true;\n};\n\nconst MemoizedImageGalleryFooter = React.memo(\n ImageGalleryFooterWithContext,\n areEqual,\n) as typeof ImageGalleryFooterWithContext;\n\nexport type ImageGalleryFooterProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryFooterPropsWithContext<StreamChatGenerics>;\n\nexport const ImageGalleryFooter = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGalleryFooterProps<StreamChatGenerics>,\n) => <MemoizedImageGalleryFooter {...props} />;\n\nImageGalleryFooter.displayName = 'ImageGalleryFooter{imageGallery{footer}}';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_ImageGalleryVideoControl","_ThemeContext","_TranslationContext","_icons","_native","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ReanimatedSafeAreaView","Animated","createAnimatedComponent","SafeAreaView","styles","StyleSheet","create","centerContainer","alignItems","flex","justifyContent","imageCountText","fontSize","fontWeight","innerContainer","flexDirection","height","leftContainer","marginLeft","rightContainer","marginRight","wrapper","bottom","left","position","right","ImageGalleryFooterWithContext","props","accessibilityLabel","centerElement","duration","GridIcon","leftElement","onPlayPause","opacity","openGridView","paused","photo","photoLength","progress","rightElement","selectedIndex","ShareIcon","videoControlElement","videoRef","visible","_useState","useState","_useState2","_slicedToArray2","setHeight","_useState3","_useState4","shareMenuOpen","setShareMenuOpen","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","black","white","_useTheme$theme$image","imageGallery","footer","container","_useTranslationContex","useTranslationContext","t","footerStyle","useAnimatedStyle","value","transform","translateY","interpolate","Extrapolate","CLAMP","share","_ref","_asyncToGenerator2","_regenerator","mark","_callee","_photo$mime_type","_photo$user","extension","localFile","wrap","_callee$","_context","prev","next","mime_type","split","saveFile","fileName","user","id","messageId","fromUrl","uri","sent","shareImage","type","url","deleteFile","t0","console","log","stop","apply","arguments","createElement","View","onLayout","event","nativeEvent","layout","pointerEvents","style","__self","__source","lineNumber","columnNumber","backgroundColor","ImageGalleryVideoControl","ShareButton","Text","color","index","TouchableOpacity","onPress","Grid","exports","_ref2","_useTheme2","_useTheme2$theme","disabled","Share","pathFill","areEqual","prevProps","nextProps","prevDuration","prevPaused","prevProgress","prevSelectedIndex","nextDuration","nextPaused","nextProgress","nextSelectedIndex","isDurationEqual","isPausedEqual","isProgressEqual","isSelectedIndexEqual","MemoizedImageGalleryFooter","React","memo","ImageGalleryFooter","_extends2","displayName"],"sources":["ImageGalleryFooter.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { SafeAreaView, StyleSheet, Text, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport Animated, { Extrapolate, interpolate, useAnimatedStyle } from 'react-native-reanimated';\n\nimport { ImageGalleryVideoControl } from './ImageGalleryVideoControl';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { Grid as GridIconDefault, Share as ShareIconDefault } from '../../../icons';\nimport { deleteFile, saveFile, shareImage, VideoType } from '../../../native';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { Photo } from '../ImageGallery';\n\nconst ReanimatedSafeAreaView = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(SafeAreaView)\n : SafeAreaView;\n\nconst styles = StyleSheet.create({\n centerContainer: {\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n imageCountText: {\n fontSize: 16,\n fontWeight: '600',\n },\n innerContainer: {\n flexDirection: 'row',\n height: 56,\n },\n leftContainer: {\n flex: 1,\n justifyContent: 'center',\n marginLeft: 8,\n },\n rightContainer: {\n flex: 1,\n justifyContent: 'center',\n marginRight: 8,\n },\n wrapper: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n },\n});\n\nexport type ImageGalleryFooterCustomComponent<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ({\n openGridView,\n photo,\n share,\n shareMenuOpen,\n}: {\n openGridView: () => void;\n share: () => Promise<void>;\n shareMenuOpen: boolean;\n photo?: Photo<StreamChatGenerics>;\n}) => React.ReactElement | null;\n\nexport type ImageGalleryFooterVideoControlProps = {\n duration: number;\n onPlayPause: (status?: boolean) => void;\n paused: boolean;\n progress: number;\n videoRef: React.RefObject<VideoType>;\n};\n\nexport type ImageGalleryFooterVideoControlComponent = ({\n duration,\n onPlayPause,\n paused,\n progress,\n}: ImageGalleryFooterVideoControlProps) => React.ReactElement | null;\n\nexport type ImageGalleryFooterCustomComponentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n centerElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n GridIcon?: React.ReactElement;\n leftElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n rightElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n ShareIcon?: React.ReactElement;\n videoControlElement?: ImageGalleryFooterVideoControlComponent;\n};\n\ntype ImageGalleryFooterPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryFooterCustomComponentProps<StreamChatGenerics> & {\n accessibilityLabel: string;\n duration: number;\n onPlayPause: () => void;\n opacity: Animated.SharedValue<number>;\n openGridView: () => void;\n paused: boolean;\n photo: Photo<StreamChatGenerics>;\n photoLength: number;\n progress: number;\n selectedIndex: number;\n videoRef: React.RefObject<VideoType>;\n visible: Animated.SharedValue<number>;\n};\n\nexport const ImageGalleryFooterWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n accessibilityLabel,\n centerElement,\n duration,\n GridIcon,\n leftElement,\n onPlayPause,\n opacity,\n openGridView,\n paused,\n photo,\n photoLength,\n progress,\n rightElement,\n selectedIndex,\n ShareIcon,\n videoControlElement,\n videoRef,\n visible,\n } = props;\n\n const [height, setHeight] = useState(200);\n const [shareMenuOpen, setShareMenuOpen] = useState(false);\n const {\n theme: {\n colors: { black, white },\n imageGallery: {\n footer: { centerContainer, container, imageCountText, innerContainer, rightContainer },\n },\n },\n } = useTheme();\n const { t } = useTranslationContext();\n\n const footerStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: opacity.value,\n transform: [\n {\n translateY: interpolate(visible.value, [0, 1], [height, 0], Extrapolate.CLAMP),\n },\n ],\n }),\n [height],\n );\n\n const share = async () => {\n setShareMenuOpen(true);\n try {\n const extension = photo.mime_type?.split('/')[1] || 'jpg';\n const localFile = await saveFile({\n fileName: `${photo.user?.id || 'ChatPhoto'}-${\n photo.messageId\n }-${selectedIndex}.${extension}`,\n fromUrl: photo.uri,\n });\n // `image/jpeg` is added for the case where the mime_type isn't available for a file/image\n await shareImage({ type: photo.mime_type || 'image/jpeg', url: localFile });\n await deleteFile({ uri: localFile });\n } catch (error) {\n console.log(error);\n }\n setShareMenuOpen(false);\n };\n\n return (\n <Animated.View\n accessibilityLabel={accessibilityLabel}\n onLayout={(event) => setHeight(event.nativeEvent.layout.height)}\n pointerEvents={'box-none'}\n style={styles.wrapper}\n >\n <ReanimatedSafeAreaView style={[container, footerStyle, { backgroundColor: white }]}>\n {photo.type === 'video' ? (\n videoControlElement ? (\n videoControlElement({ duration, onPlayPause, paused, progress, videoRef })\n ) : (\n <ImageGalleryVideoControl\n duration={duration}\n onPlayPause={onPlayPause}\n paused={paused}\n progress={progress}\n videoRef={videoRef}\n />\n )\n ) : null}\n <View style={[styles.innerContainer, innerContainer, { backgroundColor: white }]}>\n {leftElement ? (\n leftElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <ShareButton share={share} ShareIcon={ShareIcon} shareMenuOpen={shareMenuOpen} />\n )}\n {centerElement ? (\n centerElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <View style={[styles.centerContainer, centerContainer]}>\n <Text style={[styles.imageCountText, { color: black }, imageCountText]}>\n {t('{{ index }} of {{ photoLength }}', {\n index: photoLength - selectedIndex,\n photoLength,\n })}\n </Text>\n </View>\n )}\n {rightElement ? (\n rightElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <TouchableOpacity onPress={openGridView}>\n <View style={[styles.rightContainer, rightContainer]}>\n {GridIcon ? GridIcon : <GridIconDefault />}\n </View>\n </TouchableOpacity>\n )}\n </View>\n </ReanimatedSafeAreaView>\n </Animated.View>\n );\n};\n\ntype ShareButtonProps = {\n share: () => Promise<void>;\n shareMenuOpen: boolean;\n ShareIcon?: React.ReactElement;\n};\n\nconst ShareButton = ({ share, ShareIcon, shareMenuOpen }: ShareButtonProps) => {\n const {\n theme: {\n colors: { black },\n imageGallery: {\n footer: { leftContainer },\n },\n },\n } = useTheme();\n\n if (shareImage === null) {\n return null;\n }\n\n return (\n <TouchableOpacity accessibilityLabel='Share Button' disabled={shareMenuOpen} onPress={share}>\n <View style={[styles.leftContainer, leftContainer]}>\n {ShareIcon ? ShareIcon : <ShareIconDefault pathFill={black} />}\n </View>\n </TouchableOpacity>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n nextProps: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n duration: prevDuration,\n paused: prevPaused,\n progress: prevProgress,\n selectedIndex: prevSelectedIndex,\n } = prevProps;\n const {\n duration: nextDuration,\n paused: nextPaused,\n progress: nextProgress,\n selectedIndex: nextSelectedIndex,\n } = nextProps;\n\n const isDurationEqual = prevDuration === nextDuration;\n if (!isDurationEqual) return false;\n\n const isPausedEqual = prevPaused === nextPaused;\n if (!isPausedEqual) return false;\n\n const isProgressEqual = prevProgress === nextProgress;\n if (!isProgressEqual) return false;\n\n const isSelectedIndexEqual = prevSelectedIndex === nextSelectedIndex;\n if (!isSelectedIndexEqual) return false;\n\n return true;\n};\n\nconst MemoizedImageGalleryFooter = React.memo(\n ImageGalleryFooterWithContext,\n areEqual,\n) as typeof ImageGalleryFooterWithContext;\n\nexport type ImageGalleryFooterProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryFooterPropsWithContext<StreamChatGenerics>;\n\nexport const ImageGalleryFooter = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGalleryFooterProps<StreamChatGenerics>,\n) => <MemoizedImageGalleryFooter {...props} />;\n\nImageGalleryFooter.displayName = 'ImageGalleryFooter{imageGallery{footer}}';\n"],"mappings":"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"}
|