react-native-gesture-image-viewer 2.1.3 → 2.1.4

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.
Files changed (45) hide show
  1. package/lib/module/GestureViewer.js +50 -40
  2. package/lib/module/GestureViewer.js.map +1 -1
  3. package/lib/module/GestureViewerManager.js +26 -6
  4. package/lib/module/GestureViewerManager.js.map +1 -1
  5. package/lib/module/useGestureViewer.js +67 -86
  6. package/lib/module/useGestureViewer.js.map +1 -1
  7. package/lib/module/useGestureViewerPaging.js +68 -0
  8. package/lib/module/useGestureViewerPaging.js.map +1 -0
  9. package/lib/module/useGestureViewerPaging.types.js +4 -0
  10. package/lib/module/useGestureViewerPaging.types.js.map +1 -0
  11. package/lib/module/useGestureViewerPaging.web.js +241 -0
  12. package/lib/module/useGestureViewerPaging.web.js.map +1 -0
  13. package/lib/module/utils/index.js +9 -0
  14. package/lib/module/utils/index.js.map +1 -1
  15. package/lib/module/utils/tapZoom.js +34 -0
  16. package/lib/module/utils/tapZoom.js.map +1 -0
  17. package/lib/module/utils/webScroll.js +70 -0
  18. package/lib/module/utils/webScroll.js.map +1 -0
  19. package/lib/typescript/src/GestureViewer.d.ts.map +1 -1
  20. package/lib/typescript/src/GestureViewerManager.d.ts +5 -0
  21. package/lib/typescript/src/GestureViewerManager.d.ts.map +1 -1
  22. package/lib/typescript/src/useGestureViewer.d.ts +4 -3
  23. package/lib/typescript/src/useGestureViewer.d.ts.map +1 -1
  24. package/lib/typescript/src/useGestureViewerPaging.d.ts +3 -0
  25. package/lib/typescript/src/useGestureViewerPaging.d.ts.map +1 -0
  26. package/lib/typescript/src/useGestureViewerPaging.types.d.ts +32 -0
  27. package/lib/typescript/src/useGestureViewerPaging.types.d.ts.map +1 -0
  28. package/lib/typescript/src/useGestureViewerPaging.web.d.ts +3 -0
  29. package/lib/typescript/src/useGestureViewerPaging.web.d.ts.map +1 -0
  30. package/lib/typescript/src/utils/index.d.ts +7 -0
  31. package/lib/typescript/src/utils/index.d.ts.map +1 -1
  32. package/lib/typescript/src/utils/tapZoom.d.ts +12 -0
  33. package/lib/typescript/src/utils/tapZoom.d.ts.map +1 -0
  34. package/lib/typescript/src/utils/webScroll.d.ts +18 -0
  35. package/lib/typescript/src/utils/webScroll.d.ts.map +1 -0
  36. package/package.json +1 -1
  37. package/src/GestureViewer.tsx +39 -15
  38. package/src/GestureViewerManager.ts +29 -6
  39. package/src/useGestureViewer.ts +71 -139
  40. package/src/useGestureViewerPaging.ts +112 -0
  41. package/src/useGestureViewerPaging.types.ts +34 -0
  42. package/src/useGestureViewerPaging.web.ts +390 -0
  43. package/src/utils/index.ts +17 -1
  44. package/src/utils/tapZoom.ts +44 -0
  45. package/src/utils/webScroll.ts +96 -0
@@ -6,7 +6,7 @@ import { Gesture, GestureDetector, GestureHandlerRootView } from 'react-native-g
6
6
  import Animated from 'react-native-reanimated';
7
7
  import { registry } from "./GestureViewerRegistry.js";
8
8
  import { useGestureViewer } from "./useGestureViewer.js";
9
- import { createLoopData, isFlashListLike, isFlatListLike, isScrollViewLike } from "./utils/index.js";
9
+ import { createLoopData, isFlashListLike, isFlatListLike, isScrollViewLike, shouldUseNativeScrollGesture } from "./utils/index.js";
10
10
  import WebPagingFixStyle from "./WebPagingFixStyle.js";
11
11
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
12
  export function GestureViewer({
@@ -44,7 +44,9 @@ export function GestureViewer({
44
44
  dismissGesture,
45
45
  zoomGesture,
46
46
  nativeScrollGesture,
47
+ onWebDoubleClick,
47
48
  onMomentumScrollEnd,
49
+ onScroll,
48
50
  onScrollBeginDrag,
49
51
  animatedStyle,
50
52
  backdropStyle,
@@ -97,7 +99,8 @@ export function GestureViewer({
97
99
  horizontal: true,
98
100
  scrollEnabled: !isZoomed && !isRotated && !isPinching,
99
101
  showsHorizontalScrollIndicator: false,
100
- onMomentumScrollEnd: onMomentumScrollEnd,
102
+ onMomentumScrollEnd,
103
+ onScroll,
101
104
  onScrollBeginDrag,
102
105
  ...(enableSnapMode ? {
103
106
  snapToInterval: width + itemSpacing,
@@ -108,10 +111,20 @@ export function GestureViewer({
108
111
  }),
109
112
  scrollEventThrottle: 16,
110
113
  removeClippedSubviews: true
111
- }), [width, itemSpacing, isZoomed, isRotated, isPinching, onMomentumScrollEnd, onScrollBeginDrag, enableSnapMode]);
114
+ }), [width, itemSpacing, isZoomed, isRotated, isPinching, onMomentumScrollEnd, onScroll, onScrollBeginDrag, enableSnapMode]);
112
115
  const control = useMemo(() => ({
113
116
  dismiss: handleDismiss
114
117
  }), [handleDismiss]);
118
+ const shouldWrapScrollableWithNativeGesture = shouldUseNativeScrollGesture(Platform.OS, Component);
119
+ const maybeWrapWithNativeScrollGesture = useCallback(children => {
120
+ if (!shouldWrapScrollableWithNativeGesture) {
121
+ return children;
122
+ }
123
+ return /*#__PURE__*/_jsx(GestureDetector, {
124
+ gesture: nativeScrollGesture,
125
+ children: children
126
+ });
127
+ }, [nativeScrollGesture, shouldWrapScrollableWithNativeGesture]);
115
128
  const listComponent = /*#__PURE__*/_jsx(GestureHandlerRootView, {
116
129
  children: /*#__PURE__*/_jsx(GestureDetector, {
117
130
  gesture: gesture,
@@ -124,48 +137,45 @@ export function GestureViewer({
124
137
  style: [styles.background, backdropStyleProps, backdropStyle]
125
138
  }), /*#__PURE__*/_jsx(Animated.View, {
126
139
  style: [styles.content, animatedStyle],
140
+ ...(Platform.OS === 'web' && {
141
+ onClick: onWebDoubleClick
142
+ }),
127
143
  ...(Platform.OS === 'web' && isFlashListLike(Component) && {
128
144
  dataSet: {
129
145
  'flash-list-paging-enabled-fix': true
130
146
  }
131
147
  }),
132
- children: isScrollView ? /*#__PURE__*/_jsx(GestureDetector, {
133
- gesture: nativeScrollGesture,
134
- children: /*#__PURE__*/_jsx(Component, {
135
- ref: listRef,
136
- ...commonProps,
137
- ...listProps,
138
- children: loopData.map((item, index) => renderItem({
139
- item,
140
- index
141
- }))
142
- })
143
- }) : isFlatListLike(Component) && /*#__PURE__*/_jsx(GestureDetector, {
144
- gesture: nativeScrollGesture,
145
- children: /*#__PURE__*/_jsx(Component, {
146
- ref: listRef,
147
- ...commonProps,
148
- data: loopData,
149
- renderItem: renderItem,
150
- initialScrollIndex: enableLoop && data.length > 1 ? initialIndex + 1 : initialIndex,
151
- keyExtractor: keyExtractor,
152
- ...(isFlashListLike(Component) ?
153
- // NOTE - Deprecated estimatedItemSize for FlashList V2 (https://shopify.github.io/flash-list/docs/v2-changes#deprecated)
154
- {
155
- estimatedItemSize: width + itemSpacing
156
- } : {
157
- windowSize: 3,
158
- maxToRenderPerBatch: 3,
159
- getItemLayout
160
- }),
161
- ...(Platform.OS === 'web' && isFlatListLike(Component) && {
162
- dataSet: {
163
- 'flat-list-paging-enabled-fix': true
164
- }
165
- }),
166
- ...listProps
167
- })
168
- })
148
+ children: isScrollView ? maybeWrapWithNativeScrollGesture(/*#__PURE__*/_jsx(Component, {
149
+ ref: listRef,
150
+ ...commonProps,
151
+ ...listProps,
152
+ children: loopData.map((item, index) => renderItem({
153
+ item,
154
+ index
155
+ }))
156
+ })) : isFlatListLike(Component) && maybeWrapWithNativeScrollGesture(/*#__PURE__*/_jsx(Component, {
157
+ ref: listRef,
158
+ ...commonProps,
159
+ data: loopData,
160
+ renderItem: renderItem,
161
+ initialScrollIndex: enableLoop && data.length > 1 ? initialIndex + 1 : initialIndex,
162
+ keyExtractor: keyExtractor,
163
+ ...(isFlashListLike(Component) ?
164
+ // NOTE - Deprecated estimatedItemSize for FlashList V2 (https://shopify.github.io/flash-list/docs/v2-changes#deprecated)
165
+ {
166
+ estimatedItemSize: width + itemSpacing
167
+ } : {
168
+ windowSize: 3,
169
+ maxToRenderPerBatch: 3,
170
+ getItemLayout
171
+ }),
172
+ ...(Platform.OS === 'web' && isFlatListLike(Component) && {
173
+ dataSet: {
174
+ 'flat-list-paging-enabled-fix': true
175
+ }
176
+ }),
177
+ ...listProps
178
+ }))
169
179
  }), /*#__PURE__*/_jsx(WebPagingFixStyle, {
170
180
  Component: Component
171
181
  })]
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useMemo","useRef","Platform","StyleSheet","useWindowDimensions","View","Gesture","GestureDetector","GestureHandlerRootView","Animated","registry","useGestureViewer","createLoopData","isFlashListLike","isFlatListLike","isScrollViewLike","WebPagingFixStyle","jsx","_jsx","jsxs","_jsxs","GestureViewer","id","data","renderItem","renderItemProp","renderContainer","ListComponent","width","customWidth","height","customHeight","listProps","backdropStyle","backdropStyleProps","containerStyle","initialIndex","itemSpacing","enableSnapMode","enableLoop","props","Component","dataRef","screenWidth","screenHeight","loopData","isScrollView","listRef","isZoomed","isRotated","isPinching","dismissGesture","zoomGesture","nativeScrollGesture","onMomentumScrollEnd","onScrollBeginDrag","animatedStyle","handleDismiss","keyExtractor","item","index","style","marginHorizontal","styles","children","undefined","getItemLayout","_","length","offset","gesture","Race","current","createManager","deleteManager","commonProps","horizontal","scrollEnabled","showsHorizontalScrollIndicator","snapToInterval","snapToAlignment","decelerationRate","pagingEnabled","scrollEventThrottle","removeClippedSubviews","control","dismiss","listComponent","background","content","OS","dataSet","ref","map","initialScrollIndex","estimatedItemSize","windowSize","maxToRenderPerBatch","create","flex","justifyContent","alignItems","position","top","left","right","bottom","backgroundColor"],"sourceRoot":"../../src","sources":["GestureViewer.tsx"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAC/D,SACEC,QAAQ,EAERC,UAAU,EACVC,mBAAmB,EACnBC,IAAI,QACC,cAAc;AACrB,SAASC,OAAO,EAAEC,eAAe,EAAEC,sBAAsB,QAAQ,8BAA8B;AAC/F,OAAOC,QAAQ,MAAM,yBAAyB;AAE9C,SAASC,QAAQ,QAAQ,4BAAyB;AAElD,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,cAAc,EAAEC,eAAe,EAAEC,cAAc,EAAEC,gBAAgB,QAAQ,kBAAS;AAC3F,OAAOC,iBAAiB,MAAM,wBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEpD,OAAO,SAASC,aAAaA,CAAY;EACvCC,EAAE,GAAG,SAAS;EACdC,IAAI;EACJC,UAAU,EAAEC,cAAc;EAC1BC,eAAe;EACfC,aAAa;EACbC,KAAK,EAAEC,WAAW;EAClBC,MAAM,EAAEC,YAAY;EACpBC,SAAS;EACTC,aAAa,EAAEC,kBAAkB;EACjCC,cAAc;EACdC,YAAY,GAAG,CAAC;EAChBC,WAAW,GAAG,CAAC;EACfC,cAAc,GAAG,KAAK;EACtBC,UAAU,GAAG,KAAK;EAClB,GAAGC;AAC0B,CAAC,EAAE;EAChC,MAAMC,SAAS,GAAGd,aAAyC;EAE3D,MAAMe,OAAO,GAAGzC,MAAM,CAACsB,IAAI,CAAC;EAE5B,MAAM;IAAEK,KAAK,EAAEe,WAAW;IAAEb,MAAM,EAAEc;EAAa,CAAC,GAAGxC,mBAAmB,CAAC,CAAC;EAE1E,MAAMwB,KAAK,GAAGC,WAAW,IAAIc,WAAW;EACxC,MAAMb,MAAM,GAAGC,YAAY,IAAIa,YAAY;EAE3C,MAAMC,QAAQ,GAAG7C,OAAO,CAAC,MAAMY,cAAc,CAAC8B,OAAO,EAAEH,UAAU,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAEjF,MAAMO,YAAY,GAAG/B,gBAAgB,CAAC0B,SAAS,CAAC;EAEhD,MAAM;IACJM,OAAO;IACPC,QAAQ;IACRC,SAAS;IACTC,UAAU;IACVC,cAAc;IACdC,WAAW;IACXC,mBAAmB;IACnBC,mBAAmB;IACnBC,iBAAiB;IACjBC,aAAa;IACbvB,aAAa;IACbwB;EACF,CAAC,GAAG9C,gBAAgB,CAAC;IACnBW,EAAE;IACFC,IAAI;IACJK,KAAK;IACLE,MAAM;IACNM,YAAY;IACZC,WAAW;IACXE,UAAU;IACV,GAAGC;EACL,CAAC,CAAC;EAEF,MAAMkB,YAAY,GAAG5D,WAAW,CAC9B,CAAC6D,IAAW,EAAEC,KAAa,KAAK;IAC9B,IAAIrB,UAAU,EAAE;MACd,OAAO,OAAOoB,IAAI,KAAK,QAAQ,GAAG,GAAGA,IAAI,IAAIC,KAAK,EAAE,GAAG,QAAQA,KAAK,EAAE;IACxE;IAEA,OAAO,OAAOD,IAAI,KAAK,QAAQ,GAAGA,IAAI,GAAG,SAASC,KAAK,EAAE;EAC3D,CAAC,EACD,CAACrB,UAAU,CACb,CAAC;EAED,MAAMf,UAAU,GAAG1B,WAAW,CAC5B,CAAC;IAAE6D,IAAI;IAAEC;EAAsC,CAAC,KAAK;IACnD,oBACE1C,IAAA,CAACb,IAAI;MAEHwD,KAAK,EAAE,CACL;QACEjC,KAAK;QACLE,MAAM;QACNgC,gBAAgB,EAAEzB,WAAW,GAAG;MAClC,CAAC,EACD0B,MAAM,CAACJ,IAAI,CACX;MAAAK,QAAA,EAEDvC,cAAc,CAACkC,IAAI,EAAEC,KAAK;IAAC,GAVvBd,YAAY,GAAGY,YAAY,CAACC,IAAI,EAAEC,KAAK,CAAC,GAAGK,SAW5C,CAAC;EAEX,CAAC,EACD,CAACrC,KAAK,EAAES,WAAW,EAAEZ,cAAc,EAAEiC,YAAY,EAAEZ,YAAY,EAAEhB,MAAM,CACzE,CAAC;EAED,MAAMoC,aAAa,GAAGpE,WAAW,CAC/B,CAACqE,CAAsC,EAAEP,KAAa,MAAM;IAC1DQ,MAAM,EAAExC,KAAK,GAAGS,WAAW;IAC3BgC,MAAM,EAAE,CAACzC,KAAK,GAAGS,WAAW,IAAIuB,KAAK;IACrCA;EACF,CAAC,CAAC,EACF,CAAChC,KAAK,EAAES,WAAW,CACrB,CAAC;EAED,MAAMiC,OAAO,GAAGtE,OAAO,CAAC,MAAM;IAC5B,OAAOM,OAAO,CAACiE,IAAI,CAACpB,cAAc,EAAEC,WAAW,CAAC;EAClD,CAAC,EAAE,CAACA,WAAW,EAAED,cAAc,CAAC,CAAC;EAEjCpD,SAAS,CAAC,MAAM;IACd2C,OAAO,CAAC8B,OAAO,GAAGjD,IAAI;EACxB,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC;EAEVxB,SAAS,CAAC,MAAM;IACdW,QAAQ,CAAC+D,aAAa,CAACnD,EAAE,CAAC;IAE1B,OAAO,MAAMZ,QAAQ,CAACgE,aAAa,CAACpD,EAAE,CAAC;EACzC,CAAC,EAAE,CAACA,EAAE,CAAC,CAAC;EAER,MAAMqD,WAAW,GAAG3E,OAAO,CACzB,OACG;IACC4E,UAAU,EAAE,IAAI;IAChBC,aAAa,EAAE,CAAC7B,QAAQ,IAAI,CAACC,SAAS,IAAI,CAACC,UAAU;IACrD4B,8BAA8B,EAAE,KAAK;IACrCxB,mBAAmB,EAAEA,mBAAmB;IACxCC,iBAAiB;IACjB,IAAIjB,cAAc,GACd;MACEyC,cAAc,EAAEnD,KAAK,GAAGS,WAAW;MACnC2C,eAAe,EAAE,QAAQ;MACzBC,gBAAgB,EAAE;IACpB,CAAC,GACD;MACEC,aAAa,EAAE;IACjB,CAAC,CAAC;IACNC,mBAAmB,EAAE,EAAE;IACvBC,qBAAqB,EAAE;EACzB,CAAC,CAA2B,EAC9B,CACExD,KAAK,EACLS,WAAW,EACXW,QAAQ,EACRC,SAAS,EACTC,UAAU,EACVI,mBAAmB,EACnBC,iBAAiB,EACjBjB,cAAc,CAElB,CAAC;EAED,MAAM+C,OAAO,GAAGrF,OAAO,CAAC,OAAO;IAAEsF,OAAO,EAAE7B;EAAc,CAAC,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;EAE5E,MAAM8B,aAAa,gBACjBrE,IAAA,CAACV,sBAAsB;IAAAwD,QAAA,eACrB9C,IAAA,CAACX,eAAe;MAAC+D,OAAO,EAAEA,OAAQ;MAAAN,QAAA,eAChC5C,KAAA,CAACf,IAAI;QAACwD,KAAK,EAAE,CAAC;UAAEjC,KAAK;UAAEE;QAAO,CAAC,EAAEK,cAAc,CAAE;QAAA6B,QAAA,gBAC/C9C,IAAA,CAACT,QAAQ,CAACJ,IAAI;UAACwD,KAAK,EAAE,CAACE,MAAM,CAACyB,UAAU,EAAEtD,kBAAkB,EAAED,aAAa;QAAE,CAAE,CAAC,eAChFf,IAAA,CAACT,QAAQ,CAACJ,IAAI;UACZwD,KAAK,EAAE,CAACE,MAAM,CAAC0B,OAAO,EAAEjC,aAAa,CAAE;UAAA,IAClCtD,QAAQ,CAACwF,EAAE,KAAK,KAAK,IACxB7E,eAAe,CAAC4B,SAAS,CAAC,IAAI;YAAEkD,OAAO,EAAE;cAAE,+BAA+B,EAAE;YAAK;UAAE,CAAC;UAAA3B,QAAA,EAErFlB,YAAY,gBACX5B,IAAA,CAACX,eAAe;YAAC+D,OAAO,EAAEjB,mBAAoB;YAAAW,QAAA,eAC5C9C,IAAA,CAACuB,SAAS;cAACmD,GAAG,EAAE7C,OAAQ;cAAA,GAAK4B,WAAW;cAAA,GAAM3C,SAAS;cAAAgC,QAAA,EACpDnB,QAAQ,CAACgD,GAAG,CAAC,CAAClC,IAAI,EAAEC,KAAK,KAAKpC,UAAU,CAAC;gBAAEmC,IAAI;gBAAEC;cAAM,CAAC,CAAC;YAAC,CAClD;UAAC,CACG,CAAC,GAElB9C,cAAc,CAAC2B,SAAS,CAAC,iBACvBvB,IAAA,CAACX,eAAe;YAAC+D,OAAO,EAAEjB,mBAAoB;YAAAW,QAAA,eAC5C9C,IAAA,CAACuB,SAAS;cACRmD,GAAG,EAAE7C,OAAQ;cAAA,GACT4B,WAAW;cACfpD,IAAI,EAAEsB,QAAS;cACfrB,UAAU,EAAEA,UAAW;cACvBsE,kBAAkB,EAChBvD,UAAU,IAAIhB,IAAI,CAAC6C,MAAM,GAAG,CAAC,GAAGhC,YAAY,GAAG,CAAC,GAAGA,YACpD;cACDsB,YAAY,EAAEA,YAAa;cAAA,IACtB7C,eAAe,CAAC4B,SAAS,CAAC;cAC3B;cACA;gBAAEsD,iBAAiB,EAAEnE,KAAK,GAAGS;cAAY,CAAC,GAC1C;gBAAE2D,UAAU,EAAE,CAAC;gBAAEC,mBAAmB,EAAE,CAAC;gBAAE/B;cAAc,CAAC;cAAA,IAEvDhE,QAAQ,CAACwF,EAAE,KAAK,KAAK,IACxB5E,cAAc,CAAC2B,SAAS,CAAC,IAAI;gBAC3BkD,OAAO,EAAE;kBAAE,8BAA8B,EAAE;gBAAK;cAClD,CAAC;cAAA,GACC3D;YAAS,CACd;UAAC,CACa;QAEpB,CACY,CAAC,eAChBd,IAAA,CAACF,iBAAiB;UAACyB,SAAS,EAAEA;QAAU,CAAE,CAAC;MAAA,CACvC;IAAC,CACQ;EAAC,CACI,CACzB;EAED,OAAOf,eAAe,GAAGA,eAAe,CAAC6D,aAAa,EAAEF,OAAO,CAAC,GAAGE,aAAa;AAClF;AAEA,MAAMxB,MAAM,GAAG5D,UAAU,CAAC+F,MAAM,CAAC;EAC/BT,OAAO,EAAE;IACPU,IAAI,EAAE,CAAC;IACPvE,KAAK,EAAE,MAAM;IACbE,MAAM,EAAE;EACV,CAAC;EACD6B,IAAI,EAAE;IACJyC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDb,UAAU,EAAE;IACVc,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,eAAe,EAAE;EACnB;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","Platform","StyleSheet","useWindowDimensions","View","Gesture","GestureDetector","GestureHandlerRootView","Animated","registry","useGestureViewer","createLoopData","isFlashListLike","isFlatListLike","isScrollViewLike","shouldUseNativeScrollGesture","WebPagingFixStyle","jsx","_jsx","jsxs","_jsxs","GestureViewer","id","data","renderItem","renderItemProp","renderContainer","ListComponent","width","customWidth","height","customHeight","listProps","backdropStyle","backdropStyleProps","containerStyle","initialIndex","itemSpacing","enableSnapMode","enableLoop","props","Component","dataRef","screenWidth","screenHeight","loopData","isScrollView","listRef","isZoomed","isRotated","isPinching","dismissGesture","zoomGesture","nativeScrollGesture","onWebDoubleClick","onMomentumScrollEnd","onScroll","onScrollBeginDrag","animatedStyle","handleDismiss","keyExtractor","item","index","style","marginHorizontal","styles","children","undefined","getItemLayout","_","length","offset","gesture","Race","current","createManager","deleteManager","commonProps","horizontal","scrollEnabled","showsHorizontalScrollIndicator","snapToInterval","snapToAlignment","decelerationRate","pagingEnabled","scrollEventThrottle","removeClippedSubviews","control","dismiss","shouldWrapScrollableWithNativeGesture","OS","maybeWrapWithNativeScrollGesture","listComponent","background","content","onClick","dataSet","ref","map","initialScrollIndex","estimatedItemSize","windowSize","maxToRenderPerBatch","create","flex","justifyContent","alignItems","position","top","left","right","bottom","backgroundColor"],"sourceRoot":"../../src","sources":["GestureViewer.tsx"],"mappings":"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","ignoreList":[]}
@@ -15,7 +15,9 @@ class GestureViewerManager {
15
15
  rotation = null;
16
16
  translateX = null;
17
17
  translateY = null;
18
+ resetTransformCallback = null;
18
19
  loopCallback = null;
20
+ programmaticScrollVersion = 0;
19
21
  listeners = new Set();
20
22
  eventListeners = new Map();
21
23
  notifyListeners() {
@@ -67,6 +69,9 @@ class GestureViewerManager {
67
69
  totalCount: this.dataLength
68
70
  };
69
71
  }
72
+ getProgrammaticScrollVersion() {
73
+ return this.programmaticScrollVersion;
74
+ }
70
75
  setEnableLoop(enabled) {
71
76
  this.enableLoop = enabled;
72
77
  }
@@ -96,6 +101,9 @@ class GestureViewerManager {
96
101
  this.translateY = translateY;
97
102
  this.maxZoomScale = maxZoomScale;
98
103
  }
104
+ setResetTransformCallback(callback) {
105
+ this.resetTransformCallback = callback;
106
+ }
99
107
  notifyStateChange() {
100
108
  this.notifyListeners();
101
109
  }
@@ -176,7 +184,7 @@ class GestureViewerManager {
176
184
  if (!this.enableHorizontalSwipe || !this.listRef) {
177
185
  return;
178
186
  }
179
- this.loopCallback = null;
187
+ this.cancelPendingLoopTransition();
180
188
  const {
181
189
  scrollTo
182
190
  } = createScrollAction(this.listRef, this.width);
@@ -185,8 +193,10 @@ class GestureViewerManager {
185
193
  this.loopCallback = () => {
186
194
  scrollTo(this.dataLength, false);
187
195
  this.updateCurrentIndex(this.dataLength - 1);
188
- this.loopCallback = null;
196
+ this.cancelPendingLoopTransition();
189
197
  };
198
+ this.resetTransformCallback?.();
199
+ this.programmaticScrollVersion += 1;
190
200
  scrollTo(0, true);
191
201
  return;
192
202
  }
@@ -194,11 +204,15 @@ class GestureViewerManager {
194
204
  this.loopCallback = () => {
195
205
  scrollTo(1, false);
196
206
  this.updateCurrentIndex(0);
197
- this.loopCallback = null;
207
+ this.cancelPendingLoopTransition();
198
208
  };
209
+ this.resetTransformCallback?.();
210
+ this.programmaticScrollVersion += 1;
199
211
  scrollTo(this.dataLength + 1, true);
200
212
  return;
201
213
  }
214
+ this.resetTransformCallback?.();
215
+ this.programmaticScrollVersion += 1;
202
216
  scrollTo(index + 1, true);
203
217
  this.updateCurrentIndex(index);
204
218
  return;
@@ -206,6 +220,8 @@ class GestureViewerManager {
206
220
  if (index < 0 || index >= this.dataLength) {
207
221
  return;
208
222
  }
223
+ this.resetTransformCallback?.();
224
+ this.programmaticScrollVersion += 1;
209
225
  scrollTo(index, true);
210
226
  this.updateCurrentIndex(index);
211
227
  };
@@ -217,12 +233,15 @@ class GestureViewerManager {
217
233
  this.loopCallback();
218
234
  return true;
219
235
  }
220
- this.loopCallback = null;
236
+ this.cancelPendingLoopTransition();
221
237
  return true;
222
238
  };
223
- handleScrollBeginDrag = () => {
239
+ cancelPendingLoopTransition = () => {
224
240
  this.loopCallback = null;
225
241
  };
242
+ handleScrollBeginDrag = () => {
243
+ this.cancelPendingLoopTransition();
244
+ };
226
245
  goToPrevious = () => {
227
246
  this.goToIndex(this.currentIndex - 1);
228
247
  };
@@ -230,7 +249,7 @@ class GestureViewerManager {
230
249
  this.goToIndex(this.currentIndex + 1);
231
250
  };
232
251
  cleanUp() {
233
- this.loopCallback = null;
252
+ this.cancelPendingLoopTransition();
234
253
  this.listeners.clear();
235
254
  this.listRef = null;
236
255
  this.enableHorizontalSwipe = true;
@@ -241,6 +260,7 @@ class GestureViewerManager {
241
260
  this.translateX = null;
242
261
  this.translateY = null;
243
262
  this.rotation = null;
263
+ this.resetTransformCallback = null;
244
264
  this.eventListeners.clear();
245
265
  }
246
266
  updateCurrentIndex = targetIndex => {
@@ -1 +1 @@
1
- {"version":3,"names":["withTiming","createBoundsConstraint","createScrollAction","GestureViewerManager","currentIndex","dataLength","width","height","maxZoomScale","enableHorizontalSwipe","enableLoop","listRef","scale","rotation","translateX","translateY","loopCallback","listeners","Set","eventListeners","Map","notifyListeners","state","getState","forEach","listener","subscribe","add","delete","addEventListener","eventType","callback","has","set","get","size","emitEvent","data","emitZoomChange","previousScale","emitRotationChange","previousRotation","totalCount","setEnableLoop","enabled","setWidth","setHeight","setListRef","ref","setDataLength","length","setEnableHorizontalSwipe","setCurrentIndex","index","setZoomSharedValues","notifyStateChange","setRotation","rotate","angle","clockwise","MAX_ANGLE","value","nextAngle","Math","floor","zoomIn","multiplier","nextScale","min","zoomOut","max","resetZoom","goToIndex","scrollTo","updateCurrentIndex","handleMomentumScrollEnd","scrollIndex","handleScrollBeginDrag","goToPrevious","goToNext","cleanUp","clear","targetIndex"],"sourceRoot":"../../src","sources":["GestureViewerManager.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["withTiming","createBoundsConstraint","createScrollAction","GestureViewerManager","currentIndex","dataLength","width","height","maxZoomScale","enableHorizontalSwipe","enableLoop","listRef","scale","rotation","translateX","translateY","resetTransformCallback","loopCallback","programmaticScrollVersion","listeners","Set","eventListeners","Map","notifyListeners","state","getState","forEach","listener","subscribe","add","delete","addEventListener","eventType","callback","has","set","get","size","emitEvent","data","emitZoomChange","previousScale","emitRotationChange","previousRotation","totalCount","getProgrammaticScrollVersion","setEnableLoop","enabled","setWidth","setHeight","setListRef","ref","setDataLength","length","setEnableHorizontalSwipe","setCurrentIndex","index","setZoomSharedValues","setResetTransformCallback","notifyStateChange","setRotation","rotate","angle","clockwise","MAX_ANGLE","value","nextAngle","Math","floor","zoomIn","multiplier","nextScale","min","zoomOut","max","resetZoom","goToIndex","cancelPendingLoopTransition","scrollTo","updateCurrentIndex","handleMomentumScrollEnd","scrollIndex","handleScrollBeginDrag","goToPrevious","goToNext","cleanUp","clear","targetIndex"],"sourceRoot":"../../src","sources":["GestureViewerManager.ts"],"mappings":";;AAAA,SAA2BA,UAAU,QAAQ,yBAAyB;AAQtE,SAASC,sBAAsB,EAAEC,kBAAkB,QAAQ,kBAAS;AAEpE,MAAMC,oBAAoB,CAAC;EACjBC,YAAY,GAAG,CAAC;EAChBC,UAAU,GAAG,CAAC;EACdC,KAAK,GAAG,CAAC;EACTC,MAAM,GAAG,CAAC;EACVC,YAAY,GAAG,CAAC;EAChBC,qBAAqB,GAAG,IAAI;EAC5BC,UAAU,GAAG,KAAK;EAClBC,OAAO,GAAe,IAAI;EAE1BC,KAAK,GAA+B,IAAI;EACxCC,QAAQ,GAA+B,IAAI;EAC3CC,UAAU,GAA+B,IAAI;EAC7CC,UAAU,GAA+B,IAAI;EAC7CC,sBAAsB,GAAwB,IAAI;EAElDC,YAAY,GAAwB,IAAI;EACxCC,yBAAyB,GAAG,CAAC;EAE7BC,SAAS,GAAG,IAAIC,GAAG,CAAsC,CAAC;EAC1DC,cAAc,GAAG,IAAIC,GAAG,CAAmD,CAAC;EAE5EC,eAAeA,CAAA,EAAG;IACxB,MAAMC,KAAK,GAAG,IAAI,CAACC,QAAQ,CAAC,CAAC;IAE7B,IAAI,CAACN,SAAS,CAACO,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAACH,KAAK,CAAC,CAAC;EACvD;EAEAI,SAASA,CAACD,QAA6C,EAAE;IACvD,IAAI,CAACR,SAAS,CAACU,GAAG,CAACF,QAAQ,CAAC;IAE5B,OAAO,MAAM;MACX,IAAI,CAACR,SAAS,CAACW,MAAM,CAACH,QAAQ,CAAC;IACjC,CAAC;EACH;EAEAI,gBAAgBA,CACdC,SAAY,EACZC,QAAuC,EACvC;IACA,IAAI,CAAC,IAAI,CAACZ,cAAc,CAACa,GAAG,CAACF,SAAS,CAAC,EAAE;MACvC,IAAI,CAACX,cAAc,CAACc,GAAG,CAACH,SAAS,EAAE,IAAIZ,GAAG,CAAC,CAAC,CAAC;IAC/C;IAEA,IAAI,CAACC,cAAc,CAACe,GAAG,CAACJ,SAAS,CAAC,EAAEH,GAAG,CAACI,QAAQ,CAAC;IAEjD,OAAO,MAAM;MACX,MAAMd,SAAS,GAAG,IAAI,CAACE,cAAc,CAACe,GAAG,CAACJ,SAAS,CAAC;MAEpD,IAAIb,SAAS,EAAE;QACbA,SAAS,CAACW,MAAM,CAACG,QAAQ,CAAC;QAE1B,IAAId,SAAS,CAACkB,IAAI,KAAK,CAAC,EAAE;UACxB,IAAI,CAAChB,cAAc,CAACS,MAAM,CAACE,SAAS,CAAC;QACvC;MACF;IACF,CAAC;EACH;EAEQM,SAASA,CACfN,SAAY,EACZO,IAA+B,EAC/B;IACA,MAAMpB,SAAS,GAAG,IAAI,CAACE,cAAc,CAACe,GAAG,CAACJ,SAAS,CAAC;IAEpD,IAAIb,SAAS,EAAE;MACbA,SAAS,CAACO,OAAO,CAAEO,QAAQ,IAAKA,QAAQ,CAACM,IAAI,CAAC,CAAC;IACjD;EACF;EAEAC,cAAc,GAAGA,CAAC5B,KAAa,EAAE6B,aAA4B,KAAK;IAChE,IAAI,CAACH,SAAS,CAAC,YAAY,EAAE;MAAE1B,KAAK;MAAE6B;IAAc,CAAC,CAAC;EACxD,CAAC;EAEDC,kBAAkB,GAAGA,CAAC7B,QAAgB,EAAE8B,gBAA+B,KAAK;IAC1E,IAAI,CAACL,SAAS,CAAC,gBAAgB,EAAE;MAAEzB,QAAQ;MAAE8B;IAAiB,CAAC,CAAC;EAClE,CAAC;EAEDlB,QAAQA,CAAA,EAAuB;IAC7B,OAAO;MACLrB,YAAY,EAAE,IAAI,CAACA,YAAY;MAC/BwC,UAAU,EAAE,IAAI,CAACvC;IACnB,CAAC;EACH;EAEAwC,4BAA4BA,CAAA,EAAG;IAC7B,OAAO,IAAI,CAAC3B,yBAAyB;EACvC;EAEA4B,aAAaA,CAACC,OAAgB,EAAE;IAC9B,IAAI,CAACrC,UAAU,GAAGqC,OAAO;EAC3B;EAEAC,QAAQA,CAAC1C,KAAa,EAAE;IACtB,IAAI,CAACA,KAAK,GAAGA,KAAK;EACpB;EAEA2C,SAASA,CAAC1C,MAAc,EAAE;IACxB,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAEA2C,UAAUA,CAACC,GAAQ,EAAE;IACnB,IAAI,CAACxC,OAAO,GAAGwC,GAAG;EACpB;EAEAC,aAAaA,CAACC,MAAc,EAAE;IAC5B,IAAI,CAAChD,UAAU,GAAGgD,MAAM;EAC1B;EAEAC,wBAAwBA,CAACP,OAAgB,EAAE;IACzC,IAAI,CAACtC,qBAAqB,GAAGsC,OAAO;EACtC;EAEAQ,eAAeA,CAACC,KAAa,EAAE;IAC7B,IAAIA,KAAK,KAAK,IAAI,CAACpD,YAAY,EAAE;MAC/B,IAAI,CAACA,YAAY,GAAGoD,KAAK;IAC3B;EACF;EAEAC,mBAAmBA,CACjB7C,KAA0B,EAC1BE,UAA+B,EAC/BC,UAA+B,EAC/BP,YAAoB,EACpB;IACA,IAAI,CAACI,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACE,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACP,YAAY,GAAGA,YAAY;EAClC;EAEAkD,yBAAyBA,CAACzB,QAA6B,EAAE;IACvD,IAAI,CAACjB,sBAAsB,GAAGiB,QAAQ;EACxC;EAEA0B,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAACpC,eAAe,CAAC,CAAC;EACxB;EAEAqC,WAAWA,CAAC/C,QAA6B,EAAE;IACzC,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC1B;EAEAgD,MAAM,GAAGA,CAACC,KAA+B,GAAG,EAAE,EAAEC,SAAS,GAAG,IAAI,KAAK;IACnE,MAAMC,SAAS,GAAG,GAAG;IAErB,IACE,CAAC,IAAI,CAACnD,QAAQ,IACdiD,KAAK,GAAG,CAAC,IACTA,KAAK,GAAGE,SAAS,IAChBF,KAAK,KAAK,CAAC,IAAI,IAAI,CAACjD,QAAQ,CAACoD,KAAK,GAAGH,KAAK,KAAK,CAAC,IAAIA,KAAK,KAAK,GAAI,EACnE;MACA;IACF;IAEA,IAAIA,KAAK,KAAK,CAAC,EAAE;MACf,MAAMI,SAAS,GAAGC,IAAI,CAACC,KAAK,CAAC,IAAI,CAACvD,QAAQ,CAACoD,KAAK,GAAGD,SAAS,CAAC,GAAGA,SAAS;MAEzE,IAAI,CAACnD,QAAQ,CAACoD,KAAK,GAAGjE,UAAU,CAAC+D,SAAS,GAAGG,SAAS,GAAGA,SAAS,GAAGF,SAAS,CAAC;MAC/E;IACF;IAEA,IAAIF,KAAK,KAAK,GAAG,EAAE;MACjB,IAAI,CAACjD,QAAQ,CAACoD,KAAK,GAAGjE,UAAU,CAC9B+D,SAAS,GAAG,IAAI,CAAClD,QAAQ,CAACoD,KAAK,GAAGD,SAAS,GAAG,IAAI,CAACnD,QAAQ,CAACoD,KAAK,GAAGD,SACtE,CAAC;MACD;IACF;IAEA,MAAME,SAAS,GAAGH,SAAS,GAAG,IAAI,CAAClD,QAAQ,CAACoD,KAAK,GAAGH,KAAK,GAAG,IAAI,CAACjD,QAAQ,CAACoD,KAAK,GAAGH,KAAK;IAEvF,IAAI,CAACjD,QAAQ,CAACoD,KAAK,GAAGjE,UAAU,CAACkE,SAAS,CAAC;EAC7C,CAAC;EAEDG,MAAM,GAAGA,CAACC,UAAU,GAAG,IAAI,KAAK;IAC9B,IACE,CAAC,IAAI,CAAC1D,KAAK,IACX,CAAC,IAAI,CAACE,UAAU,IAChB,CAAC,IAAI,CAACC,UAAU,IAChBuD,UAAU,GAAG,IAAI,IACjBA,UAAU,GAAG,CAAC,EACd;MACA;IACF;IAEA,MAAMC,SAAS,GAAGJ,IAAI,CAACK,GAAG,CAAC,IAAI,CAAC5D,KAAK,CAACqD,KAAK,IAAI,CAAC,GAAGK,UAAU,CAAC,EAAE,IAAI,CAAC9D,YAAY,CAAC;IAElF,IAAI,CAACI,KAAK,CAACqD,KAAK,GAAGjE,UAAU,CAACuE,SAAS,CAAC;IAExC,MAAM;MAAEzD,UAAU;MAAEC;IAAW,CAAC,GAAGd,sBAAsB,CAAC;MACxDK,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBC,MAAM,EAAE,IAAI,CAACA;IACf,CAAC,CAAC,CAAC;MACDO,UAAU,EAAE,IAAI,CAACA,UAAU,CAACmD,KAAK;MACjClD,UAAU,EAAE,IAAI,CAACA,UAAU,CAACkD,KAAK;MACjCrD,KAAK,EAAE2D;IACT,CAAC,CAAC;IAEF,IAAI,CAACzD,UAAU,CAACmD,KAAK,GAAGjE,UAAU,CAACc,UAAU,CAAC;IAC9C,IAAI,CAACC,UAAU,CAACkD,KAAK,GAAGjE,UAAU,CAACe,UAAU,CAAC;EAChD,CAAC;EAED0D,OAAO,GAAGA,CAACH,UAAU,GAAG,IAAI,KAAK;IAC/B,IACE,CAAC,IAAI,CAAC1D,KAAK,IACX,CAAC,IAAI,CAACE,UAAU,IAChB,CAAC,IAAI,CAACC,UAAU,IAChBuD,UAAU,GAAG,IAAI,IACjBA,UAAU,GAAG,CAAC,EACd;MACA;IACF;IAEA,MAAMC,SAAS,GAAGJ,IAAI,CAACO,GAAG,CAAC,IAAI,CAAC9D,KAAK,CAACqD,KAAK,IAAI,CAAC,GAAGK,UAAU,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC1D,KAAK,CAACqD,KAAK,GAAGjE,UAAU,CAACuE,SAAS,CAAC;IAExC,IAAIA,SAAS,KAAK,CAAC,EAAE;MACnB,IAAI,CAACzD,UAAU,CAACmD,KAAK,GAAGjE,UAAU,CAAC,CAAC,CAAC;MACrC,IAAI,CAACe,UAAU,CAACkD,KAAK,GAAGjE,UAAU,CAAC,CAAC,CAAC;MACrC;IACF;IAEA,MAAM;MAAEc,UAAU;MAAEC;IAAW,CAAC,GAAGd,sBAAsB,CAAC;MACxDK,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBC,MAAM,EAAE,IAAI,CAACA;IACf,CAAC,CAAC,CAAC;MACDO,UAAU,EAAE,IAAI,CAACA,UAAU,CAACmD,KAAK;MACjClD,UAAU,EAAE,IAAI,CAACA,UAAU,CAACkD,KAAK;MACjCrD,KAAK,EAAE2D;IACT,CAAC,CAAC;IAEF,IAAI,CAACzD,UAAU,CAACmD,KAAK,GAAGjE,UAAU,CAACc,UAAU,CAAC;IAC9C,IAAI,CAACC,UAAU,CAACkD,KAAK,GAAGjE,UAAU,CAACe,UAAU,CAAC;EAChD,CAAC;EAED4D,SAAS,GAAGA,CAAC/D,KAAK,GAAG,CAAC,KAAK;IACzB,IACE,CAAC,IAAI,CAACA,KAAK,IACX,CAAC,IAAI,CAACE,UAAU,IAChB,CAAC,IAAI,CAACC,UAAU,IAChBH,KAAK,IAAI,CAAC,IACVA,KAAK,GAAG,IAAI,CAACJ,YAAY,EACzB;MACA;IACF;IAEA,IAAI,CAACI,KAAK,CAACqD,KAAK,GAAGjE,UAAU,CAACY,KAAK,CAAC;IACpC,IAAI,CAACE,UAAU,CAACmD,KAAK,GAAGjE,UAAU,CAAC,CAAC,CAAC;IACrC,IAAI,CAACe,UAAU,CAACkD,KAAK,GAAGjE,UAAU,CAAC,CAAC,CAAC;EACvC,CAAC;EAED4E,SAAS,GAAIpB,KAAa,IAAK;IAC7B,IAAI,CAAC,IAAI,CAAC/C,qBAAqB,IAAI,CAAC,IAAI,CAACE,OAAO,EAAE;MAChD;IACF;IAEA,IAAI,CAACkE,2BAA2B,CAAC,CAAC;IAElC,MAAM;MAAEC;IAAS,CAAC,GAAG5E,kBAAkB,CAAC,IAAI,CAACS,OAAO,EAAE,IAAI,CAACL,KAAK,CAAC;IAEjE,IAAI,IAAI,CAACI,UAAU,IAAI,IAAI,CAACL,UAAU,GAAG,CAAC,EAAE;MAC1C,IAAImD,KAAK,GAAG,CAAC,EAAE;QACb,IAAI,CAACvC,YAAY,GAAG,MAAM;UACxB6D,QAAQ,CAAC,IAAI,CAACzE,UAAU,EAAE,KAAK,CAAC;UAChC,IAAI,CAAC0E,kBAAkB,CAAC,IAAI,CAAC1E,UAAU,GAAG,CAAC,CAAC;UAC5C,IAAI,CAACwE,2BAA2B,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC7D,sBAAsB,GAAG,CAAC;QAC/B,IAAI,CAACE,yBAAyB,IAAI,CAAC;QACnC4D,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;QACjB;MACF;MAEA,IAAItB,KAAK,IAAI,IAAI,CAACnD,UAAU,EAAE;QAC5B,IAAI,CAACY,YAAY,GAAG,MAAM;UACxB6D,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;UAClB,IAAI,CAACC,kBAAkB,CAAC,CAAC,CAAC;UAC1B,IAAI,CAACF,2BAA2B,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC7D,sBAAsB,GAAG,CAAC;QAC/B,IAAI,CAACE,yBAAyB,IAAI,CAAC;QACnC4D,QAAQ,CAAC,IAAI,CAACzE,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC;QACnC;MACF;MAEA,IAAI,CAACW,sBAAsB,GAAG,CAAC;MAC/B,IAAI,CAACE,yBAAyB,IAAI,CAAC;MACnC4D,QAAQ,CAACtB,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC;MACzB,IAAI,CAACuB,kBAAkB,CAACvB,KAAK,CAAC;MAE9B;IACF;IAEA,IAAIA,KAAK,GAAG,CAAC,IAAIA,KAAK,IAAI,IAAI,CAACnD,UAAU,EAAE;MACzC;IACF;IAEA,IAAI,CAACW,sBAAsB,GAAG,CAAC;IAC/B,IAAI,CAACE,yBAAyB,IAAI,CAAC;IACnC4D,QAAQ,CAACtB,KAAK,EAAE,IAAI,CAAC;IACrB,IAAI,CAACuB,kBAAkB,CAACvB,KAAK,CAAC;EAChC,CAAC;EAEDwB,uBAAuB,GAAIC,WAAmB,IAAK;IACjD,IAAI,CAAC,IAAI,CAAChE,YAAY,EAAE;MACtB,OAAO,KAAK;IACd;IAEA,IAAIgE,WAAW,KAAK,CAAC,IAAIA,WAAW,KAAK,IAAI,CAAC5E,UAAU,GAAG,CAAC,EAAE;MAC5D,IAAI,CAACY,YAAY,CAAC,CAAC;MACnB,OAAO,IAAI;IACb;IAEA,IAAI,CAAC4D,2BAA2B,CAAC,CAAC;IAClC,OAAO,IAAI;EACb,CAAC;EAEDA,2BAA2B,GAAGA,CAAA,KAAM;IAClC,IAAI,CAAC5D,YAAY,GAAG,IAAI;EAC1B,CAAC;EAEDiE,qBAAqB,GAAGA,CAAA,KAAM;IAC5B,IAAI,CAACL,2BAA2B,CAAC,CAAC;EACpC,CAAC;EAEDM,YAAY,GAAGA,CAAA,KAAM;IACnB,IAAI,CAACP,SAAS,CAAC,IAAI,CAACxE,YAAY,GAAG,CAAC,CAAC;EACvC,CAAC;EAEDgF,QAAQ,GAAGA,CAAA,KAAM;IACf,IAAI,CAACR,SAAS,CAAC,IAAI,CAACxE,YAAY,GAAG,CAAC,CAAC;EACvC,CAAC;EAEDiF,OAAOA,CAAA,EAAG;IACR,IAAI,CAACR,2BAA2B,CAAC,CAAC;IAClC,IAAI,CAAC1D,SAAS,CAACmE,KAAK,CAAC,CAAC;IACtB,IAAI,CAAC3E,OAAO,GAAG,IAAI;IACnB,IAAI,CAACF,qBAAqB,GAAG,IAAI;IACjC,IAAI,CAACL,YAAY,GAAG,CAAC;IACrB,IAAI,CAACC,UAAU,GAAG,CAAC;IACnB,IAAI,CAACG,YAAY,GAAG,CAAC;IACrB,IAAI,CAACI,KAAK,GAAG,IAAI;IACjB,IAAI,CAACE,UAAU,GAAG,IAAI;IACtB,IAAI,CAACC,UAAU,GAAG,IAAI;IACtB,IAAI,CAACF,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACG,sBAAsB,GAAG,IAAI;IAClC,IAAI,CAACK,cAAc,CAACiE,KAAK,CAAC,CAAC;EAC7B;EAEQP,kBAAkB,GAAIQ,WAAmB,IAAK;IACpD,IAAI,CAACnF,YAAY,GAAGmF,WAAW;IAC/B,IAAI,CAAChE,eAAe,CAAC,CAAC;EACxB,CAAC;AACH;AAEA,eAAepB,oBAAoB","ignoreList":[]}
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
- import { InteractionManager, useWindowDimensions } from 'react-native';
4
+ import { InteractionManager, Platform, useWindowDimensions } from 'react-native';
5
5
  import { Gesture } from 'react-native-gesture-handler';
6
6
  import { Easing, interpolate, useAnimatedReaction, useAnimatedStyle, useSharedValue, withSpring, withTiming } from 'react-native-reanimated';
7
7
  import { scheduleOnRN } from 'react-native-worklets';
8
8
  import { registry } from "./GestureViewerRegistry.js";
9
- import { createBoundsConstraint, createScrollAction, getLoopAdjustedIndex } from "./utils/index.js";
9
+ import { useGestureViewerPaging } from './useGestureViewerPaging';
10
+ import { createBoundsConstraint, createScrollAction } from "./utils/index.js";
11
+ import { applyTapZoomAtPoint } from "./utils/tapZoom.js";
10
12
  export const useGestureViewer = ({
11
13
  data,
12
14
  initialIndex = 0,
@@ -83,6 +85,27 @@ export const useGestureViewer = ({
83
85
  const scrollAction = createScrollAction(listRef.current, width + itemSpacing);
84
86
  return scrollAction.scrollTo(index, animated);
85
87
  }, [width, itemSpacing]);
88
+ const resetTransformState = useCallback(() => {
89
+ translateX.value = withTiming(0);
90
+ translateY.value = withTiming(0);
91
+ initialTranslateX.value = withTiming(0);
92
+ initialTranslateY.value = withTiming(0);
93
+ startScale.value = withTiming(1);
94
+ scale.value = withTiming(1);
95
+ rotation.value = 0;
96
+ }, [initialTranslateX, initialTranslateY, rotation, scale, startScale, translateX, translateY]);
97
+ const syncCurrentIndex = useCallback(nextIndex => {
98
+ if (!manager || nextIndex < 0 || nextIndex >= dataLength) {
99
+ return;
100
+ }
101
+ const managerCurrentIndex = manager.getState().currentIndex;
102
+ if (nextIndex === managerCurrentIndex) {
103
+ return;
104
+ }
105
+ manager.setCurrentIndex(nextIndex);
106
+ manager.notifyStateChange();
107
+ resetTransformState();
108
+ }, [dataLength, manager, resetTransformState]);
86
109
  const emitZoomChange = useCallback((currentScale, prevScale) => {
87
110
  if (manager) {
88
111
  manager.emitZoomChange(currentScale, prevScale);
@@ -129,10 +152,11 @@ export const useGestureViewer = ({
129
152
  manager.setWidth(width + itemSpacing);
130
153
  manager.setHeight(height);
131
154
  manager.setZoomSharedValues(scale, translateX, translateY, maxZoomScale);
155
+ manager.setResetTransformCallback(resetTransformState);
132
156
  manager.setRotation(rotation);
133
157
  manager.setEnableLoop(enableLoop);
134
158
  manager.notifyStateChange();
135
- }, [dataLength, enableHorizontalSwipe, initialIndex, manager, width, itemSpacing, maxZoomScale, enableLoop, scale, height, translateX, translateY, rotation]);
159
+ }, [dataLength, enableHorizontalSwipe, initialIndex, manager, width, itemSpacing, maxZoomScale, enableLoop, scale, height, resetTransformState, translateX, translateY, rotation]);
136
160
  useEffect(() => {
137
161
  if (!manager || !listRef.current) {
138
162
  return;
@@ -156,22 +180,6 @@ export const useGestureViewer = ({
156
180
  runAfterInteractions?.cancel();
157
181
  };
158
182
  }, [adjustedInitialIndex, translateY, backdropOpacity, translateX, scale, startScale, rotation, scrollTo]);
159
- useEffect(() => {
160
- if (!autoPlay || !manager || dataLength <= 1 || isZoomed || isRotated || !enableLoop && currentIndex === dataLength - 1) {
161
- return;
162
- }
163
- const intervalMs = Math.max(250, Math.floor(autoPlayInterval || 0));
164
- if (!Number.isFinite(intervalMs)) {
165
- return;
166
- }
167
- const interval = setInterval(() => {
168
- if (isZoomed || isRotated) {
169
- return;
170
- }
171
- manager.goToNext();
172
- }, intervalMs);
173
- return () => clearInterval(interval);
174
- }, [autoPlay, autoPlayInterval, manager, dataLength, currentIndex, enableLoop, isZoomed, isRotated]);
175
183
  useEffect(() => {
176
184
  onAnimationCompleteRef.current = triggerAnimation?.onAnimationComplete;
177
185
  }, [triggerAnimation?.onAnimationComplete]);
@@ -238,41 +246,6 @@ export const useGestureViewer = ({
238
246
  scheduleOnRN(onDismiss);
239
247
  }
240
248
  }, [animationConfig, onDismiss, onDismissStart, width, height, triggerTranslateX, triggerScale, triggerTranslateY, triggerOpacity]);
241
- const onMomentumScrollEnd = useCallback(event => {
242
- if (!enableHorizontalSwipe) {
243
- return;
244
- }
245
- const {
246
- contentOffset
247
- } = event.nativeEvent;
248
- const scrollIndex = Math.round(contentOffset.x / (width + itemSpacing));
249
- const isLoopHandled = manager?.handleMomentumScrollEnd(scrollIndex);
250
- if (isLoopHandled) {
251
- return;
252
- }
253
- const {
254
- realIndex,
255
- needsJump,
256
- jumpToIndex
257
- } = getLoopAdjustedIndex(scrollIndex, dataLength, enableLoop);
258
- if (needsJump && jumpToIndex !== undefined) {
259
- scrollTo(jumpToIndex, false);
260
- }
261
- const currentIndex = manager?.getState()?.currentIndex;
262
- if (realIndex !== currentIndex && realIndex >= 0 && realIndex < dataLength) {
263
- if (manager) {
264
- manager.setCurrentIndex(realIndex);
265
- manager.notifyStateChange();
266
- }
267
- translateX.value = withTiming(0);
268
- translateY.value = withTiming(0);
269
- initialTranslateX.value = withTiming(0);
270
- initialTranslateY.value = withTiming(0);
271
- startScale.value = withTiming(1);
272
- scale.value = withTiming(1);
273
- rotation.value = 0;
274
- }
275
- }, [scrollTo, manager, dataLength, width, itemSpacing, enableHorizontalSwipe, enableLoop, translateX, translateY, scale, initialTranslateX, initialTranslateY, startScale, rotation]);
276
249
  const dismissGesture = useMemo(() => {
277
250
  const canDismiss = !isZoomed && dismissOptions.enabled;
278
251
  return Gesture.Pan().minDistance(10).averageTouches(true).activeCursor('grabbing').activeOffsetY([-10, 10]).failOffsetX([-10, 10]).withRef(dismissGestureRef).enabled(canDismiss).onUpdate(event => {
@@ -396,36 +369,18 @@ export const useGestureViewer = ({
396
369
  translateY.value = constrainedTranslateY;
397
370
  }
398
371
  }), [translateX, translateY, enablePanWhenZoomed, isZoomed, scale, initialTranslateX, initialTranslateY, constrainTranslation]);
399
- const doubleTapGesture = useMemo(() => Gesture.Tap().enabled(enableDoubleTapZoom).numberOfTaps(2).onEnd(event => {
400
- const nextScale = scale.value > 1 ? 1 : maxZoomScale;
401
- if (nextScale > 1) {
402
- const centerX = event.x - width / 2;
403
- const centerY = event.y - height / 2;
404
-
405
- // NOTE 확대로 밀려난 거리만큼 반대로 이동해서 탭 지점을 제자리에 유지
406
- translateX.value = withTiming(-centerX * (nextScale - 1), {
407
- duration: 300,
408
- easing: Easing.bezier(0.25, 0.1, 0.25, 1)
409
- });
410
- translateY.value = withTiming(-centerY * (nextScale - 1), {
411
- duration: 300,
412
- easing: Easing.bezier(0.25, 0.1, 0.25, 1)
413
- });
414
- } else {
415
- translateX.value = withTiming(0, {
416
- duration: 300,
417
- easing: Easing.bezier(0.25, 0.1, 0.25, 1)
418
- });
419
- translateY.value = withTiming(0, {
420
- duration: 300,
421
- easing: Easing.bezier(0.25, 0.1, 0.25, 1)
422
- });
423
- }
424
- scale.value = withTiming(nextScale, {
425
- duration: 300,
426
- easing: Easing.bezier(0.25, 0.1, 0.25, 1)
372
+ const doubleTapGesture = useMemo(() => Gesture.Tap().enabled(enableDoubleTapZoom && Platform.OS !== 'web').numberOfTaps(2).onEnd(event => {
373
+ applyTapZoomAtPoint({
374
+ x: event.x,
375
+ y: event.y,
376
+ width,
377
+ height,
378
+ maxZoomScale,
379
+ scale,
380
+ translateX,
381
+ translateY
427
382
  });
428
- }), [scale, enableDoubleTapZoom, maxZoomScale, translateX, translateY, width, height]);
383
+ }), [enableDoubleTapZoom, height, maxZoomScale, scale, translateX, translateY, width]);
429
384
  const zoomGesture = useMemo(() => Gesture.Race(zoomPinchGesture, Gesture.Exclusive(zoomPanGesture, doubleTapGesture)), [zoomPinchGesture, zoomPanGesture, doubleTapGesture]);
430
385
  const animatedStyle = useAnimatedStyle(() => ({
431
386
  opacity: triggerOpacity.value,
@@ -460,9 +415,33 @@ export const useGestureViewer = ({
460
415
  const nativeScrollGesture = useMemo(() => {
461
416
  return Gesture.Native().requireExternalGestureToFail(dismissGestureRef);
462
417
  }, []);
463
- const onScrollBeginDrag = useCallback(() => {
464
- manager?.handleScrollBeginDrag();
465
- }, [manager]);
418
+ const {
419
+ onMomentumScrollEnd,
420
+ onScroll,
421
+ onScrollBeginDrag,
422
+ onWebDoubleClick
423
+ } = useGestureViewerPaging({
424
+ adjustedInitialIndex,
425
+ autoPlay,
426
+ autoPlayInterval,
427
+ currentIndex,
428
+ dataLength,
429
+ enableDoubleTapZoom,
430
+ enableHorizontalSwipe,
431
+ enableLoop,
432
+ height,
433
+ isRotated,
434
+ isZoomed,
435
+ itemSpacing,
436
+ manager,
437
+ maxZoomScale,
438
+ scale,
439
+ scrollTo,
440
+ syncCurrentIndex,
441
+ translateX,
442
+ translateY,
443
+ width
444
+ });
466
445
  return {
467
446
  animatedStyle,
468
447
  backdropStyle,
@@ -474,7 +453,9 @@ export const useGestureViewer = ({
474
453
  isZoomed,
475
454
  listRef,
476
455
  nativeScrollGesture,
456
+ onWebDoubleClick,
477
457
  onMomentumScrollEnd,
458
+ onScroll,
478
459
  onScrollBeginDrag,
479
460
  zoomGesture
480
461
  };