react-native-gesture-image-viewer 2.0.0-beta.7 → 2.0.0-beta.8
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/module/GestureViewer.js +10 -8
- package/lib/module/GestureViewer.js.map +1 -1
- package/lib/module/useGestureViewer.js +50 -23
- package/lib/module/useGestureViewer.js.map +1 -1
- package/lib/module/utils.js +1 -1
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/src/GestureViewer.d.ts +1 -2
- package/lib/typescript/src/GestureViewer.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +46 -8
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/useGestureViewer.d.ts +2 -2
- package/lib/typescript/src/useGestureViewer.d.ts.map +1 -1
- package/lib/typescript/src/utils.d.ts +3 -3
- package/lib/typescript/src/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/GestureViewer.tsx +13 -14
- package/src/types.ts +84 -12
- package/src/useGestureViewer.ts +76 -35
- package/src/utils.ts +4 -4
|
@@ -16,6 +16,7 @@ export function GestureViewer({
|
|
|
16
16
|
renderContainer,
|
|
17
17
|
ListComponent,
|
|
18
18
|
width: customWidth,
|
|
19
|
+
height: customHeight,
|
|
19
20
|
listProps,
|
|
20
21
|
backdropStyle: backdropStyleProps,
|
|
21
22
|
containerStyle,
|
|
@@ -31,7 +32,8 @@ export function GestureViewer({
|
|
|
31
32
|
width: screenWidth,
|
|
32
33
|
height: screenHeight
|
|
33
34
|
} = useWindowDimensions();
|
|
34
|
-
const width =
|
|
35
|
+
const width = customWidth || screenWidth;
|
|
36
|
+
const height = customHeight || screenHeight;
|
|
35
37
|
const loopData = useMemo(() => createLoopData(dataRef, enableLoop), [enableLoop]);
|
|
36
38
|
const isScrollView = isScrollViewLike(Component);
|
|
37
39
|
const {
|
|
@@ -49,9 +51,9 @@ export function GestureViewer({
|
|
|
49
51
|
id,
|
|
50
52
|
data,
|
|
51
53
|
width,
|
|
54
|
+
height,
|
|
52
55
|
initialIndex,
|
|
53
56
|
itemSpacing,
|
|
54
|
-
enableSnapMode,
|
|
55
57
|
enableLoop,
|
|
56
58
|
...props
|
|
57
59
|
});
|
|
@@ -68,12 +70,12 @@ export function GestureViewer({
|
|
|
68
70
|
return /*#__PURE__*/_jsx(View, {
|
|
69
71
|
style: [{
|
|
70
72
|
width,
|
|
71
|
-
height
|
|
73
|
+
height,
|
|
72
74
|
marginHorizontal: itemSpacing / 2
|
|
73
75
|
}, styles.item],
|
|
74
76
|
children: renderItemProp(item, index)
|
|
75
77
|
}, isScrollView ? keyExtractor(item, index) : undefined);
|
|
76
|
-
}, [width, itemSpacing, renderItemProp, keyExtractor, isScrollView,
|
|
78
|
+
}, [width, itemSpacing, renderItemProp, keyExtractor, isScrollView, height]);
|
|
77
79
|
const getItemLayout = useCallback((_, index) => ({
|
|
78
80
|
length: width + itemSpacing,
|
|
79
81
|
offset: (width + itemSpacing) * index,
|
|
@@ -112,7 +114,10 @@ export function GestureViewer({
|
|
|
112
114
|
children: /*#__PURE__*/_jsx(GestureDetector, {
|
|
113
115
|
gesture: gesture,
|
|
114
116
|
children: /*#__PURE__*/_jsxs(View, {
|
|
115
|
-
style: [
|
|
117
|
+
style: [{
|
|
118
|
+
width,
|
|
119
|
+
height
|
|
120
|
+
}, containerStyle],
|
|
116
121
|
children: [/*#__PURE__*/_jsx(Animated.View, {
|
|
117
122
|
style: [styles.background, backdropStyleProps, backdropStyle]
|
|
118
123
|
}), /*#__PURE__*/_jsx(Animated.View, {
|
|
@@ -162,9 +167,6 @@ export function GestureViewer({
|
|
|
162
167
|
return renderContainer ? renderContainer(listComponent, control) : listComponent;
|
|
163
168
|
}
|
|
164
169
|
const styles = StyleSheet.create({
|
|
165
|
-
container: {
|
|
166
|
-
flex: 1
|
|
167
|
-
},
|
|
168
170
|
content: {
|
|
169
171
|
flex: 1,
|
|
170
172
|
width: '100%',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","Platform","StyleSheet","useWindowDimensions","View","Gesture","GestureDetector","GestureHandlerRootView","Animated","registry","useGestureViewer","createLoopData","isFlashListLike","isFlatListLike","isScrollViewLike","WebPagingFixStyle","jsx","_jsx","jsxs","_jsxs","GestureViewer","id","data","renderItem","renderItemProp","renderContainer","ListComponent","width","customWidth","listProps","backdropStyle","backdropStyleProps","containerStyle","initialIndex","itemSpacing","enableSnapMode","enableLoop","props","Component","dataRef","screenWidth","
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","Platform","StyleSheet","useWindowDimensions","View","Gesture","GestureDetector","GestureHandlerRootView","Animated","registry","useGestureViewer","createLoopData","isFlashListLike","isFlatListLike","isScrollViewLike","WebPagingFixStyle","jsx","_jsx","jsxs","_jsxs","GestureViewer","id","data","renderItem","renderItemProp","renderContainer","ListComponent","width","customWidth","height","customHeight","listProps","backdropStyle","backdropStyleProps","containerStyle","initialIndex","itemSpacing","enableSnapMode","enableLoop","props","Component","dataRef","screenWidth","screenHeight","loopData","isScrollView","listRef","isZoomed","isRotated","dismissGesture","zoomGesture","onMomentumScrollEnd","onScrollBeginDrag","animatedStyle","handleDismiss","keyExtractor","item","index","style","marginHorizontal","styles","children","undefined","getItemLayout","_","length","offset","gesture","Race","current","createManager","deleteManager","commonProps","horizontal","scrollEnabled","showsHorizontalScrollIndicator","snapToInterval","snapToAlignment","decelerationRate","pagingEnabled","scrollEventThrottle","removeClippedSubviews","control","dismiss","listComponent","background","content","OS","dataSet","ref","map","initialScrollIndex","estimatedItemSize","windowSize","maxToRenderPerBatch","create","flex","justifyContent","alignItems","position","top","left","right","bottom","backgroundColor"],"sourceRoot":"../../src","sources":["GestureViewer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -20,20 +20,24 @@ export const useGestureViewer = ({
|
|
|
20
20
|
enableLoop = false,
|
|
21
21
|
maxZoomScale = 2,
|
|
22
22
|
itemSpacing = 0,
|
|
23
|
-
|
|
23
|
+
height: customHeight,
|
|
24
24
|
id = 'default',
|
|
25
25
|
onDismissStart,
|
|
26
|
-
triggerAnimation
|
|
26
|
+
triggerAnimation,
|
|
27
|
+
autoPlay = false,
|
|
28
|
+
autoPlayInterval = 3000
|
|
27
29
|
}) => {
|
|
28
30
|
const {
|
|
29
31
|
width: screenWidth,
|
|
30
32
|
height: screenHeight
|
|
31
33
|
} = useWindowDimensions();
|
|
32
|
-
const width =
|
|
34
|
+
const width = customWidth || screenWidth;
|
|
35
|
+
const height = customHeight || screenHeight;
|
|
33
36
|
const [isZoomed, setIsZoomed] = useState(false);
|
|
34
37
|
const [isRotated, setIsRotated] = useState(false);
|
|
35
38
|
const [shouldStartTriggerAnimation, setShouldStartTriggerAnimation] = useState(false);
|
|
36
39
|
const [manager, setManager] = useState(null);
|
|
40
|
+
const [currentIndex, setCurrentIndex] = useState(initialIndex);
|
|
37
41
|
const listRef = useRef(null);
|
|
38
42
|
const triggerRectRef = useRef(null);
|
|
39
43
|
const onAnimationCompleteRef = useRef(triggerAnimation?.onAnimationComplete);
|
|
@@ -64,15 +68,15 @@ export const useGestureViewer = ({
|
|
|
64
68
|
};
|
|
65
69
|
}, [dismiss?.enabled, dismiss?.threshold, dismiss?.resistance, dismiss?.fadeBackdrop]);
|
|
66
70
|
const adjustedInitialIndex = useMemo(() => {
|
|
67
|
-
if (enableLoop &&
|
|
71
|
+
if (enableLoop && dataLength > 1) {
|
|
68
72
|
return initialIndex + 1;
|
|
69
73
|
}
|
|
70
74
|
return initialIndex;
|
|
71
|
-
}, [enableLoop,
|
|
75
|
+
}, [enableLoop, dataLength, initialIndex]);
|
|
72
76
|
const constrainTranslation = useMemo(() => createBoundsConstraint({
|
|
73
77
|
width,
|
|
74
|
-
height
|
|
75
|
-
}), [width,
|
|
78
|
+
height
|
|
79
|
+
}), [width, height]);
|
|
76
80
|
const scrollTo = useCallback((index, animated) => {
|
|
77
81
|
const scrollAction = createScrollAction(listRef.current, width + itemSpacing);
|
|
78
82
|
return scrollAction.scrollTo(index, animated);
|
|
@@ -103,8 +107,15 @@ export const useGestureViewer = ({
|
|
|
103
107
|
runOnJS(setIsRotated)(currentRotation % 360 !== 0);
|
|
104
108
|
});
|
|
105
109
|
useEffect(() => {
|
|
106
|
-
|
|
107
|
-
|
|
110
|
+
let unsubscribe;
|
|
111
|
+
const unsubscribeFromRegistry = registry.subscribeToManager(id, managerInstance => {
|
|
112
|
+
setManager(managerInstance);
|
|
113
|
+
unsubscribe = managerInstance?.subscribe(state => setCurrentIndex(state.currentIndex));
|
|
114
|
+
});
|
|
115
|
+
return () => {
|
|
116
|
+
unsubscribeFromRegistry();
|
|
117
|
+
unsubscribe?.();
|
|
118
|
+
};
|
|
108
119
|
}, [id]);
|
|
109
120
|
useEffect(() => {
|
|
110
121
|
if (!manager) {
|
|
@@ -114,12 +125,12 @@ export const useGestureViewer = ({
|
|
|
114
125
|
manager.setEnableHorizontalSwipe(enableHorizontalSwipe);
|
|
115
126
|
manager.setCurrentIndex(initialIndex);
|
|
116
127
|
manager.setWidth(width + itemSpacing);
|
|
117
|
-
manager.setHeight(
|
|
128
|
+
manager.setHeight(height);
|
|
118
129
|
manager.setZoomSharedValues(scale, translateX, translateY, maxZoomScale);
|
|
119
130
|
manager.setRotation(rotation);
|
|
120
131
|
manager.setEnableLoop(enableLoop);
|
|
121
132
|
manager.notifyStateChange();
|
|
122
|
-
}, [dataLength, enableHorizontalSwipe, initialIndex, manager, width, itemSpacing, maxZoomScale, enableLoop, scale,
|
|
133
|
+
}, [dataLength, enableHorizontalSwipe, initialIndex, manager, width, itemSpacing, maxZoomScale, enableLoop, scale, height, translateX, translateY, rotation]);
|
|
123
134
|
useEffect(() => {
|
|
124
135
|
if (!manager || !listRef.current) {
|
|
125
136
|
return;
|
|
@@ -143,14 +154,30 @@ export const useGestureViewer = ({
|
|
|
143
154
|
runAfterInteractions?.cancel();
|
|
144
155
|
};
|
|
145
156
|
}, [adjustedInitialIndex, translateY, backdropOpacity, translateX, scale, startScale, rotation, scrollTo]);
|
|
157
|
+
useEffect(() => {
|
|
158
|
+
if (!autoPlay || !manager || dataLength <= 1 || isZoomed || isRotated || !enableLoop && currentIndex === dataLength - 1) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
const intervalMs = Math.max(250, Math.floor(autoPlayInterval || 0));
|
|
162
|
+
if (!Number.isFinite(intervalMs)) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
const interval = setInterval(() => {
|
|
166
|
+
if (isZoomed || isRotated) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
manager.goToNext();
|
|
170
|
+
}, intervalMs);
|
|
171
|
+
return () => clearInterval(interval);
|
|
172
|
+
}, [autoPlay, autoPlayInterval, manager, dataLength, currentIndex, enableLoop, isZoomed, isRotated]);
|
|
146
173
|
useEffect(() => {
|
|
147
174
|
onAnimationCompleteRef.current = triggerAnimation?.onAnimationComplete;
|
|
148
175
|
}, [triggerAnimation?.onAnimationComplete]);
|
|
149
176
|
useEffect(() => {
|
|
150
177
|
if (shouldStartTriggerAnimation && triggerRectRef.current) {
|
|
151
|
-
const startX = triggerRectRef.current.x + triggerRectRef.current.width / 2 -
|
|
152
|
-
const startY = triggerRectRef.current.y + triggerRectRef.current.height / 2 -
|
|
153
|
-
const initialScaleFromTrigger = Math.min(triggerRectRef.current.width /
|
|
178
|
+
const startX = triggerRectRef.current.x + triggerRectRef.current.width / 2 - width / 2;
|
|
179
|
+
const startY = triggerRectRef.current.y + triggerRectRef.current.height / 2 - height / 2;
|
|
180
|
+
const initialScaleFromTrigger = Math.min(triggerRectRef.current.width / width, triggerRectRef.current.height / height);
|
|
154
181
|
triggerScale.value = initialScaleFromTrigger;
|
|
155
182
|
triggerTranslateX.value = startX;
|
|
156
183
|
triggerTranslateY.value = startY;
|
|
@@ -169,7 +196,7 @@ export const useGestureViewer = ({
|
|
|
169
196
|
});
|
|
170
197
|
setShouldStartTriggerAnimation(false);
|
|
171
198
|
}
|
|
172
|
-
}, [shouldStartTriggerAnimation, animationConfig,
|
|
199
|
+
}, [shouldStartTriggerAnimation, animationConfig, width, height, triggerOpacity, triggerScale, triggerTranslateX, triggerTranslateY, onAnimationComplete]);
|
|
173
200
|
useEffect(() => {
|
|
174
201
|
const node = registry.getTriggerNode(id);
|
|
175
202
|
if (node && typeof node.measure === 'function') {
|
|
@@ -192,9 +219,9 @@ export const useGestureViewer = ({
|
|
|
192
219
|
const handleDismiss = useCallback(() => {
|
|
193
220
|
onDismissStart?.();
|
|
194
221
|
if (triggerRectRef.current) {
|
|
195
|
-
const endX = triggerRectRef.current.x + triggerRectRef.current.width / 2 -
|
|
196
|
-
const endY = triggerRectRef.current.y + triggerRectRef.current.height / 2 -
|
|
197
|
-
const endScale = Math.min(triggerRectRef.current.width /
|
|
222
|
+
const endX = triggerRectRef.current.x + triggerRectRef.current.width / 2 - width / 2;
|
|
223
|
+
const endY = triggerRectRef.current.y + triggerRectRef.current.height / 2 - height / 2;
|
|
224
|
+
const endScale = Math.min(triggerRectRef.current.width / width, triggerRectRef.current.height / height);
|
|
198
225
|
triggerScale.value = withTiming(endScale, animationConfig);
|
|
199
226
|
triggerTranslateX.value = withTiming(endX, animationConfig);
|
|
200
227
|
triggerTranslateY.value = withTiming(endY, animationConfig);
|
|
@@ -208,7 +235,7 @@ export const useGestureViewer = ({
|
|
|
208
235
|
if (onDismiss) {
|
|
209
236
|
runOnJS(onDismiss)();
|
|
210
237
|
}
|
|
211
|
-
}, [animationConfig, onDismiss, onDismissStart,
|
|
238
|
+
}, [animationConfig, onDismiss, onDismissStart, width, height, triggerTranslateX, triggerScale, triggerTranslateY, triggerOpacity]);
|
|
212
239
|
const onMomentumScrollEnd = useCallback(event => {
|
|
213
240
|
if (!enableHorizontalSwipe) {
|
|
214
241
|
return;
|
|
@@ -275,7 +302,7 @@ export const useGestureViewer = ({
|
|
|
275
302
|
}
|
|
276
303
|
const deltaScale = newScale - startScale.value;
|
|
277
304
|
const centerX = event.focalX - width / 2;
|
|
278
|
-
const centerY = event.focalY -
|
|
305
|
+
const centerY = event.focalY - height / 2;
|
|
279
306
|
|
|
280
307
|
// NOTE 새로운 이동값 = 기존 이동값 - (중심점 거리 × 스케일 변화량) / 원래 스케일 (중심점이 화면 중심에서 멀수록, 확대 배율이 클수록 더 많이 이동)
|
|
281
308
|
const newTranslateX = initialTranslateX.value - centerX * deltaScale / startScale.value;
|
|
@@ -330,7 +357,7 @@ export const useGestureViewer = ({
|
|
|
330
357
|
translateX.value = withTiming(constrainedTranslateX);
|
|
331
358
|
translateY.value = withTiming(constrainedTranslateY);
|
|
332
359
|
});
|
|
333
|
-
}, [scale, enablePinchZoom, maxZoomScale, translateX, translateY, startScale, initialTranslateX, initialTranslateY, width,
|
|
360
|
+
}, [scale, enablePinchZoom, maxZoomScale, translateX, translateY, startScale, initialTranslateX, initialTranslateY, width, height, constrainTranslation]);
|
|
334
361
|
const zoomPanGesture = useMemo(() => {
|
|
335
362
|
return Gesture.Pan().enabled(enablePanWhenZoomed && isZoomed).activeCursor('grabbing').averageTouches(true).onBegin(() => {
|
|
336
363
|
initialTranslateX.value = translateX.value;
|
|
@@ -357,7 +384,7 @@ export const useGestureViewer = ({
|
|
|
357
384
|
const nextScale = scale.value > 1 ? 1 : maxZoomScale;
|
|
358
385
|
if (nextScale > 1) {
|
|
359
386
|
const centerX = event.x - width / 2;
|
|
360
|
-
const centerY = event.y -
|
|
387
|
+
const centerY = event.y - height / 2;
|
|
361
388
|
|
|
362
389
|
// NOTE 확대로 밀려난 거리만큼 반대로 이동해서 탭 지점을 제자리에 유지
|
|
363
390
|
translateX.value = withTiming(-centerX * (nextScale - 1), {
|
|
@@ -383,7 +410,7 @@ export const useGestureViewer = ({
|
|
|
383
410
|
easing: Easing.bezier(0.25, 0.1, 0.25, 1.0)
|
|
384
411
|
});
|
|
385
412
|
});
|
|
386
|
-
}, [scale, enableDoubleTapZoom, maxZoomScale, translateX, translateY, width,
|
|
413
|
+
}, [scale, enableDoubleTapZoom, maxZoomScale, translateX, translateY, width, height]);
|
|
387
414
|
const zoomGesture = useMemo(() => {
|
|
388
415
|
return Gesture.Race(zoomPinchGesture, Gesture.Exclusive(zoomPanGesture, doubleTapGesture));
|
|
389
416
|
}, [zoomPinchGesture, zoomPanGesture, doubleTapGesture]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","InteractionManager","useWindowDimensions","Gesture","Easing","interpolate","useAnimatedReaction","useAnimatedStyle","useSharedValue","withSpring","withTiming","runOnJS","registry","createBoundsConstraint","createScrollAction","getLoopAdjustedIndex","useGestureViewer","data","initialIndex","onDismiss","width","customWidth","dismiss","enableDoubleTapZoom","enablePinchZoom","enableHorizontalSwipe","enablePanWhenZoomed","enableLoop","maxZoomScale","itemSpacing","enableSnapMode","id","onDismissStart","triggerAnimation","screenWidth","height","screenHeight","isZoomed","setIsZoomed","isRotated","setIsRotated","shouldStartTriggerAnimation","setShouldStartTriggerAnimation","manager","setManager","listRef","triggerRectRef","onAnimationCompleteRef","onAnimationComplete","initialTranslateY","initialTranslateX","startScale","translateY","translateX","scale","backdropOpacity","rotation","triggerScale","triggerTranslateX","triggerTranslateY","triggerOpacity","dataLength","length","animationConfig","duration","easing","bezier","reduceMotion","dismissOptions","enabled","threshold","resistance","fadeBackdrop","adjustedInitialIndex","constrainTranslation","scrollTo","index","animated","scrollAction","current","emitZoomChange","currentScale","prevScale","emitRotationChange","currentRotation","prevRotation","value","previousScale","previousRotation","unsubscribe","subscribeToManager","setDataLength","setEnableHorizontalSwipe","setCurrentIndex","setWidth","setHeight","setZoomSharedValues","setRotation","setEnableLoop","notifyStateChange","setListRef","runAfterInteractions","cancel","startX","x","startY","y","initialScaleFromTrigger","Math","min","finished","node","getTriggerNode","measure","_x","_y","pageX","pageY","clearTriggerNode","handleDismiss","endX","endY","endScale","onMomentumScrollEnd","event","contentOffset","nativeEvent","scrollIndex","round","isLoopHandled","handleMomentumScrollEnd","realIndex","needsJump","jumpToIndex","undefined","currentIndex","getState","dismissGesture","canDismiss","Pan","minDistance","averageTouches","activeCursor","activeOffsetY","failOffsetX","onUpdate","translationY","onEnd","stiffness","damping","mass","overshootClamping","energyThreshold","zoomPinchGesture","Pinch","onBegin","newScale","deltaScale","centerX","focalX","centerY","focalY","newTranslateX","newTranslateY","constrainedTranslateX","constrainedTranslateY","zoomPanGesture","translationX","doubleTapGesture","Tap","numberOfTaps","nextScale","zoomGesture","Race","Exclusive","animatedStyle","opacity","transform","rotate","backdropStyle","baseOpacity","dismissOpacity","onScrollBeginDrag","handleScrollBeginDrag"],"sourceRoot":"../../src","sources":["useGestureViewer.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","InteractionManager","useWindowDimensions","Gesture","Easing","interpolate","useAnimatedReaction","useAnimatedStyle","useSharedValue","withSpring","withTiming","runOnJS","registry","createBoundsConstraint","createScrollAction","getLoopAdjustedIndex","useGestureViewer","data","initialIndex","onDismiss","width","customWidth","dismiss","enableDoubleTapZoom","enablePinchZoom","enableHorizontalSwipe","enablePanWhenZoomed","enableLoop","maxZoomScale","itemSpacing","height","customHeight","id","onDismissStart","triggerAnimation","autoPlay","autoPlayInterval","screenWidth","screenHeight","isZoomed","setIsZoomed","isRotated","setIsRotated","shouldStartTriggerAnimation","setShouldStartTriggerAnimation","manager","setManager","currentIndex","setCurrentIndex","listRef","triggerRectRef","onAnimationCompleteRef","onAnimationComplete","initialTranslateY","initialTranslateX","startScale","translateY","translateX","scale","backdropOpacity","rotation","triggerScale","triggerTranslateX","triggerTranslateY","triggerOpacity","dataLength","length","animationConfig","duration","easing","bezier","reduceMotion","dismissOptions","enabled","threshold","resistance","fadeBackdrop","adjustedInitialIndex","constrainTranslation","scrollTo","index","animated","scrollAction","current","emitZoomChange","currentScale","prevScale","emitRotationChange","currentRotation","prevRotation","value","previousScale","previousRotation","unsubscribe","unsubscribeFromRegistry","subscribeToManager","managerInstance","subscribe","state","setDataLength","setEnableHorizontalSwipe","setWidth","setHeight","setZoomSharedValues","setRotation","setEnableLoop","notifyStateChange","setListRef","runAfterInteractions","cancel","intervalMs","Math","max","floor","Number","isFinite","interval","setInterval","goToNext","clearInterval","startX","x","startY","y","initialScaleFromTrigger","min","finished","node","getTriggerNode","measure","_x","_y","pageX","pageY","clearTriggerNode","handleDismiss","endX","endY","endScale","onMomentumScrollEnd","event","contentOffset","nativeEvent","scrollIndex","round","isLoopHandled","handleMomentumScrollEnd","realIndex","needsJump","jumpToIndex","undefined","getState","dismissGesture","canDismiss","Pan","minDistance","averageTouches","activeCursor","activeOffsetY","failOffsetX","onUpdate","translationY","onEnd","stiffness","damping","mass","overshootClamping","energyThreshold","zoomPinchGesture","Pinch","onBegin","newScale","deltaScale","centerX","focalX","centerY","focalY","newTranslateX","newTranslateY","constrainedTranslateX","constrainedTranslateY","zoomPanGesture","translationX","doubleTapGesture","Tap","numberOfTaps","nextScale","zoomGesture","Race","Exclusive","animatedStyle","opacity","transform","rotate","backdropStyle","baseOpacity","dismissOpacity","onScrollBeginDrag","handleScrollBeginDrag"],"sourceRoot":"../../src","sources":["useGestureViewer.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/utils.js
CHANGED
|
@@ -20,7 +20,7 @@ export const isFlashListLike = component => {
|
|
|
20
20
|
} catch {
|
|
21
21
|
// do nothing
|
|
22
22
|
}
|
|
23
|
-
return component?.name === 'FlashList';
|
|
23
|
+
return component?.displayName === 'FlashList' || component?.name === 'FlashList';
|
|
24
24
|
};
|
|
25
25
|
export const createBoundsConstraint = ({
|
|
26
26
|
width,
|
package/lib/module/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FlatList","RNFlatList","ScrollView","RNScrollView","GestureFlatList","GestureScrollView","isScrollViewLike","component","isFlatListLike","isFlashListLike","FlashList","require","name","createBoundsConstraint","width","height","scale","translateX","translateY","maxTranslateX","maxTranslateY","Math","max","min","createLoopData","dataRef","enableLoop","data","current","length","lastItem","firstItem","undefined","getLoopAdjustedIndex","scrollIndex","originalDataLength","realIndex","needsJump","jumpToIndex","createScrollAction","listRef","scrollTo","index","animated","scrollToIndex","x"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":";;AAAA,SAASA,QAAQ,IAAIC,UAAU,EAAEC,UAAU,IAAIC,YAAY,QAAQ,cAAc;AACjF,SAASH,QAAQ,IAAII,eAAe,EAAEF,UAAU,IAAIG,iBAAiB,QAAQ,8BAA8B;AAG3G,OAAO,MAAMC,gBAAgB,GAAIC,
|
|
1
|
+
{"version":3,"names":["FlatList","RNFlatList","ScrollView","RNScrollView","GestureFlatList","GestureScrollView","isScrollViewLike","component","isFlatListLike","isFlashListLike","FlashList","require","displayName","name","createBoundsConstraint","width","height","scale","translateX","translateY","maxTranslateX","maxTranslateY","Math","max","min","createLoopData","dataRef","enableLoop","data","current","length","lastItem","firstItem","undefined","getLoopAdjustedIndex","scrollIndex","originalDataLength","realIndex","needsJump","jumpToIndex","createScrollAction","listRef","scrollTo","index","animated","scrollToIndex","x"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type ScrollView } from 'react-native';
|
|
2
1
|
import type { GestureViewerProps } from './types';
|
|
3
|
-
export declare function GestureViewer<
|
|
2
|
+
export declare function GestureViewer<ItemT, LC>({ id, data, renderItem: renderItemProp, renderContainer, ListComponent, width: customWidth, height: customHeight, listProps, backdropStyle: backdropStyleProps, containerStyle, initialIndex, itemSpacing, enableSnapMode, enableLoop, ...props }: GestureViewerProps<ItemT, LC>): import("react/jsx-runtime").JSX.Element;
|
|
4
3
|
//# sourceMappingURL=GestureViewer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GestureViewer.d.ts","sourceRoot":"","sources":["../../../src/GestureViewer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GestureViewer.d.ts","sourceRoot":"","sources":["../../../src/GestureViewer.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAKlD,wBAAgB,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,EACvC,EAAc,EACd,IAAI,EACJ,UAAU,EAAE,cAAc,EAC1B,eAAe,EACf,aAAa,EACb,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,YAAY,EACpB,SAAS,EACT,aAAa,EAAE,kBAAkB,EACjC,cAAc,EACd,YAAgB,EAChB,WAAe,EACf,cAAsB,EACtB,UAAkB,EAClB,GAAG,KAAK,EACT,EAAE,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC,2CA8J/B"}
|
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import type { FlatList as RNFlatList, ScrollView as RNScrollView, StyleProp, ViewStyle } from 'react-native';
|
|
2
|
+
import type { FlatListProps, ListRenderItem, FlatList as RNFlatList, ScrollView as RNScrollView, StyleProp, ViewabilityConfig, ViewStyle, ViewToken } from 'react-native';
|
|
3
3
|
import type { FlatList as GHFlatList, ScrollView as GHScrollView } from 'react-native-gesture-handler';
|
|
4
4
|
import type { WithTimingConfig } from 'react-native-reanimated';
|
|
5
|
-
export type FlatListComponent = typeof RNFlatList | typeof GHFlatList
|
|
5
|
+
export type FlatListComponent<ItemT> = typeof RNFlatList<ItemT> | typeof GHFlatList<ItemT>;
|
|
6
6
|
export type ScrollViewComponent = typeof RNScrollView | typeof GHScrollView;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
interface ViewabilityConfigCallbackPair<TItem> {
|
|
8
|
+
viewabilityConfig: ViewabilityConfig;
|
|
9
|
+
onViewableItemsChanged: ((info: {
|
|
10
|
+
viewableItems: ViewToken<TItem>[];
|
|
11
|
+
changed: ViewToken<TItem>[];
|
|
12
|
+
}) => void) | null;
|
|
13
|
+
}
|
|
14
|
+
export type InstantiateGeneric<ItemT, LC> = LC extends React.ComponentType<infer P> ? P extends Record<string, any> ? {
|
|
15
|
+
[K in keyof P]: K extends 'data' ? ArrayLike<ItemT> | null | undefined : K extends 'renderItem' ? ListRenderItem<ItemT> : K extends 'keyExtractor' ? (item: ItemT, index: number) => string : K extends 'getItemType' ? (item: ItemT, index: number, extraData?: any) => string | number | undefined : K extends 'overrideItemLayout' ? (layout: {
|
|
16
|
+
span?: number;
|
|
17
|
+
size?: number;
|
|
18
|
+
}, item: ItemT, index: number, maxColumns?: number, extraData?: any) => void : K extends 'onViewableItemsChanged' ? FlatListProps<ItemT>['onViewableItemsChanged'] : K extends 'viewabilityConfigCallbackPairs' ? ViewabilityConfigCallbackPair<ItemT>[] : P[K];
|
|
19
|
+
} : P : never;
|
|
20
|
+
export type GetComponentProps<ItemT, LC> = LC extends React.ComponentType<any> ? InstantiateGeneric<ItemT, LC> : never;
|
|
21
|
+
type ConditionalListProps<ItemT, LC> = LC extends typeof RNFlatList<ItemT> ? React.ComponentProps<typeof RNFlatList<ItemT>> : LC extends typeof GHFlatList<ItemT> ? React.ComponentProps<typeof GHFlatList<ItemT>> : LC extends typeof RNScrollView ? React.ComponentProps<typeof RNScrollView> : LC extends typeof GHScrollView ? React.ComponentProps<typeof GHScrollView> : GetComponentProps<ItemT, LC>;
|
|
9
22
|
export type TriggerRect = {
|
|
10
23
|
x: number;
|
|
11
24
|
y: number;
|
|
@@ -28,7 +41,7 @@ export interface TriggerAnimationConfig extends WithTimingConfig {
|
|
|
28
41
|
*/
|
|
29
42
|
onAnimationComplete?: () => void;
|
|
30
43
|
}
|
|
31
|
-
export interface GestureViewerProps<
|
|
44
|
+
export interface GestureViewerProps<ItemT, LC> {
|
|
32
45
|
/**
|
|
33
46
|
* When you want to efficiently manage multiple `GestureViewer` instances, you can use the `id` prop to use multiple `GestureViewer` components.
|
|
34
47
|
* @remarks `GestureViewer` automatically removes instances from memory when components are unmounted, so no manual memory management is required.
|
|
@@ -38,7 +51,7 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
|
|
|
38
51
|
/**
|
|
39
52
|
* The data to display in the `GestureViewer`.
|
|
40
53
|
*/
|
|
41
|
-
data:
|
|
54
|
+
data: ItemT[];
|
|
42
55
|
/**
|
|
43
56
|
* The index of the item to display in the `GestureViewer` when the component is mounted.
|
|
44
57
|
* @defaultValue 0
|
|
@@ -56,7 +69,7 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
|
|
|
56
69
|
/**
|
|
57
70
|
* A callback function that is called to render the item.
|
|
58
71
|
*/
|
|
59
|
-
renderItem: (item:
|
|
72
|
+
renderItem: (item: ItemT, index: number) => React.ReactElement;
|
|
60
73
|
/**
|
|
61
74
|
* A callback function that is called to render the container.
|
|
62
75
|
* @remarks Useful for composing additional UI (e.g., close button, toolbars) around the viewer.
|
|
@@ -79,11 +92,17 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
|
|
|
79
92
|
* @defaultValue screen width
|
|
80
93
|
*/
|
|
81
94
|
width?: number;
|
|
95
|
+
/**
|
|
96
|
+
* The height of the `GestureViewer`.
|
|
97
|
+
* @remarks If you don't set this prop, the height of the `GestureViewer` will be the same as the height of the screen.
|
|
98
|
+
* @defaultValue screen height
|
|
99
|
+
*/
|
|
100
|
+
height?: number;
|
|
82
101
|
/**
|
|
83
102
|
* The props to pass to the list component.
|
|
84
103
|
* @remarks The `listProps` provides **type inference based on the selected list component**, ensuring accurate autocompletion and type safety in your IDE.
|
|
85
104
|
*/
|
|
86
|
-
listProps?: Partial<ConditionalListProps<LC>>;
|
|
105
|
+
listProps?: Partial<ConditionalListProps<ItemT, LC>>;
|
|
87
106
|
/**
|
|
88
107
|
* The style of the backdrop.
|
|
89
108
|
*/
|
|
@@ -92,6 +111,25 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
|
|
|
92
111
|
* The style of the container.
|
|
93
112
|
*/
|
|
94
113
|
containerStyle?: StyleProp<ViewStyle>;
|
|
114
|
+
/**
|
|
115
|
+
* Auto play mode.
|
|
116
|
+
* @remarks
|
|
117
|
+
* - When `true`, the viewer will automatically play the next item after the specified interval.
|
|
118
|
+
* - When `enableLoop` is enabled, the viewer will loop back to the first item after the last item.
|
|
119
|
+
* - When `enableLoop` is disabled, the viewer will stop at the last item.
|
|
120
|
+
* - When there is only one item, auto-play is disabled.
|
|
121
|
+
* - When zoom or rotate gestures are detected, the auto-play will be paused.
|
|
122
|
+
* @defaultValue false
|
|
123
|
+
*/
|
|
124
|
+
autoPlay?: boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Auto play interval.
|
|
127
|
+
* @remarks
|
|
128
|
+
* - When `autoPlay` is enabled, the viewer advances to the next item after the specified interval (ms).
|
|
129
|
+
* - Must be a positive integer. Values below 250ms are clamped to 250ms at runtime.
|
|
130
|
+
* @defaultValue 3000
|
|
131
|
+
*/
|
|
132
|
+
autoPlayInterval?: number;
|
|
95
133
|
/**
|
|
96
134
|
* Dismiss gesture options. Calls `onDismiss` function when swiping down.
|
|
97
135
|
* @remarks Useful for closing modals with downward swipe gestures.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type NativeScrollEvent, type NativeSyntheticEvent } from 'react-native';
|
|
2
2
|
import type { GestureViewerProps } from './types';
|
|
3
|
-
type UseGestureViewerProps<
|
|
4
|
-
export declare const useGestureViewer: <
|
|
3
|
+
type UseGestureViewerProps<ItemT, LC> = Omit<GestureViewerProps<ItemT, LC>, 'renderItem' | 'renderContainer' | 'ListComponent' | 'listProps' | 'containerStyle' | 'backdropStyle' | 'enableSnapMode'>;
|
|
4
|
+
export declare const useGestureViewer: <ItemT, LC>({ data, initialIndex, onDismiss, width: customWidth, dismiss, enableDoubleTapZoom, enablePinchZoom, enableHorizontalSwipe, enablePanWhenZoomed, enableLoop, maxZoomScale, itemSpacing, height: customHeight, id, onDismissStart, triggerAnimation, autoPlay, autoPlayInterval, }: UseGestureViewerProps<ItemT, LC>) => {
|
|
5
5
|
dataLength: number;
|
|
6
6
|
listRef: import("react").RefObject<any>;
|
|
7
7
|
isZoomed: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGestureViewer.d.ts","sourceRoot":"","sources":["../../../src/useGestureViewer.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAE1B,MAAM,cAAc,CAAC;AActB,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,SAAS,CAAC;AAG/D,KAAK,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"useGestureViewer.d.ts","sourceRoot":"","sources":["../../../src/useGestureViewer.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAE1B,MAAM,cAAc,CAAC;AActB,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,SAAS,CAAC;AAG/D,KAAK,qBAAqB,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,CAC1C,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC,EAC3B,YAAY,GACZ,iBAAiB,GACjB,eAAe,GACf,WAAW,GACX,gBAAgB,GAChB,eAAe,GACf,gBAAgB,CACnB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,EAAE,EAAE,EAAE,kRAmBzC,qBAAqB,CAAC,KAAK,EAAE,EAAE,CAAC;;;;;;;iCAwTvB,oBAAoB,CAAC,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0SlD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FlatListComponent, ScrollViewComponent } from './types';
|
|
2
|
-
export declare const isScrollViewLike: (component: any) => component is ScrollViewComponent;
|
|
3
|
-
export declare const isFlatListLike: (component: any) => component is FlatListComponent
|
|
4
|
-
export declare const isFlashListLike: (component: any) =>
|
|
2
|
+
export declare const isScrollViewLike: (component: React.ComponentType<any>) => component is ScrollViewComponent;
|
|
3
|
+
export declare const isFlatListLike: (component: React.ComponentType<any>) => component is FlatListComponent<any>;
|
|
4
|
+
export declare const isFlashListLike: (component: React.ComponentType<any>) => boolean;
|
|
5
5
|
export declare const createBoundsConstraint: ({ width, height }: {
|
|
6
6
|
width: number;
|
|
7
7
|
height: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEtE,eAAO,MAAM,gBAAgB,GAAI,WAAW,GAAG,KAAG,SAAS,IAAI,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEtE,eAAO,MAAM,gBAAgB,GAAI,WAAW,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,KAAG,SAAS,IAAI,mBAEnF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,WAAW,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,KAAG,SAAS,IAAI,iBAAiB,CAAC,GAAG,CAMtG,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,WAAW,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,KAAG,OAYrE,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAChC,mBAAmB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,MACpD,mCAAmC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;;;CAiB5F,CAAC;AAEJ,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,SAAS,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,OAAO,KAAG,CAAC,EAevF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,aAAa,MAAM,EACnB,oBAAoB,MAAM,EAC1B,YAAY,OAAO,KAClB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAoB/D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,SAAS,GAAG,EAAE,OAAO,MAAM;sBAC1C,MAAM,YAAY,OAAO;CAO3C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-gesture-image-viewer",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.8",
|
|
4
4
|
"description": "🖼️ React Native Image Viewer - Reanimated-powered image gestures with full control",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/src/index.d.ts",
|
package/src/GestureViewer.tsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useCallback, useEffect, useMemo, useRef } from 'react';
|
|
2
|
-
import { Platform, type
|
|
2
|
+
import { Platform, type ScrollViewProps, StyleSheet, useWindowDimensions, View } from 'react-native';
|
|
3
3
|
import { Gesture, GestureDetector, GestureHandlerRootView } from 'react-native-gesture-handler';
|
|
4
4
|
import Animated from 'react-native-reanimated';
|
|
5
5
|
import { registry } from './GestureViewerRegistry';
|
|
@@ -8,13 +8,14 @@ import { useGestureViewer } from './useGestureViewer';
|
|
|
8
8
|
import { createLoopData, isFlashListLike, isFlatListLike, isScrollViewLike } from './utils';
|
|
9
9
|
import WebPagingFixStyle from './WebPagingFixStyle';
|
|
10
10
|
|
|
11
|
-
export function GestureViewer<
|
|
11
|
+
export function GestureViewer<ItemT, LC>({
|
|
12
12
|
id = 'default',
|
|
13
13
|
data,
|
|
14
14
|
renderItem: renderItemProp,
|
|
15
15
|
renderContainer,
|
|
16
16
|
ListComponent,
|
|
17
17
|
width: customWidth,
|
|
18
|
+
height: customHeight,
|
|
18
19
|
listProps,
|
|
19
20
|
backdropStyle: backdropStyleProps,
|
|
20
21
|
containerStyle,
|
|
@@ -23,14 +24,15 @@ export function GestureViewer<T = any, LC = typeof ScrollView>({
|
|
|
23
24
|
enableSnapMode = false,
|
|
24
25
|
enableLoop = false,
|
|
25
26
|
...props
|
|
26
|
-
}: GestureViewerProps<
|
|
27
|
+
}: GestureViewerProps<ItemT, LC>) {
|
|
27
28
|
const Component = ListComponent as React.ComponentType<any>;
|
|
28
29
|
|
|
29
30
|
const dataRef = useRef(data);
|
|
30
31
|
|
|
31
32
|
const { width: screenWidth, height: screenHeight } = useWindowDimensions();
|
|
32
33
|
|
|
33
|
-
const width =
|
|
34
|
+
const width = customWidth || screenWidth;
|
|
35
|
+
const height = customHeight || screenHeight;
|
|
34
36
|
|
|
35
37
|
const loopData = useMemo(() => createLoopData(dataRef, enableLoop), [enableLoop]);
|
|
36
38
|
|
|
@@ -51,15 +53,15 @@ export function GestureViewer<T = any, LC = typeof ScrollView>({
|
|
|
51
53
|
id,
|
|
52
54
|
data,
|
|
53
55
|
width,
|
|
56
|
+
height,
|
|
54
57
|
initialIndex,
|
|
55
58
|
itemSpacing,
|
|
56
|
-
enableSnapMode,
|
|
57
59
|
enableLoop,
|
|
58
60
|
...props,
|
|
59
61
|
});
|
|
60
62
|
|
|
61
63
|
const keyExtractor = useCallback(
|
|
62
|
-
(item:
|
|
64
|
+
(item: ItemT, index: number) => {
|
|
63
65
|
if (enableLoop) {
|
|
64
66
|
return typeof item === 'string' ? `${item}-${index}` : `item-${index}`;
|
|
65
67
|
}
|
|
@@ -70,14 +72,14 @@ export function GestureViewer<T = any, LC = typeof ScrollView>({
|
|
|
70
72
|
);
|
|
71
73
|
|
|
72
74
|
const renderItem = useCallback(
|
|
73
|
-
({ item, index }: { item:
|
|
75
|
+
({ item, index }: { item: ItemT; index: number }) => {
|
|
74
76
|
return (
|
|
75
77
|
<View
|
|
76
78
|
key={isScrollView ? keyExtractor(item, index) : undefined}
|
|
77
79
|
style={[
|
|
78
80
|
{
|
|
79
81
|
width,
|
|
80
|
-
height
|
|
82
|
+
height,
|
|
81
83
|
marginHorizontal: itemSpacing / 2,
|
|
82
84
|
},
|
|
83
85
|
styles.item,
|
|
@@ -87,11 +89,11 @@ export function GestureViewer<T = any, LC = typeof ScrollView>({
|
|
|
87
89
|
</View>
|
|
88
90
|
);
|
|
89
91
|
},
|
|
90
|
-
[width, itemSpacing, renderItemProp, keyExtractor, isScrollView,
|
|
92
|
+
[width, itemSpacing, renderItemProp, keyExtractor, isScrollView, height],
|
|
91
93
|
);
|
|
92
94
|
|
|
93
95
|
const getItemLayout = useCallback(
|
|
94
|
-
(_: ArrayLike<
|
|
96
|
+
(_: ArrayLike<ItemT> | null | undefined, index: number) => ({
|
|
95
97
|
length: width + itemSpacing,
|
|
96
98
|
offset: (width + itemSpacing) * index,
|
|
97
99
|
index,
|
|
@@ -141,7 +143,7 @@ export function GestureViewer<T = any, LC = typeof ScrollView>({
|
|
|
141
143
|
const listComponent = (
|
|
142
144
|
<GestureHandlerRootView>
|
|
143
145
|
<GestureDetector gesture={gesture}>
|
|
144
|
-
<View style={[
|
|
146
|
+
<View style={[{ width, height }, containerStyle]}>
|
|
145
147
|
<Animated.View style={[styles.background, backdropStyleProps, backdropStyle]} />
|
|
146
148
|
<Animated.View
|
|
147
149
|
style={[styles.content, animatedStyle]}
|
|
@@ -183,9 +185,6 @@ export function GestureViewer<T = any, LC = typeof ScrollView>({
|
|
|
183
185
|
}
|
|
184
186
|
|
|
185
187
|
const styles = StyleSheet.create({
|
|
186
|
-
container: {
|
|
187
|
-
flex: 1,
|
|
188
|
-
},
|
|
189
188
|
content: {
|
|
190
189
|
flex: 1,
|
|
191
190
|
width: '100%',
|
package/src/types.ts
CHANGED
|
@@ -1,18 +1,65 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
FlatListProps,
|
|
4
|
+
ListRenderItem,
|
|
5
|
+
FlatList as RNFlatList,
|
|
6
|
+
ScrollView as RNScrollView,
|
|
7
|
+
StyleProp,
|
|
8
|
+
ViewabilityConfig,
|
|
9
|
+
ViewStyle,
|
|
10
|
+
ViewToken,
|
|
11
|
+
} from 'react-native';
|
|
3
12
|
import type { FlatList as GHFlatList, ScrollView as GHScrollView } from 'react-native-gesture-handler';
|
|
4
13
|
import type { WithTimingConfig } from 'react-native-reanimated';
|
|
5
14
|
|
|
6
|
-
export type FlatListComponent = typeof RNFlatList | typeof GHFlatList
|
|
15
|
+
export type FlatListComponent<ItemT> = typeof RNFlatList<ItemT> | typeof GHFlatList<ItemT>;
|
|
7
16
|
export type ScrollViewComponent = typeof RNScrollView | typeof GHScrollView;
|
|
8
17
|
|
|
9
|
-
|
|
18
|
+
interface ViewabilityConfigCallbackPair<TItem> {
|
|
19
|
+
viewabilityConfig: ViewabilityConfig;
|
|
20
|
+
onViewableItemsChanged: ((info: { viewableItems: ViewToken<TItem>[]; changed: ViewToken<TItem>[] }) => void) | null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Helper type to instantiate generic components with specific type parameter
|
|
24
|
+
export type InstantiateGeneric<ItemT, LC> = LC extends React.ComponentType<infer P>
|
|
25
|
+
? P extends Record<string, any>
|
|
26
|
+
? {
|
|
27
|
+
[K in keyof P]: K extends 'data'
|
|
28
|
+
? ArrayLike<ItemT> | null | undefined
|
|
29
|
+
: K extends 'renderItem'
|
|
30
|
+
? ListRenderItem<ItemT>
|
|
31
|
+
: K extends 'keyExtractor'
|
|
32
|
+
? (item: ItemT, index: number) => string
|
|
33
|
+
: K extends 'getItemType'
|
|
34
|
+
? (item: ItemT, index: number, extraData?: any) => string | number | undefined
|
|
35
|
+
: K extends 'overrideItemLayout'
|
|
36
|
+
? (
|
|
37
|
+
layout: { span?: number; size?: number },
|
|
38
|
+
item: ItemT,
|
|
39
|
+
index: number,
|
|
40
|
+
maxColumns?: number,
|
|
41
|
+
extraData?: any,
|
|
42
|
+
) => void
|
|
43
|
+
: K extends 'onViewableItemsChanged'
|
|
44
|
+
? FlatListProps<ItemT>['onViewableItemsChanged']
|
|
45
|
+
: K extends 'viewabilityConfigCallbackPairs'
|
|
46
|
+
? ViewabilityConfigCallbackPair<ItemT>[]
|
|
47
|
+
: P[K];
|
|
48
|
+
}
|
|
49
|
+
: P
|
|
50
|
+
: never;
|
|
51
|
+
|
|
52
|
+
export type GetComponentProps<ItemT, LC> = LC extends React.ComponentType<any> ? InstantiateGeneric<ItemT, LC> : never;
|
|
10
53
|
|
|
11
|
-
type ConditionalListProps<LC> = LC extends
|
|
12
|
-
? React.ComponentProps<
|
|
13
|
-
: LC extends
|
|
14
|
-
? React.ComponentProps<
|
|
15
|
-
:
|
|
54
|
+
type ConditionalListProps<ItemT, LC> = LC extends typeof RNFlatList<ItemT>
|
|
55
|
+
? React.ComponentProps<typeof RNFlatList<ItemT>>
|
|
56
|
+
: LC extends typeof GHFlatList<ItemT>
|
|
57
|
+
? React.ComponentProps<typeof GHFlatList<ItemT>>
|
|
58
|
+
: LC extends typeof RNScrollView
|
|
59
|
+
? React.ComponentProps<typeof RNScrollView>
|
|
60
|
+
: LC extends typeof GHScrollView
|
|
61
|
+
? React.ComponentProps<typeof GHScrollView>
|
|
62
|
+
: GetComponentProps<ItemT, LC>;
|
|
16
63
|
|
|
17
64
|
export type TriggerRect = {
|
|
18
65
|
x: number;
|
|
@@ -38,7 +85,7 @@ export interface TriggerAnimationConfig extends WithTimingConfig {
|
|
|
38
85
|
onAnimationComplete?: () => void;
|
|
39
86
|
}
|
|
40
87
|
|
|
41
|
-
export interface GestureViewerProps<
|
|
88
|
+
export interface GestureViewerProps<ItemT, LC> {
|
|
42
89
|
/**
|
|
43
90
|
* When you want to efficiently manage multiple `GestureViewer` instances, you can use the `id` prop to use multiple `GestureViewer` components.
|
|
44
91
|
* @remarks `GestureViewer` automatically removes instances from memory when components are unmounted, so no manual memory management is required.
|
|
@@ -48,7 +95,7 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
|
|
|
48
95
|
/**
|
|
49
96
|
* The data to display in the `GestureViewer`.
|
|
50
97
|
*/
|
|
51
|
-
data:
|
|
98
|
+
data: ItemT[];
|
|
52
99
|
/**
|
|
53
100
|
* The index of the item to display in the `GestureViewer` when the component is mounted.
|
|
54
101
|
* @defaultValue 0
|
|
@@ -66,7 +113,7 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
|
|
|
66
113
|
/**
|
|
67
114
|
* A callback function that is called to render the item.
|
|
68
115
|
*/
|
|
69
|
-
renderItem: (item:
|
|
116
|
+
renderItem: (item: ItemT, index: number) => React.ReactElement;
|
|
70
117
|
/**
|
|
71
118
|
* A callback function that is called to render the container.
|
|
72
119
|
* @remarks Useful for composing additional UI (e.g., close button, toolbars) around the viewer.
|
|
@@ -87,11 +134,17 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
|
|
|
87
134
|
* @defaultValue screen width
|
|
88
135
|
*/
|
|
89
136
|
width?: number;
|
|
137
|
+
/**
|
|
138
|
+
* The height of the `GestureViewer`.
|
|
139
|
+
* @remarks If you don't set this prop, the height of the `GestureViewer` will be the same as the height of the screen.
|
|
140
|
+
* @defaultValue screen height
|
|
141
|
+
*/
|
|
142
|
+
height?: number;
|
|
90
143
|
/**
|
|
91
144
|
* The props to pass to the list component.
|
|
92
145
|
* @remarks The `listProps` provides **type inference based on the selected list component**, ensuring accurate autocompletion and type safety in your IDE.
|
|
93
146
|
*/
|
|
94
|
-
listProps?: Partial<ConditionalListProps<LC>>;
|
|
147
|
+
listProps?: Partial<ConditionalListProps<ItemT, LC>>;
|
|
95
148
|
/**
|
|
96
149
|
* The style of the backdrop.
|
|
97
150
|
*/
|
|
@@ -100,6 +153,25 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
|
|
|
100
153
|
* The style of the container.
|
|
101
154
|
*/
|
|
102
155
|
containerStyle?: StyleProp<ViewStyle>;
|
|
156
|
+
/**
|
|
157
|
+
* Auto play mode.
|
|
158
|
+
* @remarks
|
|
159
|
+
* - When `true`, the viewer will automatically play the next item after the specified interval.
|
|
160
|
+
* - When `enableLoop` is enabled, the viewer will loop back to the first item after the last item.
|
|
161
|
+
* - When `enableLoop` is disabled, the viewer will stop at the last item.
|
|
162
|
+
* - When there is only one item, auto-play is disabled.
|
|
163
|
+
* - When zoom or rotate gestures are detected, the auto-play will be paused.
|
|
164
|
+
* @defaultValue false
|
|
165
|
+
*/
|
|
166
|
+
autoPlay?: boolean;
|
|
167
|
+
/**
|
|
168
|
+
* Auto play interval.
|
|
169
|
+
* @remarks
|
|
170
|
+
* - When `autoPlay` is enabled, the viewer advances to the next item after the specified interval (ms).
|
|
171
|
+
* - Must be a positive integer. Values below 250ms are clamped to 250ms at runtime.
|
|
172
|
+
* @defaultValue 3000
|
|
173
|
+
*/
|
|
174
|
+
autoPlayInterval?: number;
|
|
103
175
|
/**
|
|
104
176
|
* Dismiss gesture options. Calls `onDismiss` function when swiping down.
|
|
105
177
|
* @remarks Useful for closing modals with downward swipe gestures.
|
package/src/useGestureViewer.ts
CHANGED
|
@@ -21,12 +21,18 @@ import { registry } from './GestureViewerRegistry';
|
|
|
21
21
|
import type { GestureViewerProps, TriggerRect } from './types';
|
|
22
22
|
import { createBoundsConstraint, createScrollAction, getLoopAdjustedIndex } from './utils';
|
|
23
23
|
|
|
24
|
-
type UseGestureViewerProps<
|
|
25
|
-
GestureViewerProps<
|
|
26
|
-
|
|
24
|
+
type UseGestureViewerProps<ItemT, LC> = Omit<
|
|
25
|
+
GestureViewerProps<ItemT, LC>,
|
|
26
|
+
| 'renderItem'
|
|
27
|
+
| 'renderContainer'
|
|
28
|
+
| 'ListComponent'
|
|
29
|
+
| 'listProps'
|
|
30
|
+
| 'containerStyle'
|
|
31
|
+
| 'backdropStyle'
|
|
32
|
+
| 'enableSnapMode'
|
|
27
33
|
>;
|
|
28
34
|
|
|
29
|
-
export const useGestureViewer = <
|
|
35
|
+
export const useGestureViewer = <ItemT, LC>({
|
|
30
36
|
data,
|
|
31
37
|
initialIndex = 0,
|
|
32
38
|
onDismiss,
|
|
@@ -39,18 +45,22 @@ export const useGestureViewer = <T = any>({
|
|
|
39
45
|
enableLoop = false,
|
|
40
46
|
maxZoomScale = 2,
|
|
41
47
|
itemSpacing = 0,
|
|
42
|
-
|
|
48
|
+
height: customHeight,
|
|
43
49
|
id = 'default',
|
|
44
50
|
onDismissStart,
|
|
45
51
|
triggerAnimation,
|
|
46
|
-
|
|
52
|
+
autoPlay = false,
|
|
53
|
+
autoPlayInterval = 3000,
|
|
54
|
+
}: UseGestureViewerProps<ItemT, LC>) => {
|
|
47
55
|
const { width: screenWidth, height: screenHeight } = useWindowDimensions();
|
|
48
|
-
const width =
|
|
56
|
+
const width = customWidth || screenWidth;
|
|
57
|
+
const height = customHeight || screenHeight;
|
|
49
58
|
|
|
50
59
|
const [isZoomed, setIsZoomed] = useState(false);
|
|
51
60
|
const [isRotated, setIsRotated] = useState(false);
|
|
52
61
|
const [shouldStartTriggerAnimation, setShouldStartTriggerAnimation] = useState(false);
|
|
53
62
|
const [manager, setManager] = useState<GestureViewerManager | null>(null);
|
|
63
|
+
const [currentIndex, setCurrentIndex] = useState(initialIndex);
|
|
54
64
|
|
|
55
65
|
const listRef = useRef<any>(null);
|
|
56
66
|
const triggerRectRef = useRef<TriggerRect | null>(null);
|
|
@@ -92,17 +102,14 @@ export const useGestureViewer = <T = any>({
|
|
|
92
102
|
}, [dismiss?.enabled, dismiss?.threshold, dismiss?.resistance, dismiss?.fadeBackdrop]);
|
|
93
103
|
|
|
94
104
|
const adjustedInitialIndex = useMemo(() => {
|
|
95
|
-
if (enableLoop &&
|
|
105
|
+
if (enableLoop && dataLength > 1) {
|
|
96
106
|
return initialIndex + 1;
|
|
97
107
|
}
|
|
98
108
|
|
|
99
109
|
return initialIndex;
|
|
100
|
-
}, [enableLoop,
|
|
110
|
+
}, [enableLoop, dataLength, initialIndex]);
|
|
101
111
|
|
|
102
|
-
const constrainTranslation = useMemo(
|
|
103
|
-
() => createBoundsConstraint({ width, height: screenHeight }),
|
|
104
|
-
[width, screenHeight],
|
|
105
|
-
);
|
|
112
|
+
const constrainTranslation = useMemo(() => createBoundsConstraint({ width, height }), [width, height]);
|
|
106
113
|
|
|
107
114
|
const scrollTo = useCallback(
|
|
108
115
|
(index: number, animated: boolean) => {
|
|
@@ -158,9 +165,17 @@ export const useGestureViewer = <T = any>({
|
|
|
158
165
|
);
|
|
159
166
|
|
|
160
167
|
useEffect(() => {
|
|
161
|
-
|
|
168
|
+
let unsubscribe: (() => void) | undefined;
|
|
169
|
+
|
|
170
|
+
const unsubscribeFromRegistry = registry.subscribeToManager(id, (managerInstance) => {
|
|
171
|
+
setManager(managerInstance);
|
|
172
|
+
unsubscribe = managerInstance?.subscribe((state) => setCurrentIndex(state.currentIndex));
|
|
173
|
+
});
|
|
162
174
|
|
|
163
|
-
return
|
|
175
|
+
return () => {
|
|
176
|
+
unsubscribeFromRegistry();
|
|
177
|
+
unsubscribe?.();
|
|
178
|
+
};
|
|
164
179
|
}, [id]);
|
|
165
180
|
|
|
166
181
|
useEffect(() => {
|
|
@@ -172,7 +187,7 @@ export const useGestureViewer = <T = any>({
|
|
|
172
187
|
manager.setEnableHorizontalSwipe(enableHorizontalSwipe);
|
|
173
188
|
manager.setCurrentIndex(initialIndex);
|
|
174
189
|
manager.setWidth(width + itemSpacing);
|
|
175
|
-
manager.setHeight(
|
|
190
|
+
manager.setHeight(height);
|
|
176
191
|
manager.setZoomSharedValues(scale, translateX, translateY, maxZoomScale);
|
|
177
192
|
manager.setRotation(rotation);
|
|
178
193
|
manager.setEnableLoop(enableLoop);
|
|
@@ -187,7 +202,7 @@ export const useGestureViewer = <T = any>({
|
|
|
187
202
|
maxZoomScale,
|
|
188
203
|
enableLoop,
|
|
189
204
|
scale,
|
|
190
|
-
|
|
205
|
+
height,
|
|
191
206
|
translateX,
|
|
192
207
|
translateY,
|
|
193
208
|
rotation,
|
|
@@ -222,17 +237,46 @@ export const useGestureViewer = <T = any>({
|
|
|
222
237
|
};
|
|
223
238
|
}, [adjustedInitialIndex, translateY, backdropOpacity, translateX, scale, startScale, rotation, scrollTo]);
|
|
224
239
|
|
|
240
|
+
useEffect(() => {
|
|
241
|
+
if (
|
|
242
|
+
!autoPlay ||
|
|
243
|
+
!manager ||
|
|
244
|
+
dataLength <= 1 ||
|
|
245
|
+
isZoomed ||
|
|
246
|
+
isRotated ||
|
|
247
|
+
(!enableLoop && currentIndex === dataLength - 1)
|
|
248
|
+
) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
const intervalMs = Math.max(250, Math.floor(autoPlayInterval || 0));
|
|
253
|
+
|
|
254
|
+
if (!Number.isFinite(intervalMs)) {
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
const interval = setInterval(() => {
|
|
259
|
+
if (isZoomed || isRotated) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
manager.goToNext();
|
|
264
|
+
}, intervalMs);
|
|
265
|
+
|
|
266
|
+
return () => clearInterval(interval);
|
|
267
|
+
}, [autoPlay, autoPlayInterval, manager, dataLength, currentIndex, enableLoop, isZoomed, isRotated]);
|
|
268
|
+
|
|
225
269
|
useEffect(() => {
|
|
226
270
|
onAnimationCompleteRef.current = triggerAnimation?.onAnimationComplete;
|
|
227
271
|
}, [triggerAnimation?.onAnimationComplete]);
|
|
228
272
|
|
|
229
273
|
useEffect(() => {
|
|
230
274
|
if (shouldStartTriggerAnimation && triggerRectRef.current) {
|
|
231
|
-
const startX = triggerRectRef.current.x + triggerRectRef.current.width / 2 -
|
|
232
|
-
const startY = triggerRectRef.current.y + triggerRectRef.current.height / 2 -
|
|
275
|
+
const startX = triggerRectRef.current.x + triggerRectRef.current.width / 2 - width / 2;
|
|
276
|
+
const startY = triggerRectRef.current.y + triggerRectRef.current.height / 2 - height / 2;
|
|
233
277
|
const initialScaleFromTrigger = Math.min(
|
|
234
|
-
triggerRectRef.current.width /
|
|
235
|
-
triggerRectRef.current.height /
|
|
278
|
+
triggerRectRef.current.width / width,
|
|
279
|
+
triggerRectRef.current.height / height,
|
|
236
280
|
);
|
|
237
281
|
|
|
238
282
|
triggerScale.value = initialScaleFromTrigger;
|
|
@@ -258,8 +302,8 @@ export const useGestureViewer = <T = any>({
|
|
|
258
302
|
}, [
|
|
259
303
|
shouldStartTriggerAnimation,
|
|
260
304
|
animationConfig,
|
|
261
|
-
|
|
262
|
-
|
|
305
|
+
width,
|
|
306
|
+
height,
|
|
263
307
|
triggerOpacity,
|
|
264
308
|
triggerScale,
|
|
265
309
|
triggerTranslateX,
|
|
@@ -288,12 +332,9 @@ export const useGestureViewer = <T = any>({
|
|
|
288
332
|
onDismissStart?.();
|
|
289
333
|
|
|
290
334
|
if (triggerRectRef.current) {
|
|
291
|
-
const endX = triggerRectRef.current.x + triggerRectRef.current.width / 2 -
|
|
292
|
-
const endY = triggerRectRef.current.y + triggerRectRef.current.height / 2 -
|
|
293
|
-
const endScale = Math.min(
|
|
294
|
-
triggerRectRef.current.width / screenWidth,
|
|
295
|
-
triggerRectRef.current.height / screenHeight,
|
|
296
|
-
);
|
|
335
|
+
const endX = triggerRectRef.current.x + triggerRectRef.current.width / 2 - width / 2;
|
|
336
|
+
const endY = triggerRectRef.current.y + triggerRectRef.current.height / 2 - height / 2;
|
|
337
|
+
const endScale = Math.min(triggerRectRef.current.width / width, triggerRectRef.current.height / height);
|
|
297
338
|
|
|
298
339
|
triggerScale.value = withTiming(endScale, animationConfig);
|
|
299
340
|
triggerTranslateX.value = withTiming(endX, animationConfig);
|
|
@@ -313,8 +354,8 @@ export const useGestureViewer = <T = any>({
|
|
|
313
354
|
animationConfig,
|
|
314
355
|
onDismiss,
|
|
315
356
|
onDismissStart,
|
|
316
|
-
|
|
317
|
-
|
|
357
|
+
width,
|
|
358
|
+
height,
|
|
318
359
|
triggerTranslateX,
|
|
319
360
|
triggerScale,
|
|
320
361
|
triggerTranslateY,
|
|
@@ -427,7 +468,7 @@ export const useGestureViewer = <T = any>({
|
|
|
427
468
|
|
|
428
469
|
const deltaScale = newScale - startScale.value;
|
|
429
470
|
const centerX = event.focalX - width / 2;
|
|
430
|
-
const centerY = event.focalY -
|
|
471
|
+
const centerY = event.focalY - height / 2;
|
|
431
472
|
|
|
432
473
|
// NOTE 새로운 이동값 = 기존 이동값 - (중심점 거리 × 스케일 변화량) / 원래 스케일 (중심점이 화면 중심에서 멀수록, 확대 배율이 클수록 더 많이 이동)
|
|
433
474
|
const newTranslateX = initialTranslateX.value - (centerX * deltaScale) / startScale.value;
|
|
@@ -492,7 +533,7 @@ export const useGestureViewer = <T = any>({
|
|
|
492
533
|
initialTranslateX,
|
|
493
534
|
initialTranslateY,
|
|
494
535
|
width,
|
|
495
|
-
|
|
536
|
+
height,
|
|
496
537
|
constrainTranslation,
|
|
497
538
|
]);
|
|
498
539
|
|
|
@@ -540,7 +581,7 @@ export const useGestureViewer = <T = any>({
|
|
|
540
581
|
|
|
541
582
|
if (nextScale > 1) {
|
|
542
583
|
const centerX = event.x - width / 2;
|
|
543
|
-
const centerY = event.y -
|
|
584
|
+
const centerY = event.y - height / 2;
|
|
544
585
|
|
|
545
586
|
// NOTE 확대로 밀려난 거리만큼 반대로 이동해서 탭 지점을 제자리에 유지
|
|
546
587
|
translateX.value = withTiming(-centerX * (nextScale - 1), {
|
|
@@ -567,7 +608,7 @@ export const useGestureViewer = <T = any>({
|
|
|
567
608
|
easing: Easing.bezier(0.25, 0.1, 0.25, 1.0),
|
|
568
609
|
});
|
|
569
610
|
});
|
|
570
|
-
}, [scale, enableDoubleTapZoom, maxZoomScale, translateX, translateY, width,
|
|
611
|
+
}, [scale, enableDoubleTapZoom, maxZoomScale, translateX, translateY, width, height]);
|
|
571
612
|
|
|
572
613
|
const zoomGesture = useMemo(() => {
|
|
573
614
|
return Gesture.Race(zoomPinchGesture, Gesture.Exclusive(zoomPanGesture, doubleTapGesture));
|
package/src/utils.ts
CHANGED
|
@@ -2,11 +2,11 @@ import { FlatList as RNFlatList, ScrollView as RNScrollView } from 'react-native
|
|
|
2
2
|
import { FlatList as GestureFlatList, ScrollView as GestureScrollView } from 'react-native-gesture-handler';
|
|
3
3
|
import type { FlatListComponent, ScrollViewComponent } from './types';
|
|
4
4
|
|
|
5
|
-
export const isScrollViewLike = (component: any): component is ScrollViewComponent => {
|
|
5
|
+
export const isScrollViewLike = (component: React.ComponentType<any>): component is ScrollViewComponent => {
|
|
6
6
|
return component === RNScrollView || component === GestureScrollView;
|
|
7
7
|
};
|
|
8
8
|
|
|
9
|
-
export const isFlatListLike = (component: any): component is FlatListComponent => {
|
|
9
|
+
export const isFlatListLike = (component: React.ComponentType<any>): component is FlatListComponent<any> => {
|
|
10
10
|
if (component === RNFlatList || component === GestureFlatList || isFlashListLike(component)) {
|
|
11
11
|
return true;
|
|
12
12
|
}
|
|
@@ -14,7 +14,7 @@ export const isFlatListLike = (component: any): component is FlatListComponent =
|
|
|
14
14
|
return false;
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
export const isFlashListLike = (component: any):
|
|
17
|
+
export const isFlashListLike = (component: React.ComponentType<any>): boolean => {
|
|
18
18
|
try {
|
|
19
19
|
const FlashList = require('@shopify/flash-list')?.FlashList;
|
|
20
20
|
|
|
@@ -25,7 +25,7 @@ export const isFlashListLike = (component: any): component is any => {
|
|
|
25
25
|
// do nothing
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
return component?.name === 'FlashList';
|
|
28
|
+
return component?.displayName === 'FlashList' || component?.name === 'FlashList';
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
export const createBoundsConstraint =
|