stream-chat-react-native-core 5.25.0-beta.4 → 5.25.0-beta.5

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 (59) hide show
  1. package/lib/commonjs/components/ImageGallery/ImageGallery.js +22 -21
  2. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  3. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +2 -0
  4. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
  5. package/lib/commonjs/i18n/en.json +1 -1
  6. package/lib/commonjs/i18n/es.json +32 -32
  7. package/lib/commonjs/i18n/fr.json +32 -32
  8. package/lib/commonjs/i18n/he.json +32 -32
  9. package/lib/commonjs/i18n/hi.json +32 -32
  10. package/lib/commonjs/i18n/it.json +32 -32
  11. package/lib/commonjs/i18n/ja.json +32 -32
  12. package/lib/commonjs/i18n/ko.json +32 -32
  13. package/lib/commonjs/i18n/nl.json +32 -32
  14. package/lib/commonjs/i18n/ru.json +32 -32
  15. package/lib/commonjs/i18n/tr.json +32 -32
  16. package/lib/commonjs/version.json +1 -1
  17. package/lib/module/components/ImageGallery/ImageGallery.js +22 -21
  18. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  19. package/lib/module/components/ImageGallery/components/ImageGrid.js +2 -0
  20. package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
  21. package/lib/module/i18n/en.json +1 -1
  22. package/lib/module/i18n/es.json +32 -32
  23. package/lib/module/i18n/fr.json +32 -32
  24. package/lib/module/i18n/he.json +32 -32
  25. package/lib/module/i18n/hi.json +32 -32
  26. package/lib/module/i18n/it.json +32 -32
  27. package/lib/module/i18n/ja.json +32 -32
  28. package/lib/module/i18n/ko.json +32 -32
  29. package/lib/module/i18n/nl.json +32 -32
  30. package/lib/module/i18n/ru.json +32 -32
  31. package/lib/module/i18n/tr.json +32 -32
  32. package/lib/module/version.json +1 -1
  33. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts +1 -0
  34. package/lib/typescript/i18n/en.json +1 -1
  35. package/lib/typescript/i18n/es.json +32 -32
  36. package/lib/typescript/i18n/fr.json +32 -32
  37. package/lib/typescript/i18n/he.json +32 -32
  38. package/lib/typescript/i18n/hi.json +32 -32
  39. package/lib/typescript/i18n/it.json +32 -32
  40. package/lib/typescript/i18n/ja.json +32 -32
  41. package/lib/typescript/i18n/ko.json +32 -32
  42. package/lib/typescript/i18n/nl.json +32 -32
  43. package/lib/typescript/i18n/ru.json +32 -32
  44. package/lib/typescript/i18n/tr.json +32 -32
  45. package/package.json +1 -1
  46. package/src/components/ImageGallery/ImageGallery.tsx +3 -1
  47. package/src/components/ImageGallery/components/ImageGrid.tsx +2 -2
  48. package/src/i18n/en.json +1 -1
  49. package/src/i18n/es.json +32 -32
  50. package/src/i18n/fr.json +32 -32
  51. package/src/i18n/he.json +32 -32
  52. package/src/i18n/hi.json +32 -32
  53. package/src/i18n/it.json +32 -32
  54. package/src/i18n/ja.json +32 -32
  55. package/src/i18n/ko.json +32 -32
  56. package/src/i18n/nl.json +32 -32
  57. package/src/i18n/ru.json +32 -32
  58. package/src/i18n/tr.json +32 -32
  59. package/src/version.json +1 -1
@@ -138,7 +138,7 @@ var ImageGallery = function ImageGallery(props) {
138
138
  var _cur$attachments;
139
139
  var attachmentImages = ((_cur$attachments = cur.attachments) == null ? void 0 : _cur$attachments.filter(function (attachment) {
140
140
  var _attachment$giphy, _attachment$giphy$gip;
141
- return attachment.type === 'giphy' && (((_attachment$giphy = attachment.giphy) == null ? void 0 : (_attachment$giphy$gip = _attachment$giphy[giphyVersion]) == null ? void 0 : _attachment$giphy$gip.url) || attachment.thumb_url || attachment.image_url) || attachment.type === 'image' && !attachment.title_link && !attachment.og_scrape_url && (0, _getUrlOfImageAttachment.getUrlOfImageAttachment)(attachment) || (0, _native.isVideoPackageAvailable)() && attachment.type === 'video';
141
+ return attachment.type === 'giphy' && (((_attachment$giphy = attachment.giphy) == null ? void 0 : (_attachment$giphy$gip = _attachment$giphy[giphyVersion]) == null ? void 0 : _attachment$giphy$gip.url) || attachment.thumb_url || attachment.image_url) || attachment.type === 'image' && !attachment.title_link && !attachment.og_scrape_url && (0, _getUrlOfImageAttachment.getUrlOfImageAttachment)(attachment) || ((0, _native.isVideoPackageAvailable)() && attachment.type) === 'video' && attachment.thumb_url;
142
142
  }).reverse()) || [];
143
143
  var attachmentPhotos = attachmentImages.map(function (a) {
144
144
  var _a$giphy, _a$giphy$giphyVersion;
@@ -156,6 +156,7 @@ var ImageGallery = function ImageGallery(props) {
156
156
  original_width: a.original_width,
157
157
  paused: isInitiallyPaused,
158
158
  progress: 0,
159
+ thumb_url: a.thumb_url,
159
160
  type: a.type,
160
161
  uri: a.type === 'giphy' ? giphyURL : (0, _getResizedImageUrl.getResizedImageUrl)({
161
162
  height: screenHeight,
@@ -328,7 +329,7 @@ var ImageGallery = function ImageGallery(props) {
328
329
  __self: _this,
329
330
  __source: {
330
331
  fileName: _jsxFileName,
331
- lineNumber: 539,
332
+ lineNumber: 540,
332
333
  columnNumber: 5
333
334
  }
334
335
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -336,7 +337,7 @@ var ImageGallery = function ImageGallery(props) {
336
337
  __self: _this,
337
338
  __source: {
338
339
  fileName: _jsxFileName,
339
- lineNumber: 544,
340
+ lineNumber: 545,
340
341
  columnNumber: 7
341
342
  }
342
343
  }), _react["default"].createElement(_reactNativeGestureHandler.TapGestureHandler, {
@@ -348,7 +349,7 @@ var ImageGallery = function ImageGallery(props) {
348
349
  __self: _this,
349
350
  __source: {
350
351
  fileName: _jsxFileName,
351
- lineNumber: 545,
352
+ lineNumber: 546,
352
353
  columnNumber: 7
353
354
  }
354
355
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -356,7 +357,7 @@ var ImageGallery = function ImageGallery(props) {
356
357
  __self: _this,
357
358
  __source: {
358
359
  fileName: _jsxFileName,
359
- lineNumber: 552,
360
+ lineNumber: 553,
360
361
  columnNumber: 9
361
362
  }
362
363
  }, _react["default"].createElement(_reactNativeGestureHandler.TapGestureHandler, {
@@ -370,7 +371,7 @@ var ImageGallery = function ImageGallery(props) {
370
371
  __self: _this,
371
372
  __source: {
372
373
  fileName: _jsxFileName,
373
- lineNumber: 553,
374
+ lineNumber: 554,
374
375
  columnNumber: 11
375
376
  }
376
377
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -378,7 +379,7 @@ var ImageGallery = function ImageGallery(props) {
378
379
  __self: _this,
379
380
  __source: {
380
381
  fileName: _jsxFileName,
381
- lineNumber: 562,
382
+ lineNumber: 563,
382
383
  columnNumber: 13
383
384
  }
384
385
  }, _react["default"].createElement(_reactNativeGestureHandler.PinchGestureHandler, {
@@ -388,7 +389,7 @@ var ImageGallery = function ImageGallery(props) {
388
389
  __self: _this,
389
390
  __source: {
390
391
  fileName: _jsxFileName,
391
- lineNumber: 563,
392
+ lineNumber: 564,
392
393
  columnNumber: 15
393
394
  }
394
395
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -396,7 +397,7 @@ var ImageGallery = function ImageGallery(props) {
396
397
  __self: _this,
397
398
  __source: {
398
399
  fileName: _jsxFileName,
399
- lineNumber: 568,
400
+ lineNumber: 569,
400
401
  columnNumber: 17
401
402
  }
402
403
  }, _react["default"].createElement(_reactNativeGestureHandler.PanGestureHandler, {
@@ -409,7 +410,7 @@ var ImageGallery = function ImageGallery(props) {
409
410
  __self: _this,
410
411
  __source: {
411
412
  fileName: _jsxFileName,
412
- lineNumber: 569,
413
+ lineNumber: 570,
413
414
  columnNumber: 19
414
415
  }
415
416
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -417,7 +418,7 @@ var ImageGallery = function ImageGallery(props) {
417
418
  __self: _this,
418
419
  __source: {
419
420
  fileName: _jsxFileName,
420
- lineNumber: 577,
421
+ lineNumber: 578,
421
422
  columnNumber: 21
422
423
  }
423
424
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -425,7 +426,7 @@ var ImageGallery = function ImageGallery(props) {
425
426
  __self: _this,
426
427
  __source: {
427
428
  fileName: _jsxFileName,
428
- lineNumber: 578,
429
+ lineNumber: 579,
429
430
  columnNumber: 23
430
431
  }
431
432
  }, imageGalleryAttachments.map(function (photo, i) {
@@ -458,7 +459,7 @@ var ImageGallery = function ImageGallery(props) {
458
459
  __self: _this,
459
460
  __source: {
460
461
  fileName: _jsxFileName,
461
- lineNumber: 581,
462
+ lineNumber: 582,
462
463
  columnNumber: 29
463
464
  }
464
465
  }) : _react["default"].createElement(_AnimatedGalleryImage.AnimatedGalleryImage, {
@@ -482,7 +483,7 @@ var ImageGallery = function ImageGallery(props) {
482
483
  __self: _this,
483
484
  __source: {
484
485
  fileName: _jsxFileName,
485
- lineNumber: 610,
486
+ lineNumber: 611,
486
487
  columnNumber: 29
487
488
  }
488
489
  });
@@ -494,7 +495,7 @@ var ImageGallery = function ImageGallery(props) {
494
495
  __self: _this,
495
496
  __source: {
496
497
  fileName: _jsxFileName,
497
- lineNumber: 643,
498
+ lineNumber: 644,
498
499
  columnNumber: 7
499
500
  }
500
501
  })), imageGalleryAttachments[selectedIndex] && _react["default"].createElement(_ImageGalleryFooter.ImageGalleryFooter, (0, _extends2["default"])({
@@ -514,7 +515,7 @@ var ImageGallery = function ImageGallery(props) {
514
515
  __self: _this,
515
516
  __source: {
516
517
  fileName: _jsxFileName,
517
- lineNumber: 651,
518
+ lineNumber: 652,
518
519
  columnNumber: 9
519
520
  }
520
521
  })), _react["default"].createElement(_ImageGalleryOverlay.ImageGalleryOverlay, {
@@ -524,14 +525,14 @@ var ImageGallery = function ImageGallery(props) {
524
525
  __self: _this,
525
526
  __source: {
526
527
  fileName: _jsxFileName,
527
- lineNumber: 668,
528
+ lineNumber: 669,
528
529
  columnNumber: 7
529
530
  }
530
531
  }), _react["default"].createElement(_bottomSheet.BottomSheetModalProvider, {
531
532
  __self: _this,
532
533
  __source: {
533
534
  fileName: _jsxFileName,
534
- lineNumber: 673,
535
+ lineNumber: 674,
535
536
  columnNumber: 7
536
537
  }
537
538
  }, _react["default"].createElement(_bottomSheet.BottomSheetModal, {
@@ -544,7 +545,7 @@ var ImageGallery = function ImageGallery(props) {
544
545
  __self: _this,
545
546
  __source: {
546
547
  fileName: _jsxFileName,
547
- lineNumber: 678,
548
+ lineNumber: 679,
548
549
  columnNumber: 13
549
550
  }
550
551
  }));
@@ -559,7 +560,7 @@ var ImageGallery = function ImageGallery(props) {
559
560
  __self: _this,
560
561
  __source: {
561
562
  fileName: _jsxFileName,
562
- lineNumber: 674,
563
+ lineNumber: 675,
563
564
  columnNumber: 9
564
565
  }
565
566
  }, _react["default"].createElement(_ImageGrid.ImageGrid, (0, _extends2["default"])({
@@ -571,7 +572,7 @@ var ImageGallery = function ImageGallery(props) {
571
572
  __self: _this,
572
573
  __source: {
573
574
  fileName: _jsxFileName,
574
- lineNumber: 689,
575
+ lineNumber: 690,
575
576
  columnNumber: 11
576
577
  }
577
578
  })))));
@@ -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[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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"}
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' && attachment.thumb_url),\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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"}
@@ -44,6 +44,7 @@ var GridImage = function GridImage(_ref) {
44
44
  restItem = (0, _objectWithoutProperties2["default"])(item, _excluded);
45
45
  var numberOfImageGalleryGridColumns = restItem.numberOfImageGalleryGridColumns,
46
46
  selectAndClose = restItem.selectAndClose,
47
+ thumb_url = restItem.thumb_url,
47
48
  type = restItem.type,
48
49
  uri = restItem.uri;
49
50
  var size = vw(100) / (numberOfImageGalleryGridColumns || 3) - 2;
@@ -73,6 +74,7 @@ var GridImage = function GridImage(_ref) {
73
74
  columnNumber: 9
74
75
  }
75
76
  }, _react["default"].createElement(_VideoThumbnail.VideoThumbnail, {
77
+ thumb_url: thumb_url,
76
78
  __self: _this,
77
79
  __source: {
78
80
  fileName: _jsxFileName,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_bottomSheet","_VideoThumbnail","_ThemeContext","_useViewport2","_excluded","_this","_jsxFileName","styles","StyleSheet","create","avatarImage","borderRadius","height","width","avatarImageWrapper","borderWidth","margin","contentContainer","flexGrow","image","GridImage","_ref","item","_useTheme","useTheme","gridImage","theme","imageGallery","grid","_useViewport","useViewport","vw","imageComponent","restItem","_objectWithoutProperties2","numberOfImageGalleryGridColumns","selectAndClose","type","uri","size","createElement","TouchableOpacity","accessibilityLabel","onPress","__self","__source","fileName","lineNumber","columnNumber","View","style","VideoThumbnail","Image","source","renderItem","_ref2","ImageGrid","props","avatarComponent","closeGridView","photos","setSelectedMessage","_useTheme2","_useTheme2$theme","white","colors","_useTheme2$theme$imag","container","imageGridItems","map","photo","_extends2","messageId","url","BottomSheetFlatList","contentContainerStyle","backgroundColor","data","keyExtractor","index","numColumns","exports","displayName"],"sources":["ImageGrid.tsx"],"sourcesContent":["import React from 'react';\nimport { Image, StyleSheet, View } from 'react-native';\n\nimport { BottomSheetFlatList, TouchableOpacity } from '@gorhom/bottom-sheet';\n\nimport { VideoThumbnail } from '../../../components/Attachment/VideoThumbnail';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useViewport } from '../../../hooks/useViewport';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nimport type { Photo } from '../ImageGallery';\n\nconst styles = StyleSheet.create({\n avatarImage: {\n borderRadius: 22,\n height: 22,\n width: 22,\n },\n avatarImageWrapper: {\n borderRadius: 24,\n borderWidth: 1,\n height: 24,\n margin: 8,\n width: 24,\n },\n contentContainer: {\n flexGrow: 1,\n },\n image: {\n margin: 1,\n },\n});\n\nexport type ImageGalleryGridImageComponent<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ({\n item,\n}: {\n item: Photo<StreamChatGenerics> & {\n selectAndClose: () => void;\n numberOfImageGalleryGridColumns?: number;\n };\n}) => React.ReactElement | null;\n\nexport type ImageGalleryGridImageComponents<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n avatarComponent?: ImageGalleryGridImageComponent<StreamChatGenerics>;\n imageComponent?: ImageGalleryGridImageComponent<StreamChatGenerics>;\n};\n\nexport type GridImageItem<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Photo<StreamChatGenerics> &\n ImageGalleryGridImageComponents<StreamChatGenerics> & {\n selectAndClose: () => void;\n numberOfImageGalleryGridColumns?: number;\n };\n\nconst GridImage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n item,\n}: {\n item: GridImageItem<StreamChatGenerics>;\n}) => {\n const {\n theme: {\n imageGallery: {\n grid: { gridImage },\n },\n },\n } = useTheme();\n const { vw } = useViewport();\n const { imageComponent, ...restItem } = item;\n\n const { numberOfImageGalleryGridColumns, selectAndClose, type, uri } = restItem;\n\n const size = vw(100) / (numberOfImageGalleryGridColumns || 3) - 2;\n\n if (imageComponent) {\n return imageComponent({ item: restItem });\n }\n\n return (\n <TouchableOpacity accessibilityLabel='Grid Image' onPress={selectAndClose}>\n {type === 'video' ? (\n <View style={[styles.image, { height: size, width: size }, gridImage]}>\n <VideoThumbnail />\n </View>\n ) : (\n <Image source={{ uri }} style={[styles.image, { height: size, width: size }]} />\n )}\n </TouchableOpacity>\n );\n};\n\nconst renderItem = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n item,\n}: {\n item: GridImageItem<StreamChatGenerics>;\n}) => <GridImage item={item} />;\n\nexport type ImageGridType<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryGridImageComponents<StreamChatGenerics> & {\n closeGridView: () => void;\n photos: Photo<StreamChatGenerics>[];\n setSelectedMessage: React.Dispatch<\n React.SetStateAction<\n | {\n messageId?: string | undefined;\n url?: string | undefined;\n }\n | undefined\n >\n >;\n numberOfImageGalleryGridColumns?: number;\n};\n\nexport const ImageGrid = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGridType<StreamChatGenerics>,\n) => {\n const {\n avatarComponent,\n closeGridView,\n imageComponent,\n numberOfImageGalleryGridColumns,\n photos,\n setSelectedMessage,\n } = props;\n\n const {\n theme: {\n colors: { white },\n imageGallery: {\n grid: { container, contentContainer },\n },\n },\n } = useTheme();\n\n const imageGridItems = photos.map((photo) => ({\n ...photo,\n avatarComponent,\n imageComponent,\n numberOfImageGalleryGridColumns,\n selectAndClose: () => {\n setSelectedMessage({ messageId: photo.messageId, url: photo.uri });\n closeGridView();\n },\n }));\n\n return (\n <BottomSheetFlatList<GridImageItem<StreamChatGenerics>>\n accessibilityLabel='Image Grid'\n contentContainerStyle={[\n styles.contentContainer,\n { backgroundColor: white },\n contentContainer,\n ]}\n data={imageGridItems as GridImageItem<StreamChatGenerics>[]}\n keyExtractor={(item, index) => `${item.uri}-${index}`}\n numColumns={numberOfImageGalleryGridColumns || 3}\n renderItem={renderItem}\n style={container}\n />\n );\n};\n\nImageGrid.displayName = 'ImageGrid{imageGallery{grid}}';\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,YAAA,GAAAF,OAAA;AAEA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AAAyD,IAAAM,SAAA;AAAA,IAAAC,KAAA;EAAAC,YAAA;AAKzD,IAAMC,MAAM,GAAGC,uBAAU,CAACC,MAAM,CAAC;EAC/BC,WAAW,EAAE;IACXC,YAAY,EAAE,EAAE;IAChBC,MAAM,EAAE,EAAE;IACVC,KAAK,EAAE;EACT,CAAC;EACDC,kBAAkB,EAAE;IAClBH,YAAY,EAAE,EAAE;IAChBI,WAAW,EAAE,CAAC;IACdH,MAAM,EAAE,EAAE;IACVI,MAAM,EAAE,CAAC;IACTH,KAAK,EAAE;EACT,CAAC;EACDI,gBAAgB,EAAE;IAChBC,QAAQ,EAAE;EACZ,CAAC;EACDC,KAAK,EAAE;IACLH,MAAM,EAAE;EACV;AACF,CAAC,CAAC;AA4BF,IAAMI,SAAS,GAAG,SAAZA,SAASA,CAAAC,IAAA,EAMT;EAAA,IAHJC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAIJ,IAAAC,SAAA,GAMI,IAAAC,sBAAQ,EAAC,CAAC;IAHAC,SAAS,GAAAF,SAAA,CAFrBG,KAAK,CACHC,YAAY,CACVC,IAAI,CAAIH,SAAS;EAIvB,IAAAI,YAAA,GAAe,IAAAC,yBAAW,EAAC,CAAC;IAApBC,EAAE,GAAAF,YAAA,CAAFE,EAAE;EACV,IAAQC,cAAc,GAAkBV,IAAI,CAApCU,cAAc;IAAKC,QAAQ,OAAAC,yBAAA,aAAKZ,IAAI,EAAAlB,SAAA;EAE5C,IAAQ+B,+BAA+B,GAAgCF,QAAQ,CAAvEE,+BAA+B;IAAEC,cAAc,GAAgBH,QAAQ,CAAtCG,cAAc;IAAEC,IAAI,GAAUJ,QAAQ,CAAtBI,IAAI;IAAEC,GAAG,GAAKL,QAAQ,CAAhBK,GAAG;EAElE,IAAMC,IAAI,GAAGR,EAAE,CAAC,GAAG,CAAC,IAAII,+BAA+B,IAAI,CAAC,CAAC,GAAG,CAAC;EAEjE,IAAIH,cAAc,EAAE;IAClB,OAAOA,cAAc,CAAC;MAAEV,IAAI,EAAEW;IAAS,CAAC,CAAC;EAC3C;EAEA,OACErC,MAAA,YAAA4C,aAAA,CAACxC,YAAA,CAAAyC,gBAAgB;IAACC,kBAAkB,EAAC,YAAY;IAACC,OAAO,EAAEP,cAAe;IAAAQ,MAAA,EAAAvC,KAAA;IAAAwC,QAAA;MAAAC,QAAA,EAAAxC,YAAA;MAAAyC,UAAA;MAAAC,YAAA;IAAA;EAAA,GACvEX,IAAI,KAAK,OAAO,GACfzC,MAAA,YAAA4C,aAAA,CAACzC,YAAA,CAAAkD,IAAI;IAACC,KAAK,EAAE,CAAC3C,MAAM,CAACY,KAAK,EAAE;MAAEP,MAAM,EAAE2B,IAAI;MAAE1B,KAAK,EAAE0B;IAAK,CAAC,EAAEd,SAAS,CAAE;IAAAmB,MAAA,EAAAvC,KAAA;IAAAwC,QAAA;MAAAC,QAAA,EAAAxC,YAAA;MAAAyC,UAAA;MAAAC,YAAA;IAAA;EAAA,GACpEpD,MAAA,YAAA4C,aAAA,CAACvC,eAAA,CAAAkD,cAAc;IAAAP,MAAA,EAAAvC,KAAA;IAAAwC,QAAA;MAAAC,QAAA,EAAAxC,YAAA;MAAAyC,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CACb,CAAC,GAEPpD,MAAA,YAAA4C,aAAA,CAACzC,YAAA,CAAAqD,KAAK;IAACC,MAAM,EAAE;MAAEf,GAAG,EAAHA;IAAI,CAAE;IAACY,KAAK,EAAE,CAAC3C,MAAM,CAACY,KAAK,EAAE;MAAEP,MAAM,EAAE2B,IAAI;MAAE1B,KAAK,EAAE0B;IAAK,CAAC,CAAE;IAAAK,MAAA,EAAAvC,KAAA;IAAAwC,QAAA;MAAAC,QAAA,EAAAxC,YAAA;MAAAyC,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CAEjE,CAAC;AAEvB,CAAC;AAED,IAAMM,UAAU,GAAG,SAAbA,UAAUA,CAAAC,KAAA;EAAA,IAGdjC,IAAI,GAAAiC,KAAA,CAAJjC,IAAI;EAAA,OAGA1B,MAAA,YAAA4C,aAAA,CAACpB,SAAS;IAACE,IAAI,EAAEA,IAAK;IAAAsB,MAAA,EAAAvC,KAAA;IAAAwC,QAAA;MAAAC,QAAA,EAAAxC,YAAA;MAAAyC,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CAAC;AAAA;AAmBxB,IAAMQ,SAAS,GAAG,SAAZA,SAASA,CAGpBC,KAAwC,EACrC;EACH,IACEC,eAAe,GAMbD,KAAK,CANPC,eAAe;IACfC,aAAa,GAKXF,KAAK,CALPE,aAAa;IACb3B,cAAc,GAIZyB,KAAK,CAJPzB,cAAc;IACdG,+BAA+B,GAG7BsB,KAAK,CAHPtB,+BAA+B;IAC/ByB,MAAM,GAEJH,KAAK,CAFPG,MAAM;IACNC,kBAAkB,GAChBJ,KAAK,CADPI,kBAAkB;EAGpB,IAAAC,UAAA,GAOI,IAAAtC,sBAAQ,EAAC,CAAC;IAAAuC,gBAAA,GAAAD,UAAA,CANZpC,KAAK;IACOsC,KAAK,GAAAD,gBAAA,CAAfE,MAAM,CAAID,KAAK;IAAAE,qBAAA,GAAAH,gBAAA,CACfpC,YAAY,CACVC,IAAI;IAAIuC,SAAS,GAAAD,qBAAA,CAATC,SAAS;IAAElD,gBAAgB,GAAAiD,qBAAA,CAAhBjD,gBAAgB;EAKzC,IAAMmD,cAAc,GAAGR,MAAM,CAACS,GAAG,CAAC,UAACC,KAAK;IAAA,WAAAC,SAAA,iBACnCD,KAAK;MACRZ,eAAe,EAAfA,eAAe;MACf1B,cAAc,EAAdA,cAAc;MACdG,+BAA+B,EAA/BA,+BAA+B;MAC/BC,cAAc,EAAE,SAAAA,eAAA,EAAM;QACpByB,kBAAkB,CAAC;UAAEW,SAAS,EAAEF,KAAK,CAACE,SAAS;UAAEC,GAAG,EAAEH,KAAK,CAAChC;QAAI,CAAC,CAAC;QAClEqB,aAAa,CAAC,CAAC;MACjB;IAAC;EAAA,CACD,CAAC;EAEH,OACE/D,MAAA,YAAA4C,aAAA,CAACxC,YAAA,CAAA0E,mBAAmB;IAClBhC,kBAAkB,EAAC,YAAY;IAC/BiC,qBAAqB,EAAE,CACrBpE,MAAM,CAACU,gBAAgB,EACvB;MAAE2D,eAAe,EAAEZ;IAAM,CAAC,EAC1B/C,gBAAgB,CAChB;IACF4D,IAAI,EAAET,cAAsD;IAC5DU,YAAY,EAAE,SAAAA,aAACxD,IAAI,EAAEyD,KAAK;MAAA,OAAQzD,IAAI,CAACgB,GAAG,SAAIyC,KAAK;IAAA,CAAG;IACtDC,UAAU,EAAE7C,+BAA+B,IAAI,CAAE;IACjDmB,UAAU,EAAEA,UAAW;IACvBJ,KAAK,EAAEiB,SAAU;IAAAvB,MAAA,EAAAvC,KAAA;IAAAwC,QAAA;MAAAC,QAAA,EAAAxC,YAAA;MAAAyC,UAAA;MAAAC,YAAA;IAAA;EAAA,CAClB,CAAC;AAEN,CAAC;AAACiC,OAAA,CAAAzB,SAAA,GAAAA,SAAA;AAEFA,SAAS,CAAC0B,WAAW,GAAG,+BAA+B"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_bottomSheet","_VideoThumbnail","_ThemeContext","_useViewport2","_excluded","_this","_jsxFileName","styles","StyleSheet","create","avatarImage","borderRadius","height","width","avatarImageWrapper","borderWidth","margin","contentContainer","flexGrow","image","GridImage","_ref","item","_useTheme","useTheme","gridImage","theme","imageGallery","grid","_useViewport","useViewport","vw","imageComponent","restItem","_objectWithoutProperties2","numberOfImageGalleryGridColumns","selectAndClose","thumb_url","type","uri","size","createElement","TouchableOpacity","accessibilityLabel","onPress","__self","__source","fileName","lineNumber","columnNumber","View","style","VideoThumbnail","Image","source","renderItem","_ref2","ImageGrid","props","avatarComponent","closeGridView","photos","setSelectedMessage","_useTheme2","_useTheme2$theme","white","colors","_useTheme2$theme$imag","container","imageGridItems","map","photo","_extends2","messageId","url","BottomSheetFlatList","contentContainerStyle","backgroundColor","data","keyExtractor","index","numColumns","exports","displayName"],"sources":["ImageGrid.tsx"],"sourcesContent":["import React from 'react';\nimport { Image, StyleSheet, View } from 'react-native';\n\nimport { BottomSheetFlatList, TouchableOpacity } from '@gorhom/bottom-sheet';\n\nimport { VideoThumbnail } from '../../../components/Attachment/VideoThumbnail';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useViewport } from '../../../hooks/useViewport';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nimport type { Photo } from '../ImageGallery';\n\nconst styles = StyleSheet.create({\n avatarImage: {\n borderRadius: 22,\n height: 22,\n width: 22,\n },\n avatarImageWrapper: {\n borderRadius: 24,\n borderWidth: 1,\n height: 24,\n margin: 8,\n width: 24,\n },\n contentContainer: {\n flexGrow: 1,\n },\n image: {\n margin: 1,\n },\n});\n\nexport type ImageGalleryGridImageComponent<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ({\n item,\n}: {\n item: Photo<StreamChatGenerics> & {\n selectAndClose: () => void;\n numberOfImageGalleryGridColumns?: number;\n };\n}) => React.ReactElement | null;\n\nexport type ImageGalleryGridImageComponents<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n avatarComponent?: ImageGalleryGridImageComponent<StreamChatGenerics>;\n imageComponent?: ImageGalleryGridImageComponent<StreamChatGenerics>;\n};\n\nexport type GridImageItem<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Photo<StreamChatGenerics> &\n ImageGalleryGridImageComponents<StreamChatGenerics> & {\n selectAndClose: () => void;\n numberOfImageGalleryGridColumns?: number;\n };\n\nconst GridImage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n item,\n}: {\n item: GridImageItem<StreamChatGenerics>;\n}) => {\n const {\n theme: {\n imageGallery: {\n grid: { gridImage },\n },\n },\n } = useTheme();\n const { vw } = useViewport();\n const { imageComponent, ...restItem } = item;\n\n const { numberOfImageGalleryGridColumns, selectAndClose, thumb_url, type, uri } = restItem;\n\n const size = vw(100) / (numberOfImageGalleryGridColumns || 3) - 2;\n\n if (imageComponent) {\n return imageComponent({ item: restItem });\n }\n\n return (\n <TouchableOpacity accessibilityLabel='Grid Image' onPress={selectAndClose}>\n {type === 'video' ? (\n <View style={[styles.image, { height: size, width: size }, gridImage]}>\n <VideoThumbnail thumb_url={thumb_url} />\n </View>\n ) : (\n <Image source={{ uri }} style={[styles.image, { height: size, width: size }]} />\n )}\n </TouchableOpacity>\n );\n};\n\nconst renderItem = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n item,\n}: {\n item: GridImageItem<StreamChatGenerics>;\n}) => <GridImage item={item} />;\n\nexport type ImageGridType<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryGridImageComponents<StreamChatGenerics> & {\n closeGridView: () => void;\n photos: Photo<StreamChatGenerics>[];\n setSelectedMessage: React.Dispatch<\n React.SetStateAction<\n | {\n messageId?: string | undefined;\n url?: string | undefined;\n }\n | undefined\n >\n >;\n numberOfImageGalleryGridColumns?: number;\n};\n\nexport const ImageGrid = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGridType<StreamChatGenerics>,\n) => {\n const {\n avatarComponent,\n closeGridView,\n imageComponent,\n numberOfImageGalleryGridColumns,\n photos,\n setSelectedMessage,\n } = props;\n\n const {\n theme: {\n colors: { white },\n imageGallery: {\n grid: { container, contentContainer },\n },\n },\n } = useTheme();\n\n const imageGridItems = photos.map((photo) => ({\n ...photo,\n avatarComponent,\n imageComponent,\n numberOfImageGalleryGridColumns,\n selectAndClose: () => {\n setSelectedMessage({ messageId: photo.messageId, url: photo.uri });\n closeGridView();\n },\n }));\n\n return (\n <BottomSheetFlatList<GridImageItem<StreamChatGenerics>>\n accessibilityLabel='Image Grid'\n contentContainerStyle={[\n styles.contentContainer,\n { backgroundColor: white },\n contentContainer,\n ]}\n data={imageGridItems as GridImageItem<StreamChatGenerics>[]}\n keyExtractor={(item, index) => `${item.uri}-${index}`}\n numColumns={numberOfImageGalleryGridColumns || 3}\n renderItem={renderItem}\n style={container}\n />\n );\n};\n\nImageGrid.displayName = 'ImageGrid{imageGallery{grid}}';\n"],"mappings":"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"}
@@ -26,7 +26,7 @@
26
26
  "File type not supported": "File type not supported",
27
27
  "Flag": "Flag",
28
28
  "Flag Message": "Flag Message",
29
- "Flag action failed either due to a network issue or the message is already flagged": "Flag action failed either due to a network issue or the message is already flagged",
29
+ "Flag action failed either due to a network issue or the message is already flagged": "Flag action failed either due to a network issue or the message is already flagged.",
30
30
  "How about sending your first message to a friend?": "How about sending your first message to a friend?",
31
31
  "Instant Commands": "Instant Commands",
32
32
  "Let's start chatting!": "Let's start chatting!",