react-native-gesture-image-viewer 1.4.1 → 1.5.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 CHANGED
@@ -265,7 +265,7 @@ function App() {
265
265
  }
266
266
  ```
267
267
 
268
- ### API Reference
268
+ #### API Reference
269
269
 
270
270
  | Property | Description | Type | Default |
271
271
  |:---------|:------------|:-----|:-------:|
@@ -279,26 +279,62 @@ function App() {
279
279
  | `resetZoom` | Reset zoom to the specified scale. | `(scale?: number) => void` | `1` |
280
280
  | `rotate` | Rotate by the specified angle. | `(angle?: number, clockwise?: boolean) => void` | `90, true` |
281
281
 
282
- ### Parameters
282
+ #### Parameters
283
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
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
+ - `zoomOut(multiplier?)`
288
+ - **multiplier**: The multiplier for zooming out (range: `0.01 ~ 1`)
289
+ - Example: `zoomOut(0.3)` → Zoom out by dividing the current scale by 1.3
290
+ - `resetZoom(scale?)`
291
+ - **scale**: The scale value to reset to
292
+ - Example: `resetZoom(1.5)` → Reset to 1.5x scale
293
+ - `rotate(angle?, clockwise?)`
294
+ - **angle**: The angle to rotate (0, 90, 180, 270, 360)
295
+ - **clockwise**: The direction to rotate (true: clockwise, false: counter-clockwise)
296
+ - Example: `rotate(90)` → Rotate 90 degrees clockwise
297
+ - Example: `rotate(90, false)` → Rotate 90 degrees counter-clockwise
298
+ - Example: `rotate(0)` → Reset rotation
287
299
 
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
300
+ ### useGestureViewerEvent
291
301
 
292
- #### `resetZoom(scale?)`
293
- - **scale**: The scale value to reset to
294
- - Example: `resetZoom(1.5)` → Reset to 1.5x scale
302
+ 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
303
 
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
304
+ ```tsx
305
+ import { GestureViewer, useGestureViewerEvent } from 'react-native-gesture-image-viewer';
306
+
307
+ function App() {
308
+ // Listen to zoom changes on the default instance (ID: 'default')
309
+ useGestureViewerEvent('zoomChange', (data) => {
310
+ console.log(`Zoom changed from ${data.previousScale} to ${data.scale}`);
311
+ });
312
+
313
+ // Listen to rotation changes on the default instance (ID: 'default')
314
+ useGestureViewerEvent('rotationChange', (data) => {
315
+ console.log(`Rotation changed from ${data.previousRotation}° to ${data.rotation}°`);
316
+ });
317
+
318
+ // Listen to events on a specific instance
319
+ useGestureViewerEvent('gallery', 'zoomChange', (data) => {
320
+ console.log(`Gallery zoom: ${data.scale}x`);
321
+ });
322
+
323
+ return (
324
+ <GestureViewer
325
+ data={images}
326
+ renderItem={renderImage}
327
+ />
328
+ );
329
+ }
330
+ ```
331
+
332
+ #### Event Types
333
+
334
+ | Event | Description | Data |
335
+ |:-----|:-----|:-----|
336
+ | `zoomChange` | Fired when the zoom scale changes during pinch gestures | `{ scale: number, previousScale: number }` |
337
+ | `rotationChange` | Fired when the rotation angle changes during rotation gestures | `{ rotation: number, previousRotation: number }` |
302
338
 
303
339
  ### Style Customization
304
340
 
@@ -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":"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"}
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.0",
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
+ }