stream-chat-react-native-core 4.7.0-beta.4 → 4.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Attachment/Attachment.js +23 -13
- package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
- package/lib/commonjs/components/Attachment/Card.js +17 -24
- package/lib/commonjs/components/Attachment/Card.js.map +1 -1
- package/lib/commonjs/components/Attachment/FileAttachment.js +10 -17
- package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
- package/lib/commonjs/components/Attachment/Gallery.js +22 -10
- package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
- package/lib/commonjs/components/Attachment/utils/openUrlSafely.js +54 -0
- package/lib/commonjs/components/Attachment/utils/openUrlSafely.js.map +1 -0
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +101 -57
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/ImageGallery.js +23 -22
- package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +8 -8
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js +10 -7
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +12 -11
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/native.js +8 -2
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Attachment.js +23 -13
- package/lib/module/components/Attachment/Attachment.js.map +1 -1
- package/lib/module/components/Attachment/Card.js +17 -24
- package/lib/module/components/Attachment/Card.js.map +1 -1
- package/lib/module/components/Attachment/FileAttachment.js +10 -17
- package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
- package/lib/module/components/Attachment/Gallery.js +22 -10
- package/lib/module/components/Attachment/Gallery.js.map +1 -1
- package/lib/module/components/Attachment/utils/openUrlSafely.js +54 -0
- package/lib/module/components/Attachment/utils/openUrlSafely.js.map +1 -0
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js +101 -57
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/module/components/ImageGallery/ImageGallery.js +23 -22
- package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +8 -8
- package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
- package/lib/module/components/Message/Message.js +10 -7
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +12 -11
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/native.js +8 -2
- package/lib/module/native.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Attachment/__tests__/openUrlSafely.test.d.ts +1 -0
- package/lib/typescript/components/Attachment/utils/openUrlSafely.d.ts +1 -0
- package/lib/typescript/components/AttachmentPicker/AttachmentPicker.d.ts +11 -0
- package/lib/typescript/native.d.ts +1 -0
- package/package.json +1 -1
- package/src/components/Attachment/Attachment.tsx +4 -1
- package/src/components/Attachment/Card.tsx +2 -4
- package/src/components/Attachment/FileAttachment.tsx +2 -4
- package/src/components/Attachment/Gallery.tsx +17 -4
- package/src/components/Attachment/__tests__/Attachment.test.js +0 -39
- package/src/components/Attachment/__tests__/openUrlSafely.test.ts +48 -0
- package/src/components/Attachment/utils/openUrlSafely.ts +17 -0
- package/src/components/AttachmentPicker/AttachmentPicker.tsx +24 -28
- package/src/components/ImageGallery/ImageGallery.tsx +7 -3
- package/src/components/ImageGallery/components/AnimatedGalleryVideo.tsx +16 -13
- package/src/components/Message/Message.tsx +5 -2
- package/src/contexts/messageInputContext/MessageInputContext.tsx +4 -3
- package/src/native.ts +3 -1
- package/src/version.json +1 -1
- package/lib/commonjs/components/Attachment/hooks/useGoToURL.js +0 -42
- package/lib/commonjs/components/Attachment/hooks/useGoToURL.js.map +0 -1
- package/lib/module/components/Attachment/hooks/useGoToURL.js +0 -42
- package/lib/module/components/Attachment/hooks/useGoToURL.js.map +0 -1
- package/lib/typescript/components/Attachment/hooks/useGoToURL.d.ts +0 -2
- package/src/components/Attachment/hooks/useGoToURL.ts +0 -27
|
@@ -45,6 +45,8 @@ var _OverlayContext = require("../../contexts/overlayContext/OverlayContext");
|
|
|
45
45
|
|
|
46
46
|
var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
|
|
47
47
|
|
|
48
|
+
var _native = require("../../native");
|
|
49
|
+
|
|
48
50
|
var _getResizedImageUrl = require("../../utils/getResizedImageUrl");
|
|
49
51
|
|
|
50
52
|
var _getUrlOfImageAttachment = require("../../utils/getUrlOfImageAttachment");
|
|
@@ -191,11 +193,10 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
191
193
|
var photos = images.reduce(function (acc, cur) {
|
|
192
194
|
var _cur$attachments;
|
|
193
195
|
|
|
194
|
-
console.log(cur);
|
|
195
196
|
var attachmentImages = ((_cur$attachments = cur.attachments) == null ? void 0 : _cur$attachments.filter(function (attachment) {
|
|
196
197
|
var _attachment$giphy, _attachment$giphy$gip;
|
|
197
198
|
|
|
198
|
-
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) || attachment.type === 'video';
|
|
199
|
+
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';
|
|
199
200
|
})) || [];
|
|
200
201
|
var attachmentPhotos = attachmentImages.map(function (a) {
|
|
201
202
|
var imageUrl = (0, _getUrlOfImageAttachment.getUrlOfImageAttachment)(a);
|
|
@@ -373,7 +374,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
373
374
|
__self: _this,
|
|
374
375
|
__source: {
|
|
375
376
|
fileName: _jsxFileName,
|
|
376
|
-
lineNumber:
|
|
377
|
+
lineNumber: 496,
|
|
377
378
|
columnNumber: 5
|
|
378
379
|
}
|
|
379
380
|
}, _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -381,7 +382,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
381
382
|
__self: _this,
|
|
382
383
|
__source: {
|
|
383
384
|
fileName: _jsxFileName,
|
|
384
|
-
lineNumber:
|
|
385
|
+
lineNumber: 497,
|
|
385
386
|
columnNumber: 7
|
|
386
387
|
}
|
|
387
388
|
}), _react["default"].createElement(_reactNativeGestureHandler.TapGestureHandler, {
|
|
@@ -393,7 +394,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
393
394
|
__self: _this,
|
|
394
395
|
__source: {
|
|
395
396
|
fileName: _jsxFileName,
|
|
396
|
-
lineNumber:
|
|
397
|
+
lineNumber: 498,
|
|
397
398
|
columnNumber: 7
|
|
398
399
|
}
|
|
399
400
|
}, _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -401,7 +402,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
401
402
|
__self: _this,
|
|
402
403
|
__source: {
|
|
403
404
|
fileName: _jsxFileName,
|
|
404
|
-
lineNumber:
|
|
405
|
+
lineNumber: 505,
|
|
405
406
|
columnNumber: 9
|
|
406
407
|
}
|
|
407
408
|
}, _react["default"].createElement(_reactNativeGestureHandler.TapGestureHandler, {
|
|
@@ -415,7 +416,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
415
416
|
__self: _this,
|
|
416
417
|
__source: {
|
|
417
418
|
fileName: _jsxFileName,
|
|
418
|
-
lineNumber:
|
|
419
|
+
lineNumber: 506,
|
|
419
420
|
columnNumber: 11
|
|
420
421
|
}
|
|
421
422
|
}, _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -423,7 +424,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
423
424
|
__self: _this,
|
|
424
425
|
__source: {
|
|
425
426
|
fileName: _jsxFileName,
|
|
426
|
-
lineNumber:
|
|
427
|
+
lineNumber: 515,
|
|
427
428
|
columnNumber: 13
|
|
428
429
|
}
|
|
429
430
|
}, _react["default"].createElement(_reactNativeGestureHandler.PinchGestureHandler, {
|
|
@@ -433,7 +434,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
433
434
|
__self: _this,
|
|
434
435
|
__source: {
|
|
435
436
|
fileName: _jsxFileName,
|
|
436
|
-
lineNumber:
|
|
437
|
+
lineNumber: 516,
|
|
437
438
|
columnNumber: 15
|
|
438
439
|
}
|
|
439
440
|
}, _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -441,7 +442,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
441
442
|
__self: _this,
|
|
442
443
|
__source: {
|
|
443
444
|
fileName: _jsxFileName,
|
|
444
|
-
lineNumber:
|
|
445
|
+
lineNumber: 521,
|
|
445
446
|
columnNumber: 17
|
|
446
447
|
}
|
|
447
448
|
}, _react["default"].createElement(_reactNativeGestureHandler.PanGestureHandler, {
|
|
@@ -454,7 +455,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
454
455
|
__self: _this,
|
|
455
456
|
__source: {
|
|
456
457
|
fileName: _jsxFileName,
|
|
457
|
-
lineNumber:
|
|
458
|
+
lineNumber: 522,
|
|
458
459
|
columnNumber: 19
|
|
459
460
|
}
|
|
460
461
|
}, _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -462,7 +463,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
462
463
|
__self: _this,
|
|
463
464
|
__source: {
|
|
464
465
|
fileName: _jsxFileName,
|
|
465
|
-
lineNumber:
|
|
466
|
+
lineNumber: 530,
|
|
466
467
|
columnNumber: 21
|
|
467
468
|
}
|
|
468
469
|
}, _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -476,7 +477,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
476
477
|
__self: _this,
|
|
477
478
|
__source: {
|
|
478
479
|
fileName: _jsxFileName,
|
|
479
|
-
lineNumber:
|
|
480
|
+
lineNumber: 531,
|
|
480
481
|
columnNumber: 23
|
|
481
482
|
}
|
|
482
483
|
}, photos.map(function (photo, i) {
|
|
@@ -507,7 +508,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
507
508
|
__self: _this,
|
|
508
509
|
__source: {
|
|
509
510
|
fileName: _jsxFileName,
|
|
510
|
-
lineNumber:
|
|
511
|
+
lineNumber: 548,
|
|
511
512
|
columnNumber: 29
|
|
512
513
|
}
|
|
513
514
|
}) : _react["default"].createElement(_AnimatedGalleryImage.AnimatedGalleryImage, {
|
|
@@ -530,7 +531,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
530
531
|
__self: _this,
|
|
531
532
|
__source: {
|
|
532
533
|
fileName: _jsxFileName,
|
|
533
|
-
lineNumber:
|
|
534
|
+
lineNumber: 575,
|
|
534
535
|
columnNumber: 29
|
|
535
536
|
}
|
|
536
537
|
});
|
|
@@ -542,7 +543,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
542
543
|
__self: _this,
|
|
543
544
|
__source: {
|
|
544
545
|
fileName: _jsxFileName,
|
|
545
|
-
lineNumber:
|
|
546
|
+
lineNumber: 607,
|
|
546
547
|
columnNumber: 7
|
|
547
548
|
}
|
|
548
549
|
})), _react["default"].createElement(_ImageGalleryFooter.ImageGalleryFooter, (0, _extends2["default"])({
|
|
@@ -561,7 +562,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
561
562
|
__self: _this,
|
|
562
563
|
__source: {
|
|
563
564
|
fileName: _jsxFileName,
|
|
564
|
-
lineNumber:
|
|
565
|
+
lineNumber: 613,
|
|
565
566
|
columnNumber: 7
|
|
566
567
|
}
|
|
567
568
|
})), _react["default"].createElement(_ImageGalleryOverlay.ImageGalleryOverlay, {
|
|
@@ -571,14 +572,14 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
571
572
|
__self: _this,
|
|
572
573
|
__source: {
|
|
573
574
|
fileName: _jsxFileName,
|
|
574
|
-
lineNumber:
|
|
575
|
+
lineNumber: 628,
|
|
575
576
|
columnNumber: 7
|
|
576
577
|
}
|
|
577
578
|
}), _react["default"].createElement(_bottomSheet.BottomSheetModalProvider, {
|
|
578
579
|
__self: _this,
|
|
579
580
|
__source: {
|
|
580
581
|
fileName: _jsxFileName,
|
|
581
|
-
lineNumber:
|
|
582
|
+
lineNumber: 633,
|
|
582
583
|
columnNumber: 7
|
|
583
584
|
}
|
|
584
585
|
}, _react["default"].createElement(_bottomSheet.BottomSheetModal, {
|
|
@@ -591,7 +592,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
591
592
|
__self: _this,
|
|
592
593
|
__source: {
|
|
593
594
|
fileName: _jsxFileName,
|
|
594
|
-
lineNumber:
|
|
595
|
+
lineNumber: 638,
|
|
595
596
|
columnNumber: 13
|
|
596
597
|
}
|
|
597
598
|
}));
|
|
@@ -606,7 +607,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
606
607
|
__self: _this,
|
|
607
608
|
__source: {
|
|
608
609
|
fileName: _jsxFileName,
|
|
609
|
-
lineNumber:
|
|
610
|
+
lineNumber: 634,
|
|
610
611
|
columnNumber: 9
|
|
611
612
|
}
|
|
612
613
|
}, _react["default"].createElement(_ImageGrid.ImageGrid, (0, _extends2["default"])({
|
|
@@ -618,7 +619,7 @@ var ImageGallery = function ImageGallery(props) {
|
|
|
618
619
|
__self: _this,
|
|
619
620
|
__source: {
|
|
620
621
|
fileName: _jsxFileName,
|
|
621
|
-
lineNumber:
|
|
622
|
+
lineNumber: 649,
|
|
622
623
|
columnNumber: 11
|
|
623
624
|
}
|
|
624
625
|
})))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ImageGallery.tsx"],"names":["isAndroid","Platform","OS","fullScreenHeight","Dimensions","get","height","measuredScreenHeight","screenWidth","halfScreenWidth","MARGIN","HasPinched","IsSwiping","ImageGallery","props","giphyVersion","imageGalleryCustomComponents","imageGalleryGridHandleHeight","imageGalleryGridSnapPoints","numberOfImageGalleryGridColumns","overlayOpacity","paused","setPaused","progress","setProgress","duration","setDuration","theme","white_snow","colors","imageGallery","backgroundColor","pager","slide","gridPhotos","setGridPhotos","overlay","translucentStatusBar","image","images","setImage","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","androidScreenHeightAdjustment","screenHeight","halfScreenHeight","quarterScreenHeight","snapPoints","React","useMemo","bottomSheetModalRef","currentBottomSheetIndex","setCurrentBottomSheetIndex","animatedBottomSheetIndex","screenTranslateY","showScreen","value","easing","Easing","out","ease","Keyboard","dismiss","currentImageHeight","setCurrentImageHeight","selectedIndex","setSelectedIndex","index","headerFooterVisible","doubleTapRef","panRef","pinchRef","singleTapRef","translateX","translateY","offsetScale","scale","translationX","photos","reduce","acc","cur","console","log","attachmentImages","attachments","filter","attachment","type","giphy","url","thumb_url","image_url","title_link","og_scrape_url","attachmentPhotos","map","a","imageUrl","channelId","cid","created_at","id","messageId","mime_type","original_height","original_width","uri","width","user","user_id","photoLength","length","updatePosition","newIndex","findIndex","photo","uriForCurrentImage","imageHeight","Math","floor","Image","getSize","onDoubleTap","onPan","onPinch","onSingleTap","headerFooterOpacity","pagerStyle","transform","scaleX","containerBackground","opacity","showScreenStyle","closeGridView","current","close","openGridView","present","videoRef","handleEnd","handleLoad","payload","handleProgress","data","currentTime","seekableDuration","handlePlayPause","seek","replayAsync","state","onProgressDrag","setPositionAsync","StyleSheet","absoluteFillObject","absoluteFill","undefined","styles","animatedContainer","i","abs","marginRight","header","footer","gridHandle","grid","clamp","lowerBound","upperBound","min","max","create","alignItems","flexDirection","displayName"],"mappings":"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","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 type { VideoPayloadData, VideoProgressData, VideoType } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { getUrlOfImageAttachment } from '../../utils/getUrlOfImageAttachment';\nimport { vh, vw } from '../../utils/utils';\n\nconst isAndroid = Platform.OS === 'android';\nconst fullScreenHeight = Dimensions.get('screen').height;\nconst measuredScreenHeight = vh(100);\nconst screenWidth = vw(100);\nconst halfScreenWidth = vw(50);\nconst MARGIN = 32;\n\nexport enum HasPinched {\n FALSE = 0,\n TRUE,\n}\n\nexport enum IsSwiping {\n UNDETERMINED = 0,\n TRUE,\n FALSE,\n}\n\nexport type ImageGalleryCustomComponents<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Override props for following UI components, which are part of [image gallery](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#gallery-components).\n *\n * - [ImageGalleryFooter](#ImageGalleryFooter)\n *\n * - [ImageGrid](#ImageGrid)\n *\n * - [ImageGridHandle](#ImageGridHandle)\n *\n * - [ImageGalleryHeader](#ImageGalleryHeader)\n *\n * e.g.,\n *\n * ```js\n * {\n * footer: {\n * ShareIcon: CustomShareIconComponent\n * },\n * grid: {\n * avatarComponent: CustomAvatarComponent\n * },\n * gridHandle: {\n * centerComponent: CustomCenterComponent\n * },\n * header: {\n * CloseIcon: CustomCloseButtonComponent\n * },\n * }\n * ```\n * @overrideType object\n */\n imageGalleryCustomComponents?: {\n footer?: ImageGalleryFooterCustomComponentProps<StreamChatGenerics>;\n grid?: ImageGalleryGridImageComponents<StreamChatGenerics>;\n gridHandle?: ImageGalleryGridHandleCustomComponentProps;\n header?: ImageGalleryHeaderCustomComponentProps<StreamChatGenerics>;\n };\n};\n\ntype Props<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n ImageGalleryCustomComponents<StreamChatGenerics> & {\n overlayOpacity: Animated.SharedValue<number>;\n } & Pick<\n OverlayProviderProps<StreamChatGenerics>,\n | 'giphyVersion'\n | 'imageGalleryGridSnapPoints'\n | 'imageGalleryGridHandleHeight'\n | 'numberOfImageGalleryGridColumns'\n >;\n\nexport const ImageGallery = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: Props<StreamChatGenerics>,\n) => {\n const {\n giphyVersion = 'fixed_height',\n imageGalleryCustomComponents,\n imageGalleryGridHandleHeight,\n imageGalleryGridSnapPoints,\n numberOfImageGalleryGridColumns,\n overlayOpacity,\n } = props;\n const [paused, setPaused] = useState<boolean>(false);\n const [progress, setProgress] = useState<number>(0);\n const [duration, setDuration] = useState<number>(0);\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 { image, images, setImage } = useImageGalleryContext<StreamChatGenerics>();\n\n /**\n * Height constants\n */\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - measuredScreenHeight - statusBarHeight;\n const androidScreenHeightAdjustment = translucentStatusBar\n ? bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? 0\n : statusBarHeight\n : bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? -statusBarHeight\n : 0;\n const screenHeight = isAndroid\n ? Dimensions.get('window').height + androidScreenHeightAdjustment\n : vh(100);\n const halfScreenHeight = screenHeight / 2;\n const quarterScreenHeight = screenHeight / 4;\n const snapPoints = React.useMemo(\n () => [(screenHeight * 3) / 4, screenHeight - (imageGalleryGridHandleHeight ?? 40)],\n [],\n );\n\n /**\n * BottomSheetModal ref\n */\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n\n /**\n * BottomSheetModal state\n */\n const [currentBottomSheetIndex, setCurrentBottomSheetIndex] = useState(0);\n const animatedBottomSheetIndex = useSharedValue(0);\n\n /**\n * Fade animation for screen, it is always rendered with pointerEvents\n * set to none for fast opening\n */\n const screenTranslateY = useSharedValue(screenHeight);\n const showScreen = () => {\n 'worklet';\n screenTranslateY.value = withTiming(0, {\n duration: 250,\n easing: Easing.out(Easing.ease),\n });\n };\n\n /**\n * Run the fade animation on visible change\n */\n useEffect(() => {\n Keyboard.dismiss();\n showScreen();\n }, []);\n\n /**\n * Image height from URL or default to full screen height\n */\n const [currentImageHeight, setCurrentImageHeight] = useState<number>(screenHeight);\n\n /**\n * JS and UI index values, the JS follows the UI but is needed\n * for rendering the virtualized image list\n */\n const [selectedIndex, setSelectedIndex] = useState(0);\n const index = useSharedValue(0);\n\n /**\n * Header visible value for animating in out\n */\n const headerFooterVisible = useSharedValue(1);\n\n /**\n * Gesture handler refs\n */\n const doubleTapRef = useRef<TapGestureHandler>(null);\n const panRef = useRef<PanGestureHandler>(null);\n const pinchRef = useRef<PinchGestureHandler>(null);\n const singleTapRef = useRef<TapGestureHandler>(null);\n\n /**\n * Shared values for movement\n */\n const translateX = useSharedValue(0);\n const translateY = useSharedValue(0);\n const offsetScale = useSharedValue(1);\n const scale = useSharedValue(1);\n const translationX = useSharedValue(0);\n\n /**\n * Photos array created from all currently available\n * photo attachments\n */\n\n const photos = images.reduce((acc: Photo<StreamChatGenerics>[], cur) => {\n console.log(cur);\n const attachmentImages =\n cur.attachments?.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 attachment.type === 'video',\n ) || [];\n\n const attachmentPhotos = attachmentImages.map((a) => {\n const imageUrl = getUrlOfImageAttachment(a) as string;\n\n return {\n channelId: cur.cid,\n created_at: cur.created_at,\n id: `photoId-${cur.id}-${imageUrl}`,\n messageId: cur.id,\n mime_type: a.mime_type,\n original_height: a.original_height,\n original_width: a.original_width,\n type: a.type,\n uri: 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 [...acc, ...attachmentPhotos] 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 /**\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) => photo.messageId === image?.messageId && photo.uri === image?.url,\n );\n\n if (photoLength > 1) {\n setPaused(true);\n }\n\n runOnUI(updatePosition)(newIndex);\n }, [image, 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 = photos[selectedIndex]?.uri;\n useEffect(() => {\n setCurrentImageHeight(screenHeight);\n const photo = photos[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 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(photos);\n }\n };\n\n const videoRef = useRef<VideoType>(null);\n\n const handleEnd = () => {\n setPaused(true);\n setProgress(1);\n };\n\n const handleLoad = (payload: VideoPayloadData) => {\n if (payload.duration) setDuration(payload.duration);\n };\n\n const handleProgress = (data: VideoProgressData) => {\n if (data.currentTime && data.seekableDuration) {\n setProgress(data.currentTime / data.seekableDuration);\n }\n };\n\n const handlePlayPause = () => {\n // React Native Video for RN CLI has seek as an API to move to a particular location in the video\n if (progress === 1 && videoRef.current && videoRef.current.seek) {\n videoRef.current.seek(0);\n }\n // Expo AV for Expo has replayAsync as an API to move to a starting of the video\n if (progress === 1 && videoRef.current && videoRef.current.replayAsync) {\n videoRef.current.replayAsync();\n }\n\n setPaused((state) => !state);\n };\n\n const onProgressDrag = (progress: number) => {\n // React Native Video for RN CLI has seek as an API to move to a particular location in the video\n if (videoRef.current && videoRef.current.seek) {\n videoRef.current.seek(progress);\n }\n\n // Expo AV for Expo has setPositionAsync as an API to move to a particular location of the video\n if (videoRef.current && videoRef.current.setPositionAsync) {\n videoRef.current.setPositionAsync(progress * 1000);\n }\n };\n\n return (\n <Animated.View pointerEvents={'auto'} style={[StyleSheet.absoluteFillObject, showScreenStyle]}>\n <Animated.View style={[StyleSheet.absoluteFillObject, containerBackground]} />\n <TapGestureHandler\n minPointers={1}\n numberOfTaps={1}\n onGestureEvent={onSingleTap}\n ref={singleTapRef}\n waitFor={[panRef, pinchRef, doubleTapRef]}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <TapGestureHandler\n maxDeltaX={8}\n maxDeltaY={8}\n maxDist={8}\n minPointers={1}\n numberOfTaps={2}\n onGestureEvent={onDoubleTap}\n ref={doubleTapRef}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <PinchGestureHandler\n onGestureEvent={onPinch}\n ref={pinchRef}\n simultaneousHandlers={[panRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <PanGestureHandler\n enabled={overlay === 'gallery'}\n maxPointers={isAndroid ? undefined : 1}\n minDist={10}\n onGestureEvent={onPan}\n ref={panRef}\n simultaneousHandlers={[pinchRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <Animated.View\n style={[\n styles.animatedContainer,\n pagerStyle,\n pager,\n {\n transform: [\n { scaleX: -1 }, // Also only here for opening, wrong direction when not included\n {\n translateX: translationX.value, // Only here for opening, wrong index when this is not included\n },\n ],\n },\n ]}\n >\n {photos.map((photo, i) =>\n photo.type === 'video' ? (\n <AnimatedGalleryVideo\n handleEnd={handleEnd}\n handleLoad={handleLoad}\n handleProgress={handleProgress}\n index={i}\n key={`${photo.uri}-${i}`}\n offsetScale={offsetScale}\n paused={paused}\n previous={selectedIndex > i}\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 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={photos[selectedIndex]}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.header}\n />\n <ImageGalleryFooter<StreamChatGenerics>\n duration={duration}\n onPlayPause={handlePlayPause}\n onProgressDrag={onProgressDrag}\n opacity={headerFooterOpacity}\n openGridView={openGridView}\n paused={paused}\n photo={photos[selectedIndex]}\n photoLength={photoLength}\n progress={progress}\n selectedIndex={selectedIndex}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.footer}\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 setImage={setImage}\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 messageId?: string;\n mime_type?: string;\n original_height?: number;\n original_width?: number;\n type?: string;\n user?: UserResponse<StreamChatGenerics> | null;\n user_id?: string;\n};\n\nImageGallery.displayName = 'ImageGallery{imageGallery}';\n"]}
|
|
1
|
+
{"version":3,"sources":["ImageGallery.tsx"],"names":["isAndroid","Platform","OS","fullScreenHeight","Dimensions","get","height","measuredScreenHeight","screenWidth","halfScreenWidth","MARGIN","HasPinched","IsSwiping","ImageGallery","props","giphyVersion","imageGalleryCustomComponents","imageGalleryGridHandleHeight","imageGalleryGridSnapPoints","numberOfImageGalleryGridColumns","overlayOpacity","paused","setPaused","progress","setProgress","duration","setDuration","theme","white_snow","colors","imageGallery","backgroundColor","pager","slide","gridPhotos","setGridPhotos","overlay","translucentStatusBar","image","images","setImage","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","androidScreenHeightAdjustment","screenHeight","halfScreenHeight","quarterScreenHeight","snapPoints","React","useMemo","bottomSheetModalRef","currentBottomSheetIndex","setCurrentBottomSheetIndex","animatedBottomSheetIndex","screenTranslateY","showScreen","value","easing","Easing","out","ease","Keyboard","dismiss","currentImageHeight","setCurrentImageHeight","selectedIndex","setSelectedIndex","index","headerFooterVisible","doubleTapRef","panRef","pinchRef","singleTapRef","translateX","translateY","offsetScale","scale","translationX","photos","reduce","acc","cur","attachmentImages","attachments","filter","attachment","type","giphy","url","thumb_url","image_url","title_link","og_scrape_url","attachmentPhotos","map","a","imageUrl","channelId","cid","created_at","id","messageId","mime_type","original_height","original_width","uri","width","user","user_id","photoLength","length","updatePosition","newIndex","findIndex","photo","uriForCurrentImage","imageHeight","Math","floor","Image","getSize","onDoubleTap","onPan","onPinch","onSingleTap","headerFooterOpacity","pagerStyle","transform","scaleX","containerBackground","opacity","showScreenStyle","closeGridView","current","close","openGridView","present","videoRef","handleEnd","handleLoad","payload","handleProgress","data","currentTime","seekableDuration","handlePlayPause","seek","replayAsync","state","onProgressDrag","setPositionAsync","StyleSheet","absoluteFillObject","absoluteFill","undefined","styles","animatedContainer","i","abs","marginRight","header","footer","gridHandle","grid","clamp","lowerBound","upperBound","min","max","create","alignItems","flexDirection","displayName"],"mappings":"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","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 {\n isVideoPackageAvailable,\n VideoPayloadData,\n VideoProgressData,\n VideoType,\n} from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { getUrlOfImageAttachment } from '../../utils/getUrlOfImageAttachment';\nimport { vh, vw } from '../../utils/utils';\n\nconst isAndroid = Platform.OS === 'android';\nconst fullScreenHeight = Dimensions.get('screen').height;\nconst measuredScreenHeight = vh(100);\nconst screenWidth = vw(100);\nconst halfScreenWidth = vw(50);\nconst MARGIN = 32;\n\nexport enum HasPinched {\n FALSE = 0,\n TRUE,\n}\n\nexport enum IsSwiping {\n UNDETERMINED = 0,\n TRUE,\n FALSE,\n}\n\nexport type ImageGalleryCustomComponents<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Override props for following UI components, which are part of [image gallery](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#gallery-components).\n *\n * - [ImageGalleryFooter](#ImageGalleryFooter)\n *\n * - [ImageGrid](#ImageGrid)\n *\n * - [ImageGridHandle](#ImageGridHandle)\n *\n * - [ImageGalleryHeader](#ImageGalleryHeader)\n *\n * e.g.,\n *\n * ```js\n * {\n * footer: {\n * ShareIcon: CustomShareIconComponent\n * },\n * grid: {\n * avatarComponent: CustomAvatarComponent\n * },\n * gridHandle: {\n * centerComponent: CustomCenterComponent\n * },\n * header: {\n * CloseIcon: CustomCloseButtonComponent\n * },\n * }\n * ```\n * @overrideType object\n */\n imageGalleryCustomComponents?: {\n footer?: ImageGalleryFooterCustomComponentProps<StreamChatGenerics>;\n grid?: ImageGalleryGridImageComponents<StreamChatGenerics>;\n gridHandle?: ImageGalleryGridHandleCustomComponentProps;\n header?: ImageGalleryHeaderCustomComponentProps<StreamChatGenerics>;\n };\n};\n\ntype Props<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n ImageGalleryCustomComponents<StreamChatGenerics> & {\n overlayOpacity: Animated.SharedValue<number>;\n } & Pick<\n OverlayProviderProps<StreamChatGenerics>,\n | 'giphyVersion'\n | 'imageGalleryGridSnapPoints'\n | 'imageGalleryGridHandleHeight'\n | 'numberOfImageGalleryGridColumns'\n >;\n\nexport const ImageGallery = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: Props<StreamChatGenerics>,\n) => {\n const {\n giphyVersion = 'fixed_height',\n imageGalleryCustomComponents,\n imageGalleryGridHandleHeight,\n imageGalleryGridSnapPoints,\n numberOfImageGalleryGridColumns,\n overlayOpacity,\n } = props;\n const [paused, setPaused] = useState<boolean>(false);\n const [progress, setProgress] = useState<number>(0);\n const [duration, setDuration] = useState<number>(0);\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 { image, images, setImage } = useImageGalleryContext<StreamChatGenerics>();\n\n /**\n * Height constants\n */\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - measuredScreenHeight - statusBarHeight;\n const androidScreenHeightAdjustment = translucentStatusBar\n ? bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? 0\n : statusBarHeight\n : bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? -statusBarHeight\n : 0;\n const screenHeight = isAndroid\n ? Dimensions.get('window').height + androidScreenHeightAdjustment\n : vh(100);\n const halfScreenHeight = screenHeight / 2;\n const quarterScreenHeight = screenHeight / 4;\n const snapPoints = React.useMemo(\n () => [(screenHeight * 3) / 4, screenHeight - (imageGalleryGridHandleHeight ?? 40)],\n [],\n );\n\n /**\n * BottomSheetModal ref\n */\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n\n /**\n * BottomSheetModal state\n */\n const [currentBottomSheetIndex, setCurrentBottomSheetIndex] = useState(0);\n const animatedBottomSheetIndex = useSharedValue(0);\n\n /**\n * Fade animation for screen, it is always rendered with pointerEvents\n * set to none for fast opening\n */\n const screenTranslateY = useSharedValue(screenHeight);\n const showScreen = () => {\n 'worklet';\n screenTranslateY.value = withTiming(0, {\n duration: 250,\n easing: Easing.out(Easing.ease),\n });\n };\n\n /**\n * Run the fade animation on visible change\n */\n useEffect(() => {\n Keyboard.dismiss();\n showScreen();\n }, []);\n\n /**\n * Image height from URL or default to full screen height\n */\n const [currentImageHeight, setCurrentImageHeight] = useState<number>(screenHeight);\n\n /**\n * JS and UI index values, the JS follows the UI but is needed\n * for rendering the virtualized image list\n */\n const [selectedIndex, setSelectedIndex] = useState(0);\n const index = useSharedValue(0);\n\n /**\n * Header visible value for animating in out\n */\n const headerFooterVisible = useSharedValue(1);\n\n /**\n * Gesture handler refs\n */\n const doubleTapRef = useRef<TapGestureHandler>(null);\n const panRef = useRef<PanGestureHandler>(null);\n const pinchRef = useRef<PinchGestureHandler>(null);\n const singleTapRef = useRef<TapGestureHandler>(null);\n\n /**\n * Shared values for movement\n */\n const translateX = useSharedValue(0);\n const translateY = useSharedValue(0);\n const offsetScale = useSharedValue(1);\n const scale = useSharedValue(1);\n const translationX = useSharedValue(0);\n\n /**\n * Photos array created from all currently available\n * photo attachments\n */\n\n const photos = images.reduce((acc: Photo<StreamChatGenerics>[], cur) => {\n const attachmentImages =\n cur.attachments?.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\n const attachmentPhotos = attachmentImages.map((a) => {\n const imageUrl = getUrlOfImageAttachment(a) as string;\n\n return {\n channelId: cur.cid,\n created_at: cur.created_at,\n id: `photoId-${cur.id}-${imageUrl}`,\n messageId: cur.id,\n mime_type: a.mime_type,\n original_height: a.original_height,\n original_width: a.original_width,\n type: a.type,\n uri: 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 [...acc, ...attachmentPhotos] 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 /**\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) => photo.messageId === image?.messageId && photo.uri === image?.url,\n );\n\n if (photoLength > 1) {\n setPaused(true);\n }\n\n runOnUI(updatePosition)(newIndex);\n }, [image, 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 = photos[selectedIndex]?.uri;\n useEffect(() => {\n setCurrentImageHeight(screenHeight);\n const photo = photos[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 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(photos);\n }\n };\n\n const videoRef = useRef<VideoType>(null);\n\n const handleEnd = () => {\n setPaused(true);\n setProgress(1);\n };\n\n const handleLoad = (payload: VideoPayloadData) => {\n if (payload.duration) setDuration(payload.duration);\n };\n\n const handleProgress = (data: VideoProgressData) => {\n if (data.currentTime && data.seekableDuration) {\n setProgress(data.currentTime / data.seekableDuration);\n }\n };\n\n const handlePlayPause = () => {\n // React Native Video for RN CLI has seek as an API to move to a particular location in the video\n if (progress === 1 && videoRef.current && videoRef.current.seek) {\n videoRef.current.seek(0);\n }\n // Expo AV for Expo has replayAsync as an API to move to a starting of the video\n if (progress === 1 && videoRef.current && videoRef.current.replayAsync) {\n videoRef.current.replayAsync();\n }\n\n setPaused((state) => !state);\n };\n\n const onProgressDrag = (progress: number) => {\n // React Native Video for RN CLI has seek as an API to move to a particular location in the video\n if (videoRef.current && videoRef.current.seek) {\n videoRef.current.seek(progress);\n }\n\n // Expo AV for Expo has setPositionAsync as an API to move to a particular location of the video\n if (videoRef.current && videoRef.current.setPositionAsync) {\n videoRef.current.setPositionAsync(progress * 1000);\n }\n };\n\n return (\n <Animated.View pointerEvents={'auto'} style={[StyleSheet.absoluteFillObject, showScreenStyle]}>\n <Animated.View style={[StyleSheet.absoluteFillObject, containerBackground]} />\n <TapGestureHandler\n minPointers={1}\n numberOfTaps={1}\n onGestureEvent={onSingleTap}\n ref={singleTapRef}\n waitFor={[panRef, pinchRef, doubleTapRef]}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <TapGestureHandler\n maxDeltaX={8}\n maxDeltaY={8}\n maxDist={8}\n minPointers={1}\n numberOfTaps={2}\n onGestureEvent={onDoubleTap}\n ref={doubleTapRef}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <PinchGestureHandler\n onGestureEvent={onPinch}\n ref={pinchRef}\n simultaneousHandlers={[panRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <PanGestureHandler\n enabled={overlay === 'gallery'}\n maxPointers={isAndroid ? undefined : 1}\n minDist={10}\n onGestureEvent={onPan}\n ref={panRef}\n simultaneousHandlers={[pinchRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <Animated.View\n style={[\n styles.animatedContainer,\n pagerStyle,\n pager,\n {\n transform: [\n { scaleX: -1 }, // Also only here for opening, wrong direction when not included\n {\n translateX: translationX.value, // Only here for opening, wrong index when this is not included\n },\n ],\n },\n ]}\n >\n {photos.map((photo, i) =>\n photo.type === 'video' ? (\n <AnimatedGalleryVideo\n handleEnd={handleEnd}\n handleLoad={handleLoad}\n handleProgress={handleProgress}\n index={i}\n key={`${photo.uri}-${i}`}\n offsetScale={offsetScale}\n paused={paused}\n previous={selectedIndex > i}\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 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={photos[selectedIndex]}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.header}\n />\n <ImageGalleryFooter<StreamChatGenerics>\n duration={duration}\n onPlayPause={handlePlayPause}\n onProgressDrag={onProgressDrag}\n opacity={headerFooterOpacity}\n openGridView={openGridView}\n paused={paused}\n photo={photos[selectedIndex]}\n photoLength={photoLength}\n progress={progress}\n selectedIndex={selectedIndex}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.footer}\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 setImage={setImage}\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 messageId?: string;\n mime_type?: string;\n original_height?: number;\n original_width?: number;\n type?: string;\n user?: UserResponse<StreamChatGenerics> | null;\n user_id?: string;\n};\n\nImageGallery.displayName = 'ImageGallery{imageGallery}';\n"]}
|
|
@@ -143,7 +143,7 @@ var AnimatedGalleryVideo = _react["default"].memo(function (props) {
|
|
|
143
143
|
__self: _this,
|
|
144
144
|
__source: {
|
|
145
145
|
fileName: _jsxFileName,
|
|
146
|
-
lineNumber:
|
|
146
|
+
lineNumber: 157,
|
|
147
147
|
columnNumber: 14
|
|
148
148
|
}
|
|
149
149
|
});
|
|
@@ -164,10 +164,10 @@ var AnimatedGalleryVideo = _react["default"].memo(function (props) {
|
|
|
164
164
|
__self: _this,
|
|
165
165
|
__source: {
|
|
166
166
|
fileName: _jsxFileName,
|
|
167
|
-
lineNumber:
|
|
167
|
+
lineNumber: 161,
|
|
168
168
|
columnNumber: 7
|
|
169
169
|
}
|
|
170
|
-
}, _react["default"].createElement(_native.Video, {
|
|
170
|
+
}, (0, _native.isVideoPackageAvailable)() && _react["default"].createElement(_native.Video, {
|
|
171
171
|
onBuffer: onBuffer,
|
|
172
172
|
onEnd: onEnd,
|
|
173
173
|
onLoad: onLoad,
|
|
@@ -175,15 +175,15 @@ var AnimatedGalleryVideo = _react["default"].memo(function (props) {
|
|
|
175
175
|
onPlaybackStatusUpdate: onPlayBackStatusUpdate,
|
|
176
176
|
onProgress: onProgress,
|
|
177
177
|
paused: paused,
|
|
178
|
-
resizeMode: "
|
|
178
|
+
resizeMode: "contain",
|
|
179
179
|
style: style,
|
|
180
180
|
uri: source.uri,
|
|
181
181
|
videoRef: videoRef,
|
|
182
182
|
__self: _this,
|
|
183
183
|
__source: {
|
|
184
184
|
fileName: _jsxFileName,
|
|
185
|
-
lineNumber:
|
|
186
|
-
columnNumber:
|
|
185
|
+
lineNumber: 178,
|
|
186
|
+
columnNumber: 11
|
|
187
187
|
}
|
|
188
188
|
}), _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
189
189
|
style: [styles.activityIndicator, {
|
|
@@ -199,7 +199,7 @@ var AnimatedGalleryVideo = _react["default"].memo(function (props) {
|
|
|
199
199
|
__self: _this,
|
|
200
200
|
__source: {
|
|
201
201
|
fileName: _jsxFileName,
|
|
202
|
-
lineNumber:
|
|
202
|
+
lineNumber: 192,
|
|
203
203
|
columnNumber: 9
|
|
204
204
|
}
|
|
205
205
|
}, _react["default"].createElement(_Spinner.Spinner, {
|
|
@@ -208,7 +208,7 @@ var AnimatedGalleryVideo = _react["default"].memo(function (props) {
|
|
|
208
208
|
__self: _this,
|
|
209
209
|
__source: {
|
|
210
210
|
fileName: _jsxFileName,
|
|
211
|
-
lineNumber:
|
|
211
|
+
lineNumber: 205,
|
|
212
212
|
columnNumber: 11
|
|
213
213
|
}
|
|
214
214
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["AnimatedGalleryVideo.tsx"],"names":["screenWidth","halfScreenWidth","oneEighth","styles","StyleSheet","create","activityIndicator","alignSelf","videoPlayer","height","width","AnimatedGalleryVideo","React","memo","props","opacity","setOpacity","handleEnd","handleLoad","handleProgress","index","offsetScale","paused","previous","scale","screenHeight","selected","shouldRender","source","style","translateX","translateY","videoRef","onLoadStart","onLoad","payload","onEnd","onProgress","data","onBuffer","isBuffering","onPlayBackStatusUpdate","playbackStatus","isLoaded","error","console","duration","durationMillis","isPlaying","currentTime","positionMillis","seekableDuration","didJustFinish","isLooping","animatedViewStyles","xScaleOffset","yScaleOffset","transform","value","scaleX","uri","prevProps","nextProps","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { StyleSheet, View, ViewStyle } from 'react-native';\nimport type { StyleProp } from 'react-native';\nimport Animated, { useAnimatedStyle } from 'react-native-reanimated';\n\nimport {\n PlaybackStatus,\n Video,\n VideoPayloadData,\n VideoProgressData,\n VideoType,\n} from '../../../native';\n\nimport { vw } from '../../../utils/utils';\nimport { Spinner } from '../../Spinner/Spinner';\n\nconst screenWidth = vw(100);\nconst halfScreenWidth = vw(50);\nconst oneEighth = 1 / 8;\n\ntype Props = {\n handleEnd: () => void;\n handleLoad: (payload: VideoPayloadData) => void;\n handleProgress: (data: VideoProgressData) => void;\n index: number;\n offsetScale: Animated.SharedValue<number>;\n paused: boolean;\n previous: boolean;\n scale: Animated.SharedValue<number>;\n screenHeight: number;\n selected: boolean;\n shouldRender: boolean;\n source: { uri: string };\n translateX: Animated.SharedValue<number>;\n translateY: Animated.SharedValue<number>;\n videoRef: React.RefObject<VideoType>;\n style?: StyleProp<ViewStyle>;\n};\n\nconst styles = StyleSheet.create({\n activityIndicator: {\n alignSelf: 'center',\n },\n videoPlayer: {\n height: '100%',\n width: '100%',\n },\n});\n\nexport const AnimatedGalleryVideo: React.FC<Props> = React.memo(\n (props) => {\n const [opacity, setOpacity] = useState<number>(1);\n const {\n handleEnd,\n handleLoad,\n handleProgress,\n index,\n offsetScale,\n paused,\n previous,\n scale,\n screenHeight,\n selected,\n shouldRender,\n source,\n style,\n translateX,\n translateY,\n videoRef,\n } = props;\n\n const onLoadStart = () => {\n setOpacity(1);\n };\n\n const onLoad = (payload: VideoPayloadData) => {\n setOpacity(0);\n handleLoad(payload);\n };\n\n const onEnd = () => {\n handleEnd();\n };\n\n const onProgress = (data: VideoProgressData) => {\n handleProgress(data);\n };\n\n const onBuffer = ({ isBuffering }: { isBuffering: boolean }) => {\n if (isBuffering) setOpacity(1);\n else setOpacity(0);\n };\n\n const onPlayBackStatusUpdate = (playbackStatus: PlaybackStatus) => {\n if (!playbackStatus.isLoaded) {\n // Update your UI for the unloaded state\n setOpacity(1);\n if (playbackStatus.error) {\n console.error(`Encountered a fatal error during playback: ${playbackStatus.error}`);\n }\n } else {\n // Update your UI for the loaded state\n setOpacity(0);\n handleLoad({ duration: playbackStatus.durationMillis / 1000 });\n if (playbackStatus.isPlaying) {\n // Update your UI for the playing state\n handleProgress({\n currentTime: playbackStatus.positionMillis / 1000,\n seekableDuration: playbackStatus.durationMillis / 1000,\n });\n }\n\n if (playbackStatus.isBuffering) {\n // Update your UI for the buffering state\n setOpacity(1);\n }\n\n if (playbackStatus.didJustFinish && !playbackStatus.isLooping) {\n // The player has just finished playing and will stop. Maybe you want to play something else?\n handleEnd();\n }\n }\n };\n\n const animatedViewStyles = useAnimatedStyle<ViewStyle>(() => {\n const xScaleOffset = -7 * screenWidth * (0.5 + index);\n const yScaleOffset = -screenHeight * 3.5;\n return {\n transform: [\n {\n translateX: selected\n ? translateX.value + xScaleOffset\n : scale.value < 1 || scale.value !== offsetScale.value\n ? xScaleOffset\n : previous\n ? translateX.value - halfScreenWidth * (scale.value - 1) + xScaleOffset\n : translateX.value + halfScreenWidth * (scale.value - 1) + xScaleOffset,\n },\n {\n translateY: selected ? translateY.value + yScaleOffset : yScaleOffset,\n },\n {\n scale: selected ? scale.value / 8 : oneEighth,\n },\n { scaleX: -1 },\n ],\n };\n }, [previous, selected]);\n\n /**\n * An empty view is rendered for images not close to the currently\n * selected in order to maintain spacing while reducing the image\n * load on memory.\n */\n if (!shouldRender) {\n return <View style={[style, { transform: [{ scale: oneEighth }] }]} />;\n }\n\n return (\n <Animated.View\n style={[\n style,\n animatedViewStyles,\n {\n transform: [\n { scaleX: -1 },\n { translateY: -screenHeight * 3.5 },\n {\n translateX: -translateX.value + 7 * screenWidth * (0.5 + index),\n },\n { scale: oneEighth },\n ],\n },\n ]}\n >\n <Video\n onBuffer={onBuffer}\n onEnd={onEnd}\n onLoad={onLoad}\n onLoadStart={onLoadStart}\n onPlaybackStatusUpdate={onPlayBackStatusUpdate}\n onProgress={onProgress}\n paused={paused}\n resizeMode='cover'\n style={style}\n uri={source.uri}\n videoRef={videoRef}\n />\n <Animated.View\n style={[\n styles.activityIndicator,\n {\n opacity,\n transform: [\n { scaleX: -1 },\n { translateY: -screenHeight * 4 },\n { scale: 1 / oneEighth },\n ],\n },\n ]}\n >\n <Spinner height={40} width={40} />\n </Animated.View>\n </Animated.View>\n );\n },\n\n (prevProps, nextProps) => {\n if (\n prevProps.paused === nextProps.paused &&\n prevProps.shouldRender === nextProps.shouldRender &&\n prevProps.source.uri === nextProps.source.uri &&\n prevProps.screenHeight === nextProps.screenHeight &&\n prevProps.selected === nextProps.selected &&\n prevProps.previous === nextProps.previous &&\n prevProps.index === nextProps.index\n ) {\n return true;\n }\n return false;\n },\n);\n\nAnimatedGalleryVideo.displayName = 'AnimatedGalleryVideo';\n"]}
|
|
1
|
+
{"version":3,"sources":["AnimatedGalleryVideo.tsx"],"names":["screenWidth","halfScreenWidth","oneEighth","styles","StyleSheet","create","activityIndicator","alignSelf","videoPlayer","height","width","AnimatedGalleryVideo","React","memo","props","opacity","setOpacity","handleEnd","handleLoad","handleProgress","index","offsetScale","paused","previous","scale","screenHeight","selected","shouldRender","source","style","translateX","translateY","videoRef","onLoadStart","onLoad","payload","onEnd","onProgress","data","onBuffer","isBuffering","onPlayBackStatusUpdate","playbackStatus","isLoaded","error","console","duration","durationMillis","isPlaying","currentTime","positionMillis","seekableDuration","didJustFinish","isLooping","animatedViewStyles","xScaleOffset","yScaleOffset","transform","value","scaleX","uri","prevProps","nextProps","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { StyleSheet, View, ViewStyle } from 'react-native';\nimport type { StyleProp } from 'react-native';\nimport Animated, { useAnimatedStyle } from 'react-native-reanimated';\n\nimport {\n isVideoPackageAvailable,\n PlaybackStatus,\n Video,\n VideoPayloadData,\n VideoProgressData,\n VideoType,\n} from '../../../native';\n\nimport { vw } from '../../../utils/utils';\nimport { Spinner } from '../../Spinner/Spinner';\n\nconst screenWidth = vw(100);\nconst halfScreenWidth = vw(50);\nconst oneEighth = 1 / 8;\n\ntype Props = {\n handleEnd: () => void;\n handleLoad: (payload: VideoPayloadData) => void;\n handleProgress: (data: VideoProgressData) => void;\n index: number;\n offsetScale: Animated.SharedValue<number>;\n paused: boolean;\n previous: boolean;\n scale: Animated.SharedValue<number>;\n screenHeight: number;\n selected: boolean;\n shouldRender: boolean;\n source: { uri: string };\n translateX: Animated.SharedValue<number>;\n translateY: Animated.SharedValue<number>;\n videoRef: React.RefObject<VideoType>;\n style?: StyleProp<ViewStyle>;\n};\n\nconst styles = StyleSheet.create({\n activityIndicator: {\n alignSelf: 'center',\n },\n videoPlayer: {\n height: '100%',\n width: '100%',\n },\n});\n\nexport const AnimatedGalleryVideo: React.FC<Props> = React.memo(\n (props) => {\n const [opacity, setOpacity] = useState<number>(1);\n const {\n handleEnd,\n handleLoad,\n handleProgress,\n index,\n offsetScale,\n paused,\n previous,\n scale,\n screenHeight,\n selected,\n shouldRender,\n source,\n style,\n translateX,\n translateY,\n videoRef,\n } = props;\n\n const onLoadStart = () => {\n setOpacity(1);\n };\n\n const onLoad = (payload: VideoPayloadData) => {\n setOpacity(0);\n handleLoad(payload);\n };\n\n const onEnd = () => {\n handleEnd();\n };\n\n const onProgress = (data: VideoProgressData) => {\n handleProgress(data);\n };\n\n const onBuffer = ({ isBuffering }: { isBuffering: boolean }) => {\n if (isBuffering) setOpacity(1);\n else setOpacity(0);\n };\n\n const onPlayBackStatusUpdate = (playbackStatus: PlaybackStatus) => {\n if (!playbackStatus.isLoaded) {\n // Update your UI for the unloaded state\n setOpacity(1);\n if (playbackStatus.error) {\n console.error(`Encountered a fatal error during playback: ${playbackStatus.error}`);\n }\n } else {\n // Update your UI for the loaded state\n setOpacity(0);\n handleLoad({ duration: playbackStatus.durationMillis / 1000 });\n if (playbackStatus.isPlaying) {\n // Update your UI for the playing state\n handleProgress({\n currentTime: playbackStatus.positionMillis / 1000,\n seekableDuration: playbackStatus.durationMillis / 1000,\n });\n }\n\n if (playbackStatus.isBuffering) {\n // Update your UI for the buffering state\n setOpacity(1);\n }\n\n if (playbackStatus.didJustFinish && !playbackStatus.isLooping) {\n // The player has just finished playing and will stop. Maybe you want to play something else?\n handleEnd();\n }\n }\n };\n\n const animatedViewStyles = useAnimatedStyle<ViewStyle>(() => {\n const xScaleOffset = -7 * screenWidth * (0.5 + index);\n const yScaleOffset = -screenHeight * 3.5;\n return {\n transform: [\n {\n translateX: selected\n ? translateX.value + xScaleOffset\n : scale.value < 1 || scale.value !== offsetScale.value\n ? xScaleOffset\n : previous\n ? translateX.value - halfScreenWidth * (scale.value - 1) + xScaleOffset\n : translateX.value + halfScreenWidth * (scale.value - 1) + xScaleOffset,\n },\n {\n translateY: selected ? translateY.value + yScaleOffset : yScaleOffset,\n },\n {\n scale: selected ? scale.value / 8 : oneEighth,\n },\n { scaleX: -1 },\n ],\n };\n }, [previous, selected]);\n\n /**\n * An empty view is rendered for images not close to the currently\n * selected in order to maintain spacing while reducing the image\n * load on memory.\n */\n if (!shouldRender) {\n return <View style={[style, { transform: [{ scale: oneEighth }] }]} />;\n }\n\n return (\n <Animated.View\n style={[\n style,\n animatedViewStyles,\n {\n transform: [\n { scaleX: -1 },\n { translateY: -screenHeight * 3.5 },\n {\n translateX: -translateX.value + 7 * screenWidth * (0.5 + index),\n },\n { scale: oneEighth },\n ],\n },\n ]}\n >\n {isVideoPackageAvailable() && (\n <Video\n onBuffer={onBuffer}\n onEnd={onEnd}\n onLoad={onLoad}\n onLoadStart={onLoadStart}\n onPlaybackStatusUpdate={onPlayBackStatusUpdate}\n onProgress={onProgress}\n paused={paused}\n resizeMode='contain'\n style={style}\n uri={source.uri}\n videoRef={videoRef}\n />\n )}\n <Animated.View\n style={[\n styles.activityIndicator,\n {\n opacity,\n transform: [\n { scaleX: -1 },\n { translateY: -screenHeight * 4 },\n { scale: 1 / oneEighth },\n ],\n },\n ]}\n >\n <Spinner height={40} width={40} />\n </Animated.View>\n </Animated.View>\n );\n },\n\n (prevProps, nextProps) => {\n if (\n prevProps.paused === nextProps.paused &&\n prevProps.shouldRender === nextProps.shouldRender &&\n prevProps.source.uri === nextProps.source.uri &&\n prevProps.screenHeight === nextProps.screenHeight &&\n prevProps.selected === nextProps.selected &&\n prevProps.previous === nextProps.previous &&\n prevProps.index === nextProps.index\n ) {\n return true;\n }\n return false;\n },\n);\n\nAnimatedGalleryVideo.displayName = 'AnimatedGalleryVideo';\n"]}
|
|
@@ -198,12 +198,15 @@ var MessageWithContext = function MessageWithContext(props) {
|
|
|
198
198
|
if (cur.type === 'file') {
|
|
199
199
|
acc.files.push(cur);
|
|
200
200
|
acc.other = [];
|
|
201
|
-
} else if (cur.type === 'video' && !cur.og_scrape_url) {
|
|
201
|
+
} else if (cur.type === 'video' && !cur.og_scrape_url && (0, _native.isVideoPackageAvailable)()) {
|
|
202
202
|
acc.videos.push({
|
|
203
203
|
image_url: cur.asset_url,
|
|
204
204
|
type: 'video'
|
|
205
205
|
});
|
|
206
206
|
acc.other = [];
|
|
207
|
+
} else if (cur.type === 'video' && !cur.og_scrape_url) {
|
|
208
|
+
acc.files.push(cur);
|
|
209
|
+
acc.other = [];
|
|
207
210
|
} else if (cur.type === 'image' && !cur.title_link && !cur.og_scrape_url) {
|
|
208
211
|
if (cur.image_url || cur.thumb_url) {
|
|
209
212
|
acc.images.push(cur);
|
|
@@ -545,7 +548,7 @@ var MessageWithContext = function MessageWithContext(props) {
|
|
|
545
548
|
__self: _this,
|
|
546
549
|
__source: {
|
|
547
550
|
fileName: _jsxFileName,
|
|
548
|
-
lineNumber:
|
|
551
|
+
lineNumber: 673,
|
|
549
552
|
columnNumber: 5
|
|
550
553
|
}
|
|
551
554
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -555,7 +558,7 @@ var MessageWithContext = function MessageWithContext(props) {
|
|
|
555
558
|
__self: _this,
|
|
556
559
|
__source: {
|
|
557
560
|
fileName: _jsxFileName,
|
|
558
|
-
lineNumber:
|
|
561
|
+
lineNumber: 677,
|
|
559
562
|
columnNumber: 7
|
|
560
563
|
}
|
|
561
564
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -565,7 +568,7 @@ var MessageWithContext = function MessageWithContext(props) {
|
|
|
565
568
|
__self: _this,
|
|
566
569
|
__source: {
|
|
567
570
|
fileName: _jsxFileName,
|
|
568
|
-
lineNumber:
|
|
571
|
+
lineNumber: 685,
|
|
569
572
|
columnNumber: 9
|
|
570
573
|
}
|
|
571
574
|
}, _react["default"].createElement(_MessageContext.MessageProvider, {
|
|
@@ -573,14 +576,14 @@ var MessageWithContext = function MessageWithContext(props) {
|
|
|
573
576
|
__self: _this,
|
|
574
577
|
__source: {
|
|
575
578
|
fileName: _jsxFileName,
|
|
576
|
-
lineNumber:
|
|
579
|
+
lineNumber: 692,
|
|
577
580
|
columnNumber: 11
|
|
578
581
|
}
|
|
579
582
|
}, _react["default"].createElement(MessageSimple, {
|
|
580
583
|
__self: _this,
|
|
581
584
|
__source: {
|
|
582
585
|
fileName: _jsxFileName,
|
|
583
|
-
lineNumber:
|
|
586
|
+
lineNumber: 693,
|
|
584
587
|
columnNumber: 13
|
|
585
588
|
}
|
|
586
589
|
})))));
|
|
@@ -705,7 +708,7 @@ var Message = function Message(props) {
|
|
|
705
708
|
__self: _this,
|
|
706
709
|
__source: {
|
|
707
710
|
fileName: _jsxFileName,
|
|
708
|
-
lineNumber:
|
|
711
|
+
lineNumber: 853,
|
|
709
712
|
columnNumber: 5
|
|
710
713
|
}
|
|
711
714
|
}));
|