react-native-gesture-image-viewer 2.0.0-beta.7 → 2.0.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.
@@ -16,6 +16,7 @@ export function GestureViewer({
16
16
  renderContainer,
17
17
  ListComponent,
18
18
  width: customWidth,
19
+ height: customHeight,
19
20
  listProps,
20
21
  backdropStyle: backdropStyleProps,
21
22
  containerStyle,
@@ -31,7 +32,8 @@ export function GestureViewer({
31
32
  width: screenWidth,
32
33
  height: screenHeight
33
34
  } = useWindowDimensions();
34
- const width = enableSnapMode ? customWidth || screenWidth : screenWidth;
35
+ const width = customWidth || screenWidth;
36
+ const height = customHeight || screenHeight;
35
37
  const loopData = useMemo(() => createLoopData(dataRef, enableLoop), [enableLoop]);
36
38
  const isScrollView = isScrollViewLike(Component);
37
39
  const {
@@ -49,9 +51,9 @@ export function GestureViewer({
49
51
  id,
50
52
  data,
51
53
  width,
54
+ height,
52
55
  initialIndex,
53
56
  itemSpacing,
54
- enableSnapMode,
55
57
  enableLoop,
56
58
  ...props
57
59
  });
@@ -68,12 +70,12 @@ export function GestureViewer({
68
70
  return /*#__PURE__*/_jsx(View, {
69
71
  style: [{
70
72
  width,
71
- height: screenHeight,
73
+ height,
72
74
  marginHorizontal: itemSpacing / 2
73
75
  }, styles.item],
74
76
  children: renderItemProp(item, index)
75
77
  }, isScrollView ? keyExtractor(item, index) : undefined);
76
- }, [width, itemSpacing, renderItemProp, keyExtractor, isScrollView, screenHeight]);
78
+ }, [width, itemSpacing, renderItemProp, keyExtractor, isScrollView, height]);
77
79
  const getItemLayout = useCallback((_, index) => ({
78
80
  length: width + itemSpacing,
79
81
  offset: (width + itemSpacing) * index,
@@ -112,7 +114,10 @@ export function GestureViewer({
112
114
  children: /*#__PURE__*/_jsx(GestureDetector, {
113
115
  gesture: gesture,
114
116
  children: /*#__PURE__*/_jsxs(View, {
115
- style: [styles.container, containerStyle],
117
+ style: [{
118
+ width,
119
+ height
120
+ }, containerStyle],
116
121
  children: [/*#__PURE__*/_jsx(Animated.View, {
117
122
  style: [styles.background, backdropStyleProps, backdropStyle]
118
123
  }), /*#__PURE__*/_jsx(Animated.View, {
@@ -162,9 +167,6 @@ export function GestureViewer({
162
167
  return renderContainer ? renderContainer(listComponent, control) : listComponent;
163
168
  }
164
169
  const styles = StyleSheet.create({
165
- container: {
166
- flex: 1
167
- },
168
170
  content: {
169
171
  flex: 1,
170
172
  width: '100%',
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useMemo","useRef","Platform","StyleSheet","useWindowDimensions","View","Gesture","GestureDetector","GestureHandlerRootView","Animated","registry","useGestureViewer","createLoopData","isFlashListLike","isFlatListLike","isScrollViewLike","WebPagingFixStyle","jsx","_jsx","jsxs","_jsxs","GestureViewer","id","data","renderItem","renderItemProp","renderContainer","ListComponent","width","customWidth","listProps","backdropStyle","backdropStyleProps","containerStyle","initialIndex","itemSpacing","enableSnapMode","enableLoop","props","Component","dataRef","screenWidth","height","screenHeight","loopData","isScrollView","listRef","isZoomed","isRotated","dismissGesture","zoomGesture","onMomentumScrollEnd","onScrollBeginDrag","animatedStyle","handleDismiss","keyExtractor","item","index","style","marginHorizontal","styles","children","undefined","getItemLayout","_","length","offset","gesture","Race","current","createManager","deleteManager","commonProps","horizontal","scrollEnabled","showsHorizontalScrollIndicator","snapToInterval","snapToAlignment","decelerationRate","pagingEnabled","scrollEventThrottle","removeClippedSubviews","control","dismiss","listComponent","container","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,SAASC,QAAQ,EAAyCC,UAAU,EAAEC,mBAAmB,EAAEC,IAAI,QAAQ,cAAc;AACrH,SAASC,OAAO,EAAEC,eAAe,EAAEC,sBAAsB,QAAQ,8BAA8B;AAC/F,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,QAAQ,QAAQ,4BAAyB;AAElD,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,cAAc,EAAEC,eAAe,EAAEC,cAAc,EAAEC,gBAAgB,QAAQ,YAAS;AAC3F,OAAOC,iBAAiB,MAAM,wBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEpD,OAAO,SAASC,aAAaA,CAAkC;EAC7DC,EAAE,GAAG,SAAS;EACdC,IAAI;EACJC,UAAU,EAAEC,cAAc;EAC1BC,eAAe;EACfC,aAAa;EACbC,KAAK,EAAEC,WAAW;EAClBC,SAAS;EACTC,aAAa,EAAEC,kBAAkB;EACjCC,cAAc;EACdC,YAAY,GAAG,CAAC;EAChBC,WAAW,GAAG,CAAC;EACfC,cAAc,GAAG,KAAK;EACtBC,UAAU,GAAG,KAAK;EAClB,GAAGC;AACsB,CAAC,EAAE;EAC5B,MAAMC,SAAS,GAAGZ,aAAyC;EAE3D,MAAMa,OAAO,GAAGvC,MAAM,CAACsB,IAAI,CAAC;EAE5B,MAAM;IAAEK,KAAK,EAAEa,WAAW;IAAEC,MAAM,EAAEC;EAAa,CAAC,GAAGvC,mBAAmB,CAAC,CAAC;EAE1E,MAAMwB,KAAK,GAAGQ,cAAc,GAAGP,WAAW,IAAIY,WAAW,GAAGA,WAAW;EAEvE,MAAMG,QAAQ,GAAG5C,OAAO,CAAC,MAAMY,cAAc,CAAC4B,OAAO,EAAEH,UAAU,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAEjF,MAAMQ,YAAY,GAAG9B,gBAAgB,CAACwB,SAAS,CAAC;EAEhD,MAAM;IACJO,OAAO;IACPC,QAAQ;IACRC,SAAS;IACTC,cAAc;IACdC,WAAW;IACXC,mBAAmB;IACnBC,iBAAiB;IACjBC,aAAa;IACbtB,aAAa;IACbuB;EACF,CAAC,GAAG3C,gBAAgB,CAAC;IACnBW,EAAE;IACFC,IAAI;IACJK,KAAK;IACLM,YAAY;IACZC,WAAW;IACXC,cAAc;IACdC,UAAU;IACV,GAAGC;EACL,CAAC,CAAC;EAEF,MAAMiB,YAAY,GAAGzD,WAAW,CAC9B,CAAC0D,IAAO,EAAEC,KAAa,KAAK;IAC1B,IAAIpB,UAAU,EAAE;MACd,OAAO,OAAOmB,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,CAACpB,UAAU,CACb,CAAC;EAED,MAAMb,UAAU,GAAG1B,WAAW,CAC5B,CAAC;IAAE0D,IAAI;IAAEC;EAAkC,CAAC,KAAK;IAC/C,oBACEvC,IAAA,CAACb,IAAI;MAEHqD,KAAK,EAAE,CACL;QACE9B,KAAK;QACLc,MAAM,EAAEC,YAAY;QACpBgB,gBAAgB,EAAExB,WAAW,GAAG;MAClC,CAAC,EACDyB,MAAM,CAACJ,IAAI,CACX;MAAAK,QAAA,EAEDpC,cAAc,CAAC+B,IAAI,EAAEC,KAAK;IAAC,GAVvBZ,YAAY,GAAGU,YAAY,CAACC,IAAI,EAAEC,KAAK,CAAC,GAAGK,SAW5C,CAAC;EAEX,CAAC,EACD,CAAClC,KAAK,EAAEO,WAAW,EAAEV,cAAc,EAAE8B,YAAY,EAAEV,YAAY,EAAEF,YAAY,CAC/E,CAAC;EAED,MAAMoB,aAAa,GAAGjE,WAAW,CAC/B,CAACkE,CAAkC,EAAEP,KAAa,MAAM;IACtDQ,MAAM,EAAErC,KAAK,GAAGO,WAAW;IAC3B+B,MAAM,EAAE,CAACtC,KAAK,GAAGO,WAAW,IAAIsB,KAAK;IACrCA;EACF,CAAC,CAAC,EACF,CAAC7B,KAAK,EAAEO,WAAW,CACrB,CAAC;EAED,MAAMgC,OAAO,GAAGnE,OAAO,CAAC,MAAM;IAC5B,OAAOM,OAAO,CAAC8D,IAAI,CAACnB,cAAc,EAAEC,WAAW,CAAC;EAClD,CAAC,EAAE,CAACA,WAAW,EAAED,cAAc,CAAC,CAAC;EAEjClD,SAAS,CAAC,MAAM;IACdyC,OAAO,CAAC6B,OAAO,GAAG9C,IAAI;EACxB,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC;EAEVxB,SAAS,CAAC,MAAM;IACdW,QAAQ,CAAC4D,aAAa,CAAChD,EAAE,CAAC;IAE1B,OAAO,MAAMZ,QAAQ,CAAC6D,aAAa,CAACjD,EAAE,CAAC;EACzC,CAAC,EAAE,CAACA,EAAE,CAAC,CAAC;EAER,MAAMkD,WAAW,GAAGxE,OAAO,CACzB,OACG;IACCyE,UAAU,EAAE,IAAI;IAChBC,aAAa,EAAE,CAAC3B,QAAQ,IAAI,CAACC,SAAS;IACtC2B,8BAA8B,EAAE,KAAK;IACrCxB,mBAAmB,EAAEA,mBAAmB;IACxCC,iBAAiB;IACjB,IAAIhB,cAAc,GACd;MACEwC,cAAc,EAAEhD,KAAK,GAAGO,WAAW;MACnC0C,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,CAACrD,KAAK,EAAEO,WAAW,EAAEY,QAAQ,EAAEC,SAAS,EAAEG,mBAAmB,EAAEC,iBAAiB,EAAEhB,cAAc,CAClG,CAAC;EAED,MAAM8C,OAAO,GAAGlF,OAAO,CAAC,OAAO;IAAEmF,OAAO,EAAE7B;EAAc,CAAC,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;EAE5E,MAAM8B,aAAa,gBACjBlE,IAAA,CAACV,sBAAsB;IAAAqD,QAAA,eACrB3C,IAAA,CAACX,eAAe;MAAC4D,OAAO,EAAEA,OAAQ;MAAAN,QAAA,eAChCzC,KAAA,CAACf,IAAI;QAACqD,KAAK,EAAE,CAACE,MAAM,CAACyB,SAAS,EAAEpD,cAAc,CAAE;QAAA4B,QAAA,gBAC9C3C,IAAA,CAACT,QAAQ,CAACJ,IAAI;UAACqD,KAAK,EAAE,CAACE,MAAM,CAAC0B,UAAU,EAAEtD,kBAAkB,EAAED,aAAa;QAAE,CAAE,CAAC,eAChFb,IAAA,CAACT,QAAQ,CAACJ,IAAI;UACZqD,KAAK,EAAE,CAACE,MAAM,CAAC2B,OAAO,EAAElC,aAAa,CAAE;UAAA,IAClCnD,QAAQ,CAACsF,EAAE,KAAK,KAAK,IACxB3E,eAAe,CAAC0B,SAAS,CAAC,IAAI;YAAEkD,OAAO,EAAE;cAAE,+BAA+B,EAAE;YAAK;UAAE,CAAC;UAAA5B,QAAA,EAErFhB,YAAY,gBACX3B,IAAA,CAACqB,SAAS;YAACmD,GAAG,EAAE5C,OAAQ;YAAA,GAAK0B,WAAW;YAAA,GAAM1C,SAAS;YAAA+B,QAAA,EACpDjB,QAAQ,CAAC+C,GAAG,CAAC,CAACnC,IAAI,EAAEC,KAAK,KAAKjC,UAAU,CAAC;cAAEgC,IAAI;cAAEC;YAAM,CAAC,CAAC;UAAC,CAClD,CAAC,GAEZ3C,cAAc,CAACyB,SAAS,CAAC,iBACvBrB,IAAA,CAACqB,SAAS;YACRmD,GAAG,EAAE5C,OAAQ;YAAA,GACT0B,WAAW;YACfjD,IAAI,EAAEqB,QAAS;YACfpB,UAAU,EAAEA,UAAW;YACvBoE,kBAAkB,EAAEvD,UAAU,IAAId,IAAI,CAAC0C,MAAM,GAAG,CAAC,GAAG/B,YAAY,GAAG,CAAC,GAAGA,YAAa;YACpFqB,YAAY,EAAEA,YAAa;YAAA,IACtB1C,eAAe,CAAC0B,SAAS,CAAC;YAC3B;YACA;cAAEsD,iBAAiB,EAAEjE,KAAK,GAAGO;YAAY,CAAC,GAC1C;cAAE2D,UAAU,EAAE,CAAC;cAAEC,mBAAmB,EAAE,CAAC;cAAEhC;YAAc,CAAC;YAAA,IAEvD7D,QAAQ,CAACsF,EAAE,KAAK,KAAK,IACxB1E,cAAc,CAACyB,SAAS,CAAC,IAAI;cAAEkD,OAAO,EAAE;gBAAE,8BAA8B,EAAE;cAAK;YAAE,CAAC;YAAA,GAChF3D;UAAS,CACd;QAEJ,CACY,CAAC,eAChBZ,IAAA,CAACF,iBAAiB;UAACuB,SAAS,EAAEA;QAAU,CAAE,CAAC;MAAA,CACvC;IAAC,CACQ;EAAC,CACI,CACzB;EAED,OAAOb,eAAe,GAAGA,eAAe,CAAC0D,aAAa,EAAEF,OAAO,CAAC,GAAGE,aAAa;AAClF;AAEA,MAAMxB,MAAM,GAAGzD,UAAU,CAAC6F,MAAM,CAAC;EAC/BX,SAAS,EAAE;IACTY,IAAI,EAAE;EACR,CAAC;EACDV,OAAO,EAAE;IACPU,IAAI,EAAE,CAAC;IACPrE,KAAK,EAAE,MAAM;IACbc,MAAM,EAAE;EACV,CAAC;EACDc,IAAI,EAAE;IACJ0C,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","WebPagingFixStyle","jsx","_jsx","jsxs","_jsxs","GestureViewer","id","data","renderItem","renderItemProp","renderContainer","ListComponent","width","customWidth","height","customHeight","listProps","backdropStyle","backdropStyleProps","containerStyle","initialIndex","itemSpacing","enableSnapMode","enableLoop","props","Component","dataRef","screenWidth","screenHeight","loopData","isScrollView","listRef","isZoomed","isRotated","dismissGesture","zoomGesture","onMomentumScrollEnd","onScrollBeginDrag","animatedStyle","handleDismiss","keyExtractor","item","index","style","marginHorizontal","styles","children","undefined","getItemLayout","_","length","offset","gesture","Race","current","createManager","deleteManager","commonProps","horizontal","scrollEnabled","showsHorizontalScrollIndicator","snapToInterval","snapToAlignment","decelerationRate","pagingEnabled","scrollEventThrottle","removeClippedSubviews","control","dismiss","listComponent","background","content","OS","dataSet","ref","map","initialScrollIndex","estimatedItemSize","windowSize","maxToRenderPerBatch","create","flex","justifyContent","alignItems","position","top","left","right","bottom","backgroundColor"],"sourceRoot":"../../src","sources":["GestureViewer.tsx"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAC/D,SAASC,QAAQ,EAAwBC,UAAU,EAAEC,mBAAmB,EAAEC,IAAI,QAAQ,cAAc;AACpG,SAASC,OAAO,EAAEC,eAAe,EAAEC,sBAAsB,QAAQ,8BAA8B;AAC/F,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,QAAQ,QAAQ,4BAAyB;AAElD,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,cAAc,EAAEC,eAAe,EAAEC,cAAc,EAAEC,gBAAgB,QAAQ,YAAS;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,cAAc;IACdC,WAAW;IACXC,mBAAmB;IACnBC,iBAAiB;IACjBC,aAAa;IACbrB,aAAa;IACbsB;EACF,CAAC,GAAG5C,gBAAgB,CAAC;IACnBW,EAAE;IACFC,IAAI;IACJK,KAAK;IACLE,MAAM;IACNM,YAAY;IACZC,WAAW;IACXE,UAAU;IACV,GAAGC;EACL,CAAC,CAAC;EAEF,MAAMgB,YAAY,GAAG1D,WAAW,CAC9B,CAAC2D,IAAW,EAAEC,KAAa,KAAK;IAC9B,IAAInB,UAAU,EAAE;MACd,OAAO,OAAOkB,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,CAACnB,UAAU,CACb,CAAC;EAED,MAAMf,UAAU,GAAG1B,WAAW,CAC5B,CAAC;IAAE2D,IAAI;IAAEC;EAAsC,CAAC,KAAK;IACnD,oBACExC,IAAA,CAACb,IAAI;MAEHsD,KAAK,EAAE,CACL;QACE/B,KAAK;QACLE,MAAM;QACN8B,gBAAgB,EAAEvB,WAAW,GAAG;MAClC,CAAC,EACDwB,MAAM,CAACJ,IAAI,CACX;MAAAK,QAAA,EAEDrC,cAAc,CAACgC,IAAI,EAAEC,KAAK;IAAC,GAVvBZ,YAAY,GAAGU,YAAY,CAACC,IAAI,EAAEC,KAAK,CAAC,GAAGK,SAW5C,CAAC;EAEX,CAAC,EACD,CAACnC,KAAK,EAAES,WAAW,EAAEZ,cAAc,EAAE+B,YAAY,EAAEV,YAAY,EAAEhB,MAAM,CACzE,CAAC;EAED,MAAMkC,aAAa,GAAGlE,WAAW,CAC/B,CAACmE,CAAsC,EAAEP,KAAa,MAAM;IAC1DQ,MAAM,EAAEtC,KAAK,GAAGS,WAAW;IAC3B8B,MAAM,EAAE,CAACvC,KAAK,GAAGS,WAAW,IAAIqB,KAAK;IACrCA;EACF,CAAC,CAAC,EACF,CAAC9B,KAAK,EAAES,WAAW,CACrB,CAAC;EAED,MAAM+B,OAAO,GAAGpE,OAAO,CAAC,MAAM;IAC5B,OAAOM,OAAO,CAAC+D,IAAI,CAACnB,cAAc,EAAEC,WAAW,CAAC;EAClD,CAAC,EAAE,CAACA,WAAW,EAAED,cAAc,CAAC,CAAC;EAEjCnD,SAAS,CAAC,MAAM;IACd2C,OAAO,CAAC4B,OAAO,GAAG/C,IAAI;EACxB,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC;EAEVxB,SAAS,CAAC,MAAM;IACdW,QAAQ,CAAC6D,aAAa,CAACjD,EAAE,CAAC;IAE1B,OAAO,MAAMZ,QAAQ,CAAC8D,aAAa,CAAClD,EAAE,CAAC;EACzC,CAAC,EAAE,CAACA,EAAE,CAAC,CAAC;EAER,MAAMmD,WAAW,GAAGzE,OAAO,CACzB,OACG;IACC0E,UAAU,EAAE,IAAI;IAChBC,aAAa,EAAE,CAAC3B,QAAQ,IAAI,CAACC,SAAS;IACtC2B,8BAA8B,EAAE,KAAK;IACrCxB,mBAAmB,EAAEA,mBAAmB;IACxCC,iBAAiB;IACjB,IAAIf,cAAc,GACd;MACEuC,cAAc,EAAEjD,KAAK,GAAGS,WAAW;MACnCyC,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,CAACtD,KAAK,EAAES,WAAW,EAAEW,QAAQ,EAAEC,SAAS,EAAEG,mBAAmB,EAAEC,iBAAiB,EAAEf,cAAc,CAClG,CAAC;EAED,MAAM6C,OAAO,GAAGnF,OAAO,CAAC,OAAO;IAAEoF,OAAO,EAAE7B;EAAc,CAAC,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;EAE5E,MAAM8B,aAAa,gBACjBnE,IAAA,CAACV,sBAAsB;IAAAsD,QAAA,eACrB5C,IAAA,CAACX,eAAe;MAAC6D,OAAO,EAAEA,OAAQ;MAAAN,QAAA,eAChC1C,KAAA,CAACf,IAAI;QAACsD,KAAK,EAAE,CAAC;UAAE/B,KAAK;UAAEE;QAAO,CAAC,EAAEK,cAAc,CAAE;QAAA2B,QAAA,gBAC/C5C,IAAA,CAACT,QAAQ,CAACJ,IAAI;UAACsD,KAAK,EAAE,CAACE,MAAM,CAACyB,UAAU,EAAEpD,kBAAkB,EAAED,aAAa;QAAE,CAAE,CAAC,eAChFf,IAAA,CAACT,QAAQ,CAACJ,IAAI;UACZsD,KAAK,EAAE,CAACE,MAAM,CAAC0B,OAAO,EAAEjC,aAAa,CAAE;UAAA,IAClCpD,QAAQ,CAACsF,EAAE,KAAK,KAAK,IACxB3E,eAAe,CAAC4B,SAAS,CAAC,IAAI;YAAEgD,OAAO,EAAE;cAAE,+BAA+B,EAAE;YAAK;UAAE,CAAC;UAAA3B,QAAA,EAErFhB,YAAY,gBACX5B,IAAA,CAACuB,SAAS;YAACiD,GAAG,EAAE3C,OAAQ;YAAA,GAAK0B,WAAW;YAAA,GAAMzC,SAAS;YAAA8B,QAAA,EACpDjB,QAAQ,CAAC8C,GAAG,CAAC,CAAClC,IAAI,EAAEC,KAAK,KAAKlC,UAAU,CAAC;cAAEiC,IAAI;cAAEC;YAAM,CAAC,CAAC;UAAC,CAClD,CAAC,GAEZ5C,cAAc,CAAC2B,SAAS,CAAC,iBACvBvB,IAAA,CAACuB,SAAS;YACRiD,GAAG,EAAE3C,OAAQ;YAAA,GACT0B,WAAW;YACflD,IAAI,EAAEsB,QAAS;YACfrB,UAAU,EAAEA,UAAW;YACvBoE,kBAAkB,EAAErD,UAAU,IAAIhB,IAAI,CAAC2C,MAAM,GAAG,CAAC,GAAG9B,YAAY,GAAG,CAAC,GAAGA,YAAa;YACpFoB,YAAY,EAAEA,YAAa;YAAA,IACtB3C,eAAe,CAAC4B,SAAS,CAAC;YAC3B;YACA;cAAEoD,iBAAiB,EAAEjE,KAAK,GAAGS;YAAY,CAAC,GAC1C;cAAEyD,UAAU,EAAE,CAAC;cAAEC,mBAAmB,EAAE,CAAC;cAAE/B;YAAc,CAAC;YAAA,IAEvD9D,QAAQ,CAACsF,EAAE,KAAK,KAAK,IACxB1E,cAAc,CAAC2B,SAAS,CAAC,IAAI;cAAEgD,OAAO,EAAE;gBAAE,8BAA8B,EAAE;cAAK;YAAE,CAAC;YAAA,GAChFzD;UAAS,CACd;QAEJ,CACY,CAAC,eAChBd,IAAA,CAACF,iBAAiB;UAACyB,SAAS,EAAEA;QAAU,CAAE,CAAC;MAAA,CACvC;IAAC,CACQ;EAAC,CACI,CACzB;EAED,OAAOf,eAAe,GAAGA,eAAe,CAAC2D,aAAa,EAAEF,OAAO,CAAC,GAAGE,aAAa;AAClF;AAEA,MAAMxB,MAAM,GAAG1D,UAAU,CAAC6F,MAAM,CAAC;EAC/BT,OAAO,EAAE;IACPU,IAAI,EAAE,CAAC;IACPrE,KAAK,EAAE,MAAM;IACbE,MAAM,EAAE;EACV,CAAC;EACD2B,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":[]}
@@ -20,20 +20,24 @@ export const useGestureViewer = ({
20
20
  enableLoop = false,
21
21
  maxZoomScale = 2,
22
22
  itemSpacing = 0,
23
- enableSnapMode = false,
23
+ height: customHeight,
24
24
  id = 'default',
25
25
  onDismissStart,
26
- triggerAnimation
26
+ triggerAnimation,
27
+ autoPlay = false,
28
+ autoPlayInterval = 3000
27
29
  }) => {
28
30
  const {
29
31
  width: screenWidth,
30
32
  height: screenHeight
31
33
  } = useWindowDimensions();
32
- const width = enableSnapMode ? customWidth || screenWidth : screenWidth;
34
+ const width = customWidth || screenWidth;
35
+ const height = customHeight || screenHeight;
33
36
  const [isZoomed, setIsZoomed] = useState(false);
34
37
  const [isRotated, setIsRotated] = useState(false);
35
38
  const [shouldStartTriggerAnimation, setShouldStartTriggerAnimation] = useState(false);
36
39
  const [manager, setManager] = useState(null);
40
+ const [currentIndex, setCurrentIndex] = useState(initialIndex);
37
41
  const listRef = useRef(null);
38
42
  const triggerRectRef = useRef(null);
39
43
  const onAnimationCompleteRef = useRef(triggerAnimation?.onAnimationComplete);
@@ -64,15 +68,15 @@ export const useGestureViewer = ({
64
68
  };
65
69
  }, [dismiss?.enabled, dismiss?.threshold, dismiss?.resistance, dismiss?.fadeBackdrop]);
66
70
  const adjustedInitialIndex = useMemo(() => {
67
- if (enableLoop && data.length > 1) {
71
+ if (enableLoop && dataLength > 1) {
68
72
  return initialIndex + 1;
69
73
  }
70
74
  return initialIndex;
71
- }, [enableLoop, data.length, initialIndex]);
75
+ }, [enableLoop, dataLength, initialIndex]);
72
76
  const constrainTranslation = useMemo(() => createBoundsConstraint({
73
77
  width,
74
- height: screenHeight
75
- }), [width, screenHeight]);
78
+ height
79
+ }), [width, height]);
76
80
  const scrollTo = useCallback((index, animated) => {
77
81
  const scrollAction = createScrollAction(listRef.current, width + itemSpacing);
78
82
  return scrollAction.scrollTo(index, animated);
@@ -103,8 +107,15 @@ export const useGestureViewer = ({
103
107
  runOnJS(setIsRotated)(currentRotation % 360 !== 0);
104
108
  });
105
109
  useEffect(() => {
106
- const unsubscribe = registry.subscribeToManager(id, setManager);
107
- return unsubscribe;
110
+ let unsubscribe;
111
+ const unsubscribeFromRegistry = registry.subscribeToManager(id, managerInstance => {
112
+ setManager(managerInstance);
113
+ unsubscribe = managerInstance?.subscribe(state => setCurrentIndex(state.currentIndex));
114
+ });
115
+ return () => {
116
+ unsubscribeFromRegistry();
117
+ unsubscribe?.();
118
+ };
108
119
  }, [id]);
109
120
  useEffect(() => {
110
121
  if (!manager) {
@@ -114,12 +125,12 @@ export const useGestureViewer = ({
114
125
  manager.setEnableHorizontalSwipe(enableHorizontalSwipe);
115
126
  manager.setCurrentIndex(initialIndex);
116
127
  manager.setWidth(width + itemSpacing);
117
- manager.setHeight(screenHeight);
128
+ manager.setHeight(height);
118
129
  manager.setZoomSharedValues(scale, translateX, translateY, maxZoomScale);
119
130
  manager.setRotation(rotation);
120
131
  manager.setEnableLoop(enableLoop);
121
132
  manager.notifyStateChange();
122
- }, [dataLength, enableHorizontalSwipe, initialIndex, manager, width, itemSpacing, maxZoomScale, enableLoop, scale, screenHeight, translateX, translateY, rotation]);
133
+ }, [dataLength, enableHorizontalSwipe, initialIndex, manager, width, itemSpacing, maxZoomScale, enableLoop, scale, height, translateX, translateY, rotation]);
123
134
  useEffect(() => {
124
135
  if (!manager || !listRef.current) {
125
136
  return;
@@ -143,14 +154,30 @@ export const useGestureViewer = ({
143
154
  runAfterInteractions?.cancel();
144
155
  };
145
156
  }, [adjustedInitialIndex, translateY, backdropOpacity, translateX, scale, startScale, rotation, scrollTo]);
157
+ useEffect(() => {
158
+ if (!autoPlay || !manager || dataLength <= 1 || isZoomed || isRotated || !enableLoop && currentIndex === dataLength - 1) {
159
+ return;
160
+ }
161
+ const intervalMs = Math.max(250, Math.floor(autoPlayInterval || 0));
162
+ if (!Number.isFinite(intervalMs)) {
163
+ return;
164
+ }
165
+ const interval = setInterval(() => {
166
+ if (isZoomed || isRotated) {
167
+ return;
168
+ }
169
+ manager.goToNext();
170
+ }, intervalMs);
171
+ return () => clearInterval(interval);
172
+ }, [autoPlay, autoPlayInterval, manager, dataLength, currentIndex, enableLoop, isZoomed, isRotated]);
146
173
  useEffect(() => {
147
174
  onAnimationCompleteRef.current = triggerAnimation?.onAnimationComplete;
148
175
  }, [triggerAnimation?.onAnimationComplete]);
149
176
  useEffect(() => {
150
177
  if (shouldStartTriggerAnimation && triggerRectRef.current) {
151
- const startX = triggerRectRef.current.x + triggerRectRef.current.width / 2 - screenWidth / 2;
152
- const startY = triggerRectRef.current.y + triggerRectRef.current.height / 2 - screenHeight / 2;
153
- const initialScaleFromTrigger = Math.min(triggerRectRef.current.width / screenWidth, triggerRectRef.current.height / screenHeight);
178
+ const startX = triggerRectRef.current.x + triggerRectRef.current.width / 2 - width / 2;
179
+ const startY = triggerRectRef.current.y + triggerRectRef.current.height / 2 - height / 2;
180
+ const initialScaleFromTrigger = Math.min(triggerRectRef.current.width / width, triggerRectRef.current.height / height);
154
181
  triggerScale.value = initialScaleFromTrigger;
155
182
  triggerTranslateX.value = startX;
156
183
  triggerTranslateY.value = startY;
@@ -169,7 +196,7 @@ export const useGestureViewer = ({
169
196
  });
170
197
  setShouldStartTriggerAnimation(false);
171
198
  }
172
- }, [shouldStartTriggerAnimation, animationConfig, screenWidth, screenHeight, triggerOpacity, triggerScale, triggerTranslateX, triggerTranslateY, onAnimationComplete]);
199
+ }, [shouldStartTriggerAnimation, animationConfig, width, height, triggerOpacity, triggerScale, triggerTranslateX, triggerTranslateY, onAnimationComplete]);
173
200
  useEffect(() => {
174
201
  const node = registry.getTriggerNode(id);
175
202
  if (node && typeof node.measure === 'function') {
@@ -192,9 +219,9 @@ export const useGestureViewer = ({
192
219
  const handleDismiss = useCallback(() => {
193
220
  onDismissStart?.();
194
221
  if (triggerRectRef.current) {
195
- const endX = triggerRectRef.current.x + triggerRectRef.current.width / 2 - screenWidth / 2;
196
- const endY = triggerRectRef.current.y + triggerRectRef.current.height / 2 - screenHeight / 2;
197
- const endScale = Math.min(triggerRectRef.current.width / screenWidth, triggerRectRef.current.height / screenHeight);
222
+ const endX = triggerRectRef.current.x + triggerRectRef.current.width / 2 - width / 2;
223
+ const endY = triggerRectRef.current.y + triggerRectRef.current.height / 2 - height / 2;
224
+ const endScale = Math.min(triggerRectRef.current.width / width, triggerRectRef.current.height / height);
198
225
  triggerScale.value = withTiming(endScale, animationConfig);
199
226
  triggerTranslateX.value = withTiming(endX, animationConfig);
200
227
  triggerTranslateY.value = withTiming(endY, animationConfig);
@@ -208,7 +235,7 @@ export const useGestureViewer = ({
208
235
  if (onDismiss) {
209
236
  runOnJS(onDismiss)();
210
237
  }
211
- }, [animationConfig, onDismiss, onDismissStart, screenWidth, screenHeight, triggerTranslateX, triggerScale, triggerTranslateY, triggerOpacity]);
238
+ }, [animationConfig, onDismiss, onDismissStart, width, height, triggerTranslateX, triggerScale, triggerTranslateY, triggerOpacity]);
212
239
  const onMomentumScrollEnd = useCallback(event => {
213
240
  if (!enableHorizontalSwipe) {
214
241
  return;
@@ -275,7 +302,7 @@ export const useGestureViewer = ({
275
302
  }
276
303
  const deltaScale = newScale - startScale.value;
277
304
  const centerX = event.focalX - width / 2;
278
- const centerY = event.focalY - screenHeight / 2;
305
+ const centerY = event.focalY - height / 2;
279
306
 
280
307
  // NOTE 새로운 이동값 = 기존 이동값 - (중심점 거리 × 스케일 변화량) / 원래 스케일 (중심점이 화면 중심에서 멀수록, 확대 배율이 클수록 더 많이 이동)
281
308
  const newTranslateX = initialTranslateX.value - centerX * deltaScale / startScale.value;
@@ -330,7 +357,7 @@ export const useGestureViewer = ({
330
357
  translateX.value = withTiming(constrainedTranslateX);
331
358
  translateY.value = withTiming(constrainedTranslateY);
332
359
  });
333
- }, [scale, enablePinchZoom, maxZoomScale, translateX, translateY, startScale, initialTranslateX, initialTranslateY, width, screenHeight, constrainTranslation]);
360
+ }, [scale, enablePinchZoom, maxZoomScale, translateX, translateY, startScale, initialTranslateX, initialTranslateY, width, height, constrainTranslation]);
334
361
  const zoomPanGesture = useMemo(() => {
335
362
  return Gesture.Pan().enabled(enablePanWhenZoomed && isZoomed).activeCursor('grabbing').averageTouches(true).onBegin(() => {
336
363
  initialTranslateX.value = translateX.value;
@@ -357,7 +384,7 @@ export const useGestureViewer = ({
357
384
  const nextScale = scale.value > 1 ? 1 : maxZoomScale;
358
385
  if (nextScale > 1) {
359
386
  const centerX = event.x - width / 2;
360
- const centerY = event.y - screenHeight / 2;
387
+ const centerY = event.y - height / 2;
361
388
 
362
389
  // NOTE 확대로 밀려난 거리만큼 반대로 이동해서 탭 지점을 제자리에 유지
363
390
  translateX.value = withTiming(-centerX * (nextScale - 1), {
@@ -383,7 +410,7 @@ export const useGestureViewer = ({
383
410
  easing: Easing.bezier(0.25, 0.1, 0.25, 1.0)
384
411
  });
385
412
  });
386
- }, [scale, enableDoubleTapZoom, maxZoomScale, translateX, translateY, width, screenHeight]);
413
+ }, [scale, enableDoubleTapZoom, maxZoomScale, translateX, translateY, width, height]);
387
414
  const zoomGesture = useMemo(() => {
388
415
  return Gesture.Race(zoomPinchGesture, Gesture.Exclusive(zoomPanGesture, doubleTapGesture));
389
416
  }, [zoomPinchGesture, zoomPanGesture, doubleTapGesture]);
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","InteractionManager","useWindowDimensions","Gesture","Easing","interpolate","useAnimatedReaction","useAnimatedStyle","useSharedValue","withSpring","withTiming","runOnJS","registry","createBoundsConstraint","createScrollAction","getLoopAdjustedIndex","useGestureViewer","data","initialIndex","onDismiss","width","customWidth","dismiss","enableDoubleTapZoom","enablePinchZoom","enableHorizontalSwipe","enablePanWhenZoomed","enableLoop","maxZoomScale","itemSpacing","enableSnapMode","id","onDismissStart","triggerAnimation","screenWidth","height","screenHeight","isZoomed","setIsZoomed","isRotated","setIsRotated","shouldStartTriggerAnimation","setShouldStartTriggerAnimation","manager","setManager","listRef","triggerRectRef","onAnimationCompleteRef","onAnimationComplete","initialTranslateY","initialTranslateX","startScale","translateY","translateX","scale","backdropOpacity","rotation","triggerScale","triggerTranslateX","triggerTranslateY","triggerOpacity","dataLength","length","animationConfig","duration","easing","bezier","reduceMotion","dismissOptions","enabled","threshold","resistance","fadeBackdrop","adjustedInitialIndex","constrainTranslation","scrollTo","index","animated","scrollAction","current","emitZoomChange","currentScale","prevScale","emitRotationChange","currentRotation","prevRotation","value","previousScale","previousRotation","unsubscribe","subscribeToManager","setDataLength","setEnableHorizontalSwipe","setCurrentIndex","setWidth","setHeight","setZoomSharedValues","setRotation","setEnableLoop","notifyStateChange","setListRef","runAfterInteractions","cancel","startX","x","startY","y","initialScaleFromTrigger","Math","min","finished","node","getTriggerNode","measure","_x","_y","pageX","pageY","clearTriggerNode","handleDismiss","endX","endY","endScale","onMomentumScrollEnd","event","contentOffset","nativeEvent","scrollIndex","round","isLoopHandled","handleMomentumScrollEnd","realIndex","needsJump","jumpToIndex","undefined","currentIndex","getState","dismissGesture","canDismiss","Pan","minDistance","averageTouches","activeCursor","activeOffsetY","failOffsetX","onUpdate","translationY","onEnd","stiffness","damping","mass","overshootClamping","energyThreshold","zoomPinchGesture","Pinch","onBegin","newScale","deltaScale","centerX","focalX","centerY","focalY","newTranslateX","newTranslateY","constrainedTranslateX","constrainedTranslateY","zoomPanGesture","translationX","doubleTapGesture","Tap","numberOfTaps","nextScale","zoomGesture","Race","Exclusive","animatedStyle","opacity","transform","rotate","backdropStyle","baseOpacity","dismissOpacity","onScrollBeginDrag","handleScrollBeginDrag"],"sourceRoot":"../../src","sources":["useGestureViewer.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","InteractionManager","useWindowDimensions","Gesture","Easing","interpolate","useAnimatedReaction","useAnimatedStyle","useSharedValue","withSpring","withTiming","runOnJS","registry","createBoundsConstraint","createScrollAction","getLoopAdjustedIndex","useGestureViewer","data","initialIndex","onDismiss","width","customWidth","dismiss","enableDoubleTapZoom","enablePinchZoom","enableHorizontalSwipe","enablePanWhenZoomed","enableLoop","maxZoomScale","itemSpacing","height","customHeight","id","onDismissStart","triggerAnimation","autoPlay","autoPlayInterval","screenWidth","screenHeight","isZoomed","setIsZoomed","isRotated","setIsRotated","shouldStartTriggerAnimation","setShouldStartTriggerAnimation","manager","setManager","currentIndex","setCurrentIndex","listRef","triggerRectRef","onAnimationCompleteRef","onAnimationComplete","initialTranslateY","initialTranslateX","startScale","translateY","translateX","scale","backdropOpacity","rotation","triggerScale","triggerTranslateX","triggerTranslateY","triggerOpacity","dataLength","length","animationConfig","duration","easing","bezier","reduceMotion","dismissOptions","enabled","threshold","resistance","fadeBackdrop","adjustedInitialIndex","constrainTranslation","scrollTo","index","animated","scrollAction","current","emitZoomChange","currentScale","prevScale","emitRotationChange","currentRotation","prevRotation","value","previousScale","previousRotation","unsubscribe","unsubscribeFromRegistry","subscribeToManager","managerInstance","subscribe","state","setDataLength","setEnableHorizontalSwipe","setWidth","setHeight","setZoomSharedValues","setRotation","setEnableLoop","notifyStateChange","setListRef","runAfterInteractions","cancel","intervalMs","Math","max","floor","Number","isFinite","interval","setInterval","goToNext","clearInterval","startX","x","startY","y","initialScaleFromTrigger","min","finished","node","getTriggerNode","measure","_x","_y","pageX","pageY","clearTriggerNode","handleDismiss","endX","endY","endScale","onMomentumScrollEnd","event","contentOffset","nativeEvent","scrollIndex","round","isLoopHandled","handleMomentumScrollEnd","realIndex","needsJump","jumpToIndex","undefined","getState","dismissGesture","canDismiss","Pan","minDistance","averageTouches","activeCursor","activeOffsetY","failOffsetX","onUpdate","translationY","onEnd","stiffness","damping","mass","overshootClamping","energyThreshold","zoomPinchGesture","Pinch","onBegin","newScale","deltaScale","centerX","focalX","centerY","focalY","newTranslateX","newTranslateY","constrainedTranslateX","constrainedTranslateY","zoomPanGesture","translationX","doubleTapGesture","Tap","numberOfTaps","nextScale","zoomGesture","Race","Exclusive","animatedStyle","opacity","transform","rotate","backdropStyle","baseOpacity","dismissOpacity","onScrollBeginDrag","handleScrollBeginDrag"],"sourceRoot":"../../src","sources":["useGestureViewer.ts"],"mappings":"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","ignoreList":[]}
@@ -20,7 +20,7 @@ export const isFlashListLike = component => {
20
20
  } catch {
21
21
  // do nothing
22
22
  }
23
- return component?.name === 'FlashList';
23
+ return component?.displayName === 'FlashList' || component?.name === 'FlashList';
24
24
  };
25
25
  export const createBoundsConstraint = ({
26
26
  width,
@@ -1 +1 @@
1
- {"version":3,"names":["FlatList","RNFlatList","ScrollView","RNScrollView","GestureFlatList","GestureScrollView","isScrollViewLike","component","isFlatListLike","isFlashListLike","FlashList","require","name","createBoundsConstraint","width","height","scale","translateX","translateY","maxTranslateX","maxTranslateY","Math","max","min","createLoopData","dataRef","enableLoop","data","current","length","lastItem","firstItem","undefined","getLoopAdjustedIndex","scrollIndex","originalDataLength","realIndex","needsJump","jumpToIndex","createScrollAction","listRef","scrollTo","index","animated","scrollToIndex","x"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["FlatList","RNFlatList","ScrollView","RNScrollView","GestureFlatList","GestureScrollView","isScrollViewLike","component","isFlatListLike","isFlashListLike","FlashList","require","displayName","name","createBoundsConstraint","width","height","scale","translateX","translateY","maxTranslateX","maxTranslateY","Math","max","min","createLoopData","dataRef","enableLoop","data","current","length","lastItem","firstItem","undefined","getLoopAdjustedIndex","scrollIndex","originalDataLength","realIndex","needsJump","jumpToIndex","createScrollAction","listRef","scrollTo","index","animated","scrollToIndex","x"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,3 @@
1
- import { type ScrollView } from 'react-native';
2
1
  import type { GestureViewerProps } from './types';
3
- export declare function GestureViewer<T = any, LC = typeof ScrollView>({ id, data, renderItem: renderItemProp, renderContainer, ListComponent, width: customWidth, listProps, backdropStyle: backdropStyleProps, containerStyle, initialIndex, itemSpacing, enableSnapMode, enableLoop, ...props }: GestureViewerProps<T, LC>): import("react/jsx-runtime").JSX.Element;
2
+ export declare function GestureViewer<ItemT, LC>({ id, data, renderItem: renderItemProp, renderContainer, ListComponent, width: customWidth, height: customHeight, listProps, backdropStyle: backdropStyleProps, containerStyle, initialIndex, itemSpacing, enableSnapMode, enableLoop, ...props }: GestureViewerProps<ItemT, LC>): import("react/jsx-runtime").JSX.Element;
4
3
  //# sourceMappingURL=GestureViewer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GestureViewer.d.ts","sourceRoot":"","sources":["../../../src/GestureViewer.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,UAAU,EAA+D,MAAM,cAAc,CAAC;AAItH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAKlD,wBAAgB,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,OAAO,UAAU,EAAE,EAC7D,EAAc,EACd,IAAI,EACJ,UAAU,EAAE,cAAc,EAC1B,eAAe,EACf,aAAa,EACb,KAAK,EAAE,WAAW,EAClB,SAAS,EACT,aAAa,EAAE,kBAAkB,EACjC,cAAc,EACd,YAAgB,EAChB,WAAe,EACf,cAAsB,EACtB,UAAkB,EAClB,GAAG,KAAK,EACT,EAAE,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,2CA6J3B"}
1
+ {"version":3,"file":"GestureViewer.d.ts","sourceRoot":"","sources":["../../../src/GestureViewer.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAKlD,wBAAgB,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,EACvC,EAAc,EACd,IAAI,EACJ,UAAU,EAAE,cAAc,EAC1B,eAAe,EACf,aAAa,EACb,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,YAAY,EACpB,SAAS,EACT,aAAa,EAAE,kBAAkB,EACjC,cAAc,EACd,YAAgB,EAChB,WAAe,EACf,cAAsB,EACtB,UAAkB,EAClB,GAAG,KAAK,EACT,EAAE,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC,2CA8J/B"}
@@ -1,11 +1,24 @@
1
1
  import type React from 'react';
2
- import type { FlatList as RNFlatList, ScrollView as RNScrollView, StyleProp, ViewStyle } from 'react-native';
2
+ import type { FlatListProps, ListRenderItem, FlatList as RNFlatList, ScrollView as RNScrollView, StyleProp, ViewabilityConfig, ViewStyle, ViewToken } from 'react-native';
3
3
  import type { FlatList as GHFlatList, ScrollView as GHScrollView } from 'react-native-gesture-handler';
4
4
  import type { WithTimingConfig } from 'react-native-reanimated';
5
- export type FlatListComponent = typeof RNFlatList | typeof GHFlatList;
5
+ export type FlatListComponent<ItemT> = typeof RNFlatList<ItemT> | typeof GHFlatList<ItemT>;
6
6
  export type ScrollViewComponent = typeof RNScrollView | typeof GHScrollView;
7
- type GetComponentProps<T> = T extends React.ComponentType<infer P> ? P : never;
8
- type ConditionalListProps<LC> = LC extends FlatListComponent ? React.ComponentProps<LC> : LC extends ScrollViewComponent ? React.ComponentProps<LC> : GetComponentProps<LC>;
7
+ interface ViewabilityConfigCallbackPair<TItem> {
8
+ viewabilityConfig: ViewabilityConfig;
9
+ onViewableItemsChanged: ((info: {
10
+ viewableItems: ViewToken<TItem>[];
11
+ changed: ViewToken<TItem>[];
12
+ }) => void) | null;
13
+ }
14
+ export type InstantiateGeneric<ItemT, LC> = LC extends React.ComponentType<infer P> ? P extends Record<string, any> ? {
15
+ [K in keyof P]: K extends 'data' ? ArrayLike<ItemT> | null | undefined : K extends 'renderItem' ? ListRenderItem<ItemT> : K extends 'keyExtractor' ? (item: ItemT, index: number) => string : K extends 'getItemType' ? (item: ItemT, index: number, extraData?: any) => string | number | undefined : K extends 'overrideItemLayout' ? (layout: {
16
+ span?: number;
17
+ size?: number;
18
+ }, item: ItemT, index: number, maxColumns?: number, extraData?: any) => void : K extends 'onViewableItemsChanged' ? FlatListProps<ItemT>['onViewableItemsChanged'] : K extends 'viewabilityConfigCallbackPairs' ? ViewabilityConfigCallbackPair<ItemT>[] : P[K];
19
+ } : P : never;
20
+ export type GetComponentProps<ItemT, LC> = LC extends React.ComponentType<any> ? InstantiateGeneric<ItemT, LC> : never;
21
+ type ConditionalListProps<ItemT, LC> = LC extends typeof RNFlatList<ItemT> ? React.ComponentProps<typeof RNFlatList<ItemT>> : LC extends typeof GHFlatList<ItemT> ? React.ComponentProps<typeof GHFlatList<ItemT>> : LC extends typeof RNScrollView ? React.ComponentProps<typeof RNScrollView> : LC extends typeof GHScrollView ? React.ComponentProps<typeof GHScrollView> : GetComponentProps<ItemT, LC>;
9
22
  export type TriggerRect = {
10
23
  x: number;
11
24
  y: number;
@@ -28,7 +41,7 @@ export interface TriggerAnimationConfig extends WithTimingConfig {
28
41
  */
29
42
  onAnimationComplete?: () => void;
30
43
  }
31
- export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
44
+ export interface GestureViewerProps<ItemT, LC> {
32
45
  /**
33
46
  * When you want to efficiently manage multiple `GestureViewer` instances, you can use the `id` prop to use multiple `GestureViewer` components.
34
47
  * @remarks `GestureViewer` automatically removes instances from memory when components are unmounted, so no manual memory management is required.
@@ -38,7 +51,7 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
38
51
  /**
39
52
  * The data to display in the `GestureViewer`.
40
53
  */
41
- data: T[];
54
+ data: ItemT[];
42
55
  /**
43
56
  * The index of the item to display in the `GestureViewer` when the component is mounted.
44
57
  * @defaultValue 0
@@ -56,7 +69,7 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
56
69
  /**
57
70
  * A callback function that is called to render the item.
58
71
  */
59
- renderItem: (item: T, index: number) => React.ReactElement;
72
+ renderItem: (item: ItemT, index: number) => React.ReactElement;
60
73
  /**
61
74
  * A callback function that is called to render the container.
62
75
  * @remarks Useful for composing additional UI (e.g., close button, toolbars) around the viewer.
@@ -79,11 +92,17 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
79
92
  * @defaultValue screen width
80
93
  */
81
94
  width?: number;
95
+ /**
96
+ * The height of the `GestureViewer`.
97
+ * @remarks If you don't set this prop, the height of the `GestureViewer` will be the same as the height of the screen.
98
+ * @defaultValue screen height
99
+ */
100
+ height?: number;
82
101
  /**
83
102
  * The props to pass to the list component.
84
103
  * @remarks The `listProps` provides **type inference based on the selected list component**, ensuring accurate autocompletion and type safety in your IDE.
85
104
  */
86
- listProps?: Partial<ConditionalListProps<LC>>;
105
+ listProps?: Partial<ConditionalListProps<ItemT, LC>>;
87
106
  /**
88
107
  * The style of the backdrop.
89
108
  */
@@ -92,6 +111,25 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
92
111
  * The style of the container.
93
112
  */
94
113
  containerStyle?: StyleProp<ViewStyle>;
114
+ /**
115
+ * Auto play mode.
116
+ * @remarks
117
+ * - When `true`, the viewer will automatically play the next item after the specified interval.
118
+ * - When `enableLoop` is enabled, the viewer will loop back to the first item after the last item.
119
+ * - When `enableLoop` is disabled, the viewer will stop at the last item.
120
+ * - When there is only one item, auto-play is disabled.
121
+ * - When zoom or rotate gestures are detected, the auto-play will be paused.
122
+ * @defaultValue false
123
+ */
124
+ autoPlay?: boolean;
125
+ /**
126
+ * Auto play interval.
127
+ * @remarks
128
+ * - When `autoPlay` is enabled, the viewer advances to the next item after the specified interval (ms).
129
+ * - Must be a positive integer. Values below 250ms are clamped to 250ms at runtime.
130
+ * @defaultValue 3000
131
+ */
132
+ autoPlayInterval?: number;
95
133
  /**
96
134
  * Dismiss gesture options. Calls `onDismiss` function when swiping down.
97
135
  * @remarks Useful for closing modals with downward swipe gestures.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { type NativeScrollEvent, type NativeSyntheticEvent } from 'react-native';
2
2
  import type { GestureViewerProps } from './types';
3
- type UseGestureViewerProps<T = any> = Omit<GestureViewerProps<T>, 'renderItem' | 'renderContainer' | 'ListComponent' | 'listProps' | 'containerStyle' | 'backdropStyle'>;
4
- export declare const useGestureViewer: <T = any>({ data, initialIndex, onDismiss, width: customWidth, dismiss, enableDoubleTapZoom, enablePinchZoom, enableHorizontalSwipe, enablePanWhenZoomed, enableLoop, maxZoomScale, itemSpacing, enableSnapMode, id, onDismissStart, triggerAnimation, }: UseGestureViewerProps<T>) => {
3
+ type UseGestureViewerProps<ItemT, LC> = Omit<GestureViewerProps<ItemT, LC>, 'renderItem' | 'renderContainer' | 'ListComponent' | 'listProps' | 'containerStyle' | 'backdropStyle' | 'enableSnapMode'>;
4
+ export declare const useGestureViewer: <ItemT, LC>({ data, initialIndex, onDismiss, width: customWidth, dismiss, enableDoubleTapZoom, enablePinchZoom, enableHorizontalSwipe, enablePanWhenZoomed, enableLoop, maxZoomScale, itemSpacing, height: customHeight, id, onDismissStart, triggerAnimation, autoPlay, autoPlayInterval, }: UseGestureViewerProps<ItemT, LC>) => {
5
5
  dataLength: number;
6
6
  listRef: import("react").RefObject<any>;
7
7
  isZoomed: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"useGestureViewer.d.ts","sourceRoot":"","sources":["../../../src/useGestureViewer.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAE1B,MAAM,cAAc,CAAC;AActB,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,SAAS,CAAC;AAG/D,KAAK,qBAAqB,CAAC,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,gPAiBvC,qBAAqB,CAAC,CAAC,CAAC;;;;;;;iCAuRf,oBAAoB,CAAC,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0SlD,CAAC"}
1
+ {"version":3,"file":"useGestureViewer.d.ts","sourceRoot":"","sources":["../../../src/useGestureViewer.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAE1B,MAAM,cAAc,CAAC;AActB,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,SAAS,CAAC;AAG/D,KAAK,qBAAqB,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,CAC1C,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC,EAC3B,YAAY,GACZ,iBAAiB,GACjB,eAAe,GACf,WAAW,GACX,gBAAgB,GAChB,eAAe,GACf,gBAAgB,CACnB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,EAAE,EAAE,EAAE,kRAmBzC,qBAAqB,CAAC,KAAK,EAAE,EAAE,CAAC;;;;;;;iCAwTvB,oBAAoB,CAAC,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0SlD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { FlatListComponent, ScrollViewComponent } from './types';
2
- export declare const isScrollViewLike: (component: any) => component is ScrollViewComponent;
3
- export declare const isFlatListLike: (component: any) => component is FlatListComponent;
4
- export declare const isFlashListLike: (component: any) => component is any;
2
+ export declare const isScrollViewLike: (component: React.ComponentType<any>) => component is ScrollViewComponent;
3
+ export declare const isFlatListLike: (component: React.ComponentType<any>) => component is FlatListComponent<any>;
4
+ export declare const isFlashListLike: (component: React.ComponentType<any>) => boolean;
5
5
  export declare const createBoundsConstraint: ({ width, height }: {
6
6
  width: number;
7
7
  height: number;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEtE,eAAO,MAAM,gBAAgB,GAAI,WAAW,GAAG,KAAG,SAAS,IAAI,mBAE9D,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,WAAW,GAAG,KAAG,SAAS,IAAI,iBAM5D,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,WAAW,GAAG,KAAG,SAAS,IAAI,GAY7D,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAChC,mBAAmB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,MACpD,mCAAmC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;;;CAiB5F,CAAC;AAEJ,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,SAAS,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,OAAO,KAAG,CAAC,EAevF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,aAAa,MAAM,EACnB,oBAAoB,MAAM,EAC1B,YAAY,OAAO,KAClB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAoB/D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,SAAS,GAAG,EAAE,OAAO,MAAM;sBAC1C,MAAM,YAAY,OAAO;CAO3C,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEtE,eAAO,MAAM,gBAAgB,GAAI,WAAW,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,KAAG,SAAS,IAAI,mBAEnF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,WAAW,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,KAAG,SAAS,IAAI,iBAAiB,CAAC,GAAG,CAMtG,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,WAAW,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,KAAG,OAYrE,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAChC,mBAAmB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,MACpD,mCAAmC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;;;CAiB5F,CAAC;AAEJ,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,SAAS,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,OAAO,KAAG,CAAC,EAevF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,aAAa,MAAM,EACnB,oBAAoB,MAAM,EAC1B,YAAY,OAAO,KAClB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAoB/D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,SAAS,GAAG,EAAE,OAAO,MAAM;sBAC1C,MAAM,YAAY,OAAO;CAO3C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-gesture-image-viewer",
3
- "version": "2.0.0-beta.7",
3
+ "version": "2.0.0",
4
4
  "description": "🖼️ React Native Image Viewer - Reanimated-powered image gestures with full control",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -1,5 +1,5 @@
1
1
  import { useCallback, useEffect, useMemo, useRef } from 'react';
2
- import { Platform, type ScrollView, type ScrollViewProps, StyleSheet, useWindowDimensions, View } from 'react-native';
2
+ import { Platform, type ScrollViewProps, StyleSheet, useWindowDimensions, View } from 'react-native';
3
3
  import { Gesture, GestureDetector, GestureHandlerRootView } from 'react-native-gesture-handler';
4
4
  import Animated from 'react-native-reanimated';
5
5
  import { registry } from './GestureViewerRegistry';
@@ -8,13 +8,14 @@ import { useGestureViewer } from './useGestureViewer';
8
8
  import { createLoopData, isFlashListLike, isFlatListLike, isScrollViewLike } from './utils';
9
9
  import WebPagingFixStyle from './WebPagingFixStyle';
10
10
 
11
- export function GestureViewer<T = any, LC = typeof ScrollView>({
11
+ export function GestureViewer<ItemT, LC>({
12
12
  id = 'default',
13
13
  data,
14
14
  renderItem: renderItemProp,
15
15
  renderContainer,
16
16
  ListComponent,
17
17
  width: customWidth,
18
+ height: customHeight,
18
19
  listProps,
19
20
  backdropStyle: backdropStyleProps,
20
21
  containerStyle,
@@ -23,14 +24,15 @@ export function GestureViewer<T = any, LC = typeof ScrollView>({
23
24
  enableSnapMode = false,
24
25
  enableLoop = false,
25
26
  ...props
26
- }: GestureViewerProps<T, LC>) {
27
+ }: GestureViewerProps<ItemT, LC>) {
27
28
  const Component = ListComponent as React.ComponentType<any>;
28
29
 
29
30
  const dataRef = useRef(data);
30
31
 
31
32
  const { width: screenWidth, height: screenHeight } = useWindowDimensions();
32
33
 
33
- const width = enableSnapMode ? customWidth || screenWidth : screenWidth;
34
+ const width = customWidth || screenWidth;
35
+ const height = customHeight || screenHeight;
34
36
 
35
37
  const loopData = useMemo(() => createLoopData(dataRef, enableLoop), [enableLoop]);
36
38
 
@@ -51,15 +53,15 @@ export function GestureViewer<T = any, LC = typeof ScrollView>({
51
53
  id,
52
54
  data,
53
55
  width,
56
+ height,
54
57
  initialIndex,
55
58
  itemSpacing,
56
- enableSnapMode,
57
59
  enableLoop,
58
60
  ...props,
59
61
  });
60
62
 
61
63
  const keyExtractor = useCallback(
62
- (item: T, index: number) => {
64
+ (item: ItemT, index: number) => {
63
65
  if (enableLoop) {
64
66
  return typeof item === 'string' ? `${item}-${index}` : `item-${index}`;
65
67
  }
@@ -70,14 +72,14 @@ export function GestureViewer<T = any, LC = typeof ScrollView>({
70
72
  );
71
73
 
72
74
  const renderItem = useCallback(
73
- ({ item, index }: { item: T; index: number }) => {
75
+ ({ item, index }: { item: ItemT; index: number }) => {
74
76
  return (
75
77
  <View
76
78
  key={isScrollView ? keyExtractor(item, index) : undefined}
77
79
  style={[
78
80
  {
79
81
  width,
80
- height: screenHeight,
82
+ height,
81
83
  marginHorizontal: itemSpacing / 2,
82
84
  },
83
85
  styles.item,
@@ -87,11 +89,11 @@ export function GestureViewer<T = any, LC = typeof ScrollView>({
87
89
  </View>
88
90
  );
89
91
  },
90
- [width, itemSpacing, renderItemProp, keyExtractor, isScrollView, screenHeight],
92
+ [width, itemSpacing, renderItemProp, keyExtractor, isScrollView, height],
91
93
  );
92
94
 
93
95
  const getItemLayout = useCallback(
94
- (_: ArrayLike<T> | null | undefined, index: number) => ({
96
+ (_: ArrayLike<ItemT> | null | undefined, index: number) => ({
95
97
  length: width + itemSpacing,
96
98
  offset: (width + itemSpacing) * index,
97
99
  index,
@@ -141,7 +143,7 @@ export function GestureViewer<T = any, LC = typeof ScrollView>({
141
143
  const listComponent = (
142
144
  <GestureHandlerRootView>
143
145
  <GestureDetector gesture={gesture}>
144
- <View style={[styles.container, containerStyle]}>
146
+ <View style={[{ width, height }, containerStyle]}>
145
147
  <Animated.View style={[styles.background, backdropStyleProps, backdropStyle]} />
146
148
  <Animated.View
147
149
  style={[styles.content, animatedStyle]}
@@ -183,9 +185,6 @@ export function GestureViewer<T = any, LC = typeof ScrollView>({
183
185
  }
184
186
 
185
187
  const styles = StyleSheet.create({
186
- container: {
187
- flex: 1,
188
- },
189
188
  content: {
190
189
  flex: 1,
191
190
  width: '100%',
package/src/types.ts CHANGED
@@ -1,18 +1,65 @@
1
1
  import type React from 'react';
2
- import type { FlatList as RNFlatList, ScrollView as RNScrollView, StyleProp, ViewStyle } from 'react-native';
2
+ import type {
3
+ FlatListProps,
4
+ ListRenderItem,
5
+ FlatList as RNFlatList,
6
+ ScrollView as RNScrollView,
7
+ StyleProp,
8
+ ViewabilityConfig,
9
+ ViewStyle,
10
+ ViewToken,
11
+ } from 'react-native';
3
12
  import type { FlatList as GHFlatList, ScrollView as GHScrollView } from 'react-native-gesture-handler';
4
13
  import type { WithTimingConfig } from 'react-native-reanimated';
5
14
 
6
- export type FlatListComponent = typeof RNFlatList | typeof GHFlatList;
15
+ export type FlatListComponent<ItemT> = typeof RNFlatList<ItemT> | typeof GHFlatList<ItemT>;
7
16
  export type ScrollViewComponent = typeof RNScrollView | typeof GHScrollView;
8
17
 
9
- type GetComponentProps<T> = T extends React.ComponentType<infer P> ? P : never;
18
+ interface ViewabilityConfigCallbackPair<TItem> {
19
+ viewabilityConfig: ViewabilityConfig;
20
+ onViewableItemsChanged: ((info: { viewableItems: ViewToken<TItem>[]; changed: ViewToken<TItem>[] }) => void) | null;
21
+ }
22
+
23
+ // Helper type to instantiate generic components with specific type parameter
24
+ export type InstantiateGeneric<ItemT, LC> = LC extends React.ComponentType<infer P>
25
+ ? P extends Record<string, any>
26
+ ? {
27
+ [K in keyof P]: K extends 'data'
28
+ ? ArrayLike<ItemT> | null | undefined
29
+ : K extends 'renderItem'
30
+ ? ListRenderItem<ItemT>
31
+ : K extends 'keyExtractor'
32
+ ? (item: ItemT, index: number) => string
33
+ : K extends 'getItemType'
34
+ ? (item: ItemT, index: number, extraData?: any) => string | number | undefined
35
+ : K extends 'overrideItemLayout'
36
+ ? (
37
+ layout: { span?: number; size?: number },
38
+ item: ItemT,
39
+ index: number,
40
+ maxColumns?: number,
41
+ extraData?: any,
42
+ ) => void
43
+ : K extends 'onViewableItemsChanged'
44
+ ? FlatListProps<ItemT>['onViewableItemsChanged']
45
+ : K extends 'viewabilityConfigCallbackPairs'
46
+ ? ViewabilityConfigCallbackPair<ItemT>[]
47
+ : P[K];
48
+ }
49
+ : P
50
+ : never;
51
+
52
+ export type GetComponentProps<ItemT, LC> = LC extends React.ComponentType<any> ? InstantiateGeneric<ItemT, LC> : never;
10
53
 
11
- type ConditionalListProps<LC> = LC extends FlatListComponent
12
- ? React.ComponentProps<LC>
13
- : LC extends ScrollViewComponent
14
- ? React.ComponentProps<LC>
15
- : GetComponentProps<LC>;
54
+ type ConditionalListProps<ItemT, LC> = LC extends typeof RNFlatList<ItemT>
55
+ ? React.ComponentProps<typeof RNFlatList<ItemT>>
56
+ : LC extends typeof GHFlatList<ItemT>
57
+ ? React.ComponentProps<typeof GHFlatList<ItemT>>
58
+ : LC extends typeof RNScrollView
59
+ ? React.ComponentProps<typeof RNScrollView>
60
+ : LC extends typeof GHScrollView
61
+ ? React.ComponentProps<typeof GHScrollView>
62
+ : GetComponentProps<ItemT, LC>;
16
63
 
17
64
  export type TriggerRect = {
18
65
  x: number;
@@ -38,7 +85,7 @@ export interface TriggerAnimationConfig extends WithTimingConfig {
38
85
  onAnimationComplete?: () => void;
39
86
  }
40
87
 
41
- export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
88
+ export interface GestureViewerProps<ItemT, LC> {
42
89
  /**
43
90
  * When you want to efficiently manage multiple `GestureViewer` instances, you can use the `id` prop to use multiple `GestureViewer` components.
44
91
  * @remarks `GestureViewer` automatically removes instances from memory when components are unmounted, so no manual memory management is required.
@@ -48,7 +95,7 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
48
95
  /**
49
96
  * The data to display in the `GestureViewer`.
50
97
  */
51
- data: T[];
98
+ data: ItemT[];
52
99
  /**
53
100
  * The index of the item to display in the `GestureViewer` when the component is mounted.
54
101
  * @defaultValue 0
@@ -66,7 +113,7 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
66
113
  /**
67
114
  * A callback function that is called to render the item.
68
115
  */
69
- renderItem: (item: T, index: number) => React.ReactElement;
116
+ renderItem: (item: ItemT, index: number) => React.ReactElement;
70
117
  /**
71
118
  * A callback function that is called to render the container.
72
119
  * @remarks Useful for composing additional UI (e.g., close button, toolbars) around the viewer.
@@ -87,11 +134,17 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
87
134
  * @defaultValue screen width
88
135
  */
89
136
  width?: number;
137
+ /**
138
+ * The height of the `GestureViewer`.
139
+ * @remarks If you don't set this prop, the height of the `GestureViewer` will be the same as the height of the screen.
140
+ * @defaultValue screen height
141
+ */
142
+ height?: number;
90
143
  /**
91
144
  * The props to pass to the list component.
92
145
  * @remarks The `listProps` provides **type inference based on the selected list component**, ensuring accurate autocompletion and type safety in your IDE.
93
146
  */
94
- listProps?: Partial<ConditionalListProps<LC>>;
147
+ listProps?: Partial<ConditionalListProps<ItemT, LC>>;
95
148
  /**
96
149
  * The style of the backdrop.
97
150
  */
@@ -100,6 +153,25 @@ export interface GestureViewerProps<T = any, LC = typeof RNScrollView> {
100
153
  * The style of the container.
101
154
  */
102
155
  containerStyle?: StyleProp<ViewStyle>;
156
+ /**
157
+ * Auto play mode.
158
+ * @remarks
159
+ * - When `true`, the viewer will automatically play the next item after the specified interval.
160
+ * - When `enableLoop` is enabled, the viewer will loop back to the first item after the last item.
161
+ * - When `enableLoop` is disabled, the viewer will stop at the last item.
162
+ * - When there is only one item, auto-play is disabled.
163
+ * - When zoom or rotate gestures are detected, the auto-play will be paused.
164
+ * @defaultValue false
165
+ */
166
+ autoPlay?: boolean;
167
+ /**
168
+ * Auto play interval.
169
+ * @remarks
170
+ * - When `autoPlay` is enabled, the viewer advances to the next item after the specified interval (ms).
171
+ * - Must be a positive integer. Values below 250ms are clamped to 250ms at runtime.
172
+ * @defaultValue 3000
173
+ */
174
+ autoPlayInterval?: number;
103
175
  /**
104
176
  * Dismiss gesture options. Calls `onDismiss` function when swiping down.
105
177
  * @remarks Useful for closing modals with downward swipe gestures.
@@ -21,12 +21,18 @@ import { registry } from './GestureViewerRegistry';
21
21
  import type { GestureViewerProps, TriggerRect } from './types';
22
22
  import { createBoundsConstraint, createScrollAction, getLoopAdjustedIndex } from './utils';
23
23
 
24
- type UseGestureViewerProps<T = any> = Omit<
25
- GestureViewerProps<T>,
26
- 'renderItem' | 'renderContainer' | 'ListComponent' | 'listProps' | 'containerStyle' | 'backdropStyle'
24
+ type UseGestureViewerProps<ItemT, LC> = Omit<
25
+ GestureViewerProps<ItemT, LC>,
26
+ | 'renderItem'
27
+ | 'renderContainer'
28
+ | 'ListComponent'
29
+ | 'listProps'
30
+ | 'containerStyle'
31
+ | 'backdropStyle'
32
+ | 'enableSnapMode'
27
33
  >;
28
34
 
29
- export const useGestureViewer = <T = any>({
35
+ export const useGestureViewer = <ItemT, LC>({
30
36
  data,
31
37
  initialIndex = 0,
32
38
  onDismiss,
@@ -39,18 +45,22 @@ export const useGestureViewer = <T = any>({
39
45
  enableLoop = false,
40
46
  maxZoomScale = 2,
41
47
  itemSpacing = 0,
42
- enableSnapMode = false,
48
+ height: customHeight,
43
49
  id = 'default',
44
50
  onDismissStart,
45
51
  triggerAnimation,
46
- }: UseGestureViewerProps<T>) => {
52
+ autoPlay = false,
53
+ autoPlayInterval = 3000,
54
+ }: UseGestureViewerProps<ItemT, LC>) => {
47
55
  const { width: screenWidth, height: screenHeight } = useWindowDimensions();
48
- const width = enableSnapMode ? customWidth || screenWidth : screenWidth;
56
+ const width = customWidth || screenWidth;
57
+ const height = customHeight || screenHeight;
49
58
 
50
59
  const [isZoomed, setIsZoomed] = useState(false);
51
60
  const [isRotated, setIsRotated] = useState(false);
52
61
  const [shouldStartTriggerAnimation, setShouldStartTriggerAnimation] = useState(false);
53
62
  const [manager, setManager] = useState<GestureViewerManager | null>(null);
63
+ const [currentIndex, setCurrentIndex] = useState(initialIndex);
54
64
 
55
65
  const listRef = useRef<any>(null);
56
66
  const triggerRectRef = useRef<TriggerRect | null>(null);
@@ -92,17 +102,14 @@ export const useGestureViewer = <T = any>({
92
102
  }, [dismiss?.enabled, dismiss?.threshold, dismiss?.resistance, dismiss?.fadeBackdrop]);
93
103
 
94
104
  const adjustedInitialIndex = useMemo(() => {
95
- if (enableLoop && data.length > 1) {
105
+ if (enableLoop && dataLength > 1) {
96
106
  return initialIndex + 1;
97
107
  }
98
108
 
99
109
  return initialIndex;
100
- }, [enableLoop, data.length, initialIndex]);
110
+ }, [enableLoop, dataLength, initialIndex]);
101
111
 
102
- const constrainTranslation = useMemo(
103
- () => createBoundsConstraint({ width, height: screenHeight }),
104
- [width, screenHeight],
105
- );
112
+ const constrainTranslation = useMemo(() => createBoundsConstraint({ width, height }), [width, height]);
106
113
 
107
114
  const scrollTo = useCallback(
108
115
  (index: number, animated: boolean) => {
@@ -158,9 +165,17 @@ export const useGestureViewer = <T = any>({
158
165
  );
159
166
 
160
167
  useEffect(() => {
161
- const unsubscribe = registry.subscribeToManager(id, setManager);
168
+ let unsubscribe: (() => void) | undefined;
169
+
170
+ const unsubscribeFromRegistry = registry.subscribeToManager(id, (managerInstance) => {
171
+ setManager(managerInstance);
172
+ unsubscribe = managerInstance?.subscribe((state) => setCurrentIndex(state.currentIndex));
173
+ });
162
174
 
163
- return unsubscribe;
175
+ return () => {
176
+ unsubscribeFromRegistry();
177
+ unsubscribe?.();
178
+ };
164
179
  }, [id]);
165
180
 
166
181
  useEffect(() => {
@@ -172,7 +187,7 @@ export const useGestureViewer = <T = any>({
172
187
  manager.setEnableHorizontalSwipe(enableHorizontalSwipe);
173
188
  manager.setCurrentIndex(initialIndex);
174
189
  manager.setWidth(width + itemSpacing);
175
- manager.setHeight(screenHeight);
190
+ manager.setHeight(height);
176
191
  manager.setZoomSharedValues(scale, translateX, translateY, maxZoomScale);
177
192
  manager.setRotation(rotation);
178
193
  manager.setEnableLoop(enableLoop);
@@ -187,7 +202,7 @@ export const useGestureViewer = <T = any>({
187
202
  maxZoomScale,
188
203
  enableLoop,
189
204
  scale,
190
- screenHeight,
205
+ height,
191
206
  translateX,
192
207
  translateY,
193
208
  rotation,
@@ -222,17 +237,46 @@ export const useGestureViewer = <T = any>({
222
237
  };
223
238
  }, [adjustedInitialIndex, translateY, backdropOpacity, translateX, scale, startScale, rotation, scrollTo]);
224
239
 
240
+ useEffect(() => {
241
+ if (
242
+ !autoPlay ||
243
+ !manager ||
244
+ dataLength <= 1 ||
245
+ isZoomed ||
246
+ isRotated ||
247
+ (!enableLoop && currentIndex === dataLength - 1)
248
+ ) {
249
+ return;
250
+ }
251
+
252
+ const intervalMs = Math.max(250, Math.floor(autoPlayInterval || 0));
253
+
254
+ if (!Number.isFinite(intervalMs)) {
255
+ return;
256
+ }
257
+
258
+ const interval = setInterval(() => {
259
+ if (isZoomed || isRotated) {
260
+ return;
261
+ }
262
+
263
+ manager.goToNext();
264
+ }, intervalMs);
265
+
266
+ return () => clearInterval(interval);
267
+ }, [autoPlay, autoPlayInterval, manager, dataLength, currentIndex, enableLoop, isZoomed, isRotated]);
268
+
225
269
  useEffect(() => {
226
270
  onAnimationCompleteRef.current = triggerAnimation?.onAnimationComplete;
227
271
  }, [triggerAnimation?.onAnimationComplete]);
228
272
 
229
273
  useEffect(() => {
230
274
  if (shouldStartTriggerAnimation && triggerRectRef.current) {
231
- const startX = triggerRectRef.current.x + triggerRectRef.current.width / 2 - screenWidth / 2;
232
- const startY = triggerRectRef.current.y + triggerRectRef.current.height / 2 - screenHeight / 2;
275
+ const startX = triggerRectRef.current.x + triggerRectRef.current.width / 2 - width / 2;
276
+ const startY = triggerRectRef.current.y + triggerRectRef.current.height / 2 - height / 2;
233
277
  const initialScaleFromTrigger = Math.min(
234
- triggerRectRef.current.width / screenWidth,
235
- triggerRectRef.current.height / screenHeight,
278
+ triggerRectRef.current.width / width,
279
+ triggerRectRef.current.height / height,
236
280
  );
237
281
 
238
282
  triggerScale.value = initialScaleFromTrigger;
@@ -258,8 +302,8 @@ export const useGestureViewer = <T = any>({
258
302
  }, [
259
303
  shouldStartTriggerAnimation,
260
304
  animationConfig,
261
- screenWidth,
262
- screenHeight,
305
+ width,
306
+ height,
263
307
  triggerOpacity,
264
308
  triggerScale,
265
309
  triggerTranslateX,
@@ -288,12 +332,9 @@ export const useGestureViewer = <T = any>({
288
332
  onDismissStart?.();
289
333
 
290
334
  if (triggerRectRef.current) {
291
- const endX = triggerRectRef.current.x + triggerRectRef.current.width / 2 - screenWidth / 2;
292
- const endY = triggerRectRef.current.y + triggerRectRef.current.height / 2 - screenHeight / 2;
293
- const endScale = Math.min(
294
- triggerRectRef.current.width / screenWidth,
295
- triggerRectRef.current.height / screenHeight,
296
- );
335
+ const endX = triggerRectRef.current.x + triggerRectRef.current.width / 2 - width / 2;
336
+ const endY = triggerRectRef.current.y + triggerRectRef.current.height / 2 - height / 2;
337
+ const endScale = Math.min(triggerRectRef.current.width / width, triggerRectRef.current.height / height);
297
338
 
298
339
  triggerScale.value = withTiming(endScale, animationConfig);
299
340
  triggerTranslateX.value = withTiming(endX, animationConfig);
@@ -313,8 +354,8 @@ export const useGestureViewer = <T = any>({
313
354
  animationConfig,
314
355
  onDismiss,
315
356
  onDismissStart,
316
- screenWidth,
317
- screenHeight,
357
+ width,
358
+ height,
318
359
  triggerTranslateX,
319
360
  triggerScale,
320
361
  triggerTranslateY,
@@ -427,7 +468,7 @@ export const useGestureViewer = <T = any>({
427
468
 
428
469
  const deltaScale = newScale - startScale.value;
429
470
  const centerX = event.focalX - width / 2;
430
- const centerY = event.focalY - screenHeight / 2;
471
+ const centerY = event.focalY - height / 2;
431
472
 
432
473
  // NOTE 새로운 이동값 = 기존 이동값 - (중심점 거리 × 스케일 변화량) / 원래 스케일 (중심점이 화면 중심에서 멀수록, 확대 배율이 클수록 더 많이 이동)
433
474
  const newTranslateX = initialTranslateX.value - (centerX * deltaScale) / startScale.value;
@@ -492,7 +533,7 @@ export const useGestureViewer = <T = any>({
492
533
  initialTranslateX,
493
534
  initialTranslateY,
494
535
  width,
495
- screenHeight,
536
+ height,
496
537
  constrainTranslation,
497
538
  ]);
498
539
 
@@ -540,7 +581,7 @@ export const useGestureViewer = <T = any>({
540
581
 
541
582
  if (nextScale > 1) {
542
583
  const centerX = event.x - width / 2;
543
- const centerY = event.y - screenHeight / 2;
584
+ const centerY = event.y - height / 2;
544
585
 
545
586
  // NOTE 확대로 밀려난 거리만큼 반대로 이동해서 탭 지점을 제자리에 유지
546
587
  translateX.value = withTiming(-centerX * (nextScale - 1), {
@@ -567,7 +608,7 @@ export const useGestureViewer = <T = any>({
567
608
  easing: Easing.bezier(0.25, 0.1, 0.25, 1.0),
568
609
  });
569
610
  });
570
- }, [scale, enableDoubleTapZoom, maxZoomScale, translateX, translateY, width, screenHeight]);
611
+ }, [scale, enableDoubleTapZoom, maxZoomScale, translateX, translateY, width, height]);
571
612
 
572
613
  const zoomGesture = useMemo(() => {
573
614
  return Gesture.Race(zoomPinchGesture, Gesture.Exclusive(zoomPanGesture, doubleTapGesture));
package/src/utils.ts CHANGED
@@ -2,11 +2,11 @@ import { FlatList as RNFlatList, ScrollView as RNScrollView } from 'react-native
2
2
  import { FlatList as GestureFlatList, ScrollView as GestureScrollView } from 'react-native-gesture-handler';
3
3
  import type { FlatListComponent, ScrollViewComponent } from './types';
4
4
 
5
- export const isScrollViewLike = (component: any): component is ScrollViewComponent => {
5
+ export const isScrollViewLike = (component: React.ComponentType<any>): component is ScrollViewComponent => {
6
6
  return component === RNScrollView || component === GestureScrollView;
7
7
  };
8
8
 
9
- export const isFlatListLike = (component: any): component is FlatListComponent => {
9
+ export const isFlatListLike = (component: React.ComponentType<any>): component is FlatListComponent<any> => {
10
10
  if (component === RNFlatList || component === GestureFlatList || isFlashListLike(component)) {
11
11
  return true;
12
12
  }
@@ -14,7 +14,7 @@ export const isFlatListLike = (component: any): component is FlatListComponent =
14
14
  return false;
15
15
  };
16
16
 
17
- export const isFlashListLike = (component: any): component is any => {
17
+ export const isFlashListLike = (component: React.ComponentType<any>): boolean => {
18
18
  try {
19
19
  const FlashList = require('@shopify/flash-list')?.FlashList;
20
20
 
@@ -25,7 +25,7 @@ export const isFlashListLike = (component: any): component is any => {
25
25
  // do nothing
26
26
  }
27
27
 
28
- return component?.name === 'FlashList';
28
+ return component?.displayName === 'FlashList' || component?.name === 'FlashList';
29
29
  };
30
30
 
31
31
  export const createBoundsConstraint =