react-native-gesture-image-viewer 1.2.3 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -13
- package/lib/module/GestureViewer.js +3 -2
- package/lib/module/GestureViewer.js.map +1 -1
- package/lib/module/GestureViewerManager.js +127 -6
- package/lib/module/GestureViewerManager.js.map +1 -1
- package/lib/module/useGestureViewer.js +70 -39
- package/lib/module/useGestureViewer.js.map +1 -1
- package/lib/module/useGestureViewerController.js +4 -0
- package/lib/module/useGestureViewerController.js.map +1 -1
- package/lib/module/utils.js +23 -0
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/src/GestureViewer.d.ts.map +1 -1
- package/lib/typescript/src/GestureViewerManager.d.ts +42 -0
- package/lib/typescript/src/GestureViewerManager.d.ts.map +1 -1
- package/lib/typescript/src/useGestureViewer.d.ts +9 -0
- package/lib/typescript/src/useGestureViewer.d.ts.map +1 -1
- package/lib/typescript/src/useGestureViewerController.d.ts +4 -0
- package/lib/typescript/src/useGestureViewerController.d.ts.map +1 -1
- package/lib/typescript/src/utils.d.ts +11 -0
- package/lib/typescript/src/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/GestureViewer.tsx +20 -12
- package/src/GestureViewerManager.ts +152 -5
- package/src/useGestureViewer.ts +79 -44
- package/src/useGestureViewerController.ts +4 -0
- package/src/utils.ts +21 -0
package/README.md
CHANGED
|
@@ -213,15 +213,25 @@ function App() {
|
|
|
213
213
|
}
|
|
214
214
|
```
|
|
215
215
|
|
|
216
|
-
###
|
|
216
|
+
### useGestureViewerController
|
|
217
217
|
|
|
218
|
-
|
|
218
|
+
You can programmatically control the `GestureViewer` using the `useGestureViewerController` hook.
|
|
219
219
|
|
|
220
220
|
```tsx
|
|
221
221
|
import { GestureViewer, useGestureViewerController } from 'react-native-gesture-image-viewer';
|
|
222
222
|
|
|
223
223
|
function App() {
|
|
224
|
-
const {
|
|
224
|
+
const {
|
|
225
|
+
goToIndex,
|
|
226
|
+
goToPrevious,
|
|
227
|
+
goToNext,
|
|
228
|
+
currentIndex,
|
|
229
|
+
totalCount,
|
|
230
|
+
zoomIn,
|
|
231
|
+
zoomOut,
|
|
232
|
+
resetZoom,
|
|
233
|
+
rotate
|
|
234
|
+
} = useGestureViewerController();
|
|
225
235
|
|
|
226
236
|
return (
|
|
227
237
|
<View>
|
|
@@ -229,16 +239,22 @@ function App() {
|
|
|
229
239
|
data={images}
|
|
230
240
|
renderItem={renderImage}
|
|
231
241
|
/>
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
+
{/* Zoom Controls */}
|
|
243
|
+
<View>
|
|
244
|
+
<Feather.Button name="zoom-in" onPress={() => zoomIn(0.25)} />
|
|
245
|
+
<Feather.Button name="zoom-out" onPress={() => zoomOut(0.25)} />
|
|
246
|
+
<Feather.Button
|
|
247
|
+
name="refresh-cw"
|
|
248
|
+
onPress={() => {
|
|
249
|
+
rotate(0);
|
|
250
|
+
resetZoom();
|
|
251
|
+
}}
|
|
252
|
+
/>
|
|
253
|
+
<Feather.Button name="rotate-cw" onPress={() => rotate(90)} />
|
|
254
|
+
<Feather.Button name="rotate-ccw" onPress={() => rotate(90, false)} />
|
|
255
|
+
</View>
|
|
256
|
+
{/* Navigation Controls */}
|
|
257
|
+
<View>
|
|
242
258
|
<Feather.Button name="chevron-left" onPress={goToPrevious} />
|
|
243
259
|
<Button title="Jump to index 2" onPress={() => goToIndex(2)} />
|
|
244
260
|
<Feather.Button name="chevron-right" onPress={goToNext} />
|
|
@@ -249,6 +265,41 @@ function App() {
|
|
|
249
265
|
}
|
|
250
266
|
```
|
|
251
267
|
|
|
268
|
+
### API Reference
|
|
269
|
+
|
|
270
|
+
| Property | Description | Type | Default |
|
|
271
|
+
|:---------|:------------|:-----|:-------:|
|
|
272
|
+
| `goToIndex` | Navigate to a specific index. | `(index: number) => void` | - |
|
|
273
|
+
| `goToPrevious` | Navigate to the previous item. | `() => void` | - |
|
|
274
|
+
| `goToNext` | Navigate to the next item. | `() => void` | - |
|
|
275
|
+
| `currentIndex` | The index of the currently displayed item. | `number` | `0` |
|
|
276
|
+
| `totalCount` | The total number of items. | `number` | `0` |
|
|
277
|
+
| `zoomIn` | Zoom in by the specified multiplier. | `(multiplier?: number) => void` | `0.25` |
|
|
278
|
+
| `zoomOut` | Zoom out by the specified multiplier. | `(multiplier?: number) => void` | `0.25` |
|
|
279
|
+
| `resetZoom` | Reset zoom to the specified scale. | `(scale?: number) => void` | `1` |
|
|
280
|
+
| `rotate` | Rotate by the specified angle. | `(angle?: number, clockwise?: boolean) => void` | `90, true` |
|
|
281
|
+
|
|
282
|
+
### Parameters
|
|
283
|
+
|
|
284
|
+
#### `zoomIn(multiplier?)`
|
|
285
|
+
- **multiplier**: The multiplier for zooming in (range: `0.01 ~ 1`)
|
|
286
|
+
- Example: `zoomIn(0.5)` → Zoom in by an additional 50% of the current scale
|
|
287
|
+
|
|
288
|
+
#### `zoomOut(multiplier?)`
|
|
289
|
+
- **multiplier**: The multiplier for zooming out (range: `0.01 ~ 1`)
|
|
290
|
+
- Example: `zoomOut(0.3)` → Zoom out by dividing the current scale by 1.3
|
|
291
|
+
|
|
292
|
+
#### `resetZoom(scale?)`
|
|
293
|
+
- **scale**: The scale value to reset to
|
|
294
|
+
- Example: `resetZoom(1.5)` → Reset to 1.5x scale
|
|
295
|
+
|
|
296
|
+
#### `rotate(angle?, clockwise?)`
|
|
297
|
+
- **angle**: The angle to rotate (0, 90, 180, 270, 360)
|
|
298
|
+
- **clockwise**: The direction to rotate (true: clockwise, false: counter-clockwise)
|
|
299
|
+
- Example: `rotate(90)` → Rotate 90 degrees clockwise
|
|
300
|
+
- Example: `rotate(90, false)` → Rotate 90 degrees counter-clockwise
|
|
301
|
+
- Example: `rotate(0)` → Reset rotation
|
|
302
|
+
|
|
252
303
|
### Style Customization
|
|
253
304
|
|
|
254
305
|
You can customize the styling of `GestureViewer`.
|
|
@@ -32,6 +32,7 @@ export function GestureViewer({
|
|
|
32
32
|
const {
|
|
33
33
|
listRef,
|
|
34
34
|
isZoomed,
|
|
35
|
+
isRotated,
|
|
35
36
|
dismissGesture,
|
|
36
37
|
zoomGesture,
|
|
37
38
|
onMomentumScrollEnd,
|
|
@@ -76,7 +77,7 @@ export function GestureViewer({
|
|
|
76
77
|
}, [id]);
|
|
77
78
|
const commonProps = useMemo(() => ({
|
|
78
79
|
horizontal: true,
|
|
79
|
-
scrollEnabled: !isZoomed,
|
|
80
|
+
scrollEnabled: !isZoomed && !isRotated,
|
|
80
81
|
showsHorizontalScrollIndicator: false,
|
|
81
82
|
onMomentumScrollEnd: onMomentumScrollEnd,
|
|
82
83
|
...(useSnap ? {
|
|
@@ -88,7 +89,7 @@ export function GestureViewer({
|
|
|
88
89
|
}),
|
|
89
90
|
scrollEventThrottle: 16,
|
|
90
91
|
removeClippedSubviews: true
|
|
91
|
-
}), [width, itemSpacing, isZoomed, onMomentumScrollEnd, useSnap]);
|
|
92
|
+
}), [width, itemSpacing, isZoomed, isRotated, onMomentumScrollEnd, useSnap]);
|
|
92
93
|
const listComponent = /*#__PURE__*/_jsx(GestureHandlerRootView, {
|
|
93
94
|
children: /*#__PURE__*/_jsx(GestureDetector, {
|
|
94
95
|
gesture: gesture,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","Platform","StyleSheet","useWindowDimensions","View","Gesture","GestureDetector","GestureHandlerRootView","Animated","registry","useGestureViewer","isFlashListLike","isFlatListLike","isScrollViewLike","WebPagingFixStyle","jsx","_jsx","jsxs","_jsxs","GestureViewer","id","data","renderItem","renderItemProp","renderContainer","ListComponent","width","customWidth","listProps","backdropStyle","backdropStyleProps","containerStyle","initialIndex","itemSpacing","useSnap","props","Component","screenWidth","listRef","isZoomed","dismissGesture","zoomGesture","onMomentumScrollEnd","animatedStyle","item","index","style","height","justifyContent","alignItems","marginHorizontal","children","getItemLayout","_","length","offset","keyExtractor","gesture","Race","createManager","deleteManager","commonProps","horizontal","scrollEnabled","showsHorizontalScrollIndicator","snapToInterval","snapToAlignment","decelerationRate","pagingEnabled","scrollEventThrottle","removeClippedSubviews","listComponent","styles","container","background","content","OS","dataSet","ref","map","initialScrollIndex","windowSize","maxToRenderPerBatch","estimatedItemSize","create","flex","position","top","left","right","bottom","backgroundColor"],"sourceRoot":"../../src","sources":["GestureViewer.tsx"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,OAAO,QAAQ,OAAO;AACvD,SAAwBC,QAAQ,EAAwBC,UAAU,EAAEC,mBAAmB,EAAEC,IAAI,QAAQ,cAAc;AACnH,SAASC,OAAO,EAAEC,eAAe,EAAEC,sBAAsB,QAAQ,8BAA8B;AAC/F,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,QAAQ,QAAQ,4BAAyB;AAElD,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,eAAe,EAAEC,cAAc,EAAEC,gBAAgB,QAAQ,YAAS;AAC3E,OAAOC,iBAAiB,MAAM,wBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEpD,OAAO,SAASC,aAAaA,CAAgC;EAC3DC,EAAE,GAAG,SAAS;EACdC,IAAI;EACJC,UAAU,EAAEC,cAAc;EAC1BC,eAAe;EACfC,aAAa;EACbC,KAAK,EAAEC,WAAW;EAClBC,SAAS;EACTC,aAAa,EAAEC,kBAAkB;EACjCC,cAAc;EACdC,YAAY,GAAG,CAAC;EAChBC,WAAW,GAAG,CAAC;EACfC,OAAO,GAAG,KAAK;EACf,GAAGC;AACsB,CAAC,EAAE;EAC5B,MAAMC,SAAS,GAAGX,aAAyC;EAE3D,MAAM;IAAEC,KAAK,EAAEW;EAAY,CAAC,GAAGlC,mBAAmB,CAAC,CAAC;EAEpD,MAAMuB,KAAK,GAAGQ,OAAO,GAAGP,WAAW,IAAIU,WAAW,GAAGA,WAAW;EAEhE,MAAM;
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","Platform","StyleSheet","useWindowDimensions","View","Gesture","GestureDetector","GestureHandlerRootView","Animated","registry","useGestureViewer","isFlashListLike","isFlatListLike","isScrollViewLike","WebPagingFixStyle","jsx","_jsx","jsxs","_jsxs","GestureViewer","id","data","renderItem","renderItemProp","renderContainer","ListComponent","width","customWidth","listProps","backdropStyle","backdropStyleProps","containerStyle","initialIndex","itemSpacing","useSnap","props","Component","screenWidth","listRef","isZoomed","isRotated","dismissGesture","zoomGesture","onMomentumScrollEnd","animatedStyle","item","index","style","height","justifyContent","alignItems","marginHorizontal","children","getItemLayout","_","length","offset","keyExtractor","gesture","Race","createManager","deleteManager","commonProps","horizontal","scrollEnabled","showsHorizontalScrollIndicator","snapToInterval","snapToAlignment","decelerationRate","pagingEnabled","scrollEventThrottle","removeClippedSubviews","listComponent","styles","container","background","content","OS","dataSet","ref","map","initialScrollIndex","windowSize","maxToRenderPerBatch","estimatedItemSize","create","flex","position","top","left","right","bottom","backgroundColor"],"sourceRoot":"../../src","sources":["GestureViewer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { withTiming } from 'react-native-reanimated';
|
|
4
|
+
import { createBoundsConstraint } from "./utils.js";
|
|
3
5
|
class GestureViewerManager {
|
|
4
6
|
currentIndex = 0;
|
|
5
7
|
dataLength = 0;
|
|
6
8
|
width = 0;
|
|
9
|
+
height = 0;
|
|
10
|
+
scale = null;
|
|
11
|
+
translateX = null;
|
|
12
|
+
translateY = null;
|
|
13
|
+
maxZoomScale = 2;
|
|
7
14
|
listRef = null;
|
|
8
15
|
enableSwipeGesture = true;
|
|
9
16
|
listeners = new Set();
|
|
10
|
-
|
|
11
|
-
// private updateState(newState: Partial<any>) {
|
|
12
|
-
// Object.assign(this, newState);
|
|
13
|
-
// this.notifyListeners();
|
|
14
|
-
// }
|
|
15
|
-
|
|
17
|
+
rotation = null;
|
|
16
18
|
notifyListeners() {
|
|
17
19
|
const state = this.getState();
|
|
18
20
|
this.listeners.forEach(listener => listener(state));
|
|
@@ -32,6 +34,9 @@ class GestureViewerManager {
|
|
|
32
34
|
setWidth(width) {
|
|
33
35
|
this.width = width;
|
|
34
36
|
}
|
|
37
|
+
setHeight(height) {
|
|
38
|
+
this.height = height;
|
|
39
|
+
}
|
|
35
40
|
setListRef(ref) {
|
|
36
41
|
this.listRef = ref;
|
|
37
42
|
}
|
|
@@ -46,9 +51,120 @@ class GestureViewerManager {
|
|
|
46
51
|
this.currentIndex = index;
|
|
47
52
|
}
|
|
48
53
|
}
|
|
54
|
+
setZoomSharedValues(scale, translateX, translateY, maxZoomScale) {
|
|
55
|
+
this.scale = scale;
|
|
56
|
+
this.translateX = translateX;
|
|
57
|
+
this.translateY = translateY;
|
|
58
|
+
this.maxZoomScale = maxZoomScale;
|
|
59
|
+
}
|
|
49
60
|
notifyStateChange() {
|
|
50
61
|
this.notifyListeners();
|
|
51
62
|
}
|
|
63
|
+
setRotation(rotation) {
|
|
64
|
+
this.rotation = rotation;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @param angle - The angle to rotate.
|
|
69
|
+
* @default 90 (0, 90, 180, 270, 360)
|
|
70
|
+
* @param clockwise - The direction to rotate.
|
|
71
|
+
* @default true (clockwise)
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* rotate(0) // reset rotation
|
|
75
|
+
* rotate(number, false) // rotate {number} degrees counter-clockwise
|
|
76
|
+
* rotate(90) // rotate 90 degrees clockwise
|
|
77
|
+
* rotate(180) // rotate 180 degrees clockwise
|
|
78
|
+
* rotate(270) // rotate 270 degrees clockwise
|
|
79
|
+
* rotate(360) // rotate 360 degrees clockwise
|
|
80
|
+
*/
|
|
81
|
+
rotate = (angle = 90, clockwise = true) => {
|
|
82
|
+
const MAX_ANGLE = 360;
|
|
83
|
+
if (!this.rotation || angle < 0 || angle > MAX_ANGLE || angle !== 0 && this.rotation.value % angle !== 0 && angle !== 360) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (angle === 0) {
|
|
87
|
+
const nextAngle = Math.floor(this.rotation.value / MAX_ANGLE) * MAX_ANGLE;
|
|
88
|
+
this.rotation.value = withTiming(clockwise ? nextAngle : nextAngle - MAX_ANGLE);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (angle === 360) {
|
|
92
|
+
this.rotation.value = withTiming(clockwise ? this.rotation.value + MAX_ANGLE : this.rotation.value - MAX_ANGLE);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const nextAngle = clockwise ? this.rotation.value + angle : this.rotation.value - angle;
|
|
96
|
+
this.rotation.value = withTiming(nextAngle);
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* @param multiplier - The multiplier to zoom in.
|
|
101
|
+
* @range 0.01 - 1
|
|
102
|
+
* @default 0.25
|
|
103
|
+
*/
|
|
104
|
+
zoomIn = (multiplier = 0.25) => {
|
|
105
|
+
if (!this.scale || !this.translateX || !this.translateY || multiplier < 0.01 || multiplier > 1) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const nextScale = Math.min(this.scale.value * (1 + multiplier), this.maxZoomScale);
|
|
109
|
+
this.scale.value = withTiming(nextScale);
|
|
110
|
+
const {
|
|
111
|
+
translateX,
|
|
112
|
+
translateY
|
|
113
|
+
} = createBoundsConstraint({
|
|
114
|
+
width: this.width,
|
|
115
|
+
height: this.height
|
|
116
|
+
})({
|
|
117
|
+
translateX: this.translateX.value,
|
|
118
|
+
translateY: this.translateY.value,
|
|
119
|
+
scale: nextScale
|
|
120
|
+
});
|
|
121
|
+
this.translateX.value = withTiming(translateX);
|
|
122
|
+
this.translateY.value = withTiming(translateY);
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @param multiplier - The multiplier to zoom out.
|
|
127
|
+
* @range 0.01 - 1
|
|
128
|
+
* @default 0.25
|
|
129
|
+
*/
|
|
130
|
+
zoomOut = (multiplier = 0.25) => {
|
|
131
|
+
if (!this.scale || !this.translateX || !this.translateY || multiplier < 0.01 || multiplier > 1) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const nextScale = Math.max(this.scale.value / (1 + multiplier), 1);
|
|
135
|
+
this.scale.value = withTiming(nextScale);
|
|
136
|
+
if (nextScale === 1) {
|
|
137
|
+
this.translateX.value = withTiming(0);
|
|
138
|
+
this.translateY.value = withTiming(0);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const {
|
|
142
|
+
translateX,
|
|
143
|
+
translateY
|
|
144
|
+
} = createBoundsConstraint({
|
|
145
|
+
width: this.width,
|
|
146
|
+
height: this.height
|
|
147
|
+
})({
|
|
148
|
+
translateX: this.translateX.value,
|
|
149
|
+
translateY: this.translateY.value,
|
|
150
|
+
scale: nextScale
|
|
151
|
+
});
|
|
152
|
+
this.translateX.value = withTiming(translateX);
|
|
153
|
+
this.translateY.value = withTiming(translateY);
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* @param scale - The scale to reset to.
|
|
158
|
+
* @default 1
|
|
159
|
+
*/
|
|
160
|
+
resetZoom = (scale = 1) => {
|
|
161
|
+
if (!this.scale || !this.translateX || !this.translateY || scale <= 0 || scale > this.maxZoomScale) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
this.scale.value = withTiming(scale);
|
|
165
|
+
this.translateX.value = withTiming(0);
|
|
166
|
+
this.translateY.value = withTiming(0);
|
|
167
|
+
};
|
|
52
168
|
goToIndex = index => {
|
|
53
169
|
if (index < 0 || index >= this.dataLength || !this.enableSwipeGesture || !this.listRef) {
|
|
54
170
|
return;
|
|
@@ -83,6 +199,11 @@ class GestureViewerManager {
|
|
|
83
199
|
this.enableSwipeGesture = true;
|
|
84
200
|
this.currentIndex = 0;
|
|
85
201
|
this.dataLength = 0;
|
|
202
|
+
this.maxZoomScale = 2;
|
|
203
|
+
this.scale = null;
|
|
204
|
+
this.translateX = null;
|
|
205
|
+
this.translateY = null;
|
|
206
|
+
this.rotation = null;
|
|
86
207
|
}
|
|
87
208
|
}
|
|
88
209
|
export default GestureViewerManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["GestureViewerManager","currentIndex","dataLength","width","listRef","enableSwipeGesture","listeners","Set","notifyListeners","state","getState","forEach","listener","subscribe","add","delete","setWidth","setListRef","ref","setDataLength","length","setEnableSwipeGesture","enabled","setCurrentIndex","index","notifyStateChange","goToIndex","scrollToIndex","animated","scrollTo","x","goToPrevious","goToNext","cleanUp","clear"],"sourceRoot":"../../src","sources":["GestureViewerManager.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["withTiming","createBoundsConstraint","GestureViewerManager","currentIndex","dataLength","width","height","scale","translateX","translateY","maxZoomScale","listRef","enableSwipeGesture","listeners","Set","rotation","notifyListeners","state","getState","forEach","listener","subscribe","add","delete","setWidth","setHeight","setListRef","ref","setDataLength","length","setEnableSwipeGesture","enabled","setCurrentIndex","index","setZoomSharedValues","notifyStateChange","setRotation","rotate","angle","clockwise","MAX_ANGLE","value","nextAngle","Math","floor","zoomIn","multiplier","nextScale","min","zoomOut","max","resetZoom","goToIndex","scrollToIndex","animated","scrollTo","x","goToPrevious","goToNext","cleanUp","clear"],"sourceRoot":"../../src","sources":["GestureViewerManager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ import { InteractionManager, useWindowDimensions } from 'react-native';
|
|
|
5
5
|
import { Gesture } from 'react-native-gesture-handler';
|
|
6
6
|
import { Easing, interpolate, runOnJS, useAnimatedReaction, useAnimatedStyle, useSharedValue, withSpring, withTiming } from 'react-native-reanimated';
|
|
7
7
|
import { registry } from "./GestureViewerRegistry.js";
|
|
8
|
+
import { createBoundsConstraint } from "./utils.js";
|
|
8
9
|
export const useGestureViewer = ({
|
|
9
10
|
data,
|
|
10
11
|
initialIndex = 0,
|
|
@@ -32,6 +33,7 @@ export const useGestureViewer = ({
|
|
|
32
33
|
} = useWindowDimensions();
|
|
33
34
|
const width = useSnap ? customWidth || screenWidth : screenWidth;
|
|
34
35
|
const [isZoomed, setIsZoomed] = useState(false);
|
|
36
|
+
const [isRotated, setIsRotated] = useState(false);
|
|
35
37
|
const [currentIndex, setCurrentIndex] = useState(initialIndex);
|
|
36
38
|
const [manager, setManager] = useState(null);
|
|
37
39
|
const unsubscribeRef = useRef(null);
|
|
@@ -42,27 +44,19 @@ export const useGestureViewer = ({
|
|
|
42
44
|
const translateX = useSharedValue(0);
|
|
43
45
|
const scale = useSharedValue(1);
|
|
44
46
|
const backdropOpacity = useSharedValue(1);
|
|
47
|
+
const rotation = useSharedValue(0);
|
|
45
48
|
const listRef = useRef(null);
|
|
46
49
|
const dataLength = data?.length || 0;
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return {
|
|
52
|
-
x: translateX,
|
|
53
|
-
y: translateY
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
const maxTranslateX = (width * scale - width) / 2;
|
|
57
|
-
const maxTranslateY = (screenHeight * scale - screenHeight) / 2;
|
|
58
|
-
return {
|
|
59
|
-
x: Math.max(-maxTranslateX, Math.min(maxTranslateX, translateX)),
|
|
60
|
-
y: Math.max(-maxTranslateY, Math.min(maxTranslateY, translateY))
|
|
61
|
-
};
|
|
62
|
-
}, [width, screenHeight]);
|
|
50
|
+
const constrainTranslation = useMemo(() => createBoundsConstraint({
|
|
51
|
+
width,
|
|
52
|
+
height: screenHeight
|
|
53
|
+
}), [width, screenHeight]);
|
|
63
54
|
useAnimatedReaction(() => scale.value, currentScale => {
|
|
64
55
|
runOnJS(setIsZoomed)(currentScale > 1);
|
|
65
56
|
});
|
|
57
|
+
useAnimatedReaction(() => rotation.value, currentRotation => {
|
|
58
|
+
runOnJS(setIsRotated)(currentRotation % 360 !== 0);
|
|
59
|
+
});
|
|
66
60
|
useEffect(() => {
|
|
67
61
|
const handleManagerChange = manager => {
|
|
68
62
|
unsubscribeRef.current?.();
|
|
@@ -91,8 +85,11 @@ export const useGestureViewer = ({
|
|
|
91
85
|
manager.setEnableSwipeGesture(enableSwipeGesture);
|
|
92
86
|
manager.setCurrentIndex(initialIndex);
|
|
93
87
|
manager.setWidth(width + itemSpacing);
|
|
88
|
+
manager.setHeight(screenHeight);
|
|
89
|
+
manager.setZoomSharedValues(scale, translateX, translateY, maxZoomScale);
|
|
90
|
+
manager.setRotation(rotation);
|
|
94
91
|
manager.notifyStateChange();
|
|
95
|
-
}, [dataLength, enableSwipeGesture, initialIndex, manager, width, itemSpacing]);
|
|
92
|
+
}, [dataLength, enableSwipeGesture, initialIndex, manager, width, itemSpacing, maxZoomScale, scale, screenHeight, translateX, translateY, rotation]);
|
|
96
93
|
useEffect(() => {
|
|
97
94
|
if (!manager || !listRef.current) {
|
|
98
95
|
return;
|
|
@@ -108,6 +105,7 @@ export const useGestureViewer = ({
|
|
|
108
105
|
scale.value = 1;
|
|
109
106
|
backdropOpacity.value = 1;
|
|
110
107
|
startScale.value = 1;
|
|
108
|
+
rotation.value = 0;
|
|
111
109
|
if (initialIndex <= 0 || !listRef.current) {
|
|
112
110
|
return;
|
|
113
111
|
}
|
|
@@ -127,7 +125,7 @@ export const useGestureViewer = ({
|
|
|
127
125
|
return () => {
|
|
128
126
|
runAfterInteractions?.cancel();
|
|
129
127
|
};
|
|
130
|
-
}, [initialIndex, translateY, backdropOpacity, translateX, scale, startScale, width, itemSpacing]);
|
|
128
|
+
}, [initialIndex, translateY, backdropOpacity, translateX, scale, startScale, width, itemSpacing, rotation]);
|
|
131
129
|
const onMomentumScrollEnd = useCallback(event => {
|
|
132
130
|
if (!enableSwipeGesture) {
|
|
133
131
|
return;
|
|
@@ -146,8 +144,9 @@ export const useGestureViewer = ({
|
|
|
146
144
|
initialTranslateY.value = withTiming(0);
|
|
147
145
|
startScale.value = withTiming(1);
|
|
148
146
|
scale.value = withTiming(1);
|
|
147
|
+
rotation.value = 0;
|
|
149
148
|
}
|
|
150
|
-
}, [manager, currentIndex, dataLength, width, itemSpacing, enableSwipeGesture, translateX, translateY, scale, initialTranslateX, initialTranslateY, startScale]);
|
|
149
|
+
}, [manager, currentIndex, dataLength, width, itemSpacing, enableSwipeGesture, translateX, translateY, scale, initialTranslateX, initialTranslateY, startScale, rotation]);
|
|
151
150
|
const dismissGesture = useMemo(() => {
|
|
152
151
|
return Gesture.Pan().minDistance(10).averageTouches(true).activeCursor('grabbing').activeOffsetY([-10, 10]).failOffsetX([-10, 10]).enabled(!isZoomed).onUpdate(event => {
|
|
153
152
|
translateY.value = event.translationY / resistance;
|
|
@@ -169,30 +168,45 @@ export const useGestureViewer = ({
|
|
|
169
168
|
initialTranslateY.value = translateY.value;
|
|
170
169
|
}).onUpdate(event => {
|
|
171
170
|
const newScale = startScale.value * event.scale;
|
|
172
|
-
const deltaScale = newScale - startScale.value;
|
|
173
|
-
const centerX = event.focalX - width / 2;
|
|
174
|
-
const centerY = event.focalY - screenHeight / 2;
|
|
175
171
|
scale.value = newScale;
|
|
176
|
-
// NOTE 새로운 이동값 = 기존 이동값 - (중심점 거리 × 스케일 변화량) / 원래 스케일 (중심점이 화면 중심에서 멀수록, 확대 배율이 클수록 더 많이 이동)
|
|
177
|
-
const newTranslateX = initialTranslateX.value - centerX * deltaScale / startScale.value;
|
|
178
|
-
const newTranslateY = initialTranslateY.value - centerY * deltaScale / startScale.value;
|
|
179
|
-
const constrained = constrainToBounds(newTranslateX, newTranslateY, newScale);
|
|
180
172
|
if (newScale <= 1) {
|
|
181
173
|
translateX.value = withTiming(0);
|
|
182
174
|
translateY.value = withTiming(0);
|
|
183
175
|
return;
|
|
184
176
|
}
|
|
185
|
-
|
|
186
|
-
|
|
177
|
+
const deltaScale = newScale - startScale.value;
|
|
178
|
+
const centerX = event.focalX - width / 2;
|
|
179
|
+
const centerY = event.focalY - screenHeight / 2;
|
|
180
|
+
|
|
181
|
+
// NOTE 새로운 이동값 = 기존 이동값 - (중심점 거리 × 스케일 변화량) / 원래 스케일 (중심점이 화면 중심에서 멀수록, 확대 배율이 클수록 더 많이 이동)
|
|
182
|
+
const newTranslateX = initialTranslateX.value - centerX * deltaScale / startScale.value;
|
|
183
|
+
const newTranslateY = initialTranslateY.value - centerY * deltaScale / startScale.value;
|
|
184
|
+
const {
|
|
185
|
+
translateX: constrainedTranslateX,
|
|
186
|
+
translateY: constrainedTranslateY
|
|
187
|
+
} = constrainTranslation({
|
|
188
|
+
translateX: newTranslateX,
|
|
189
|
+
translateY: newTranslateY,
|
|
190
|
+
scale: newScale
|
|
191
|
+
});
|
|
192
|
+
translateX.value = constrainedTranslateX;
|
|
193
|
+
translateY.value = constrainedTranslateY;
|
|
187
194
|
}).onEnd(() => {
|
|
188
195
|
if (scale.value > maxZoomScale) {
|
|
189
196
|
scale.value = withTiming(maxZoomScale, {
|
|
190
197
|
duration: 300,
|
|
191
198
|
easing: Easing.bezier(0.25, 0.1, 0.25, 1.0)
|
|
192
199
|
});
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
|
|
200
|
+
const {
|
|
201
|
+
translateX: constrainedTranslateX,
|
|
202
|
+
translateY: constrainedTranslateY
|
|
203
|
+
} = constrainTranslation({
|
|
204
|
+
translateX: translateX.value,
|
|
205
|
+
translateY: translateY.value,
|
|
206
|
+
scale: maxZoomScale
|
|
207
|
+
});
|
|
208
|
+
translateX.value = withTiming(constrainedTranslateX);
|
|
209
|
+
translateY.value = withTiming(constrainedTranslateY);
|
|
196
210
|
return;
|
|
197
211
|
}
|
|
198
212
|
if (scale.value < 1) {
|
|
@@ -206,11 +220,18 @@ export const useGestureViewer = ({
|
|
|
206
220
|
initialTranslateY.value = withTiming(0);
|
|
207
221
|
return;
|
|
208
222
|
}
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
|
|
223
|
+
const {
|
|
224
|
+
translateX: constrainedTranslateX,
|
|
225
|
+
translateY: constrainedTranslateY
|
|
226
|
+
} = constrainTranslation({
|
|
227
|
+
translateX: translateX.value,
|
|
228
|
+
translateY: translateY.value,
|
|
229
|
+
scale: scale.value
|
|
230
|
+
});
|
|
231
|
+
translateX.value = withTiming(constrainedTranslateX);
|
|
232
|
+
translateY.value = withTiming(constrainedTranslateY);
|
|
212
233
|
});
|
|
213
|
-
}, [scale, enableZoomGesture, maxZoomScale, translateX, translateY, startScale, initialTranslateX, initialTranslateY, width, screenHeight,
|
|
234
|
+
}, [scale, enableZoomGesture, maxZoomScale, translateX, translateY, startScale, initialTranslateX, initialTranslateY, width, screenHeight, constrainTranslation]);
|
|
214
235
|
const zoomPanGesture = useMemo(() => {
|
|
215
236
|
return Gesture.Pan().enabled(enableZoomPanGesture && isZoomed).activeCursor('grabbing').averageTouches(true).onBegin(() => {
|
|
216
237
|
initialTranslateX.value = translateX.value;
|
|
@@ -219,12 +240,19 @@ export const useGestureViewer = ({
|
|
|
219
240
|
if (scale.value > 1) {
|
|
220
241
|
const newTranslateX = initialTranslateX.value + event.translationX;
|
|
221
242
|
const newTranslateY = initialTranslateY.value + event.translationY;
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
|
|
243
|
+
const {
|
|
244
|
+
translateX: constrainedTranslateX,
|
|
245
|
+
translateY: constrainedTranslateY
|
|
246
|
+
} = constrainTranslation({
|
|
247
|
+
translateX: newTranslateX,
|
|
248
|
+
translateY: newTranslateY,
|
|
249
|
+
scale: scale.value
|
|
250
|
+
});
|
|
251
|
+
translateX.value = constrainedTranslateX;
|
|
252
|
+
translateY.value = constrainedTranslateY;
|
|
225
253
|
}
|
|
226
254
|
});
|
|
227
|
-
}, [translateX, translateY, enableZoomPanGesture, isZoomed, scale, initialTranslateX, initialTranslateY,
|
|
255
|
+
}, [translateX, translateY, enableZoomPanGesture, isZoomed, scale, initialTranslateX, initialTranslateY, constrainTranslation]);
|
|
228
256
|
const doubleTapGesture = useMemo(() => {
|
|
229
257
|
return Gesture.Tap().enabled(enableDoubleTapGesture).numberOfTaps(2).onEnd(event => {
|
|
230
258
|
const nextScale = scale.value > 1 ? 1 : maxZoomScale;
|
|
@@ -268,6 +296,8 @@ export const useGestureViewer = ({
|
|
|
268
296
|
translateX: translateX.value
|
|
269
297
|
}, {
|
|
270
298
|
scale: scale.value
|
|
299
|
+
}, {
|
|
300
|
+
rotate: `${rotation.value}deg`
|
|
271
301
|
}]
|
|
272
302
|
};
|
|
273
303
|
});
|
|
@@ -288,6 +318,7 @@ export const useGestureViewer = ({
|
|
|
288
318
|
translateY,
|
|
289
319
|
listRef,
|
|
290
320
|
isZoomed,
|
|
321
|
+
isRotated,
|
|
291
322
|
dismissGesture,
|
|
292
323
|
zoomGesture,
|
|
293
324
|
onMomentumScrollEnd,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","InteractionManager","useWindowDimensions","Gesture","Easing","interpolate","runOnJS","useAnimatedReaction","useAnimatedStyle","useSharedValue","withSpring","withTiming","registry","useGestureViewer","data","initialIndex","onIndexChange","onDismiss","width","customWidth","dismissThreshold","resistance","animateBackdrop","enableDismissGesture","enableSwipeGesture","enableZoomGesture","enableDoubleTapGesture","enableZoomPanGesture","maxZoomScale","itemSpacing","useSnap","id","screenWidth","height","screenHeight","isZoomed","setIsZoomed","currentIndex","setCurrentIndex","manager","setManager","unsubscribeRef","initialTranslateY","initialTranslateX","startScale","translateY","translateX","scale","backdropOpacity","listRef","dataLength","length","constrainToBounds","x","y","maxTranslateX","maxTranslateY","Math","max","min","value","currentScale","handleManagerChange","current","getState","subscribe","state","unsubscribeFromRegistry","subscribeToManager","setDataLength","setEnableSwipeGesture","setWidth","notifyStateChange","setListRef","runAfterInteractions","scrollToIndex","index","animated","scrollTo","cancel","onMomentumScrollEnd","event","contentOffset","nativeEvent","newIndex","round","dismissGesture","Pan","minDistance","averageTouches","activeCursor","activeOffsetY","failOffsetX","enabled","onUpdate","translationY","onEnd","damping","stiffness","zoomPinchGesture","Pinch","onBegin","newScale","deltaScale","centerX","focalX","centerY","focalY","newTranslateX","newTranslateY","constrained","duration","easing","bezier","finalConstrained","zoomPanGesture","translationX","doubleTapGesture","Tap","numberOfTaps","nextScale","zoomGesture","Race","Exclusive","animatedStyle","transform","backdropStyle","opacity"],"sourceRoot":"../../src","sources":["useGestureViewer.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACzE,SACEC,kBAAkB,EAGlBC,mBAAmB,QACd,cAAc;AACrB,SAASC,OAAO,QAAQ,8BAA8B;AACtD,SACEC,MAAM,EACNC,WAAW,EACXC,OAAO,EACPC,mBAAmB,EACnBC,gBAAgB,EAChBC,cAAc,EACdC,UAAU,EACVC,UAAU,QACL,yBAAyB;AAEhC,SAASC,QAAQ,QAAQ,4BAAyB;AAQlD,OAAO,MAAMC,gBAAgB,GAAGA,CAAU;EACxCC,IAAI;EACJC,YAAY,GAAG,CAAC;EAChBC,aAAa;EACbC,SAAS;EACTC,KAAK,EAAEC,WAAW;EAClBC,gBAAgB,GAAG,EAAE;EACrBC,UAAU,GAAG,CAAC;EACd;EACA;EACAC,eAAe,GAAG,IAAI;EACtBC,oBAAoB,GAAG,IAAI;EAC3BC,kBAAkB,GAAG,IAAI;EACzBC,iBAAiB,GAAG,IAAI;EACxBC,sBAAsB,GAAG,IAAI;EAC7BC,oBAAoB,GAAG,IAAI;EAC3BC,YAAY,GAAG,CAAC;EAChBC,WAAW,GAAG,CAAC;EACfC,OAAO,GAAG,KAAK;EACfC,EAAE,GAAG;AACmB,CAAC,KAAK;EAC9B,MAAM;IAAEb,KAAK,EAAEc,WAAW;IAAEC,MAAM,EAAEC;EAAa,CAAC,GAAGhC,mBAAmB,CAAC,CAAC;EAC1E,MAAMgB,KAAK,GAAGY,OAAO,GAAGX,WAAW,IAAIa,WAAW,GAAGA,WAAW;EAEhE,MAAM,CAACG,QAAQ,EAAEC,WAAW,CAAC,GAAGpC,QAAQ,CAAC,KAAK,CAAC;EAE/C,MAAM,CAACqC,YAAY,EAAEC,eAAe,CAAC,GAAGtC,QAAQ,CAACe,YAAY,CAAC;EAC9D,MAAM,CAACwB,OAAO,EAAEC,UAAU,CAAC,GAAGxC,QAAQ,CAA8B,IAAI,CAAC;EAEzE,MAAMyC,cAAc,GAAG1C,MAAM,CAAsB,IAAI,CAAC;EAExD,MAAM2C,iBAAiB,GAAGjC,cAAc,CAAC,CAAC,CAAC;EAC3C,MAAMkC,iBAAiB,GAAGlC,cAAc,CAAC,CAAC,CAAC;EAC3C,MAAMmC,UAAU,GAAGnC,cAAc,CAAC,CAAC,CAAC;EAEpC,MAAMoC,UAAU,GAAGpC,cAAc,CAAC,CAAC,CAAC;EACpC,MAAMqC,UAAU,GAAGrC,cAAc,CAAC,CAAC,CAAC;EACpC,MAAMsC,KAAK,GAAGtC,cAAc,CAAC,CAAC,CAAC;EAC/B,MAAMuC,eAAe,GAAGvC,cAAc,CAAC,CAAC,CAAC;EAEzC,MAAMwC,OAAO,GAAGlD,MAAM,CAAM,IAAI,CAAC;EAEjC,MAAMmD,UAAU,GAAGpC,IAAI,EAAEqC,MAAM,IAAI,CAAC;EAEpC,MAAMC,iBAAiB,GAAGxD,WAAW,CACnC,CAACkD,UAAkB,EAAED,UAAkB,EAAEE,KAAa,KAAK;IACzD,SAAS;;IACT,IAAIA,KAAK,IAAI,CAAC,EAAE;MACd,OAAO;QACLM,CAAC,EAAEP,UAAU;QACbQ,CAAC,EAAET;MACL,CAAC;IACH;IAEA,MAAMU,aAAa,GAAG,CAACrC,KAAK,GAAG6B,KAAK,GAAG7B,KAAK,IAAI,CAAC;IACjD,MAAMsC,aAAa,GAAG,CAACtB,YAAY,GAAGa,KAAK,GAAGb,YAAY,IAAI,CAAC;IAE/D,OAAO;MACLmB,CAAC,EAAEI,IAAI,CAACC,GAAG,CAAC,CAACH,aAAa,EAAEE,IAAI,CAACE,GAAG,CAACJ,aAAa,EAAET,UAAU,CAAC,CAAC;MAChEQ,CAAC,EAAEG,IAAI,CAACC,GAAG,CAAC,CAACF,aAAa,EAAEC,IAAI,CAACE,GAAG,CAACH,aAAa,EAAEX,UAAU,CAAC;IACjE,CAAC;EACH,CAAC,EACD,CAAC3B,KAAK,EAAEgB,YAAY,CACtB,CAAC;EAED3B,mBAAmB,CACjB,MAAMwC,KAAK,CAACa,KAAK,EAChBC,YAAY,IAAK;IAChBvD,OAAO,CAAC8B,WAAW,CAAC,CAACyB,YAAY,GAAG,CAAC,CAAC;EACxC,CACF,CAAC;EAEDhE,SAAS,CAAC,MAAM;IACd,MAAMiE,mBAAmB,GAAIvB,OAAoC,IAAK;MACpEE,cAAc,CAACsB,OAAO,GAAG,CAAC;MAC1BtB,cAAc,CAACsB,OAAO,GAAG,IAAI;MAE7BvB,UAAU,CAACD,OAAO,CAAC;MAEnB,IAAIA,OAAO,EAAE;QACXD,eAAe,CAACC,OAAO,CAACyB,QAAQ,CAAC,CAAC,CAAC3B,YAAY,CAAC;QAChDI,cAAc,CAACsB,OAAO,GAAGxB,OAAO,CAAC0B,SAAS,CAAEC,KAAK,IAAK;UACpD5B,eAAe,CAAC4B,KAAK,CAAC7B,YAAY,CAAC;QACrC,CAAC,CAAC;QACF;MACF;MAEAC,eAAe,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM6B,uBAAuB,GAAGvD,QAAQ,CAACwD,kBAAkB,CAACrC,EAAE,EAAE+B,mBAAmB,CAAC;IAEpF,OAAO,MAAM;MACXK,uBAAuB,CAAC,CAAC;MACzB1B,cAAc,CAACsB,OAAO,GAAG,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,CAAChC,EAAE,CAAC,CAAC;EAERlC,SAAS,CAAC,MAAM;IACd,IAAI,CAAC0C,OAAO,EAAE;MACZ;IACF;IAEAA,OAAO,CAAC8B,aAAa,CAACnB,UAAU,CAAC;IACjCX,OAAO,CAAC+B,qBAAqB,CAAC9C,kBAAkB,CAAC;IACjDe,OAAO,CAACD,eAAe,CAACvB,YAAY,CAAC;IACrCwB,OAAO,CAACgC,QAAQ,CAACrD,KAAK,GAAGW,WAAW,CAAC;IACrCU,OAAO,CAACiC,iBAAiB,CAAC,CAAC;EAC7B,CAAC,EAAE,CAACtB,UAAU,EAAE1B,kBAAkB,EAAET,YAAY,EAAEwB,OAAO,EAAErB,KAAK,EAAEW,WAAW,CAAC,CAAC;EAE/EhC,SAAS,CAAC,MAAM;IACd,IAAI,CAAC0C,OAAO,IAAI,CAACU,OAAO,CAACc,OAAO,EAAE;MAChC;IACF;IAEAxB,OAAO,CAACkC,UAAU,CAACxB,OAAO,CAACc,OAAO,CAAC;EACrC,CAAC,EAAE,CAACxB,OAAO,CAAC,CAAC;EAEb1C,SAAS,CAAC,MAAM;IACdmB,aAAa,GAAGqB,YAAY,CAAC;EAC/B,CAAC,EAAE,CAACA,YAAY,EAAErB,aAAa,CAAC,CAAC;EAEjCnB,SAAS,CAAC,MAAM;IACdgD,UAAU,CAACe,KAAK,GAAG,CAAC;IACpBd,UAAU,CAACc,KAAK,GAAG,CAAC;IACpBb,KAAK,CAACa,KAAK,GAAG,CAAC;IACfZ,eAAe,CAACY,KAAK,GAAG,CAAC;IACzBhB,UAAU,CAACgB,KAAK,GAAG,CAAC;IAEpB,IAAI7C,YAAY,IAAI,CAAC,IAAI,CAACkC,OAAO,CAACc,OAAO,EAAE;MACzC;IACF;IAEA,MAAMW,oBAAoB,GAAGzE,kBAAkB,CAACyE,oBAAoB,CAAC,MAAM;MACzE,IAAIzB,OAAO,CAACc,OAAO,CAACY,aAAa,EAAE;QACjC1B,OAAO,CAACc,OAAO,CAACY,aAAa,CAAC;UAC5BC,KAAK,EAAE7D,YAAY;UACnB8D,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ,CAAC,MAAM,IAAI5B,OAAO,CAACc,OAAO,CAACe,QAAQ,EAAE;QACnC7B,OAAO,CAACc,OAAO,CAACe,QAAQ,CAAC;UACvBzB,CAAC,EAAEtC,YAAY,IAAIG,KAAK,GAAGW,WAAW,CAAC;UACvCgD,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IAEF,OAAO,MAAM;MACXH,oBAAoB,EAAEK,MAAM,CAAC,CAAC;IAChC,CAAC;EACH,CAAC,EAAE,CAAChE,YAAY,EAAE8B,UAAU,EAAEG,eAAe,EAAEF,UAAU,EAAEC,KAAK,EAAEH,UAAU,EAAE1B,KAAK,EAAEW,WAAW,CAAC,CAAC;EAElG,MAAMmD,mBAAmB,GAAGpF,WAAW,CACpCqF,KAA8C,IAAK;IAClD,IAAI,CAACzD,kBAAkB,EAAE;MACvB;IACF;IAEA,MAAM0D,aAAa,GAAGD,KAAK,CAACE,WAAW,CAACD,aAAa;IACrD,MAAME,QAAQ,GAAG3B,IAAI,CAAC4B,KAAK,CAACH,aAAa,CAAC7B,CAAC,IAAInC,KAAK,GAAGW,WAAW,CAAC,CAAC;IAEpE,IAAIuD,QAAQ,KAAK/C,YAAY,IAAI+C,QAAQ,IAAI,CAAC,IAAIA,QAAQ,GAAGlC,UAAU,EAAE;MACvE,IAAIX,OAAO,EAAE;QACXA,OAAO,CAACD,eAAe,CAAC8C,QAAQ,CAAC;QACjC9C,eAAe,CAAC8C,QAAQ,CAAC;QACzB7C,OAAO,CAACiC,iBAAiB,CAAC,CAAC;MAC7B;MAEA1B,UAAU,CAACc,KAAK,GAAGjD,UAAU,CAAC,CAAC,CAAC;MAChCkC,UAAU,CAACe,KAAK,GAAGjD,UAAU,CAAC,CAAC,CAAC;MAChCgC,iBAAiB,CAACiB,KAAK,GAAGjD,UAAU,CAAC,CAAC,CAAC;MACvC+B,iBAAiB,CAACkB,KAAK,GAAGjD,UAAU,CAAC,CAAC,CAAC;MACvCiC,UAAU,CAACgB,KAAK,GAAGjD,UAAU,CAAC,CAAC,CAAC;MAChCoC,KAAK,CAACa,KAAK,GAAGjD,UAAU,CAAC,CAAC,CAAC;IAC7B;EACF,CAAC,EACD,CACE4B,OAAO,EACPF,YAAY,EACZa,UAAU,EACVhC,KAAK,EACLW,WAAW,EACXL,kBAAkB,EAClBsB,UAAU,EACVD,UAAU,EACVE,KAAK,EACLJ,iBAAiB,EACjBD,iBAAiB,EACjBE,UAAU,CAEd,CAAC;EAED,MAAM0C,cAAc,GAAGxF,OAAO,CAAC,MAAM;IACnC,OAAOK,OAAO,CAACoF,GAAG,CAAC,CAAC,CACjBC,WAAW,CAAC,EAAE,CAAC,CACfC,cAAc,CAAC,IAAI,CAAC,CACpBC,YAAY,CAAC,UAAU,CAAC,CACxBC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CACxBC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CACtBC,OAAO,CAAC,CAAC1D,QAAQ,CAAC,CAClB2D,QAAQ,CAAEb,KAAK,IAAK;MACnBpC,UAAU,CAACe,KAAK,GAAGqB,KAAK,CAACc,YAAY,GAAG1E,UAAU;IACpD,CAAC,CAAC,CACD2E,KAAK,CAAEf,KAAK,IAAK;MAChB,IAAIA,KAAK,CAACc,YAAY,GAAG3E,gBAAgB,IAAIG,oBAAoB,IAAIN,SAAS,EAAE;QAC9EX,OAAO,CAACW,SAAS,CAAC,CAAC,CAAC;QACpB;MACF;MAEA4B,UAAU,CAACe,KAAK,GAAGlD,UAAU,CAAC,CAAC,EAAE;QAC/BuF,OAAO,EAAE,EAAE;QACXC,SAAS,EAAE;MACb,CAAC,CAAC;IACJ,CAAC,CAAC;EACN,CAAC,EAAE,CAACrD,UAAU,EAAEzB,gBAAgB,EAAEG,oBAAoB,EAAEN,SAAS,EAAEI,UAAU,EAAEc,QAAQ,CAAC,CAAC;EAEzF,MAAMgE,gBAAgB,GAAGrG,OAAO,CAAC,MAAM;IACrC,OAAOK,OAAO,CAACiG,KAAK,CAAC,CAAC,CACnBP,OAAO,CAACpE,iBAAiB,CAAC,CAC1B4E,OAAO,CAAC,MAAM;MACbzD,UAAU,CAACgB,KAAK,GAAGb,KAAK,CAACa,KAAK;MAC9BjB,iBAAiB,CAACiB,KAAK,GAAGd,UAAU,CAACc,KAAK;MAC1ClB,iBAAiB,CAACkB,KAAK,GAAGf,UAAU,CAACe,KAAK;IAC5C,CAAC,CAAC,CACDkC,QAAQ,CAAEb,KAAK,IAAK;MACnB,MAAMqB,QAAQ,GAAG1D,UAAU,CAACgB,KAAK,GAAGqB,KAAK,CAAClC,KAAK;MAE/C,MAAMwD,UAAU,GAAGD,QAAQ,GAAG1D,UAAU,CAACgB,KAAK;MAC9C,MAAM4C,OAAO,GAAGvB,KAAK,CAACwB,MAAM,GAAGvF,KAAK,GAAG,CAAC;MACxC,MAAMwF,OAAO,GAAGzB,KAAK,CAAC0B,MAAM,GAAGzE,YAAY,GAAG,CAAC;MAE/Ca,KAAK,CAACa,KAAK,GAAG0C,QAAQ;MACtB;MACA,MAAMM,aAAa,GAAGjE,iBAAiB,CAACiB,KAAK,GAAI4C,OAAO,GAAGD,UAAU,GAAI3D,UAAU,CAACgB,KAAK;MACzF,MAAMiD,aAAa,GAAGnE,iBAAiB,CAACkB,KAAK,GAAI8C,OAAO,GAAGH,UAAU,GAAI3D,UAAU,CAACgB,KAAK;MAEzF,MAAMkD,WAAW,GAAG1D,iBAAiB,CAACwD,aAAa,EAAEC,aAAa,EAAEP,QAAQ,CAAC;MAE7E,IAAIA,QAAQ,IAAI,CAAC,EAAE;QACjBxD,UAAU,CAACc,KAAK,GAAGjD,UAAU,CAAC,CAAC,CAAC;QAChCkC,UAAU,CAACe,KAAK,GAAGjD,UAAU,CAAC,CAAC,CAAC;QAChC;MACF;MAEAmC,UAAU,CAACc,KAAK,GAAGkD,WAAW,CAACzD,CAAC;MAChCR,UAAU,CAACe,KAAK,GAAGkD,WAAW,CAACxD,CAAC;IAClC,CAAC,CAAC,CACD0C,KAAK,CAAC,MAAM;MACX,IAAIjD,KAAK,CAACa,KAAK,GAAGhC,YAAY,EAAE;QAC9BmB,KAAK,CAACa,KAAK,GAAGjD,UAAU,CAACiB,YAAY,EAAE;UACrCmF,QAAQ,EAAE,GAAG;UACbC,MAAM,EAAE5G,MAAM,CAAC6G,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;QAC5C,CAAC,CAAC;QAEF,MAAMH,WAAW,GAAG1D,iBAAiB,CAACN,UAAU,CAACc,KAAK,EAAEf,UAAU,CAACe,KAAK,EAAEhC,YAAY,CAAC;QAEvFkB,UAAU,CAACc,KAAK,GAAGjD,UAAU,CAACmG,WAAW,CAACzD,CAAC,CAAC;QAC5CR,UAAU,CAACe,KAAK,GAAGjD,UAAU,CAACmG,WAAW,CAACxD,CAAC,CAAC;QAE5C;MACF;MAEA,IAAIP,KAAK,CAACa,KAAK,GAAG,CAAC,EAAE;QACnBb,KAAK,CAACa,KAAK,GAAGjD,UAAU,CAAC,CAAC,EAAE;UAC1BoG,QAAQ,EAAE,GAAG;UACbC,MAAM,EAAE5G,MAAM,CAAC6G,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;QAC5C,CAAC,CAAC;QACFnE,UAAU,CAACc,KAAK,GAAGjD,UAAU,CAAC,CAAC,CAAC;QAChCkC,UAAU,CAACe,KAAK,GAAGjD,UAAU,CAAC,CAAC,CAAC;QAChCgC,iBAAiB,CAACiB,KAAK,GAAGjD,UAAU,CAAC,CAAC,CAAC;QACvC+B,iBAAiB,CAACkB,KAAK,GAAGjD,UAAU,CAAC,CAAC,CAAC;QACvC;MACF;MAEA,MAAMuG,gBAAgB,GAAG9D,iBAAiB,CAACN,UAAU,CAACc,KAAK,EAAEf,UAAU,CAACe,KAAK,EAAEb,KAAK,CAACa,KAAK,CAAC;MAC3Fd,UAAU,CAACc,KAAK,GAAGjD,UAAU,CAACuG,gBAAgB,CAAC7D,CAAC,CAAC;MACjDR,UAAU,CAACe,KAAK,GAAGjD,UAAU,CAACuG,gBAAgB,CAAC5D,CAAC,CAAC;IACnD,CAAC,CAAC;EACN,CAAC,EAAE,CACDP,KAAK,EACLtB,iBAAiB,EACjBG,YAAY,EACZkB,UAAU,EACVD,UAAU,EACVD,UAAU,EACVD,iBAAiB,EACjBD,iBAAiB,EACjBxB,KAAK,EACLgB,YAAY,EACZkB,iBAAiB,CAClB,CAAC;EAEF,MAAM+D,cAAc,GAAGrH,OAAO,CAAC,MAAM;IACnC,OAAOK,OAAO,CAACoF,GAAG,CAAC,CAAC,CACjBM,OAAO,CAAClE,oBAAoB,IAAIQ,QAAQ,CAAC,CACzCuD,YAAY,CAAC,UAAU,CAAC,CACxBD,cAAc,CAAC,IAAI,CAAC,CACpBY,OAAO,CAAC,MAAM;MACb1D,iBAAiB,CAACiB,KAAK,GAAGd,UAAU,CAACc,KAAK;MAC1ClB,iBAAiB,CAACkB,KAAK,GAAGf,UAAU,CAACe,KAAK;IAC5C,CAAC,CAAC,CACDkC,QAAQ,CAAEb,KAAK,IAAK;MACnB,IAAIlC,KAAK,CAACa,KAAK,GAAG,CAAC,EAAE;QACnB,MAAMgD,aAAa,GAAGjE,iBAAiB,CAACiB,KAAK,GAAGqB,KAAK,CAACmC,YAAY;QAClE,MAAMP,aAAa,GAAGnE,iBAAiB,CAACkB,KAAK,GAAGqB,KAAK,CAACc,YAAY;QAElE,MAAMe,WAAW,GAAG1D,iBAAiB,CAACwD,aAAa,EAAEC,aAAa,EAAE9D,KAAK,CAACa,KAAK,CAAC;QAEhFd,UAAU,CAACc,KAAK,GAAGkD,WAAW,CAACzD,CAAC;QAChCR,UAAU,CAACe,KAAK,GAAGkD,WAAW,CAACxD,CAAC;MAClC;IACF,CAAC,CAAC;EACN,CAAC,EAAE,CACDR,UAAU,EACVD,UAAU,EACVlB,oBAAoB,EACpBQ,QAAQ,EACRY,KAAK,EACLJ,iBAAiB,EACjBD,iBAAiB,EACjBU,iBAAiB,CAClB,CAAC;EAEF,MAAMiE,gBAAgB,GAAGvH,OAAO,CAAC,MAAM;IACrC,OAAOK,OAAO,CAACmH,GAAG,CAAC,CAAC,CACjBzB,OAAO,CAACnE,sBAAsB,CAAC,CAC/B6F,YAAY,CAAC,CAAC,CAAC,CACfvB,KAAK,CAAEf,KAAK,IAAK;MAChB,MAAMuC,SAAS,GAAGzE,KAAK,CAACa,KAAK,GAAG,CAAC,GAAG,CAAC,GAAGhC,YAAY;MAEpD,IAAI4F,SAAS,GAAG,CAAC,EAAE;QACjB,MAAMhB,OAAO,GAAGvB,KAAK,CAAC5B,CAAC,GAAGnC,KAAK,GAAG,CAAC;QACnC,MAAMwF,OAAO,GAAGzB,KAAK,CAAC3B,CAAC,GAAGpB,YAAY,GAAG,CAAC;;QAE1C;QACAY,UAAU,CAACc,KAAK,GAAGjD,UAAU,CAAC,CAAC6F,OAAO,IAAIgB,SAAS,GAAG,CAAC,CAAC,EAAE;UACxDT,QAAQ,EAAE,GAAG;UACbC,MAAM,EAAE5G,MAAM,CAAC6G,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;QAC5C,CAAC,CAAC;QACFpE,UAAU,CAACe,KAAK,GAAGjD,UAAU,CAAC,CAAC+F,OAAO,IAAIc,SAAS,GAAG,CAAC,CAAC,EAAE;UACxDT,QAAQ,EAAE,GAAG;UACbC,MAAM,EAAE5G,MAAM,CAAC6G,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;QAC5C,CAAC,CAAC;MACJ,CAAC,MAAM;QACLnE,UAAU,CAACc,KAAK,GAAGjD,UAAU,CAAC,CAAC,EAAE;UAC/BoG,QAAQ,EAAE,GAAG;UACbC,MAAM,EAAE5G,MAAM,CAAC6G,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;QAC5C,CAAC,CAAC;QACFpE,UAAU,CAACe,KAAK,GAAGjD,UAAU,CAAC,CAAC,EAAE;UAC/BoG,QAAQ,EAAE,GAAG;UACbC,MAAM,EAAE5G,MAAM,CAAC6G,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;QAC5C,CAAC,CAAC;MACJ;MAEAlE,KAAK,CAACa,KAAK,GAAGjD,UAAU,CAAC6G,SAAS,EAAE;QAClCT,QAAQ,EAAE,GAAG;QACbC,MAAM,EAAE5G,MAAM,CAAC6G,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;MAC5C,CAAC,CAAC;IACJ,CAAC,CAAC;EACN,CAAC,EAAE,CAAClE,KAAK,EAAErB,sBAAsB,EAAEE,YAAY,EAAEkB,UAAU,EAAED,UAAU,EAAE3B,KAAK,EAAEgB,YAAY,CAAC,CAAC;EAE9F,MAAMuF,WAAW,GAAG3H,OAAO,CAAC,MAAM;IAChC,OAAOK,OAAO,CAACuH,IAAI,CAACvB,gBAAgB,EAAEhG,OAAO,CAACwH,SAAS,CAACR,cAAc,EAAEE,gBAAgB,CAAC,CAAC;EAC5F,CAAC,EAAE,CAAClB,gBAAgB,EAAEgB,cAAc,EAAEE,gBAAgB,CAAC,CAAC;EAExD,MAAMO,aAAa,GAAGpH,gBAAgB,CAAC,MAAM;IAC3C,OAAO;MACLqH,SAAS,EAAE,CAAC;QAAEhF,UAAU,EAAEA,UAAU,CAACe;MAAM,CAAC,EAAE;QAAEd,UAAU,EAAEA,UAAU,CAACc;MAAM,CAAC,EAAE;QAAEb,KAAK,EAAEA,KAAK,CAACa;MAAM,CAAC;IACxG,CAAC;EACH,CAAC,CAAC;EAEF,MAAMkE,aAAa,GAAGtH,gBAAgB,CAAC,MAAM;IAC3C,IAAI,CAACc,eAAe,IAAIyB,KAAK,CAACa,KAAK,KAAK,CAAC,EAAE;MACzC,OAAO;QAAEmE,OAAO,EAAE;MAAE,CAAC;IACvB;IAEA,MAAMA,OAAO,GAAG1H,WAAW,CAACwC,UAAU,CAACe,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC;IAExE,OAAO;MAAEmE;IAAQ,CAAC;EACpB,CAAC,EAAE,CAACzG,eAAe,CAAC,CAAC;EAErB,OAAO;IACLe,YAAY;IACZa,UAAU;IACVL,UAAU;IACVI,OAAO;IACPd,QAAQ;IAERmD,cAAc;IACdmC,WAAW;IAEXzC,mBAAmB;IAEnB4C,aAAa;IACbE;EACF,CAAC;AACH,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","InteractionManager","useWindowDimensions","Gesture","Easing","interpolate","runOnJS","useAnimatedReaction","useAnimatedStyle","useSharedValue","withSpring","withTiming","registry","createBoundsConstraint","useGestureViewer","data","initialIndex","onIndexChange","onDismiss","width","customWidth","dismissThreshold","resistance","animateBackdrop","enableDismissGesture","enableSwipeGesture","enableZoomGesture","enableDoubleTapGesture","enableZoomPanGesture","maxZoomScale","itemSpacing","useSnap","id","screenWidth","height","screenHeight","isZoomed","setIsZoomed","isRotated","setIsRotated","currentIndex","setCurrentIndex","manager","setManager","unsubscribeRef","initialTranslateY","initialTranslateX","startScale","translateY","translateX","scale","backdropOpacity","rotation","listRef","dataLength","length","constrainTranslation","value","currentScale","currentRotation","handleManagerChange","current","getState","subscribe","state","unsubscribeFromRegistry","subscribeToManager","setDataLength","setEnableSwipeGesture","setWidth","setHeight","setZoomSharedValues","setRotation","notifyStateChange","setListRef","runAfterInteractions","scrollToIndex","index","animated","scrollTo","x","cancel","onMomentumScrollEnd","event","contentOffset","nativeEvent","newIndex","Math","round","dismissGesture","Pan","minDistance","averageTouches","activeCursor","activeOffsetY","failOffsetX","enabled","onUpdate","translationY","onEnd","damping","stiffness","zoomPinchGesture","Pinch","onBegin","newScale","deltaScale","centerX","focalX","centerY","focalY","newTranslateX","newTranslateY","constrainedTranslateX","constrainedTranslateY","duration","easing","bezier","zoomPanGesture","translationX","doubleTapGesture","Tap","numberOfTaps","nextScale","y","zoomGesture","Race","Exclusive","animatedStyle","transform","rotate","backdropStyle","opacity"],"sourceRoot":"../../src","sources":["useGestureViewer.ts"],"mappings":"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","ignoreList":[]}
|