stream-chat-react-native-core 5.27.0-beta.10 → 5.27.0-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +1 -1
  2. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  3. package/lib/commonjs/components/Chat/hooks/handleEventToSyncDB.js +100 -37
  4. package/lib/commonjs/components/Chat/hooks/handleEventToSyncDB.js.map +1 -1
  5. package/lib/commonjs/components/Chat/hooks/useSyncDatabase.js +3 -1
  6. package/lib/commonjs/components/Chat/hooks/useSyncDatabase.js.map +1 -1
  7. package/lib/commonjs/components/ImageGallery/ImageGallery.js +39 -21
  8. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  9. package/lib/commonjs/i18n/es.json +22 -22
  10. package/lib/commonjs/i18n/fr.json +22 -22
  11. package/lib/commonjs/i18n/he.json +22 -22
  12. package/lib/commonjs/i18n/hi.json +22 -22
  13. package/lib/commonjs/i18n/it.json +22 -22
  14. package/lib/commonjs/i18n/ja.json +22 -22
  15. package/lib/commonjs/i18n/ko.json +22 -22
  16. package/lib/commonjs/i18n/nl.json +22 -22
  17. package/lib/commonjs/i18n/pt-BR.json +22 -22
  18. package/lib/commonjs/i18n/ru.json +22 -22
  19. package/lib/commonjs/i18n/tr.json +22 -22
  20. package/lib/commonjs/store/apis/upsertChannelDataFromChannel.js +21 -0
  21. package/lib/commonjs/store/apis/upsertChannelDataFromChannel.js.map +1 -0
  22. package/lib/commonjs/store/mappers/mapChannelToStorable.js +63 -0
  23. package/lib/commonjs/store/mappers/mapChannelToStorable.js.map +1 -0
  24. package/lib/commonjs/utils/DBSyncManager.js +73 -68
  25. package/lib/commonjs/utils/DBSyncManager.js.map +1 -1
  26. package/lib/commonjs/version.json +1 -1
  27. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +1 -1
  28. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  29. package/lib/module/components/Chat/hooks/handleEventToSyncDB.js +100 -37
  30. package/lib/module/components/Chat/hooks/handleEventToSyncDB.js.map +1 -1
  31. package/lib/module/components/Chat/hooks/useSyncDatabase.js +3 -1
  32. package/lib/module/components/Chat/hooks/useSyncDatabase.js.map +1 -1
  33. package/lib/module/components/ImageGallery/ImageGallery.js +39 -21
  34. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  35. package/lib/module/i18n/es.json +22 -22
  36. package/lib/module/i18n/fr.json +22 -22
  37. package/lib/module/i18n/he.json +22 -22
  38. package/lib/module/i18n/hi.json +22 -22
  39. package/lib/module/i18n/it.json +22 -22
  40. package/lib/module/i18n/ja.json +22 -22
  41. package/lib/module/i18n/ko.json +22 -22
  42. package/lib/module/i18n/nl.json +22 -22
  43. package/lib/module/i18n/pt-BR.json +22 -22
  44. package/lib/module/i18n/ru.json +22 -22
  45. package/lib/module/i18n/tr.json +22 -22
  46. package/lib/module/store/apis/upsertChannelDataFromChannel.js +21 -0
  47. package/lib/module/store/apis/upsertChannelDataFromChannel.js.map +1 -0
  48. package/lib/module/store/mappers/mapChannelToStorable.js +63 -0
  49. package/lib/module/store/mappers/mapChannelToStorable.js.map +1 -0
  50. package/lib/module/utils/DBSyncManager.js +73 -68
  51. package/lib/module/utils/DBSyncManager.js.map +1 -1
  52. package/lib/module/version.json +1 -1
  53. package/lib/typescript/components/Chat/hooks/handleEventToSyncDB.d.ts +4 -2
  54. package/lib/typescript/i18n/es.json +22 -22
  55. package/lib/typescript/i18n/fr.json +22 -22
  56. package/lib/typescript/i18n/he.json +22 -22
  57. package/lib/typescript/i18n/hi.json +22 -22
  58. package/lib/typescript/i18n/it.json +22 -22
  59. package/lib/typescript/i18n/ja.json +22 -22
  60. package/lib/typescript/i18n/ko.json +22 -22
  61. package/lib/typescript/i18n/nl.json +22 -22
  62. package/lib/typescript/i18n/pt-BR.json +22 -22
  63. package/lib/typescript/i18n/ru.json +22 -22
  64. package/lib/typescript/i18n/tr.json +22 -22
  65. package/lib/typescript/store/apis/upsertChannelDataFromChannel.d.ts +6 -0
  66. package/lib/typescript/store/mappers/mapChannelToStorable.d.ts +4 -0
  67. package/lib/typescript/utils/DBSyncManager.d.ts +1 -1
  68. package/package.json +1 -1
  69. package/src/components/AttachmentPicker/AttachmentPicker.tsx +1 -1
  70. package/src/components/Chat/hooks/handleEventToSyncDB.ts +132 -46
  71. package/src/components/Chat/hooks/useSyncDatabase.ts +1 -1
  72. package/src/components/ImageGallery/ImageGallery.tsx +25 -2
  73. package/src/i18n/es.json +22 -22
  74. package/src/i18n/fr.json +22 -22
  75. package/src/i18n/he.json +22 -22
  76. package/src/i18n/hi.json +22 -22
  77. package/src/i18n/it.json +22 -22
  78. package/src/i18n/ja.json +22 -22
  79. package/src/i18n/ko.json +22 -22
  80. package/src/i18n/nl.json +22 -22
  81. package/src/i18n/pt-BR.json +22 -22
  82. package/src/i18n/ru.json +22 -22
  83. package/src/i18n/tr.json +22 -22
  84. package/src/store/apis/upsertChannelDataFromChannel.ts +25 -0
  85. package/src/store/mappers/mapChannelToStorable.ts +68 -0
  86. package/src/utils/DBSyncManager.ts +7 -3
  87. package/src/version.json +1 -1
@@ -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 thumb_url: a.thumb_url,\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 thumb_url?: string;\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","normalizeSnapPoints","input","snapPoints","value","map","snapPoint","Math","max","numericValue","Number","replace","isPercentage","includes","isNaN","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","React","useMemo","bottomSheetModalRef","useRef","_useState5","_useState6","currentBottomSheetIndex","setCurrentBottomSheetIndex","animatedBottomSheetIndex","useSharedValue","screenTranslateY","showScreen","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","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","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","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, BottomSheetProps } 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\ntype SnapPoints = BottomSheetProps['snapPoints'];\n\nconst normalizeSnapPoints = (input: SnapPoints): SnapPoints => {\n const snapPoints = input ? ('value' in input ? input.value : input) : [];\n\n return snapPoints.map((snapPoint) => {\n if (typeof snapPoint === 'number') {\n return Math.max(0, snapPoint);\n } else {\n const numericValue = Number(snapPoint.replace('%', ''));\n const isPercentage = snapPoint.includes('%');\n\n if (isNaN(numericValue)) {\n return 0;\n } else if (isPercentage) {\n return `${Math.max(0, numericValue)}%`;\n } else {\n return Math.max(0, numericValue);\n }\n }\n });\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 thumb_url: a.thumb_url,\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={normalizeSnapPoints(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 thumb_url?: string;\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,9 +1,9 @@
1
1
  {
2
- "1 Reply": "",
2
+ "1 Reply": "1 respuesta",
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": "También enviar al canal",
6
+ "Also send to channel": "",
7
7
  "Are you sure you want to permanently delete this message?": "¿Estás seguro de que deseas eliminar permanentemente este mensaje?",
8
8
  "Are you sure?": "",
9
9
  "Block User": "Bloquear usuario",
@@ -18,29 +18,29 @@
18
18
  "Edit Message": "Editar mensaje",
19
19
  "Editing Message": "",
20
20
  "Emoji matching": "",
21
- "Empty message...": "",
22
- "Error loading": "Error al cargar",
23
- "Error loading channel list...": "",
21
+ "Empty message...": "Mensaje vacío...",
22
+ "Error loading": "",
23
+ "Error loading channel list...": "Error al cargar la lista de canales...",
24
24
  "Error loading messages for this channel...": "Error al cargar los mensajes de este canal...",
25
- "Error while loading, please reload/refresh": "",
25
+ "Error while loading, please reload/refresh": "Error al cargar, por favor recarga/actualiza",
26
26
  "File type not supported": "",
27
27
  "Flag": "Reportar",
28
28
  "Flag Message": "Reportar mensaje",
29
29
  "Flag action failed either due to a network issue or the message is already flagged": "El reporte falló debido a un problema de red o el mensaje ya fue reportado.",
30
- "How about sending your first message to a friend?": "",
30
+ "How about sending your first message to a friend?": "¿Qué tal enviar tu primer mensaje a un amigo?",
31
31
  "Instant Commands": "",
32
- "Let's start chatting!": "",
33
- "Links are disabled": "",
34
- "Loading channels...": "",
35
- "Loading messages...": "",
36
- "Loading...": "",
37
- "Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "",
32
+ "Let's start chatting!": "¡Empecemos a charlar!",
33
+ "Links are disabled": "Los enlaces están desactivados",
34
+ "Loading channels...": "Cargando canales...",
35
+ "Loading messages...": "Cargando mensajes...",
36
+ "Loading...": "Cargando...",
37
+ "Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "El archivo supera el tamaño máximo permitido. Por favor, selecciona un archivo menor a {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.",
38
38
  "Message Reactions": "Reacciones al mensaje",
39
39
  "Message deleted": "Mensaje eliminado",
40
40
  "Message flagged": "Mensaje reportado",
41
41
  "Mute User": "Silenciar usuario",
42
42
  "Not supported": "",
43
- "Nothing yet...": "",
43
+ "Nothing yet...": "Aún no hay nada...",
44
44
  "Ok": "Aceptar",
45
45
  "Only visible to you": "",
46
46
  "Open Settings": "",
@@ -54,26 +54,26 @@
54
54
  "Reply": "Responder",
55
55
  "Reply to Message": "",
56
56
  "Resend": "Reenviar",
57
- "Search GIFs": "",
57
+ "Search GIFs": "Buscar GIFs",
58
58
  "Select More Photos": "",
59
59
  "Send Anyway": "",
60
- "Send a message": "",
61
- "Sending links is not allowed in this conversation": "",
62
- "Slow mode ON": "",
60
+ "Send a message": "Enviar un mensaje",
61
+ "Sending links is not allowed in this conversation": "No está permitido enviar enlaces en esta conversación",
62
+ "Slow mode ON": "Modo lento ACTIVADO",
63
63
  "The message has been reported to a moderator.": "El mensaje ha sido reportado a un moderador.",
64
64
  "Thread Reply": "Respuesta de hilo",
65
65
  "Unblock User": "Desbloquear usuario",
66
66
  "Unknown User": "",
67
67
  "Unmute User": "Activar sonido del usuario",
68
68
  "Unpin from Conversation": "Desmarcar de la conversación",
69
- "Unread Messages": "",
69
+ "Unread Messages": "Mensajes no leídos",
70
70
  "Video": "Video",
71
- "You": "",
71
+ "You": "",
72
72
  "You can't send messages in this channel": "",
73
73
  "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} y {{ nonSelfUserLength }} más están escribiendo",
74
74
  "{{ index }} of {{ photoLength }}": "",
75
- "{{ replyCount }} Replies": "",
75
+ "{{ replyCount }} Replies": "{{ replyCount }} Respuestas",
76
76
  "{{ replyCount }} Thread Replies": "",
77
77
  "{{ user }} is typing": "{{ user }} está escribiendo",
78
- "🏙 Attachment...": ""
78
+ "🏙 Attachment...": "🏙 Adjunto..."
79
79
  }
@@ -1,9 +1,9 @@
1
1
  {
2
- "1 Reply": "",
2
+ "1 Reply": "1 Réponse",
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": "Envoyer également à la chaîne",
6
+ "Also send to channel": "",
7
7
  "Are you sure you want to permanently delete this message?": "Êtes-vous sûr de vouloir supprimer définitivement ce message?",
8
8
  "Are you sure?": "",
9
9
  "Block User": "Bloquer un utilisateur",
@@ -18,29 +18,29 @@
18
18
  "Edit Message": "Éditer un message",
19
19
  "Editing Message": "",
20
20
  "Emoji matching": "",
21
- "Empty message...": "",
22
- "Error loading": "Erreur lors du chargement",
23
- "Error loading channel list...": "",
21
+ "Empty message...": "Message vide...",
22
+ "Error loading": "",
23
+ "Error loading channel list...": "Erreur lors du chargement de la liste de canaux...",
24
24
  "Error loading messages for this channel...": "Erreur lors du chargement des messages de ce canal...",
25
- "Error while loading, please reload/refresh": "",
25
+ "Error while loading, please reload/refresh": "Erreur lors du chargement, veuillez recharger/rafraîchir",
26
26
  "File type not supported": "",
27
27
  "Flag": "Signaler",
28
28
  "Flag Message": "Signaler le message",
29
29
  "Flag action failed either due to a network issue or the message is already flagged": "L'action de signalisation a échoué en raison d'un problème de réseau ou le message est déjà signalé.",
30
- "How about sending your first message to a friend?": "",
30
+ "How about sending your first message to a friend?": "Et si vous envoyiez votre premier message à un ami ?",
31
31
  "Instant Commands": "",
32
- "Let's start chatting!": "",
33
- "Links are disabled": "",
34
- "Loading channels...": "",
35
- "Loading messages...": "",
36
- "Loading...": "",
37
- "Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "",
32
+ "Let's start chatting!": "Commençons à discuter !",
33
+ "Links are disabled": "Links are disabled",
34
+ "Loading channels...": "Chargement des canaux...",
35
+ "Loading messages...": "Chargement des messages...",
36
+ "Loading...": "Chargement...",
37
+ "Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "Taille maximale de téléchargement de fichier atteinte. Veuillez télécharger un fichier inférieur à {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} Mo.",
38
38
  "Message Reactions": "Réactions aux messages",
39
39
  "Message deleted": "Message supprimé",
40
40
  "Message flagged": "Message signalé",
41
41
  "Mute User": "Utilisateur muet",
42
42
  "Not supported": "",
43
- "Nothing yet...": "",
43
+ "Nothing yet...": "Aucun message...",
44
44
  "Ok": "Ok",
45
45
  "Only visible to you": "",
46
46
  "Open Settings": "",
@@ -54,26 +54,26 @@
54
54
  "Reply": "Répondre",
55
55
  "Reply to Message": "",
56
56
  "Resend": "Renvoyer",
57
- "Search GIFs": "",
57
+ "Search GIFs": "Rechercher des GIF",
58
58
  "Select More Photos": "",
59
59
  "Send Anyway": "",
60
- "Send a message": "",
61
- "Sending links is not allowed in this conversation": "",
62
- "Slow mode ON": "",
60
+ "Send a message": "Envoyer un message",
61
+ "Sending links is not allowed in this conversation": "Sending links is not allowed in this conversation",
62
+ "Slow mode ON": "Mode lent activé",
63
63
  "The message has been reported to a moderator.": "Le message a été signalé à un modérateur.",
64
64
  "Thread Reply": "Réponse à la discussion",
65
65
  "Unblock User": "Débloquer Utilisateur",
66
66
  "Unknown User": "",
67
67
  "Unmute User": "Activer le son de Utilisateur",
68
68
  "Unpin from Conversation": "Décrocher de la conversation",
69
- "Unread Messages": "",
69
+ "Unread Messages": "Messages non lus",
70
70
  "Video": "Vidéo",
71
- "You": "",
71
+ "You": "Toi",
72
72
  "You can't send messages in this channel": "",
73
73
  "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} et {{ nonSelfUserLength }} autres sont en train d'écrire",
74
74
  "{{ index }} of {{ photoLength }}": "",
75
- "{{ replyCount }} Replies": "",
75
+ "{{ replyCount }} Replies": "{{ replyCount }} Réponses",
76
76
  "{{ replyCount }} Thread Replies": "",
77
77
  "{{ user }} is typing": "{{ user }} est en train d'écrire",
78
- "🏙 Attachment...": ""
78
+ "🏙 Attachment...": "🏙 Pièce jointe..."
79
79
  }
@@ -1,9 +1,9 @@
1
1
  {
2
- "1 Reply": "",
2
+ "1 Reply": "תגובה אחת",
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
  "Are you sure?": "",
9
9
  "Block User": "חסום משתמש",
@@ -18,29 +18,29 @@
18
18
  "Edit Message": "ערוך הודעה",
19
19
  "Editing Message": "",
20
20
  "Emoji matching": "",
21
- "Empty message...": "",
22
- "Error loading": "שגיאה ארעה בעת הטעינה",
23
- "Error loading channel list...": "",
21
+ "Empty message...": "הודעה ריקה...",
22
+ "Error loading": "",
23
+ "Error loading channel list...": "שגיאה ארעה בטעינת השיחות...",
24
24
  "Error loading messages for this channel...": "שגיאה ארעה בטעינת הודעות עבור שיחה זאת...",
25
- "Error while loading, please reload/refresh": "",
25
+ "Error while loading, please reload/refresh": "שגיאה ארעה בזמן הטעינה, אנא טען מחדש/רענן",
26
26
  "File type not supported": "",
27
27
  "Flag": "סמן",
28
28
  "Flag Message": "סמן הודעה",
29
29
  "Flag action failed either due to a network issue or the message is already flagged": "פעולת הסימון נכשלה בגלל בעיית רשת או שההודעה כבר סומנה.",
30
- "How about sending your first message to a friend?": "",
30
+ "How about sending your first message to a friend?": "מה דעתך לשלוח את ההודעה הראשונה שלך לחבר?",
31
31
  "Instant Commands": "",
32
- "Let's start chatting!": "",
33
- "Links are disabled": "",
34
- "Loading channels...": "",
35
- "Loading messages...": "",
36
- "Loading...": "",
37
- "Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "",
32
+ "Let's start chatting!": "בואו נתחיל לשוחח!",
33
+ "Links are disabled": "הקישורים מבוטלים",
34
+ "Loading channels...": "השיחות בטעינה...",
35
+ "Loading messages...": "ההודעות בטעינה..",
36
+ "Loading...": "טוען...",
37
+ "Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "הגעת למגבלת העלאת גודל הקובץ המקסימלית. אנא העלה קובץ מתחת ל-{{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB",
38
38
  "Message Reactions": "תגובות להודעה",
39
39
  "Message deleted": "ההודעה נמחקה",
40
40
  "Message flagged": "ההודעה סומנה",
41
41
  "Mute User": "השתק/י משתמש",
42
42
  "Not supported": "",
43
- "Nothing yet...": "",
43
+ "Nothing yet...": "אינפורמציה תתקבל בהמשך...",
44
44
  "Ok": "אוקיי",
45
45
  "Only visible to you": "",
46
46
  "Open Settings": "",
@@ -54,26 +54,26 @@
54
54
  "Reply": "השב/י",
55
55
  "Reply to Message": "",
56
56
  "Resend": "שלח/י שוב",
57
- "Search GIFs": "",
57
+ "Search GIFs": "חפש/י GIFs",
58
58
  "Select More Photos": "",
59
59
  "Send Anyway": "",
60
- "Send a message": "",
61
- "Sending links is not allowed in this conversation": "",
62
- "Slow mode ON": "",
60
+ "Send a message": "שלח/י הודעה",
61
+ "Sending links is not allowed in this conversation": "שליחת קישורים אינה מותרת בשיחה זו",
62
+ "Slow mode ON": "מצב איטי מופעל",
63
63
  "The message has been reported to a moderator.": "ההודעה דווחה למנהל",
64
64
  "Thread Reply": "הגב/י בשרשור",
65
65
  "Unblock User": "בטל/י חסימת משתמש",
66
66
  "Unknown User": "",
67
67
  "Unmute User": "בטל/י השתקת משתמש",
68
68
  "Unpin from Conversation": "בטל/י הצמדה לשיחה",
69
- "Unread Messages": "",
69
+ "Unread Messages": "הודעות שטרם נקרו",
70
70
  "Video": "וִידֵאוֹ",
71
- "You": "",
71
+ "You": "את/ה",
72
72
  "You can't send messages in this channel": "",
73
73
  "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} ו-{{ nonSelfUserLength }} משתמש/ים אחר/ים מקלידים",
74
74
  "{{ index }} of {{ photoLength }}": "",
75
- "{{ replyCount }} Replies": "",
75
+ "{{ replyCount }} Replies": "{{ replyCount }} תגובות",
76
76
  "{{ replyCount }} Thread Replies": "",
77
77
  "{{ user }} is typing": "{{ user }} מקליד/ה",
78
- "🏙 Attachment...": ""
78
+ "🏙 Attachment...": "🏙 קובץ מצורף..."
79
79
  }