stream-chat-react-native-core 4.11.1-beta.3 → 4.12.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Attachment/Gallery.js +2 -2
- package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
- package/lib/commonjs/components/Attachment/{GallaryImage.js → GalleryImage.js} +3 -3
- package/lib/{module/components/Attachment/GallaryImage.js.map → commonjs/components/Attachment/GalleryImage.js.map} +1 -1
- package/lib/commonjs/components/Attachment/Giphy.js +1 -1
- package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
- package/lib/commonjs/components/Attachment/VideoThumbnail.js +4 -5
- package/lib/commonjs/components/Attachment/VideoThumbnail.js.map +1 -1
- package/lib/commonjs/components/Avatar/Avatar.js +1 -1
- package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
- package/lib/commonjs/components/Avatar/GroupAvatar.js +1 -1
- package/lib/commonjs/components/Avatar/GroupAvatar.js.map +1 -1
- package/lib/commonjs/components/Channel/Channel.js +18 -13
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -0
- package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +17 -12
- package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/ImageGallery.js +37 -30
- package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +5 -3
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +10 -6
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +17 -14
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +1 -0
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryOverlay.js +2 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryOverlay.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +36 -18
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +3 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js +5 -4
- package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js +8 -6
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.test.js +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -1
- package/lib/commonjs/components/MessageInput/AudioAttachmentUploadPreview.js +538 -0
- package/lib/commonjs/components/MessageInput/AudioAttachmentUploadPreview.js.map +1 -0
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js +143 -32
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/{module/components/ImageGallery/components → commonjs/components/ProgressControl}/ProgressControl.js +37 -24
- package/lib/commonjs/components/ProgressControl/ProgressControl.js.map +1 -0
- package/lib/commonjs/components/index.js +26 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +5 -2
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +7 -2
- package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js +9 -0
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/icons/Pause.js +2 -2
- package/lib/commonjs/icons/Pause.js.map +1 -1
- package/lib/commonjs/mock-builders/api/channelMocks.js +1 -0
- package/lib/commonjs/mock-builders/api/channelMocks.js.map +1 -1
- package/lib/commonjs/native.js +13 -5
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Gallery.js +2 -2
- package/lib/module/components/Attachment/Gallery.js.map +1 -1
- package/lib/module/components/Attachment/{GallaryImage.js → GalleryImage.js} +3 -3
- package/lib/{commonjs/components/Attachment/GallaryImage.js.map → module/components/Attachment/GalleryImage.js.map} +1 -1
- package/lib/module/components/Attachment/Giphy.js +1 -1
- package/lib/module/components/Attachment/Giphy.js.map +1 -1
- package/lib/module/components/Attachment/VideoThumbnail.js +4 -5
- package/lib/module/components/Attachment/VideoThumbnail.js.map +1 -1
- package/lib/module/components/Avatar/Avatar.js +1 -1
- package/lib/module/components/Avatar/Avatar.js.map +1 -1
- package/lib/module/components/Avatar/GroupAvatar.js +1 -1
- package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
- package/lib/module/components/Channel/Channel.js +18 -13
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -0
- package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreview.js +17 -12
- package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
- package/lib/module/components/ImageGallery/ImageGallery.js +37 -30
- package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +5 -3
- package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
- package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +10 -6
- package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +17 -14
- package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +1 -0
- package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryOverlay.js +2 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryOverlay.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +36 -18
- package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGrid.js +3 -1
- package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGridHandle.js +5 -4
- package/lib/module/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
- package/lib/module/components/Message/Message.js +8 -6
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.js +1 -1
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js +1 -1
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -1
- package/lib/module/components/MessageInput/AudioAttachmentUploadPreview.js +538 -0
- package/lib/module/components/MessageInput/AudioAttachmentUploadPreview.js.map +1 -0
- package/lib/module/components/MessageInput/FileUploadPreview.js +143 -32
- package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/{commonjs/components/ImageGallery/components → module/components/ProgressControl}/ProgressControl.js +37 -24
- package/lib/module/components/ProgressControl/ProgressControl.js.map +1 -0
- package/lib/module/components/index.js +26 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +5 -2
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +7 -2
- package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js +9 -0
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/icons/Pause.js +2 -2
- package/lib/module/icons/Pause.js.map +1 -1
- package/lib/module/mock-builders/api/channelMocks.js +1 -0
- package/lib/module/mock-builders/api/channelMocks.js.map +1 -1
- package/lib/module/native.js +13 -5
- package/lib/module/native.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Attachment/{GallaryImage.d.ts → GalleryImage.d.ts} +0 -0
- package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -1
- package/lib/typescript/components/ImageGallery/__tests__/AnimatedVideoGallery.test.d.ts +1 -0
- package/lib/typescript/components/ImageGallery/__tests__/ImageGallery.test.d.ts +1 -0
- package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryFooter.test.d.ts +1 -0
- package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryGrid.test.d.ts +1 -0
- package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryGridHandle.test.d.ts +1 -0
- package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryHeader.test.d.ts +1 -0
- package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryOverlay.test.d.ts +1 -0
- package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryVideoControl.test.d.ts +1 -0
- package/lib/typescript/components/ImageGallery/components/AnimatedGalleryImage.d.ts +1 -0
- package/lib/typescript/components/ImageGallery/components/AnimatedGalleryVideo.d.ts +2 -3
- package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +2 -1
- package/lib/typescript/components/ImageGallery/components/ImageGrid.d.ts +2 -3
- package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +1 -1
- package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +1 -1
- package/lib/typescript/components/MessageInput/AudioAttachmentUploadPreview.d.ts +26 -0
- package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +1 -1
- package/lib/typescript/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.d.ts +1 -0
- package/lib/typescript/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.d.ts +1 -0
- package/lib/typescript/components/ProgressControl/ProgressControl.d.ts +11 -0
- package/lib/typescript/components/index.d.ts +2 -0
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts +1 -1
- package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +7 -1
- package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts +9 -0
- package/lib/typescript/native.d.ts +59 -2
- package/package.json +1 -1
- package/src/components/Attachment/Gallery.tsx +1 -1
- package/src/components/Attachment/{GallaryImage.tsx → GalleryImage.tsx} +1 -1
- package/src/components/Attachment/Giphy.tsx +1 -1
- package/src/components/Attachment/VideoThumbnail.tsx +1 -2
- package/src/components/Attachment/__tests__/Gallery.test.js +6 -6
- package/src/components/Attachment/__tests__/Giphy.test.js +4 -4
- package/src/components/Avatar/Avatar.tsx +1 -1
- package/src/components/Avatar/GroupAvatar.tsx +1 -1
- package/src/components/Channel/Channel.tsx +3 -0
- package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +2 -0
- package/src/components/ChannelPreview/ChannelPreview.tsx +14 -12
- package/src/components/ImageGallery/ImageGallery.tsx +21 -11
- package/src/components/ImageGallery/__tests__/AnimatedVideoGallery.test.tsx +241 -0
- package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +192 -0
- package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +190 -0
- package/src/components/ImageGallery/__tests__/ImageGalleryGrid.test.tsx +98 -0
- package/src/components/ImageGallery/__tests__/ImageGalleryGridHandle.test.tsx +79 -0
- package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +172 -0
- package/src/components/ImageGallery/__tests__/ImageGalleryOverlay.test.tsx +94 -0
- package/src/components/ImageGallery/__tests__/ImageGalleryVideoControl.test.tsx +84 -0
- package/src/components/ImageGallery/components/AnimatedGalleryImage.tsx +3 -0
- package/src/components/ImageGallery/components/AnimatedGalleryVideo.tsx +11 -3
- package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +9 -2
- package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +1 -1
- package/src/components/ImageGallery/components/ImageGalleryOverlay.tsx +6 -1
- package/src/components/ImageGallery/components/ImageGalleryVideoControl.tsx +22 -9
- package/src/components/ImageGallery/components/ImageGrid.tsx +19 -17
- package/src/components/ImageGallery/components/ImageGridHandle.tsx +4 -1
- package/src/components/Message/Message.tsx +2 -1
- package/src/components/Message/MessageSimple/__tests__/MessageContent.test.js +9 -3
- package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessageAvatar.test.js.snap +1 -1
- package/src/components/Message/MessageSimple/utils/parseLinks.test.ts +4 -0
- package/src/components/Message/MessageSimple/utils/parseLinks.ts +1 -1
- package/src/components/MessageInput/AudioAttachmentUploadPreview.tsx +362 -0
- package/src/components/MessageInput/FileUploadPreview.tsx +162 -57
- package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.tsx +199 -0
- package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.tsx +215 -0
- package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +64 -0
- package/src/components/{ImageGallery/components → ProgressControl}/ProgressControl.tsx +37 -19
- package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +4 -4
- package/src/components/index.ts +3 -0
- package/src/contexts/messageInputContext/MessageInputContext.tsx +13 -0
- package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +5 -1
- package/src/contexts/themeContext/utils/theme.ts +15 -0
- package/src/icons/Pause.tsx +2 -2
- package/src/mock-builders/api/channelMocks.tsx +1 -0
- package/src/native.ts +67 -7
- package/src/version.json +1 -1
- package/lib/commonjs/components/ImageGallery/components/ProgressControl.js.map +0 -1
- package/lib/module/components/ImageGallery/components/ProgressControl.js.map +0 -1
- package/lib/typescript/components/ImageGallery/components/ProgressControl.d.ts +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["AnimatedGalleryImage.tsx"],"names":["screenWidth","halfScreenWidth","oneEighth","AnimatedGalleryImage","React","memo","props","index","offsetScale","photo","previous","scale","screenHeight","selected","shouldRender","style","translateX","translateY","AnimatedGalleryImageStyle","xScaleOffset","yScaleOffset","transform","value","scaleX","uri","prevProps","nextProps","displayName"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AAEA;;;;;;;;;AAEA,IAAMA,WAAW,GAAG,eAAG,GAAH,CAApB;AACA,IAAMC,eAAe,GAAG,eAAG,EAAH,CAAxB;AACA,IAAMC,SAAS,GAAG,IAAI,CAAtB;;
|
|
1
|
+
{"version":3,"sources":["AnimatedGalleryImage.tsx"],"names":["screenWidth","halfScreenWidth","oneEighth","AnimatedGalleryImage","React","memo","props","accessibilityLabel","index","offsetScale","photo","previous","scale","screenHeight","selected","shouldRender","style","translateX","translateY","AnimatedGalleryImageStyle","xScaleOffset","yScaleOffset","transform","value","scaleX","uri","prevProps","nextProps","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\nimport type { ImageStyle, StyleProp } from 'react-native';\nimport Animated, { useAnimatedStyle } from 'react-native-reanimated';\n\nimport { vw } from '../../../utils/utils';\n\nconst screenWidth = vw(100);\nconst halfScreenWidth = vw(50);\nconst oneEighth = 1 / 8;\n\ntype Props = {\n accessibilityLabel: string;\n index: number;\n offsetScale: Animated.SharedValue<number>;\n photo: { uri: string };\n previous: boolean;\n scale: Animated.SharedValue<number>;\n screenHeight: number;\n selected: boolean;\n shouldRender: boolean;\n translateX: Animated.SharedValue<number>;\n translateY: Animated.SharedValue<number>;\n style?: StyleProp<ImageStyle>;\n};\n\nexport const AnimatedGalleryImage: React.FC<Props> = React.memo(\n (props) => {\n const {\n accessibilityLabel,\n index,\n offsetScale,\n photo,\n previous,\n scale,\n screenHeight,\n selected,\n shouldRender,\n style,\n translateX,\n translateY,\n } = props;\n\n /**\n * The current image, designated by selected is scaled and translated\n * based on the gestures. The rendered images before and after the\n * currently selected image also translated in X if the scale is\n * greater than one so they keep the same distance from the selected\n * image as it is scaled. If the scale is less than one they stay in\n * place as to not come into the screen when the image shrinks.\n */\n const AnimatedGalleryImageStyle = useAnimatedStyle<ImageStyle>(() => {\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.Image\n accessibilityLabel={accessibilityLabel}\n resizeMode={'contain'}\n source={{ uri: photo.uri }}\n style={[\n style,\n AnimatedGalleryImageStyle,\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 );\n },\n (prevProps, nextProps) => {\n if (\n prevProps.selected === nextProps.selected &&\n prevProps.shouldRender === nextProps.shouldRender &&\n prevProps.photo.uri === nextProps.photo.uri &&\n prevProps.previous === nextProps.previous &&\n prevProps.index === nextProps.index &&\n prevProps.screenHeight === nextProps.screenHeight\n ) {\n return true;\n }\n return false;\n },\n);\n\nAnimatedGalleryImage.displayName = 'AnimatedGalleryImage';\n"]}
|
|
@@ -135,6 +135,7 @@ var AnimatedGalleryVideo = _react["default"].memo(function (props) {
|
|
|
135
135
|
|
|
136
136
|
if (!shouldRender) {
|
|
137
137
|
return _react["default"].createElement(_reactNative.View, {
|
|
138
|
+
accessibilityLabel: "Empty View Image Gallery",
|
|
138
139
|
style: [style, {
|
|
139
140
|
transform: [{
|
|
140
141
|
scale: oneEighth
|
|
@@ -143,13 +144,14 @@ var AnimatedGalleryVideo = _react["default"].memo(function (props) {
|
|
|
143
144
|
__self: _this,
|
|
144
145
|
__source: {
|
|
145
146
|
fileName: _jsxFileName,
|
|
146
|
-
lineNumber:
|
|
147
|
-
columnNumber:
|
|
147
|
+
lineNumber: 158,
|
|
148
|
+
columnNumber: 9
|
|
148
149
|
}
|
|
149
150
|
});
|
|
150
151
|
}
|
|
151
152
|
|
|
152
153
|
return _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
154
|
+
accessibilityLabel: "Image Gallery Video",
|
|
153
155
|
style: [style, animatedViewStyles, {
|
|
154
156
|
transform: [{
|
|
155
157
|
scaleX: -1
|
|
@@ -164,7 +166,7 @@ var AnimatedGalleryVideo = _react["default"].memo(function (props) {
|
|
|
164
166
|
__self: _this,
|
|
165
167
|
__source: {
|
|
166
168
|
fileName: _jsxFileName,
|
|
167
|
-
lineNumber:
|
|
169
|
+
lineNumber: 166,
|
|
168
170
|
columnNumber: 7
|
|
169
171
|
}
|
|
170
172
|
}, (0, _native.isVideoPackageAvailable)() && _react["default"].createElement(_native.Video, {
|
|
@@ -177,15 +179,17 @@ var AnimatedGalleryVideo = _react["default"].memo(function (props) {
|
|
|
177
179
|
paused: paused,
|
|
178
180
|
resizeMode: "contain",
|
|
179
181
|
style: style,
|
|
182
|
+
testID: "video-player",
|
|
180
183
|
uri: source.uri,
|
|
181
184
|
videoRef: videoRef,
|
|
182
185
|
__self: _this,
|
|
183
186
|
__source: {
|
|
184
187
|
fileName: _jsxFileName,
|
|
185
|
-
lineNumber:
|
|
188
|
+
lineNumber: 184,
|
|
186
189
|
columnNumber: 11
|
|
187
190
|
}
|
|
188
191
|
}), _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
192
|
+
accessibilityLabel: "Spinner",
|
|
189
193
|
style: [styles.activityIndicator, {
|
|
190
194
|
opacity: opacity,
|
|
191
195
|
transform: [{
|
|
@@ -199,7 +203,7 @@ var AnimatedGalleryVideo = _react["default"].memo(function (props) {
|
|
|
199
203
|
__self: _this,
|
|
200
204
|
__source: {
|
|
201
205
|
fileName: _jsxFileName,
|
|
202
|
-
lineNumber:
|
|
206
|
+
lineNumber: 199,
|
|
203
207
|
columnNumber: 9
|
|
204
208
|
}
|
|
205
209
|
}, _react["default"].createElement(_Spinner.Spinner, {
|
|
@@ -208,7 +212,7 @@ var AnimatedGalleryVideo = _react["default"].memo(function (props) {
|
|
|
208
212
|
__self: _this,
|
|
209
213
|
__source: {
|
|
210
214
|
fileName: _jsxFileName,
|
|
211
|
-
lineNumber:
|
|
215
|
+
lineNumber: 213,
|
|
212
216
|
columnNumber: 11
|
|
213
217
|
}
|
|
214
218
|
})));
|
|
@@ -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 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"]}
|
|
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\nexport type AnimatedGalleryVideoType = {\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<AnimatedGalleryVideoType> = 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 (\n <View\n accessibilityLabel='Empty View Image Gallery'\n style={[style, { transform: [{ scale: oneEighth }] }]}\n />\n );\n }\n\n return (\n <Animated.View\n accessibilityLabel='Image Gallery Video'\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 testID='video-player'\n uri={source.uri}\n videoRef={videoRef}\n />\n )}\n <Animated.View\n accessibilityLabel='Spinner'\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"]}
|
|
@@ -73,7 +73,8 @@ var styles = _reactNative.StyleSheet.create({
|
|
|
73
73
|
});
|
|
74
74
|
|
|
75
75
|
var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props) {
|
|
76
|
-
var
|
|
76
|
+
var accessibilityLabel = props.accessibilityLabel,
|
|
77
|
+
centerElement = props.centerElement,
|
|
77
78
|
duration = props.duration,
|
|
78
79
|
GridIcon = props.GridIcon,
|
|
79
80
|
leftElement = props.leftElement,
|
|
@@ -183,6 +184,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
183
184
|
}();
|
|
184
185
|
|
|
185
186
|
return _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
187
|
+
accessibilityLabel: accessibilityLabel,
|
|
186
188
|
onLayout: function onLayout(event) {
|
|
187
189
|
return setHeight(event.nativeEvent.layout.height);
|
|
188
190
|
},
|
|
@@ -191,7 +193,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
191
193
|
__self: _this,
|
|
192
194
|
__source: {
|
|
193
195
|
fileName: _jsxFileName,
|
|
194
|
-
lineNumber:
|
|
196
|
+
lineNumber: 186,
|
|
195
197
|
columnNumber: 5
|
|
196
198
|
}
|
|
197
199
|
}, _react["default"].createElement(ReanimatedSafeAreaView, {
|
|
@@ -201,7 +203,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
201
203
|
__self: _this,
|
|
202
204
|
__source: {
|
|
203
205
|
fileName: _jsxFileName,
|
|
204
|
-
lineNumber:
|
|
206
|
+
lineNumber: 192,
|
|
205
207
|
columnNumber: 7
|
|
206
208
|
}
|
|
207
209
|
}, photo.type === 'video' ? videoControlElement ? videoControlElement({
|
|
@@ -219,7 +221,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
219
221
|
__self: _this,
|
|
220
222
|
__source: {
|
|
221
223
|
fileName: _jsxFileName,
|
|
222
|
-
lineNumber:
|
|
224
|
+
lineNumber: 197,
|
|
223
225
|
columnNumber: 13
|
|
224
226
|
}
|
|
225
227
|
}) : null, _react["default"].createElement(_reactNative.View, {
|
|
@@ -229,7 +231,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
229
231
|
__self: _this,
|
|
230
232
|
__source: {
|
|
231
233
|
fileName: _jsxFileName,
|
|
232
|
-
lineNumber:
|
|
234
|
+
lineNumber: 206,
|
|
233
235
|
columnNumber: 9
|
|
234
236
|
}
|
|
235
237
|
}, leftElement ? leftElement({
|
|
@@ -238,12 +240,13 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
238
240
|
share: share,
|
|
239
241
|
shareMenuOpen: shareMenuOpen
|
|
240
242
|
}) : _react["default"].createElement(_reactNative.TouchableOpacity, {
|
|
243
|
+
accessibilityLabel: "Share Button",
|
|
241
244
|
disabled: shareMenuOpen,
|
|
242
245
|
onPress: share,
|
|
243
246
|
__self: _this,
|
|
244
247
|
__source: {
|
|
245
248
|
fileName: _jsxFileName,
|
|
246
|
-
lineNumber:
|
|
249
|
+
lineNumber: 210,
|
|
247
250
|
columnNumber: 13
|
|
248
251
|
}
|
|
249
252
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -251,7 +254,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
251
254
|
__self: _this,
|
|
252
255
|
__source: {
|
|
253
256
|
fileName: _jsxFileName,
|
|
254
|
-
lineNumber:
|
|
257
|
+
lineNumber: 215,
|
|
255
258
|
columnNumber: 15
|
|
256
259
|
}
|
|
257
260
|
}, ShareIcon ? ShareIcon : _react["default"].createElement(_icons.Share, {
|
|
@@ -259,7 +262,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
259
262
|
__self: _this,
|
|
260
263
|
__source: {
|
|
261
264
|
fileName: _jsxFileName,
|
|
262
|
-
lineNumber:
|
|
265
|
+
lineNumber: 216,
|
|
263
266
|
columnNumber: 42
|
|
264
267
|
}
|
|
265
268
|
}))), centerElement ? centerElement({
|
|
@@ -272,7 +275,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
272
275
|
__self: _this,
|
|
273
276
|
__source: {
|
|
274
277
|
fileName: _jsxFileName,
|
|
275
|
-
lineNumber:
|
|
278
|
+
lineNumber: 223,
|
|
276
279
|
columnNumber: 13
|
|
277
280
|
}
|
|
278
281
|
}, _react["default"].createElement(_reactNative.Text, {
|
|
@@ -282,7 +285,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
282
285
|
__self: _this,
|
|
283
286
|
__source: {
|
|
284
287
|
fileName: _jsxFileName,
|
|
285
|
-
lineNumber:
|
|
288
|
+
lineNumber: 224,
|
|
286
289
|
columnNumber: 15
|
|
287
290
|
}
|
|
288
291
|
}, t('{{ index }} of {{ photoLength }}', {
|
|
@@ -298,7 +301,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
298
301
|
__self: _this,
|
|
299
302
|
__source: {
|
|
300
303
|
fileName: _jsxFileName,
|
|
301
|
-
lineNumber:
|
|
304
|
+
lineNumber: 235,
|
|
302
305
|
columnNumber: 13
|
|
303
306
|
}
|
|
304
307
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -306,14 +309,14 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
306
309
|
__self: _this,
|
|
307
310
|
__source: {
|
|
308
311
|
fileName: _jsxFileName,
|
|
309
|
-
lineNumber:
|
|
312
|
+
lineNumber: 236,
|
|
310
313
|
columnNumber: 15
|
|
311
314
|
}
|
|
312
315
|
}, GridIcon ? GridIcon : _react["default"].createElement(_icons.Grid, {
|
|
313
316
|
__self: _this,
|
|
314
317
|
__source: {
|
|
315
318
|
fileName: _jsxFileName,
|
|
316
|
-
lineNumber:
|
|
319
|
+
lineNumber: 237,
|
|
317
320
|
columnNumber: 40
|
|
318
321
|
}
|
|
319
322
|
}))))));
|
|
@@ -348,7 +351,7 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
|
|
|
348
351
|
__self: _this,
|
|
349
352
|
__source: {
|
|
350
353
|
fileName: _jsxFileName,
|
|
351
|
-
lineNumber:
|
|
354
|
+
lineNumber: 292,
|
|
352
355
|
columnNumber: 6
|
|
353
356
|
}
|
|
354
357
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ImageGalleryFooter.tsx"],"names":["ReanimatedSafeAreaView","Animated","createAnimatedComponent","SafeAreaView","styles","StyleSheet","create","centerContainer","alignItems","flex","justifyContent","imageCountText","fontSize","fontWeight","innerContainer","flexDirection","height","leftContainer","marginLeft","rightContainer","marginRight","wrapper","bottom","left","position","right","ImageGalleryFooterWithContext","props","centerElement","duration","GridIcon","leftElement","onPlayPause","onProgressDrag","opacity","openGridView","paused","photo","photoLength","progress","rightElement","selectedIndex","ShareIcon","videoControlElement","visible","setHeight","shareMenuOpen","setShareMenuOpen","theme","colors","black","white","imageGallery","footer","container","t","footerStyle","value","transform","translateY","Extrapolate","CLAMP","share","extension","mime_type","split","fileName","user","id","messageId","fromUrl","uri","localFile","type","url","console","log","event","nativeEvent","layout","backgroundColor","color","index","areEqual","prevProps","nextProps","prevDuration","prevPaused","prevProgress","prevSelectedIndex","nextDuration","nextPaused","nextProgress","nextSelectedIndex","isDurationEqual","isPausedEqual","isProgressEqual","isSelectedIndexEqual","MemoizedImageGalleryFooter","React","memo","ImageGalleryFooter","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { SafeAreaView, StyleSheet, Text, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport Animated, { Extrapolate, interpolate, useAnimatedStyle } from 'react-native-reanimated';\n\nimport { ImageGalleryVideoControl } from './ImageGalleryVideoControl';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { Grid as GridIconDefault, Share as ShareIconDefault } from '../../../icons';\nimport { deleteFile, saveFile, shareImage } from '../../../native';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { Photo } from '../ImageGallery';\n\nconst ReanimatedSafeAreaView = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(SafeAreaView)\n : SafeAreaView;\n\nconst styles = StyleSheet.create({\n centerContainer: {\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n imageCountText: {\n fontSize: 16,\n fontWeight: '600',\n },\n innerContainer: {\n flexDirection: 'row',\n height: 56,\n },\n leftContainer: {\n flex: 1,\n justifyContent: 'center',\n marginLeft: 8,\n },\n rightContainer: {\n flex: 1,\n justifyContent: 'center',\n marginRight: 8,\n },\n wrapper: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n },\n});\n\nexport type ImageGalleryFooterCustomComponent<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ({\n openGridView,\n photo,\n share,\n shareMenuOpen,\n}: {\n openGridView: () => void;\n share: () => Promise<void>;\n shareMenuOpen: boolean;\n photo?: Photo<StreamChatGenerics>;\n}) => React.ReactElement | null;\n\nexport type ImageGalleryFooterVideoControlProps = {\n duration: number;\n onPlayPause: () => void;\n onProgressDrag: (progress: number) => void;\n paused: boolean;\n progress: number;\n};\n\nexport type ImageGalleryFooterVideoControlComponent = ({\n duration,\n onPlayPause,\n onProgressDrag,\n paused,\n progress,\n}: ImageGalleryFooterVideoControlProps) => React.ReactElement | null;\n\nexport type ImageGalleryFooterCustomComponentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n centerElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n GridIcon?: React.ReactElement;\n leftElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n rightElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n ShareIcon?: React.ReactElement;\n videoControlElement?: ImageGalleryFooterVideoControlComponent;\n};\n\ntype ImageGalleryFooterPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryFooterCustomComponentProps<StreamChatGenerics> & {\n duration: number;\n onPlayPause: () => void;\n onProgressDrag: (progress: number) => void;\n opacity: Animated.SharedValue<number>;\n openGridView: () => void;\n paused: boolean;\n photo: Photo<StreamChatGenerics>;\n photoLength: number;\n progress: number;\n selectedIndex: number;\n visible: Animated.SharedValue<number>;\n};\n\nexport const ImageGalleryFooterWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n centerElement,\n duration,\n GridIcon,\n leftElement,\n onPlayPause,\n onProgressDrag,\n opacity,\n openGridView,\n paused,\n photo,\n photoLength,\n progress,\n rightElement,\n selectedIndex,\n ShareIcon,\n videoControlElement,\n visible,\n } = props;\n\n const [height, setHeight] = useState(200);\n const [shareMenuOpen, setShareMenuOpen] = useState(false);\n const {\n theme: {\n colors: { black, white },\n imageGallery: {\n footer: {\n centerContainer,\n container,\n imageCountText,\n innerContainer,\n leftContainer,\n rightContainer,\n },\n },\n },\n } = useTheme();\n const { t } = useTranslationContext();\n\n const footerStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: opacity.value,\n transform: [\n {\n translateY: interpolate(visible.value, [0, 1], [height, 0], Extrapolate.CLAMP),\n },\n ],\n }),\n [height],\n );\n\n const share = async () => {\n setShareMenuOpen(true);\n try {\n const extension = photo.mime_type?.split('/')[1] || 'jpg';\n const localFile = await saveFile({\n fileName: `${photo.user?.id || 'ChatPhoto'}-${\n photo.messageId\n }-${selectedIndex}.${extension}`,\n fromUrl: photo.uri,\n });\n // `image/jpeg` is added for the case where the mime_type isn't available for a file/image\n await shareImage({ type: photo.mime_type || 'image/jpeg', url: localFile });\n await deleteFile({ uri: localFile });\n } catch (error) {\n console.log(error);\n }\n setShareMenuOpen(false);\n };\n\n return (\n <Animated.View\n onLayout={(event) => setHeight(event.nativeEvent.layout.height)}\n pointerEvents={'box-none'}\n style={styles.wrapper}\n >\n <ReanimatedSafeAreaView style={[container, footerStyle, { backgroundColor: white }]}>\n {photo.type === 'video' ? (\n videoControlElement ? (\n videoControlElement({ duration, onPlayPause, onProgressDrag, paused, progress })\n ) : (\n <ImageGalleryVideoControl\n duration={duration}\n onPlayPause={onPlayPause}\n onProgressDrag={onProgressDrag}\n paused={paused}\n progress={progress}\n />\n )\n ) : null}\n <View style={[styles.innerContainer, innerContainer, { backgroundColor: white }]}>\n {leftElement ? (\n leftElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <TouchableOpacity disabled={shareMenuOpen} onPress={share}>\n <View style={[styles.leftContainer, leftContainer]}>\n {ShareIcon ? ShareIcon : <ShareIconDefault pathFill={black} />}\n </View>\n </TouchableOpacity>\n )}\n {centerElement ? (\n centerElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <View style={[styles.centerContainer, centerContainer]}>\n <Text style={[styles.imageCountText, { color: black }, imageCountText]}>\n {t('{{ index }} of {{ photoLength }}', {\n index: photoLength - selectedIndex,\n photoLength,\n })}\n </Text>\n </View>\n )}\n {rightElement ? (\n rightElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <TouchableOpacity onPress={openGridView}>\n <View style={[styles.rightContainer, rightContainer]}>\n {GridIcon ? GridIcon : <GridIconDefault />}\n </View>\n </TouchableOpacity>\n )}\n </View>\n </ReanimatedSafeAreaView>\n </Animated.View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n nextProps: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n duration: prevDuration,\n paused: prevPaused,\n progress: prevProgress,\n selectedIndex: prevSelectedIndex,\n } = prevProps;\n const {\n duration: nextDuration,\n paused: nextPaused,\n progress: nextProgress,\n selectedIndex: nextSelectedIndex,\n } = nextProps;\n\n const isDurationEqual = prevDuration === nextDuration;\n if (!isDurationEqual) return false;\n\n const isPausedEqual = prevPaused === nextPaused;\n if (!isPausedEqual) return false;\n\n const isProgressEqual = prevProgress === nextProgress;\n if (!isProgressEqual) return false;\n\n const isSelectedIndexEqual = prevSelectedIndex === nextSelectedIndex;\n if (!isSelectedIndexEqual) return false;\n\n return true;\n};\n\nconst MemoizedImageGalleryFooter = React.memo(\n ImageGalleryFooterWithContext,\n areEqual,\n) as typeof ImageGalleryFooterWithContext;\n\nexport type ImageGalleryFooterProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryFooterPropsWithContext<StreamChatGenerics>;\n\nexport const ImageGalleryFooter = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGalleryFooterProps<StreamChatGenerics>,\n) => <MemoizedImageGalleryFooter {...props} />;\n\nImageGalleryFooter.displayName = 'ImageGalleryFooter{imageGallery{footer}}';\n"]}
|
|
1
|
+
{"version":3,"sources":["ImageGalleryFooter.tsx"],"names":["ReanimatedSafeAreaView","Animated","createAnimatedComponent","SafeAreaView","styles","StyleSheet","create","centerContainer","alignItems","flex","justifyContent","imageCountText","fontSize","fontWeight","innerContainer","flexDirection","height","leftContainer","marginLeft","rightContainer","marginRight","wrapper","bottom","left","position","right","ImageGalleryFooterWithContext","props","accessibilityLabel","centerElement","duration","GridIcon","leftElement","onPlayPause","onProgressDrag","opacity","openGridView","paused","photo","photoLength","progress","rightElement","selectedIndex","ShareIcon","videoControlElement","visible","setHeight","shareMenuOpen","setShareMenuOpen","theme","colors","black","white","imageGallery","footer","container","t","footerStyle","value","transform","translateY","Extrapolate","CLAMP","share","extension","mime_type","split","fileName","user","id","messageId","fromUrl","uri","localFile","type","url","console","log","event","nativeEvent","layout","backgroundColor","color","index","areEqual","prevProps","nextProps","prevDuration","prevPaused","prevProgress","prevSelectedIndex","nextDuration","nextPaused","nextProgress","nextSelectedIndex","isDurationEqual","isPausedEqual","isProgressEqual","isSelectedIndexEqual","MemoizedImageGalleryFooter","React","memo","ImageGalleryFooter","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { SafeAreaView, StyleSheet, Text, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport Animated, { Extrapolate, interpolate, useAnimatedStyle } from 'react-native-reanimated';\n\nimport { ImageGalleryVideoControl } from './ImageGalleryVideoControl';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { Grid as GridIconDefault, Share as ShareIconDefault } from '../../../icons';\nimport { deleteFile, saveFile, shareImage } from '../../../native';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { Photo } from '../ImageGallery';\n\nconst ReanimatedSafeAreaView = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(SafeAreaView)\n : SafeAreaView;\n\nconst styles = StyleSheet.create({\n centerContainer: {\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n imageCountText: {\n fontSize: 16,\n fontWeight: '600',\n },\n innerContainer: {\n flexDirection: 'row',\n height: 56,\n },\n leftContainer: {\n flex: 1,\n justifyContent: 'center',\n marginLeft: 8,\n },\n rightContainer: {\n flex: 1,\n justifyContent: 'center',\n marginRight: 8,\n },\n wrapper: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n },\n});\n\nexport type ImageGalleryFooterCustomComponent<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ({\n openGridView,\n photo,\n share,\n shareMenuOpen,\n}: {\n openGridView: () => void;\n share: () => Promise<void>;\n shareMenuOpen: boolean;\n photo?: Photo<StreamChatGenerics>;\n}) => React.ReactElement | null;\n\nexport type ImageGalleryFooterVideoControlProps = {\n duration: number;\n onPlayPause: (status?: boolean) => void;\n onProgressDrag: (progress: number) => void;\n paused: boolean;\n progress: number;\n};\n\nexport type ImageGalleryFooterVideoControlComponent = ({\n duration,\n onPlayPause,\n onProgressDrag,\n paused,\n progress,\n}: ImageGalleryFooterVideoControlProps) => React.ReactElement | null;\n\nexport type ImageGalleryFooterCustomComponentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n centerElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n GridIcon?: React.ReactElement;\n leftElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n rightElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n ShareIcon?: React.ReactElement;\n videoControlElement?: ImageGalleryFooterVideoControlComponent;\n};\n\ntype ImageGalleryFooterPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryFooterCustomComponentProps<StreamChatGenerics> & {\n accessibilityLabel: string;\n duration: number;\n onPlayPause: () => void;\n onProgressDrag: (progress: number) => void;\n opacity: Animated.SharedValue<number>;\n openGridView: () => void;\n paused: boolean;\n photo: Photo<StreamChatGenerics>;\n photoLength: number;\n progress: number;\n selectedIndex: number;\n visible: Animated.SharedValue<number>;\n};\n\nexport const ImageGalleryFooterWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n accessibilityLabel,\n centerElement,\n duration,\n GridIcon,\n leftElement,\n onPlayPause,\n onProgressDrag,\n opacity,\n openGridView,\n paused,\n photo,\n photoLength,\n progress,\n rightElement,\n selectedIndex,\n ShareIcon,\n videoControlElement,\n visible,\n } = props;\n\n const [height, setHeight] = useState(200);\n const [shareMenuOpen, setShareMenuOpen] = useState(false);\n const {\n theme: {\n colors: { black, white },\n imageGallery: {\n footer: {\n centerContainer,\n container,\n imageCountText,\n innerContainer,\n leftContainer,\n rightContainer,\n },\n },\n },\n } = useTheme();\n const { t } = useTranslationContext();\n\n const footerStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: opacity.value,\n transform: [\n {\n translateY: interpolate(visible.value, [0, 1], [height, 0], Extrapolate.CLAMP),\n },\n ],\n }),\n [height],\n );\n\n const share = async () => {\n setShareMenuOpen(true);\n try {\n const extension = photo.mime_type?.split('/')[1] || 'jpg';\n const localFile = await saveFile({\n fileName: `${photo.user?.id || 'ChatPhoto'}-${\n photo.messageId\n }-${selectedIndex}.${extension}`,\n fromUrl: photo.uri,\n });\n // `image/jpeg` is added for the case where the mime_type isn't available for a file/image\n await shareImage({ type: photo.mime_type || 'image/jpeg', url: localFile });\n await deleteFile({ uri: localFile });\n } catch (error) {\n console.log(error);\n }\n setShareMenuOpen(false);\n };\n\n return (\n <Animated.View\n accessibilityLabel={accessibilityLabel}\n onLayout={(event) => setHeight(event.nativeEvent.layout.height)}\n pointerEvents={'box-none'}\n style={styles.wrapper}\n >\n <ReanimatedSafeAreaView style={[container, footerStyle, { backgroundColor: white }]}>\n {photo.type === 'video' ? (\n videoControlElement ? (\n videoControlElement({ duration, onPlayPause, onProgressDrag, paused, progress })\n ) : (\n <ImageGalleryVideoControl\n duration={duration}\n onPlayPause={onPlayPause}\n onProgressDrag={onProgressDrag}\n paused={paused}\n progress={progress}\n />\n )\n ) : null}\n <View style={[styles.innerContainer, innerContainer, { backgroundColor: white }]}>\n {leftElement ? (\n leftElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <TouchableOpacity\n accessibilityLabel='Share Button'\n disabled={shareMenuOpen}\n onPress={share}\n >\n <View style={[styles.leftContainer, leftContainer]}>\n {ShareIcon ? ShareIcon : <ShareIconDefault pathFill={black} />}\n </View>\n </TouchableOpacity>\n )}\n {centerElement ? (\n centerElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <View style={[styles.centerContainer, centerContainer]}>\n <Text style={[styles.imageCountText, { color: black }, imageCountText]}>\n {t('{{ index }} of {{ photoLength }}', {\n index: photoLength - selectedIndex,\n photoLength,\n })}\n </Text>\n </View>\n )}\n {rightElement ? (\n rightElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <TouchableOpacity onPress={openGridView}>\n <View style={[styles.rightContainer, rightContainer]}>\n {GridIcon ? GridIcon : <GridIconDefault />}\n </View>\n </TouchableOpacity>\n )}\n </View>\n </ReanimatedSafeAreaView>\n </Animated.View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n nextProps: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n duration: prevDuration,\n paused: prevPaused,\n progress: prevProgress,\n selectedIndex: prevSelectedIndex,\n } = prevProps;\n const {\n duration: nextDuration,\n paused: nextPaused,\n progress: nextProgress,\n selectedIndex: nextSelectedIndex,\n } = nextProps;\n\n const isDurationEqual = prevDuration === nextDuration;\n if (!isDurationEqual) return false;\n\n const isPausedEqual = prevPaused === nextPaused;\n if (!isPausedEqual) return false;\n\n const isProgressEqual = prevProgress === nextProgress;\n if (!isProgressEqual) return false;\n\n const isSelectedIndexEqual = prevSelectedIndex === nextSelectedIndex;\n if (!isSelectedIndexEqual) return false;\n\n return true;\n};\n\nconst MemoizedImageGalleryFooter = React.memo(\n ImageGalleryFooterWithContext,\n areEqual,\n) as typeof ImageGalleryFooterWithContext;\n\nexport type ImageGalleryFooterProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryFooterPropsWithContext<StreamChatGenerics>;\n\nexport const ImageGalleryFooter = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGalleryFooterProps<StreamChatGenerics>,\n) => <MemoizedImageGalleryFooter {...props} />;\n\nImageGalleryFooter.displayName = 'ImageGalleryFooter{imageGallery{footer}}';\n"]}
|
|
@@ -169,6 +169,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
|
|
|
169
169
|
hideOverlay: hideOverlay,
|
|
170
170
|
photo: photo
|
|
171
171
|
}) : _react["default"].createElement(_reactNative.TouchableOpacity, {
|
|
172
|
+
accessibilityLabel: "Hide Overlay",
|
|
172
173
|
onPress: hideOverlay,
|
|
173
174
|
__self: _this,
|
|
174
175
|
__source: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ImageGalleryHeader.tsx"],"names":["ReanimatedSafeAreaView","Animated","createAnimatedComponent","SafeAreaView","styles","StyleSheet","create","centerContainer","alignItems","flex","justifyContent","date","fontSize","fontWeight","marginTop","opacity","innerContainer","flexDirection","height","leftContainer","marginLeft","rightContainer","marginRight","width","userName","ImageGalleryHeader","props","centerElement","CloseIcon","leftElement","photo","rightElement","visible","setHeight","theme","colors","black","white","imageGallery","header","container","dateText","usernameText","t","tDateTimeParser","setOverlay","translucentStatusBar","parsedDate","created_at","getDateObject","calendar","fromNow","headerStyle","value","transform","translateY","Extrapolate","CLAMP","androidTranslucentHeaderStyle","paddingTop","Platform","OS","StatusBar","currentHeight","undefined","hideOverlay","event","nativeEvent","layout","backgroundColor","color","user","name","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport {\n Platform,\n SafeAreaView,\n StatusBar,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n ViewStyle,\n} from 'react-native';\nimport Animated, { Extrapolate, interpolate, useAnimatedStyle } from 'react-native-reanimated';\n\nimport { useOverlayContext } from '../../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n TDateTimeParserOutput,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../../icons';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { Photo } from '../ImageGallery';\n\nconst ReanimatedSafeAreaView = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(SafeAreaView)\n : SafeAreaView;\n\nconst styles = StyleSheet.create({\n centerContainer: {\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n date: {\n fontSize: 12,\n fontWeight: '500',\n marginTop: 4,\n opacity: 0.5,\n },\n innerContainer: {\n flexDirection: 'row',\n height: 56,\n },\n leftContainer: {\n flex: 1,\n justifyContent: 'center',\n marginLeft: 8,\n },\n rightContainer: {\n marginRight: 8,\n width: 24, // Width of icon currently on left\n },\n userName: {\n fontSize: 16,\n fontWeight: '700',\n },\n});\n\nexport type ImageGalleryHeaderCustomComponent<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ({\n hideOverlay,\n photo,\n}: {\n hideOverlay: () => void;\n photo?: Photo<StreamChatGenerics>;\n}) => React.ReactElement | null;\n\nexport type ImageGalleryHeaderCustomComponentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n centerElement?: ImageGalleryHeaderCustomComponent<StreamChatGenerics>;\n CloseIcon?: React.ReactElement;\n leftElement?: ImageGalleryHeaderCustomComponent<StreamChatGenerics>;\n rightElement?: ImageGalleryHeaderCustomComponent<StreamChatGenerics>;\n};\n\ntype Props<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n ImageGalleryHeaderCustomComponentProps<StreamChatGenerics> & {\n opacity: Animated.SharedValue<number>;\n visible: Animated.SharedValue<number>;\n photo?: Photo<StreamChatGenerics>;\n };\n\nexport const ImageGalleryHeader = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: Props<StreamChatGenerics>,\n) => {\n const { centerElement, CloseIcon, leftElement, opacity, photo, rightElement, visible } = props;\n const [height, setHeight] = useState(200);\n const {\n theme: {\n colors: { black, white },\n imageGallery: {\n header: {\n centerContainer,\n container,\n dateText,\n innerContainer,\n leftContainer,\n rightContainer,\n usernameText,\n },\n },\n },\n } = useTheme();\n const { t, tDateTimeParser } = useTranslationContext();\n const { setOverlay, translucentStatusBar } = useOverlayContext();\n\n const parsedDate = photo ? tDateTimeParser(photo?.created_at) : null;\n\n /**\n * .calendar and .fromNow can be initialized after the first render,\n * and attempting to access them at that time will cause an error\n * to be thrown.\n *\n * This falls back to null if neither exist.\n */\n const getDateObject = (date: TDateTimeParserOutput | null) => {\n if (date === null || !isDayOrMoment(date)) {\n return null;\n }\n\n if (date.calendar) {\n return date.calendar();\n }\n\n if (date.fromNow) {\n return date.fromNow();\n }\n\n return null;\n };\n\n const date = getDateObject(parsedDate);\n\n const headerStyle = useAnimatedStyle<ViewStyle>(() => ({\n opacity: opacity.value,\n transform: [\n {\n translateY: interpolate(visible.value, [0, 1], [-height, 0], Extrapolate.CLAMP),\n },\n ],\n }));\n\n const androidTranslucentHeaderStyle = {\n paddingTop:\n Platform.OS === 'android' && translucentStatusBar ? StatusBar.currentHeight : undefined,\n };\n\n const hideOverlay = () => {\n setOverlay('none');\n };\n\n return (\n <View\n onLayout={(event) => setHeight(event.nativeEvent.layout.height)}\n pointerEvents={'box-none'}\n >\n <ReanimatedSafeAreaView\n style={[{ backgroundColor: white }, androidTranslucentHeaderStyle, container, headerStyle]}\n >\n <View style={[styles.innerContainer, innerContainer]}>\n {leftElement ? (\n leftElement({ hideOverlay, photo })\n ) : (\n <TouchableOpacity onPress={hideOverlay}>\n <View style={[styles.leftContainer, leftContainer]}>\n {CloseIcon ? CloseIcon : <Close />}\n </View>\n </TouchableOpacity>\n )}\n {centerElement ? (\n centerElement({ hideOverlay, photo })\n ) : (\n <View style={[styles.centerContainer, centerContainer]}>\n <Text style={[styles.userName, { color: black }, usernameText]}>\n {photo?.user?.name || t('Unknown User')}\n </Text>\n {date && <Text style={[styles.date, { color: black }, dateText]}>{date}</Text>}\n </View>\n )}\n {rightElement ? (\n rightElement({ hideOverlay, photo })\n ) : (\n <View style={[styles.rightContainer, rightContainer]} />\n )}\n </View>\n </ReanimatedSafeAreaView>\n </View>\n );\n};\n\nImageGalleryHeader.displayName = 'ImageGalleryHeader{imageGallery{header}}';\n"]}
|
|
1
|
+
{"version":3,"sources":["ImageGalleryHeader.tsx"],"names":["ReanimatedSafeAreaView","Animated","createAnimatedComponent","SafeAreaView","styles","StyleSheet","create","centerContainer","alignItems","flex","justifyContent","date","fontSize","fontWeight","marginTop","opacity","innerContainer","flexDirection","height","leftContainer","marginLeft","rightContainer","marginRight","width","userName","ImageGalleryHeader","props","centerElement","CloseIcon","leftElement","photo","rightElement","visible","setHeight","theme","colors","black","white","imageGallery","header","container","dateText","usernameText","t","tDateTimeParser","setOverlay","translucentStatusBar","parsedDate","created_at","getDateObject","calendar","fromNow","headerStyle","value","transform","translateY","Extrapolate","CLAMP","androidTranslucentHeaderStyle","paddingTop","Platform","OS","StatusBar","currentHeight","undefined","hideOverlay","event","nativeEvent","layout","backgroundColor","color","user","name","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport {\n Platform,\n SafeAreaView,\n StatusBar,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n ViewStyle,\n} from 'react-native';\nimport Animated, { Extrapolate, interpolate, useAnimatedStyle } from 'react-native-reanimated';\n\nimport { useOverlayContext } from '../../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n TDateTimeParserOutput,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../../icons';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { Photo } from '../ImageGallery';\n\nconst ReanimatedSafeAreaView = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(SafeAreaView)\n : SafeAreaView;\n\nconst styles = StyleSheet.create({\n centerContainer: {\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n date: {\n fontSize: 12,\n fontWeight: '500',\n marginTop: 4,\n opacity: 0.5,\n },\n innerContainer: {\n flexDirection: 'row',\n height: 56,\n },\n leftContainer: {\n flex: 1,\n justifyContent: 'center',\n marginLeft: 8,\n },\n rightContainer: {\n marginRight: 8,\n width: 24, // Width of icon currently on left\n },\n userName: {\n fontSize: 16,\n fontWeight: '700',\n },\n});\n\nexport type ImageGalleryHeaderCustomComponent<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ({\n hideOverlay,\n photo,\n}: {\n hideOverlay: () => void;\n photo?: Photo<StreamChatGenerics>;\n}) => React.ReactElement | null;\n\nexport type ImageGalleryHeaderCustomComponentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n centerElement?: ImageGalleryHeaderCustomComponent<StreamChatGenerics>;\n CloseIcon?: React.ReactElement;\n leftElement?: ImageGalleryHeaderCustomComponent<StreamChatGenerics>;\n rightElement?: ImageGalleryHeaderCustomComponent<StreamChatGenerics>;\n};\n\ntype Props<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n ImageGalleryHeaderCustomComponentProps<StreamChatGenerics> & {\n opacity: Animated.SharedValue<number>;\n visible: Animated.SharedValue<number>;\n photo?: Photo<StreamChatGenerics>;\n };\n\nexport const ImageGalleryHeader = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: Props<StreamChatGenerics>,\n) => {\n const { centerElement, CloseIcon, leftElement, opacity, photo, rightElement, visible } = props;\n const [height, setHeight] = useState(200);\n const {\n theme: {\n colors: { black, white },\n imageGallery: {\n header: {\n centerContainer,\n container,\n dateText,\n innerContainer,\n leftContainer,\n rightContainer,\n usernameText,\n },\n },\n },\n } = useTheme();\n const { t, tDateTimeParser } = useTranslationContext();\n const { setOverlay, translucentStatusBar } = useOverlayContext();\n\n const parsedDate = photo ? tDateTimeParser(photo?.created_at) : null;\n\n /**\n * .calendar and .fromNow can be initialized after the first render,\n * and attempting to access them at that time will cause an error\n * to be thrown.\n *\n * This falls back to null if neither exist.\n */\n const getDateObject = (date: TDateTimeParserOutput | null) => {\n if (date === null || !isDayOrMoment(date)) {\n return null;\n }\n\n if (date.calendar) {\n return date.calendar();\n }\n\n if (date.fromNow) {\n return date.fromNow();\n }\n\n return null;\n };\n\n const date = getDateObject(parsedDate);\n\n const headerStyle = useAnimatedStyle<ViewStyle>(() => ({\n opacity: opacity.value,\n transform: [\n {\n translateY: interpolate(visible.value, [0, 1], [-height, 0], Extrapolate.CLAMP),\n },\n ],\n }));\n\n const androidTranslucentHeaderStyle = {\n paddingTop:\n Platform.OS === 'android' && translucentStatusBar ? StatusBar.currentHeight : undefined,\n };\n\n const hideOverlay = () => {\n setOverlay('none');\n };\n\n return (\n <View\n onLayout={(event) => setHeight(event.nativeEvent.layout.height)}\n pointerEvents={'box-none'}\n >\n <ReanimatedSafeAreaView\n style={[{ backgroundColor: white }, androidTranslucentHeaderStyle, container, headerStyle]}\n >\n <View style={[styles.innerContainer, innerContainer]}>\n {leftElement ? (\n leftElement({ hideOverlay, photo })\n ) : (\n <TouchableOpacity accessibilityLabel='Hide Overlay' onPress={hideOverlay}>\n <View style={[styles.leftContainer, leftContainer]}>\n {CloseIcon ? CloseIcon : <Close />}\n </View>\n </TouchableOpacity>\n )}\n {centerElement ? (\n centerElement({ hideOverlay, photo })\n ) : (\n <View style={[styles.centerContainer, centerContainer]}>\n <Text style={[styles.userName, { color: black }, usernameText]}>\n {photo?.user?.name || t('Unknown User')}\n </Text>\n {date && <Text style={[styles.date, { color: black }, dateText]}>{date}</Text>}\n </View>\n )}\n {rightElement ? (\n rightElement({ hideOverlay, photo })\n ) : (\n <View style={[styles.rightContainer, rightContainer]} />\n )}\n </View>\n </ReanimatedSafeAreaView>\n </View>\n );\n};\n\nImageGalleryHeader.displayName = 'ImageGalleryHeader{imageGallery{header}}';\n"]}
|
|
@@ -82,6 +82,7 @@ var ImageGalleryOverlay = function ImageGalleryOverlay(props) {
|
|
|
82
82
|
maxDeltaX: 16,
|
|
83
83
|
maxDeltaY: 16,
|
|
84
84
|
onHandlerStateChange: tapEvent,
|
|
85
|
+
testID: "image-gallery-overlay",
|
|
85
86
|
__self: _this,
|
|
86
87
|
__source: {
|
|
87
88
|
fileName: _jsxFileName,
|
|
@@ -95,7 +96,7 @@ var ImageGalleryOverlay = function ImageGalleryOverlay(props) {
|
|
|
95
96
|
__self: _this,
|
|
96
97
|
__source: {
|
|
97
98
|
fileName: _jsxFileName,
|
|
98
|
-
lineNumber:
|
|
99
|
+
lineNumber: 83,
|
|
99
100
|
columnNumber: 7
|
|
100
101
|
}
|
|
101
102
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ImageGalleryOverlay.tsx"],"names":["ImageGalleryOverlay","props","animatedBottomSheetIndex","closeGridView","currentBottomSheetIndex","theme","overlayColor","colors","overlay","imageGallery","grid","visible","setVisible","fadedIn","setFadedIn","opacity","value","duration","easing","Easing","out","ease","showOverlayStyle","tapEvent","event","nativeEvent","state","State","END","StyleSheet","absoluteFillObject","backgroundColor","displayName"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AAKA;;AAQA;;;;;;;;;AAQO,IAAMA,mBAAoC,GAAG,SAAvCA,mBAAuC,CAACC,KAAD,EAAW;AAC7D,MAAQC,wBAAR,GAA6ED,KAA7E,CAAQC,wBAAR;AAAA,MAAkCC,aAAlC,GAA6EF,KAA7E,CAAkCE,aAAlC;AAAA,MAAiDC,uBAAjD,GAA6EH,KAA7E,CAAiDG,uBAAjD;;AAEA,kBAOI,6BAPJ;AAAA,kCACEC,KADF;AAAA,MAEuBC,YAFvB,mBAEIC,MAFJ,CAEcC,OAFd;AAAA,MAIcA,OAJd,mBAGIC,YAHJ,CAIMC,IAJN,CAIcF,OAJd;;AASA,kBAA8B,qBAAS,KAAT,CAA9B;AAAA;AAAA,MAAOG,OAAP;AAAA,MAAgBC,UAAhB;;AACA,mBAA8B,qBAAS,KAAT,CAA9B;AAAA;AAAA,MAAOC,OAAP;AAAA,MAAgBC,UAAhB;;AAEA,MAAMC,OAAO,GAAG,2CAAe,CAAf,CAAhB;AAEA,wBAAU,YAAM;AACd,QAAIX,uBAAuB,GAAG,CAA9B,EAAiC;AAC/BQ,MAAAA,UAAU,CAAC,IAAD,CAAV;AACAG,MAAAA,OAAO,CAACC,KAAR,GAAgB,uCACd,CADc,EAEd;AACEC,QAAAA,QAAQ,EAAE,GADZ;AAEEC,QAAAA,MAAM,EAAEC,8BAAOC,GAAP,CAAWD,8BAAOE,IAAlB;AAFV,OAFc,EAMd;AAAA,eAAM,oCAAQP,UAAR,EAAoB,IAApB,CAAN;AAAA,OANc,CAAhB;AAQD,KAVD,MAUO;AACLF,MAAAA,UAAU,CAAC,KAAD,CAAV;AACAG,MAAAA,OAAO,CAACC,KAAR,GAAgB,CAAhB;AACAF,MAAAA,UAAU,CAAC,KAAD,CAAV;AACD;AACF,GAhBD,EAgBG,CAACV,uBAAD,CAhBH;AAkBA,MAAMkB,gBAAgB,GAAG,6CACvB;AAAA,WAAO;AACLP,MAAAA,OAAO,EAAEF,OAAO,GAAGX,wBAAwB,CAACc,KAA5B,GAAoCD,OAAO,CAACC;AADvD,KAAP;AAAA,GADuB,EAIvB,CAACH,OAAD,CAJuB,CAAzB;;AAOA,MAAMU,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD,EAA8C;AAC7D,QAAIA,KAAK,CAACC,WAAN,CAAkBC,KAAlB,KAA4BC,iCAAMC,GAAtC,EAA2C;AACzCzB,MAAAA,aAAa;AACd;AACF,GAJD;;AAMA,MAAI,CAACQ,OAAL,EAAc;AACZ,WAAO,IAAP;AACD;;AAED,SACE,gCAAC,4CAAD;
|
|
1
|
+
{"version":3,"sources":["ImageGalleryOverlay.tsx"],"names":["ImageGalleryOverlay","props","animatedBottomSheetIndex","closeGridView","currentBottomSheetIndex","theme","overlayColor","colors","overlay","imageGallery","grid","visible","setVisible","fadedIn","setFadedIn","opacity","value","duration","easing","Easing","out","ease","showOverlayStyle","tapEvent","event","nativeEvent","state","State","END","StyleSheet","absoluteFillObject","backgroundColor","displayName"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AAKA;;AAQA;;;;;;;;;AAQO,IAAMA,mBAAoC,GAAG,SAAvCA,mBAAuC,CAACC,KAAD,EAAW;AAC7D,MAAQC,wBAAR,GAA6ED,KAA7E,CAAQC,wBAAR;AAAA,MAAkCC,aAAlC,GAA6EF,KAA7E,CAAkCE,aAAlC;AAAA,MAAiDC,uBAAjD,GAA6EH,KAA7E,CAAiDG,uBAAjD;;AAEA,kBAOI,6BAPJ;AAAA,kCACEC,KADF;AAAA,MAEuBC,YAFvB,mBAEIC,MAFJ,CAEcC,OAFd;AAAA,MAIcA,OAJd,mBAGIC,YAHJ,CAIMC,IAJN,CAIcF,OAJd;;AASA,kBAA8B,qBAAS,KAAT,CAA9B;AAAA;AAAA,MAAOG,OAAP;AAAA,MAAgBC,UAAhB;;AACA,mBAA8B,qBAAS,KAAT,CAA9B;AAAA;AAAA,MAAOC,OAAP;AAAA,MAAgBC,UAAhB;;AAEA,MAAMC,OAAO,GAAG,2CAAe,CAAf,CAAhB;AAEA,wBAAU,YAAM;AACd,QAAIX,uBAAuB,GAAG,CAA9B,EAAiC;AAC/BQ,MAAAA,UAAU,CAAC,IAAD,CAAV;AACAG,MAAAA,OAAO,CAACC,KAAR,GAAgB,uCACd,CADc,EAEd;AACEC,QAAAA,QAAQ,EAAE,GADZ;AAEEC,QAAAA,MAAM,EAAEC,8BAAOC,GAAP,CAAWD,8BAAOE,IAAlB;AAFV,OAFc,EAMd;AAAA,eAAM,oCAAQP,UAAR,EAAoB,IAApB,CAAN;AAAA,OANc,CAAhB;AAQD,KAVD,MAUO;AACLF,MAAAA,UAAU,CAAC,KAAD,CAAV;AACAG,MAAAA,OAAO,CAACC,KAAR,GAAgB,CAAhB;AACAF,MAAAA,UAAU,CAAC,KAAD,CAAV;AACD;AACF,GAhBD,EAgBG,CAACV,uBAAD,CAhBH;AAkBA,MAAMkB,gBAAgB,GAAG,6CACvB;AAAA,WAAO;AACLP,MAAAA,OAAO,EAAEF,OAAO,GAAGX,wBAAwB,CAACc,KAA5B,GAAoCD,OAAO,CAACC;AADvD,KAAP;AAAA,GADuB,EAIvB,CAACH,OAAD,CAJuB,CAAzB;;AAOA,MAAMU,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD,EAA8C;AAC7D,QAAIA,KAAK,CAACC,WAAN,CAAkBC,KAAlB,KAA4BC,iCAAMC,GAAtC,EAA2C;AACzCzB,MAAAA,aAAa;AACd;AACF,GAJD;;AAMA,MAAI,CAACQ,OAAL,EAAc;AACZ,WAAO,IAAP;AACD;;AAED,SACE,gCAAC,4CAAD;AACE,IAAA,SAAS,EAAE,EADb;AAEE,IAAA,SAAS,EAAE,EAFb;AAGE,IAAA,oBAAoB,EAAEY,QAHxB;AAIE,IAAA,MAAM,EAAC,uBAJT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAME,gCAAC,iCAAD,CAAU,IAAV;AACE,IAAA,KAAK,EAAE,CACLM,wBAAWC,kBADN,EAEL;AAAEC,MAAAA,eAAe,EAAEzB;AAAnB,KAFK,EAGLE,OAHK,EAILc,gBAJK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IANF,CADF;AAiBD,CArEM;;;AAuEPtB,mBAAmB,CAACgC,WAApB,GAAkC,wCAAlC","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { StyleSheet, ViewStyle } from 'react-native';\nimport {\n State,\n TapGestureHandler,\n TapGestureHandlerStateChangeEvent,\n} from 'react-native-gesture-handler';\nimport Animated, {\n Easing,\n runOnJS,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\ntype Props = {\n animatedBottomSheetIndex: Animated.SharedValue<number>;\n closeGridView: () => void;\n currentBottomSheetIndex: number;\n};\n\nexport const ImageGalleryOverlay: React.FC<Props> = (props) => {\n const { animatedBottomSheetIndex, closeGridView, currentBottomSheetIndex } = props;\n\n const {\n theme: {\n colors: { overlay: overlayColor },\n imageGallery: {\n grid: { overlay },\n },\n },\n } = useTheme();\n\n const [visible, setVisible] = useState(false);\n const [fadedIn, setFadedIn] = useState(false);\n\n const opacity = useSharedValue(0);\n\n useEffect(() => {\n if (currentBottomSheetIndex > 0) {\n setVisible(true);\n opacity.value = withTiming(\n 1,\n {\n duration: 200,\n easing: Easing.out(Easing.ease),\n },\n () => runOnJS(setFadedIn)(true),\n );\n } else {\n setVisible(false);\n opacity.value = 0;\n setFadedIn(false);\n }\n }, [currentBottomSheetIndex]);\n\n const showOverlayStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: fadedIn ? animatedBottomSheetIndex.value : opacity.value,\n }),\n [fadedIn],\n );\n\n const tapEvent = (event: TapGestureHandlerStateChangeEvent) => {\n if (event.nativeEvent.state === State.END) {\n closeGridView();\n }\n };\n\n if (!visible) {\n return null;\n }\n\n return (\n <TapGestureHandler\n maxDeltaX={16}\n maxDeltaY={16}\n onHandlerStateChange={tapEvent}\n testID='image-gallery-overlay'\n >\n <Animated.View\n style={[\n StyleSheet.absoluteFillObject,\n { backgroundColor: overlayColor },\n overlay,\n showOverlayStyle,\n ]}\n />\n </TapGestureHandler>\n );\n};\n\nImageGalleryOverlay.displayName = 'ImageGrid{imageGallery{grid{overlay}}}';\n"]}
|