stream-chat-react-native-core 5.22.2-beta.6 → 5.22.2-beta.7
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 +1 -1
- package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/commonjs/i18n/fr.json +20 -20
- package/lib/commonjs/i18n/hi.json +21 -21
- package/lib/commonjs/i18n/it.json +21 -21
- package/lib/commonjs/i18n/nl.json +21 -21
- package/lib/commonjs/i18n/ru.json +21 -21
- package/lib/commonjs/i18n/tr.json +21 -21
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/ImageGallery/ImageGallery.js +1 -1
- package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/module/i18n/fr.json +20 -20
- package/lib/module/i18n/hi.json +21 -21
- package/lib/module/i18n/it.json +21 -21
- package/lib/module/i18n/nl.json +21 -21
- package/lib/module/i18n/ru.json +21 -21
- package/lib/module/i18n/tr.json +21 -21
- package/lib/module/version.json +1 -1
- package/lib/typescript/i18n/fr.json +20 -20
- package/lib/typescript/i18n/hi.json +21 -21
- package/lib/typescript/i18n/it.json +21 -21
- package/lib/typescript/i18n/nl.json +21 -21
- package/lib/typescript/i18n/ru.json +21 -21
- package/lib/typescript/i18n/tr.json +21 -21
- package/package.json +1 -1
- package/src/components/ImageGallery/ImageGallery.tsx +1 -1
- package/src/i18n/fr.json +20 -20
- package/src/i18n/hi.json +21 -21
- package/src/i18n/it.json +21 -21
- package/src/i18n/nl.json +21 -21
- package/src/i18n/ru.json +21 -21
- package/src/i18n/tr.json +21 -21
- package/src/version.json +1 -1
|
@@ -497,7 +497,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
497
497
|
lineNumber: 643,
|
|
498
498
|
columnNumber: 7
|
|
499
499
|
}
|
|
500
|
-
})), imageGalleryAttachments
|
|
500
|
+
})), imageGalleryAttachments[selectedIndex] && _react["default"].createElement(_ImageGalleryFooter.ImageGalleryFooter, (0, _extends2["default"])({
|
|
501
501
|
accessibilityLabel: 'Image Gallery Footer',
|
|
502
502
|
duration: imageGalleryAttachments[selectedIndex].duration || 0,
|
|
503
503
|
onPlayPause: onPlayPause,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_bottomSheet","_AnimatedGalleryImage","_AnimatedGalleryVideo","_ImageGalleryFooter","_ImageGalleryHeader","_ImageGalleryOverlay","_ImageGrid","_ImageGridHandle","_useImageGalleryGestures","_ImageGalleryContext","_OverlayContext","_ThemeContext","_useViewport2","_native","_getResizedImageUrl","_getUrlOfImageAttachment","_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","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","_useViewport","useViewport","vh","vw","measuredScreenHeight","screenWidth","halfScreenWidth","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 { useViewport } from '../../hooks/useViewport';\nimport { isVideoPackageAvailable, VideoType } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { getUrlOfImageAttachment } from '../../utils/getUrlOfImageAttachment';\nimport { getGiphyMimeType } from '../Attachment/utils/getGiphyMimeType';\n\nconst isAndroid = Platform.OS === 'android';\nconst fullScreenHeight = Dimensions.get('screen').height;\n\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 const { vh, vw } = useViewport();\n\n const measuredScreenHeight = vh(100);\n const screenWidth = vw(100);\n const halfScreenWidth = vw(50);\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 style={[styles.animatedContainer, pagerStyle, pager]}>\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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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_bottomSheet","_AnimatedGalleryImage","_AnimatedGalleryVideo","_ImageGalleryFooter","_ImageGalleryHeader","_ImageGalleryOverlay","_ImageGrid","_ImageGridHandle","_useImageGalleryGestures","_ImageGalleryContext","_OverlayContext","_ThemeContext","_useViewport2","_native","_getResizedImageUrl","_getUrlOfImageAttachment","_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","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","_useViewport","useViewport","vh","vw","measuredScreenHeight","screenWidth","halfScreenWidth","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 { useViewport } from '../../hooks/useViewport';\nimport { isVideoPackageAvailable, VideoType } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { getUrlOfImageAttachment } from '../../utils/getUrlOfImageAttachment';\nimport { getGiphyMimeType } from '../Attachment/utils/getGiphyMimeType';\n\nconst isAndroid = Platform.OS === 'android';\nconst fullScreenHeight = Dimensions.get('screen').height;\n\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 const { vh, vw } = useViewport();\n\n const measuredScreenHeight = vh(100);\n const screenWidth = vw(100);\n const halfScreenWidth = vw(50);\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 style={[styles.animatedContainer, pagerStyle, pager]}>\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[selectedIndex] && (\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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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"1 Thread Reply": "",
|
|
4
4
|
"Allow access to your Gallery": "Autoriser l'accès à votre galerie",
|
|
5
5
|
"Allow camera access in device settings": "Autoriser l'accès à la caméra dans les paramètres de l'appareil",
|
|
6
|
-
"Also send to channel": "
|
|
6
|
+
"Also send to channel": "",
|
|
7
7
|
"Are you sure you want to permanently delete this message?": "",
|
|
8
8
|
"Block User": "",
|
|
9
9
|
"Cancel": "",
|
|
@@ -21,42 +21,42 @@
|
|
|
21
21
|
"Error loading channel list...": "",
|
|
22
22
|
"Error loading messages for this channel...": "",
|
|
23
23
|
"Error while loading, please reload/refresh": "",
|
|
24
|
-
"File type not supported": "
|
|
24
|
+
"File type not supported": "",
|
|
25
25
|
"Flag": "",
|
|
26
26
|
"Flag Message": "",
|
|
27
27
|
"Flag action failed either due to a network issue or the message is already flagged": "",
|
|
28
28
|
"How about sending your first message to a friend?": "",
|
|
29
29
|
"Instant Commands": "",
|
|
30
30
|
"Let's start chatting!": "",
|
|
31
|
-
"Links are disabled": "
|
|
32
|
-
"Loading channels...": "
|
|
33
|
-
"Loading messages...": "
|
|
34
|
-
"Loading...": "
|
|
35
|
-
"Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "
|
|
31
|
+
"Links are disabled": "",
|
|
32
|
+
"Loading channels...": "",
|
|
33
|
+
"Loading messages...": "",
|
|
34
|
+
"Loading...": "",
|
|
35
|
+
"Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "",
|
|
36
36
|
"Message Reactions": "",
|
|
37
37
|
"Message deleted": "",
|
|
38
38
|
"Message flagged": "",
|
|
39
39
|
"Mute User": "",
|
|
40
|
-
"Not supported": "
|
|
40
|
+
"Not supported": "",
|
|
41
41
|
"Nothing yet...": "",
|
|
42
42
|
"Ok": "",
|
|
43
|
-
"Only visible to you": "
|
|
43
|
+
"Only visible to you": "",
|
|
44
44
|
"Open Settings": "Ouvrir les paramètres",
|
|
45
|
-
"Photo": "",
|
|
45
|
+
"Photo": "Photo",
|
|
46
46
|
"Photos and Videos": "Photos et vidéos",
|
|
47
47
|
"Pin to Conversation": "",
|
|
48
|
-
"Pinned by": "
|
|
48
|
+
"Pinned by": "",
|
|
49
49
|
"Please enable access to your photos and videos so you can share them.": "Veuillez autoriser l'accès à vos photos et vidéos afin de pouvoir les partager.",
|
|
50
50
|
"Please select a channel first": "Veuillez d'abord selectionnez un canal",
|
|
51
51
|
"Reconnecting...": "",
|
|
52
52
|
"Reply": "",
|
|
53
|
-
"Reply to Message": "",
|
|
53
|
+
"Reply to Message": "Répondre au message",
|
|
54
54
|
"Resend": "",
|
|
55
|
-
"Search GIFs": "",
|
|
55
|
+
"Search GIFs": "Rechercher des GIF",
|
|
56
56
|
"Select More Photos": "Sélectionner plus de photos",
|
|
57
|
-
"Send a message": "",
|
|
58
|
-
"Sending links is not allowed in this conversation": "
|
|
59
|
-
"Slow mode ON": "",
|
|
57
|
+
"Send a message": "Envoyer un message",
|
|
58
|
+
"Sending links is not allowed in this conversation": "",
|
|
59
|
+
"Slow mode ON": "Mode lent activé",
|
|
60
60
|
"The message has been reported to a moderator.": "",
|
|
61
61
|
"Thread Reply": "",
|
|
62
62
|
"Unblock User": "",
|
|
@@ -64,13 +64,13 @@
|
|
|
64
64
|
"Unmute User": "",
|
|
65
65
|
"Unpin from Conversation": "",
|
|
66
66
|
"Unread Messages": "",
|
|
67
|
-
"Video": "",
|
|
67
|
+
"Video": "Vidéo",
|
|
68
68
|
"You": "",
|
|
69
|
-
"You can't send messages in this channel": "
|
|
70
|
-
"{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "
|
|
69
|
+
"You can't send messages in this channel": "",
|
|
70
|
+
"{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "",
|
|
71
71
|
"{{ index }} of {{ photoLength }}": "{{ index }} sur {{ photoLength }}",
|
|
72
72
|
"{{ replyCount }} Replies": "{{ replyCount }} Réponses",
|
|
73
73
|
"{{ replyCount }} Thread Replies": "",
|
|
74
|
-
"{{ user }} is typing": "
|
|
74
|
+
"{{ user }} is typing": "",
|
|
75
75
|
"🏙 Attachment...": ""
|
|
76
76
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"1 Thread Reply": "",
|
|
4
4
|
"Allow access to your Gallery": "अपनी गैलरी तक पहुँचने की अनुमति दें",
|
|
5
5
|
"Allow camera access in device settings": "डिवाइस सेटिंग्स में कैमरा एक्सेस की अनुमति दें",
|
|
6
|
-
"Also send to channel": "
|
|
6
|
+
"Also send to channel": "",
|
|
7
7
|
"Are you sure you want to permanently delete this message?": "",
|
|
8
8
|
"Block User": "",
|
|
9
9
|
"Cancel": "",
|
|
@@ -14,49 +14,49 @@
|
|
|
14
14
|
"Device camera is used to take photos or videos.": "डिवाइस कैमरे का उपयोग फ़ोटो या वीडियो लेने के लिए किया जाता है।",
|
|
15
15
|
"Do you want to send a copy of this message to a moderator for further investigation?": "",
|
|
16
16
|
"Edit Message": "",
|
|
17
|
-
"Editing Message": "
|
|
17
|
+
"Editing Message": "",
|
|
18
18
|
"Emoji matching": "",
|
|
19
19
|
"Empty message...": "",
|
|
20
20
|
"Error loading": "",
|
|
21
21
|
"Error loading channel list...": "",
|
|
22
22
|
"Error loading messages for this channel...": "",
|
|
23
23
|
"Error while loading, please reload/refresh": "",
|
|
24
|
-
"File type not supported": "
|
|
24
|
+
"File type not supported": "",
|
|
25
25
|
"Flag": "",
|
|
26
26
|
"Flag Message": "",
|
|
27
27
|
"Flag action failed either due to a network issue or the message is already flagged": "",
|
|
28
28
|
"How about sending your first message to a friend?": "",
|
|
29
29
|
"Instant Commands": "",
|
|
30
30
|
"Let's start chatting!": "",
|
|
31
|
-
"Links are disabled": "
|
|
32
|
-
"Loading channels...": "
|
|
33
|
-
"Loading messages...": "
|
|
34
|
-
"Loading...": "
|
|
35
|
-
"Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "
|
|
31
|
+
"Links are disabled": "",
|
|
32
|
+
"Loading channels...": "",
|
|
33
|
+
"Loading messages...": "",
|
|
34
|
+
"Loading...": "",
|
|
35
|
+
"Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "",
|
|
36
36
|
"Message Reactions": "",
|
|
37
37
|
"Message deleted": "",
|
|
38
38
|
"Message flagged": "",
|
|
39
39
|
"Mute User": "",
|
|
40
|
-
"Not supported": "
|
|
40
|
+
"Not supported": "",
|
|
41
41
|
"Nothing yet...": "",
|
|
42
42
|
"Ok": "",
|
|
43
|
-
"Only visible to you": "
|
|
43
|
+
"Only visible to you": "",
|
|
44
44
|
"Open Settings": "सेटिंग्स खोलें",
|
|
45
|
-
"Photo": "",
|
|
45
|
+
"Photo": "तस्वीर",
|
|
46
46
|
"Photos and Videos": "तस्वीरें और वीडियों",
|
|
47
47
|
"Pin to Conversation": "",
|
|
48
|
-
"Pinned by": "
|
|
48
|
+
"Pinned by": "",
|
|
49
49
|
"Please enable access to your photos and videos so you can share them.": "कृपया अपनी फ़ोटो और वीडियो तक पहुंच सक्षम करें ताकि आप उन्हें साझा कर सकें।",
|
|
50
50
|
"Please select a channel first": "कृपया पहले एक चैनल चुनें",
|
|
51
51
|
"Reconnecting...": "",
|
|
52
52
|
"Reply": "",
|
|
53
|
-
"Reply to Message": "",
|
|
53
|
+
"Reply to Message": "संदेश का जवाब दें",
|
|
54
54
|
"Resend": "",
|
|
55
|
-
"Search GIFs": "",
|
|
55
|
+
"Search GIFs": "GIF खोजें",
|
|
56
56
|
"Select More Photos": "अधिक फ़ोटो चुनें",
|
|
57
|
-
"Send a message": "",
|
|
58
|
-
"Sending links is not allowed in this conversation": "
|
|
59
|
-
"Slow mode ON": "",
|
|
57
|
+
"Send a message": "एक संदेश भेजें",
|
|
58
|
+
"Sending links is not allowed in this conversation": "",
|
|
59
|
+
"Slow mode ON": "स्लो मोड चालू",
|
|
60
60
|
"The message has been reported to a moderator.": "",
|
|
61
61
|
"Thread Reply": "",
|
|
62
62
|
"Unblock User": "",
|
|
@@ -64,13 +64,13 @@
|
|
|
64
64
|
"Unmute User": "",
|
|
65
65
|
"Unpin from Conversation": "",
|
|
66
66
|
"Unread Messages": "",
|
|
67
|
-
"Video": "",
|
|
67
|
+
"Video": "वीडियो",
|
|
68
68
|
"You": "",
|
|
69
|
-
"You can't send messages in this channel": "
|
|
70
|
-
"{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "
|
|
69
|
+
"You can't send messages in this channel": "",
|
|
70
|
+
"{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "",
|
|
71
71
|
"{{ index }} of {{ photoLength }}": "{{ index }} / {{ photoLength }}",
|
|
72
72
|
"{{ replyCount }} Replies": "{{ replyCount }} रिप्लाई",
|
|
73
73
|
"{{ replyCount }} Thread Replies": "",
|
|
74
|
-
"{{ user }} is typing": "
|
|
74
|
+
"{{ user }} is typing": "",
|
|
75
75
|
"🏙 Attachment...": ""
|
|
76
76
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"1 Thread Reply": "",
|
|
4
4
|
"Allow access to your Gallery": "Consenti l'accesso alla tua galleria",
|
|
5
5
|
"Allow camera access in device settings": "Consenti l'accesso alla fotocamera nelle impostazioni del dispositivo",
|
|
6
|
-
"Also send to channel": "
|
|
6
|
+
"Also send to channel": "",
|
|
7
7
|
"Are you sure you want to permanently delete this message?": "",
|
|
8
8
|
"Block User": "",
|
|
9
9
|
"Cancel": "",
|
|
@@ -14,49 +14,49 @@
|
|
|
14
14
|
"Device camera is used to take photos or videos.": "La fotocamera del dispositivo viene utilizzata per scattare foto o video.",
|
|
15
15
|
"Do you want to send a copy of this message to a moderator for further investigation?": "",
|
|
16
16
|
"Edit Message": "",
|
|
17
|
-
"Editing Message": "
|
|
17
|
+
"Editing Message": "",
|
|
18
18
|
"Emoji matching": "",
|
|
19
19
|
"Empty message...": "",
|
|
20
20
|
"Error loading": "",
|
|
21
21
|
"Error loading channel list...": "",
|
|
22
22
|
"Error loading messages for this channel...": "",
|
|
23
23
|
"Error while loading, please reload/refresh": "",
|
|
24
|
-
"File type not supported": "
|
|
24
|
+
"File type not supported": "",
|
|
25
25
|
"Flag": "",
|
|
26
26
|
"Flag Message": "",
|
|
27
27
|
"Flag action failed either due to a network issue or the message is already flagged": "",
|
|
28
28
|
"How about sending your first message to a friend?": "",
|
|
29
29
|
"Instant Commands": "",
|
|
30
30
|
"Let's start chatting!": "",
|
|
31
|
-
"Links are disabled": "
|
|
32
|
-
"Loading channels...": "
|
|
33
|
-
"Loading messages...": "
|
|
34
|
-
"Loading...": "
|
|
35
|
-
"Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "
|
|
31
|
+
"Links are disabled": "",
|
|
32
|
+
"Loading channels...": "",
|
|
33
|
+
"Loading messages...": "",
|
|
34
|
+
"Loading...": "",
|
|
35
|
+
"Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "",
|
|
36
36
|
"Message Reactions": "",
|
|
37
37
|
"Message deleted": "",
|
|
38
38
|
"Message flagged": "",
|
|
39
39
|
"Mute User": "",
|
|
40
|
-
"Not supported": "
|
|
40
|
+
"Not supported": "",
|
|
41
41
|
"Nothing yet...": "",
|
|
42
42
|
"Ok": "",
|
|
43
|
-
"Only visible to you": "
|
|
43
|
+
"Only visible to you": "",
|
|
44
44
|
"Open Settings": "Apri Impostazioni",
|
|
45
|
-
"Photo": "",
|
|
45
|
+
"Photo": "Foto",
|
|
46
46
|
"Photos and Videos": "Foto e Video",
|
|
47
47
|
"Pin to Conversation": "",
|
|
48
|
-
"Pinned by": "
|
|
48
|
+
"Pinned by": "",
|
|
49
49
|
"Please enable access to your photos and videos so you can share them.": "Abilita l'accesso alle tue foto e ai tuoi video in modo da poterli condividere.",
|
|
50
50
|
"Please select a channel first": "Seleziona un canale",
|
|
51
51
|
"Reconnecting...": "",
|
|
52
52
|
"Reply": "",
|
|
53
|
-
"Reply to Message": "",
|
|
53
|
+
"Reply to Message": "Rispondi al messaggio",
|
|
54
54
|
"Resend": "",
|
|
55
|
-
"Search GIFs": "",
|
|
55
|
+
"Search GIFs": "Cerca GIF",
|
|
56
56
|
"Select More Photos": "Seleziona Altre foto",
|
|
57
|
-
"Send a message": "",
|
|
58
|
-
"Sending links is not allowed in this conversation": "
|
|
59
|
-
"Slow mode ON": "",
|
|
57
|
+
"Send a message": "Mandare un messaggio",
|
|
58
|
+
"Sending links is not allowed in this conversation": "",
|
|
59
|
+
"Slow mode ON": "Slowmode attiva",
|
|
60
60
|
"The message has been reported to a moderator.": "",
|
|
61
61
|
"Thread Reply": "",
|
|
62
62
|
"Unblock User": "",
|
|
@@ -64,13 +64,13 @@
|
|
|
64
64
|
"Unmute User": "",
|
|
65
65
|
"Unpin from Conversation": "",
|
|
66
66
|
"Unread Messages": "",
|
|
67
|
-
"Video": "",
|
|
67
|
+
"Video": "Video",
|
|
68
68
|
"You": "",
|
|
69
|
-
"You can't send messages in this channel": "
|
|
70
|
-
"{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "
|
|
69
|
+
"You can't send messages in this channel": "",
|
|
70
|
+
"{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "",
|
|
71
71
|
"{{ index }} of {{ photoLength }}": "{{ index }} di {{ photoLength }}",
|
|
72
72
|
"{{ replyCount }} Replies": "{{ replyCount }} Risposte",
|
|
73
73
|
"{{ replyCount }} Thread Replies": "",
|
|
74
|
-
"{{ user }} is typing": "
|
|
74
|
+
"{{ user }} is typing": "",
|
|
75
75
|
"🏙 Attachment...": ""
|
|
76
76
|
}
|