react-native-gesture-image-viewer 1.4.1 → 1.5.1

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 CHANGED
@@ -114,7 +114,7 @@ bun add react-native-gesture-image-viewer
114
114
  You can create a viewer using any `Modal` of your choice as shown below:
115
115
 
116
116
  ```tsx
117
- import { Image, Modal } from 'react-native';
117
+ import { FlatList, Image, Modal } from 'react-native';
118
118
  import { GestureViewer } from 'react-native-gesture-image-viewer';
119
119
 
120
120
  function App() {
@@ -131,6 +131,7 @@ function App() {
131
131
  <GestureViewer
132
132
  data={images}
133
133
  renderItem={renderImage}
134
+ ListComponent={FlatList}
134
135
  onDismiss={() => setVisible(false)}
135
136
  />
136
137
  </Modal>
@@ -265,7 +266,7 @@ function App() {
265
266
  }
266
267
  ```
267
268
 
268
- ### API Reference
269
+ #### API Reference
269
270
 
270
271
  | Property | Description | Type | Default |
271
272
  |:---------|:------------|:-----|:-------:|
@@ -279,26 +280,62 @@ function App() {
279
280
  | `resetZoom` | Reset zoom to the specified scale. | `(scale?: number) => void` | `1` |
280
281
  | `rotate` | Rotate by the specified angle. | `(angle?: number, clockwise?: boolean) => void` | `90, true` |
281
282
 
282
- ### Parameters
283
+ #### Parameters
283
284
 
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
285
+ - `zoomIn(multiplier?)`
286
+ - **multiplier**: The multiplier for zooming in (range: `0.01 ~ 1`)
287
+ - Example: `zoomIn(0.5)` → Zoom in by an additional 50% of the current scale
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
+ - `resetZoom(scale?)`
292
+ - **scale**: The scale value to reset to
293
+ - Example: `resetZoom(1.5)` → Reset to 1.5x scale
294
+ - `rotate(angle?, clockwise?)`
295
+ - **angle**: The angle to rotate (0, 90, 180, 270, 360)
296
+ - **clockwise**: The direction to rotate (true: clockwise, false: counter-clockwise)
297
+ - Example: `rotate(90)` → Rotate 90 degrees clockwise
298
+ - Example: `rotate(90, false)` → Rotate 90 degrees counter-clockwise
299
+ - Example: `rotate(0)` → Reset rotation
287
300
 
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
301
+ ### useGestureViewerEvent
291
302
 
292
- #### `resetZoom(scale?)`
293
- - **scale**: The scale value to reset to
294
- - Example: `resetZoom(1.5)` → Reset to 1.5x scale
303
+ You can subscribe to specific events from `GestureViewer` using the `useGestureViewerEvent` hook. This allows you to respond to real-time gesture changes like zoom and rotation.
295
304
 
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
305
+ ```tsx
306
+ import { GestureViewer, useGestureViewerEvent } from 'react-native-gesture-image-viewer';
307
+
308
+ function App() {
309
+ // Listen to zoom changes on the default instance (ID: 'default')
310
+ useGestureViewerEvent('zoomChange', (data) => {
311
+ console.log(`Zoom changed from ${data.previousScale} to ${data.scale}`);
312
+ });
313
+
314
+ // Listen to rotation changes on the default instance (ID: 'default')
315
+ useGestureViewerEvent('rotationChange', (data) => {
316
+ console.log(`Rotation changed from ${data.previousRotation}° to ${data.rotation}°`);
317
+ });
318
+
319
+ // Listen to events on a specific instance
320
+ useGestureViewerEvent('gallery', 'zoomChange', (data) => {
321
+ console.log(`Gallery zoom: ${data.scale}x`);
322
+ });
323
+
324
+ return (
325
+ <GestureViewer
326
+ data={images}
327
+ renderItem={renderImage}
328
+ />
329
+ );
330
+ }
331
+ ```
332
+
333
+ #### Event Types
334
+
335
+ | Event | Description | Data |
336
+ |:-----|:-----|:-----|
337
+ | `zoomChange` | Fired when the zoom scale changes during pinch gestures | `{ scale: number, previousScale: number }` |
338
+ | `rotationChange` | Fired when the rotation angle changes during rotation gestures | `{ rotation: number, previousRotation: number }` |
302
339
 
303
340
  ### Style Customization
304
341
 
@@ -15,6 +15,7 @@ class GestureViewerManager {
15
15
  enableSwipeGesture = true;
16
16
  listeners = new Set();
17
17
  rotation = null;
18
+ eventListeners = new Map();
18
19
  notifyListeners() {
19
20
  const state = this.getState();
20
21
  this.listeners.forEach(listener => listener(state));
@@ -25,6 +26,39 @@ class GestureViewerManager {
25
26
  this.listeners.delete(listener);
26
27
  };
27
28
  }
29
+ addEventListener(eventType, callback) {
30
+ if (!this.eventListeners.has(eventType)) {
31
+ this.eventListeners.set(eventType, new Set());
32
+ }
33
+ this.eventListeners.get(eventType)?.add(callback);
34
+ return () => {
35
+ const listeners = this.eventListeners.get(eventType);
36
+ if (listeners) {
37
+ listeners.delete(callback);
38
+ if (listeners.size === 0) {
39
+ this.eventListeners.delete(eventType);
40
+ }
41
+ }
42
+ };
43
+ }
44
+ emitEvent(eventType, data) {
45
+ const listeners = this.eventListeners.get(eventType);
46
+ if (listeners) {
47
+ listeners.forEach(callback => callback(data));
48
+ }
49
+ }
50
+ emitZoomChange = (scale, previousScale) => {
51
+ this.emitEvent('zoomChange', {
52
+ scale,
53
+ previousScale
54
+ });
55
+ };
56
+ emitRotationChange = (rotation, previousRotation) => {
57
+ this.emitEvent('rotationChange', {
58
+ rotation,
59
+ previousRotation
60
+ });
61
+ };
28
62
  getState() {
29
63
  return {
30
64
  currentIndex: this.currentIndex,
@@ -172,6 +206,7 @@ class GestureViewerManager {
172
206
  this.translateX = null;
173
207
  this.translateY = null;
174
208
  this.rotation = null;
209
+ this.eventListeners.clear();
175
210
  }
176
211
  }
177
212
  export default GestureViewerManager;
@@ -1 +1 @@
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","totalCount","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":[]}
1
+ {"version":3,"names":["withTiming","createBoundsConstraint","GestureViewerManager","currentIndex","dataLength","width","height","scale","translateX","translateY","maxZoomScale","listRef","enableSwipeGesture","listeners","Set","rotation","eventListeners","Map","notifyListeners","state","getState","forEach","listener","subscribe","add","delete","addEventListener","eventType","callback","has","set","get","size","emitEvent","data","emitZoomChange","previousScale","emitRotationChange","previousRotation","totalCount","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":[]}
@@ -2,4 +2,5 @@
2
2
 
3
3
  export { GestureViewer } from "./GestureViewer.js";
4
4
  export { useGestureViewerController } from "./useGestureViewerController.js";
5
+ export { useGestureViewerEvent } from "./useGestureViewerEvent.js";
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["GestureViewer","useGestureViewerController"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,oBAAiB;AAE/C,SAASC,0BAA0B,QAAQ,iCAA8B","ignoreList":[]}
1
+ {"version":3,"names":["GestureViewer","useGestureViewerController","useGestureViewerEvent"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,oBAAiB;AAS/C,SAASC,0BAA0B,QAAQ,iCAA8B;AACzE,SAASC,qBAAqB,QAAQ,4BAAyB","ignoreList":[]}
@@ -51,10 +51,22 @@ export const useGestureViewer = ({
51
51
  width,
52
52
  height: screenHeight
53
53
  }), [width, screenHeight]);
54
- useAnimatedReaction(() => scale.value, currentScale => {
54
+ const emitZoomChange = useCallback((currentScale, prevScale) => {
55
+ manager?.emitZoomChange(currentScale, prevScale);
56
+ }, [manager]);
57
+ const emitRotationChange = useCallback((currentRotation, prevRotation) => {
58
+ manager?.emitRotationChange(currentRotation, prevRotation);
59
+ }, [manager]);
60
+ useAnimatedReaction(() => scale.value, (currentScale, previousScale) => {
61
+ if (manager && currentScale !== previousScale) {
62
+ runOnJS(emitZoomChange)(currentScale, previousScale);
63
+ }
55
64
  runOnJS(setIsZoomed)(currentScale > 1);
56
65
  });
57
- useAnimatedReaction(() => rotation.value, currentRotation => {
66
+ useAnimatedReaction(() => rotation.value, (currentRotation, previousRotation) => {
67
+ if (manager && currentRotation !== previousRotation) {
68
+ runOnJS(emitRotationChange)(currentRotation, previousRotation);
69
+ }
58
70
  runOnJS(setIsRotated)(currentRotation % 360 !== 0);
59
71
  });
60
72
  useEffect(() => {
@@ -1 +1 @@
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":[]}
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","emitZoomChange","currentScale","prevScale","emitRotationChange","currentRotation","prevRotation","value","previousScale","previousRotation","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":[]}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ import { useEffect } from 'react';
4
+ import { registry } from "./GestureViewerRegistry.js";
5
+
6
+ /**
7
+ * Hook for subscribing to GestureViewer events on the default instance.
8
+ *
9
+ * This hook allows you to listen to specific events from the default GestureViewer instance
10
+ * (with ID 'default'), such as zoom changes or rotation changes. Events are automatically
11
+ * throttled to prevent excessive callback invocations during gestures.
12
+ *
13
+ * @param eventType - The type of event to listen for
14
+ * @param callback - Function to call when the event occurs
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * // Listen to zoom changes on the default instance (ID: 'default')
19
+ * useGestureViewerEvent('zoomChange', (data) => {
20
+ * console.log(`Zoom changed from ${data.previousScale} to ${data.scale}`);
21
+ * });
22
+ *
23
+ * // Listen to rotation changes on the default instance (ID: 'default')
24
+ * useGestureViewerEvent('rotationChange', (data) => {
25
+ * console.log(`Rotation changed from ${data.previousRotation}° to ${data.rotation}°`);
26
+ * });
27
+ * ```
28
+ */
29
+
30
+ /**
31
+ * Hook for subscribing to GestureViewer events with a specific instance ID.
32
+ *
33
+ * Use this overload when you have multiple GestureViewer instances and need
34
+ * to listen to events from a specific one.
35
+ *
36
+ * @param id - The unique identifier of the GestureViewer instance
37
+ * @param eventType - The type of event to listen for
38
+ * @param callback - Function to call when the event occurs
39
+ *
40
+ * @example
41
+ * ```tsx
42
+ * // Listen to zoom changes on a specific instance
43
+ * useGestureViewerEvent('gallery', 'zoomChange', (data) => {
44
+ * console.log(`Gallery zoom: ${data.scale}x`);
45
+ * });
46
+ *
47
+ * // Listen to rotation changes on a modal viewer
48
+ * useGestureViewerEvent('modal-viewer', 'rotationChange', (data) => {
49
+ * updateRotationIndicator(data.rotation);
50
+ * });
51
+ * ```
52
+ */
53
+
54
+ /**
55
+ * Implementation of the useGestureViewerEvent hook.
56
+ *
57
+ * @internal
58
+ */
59
+ export function useGestureViewerEvent(idOrEventType, eventTypeOrCallback, callback) {
60
+ const id = typeof idOrEventType === 'string' && callback ? idOrEventType : 'default';
61
+ const eventType = typeof idOrEventType === 'string' && callback ? eventTypeOrCallback : idOrEventType;
62
+ const finalCallback = callback || eventTypeOrCallback;
63
+ useEffect(() => {
64
+ let unsubscribeFromManager = null;
65
+ const handleManagerChange = manager => {
66
+ unsubscribeFromManager?.();
67
+ unsubscribeFromManager = null;
68
+ if (manager) {
69
+ unsubscribeFromManager = manager.addEventListener(eventType, finalCallback);
70
+ }
71
+ };
72
+ const unsubscribeFromRegistry = registry.subscribeToManager(id, handleManagerChange);
73
+ return () => {
74
+ unsubscribeFromRegistry();
75
+ unsubscribeFromManager?.();
76
+ };
77
+ }, [id, eventType, finalCallback]);
78
+ }
79
+ //# sourceMappingURL=useGestureViewerEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","registry","useGestureViewerEvent","idOrEventType","eventTypeOrCallback","callback","id","eventType","finalCallback","unsubscribeFromManager","handleManagerChange","manager","addEventListener","unsubscribeFromRegistry","subscribeToManager"],"sourceRoot":"../../src","sources":["useGestureViewerEvent.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,OAAO;AAEjC,SAASC,QAAQ,QAAQ,4BAAyB;;AAGlD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CACnCC,aAAyB,EACzBC,mBAAsD,EACtDC,QAAwC,EACxC;EACA,MAAMC,EAAE,GAAG,OAAOH,aAAa,KAAK,QAAQ,IAAIE,QAAQ,GAAGF,aAAa,GAAG,SAAS;EACpF,MAAMI,SAAS,GAAG,OAAOJ,aAAa,KAAK,QAAQ,IAAIE,QAAQ,GAAID,mBAAmB,GAAUD,aAAmB;EACnH,MAAMK,aAAa,GAAGH,QAAQ,IAAKD,mBAAqD;EAExFJ,SAAS,CAAC,MAAM;IACd,IAAIS,sBAA2C,GAAG,IAAI;IAEtD,MAAMC,mBAAmB,GAAIC,OAAoC,IAAK;MACpEF,sBAAsB,GAAG,CAAC;MAC1BA,sBAAsB,GAAG,IAAI;MAE7B,IAAIE,OAAO,EAAE;QACXF,sBAAsB,GAAGE,OAAO,CAACC,gBAAgB,CAACL,SAAS,EAAEC,aAAa,CAAC;MAC7E;IACF,CAAC;IAED,MAAMK,uBAAuB,GAAGZ,QAAQ,CAACa,kBAAkB,CAACR,EAAE,EAAEI,mBAAmB,CAAC;IAEpF,OAAO,MAAM;MACXG,uBAAuB,CAAC,CAAC;MACzBJ,sBAAsB,GAAG,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,CAACH,EAAE,EAAEC,SAAS,EAAEC,aAAa,CAAC,CAAC;AACpC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { type SharedValue } from 'react-native-reanimated';
2
- import type { GestureViewerControllerState } from './types';
2
+ import type { GestureViewerControllerState, GestureViewerEventCallback, GestureViewerEventType } from './types';
3
3
  declare class GestureViewerManager {
4
4
  private currentIndex;
5
5
  private dataLength;
@@ -13,8 +13,13 @@ declare class GestureViewerManager {
13
13
  private enableSwipeGesture;
14
14
  private listeners;
15
15
  private rotation;
16
+ private eventListeners;
16
17
  private notifyListeners;
17
18
  subscribe(listener: (state: GestureViewerControllerState) => void): () => void;
19
+ addEventListener<T extends GestureViewerEventType>(eventType: T, callback: GestureViewerEventCallback<T>): () => void;
20
+ private emitEvent;
21
+ emitZoomChange: (scale: number, previousScale: number | null) => void;
22
+ emitRotationChange: (rotation: number, previousRotation: number | null) => void;
18
23
  getState(): {
19
24
  currentIndex: number;
20
25
  totalCount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"GestureViewerManager.d.ts","sourceRoot":"","sources":["../../../src/GestureViewerManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAc,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAG5D,cAAM,oBAAoB;IACxB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,SAAS,CAA4D;IAC7E,OAAO,CAAC,QAAQ,CAAoC;IAEpD,OAAO,CAAC,eAAe;IAMvB,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,IAAI;IAQjE,QAAQ;;;;IAOR,QAAQ,CAAC,KAAK,EAAE,MAAM;IAItB,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,UAAU,CAAC,GAAG,EAAE,GAAG;IAInB,aAAa,CAAC,MAAM,EAAE,MAAM;IAI5B,qBAAqB,CAAC,OAAO,EAAE,OAAO;IAItC,eAAe,CAAC,KAAK,EAAE,MAAM;IAM7B,mBAAmB,CACjB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAC1B,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,EAC/B,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,EAC/B,YAAY,EAAE,MAAM;IAQtB,iBAAiB;IAIjB,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC;IAIzC,MAAM,GAAI,QAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAQ,EAAE,mBAAgB,UA2B9D;IAEF,MAAM,GAAI,mBAAiB,UAoBzB;IAEF,OAAO,GAAI,mBAAiB,UA0B1B;IAEF,SAAS,GAAI,cAAS,UAQpB;IAEF,SAAS,GAAI,OAAO,MAAM,UAcxB;IAEF,YAAY,aAIV;IAEF,QAAQ,aAIN;IAEF,OAAO;CAaR;AAED,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"GestureViewerManager.d.ts","sourceRoot":"","sources":["../../../src/GestureViewerManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAc,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EACV,4BAA4B,EAC5B,0BAA0B,EAE1B,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAGjB,cAAM,oBAAoB;IACxB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,SAAS,CAA4D;IAC7E,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,cAAc,CAA+D;IAErF,OAAO,CAAC,eAAe;IAMvB,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,IAAI;IAQjE,gBAAgB,CAAC,CAAC,SAAS,sBAAsB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,0BAA0B,CAAC,CAAC,CAAC;IAoBxG,OAAO,CAAC,SAAS;IAQjB,cAAc,GAAI,OAAO,MAAM,EAAE,eAAe,MAAM,GAAG,IAAI,UAE3D;IAEF,kBAAkB,GAAI,UAAU,MAAM,EAAE,kBAAkB,MAAM,GAAG,IAAI,UAErE;IAEF,QAAQ;;;;IAOR,QAAQ,CAAC,KAAK,EAAE,MAAM;IAItB,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,UAAU,CAAC,GAAG,EAAE,GAAG;IAInB,aAAa,CAAC,MAAM,EAAE,MAAM;IAI5B,qBAAqB,CAAC,OAAO,EAAE,OAAO;IAItC,eAAe,CAAC,KAAK,EAAE,MAAM;IAM7B,mBAAmB,CACjB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAC1B,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,EAC/B,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,EAC/B,YAAY,EAAE,MAAM;IAQtB,iBAAiB;IAIjB,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC;IAIzC,MAAM,GAAI,QAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAQ,EAAE,mBAAgB,UA2B9D;IAEF,MAAM,GAAI,mBAAiB,UAoBzB;IAEF,OAAO,GAAI,mBAAiB,UA0B1B;IAEF,SAAS,GAAI,cAAS,UAQpB;IAEF,SAAS,GAAI,OAAO,MAAM,UAcxB;IAEF,YAAY,aAIV;IAEF,QAAQ,aAIN;IAEF,OAAO;CAcR;AAED,eAAe,oBAAoB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { GestureViewer } from './GestureViewer';
2
- export type { GestureViewerController, GestureViewerProps } from './types';
2
+ export type { GestureViewerController, GestureViewerControllerState, GestureViewerEventCallback, GestureViewerEventData, GestureViewerEventType, GestureViewerProps, } from './types';
3
3
  export { useGestureViewerController } from './useGestureViewerController';
4
+ export { useGestureViewerEvent } from './useGestureViewerEvent';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EACV,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -261,5 +261,17 @@ export type GestureViewerControllerState = {
261
261
  */
262
262
  readonly totalCount: number;
263
263
  };
264
+ export type GestureViewerEventType = 'zoomChange' | 'rotationChange';
265
+ export type GestureViewerEventData = {
266
+ zoomChange: {
267
+ scale: number;
268
+ previousScale: number | null;
269
+ };
270
+ rotationChange: {
271
+ rotation: number;
272
+ previousRotation: number | null;
273
+ };
274
+ };
275
+ export type GestureViewerEventCallback<T extends GestureViewerEventType> = (data: GestureViewerEventData[T]) => void;
264
276
  export {};
265
277
  //# sourceMappingURL=types.d.ts.map
@@ -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,EAAE,QAAQ,IAAI,UAAU,EAAE,UAAU,IAAI,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC7G,OAAO,KAAK,EAAE,QAAQ,IAAI,UAAU,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEvG,MAAM,MAAM,iBAAiB,GAAG,OAAO,UAAU,GAAG,OAAO,UAAU,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,OAAO,YAAY,GAAG,OAAO,YAAY,CAAC;AAE5E,KAAK,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE/E,KAAK,oBAAoB,CAAC,EAAE,IAAI,EAAE,SAAS,iBAAiB,GACxD,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,GACxB,EAAE,SAAS,mBAAmB,GAC5B,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,GACxB,iBAAiB,CAAC,EAAE,CAAC,CAAC;AAE5B,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,OAAO,UAAU;IACjE;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IACV;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;OAEG;IACH,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,YAAY,CAAC;IAC3D;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,CAAC;IACvE;;OAEG;IACH,aAAa,EAAE,EAAE,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC;;OAEG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC;;;;;;;;;;;;OAYG;IACH,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC;;;;OAIG;IACH,YAAY,EAAE,MAAM,IAAI,CAAC;IAEzB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAEtC;;;;;;;;;;;OAWG;IACH,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC;;;;;;;;;;;OAWG;IACH,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9D,GAAG,4BAA4B,CAAC;AAEjC;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
@@ -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;AAGlD,KAAK,qBAAqB,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CACxC,kBAAkB,CAAC,CAAC,CAAC,EACrB,YAAY,GAAG,iBAAiB,GAAG,eAAe,GAAG,WAAW,GAAG,gBAAgB,GAAG,eAAe,CACtG,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,GAAG,GAAG,EAAE,yQAoBvC,qBAAqB,CAAC,CAAC,CAAC;;;;;;;;;iCA8If,oBAAoB,CAAC,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4QlD,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;AAGlD,KAAK,qBAAqB,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CACxC,kBAAkB,CAAC,CAAC,CAAC,EACrB,YAAY,GAAG,iBAAiB,GAAG,eAAe,GAAG,WAAW,GAAG,gBAAgB,GAAG,eAAe,CACtG,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,GAAG,GAAG,EAAE,yQAoBvC,qBAAqB,CAAC,CAAC,CAAC;;;;;;;;;iCAoKf,oBAAoB,CAAC,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4QlD,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { GestureViewerEventCallback, GestureViewerEventType } from './types';
2
+ /**
3
+ * Hook for subscribing to GestureViewer events on the default instance.
4
+ *
5
+ * This hook allows you to listen to specific events from the default GestureViewer instance
6
+ * (with ID 'default'), such as zoom changes or rotation changes. Events are automatically
7
+ * throttled to prevent excessive callback invocations during gestures.
8
+ *
9
+ * @param eventType - The type of event to listen for
10
+ * @param callback - Function to call when the event occurs
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * // Listen to zoom changes on the default instance (ID: 'default')
15
+ * useGestureViewerEvent('zoomChange', (data) => {
16
+ * console.log(`Zoom changed from ${data.previousScale} to ${data.scale}`);
17
+ * });
18
+ *
19
+ * // Listen to rotation changes on the default instance (ID: 'default')
20
+ * useGestureViewerEvent('rotationChange', (data) => {
21
+ * console.log(`Rotation changed from ${data.previousRotation}° to ${data.rotation}°`);
22
+ * });
23
+ * ```
24
+ */
25
+ export declare function useGestureViewerEvent<T extends GestureViewerEventType>(eventType: T, callback: GestureViewerEventCallback<T>): void;
26
+ /**
27
+ * Hook for subscribing to GestureViewer events with a specific instance ID.
28
+ *
29
+ * Use this overload when you have multiple GestureViewer instances and need
30
+ * to listen to events from a specific one.
31
+ *
32
+ * @param id - The unique identifier of the GestureViewer instance
33
+ * @param eventType - The type of event to listen for
34
+ * @param callback - Function to call when the event occurs
35
+ *
36
+ * @example
37
+ * ```tsx
38
+ * // Listen to zoom changes on a specific instance
39
+ * useGestureViewerEvent('gallery', 'zoomChange', (data) => {
40
+ * console.log(`Gallery zoom: ${data.scale}x`);
41
+ * });
42
+ *
43
+ * // Listen to rotation changes on a modal viewer
44
+ * useGestureViewerEvent('modal-viewer', 'rotationChange', (data) => {
45
+ * updateRotationIndicator(data.rotation);
46
+ * });
47
+ * ```
48
+ */
49
+ export declare function useGestureViewerEvent<T extends GestureViewerEventType>(id: string, eventType: T, callback: GestureViewerEventCallback<T>): void;
50
+ //# sourceMappingURL=useGestureViewerEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGestureViewerEvent.d.ts","sourceRoot":"","sources":["../../../src/useGestureViewerEvent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAElF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,sBAAsB,EACpE,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,0BAA0B,CAAC,CAAC,CAAC,GACtC,IAAI,CAAC;AAER;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,sBAAsB,EACpE,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,0BAA0B,CAAC,CAAC,CAAC,GACtC,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-gesture-image-viewer",
3
- "version": "1.4.1",
3
+ "version": "1.5.1",
4
4
  "description": "🖼️ A highly customizable and easy-to-use React Native image viewer with gesture support and external controls",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -1,5 +1,10 @@
1
1
  import { type SharedValue, withTiming } from 'react-native-reanimated';
2
- import type { GestureViewerControllerState } from './types';
2
+ import type {
3
+ GestureViewerControllerState,
4
+ GestureViewerEventCallback,
5
+ GestureViewerEventData,
6
+ GestureViewerEventType,
7
+ } from './types';
3
8
  import { createBoundsConstraint } from './utils';
4
9
 
5
10
  class GestureViewerManager {
@@ -15,6 +20,7 @@ class GestureViewerManager {
15
20
  private enableSwipeGesture = true;
16
21
  private listeners = new Set<(state: GestureViewerControllerState) => void>();
17
22
  private rotation: SharedValue<number> | null = null;
23
+ private eventListeners = new Map<GestureViewerEventType, Set<(data: any) => void>>();
18
24
 
19
25
  private notifyListeners() {
20
26
  const state = this.getState();
@@ -30,6 +36,42 @@ class GestureViewerManager {
30
36
  };
31
37
  }
32
38
 
39
+ addEventListener<T extends GestureViewerEventType>(eventType: T, callback: GestureViewerEventCallback<T>) {
40
+ if (!this.eventListeners.has(eventType)) {
41
+ this.eventListeners.set(eventType, new Set());
42
+ }
43
+
44
+ this.eventListeners.get(eventType)?.add(callback);
45
+
46
+ return () => {
47
+ const listeners = this.eventListeners.get(eventType);
48
+
49
+ if (listeners) {
50
+ listeners.delete(callback);
51
+
52
+ if (listeners.size === 0) {
53
+ this.eventListeners.delete(eventType);
54
+ }
55
+ }
56
+ };
57
+ }
58
+
59
+ private emitEvent<T extends GestureViewerEventType>(eventType: T, data: GestureViewerEventData[T]) {
60
+ const listeners = this.eventListeners.get(eventType);
61
+
62
+ if (listeners) {
63
+ listeners.forEach((callback) => callback(data));
64
+ }
65
+ }
66
+
67
+ emitZoomChange = (scale: number, previousScale: number | null) => {
68
+ this.emitEvent('zoomChange', { scale, previousScale });
69
+ };
70
+
71
+ emitRotationChange = (rotation: number, previousRotation: number | null) => {
72
+ this.emitEvent('rotationChange', { rotation, previousRotation });
73
+ };
74
+
33
75
  getState() {
34
76
  return {
35
77
  currentIndex: this.currentIndex,
@@ -212,6 +254,7 @@ class GestureViewerManager {
212
254
  this.translateX = null;
213
255
  this.translateY = null;
214
256
  this.rotation = null;
257
+ this.eventListeners.clear();
215
258
  }
216
259
  }
217
260
 
package/src/index.tsx CHANGED
@@ -1,3 +1,11 @@
1
1
  export { GestureViewer } from './GestureViewer';
2
- export type { GestureViewerController, GestureViewerProps } from './types';
2
+ export type {
3
+ GestureViewerController,
4
+ GestureViewerControllerState,
5
+ GestureViewerEventCallback,
6
+ GestureViewerEventData,
7
+ GestureViewerEventType,
8
+ GestureViewerProps,
9
+ } from './types';
3
10
  export { useGestureViewerController } from './useGestureViewerController';
11
+ export { useGestureViewerEvent } from './useGestureViewerEvent';
package/src/types.ts CHANGED
@@ -281,3 +281,12 @@ export type GestureViewerControllerState = {
281
281
  */
282
282
  readonly totalCount: number;
283
283
  };
284
+
285
+ export type GestureViewerEventType = 'zoomChange' | 'rotationChange';
286
+
287
+ export type GestureViewerEventData = {
288
+ zoomChange: { scale: number; previousScale: number | null };
289
+ rotationChange: { rotation: number; previousRotation: number | null };
290
+ };
291
+
292
+ export type GestureViewerEventCallback<T extends GestureViewerEventType> = (data: GestureViewerEventData[T]) => void;
@@ -76,16 +76,38 @@ export const useGestureViewer = <T = any>({
76
76
  [width, screenHeight],
77
77
  );
78
78
 
79
+ const emitZoomChange = useCallback(
80
+ (currentScale: number, prevScale: number | null) => {
81
+ manager?.emitZoomChange(currentScale, prevScale);
82
+ },
83
+ [manager],
84
+ );
85
+
86
+ const emitRotationChange = useCallback(
87
+ (currentRotation: number, prevRotation: number | null) => {
88
+ manager?.emitRotationChange(currentRotation, prevRotation);
89
+ },
90
+ [manager],
91
+ );
92
+
79
93
  useAnimatedReaction(
80
94
  () => scale.value,
81
- (currentScale) => {
95
+ (currentScale, previousScale) => {
96
+ if (manager && currentScale !== previousScale) {
97
+ runOnJS(emitZoomChange)(currentScale, previousScale);
98
+ }
99
+
82
100
  runOnJS(setIsZoomed)(currentScale > 1);
83
101
  },
84
102
  );
85
103
 
86
104
  useAnimatedReaction(
87
105
  () => rotation.value,
88
- (currentRotation) => {
106
+ (currentRotation, previousRotation) => {
107
+ if (manager && currentRotation !== previousRotation) {
108
+ runOnJS(emitRotationChange)(currentRotation, previousRotation);
109
+ }
110
+
89
111
  runOnJS(setIsRotated)(currentRotation % 360 !== 0);
90
112
  },
91
113
  );
@@ -0,0 +1,96 @@
1
+ import { useEffect } from 'react';
2
+ import type GestureViewerManager from './GestureViewerManager';
3
+ import { registry } from './GestureViewerRegistry';
4
+ import type { GestureViewerEventCallback, GestureViewerEventType } from './types';
5
+
6
+ /**
7
+ * Hook for subscribing to GestureViewer events on the default instance.
8
+ *
9
+ * This hook allows you to listen to specific events from the default GestureViewer instance
10
+ * (with ID 'default'), such as zoom changes or rotation changes. Events are automatically
11
+ * throttled to prevent excessive callback invocations during gestures.
12
+ *
13
+ * @param eventType - The type of event to listen for
14
+ * @param callback - Function to call when the event occurs
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * // Listen to zoom changes on the default instance (ID: 'default')
19
+ * useGestureViewerEvent('zoomChange', (data) => {
20
+ * console.log(`Zoom changed from ${data.previousScale} to ${data.scale}`);
21
+ * });
22
+ *
23
+ * // Listen to rotation changes on the default instance (ID: 'default')
24
+ * useGestureViewerEvent('rotationChange', (data) => {
25
+ * console.log(`Rotation changed from ${data.previousRotation}° to ${data.rotation}°`);
26
+ * });
27
+ * ```
28
+ */
29
+ export function useGestureViewerEvent<T extends GestureViewerEventType>(
30
+ eventType: T,
31
+ callback: GestureViewerEventCallback<T>,
32
+ ): void;
33
+
34
+ /**
35
+ * Hook for subscribing to GestureViewer events with a specific instance ID.
36
+ *
37
+ * Use this overload when you have multiple GestureViewer instances and need
38
+ * to listen to events from a specific one.
39
+ *
40
+ * @param id - The unique identifier of the GestureViewer instance
41
+ * @param eventType - The type of event to listen for
42
+ * @param callback - Function to call when the event occurs
43
+ *
44
+ * @example
45
+ * ```tsx
46
+ * // Listen to zoom changes on a specific instance
47
+ * useGestureViewerEvent('gallery', 'zoomChange', (data) => {
48
+ * console.log(`Gallery zoom: ${data.scale}x`);
49
+ * });
50
+ *
51
+ * // Listen to rotation changes on a modal viewer
52
+ * useGestureViewerEvent('modal-viewer', 'rotationChange', (data) => {
53
+ * updateRotationIndicator(data.rotation);
54
+ * });
55
+ * ```
56
+ */
57
+ export function useGestureViewerEvent<T extends GestureViewerEventType>(
58
+ id: string,
59
+ eventType: T,
60
+ callback: GestureViewerEventCallback<T>,
61
+ ): void;
62
+
63
+ /**
64
+ * Implementation of the useGestureViewerEvent hook.
65
+ *
66
+ * @internal
67
+ */
68
+ export function useGestureViewerEvent<T extends GestureViewerEventType>(
69
+ idOrEventType: string | T,
70
+ eventTypeOrCallback: T | GestureViewerEventCallback<T>,
71
+ callback?: GestureViewerEventCallback<T>,
72
+ ) {
73
+ const id = typeof idOrEventType === 'string' && callback ? idOrEventType : 'default';
74
+ const eventType = typeof idOrEventType === 'string' && callback ? (eventTypeOrCallback as T) : (idOrEventType as T);
75
+ const finalCallback = callback || (eventTypeOrCallback as GestureViewerEventCallback<T>);
76
+
77
+ useEffect(() => {
78
+ let unsubscribeFromManager: (() => void) | null = null;
79
+
80
+ const handleManagerChange = (manager: GestureViewerManager | null) => {
81
+ unsubscribeFromManager?.();
82
+ unsubscribeFromManager = null;
83
+
84
+ if (manager) {
85
+ unsubscribeFromManager = manager.addEventListener(eventType, finalCallback);
86
+ }
87
+ };
88
+
89
+ const unsubscribeFromRegistry = registry.subscribeToManager(id, handleManagerChange);
90
+
91
+ return () => {
92
+ unsubscribeFromRegistry();
93
+ unsubscribeFromManager?.();
94
+ };
95
+ }, [id, eventType, finalCallback]);
96
+ }