react-native-reanimated-carousel 3.1.5 → 3.3.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.
Files changed (56) hide show
  1. package/README.md +9 -0
  2. package/README.zh-CN.md +38 -30
  3. package/lib/commonjs/Carousel.js +1 -1
  4. package/lib/commonjs/Carousel.js.map +1 -1
  5. package/lib/commonjs/ScrollViewGesture.js +1 -1
  6. package/lib/commonjs/ScrollViewGesture.js.map +1 -1
  7. package/lib/commonjs/hooks/computeNewIndexWhenDataChanges.js +1 -1
  8. package/lib/commonjs/hooks/computeNewIndexWhenDataChanges.js.map +1 -1
  9. package/lib/commonjs/hooks/index.test.js +1 -1
  10. package/lib/commonjs/hooks/index.test.js.map +1 -1
  11. package/lib/commonjs/hooks/useCarouselController.js +1 -1
  12. package/lib/commonjs/hooks/useCarouselController.js.map +1 -1
  13. package/lib/commonjs/hooks/useCommonVariables.js +1 -1
  14. package/lib/commonjs/hooks/useCommonVariables.js.map +1 -1
  15. package/lib/commonjs/hooks/useInitProps.js +1 -1
  16. package/lib/commonjs/hooks/useInitProps.js.map +1 -1
  17. package/lib/commonjs/hooks/useOffsetX.js +1 -1
  18. package/lib/commonjs/hooks/useOffsetX.js.map +1 -1
  19. package/lib/commonjs/hooks/useOnProgressChange.js +1 -1
  20. package/lib/commonjs/hooks/useOnProgressChange.js.map +1 -1
  21. package/lib/commonjs/hooks/useVisibleRanges.js +1 -1
  22. package/lib/commonjs/hooks/useVisibleRanges.js.map +1 -1
  23. package/lib/commonjs/layouts/BaseLayout.js +1 -1
  24. package/lib/commonjs/layouts/BaseLayout.js.map +1 -1
  25. package/lib/commonjs/layouts/ParallaxLayout.js +1 -1
  26. package/lib/commonjs/layouts/ParallaxLayout.js.map +1 -1
  27. package/lib/commonjs/layouts/normal.js +1 -1
  28. package/lib/commonjs/layouts/normal.js.map +1 -1
  29. package/lib/commonjs/layouts/parallax.js +1 -1
  30. package/lib/commonjs/layouts/parallax.js.map +1 -1
  31. package/lib/commonjs/layouts/stack.js +1 -1
  32. package/lib/commonjs/layouts/stack.js.map +1 -1
  33. package/lib/commonjs/utils/computedWithAutoFillData.js +1 -1
  34. package/lib/commonjs/utils/computedWithAutoFillData.js.map +1 -1
  35. package/lib/commonjs/utils/dealWithAnimation.js +1 -1
  36. package/lib/commonjs/utils/dealWithAnimation.js.map +1 -1
  37. package/lib/commonjs/utils/handlerOffsetDirection.js +1 -1
  38. package/lib/commonjs/utils/log.js +1 -1
  39. package/lib/module/ScrollViewGesture.js +79 -37
  40. package/lib/module/ScrollViewGesture.js.map +1 -1
  41. package/lib/module/hooks/index.test.js +0 -1
  42. package/lib/module/hooks/index.test.js.map +1 -1
  43. package/lib/module/hooks/useInitProps.js +5 -2
  44. package/lib/module/hooks/useInitProps.js.map +1 -1
  45. package/lib/module/layouts/BaseLayout.js +7 -0
  46. package/lib/module/layouts/BaseLayout.js.map +1 -1
  47. package/lib/module/utils/dealWithAnimation.js +2 -6
  48. package/lib/module/utils/dealWithAnimation.js.map +1 -1
  49. package/lib/typescript/types.d.ts +10 -5
  50. package/package.json +13 -10
  51. package/src/ScrollViewGesture.tsx +80 -39
  52. package/src/hooks/index.test.ts +0 -2
  53. package/src/hooks/useInitProps.ts +5 -2
  54. package/src/layouts/BaseLayout.tsx +7 -1
  55. package/src/types.ts +12 -5
  56. package/src/utils/dealWithAnimation.ts +6 -10
@@ -1,2 +1,2 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.horizontalStackLayout=horizontalStackLayout;exports.useHorizontalStackLayout=useHorizontalStackLayout;exports.verticalStackLayout=verticalStackLayout;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _react=require("react");var _reactNative=require("react-native");var _reactNativeReanimated=require("react-native-reanimated");function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;})),keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach(function(key){(0,_defineProperty2.default)(target,key,source[key]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}return target;}var screen=_reactNative.Dimensions.get("window");function horizontalStackLayout(){var modeConfig=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return function(){var _f=function _f(_value){var showLength=modeConfig.showLength,_modeConfig$snapDirec=modeConfig.snapDirection,snapDirection=_modeConfig$snapDirec===void 0?"left":_modeConfig$snapDirec,_modeConfig$moveSize=modeConfig.moveSize,moveSize=_modeConfig$moveSize===void 0?screen.width:_modeConfig$moveSize,_modeConfig$stackInte=modeConfig.stackInterval,stackInterval=_modeConfig$stackInte===void 0?18:_modeConfig$stackInte,_modeConfig$scaleInte=modeConfig.scaleInterval,scaleInterval=_modeConfig$scaleInte===void 0?0.04:_modeConfig$scaleInte,_modeConfig$opacityIn=modeConfig.opacityInterval,opacityInterval=_modeConfig$opacityIn===void 0?0.1:_modeConfig$opacityIn,_modeConfig$rotateZDe=modeConfig.rotateZDeg,rotateZDeg=_modeConfig$rotateZDe===void 0?30:_modeConfig$rotateZDe;var transform=[];var _getCommonVariables=getCommonVariables({showLength:showLength,value:_value,snapDirection:snapDirection}),validLength=_getCommonVariables.validLength,value=_getCommonVariables.value,inputRange=_getCommonVariables.inputRange;var _getCommonStyles=getCommonStyles({validLength:validLength,value:value,opacityInterval:opacityInterval,snapDirection:snapDirection}),zIndex=_getCommonStyles.zIndex,opacity=_getCommonStyles.opacity;var styles={transform:transform,zIndex:zIndex,opacity:opacity};var translateX;var scale;var rotateZ;if(snapDirection==="left"){translateX=(0,_reactNativeReanimated.interpolate)(value,inputRange,[-moveSize,0,validLength*stackInterval],_reactNativeReanimated.Extrapolate.CLAMP);scale=(0,_reactNativeReanimated.interpolate)(value,inputRange,[1,1,1-validLength*scaleInterval],_reactNativeReanimated.Extrapolate.CLAMP);rotateZ=(0,_reactNativeReanimated.interpolate)(value,inputRange,[-rotateZDeg,0,0],_reactNativeReanimated.Extrapolate.CLAMP)+"deg";}else if(snapDirection==="right"){translateX=(0,_reactNativeReanimated.interpolate)(value,inputRange,[-validLength*stackInterval,0,moveSize],_reactNativeReanimated.Extrapolate.CLAMP);scale=(0,_reactNativeReanimated.interpolate)(value,inputRange,[1-validLength*scaleInterval,1,1],_reactNativeReanimated.Extrapolate.CLAMP);rotateZ=(0,_reactNativeReanimated.interpolate)(value,inputRange,[0,0,rotateZDeg],_reactNativeReanimated.Extrapolate.CLAMP)+"deg";}transform.push({translateX:translateX},{scale:scale},{rotateZ:rotateZ});return styles;};_f._closure={screen:{width:screen.width},modeConfig:modeConfig,getCommonVariables:getCommonVariables,getCommonStyles:getCommonStyles,interpolate:_reactNativeReanimated.interpolate,Extrapolate:{CLAMP:_reactNativeReanimated.Extrapolate.CLAMP}};_f.asString="function _f(_value){const{screen,modeConfig,getCommonVariables,getCommonStyles,interpolate,Extrapolate}=jsThis._closure;{const{showLength:showLength,snapDirection=\"left\",moveSize=screen.width,stackInterval=18,scaleInterval=0.04,opacityInterval=0.1,rotateZDeg=30}=modeConfig;const transform=[];const{validLength:validLength,value:value,inputRange:inputRange}=getCommonVariables({showLength:showLength,value:_value,snapDirection:snapDirection});const{zIndex:zIndex,opacity:opacity}=getCommonStyles({validLength:validLength,value:value,opacityInterval:opacityInterval,snapDirection:snapDirection});const styles={transform:transform,zIndex:zIndex,opacity:opacity};let translateX;let scale;let rotateZ;if(snapDirection===\"left\"){translateX=interpolate(value,inputRange,[-moveSize,0,validLength*stackInterval],Extrapolate.CLAMP);scale=interpolate(value,inputRange,[1,1,1-validLength*scaleInterval],Extrapolate.CLAMP);rotateZ=interpolate(value,inputRange,[-rotateZDeg,0,0],Extrapolate.CLAMP)+\"deg\";}else if(snapDirection===\"right\"){translateX=interpolate(value,inputRange,[-validLength*stackInterval,0,moveSize],Extrapolate.CLAMP);scale=interpolate(value,inputRange,[1-validLength*scaleInterval,1,1],Extrapolate.CLAMP);rotateZ=interpolate(value,inputRange,[0,0,rotateZDeg],Extrapolate.CLAMP)+\"deg\";}transform.push({translateX:translateX},{scale:scale},{rotateZ:rotateZ});return styles;}}";_f.__workletHash=1281660142034;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/layouts/stack.ts (39:9)";return _f;}();}function useHorizontalStackLayout(){var customAnimationConfig=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var customConfig=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var config=(0,_react.useMemo)(function(){return _objectSpread({type:customAnimationConfig.snapDirection==="right"?"negative":"positive",viewCount:customAnimationConfig.showLength},customConfig);},[customAnimationConfig,customConfig]);return{layout:horizontalStackLayout(customAnimationConfig),config:config};}function verticalStackLayout(){var modeConfig=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return function(){var _f=function _f(_value){var showLength=modeConfig.showLength,_modeConfig$snapDirec2=modeConfig.snapDirection,snapDirection=_modeConfig$snapDirec2===void 0?"left":_modeConfig$snapDirec2,_modeConfig$moveSize2=modeConfig.moveSize,moveSize=_modeConfig$moveSize2===void 0?screen.width:_modeConfig$moveSize2,_modeConfig$stackInte2=modeConfig.stackInterval,stackInterval=_modeConfig$stackInte2===void 0?18:_modeConfig$stackInte2,_modeConfig$scaleInte2=modeConfig.scaleInterval,scaleInterval=_modeConfig$scaleInte2===void 0?0.04:_modeConfig$scaleInte2,_modeConfig$opacityIn2=modeConfig.opacityInterval,opacityInterval=_modeConfig$opacityIn2===void 0?0.1:_modeConfig$opacityIn2,_modeConfig$rotateZDe2=modeConfig.rotateZDeg,rotateZDeg=_modeConfig$rotateZDe2===void 0?30:_modeConfig$rotateZDe2;var transform=[];var _getCommonVariables2=getCommonVariables({showLength:showLength,value:_value,snapDirection:snapDirection}),validLength=_getCommonVariables2.validLength,value=_getCommonVariables2.value,inputRange=_getCommonVariables2.inputRange;var _getCommonStyles2=getCommonStyles({validLength:validLength,value:value,opacityInterval:opacityInterval,snapDirection:snapDirection}),zIndex=_getCommonStyles2.zIndex,opacity=_getCommonStyles2.opacity;var styles={transform:transform,zIndex:zIndex,opacity:opacity};var translateX;var scale;var rotateZ;var translateY;if(snapDirection==="left"){translateX=(0,_reactNativeReanimated.interpolate)(value,inputRange,[-moveSize,0,0],_reactNativeReanimated.Extrapolate.CLAMP);scale=(0,_reactNativeReanimated.interpolate)(value,inputRange,[1,1,1-validLength*scaleInterval],_reactNativeReanimated.Extrapolate.CLAMP);rotateZ=(0,_reactNativeReanimated.interpolate)(value,inputRange,[-rotateZDeg,0,0],_reactNativeReanimated.Extrapolate.CLAMP)+"deg";translateY=(0,_reactNativeReanimated.interpolate)(value,inputRange,[0,0,validLength*stackInterval],_reactNativeReanimated.Extrapolate.CLAMP);}else if(snapDirection==="right"){translateX=(0,_reactNativeReanimated.interpolate)(value,inputRange,[0,0,moveSize],_reactNativeReanimated.Extrapolate.CLAMP);scale=(0,_reactNativeReanimated.interpolate)(value,inputRange,[1-validLength*scaleInterval,1,1],_reactNativeReanimated.Extrapolate.CLAMP);rotateZ=(0,_reactNativeReanimated.interpolate)(value,inputRange,[0,0,rotateZDeg],_reactNativeReanimated.Extrapolate.CLAMP)+"deg";translateY=(0,_reactNativeReanimated.interpolate)(value,inputRange,[validLength*stackInterval,0,0],_reactNativeReanimated.Extrapolate.CLAMP);}transform.push({translateX:translateX},{scale:scale},{rotateZ:rotateZ},{translateY:translateY});return styles;};_f._closure={screen:{width:screen.width},modeConfig:modeConfig,getCommonVariables:getCommonVariables,getCommonStyles:getCommonStyles,interpolate:_reactNativeReanimated.interpolate,Extrapolate:{CLAMP:_reactNativeReanimated.Extrapolate.CLAMP}};_f.asString="function _f(_value){const{screen,modeConfig,getCommonVariables,getCommonStyles,interpolate,Extrapolate}=jsThis._closure;{const{showLength:showLength,snapDirection=\"left\",moveSize=screen.width,stackInterval=18,scaleInterval=0.04,opacityInterval=0.1,rotateZDeg=30}=modeConfig;const transform=[];const{validLength:validLength,value:value,inputRange:inputRange}=getCommonVariables({showLength:showLength,value:_value,snapDirection:snapDirection});const{zIndex:zIndex,opacity:opacity}=getCommonStyles({validLength:validLength,value:value,opacityInterval:opacityInterval,snapDirection:snapDirection});const styles={transform:transform,zIndex:zIndex,opacity:opacity};let translateX;let scale;let rotateZ;let translateY;if(snapDirection===\"left\"){translateX=interpolate(value,inputRange,[-moveSize,0,0],Extrapolate.CLAMP);scale=interpolate(value,inputRange,[1,1,1-validLength*scaleInterval],Extrapolate.CLAMP);rotateZ=interpolate(value,inputRange,[-rotateZDeg,0,0],Extrapolate.CLAMP)+\"deg\";translateY=interpolate(value,inputRange,[0,0,validLength*stackInterval],Extrapolate.CLAMP);}else if(snapDirection===\"right\"){translateX=interpolate(value,inputRange,[0,0,moveSize],Extrapolate.CLAMP);scale=interpolate(value,inputRange,[1-validLength*scaleInterval,1,1],Extrapolate.CLAMP);rotateZ=interpolate(value,inputRange,[0,0,rotateZDeg],Extrapolate.CLAMP)+\"deg\";translateY=interpolate(value,inputRange,[validLength*stackInterval,0,0],Extrapolate.CLAMP);}transform.push({translateX:translateX},{scale:scale},{rotateZ:rotateZ},{translateY:translateY});return styles;}}";_f.__workletHash=8891397395670;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/layouts/stack.ts (155:9)";return _f;}();}var getCommonVariables=function(){var _f=function _f(opts){var showLength=opts.showLength,_value=opts.value,snapDirection=opts.snapDirection;function easeInOutCubic(v){return v<0.5?4*v*v*v:1-Math.pow(-2*v+2,3)/2;}var page=Math.floor(Math.abs(_value));var diff=Math.abs(_value)%1;var value=_value<0?-(page+easeInOutCubic(diff)):page+easeInOutCubic(diff);var validLength=showLength-1;var inputRange;if(snapDirection==="left")inputRange=[-1,0,validLength];else if(snapDirection==="right")inputRange=[-validLength,0,1];else throw new Error("snapDirection must be set to either left or right");return{inputRange:inputRange,validLength:validLength,value:value};};_f._closure={};_f.asString="function getCommonVariables(opts){const{showLength:showLength,value:_value,snapDirection:snapDirection}=opts;function easeInOutCubic(v){return v<0.5?4*v*v*v:1-(-2*v+2)**3/2;}const page=Math.floor(Math.abs(_value));const diff=Math.abs(_value)%1;const value=_value<0?-(page+easeInOutCubic(diff)):page+easeInOutCubic(diff);const validLength=showLength-1;let inputRange;if(snapDirection===\"left\")inputRange=[-1,0,validLength];else if(snapDirection===\"right\")inputRange=[-validLength,0,1];else throw new Error(\"snapDirection must be set to either left or right\");return{inputRange:inputRange,validLength:validLength,value:value};}";_f.__workletHash=6212413287432;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/layouts/stack.ts (263:0)";return _f;}();var getCommonStyles=function(){var _f=function _f(opts){var snapDirection=opts.snapDirection,validLength=opts.validLength,value=opts.value,opacityInterval=opts.opacityInterval;var zIndex;var opacity;if(snapDirection==="left"){zIndex=Math.floor((0,_reactNativeReanimated.interpolate)(value,[-1.5,-1,-1+Number.MIN_VALUE,0,validLength],[Number.MIN_VALUE,validLength,validLength,validLength-1,-1])*10000)/100;opacity=(0,_reactNativeReanimated.interpolate)(value,[-1,0,validLength-1,validLength],[0.25,1,1-(validLength-1)*opacityInterval,0.25]);}else if(snapDirection==="right"){zIndex=Math.floor((0,_reactNativeReanimated.interpolate)(value,[-validLength,0,1-Number.MIN_VALUE,1,1.5],[1,validLength-1,validLength,validLength,Number.MIN_VALUE])*10000)/100;opacity=(0,_reactNativeReanimated.interpolate)(value,[-validLength,1-validLength,0,1],[0.25,1-(validLength-1)*opacityInterval,1,0.25]);}else{throw new Error("snapDirection must be set to either left or right");}return{zIndex:zIndex,opacity:opacity};};_f._closure={interpolate:_reactNativeReanimated.interpolate};_f.asString="function getCommonStyles(opts){const{interpolate}=jsThis._closure;{const{snapDirection:snapDirection,validLength:validLength,value:value,opacityInterval:opacityInterval}=opts;let zIndex;let opacity;if(snapDirection===\"left\"){zIndex=Math.floor(interpolate(value,[-1.5,-1,-1+Number.MIN_VALUE,0,validLength],[Number.MIN_VALUE,validLength,validLength,validLength-1,-1])*10000)/100;opacity=interpolate(value,[-1,0,validLength-1,validLength],[0.25,1,1-(validLength-1)*opacityInterval,0.25]);}else if(snapDirection===\"right\"){zIndex=Math.floor(interpolate(value,[-validLength,0,1-Number.MIN_VALUE,1,1.5],[1,validLength-1,validLength,validLength,Number.MIN_VALUE])*10000)/100;opacity=interpolate(value,[-validLength,1-validLength,0,1],[0.25,1-(validLength-1)*opacityInterval,1,0.25]);}else{throw new Error(\"snapDirection must be set to either left or right\");}return{zIndex:zIndex,opacity:opacity};}}";_f.__workletHash=12739032600542;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/layouts/stack.ts (298:0)";return _f;}();
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.horizontalStackLayout=horizontalStackLayout;exports.useHorizontalStackLayout=useHorizontalStackLayout;exports.verticalStackLayout=verticalStackLayout;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _react=require("react");var _reactNative=require("react-native");var _reactNativeReanimated=require("react-native-reanimated");function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;})),keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach(function(key){(0,_defineProperty2.default)(target,key,source[key]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}return target;}var screen=_reactNative.Dimensions.get("window");function horizontalStackLayout(){var modeConfig=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return function(){var _f=function _f(_value){var showLength=modeConfig.showLength,_modeConfig$snapDirec=modeConfig.snapDirection,snapDirection=_modeConfig$snapDirec===void 0?"left":_modeConfig$snapDirec,_modeConfig$moveSize=modeConfig.moveSize,moveSize=_modeConfig$moveSize===void 0?screen.width:_modeConfig$moveSize,_modeConfig$stackInte=modeConfig.stackInterval,stackInterval=_modeConfig$stackInte===void 0?18:_modeConfig$stackInte,_modeConfig$scaleInte=modeConfig.scaleInterval,scaleInterval=_modeConfig$scaleInte===void 0?0.04:_modeConfig$scaleInte,_modeConfig$opacityIn=modeConfig.opacityInterval,opacityInterval=_modeConfig$opacityIn===void 0?0.1:_modeConfig$opacityIn,_modeConfig$rotateZDe=modeConfig.rotateZDeg,rotateZDeg=_modeConfig$rotateZDe===void 0?30:_modeConfig$rotateZDe;var transform=[];var _getCommonVariables=getCommonVariables({showLength:showLength,value:_value,snapDirection:snapDirection}),validLength=_getCommonVariables.validLength,value=_getCommonVariables.value,inputRange=_getCommonVariables.inputRange;var _getCommonStyles=getCommonStyles({validLength:validLength,value:value,opacityInterval:opacityInterval,snapDirection:snapDirection}),zIndex=_getCommonStyles.zIndex,opacity=_getCommonStyles.opacity;var styles={transform:transform,zIndex:zIndex,opacity:opacity};var translateX;var scale;var rotateZ;if(snapDirection==="left"){translateX=(0,_reactNativeReanimated.interpolate)(value,inputRange,[-moveSize,0,validLength*stackInterval],_reactNativeReanimated.Extrapolate.CLAMP);scale=(0,_reactNativeReanimated.interpolate)(value,inputRange,[1,1,1-validLength*scaleInterval],_reactNativeReanimated.Extrapolate.CLAMP);rotateZ=(0,_reactNativeReanimated.interpolate)(value,inputRange,[-rotateZDeg,0,0],_reactNativeReanimated.Extrapolate.CLAMP)+"deg";}else if(snapDirection==="right"){translateX=(0,_reactNativeReanimated.interpolate)(value,inputRange,[-validLength*stackInterval,0,moveSize],_reactNativeReanimated.Extrapolate.CLAMP);scale=(0,_reactNativeReanimated.interpolate)(value,inputRange,[1-validLength*scaleInterval,1,1],_reactNativeReanimated.Extrapolate.CLAMP);rotateZ=(0,_reactNativeReanimated.interpolate)(value,inputRange,[0,0,rotateZDeg],_reactNativeReanimated.Extrapolate.CLAMP)+"deg";}transform.push({translateX:translateX},{scale:scale},{rotateZ:rotateZ});return styles;};_f._closure={screen:{width:screen.width},modeConfig:modeConfig,getCommonVariables:getCommonVariables,getCommonStyles:getCommonStyles,interpolate:_reactNativeReanimated.interpolate,Extrapolate:{CLAMP:_reactNativeReanimated.Extrapolate.CLAMP}};_f.asString="function _f(_value){const{screen,modeConfig,getCommonVariables,getCommonStyles,interpolate,Extrapolate}=jsThis._closure;{const{showLength:showLength,snapDirection=\"left\",moveSize=screen.width,stackInterval=18,scaleInterval=0.04,opacityInterval=0.1,rotateZDeg=30}=modeConfig;const transform=[];const{validLength:validLength,value:value,inputRange:inputRange}=getCommonVariables({showLength:showLength,value:_value,snapDirection:snapDirection});const{zIndex:zIndex,opacity:opacity}=getCommonStyles({validLength:validLength,value:value,opacityInterval:opacityInterval,snapDirection:snapDirection});const styles={transform:transform,zIndex:zIndex,opacity:opacity};let translateX;let scale;let rotateZ;if(snapDirection===\"left\"){translateX=interpolate(value,inputRange,[-moveSize,0,validLength*stackInterval],Extrapolate.CLAMP);scale=interpolate(value,inputRange,[1,1,1-validLength*scaleInterval],Extrapolate.CLAMP);rotateZ=interpolate(value,inputRange,[-rotateZDeg,0,0],Extrapolate.CLAMP)+\"deg\";}else if(snapDirection===\"right\"){translateX=interpolate(value,inputRange,[-validLength*stackInterval,0,moveSize],Extrapolate.CLAMP);scale=interpolate(value,inputRange,[1-validLength*scaleInterval,1,1],Extrapolate.CLAMP);rotateZ=interpolate(value,inputRange,[0,0,rotateZDeg],Extrapolate.CLAMP)+\"deg\";}transform.push({translateX:translateX},{scale:scale},{rotateZ:rotateZ});return styles;}}";_f.__workletHash=1281660142034;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/layouts/stack.ts (39:9)";return _f;}();}function useHorizontalStackLayout(){var customAnimationConfig=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var customConfig=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var config=(0,_react.useMemo)(function(){return _objectSpread({type:customAnimationConfig.snapDirection==="right"?"negative":"positive",viewCount:customAnimationConfig.showLength},customConfig);},[customAnimationConfig,customConfig]);return{layout:horizontalStackLayout(customAnimationConfig),config:config};}function verticalStackLayout(){var modeConfig=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return function(){var _f=function _f(_value){var showLength=modeConfig.showLength,_modeConfig$snapDirec2=modeConfig.snapDirection,snapDirection=_modeConfig$snapDirec2===void 0?"left":_modeConfig$snapDirec2,_modeConfig$moveSize2=modeConfig.moveSize,moveSize=_modeConfig$moveSize2===void 0?screen.width:_modeConfig$moveSize2,_modeConfig$stackInte2=modeConfig.stackInterval,stackInterval=_modeConfig$stackInte2===void 0?18:_modeConfig$stackInte2,_modeConfig$scaleInte2=modeConfig.scaleInterval,scaleInterval=_modeConfig$scaleInte2===void 0?0.04:_modeConfig$scaleInte2,_modeConfig$opacityIn2=modeConfig.opacityInterval,opacityInterval=_modeConfig$opacityIn2===void 0?0.1:_modeConfig$opacityIn2,_modeConfig$rotateZDe2=modeConfig.rotateZDeg,rotateZDeg=_modeConfig$rotateZDe2===void 0?30:_modeConfig$rotateZDe2;var transform=[];var _getCommonVariables2=getCommonVariables({showLength:showLength,value:_value,snapDirection:snapDirection}),validLength=_getCommonVariables2.validLength,value=_getCommonVariables2.value,inputRange=_getCommonVariables2.inputRange;var _getCommonStyles2=getCommonStyles({validLength:validLength,value:value,opacityInterval:opacityInterval,snapDirection:snapDirection}),zIndex=_getCommonStyles2.zIndex,opacity=_getCommonStyles2.opacity;var styles={transform:transform,zIndex:zIndex,opacity:opacity};var translateX;var scale;var rotateZ;var translateY;if(snapDirection==="left"){translateX=(0,_reactNativeReanimated.interpolate)(value,inputRange,[-moveSize,0,0],_reactNativeReanimated.Extrapolate.CLAMP);scale=(0,_reactNativeReanimated.interpolate)(value,inputRange,[1,1,1-validLength*scaleInterval],_reactNativeReanimated.Extrapolate.CLAMP);rotateZ=(0,_reactNativeReanimated.interpolate)(value,inputRange,[-rotateZDeg,0,0],_reactNativeReanimated.Extrapolate.CLAMP)+"deg";translateY=(0,_reactNativeReanimated.interpolate)(value,inputRange,[0,0,validLength*stackInterval],_reactNativeReanimated.Extrapolate.CLAMP);}else if(snapDirection==="right"){translateX=(0,_reactNativeReanimated.interpolate)(value,inputRange,[0,0,moveSize],_reactNativeReanimated.Extrapolate.CLAMP);scale=(0,_reactNativeReanimated.interpolate)(value,inputRange,[1-validLength*scaleInterval,1,1],_reactNativeReanimated.Extrapolate.CLAMP);rotateZ=(0,_reactNativeReanimated.interpolate)(value,inputRange,[0,0,rotateZDeg],_reactNativeReanimated.Extrapolate.CLAMP)+"deg";translateY=(0,_reactNativeReanimated.interpolate)(value,inputRange,[validLength*stackInterval,0,0],_reactNativeReanimated.Extrapolate.CLAMP);}transform.push({translateX:translateX},{scale:scale},{rotateZ:rotateZ},{translateY:translateY});return styles;};_f._closure={screen:{width:screen.width},modeConfig:modeConfig,getCommonVariables:getCommonVariables,getCommonStyles:getCommonStyles,interpolate:_reactNativeReanimated.interpolate,Extrapolate:{CLAMP:_reactNativeReanimated.Extrapolate.CLAMP}};_f.asString="function _f(_value){const{screen,modeConfig,getCommonVariables,getCommonStyles,interpolate,Extrapolate}=jsThis._closure;{const{showLength:showLength,snapDirection=\"left\",moveSize=screen.width,stackInterval=18,scaleInterval=0.04,opacityInterval=0.1,rotateZDeg=30}=modeConfig;const transform=[];const{validLength:validLength,value:value,inputRange:inputRange}=getCommonVariables({showLength:showLength,value:_value,snapDirection:snapDirection});const{zIndex:zIndex,opacity:opacity}=getCommonStyles({validLength:validLength,value:value,opacityInterval:opacityInterval,snapDirection:snapDirection});const styles={transform:transform,zIndex:zIndex,opacity:opacity};let translateX;let scale;let rotateZ;let translateY;if(snapDirection===\"left\"){translateX=interpolate(value,inputRange,[-moveSize,0,0],Extrapolate.CLAMP);scale=interpolate(value,inputRange,[1,1,1-validLength*scaleInterval],Extrapolate.CLAMP);rotateZ=interpolate(value,inputRange,[-rotateZDeg,0,0],Extrapolate.CLAMP)+\"deg\";translateY=interpolate(value,inputRange,[0,0,validLength*stackInterval],Extrapolate.CLAMP);}else if(snapDirection===\"right\"){translateX=interpolate(value,inputRange,[0,0,moveSize],Extrapolate.CLAMP);scale=interpolate(value,inputRange,[1-validLength*scaleInterval,1,1],Extrapolate.CLAMP);rotateZ=interpolate(value,inputRange,[0,0,rotateZDeg],Extrapolate.CLAMP)+\"deg\";translateY=interpolate(value,inputRange,[validLength*stackInterval,0,0],Extrapolate.CLAMP);}transform.push({translateX:translateX},{scale:scale},{rotateZ:rotateZ},{translateY:translateY});return styles;}}";_f.__workletHash=8891397395670;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/layouts/stack.ts (155:9)";return _f;}();}var getCommonVariables=function(){var _f=function _f(opts){var showLength=opts.showLength,_value=opts.value,snapDirection=opts.snapDirection;function easeInOutCubic(v){return v<0.5?4*v*v*v:1-Math.pow(-2*v+2,3)/2;}var page=Math.floor(Math.abs(_value));var diff=Math.abs(_value)%1;var value=_value<0?-(page+easeInOutCubic(diff)):page+easeInOutCubic(diff);var validLength=showLength-1;var inputRange;if(snapDirection==="left")inputRange=[-1,0,validLength];else if(snapDirection==="right")inputRange=[-validLength,0,1];else throw new Error("snapDirection must be set to either left or right");return{inputRange:inputRange,validLength:validLength,value:value};};_f._closure={};_f.asString="function getCommonVariables(opts){const{showLength:showLength,value:_value,snapDirection:snapDirection}=opts;function easeInOutCubic(v){return v<0.5?4*v*v*v:1-(-2*v+2)**3/2;}const page=Math.floor(Math.abs(_value));const diff=Math.abs(_value)%1;const value=_value<0?-(page+easeInOutCubic(diff)):page+easeInOutCubic(diff);const validLength=showLength-1;let inputRange;if(snapDirection===\"left\")inputRange=[-1,0,validLength];else if(snapDirection===\"right\")inputRange=[-validLength,0,1];else throw new Error(\"snapDirection must be set to either left or right\");return{inputRange:inputRange,validLength:validLength,value:value};}";_f.__workletHash=6212413287432;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/layouts/stack.ts (263:0)";return _f;}();var getCommonStyles=function(){var _f=function _f(opts){var snapDirection=opts.snapDirection,validLength=opts.validLength,value=opts.value,opacityInterval=opts.opacityInterval;var zIndex;var opacity;if(snapDirection==="left"){zIndex=Math.floor((0,_reactNativeReanimated.interpolate)(value,[-1.5,-1,-1+Number.MIN_VALUE,0,validLength],[Number.MIN_VALUE,validLength,validLength,validLength-1,-1])*10000)/100;opacity=(0,_reactNativeReanimated.interpolate)(value,[-1,0,validLength-1,validLength],[0.25,1,1-(validLength-1)*opacityInterval,0.25]);}else if(snapDirection==="right"){zIndex=Math.floor((0,_reactNativeReanimated.interpolate)(value,[-validLength,0,1-Number.MIN_VALUE,1,1.5],[1,validLength-1,validLength,validLength,Number.MIN_VALUE])*10000)/100;opacity=(0,_reactNativeReanimated.interpolate)(value,[-validLength,1-validLength,0,1],[0.25,1-(validLength-1)*opacityInterval,1,0.25]);}else{throw new Error("snapDirection must be set to either left or right");}return{zIndex:zIndex,opacity:opacity};};_f._closure={interpolate:_reactNativeReanimated.interpolate};_f.asString="function getCommonStyles(opts){const{interpolate}=jsThis._closure;{const{snapDirection:snapDirection,validLength:validLength,value:value,opacityInterval:opacityInterval}=opts;let zIndex;let opacity;if(snapDirection===\"left\"){zIndex=Math.floor(interpolate(value,[-1.5,-1,-1+Number.MIN_VALUE,0,validLength],[Number.MIN_VALUE,validLength,validLength,validLength-1,-1])*10000)/100;opacity=interpolate(value,[-1,0,validLength-1,validLength],[0.25,1,1-(validLength-1)*opacityInterval,0.25]);}else if(snapDirection===\"right\"){zIndex=Math.floor(interpolate(value,[-validLength,0,1-Number.MIN_VALUE,1,1.5],[1,validLength-1,validLength,validLength,Number.MIN_VALUE])*10000)/100;opacity=interpolate(value,[-validLength,1-validLength,0,1],[0.25,1-(validLength-1)*opacityInterval,1,0.25]);}else{throw new Error(\"snapDirection must be set to either left or right\");}return{zIndex:zIndex,opacity:opacity};}}";_f.__workletHash=12739032600542;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/layouts/stack.ts (298:0)";return _f;}();
2
2
  //# sourceMappingURL=stack.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["stack.ts"],"names":["screen","Dimensions","get","horizontalStackLayout","modeConfig","_value","showLength","snapDirection","moveSize","width","stackInterval","scaleInterval","opacityInterval","rotateZDeg","transform","getCommonVariables","value","validLength","inputRange","getCommonStyles","zIndex","opacity","styles","translateX","scale","rotateZ","Extrapolate","CLAMP","push","interpolate","useHorizontalStackLayout","customAnimationConfig","customConfig","config","type","viewCount","layout","verticalStackLayout","translateY","opts","easeInOutCubic","v","page","Math","floor","abs","diff","Error","Number","MIN_VALUE"],"mappings":"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","sourcesContent":["import { useMemo } from \"react\";\nimport type { TransformsStyle, ViewStyle } from \"react-native\";\nimport { Dimensions } from \"react-native\";\nimport { Extrapolate, interpolate } from \"react-native-reanimated\";\n\nimport type { IComputedDirectionTypes, CustomConfig } from \"../types\";\n\nconst screen = Dimensions.get(\"window\");\n\nexport interface ILayoutConfig {\n showLength?: number\n moveSize?: number\n stackInterval?: number\n scaleInterval?: number\n opacityInterval?: number\n rotateZDeg?: number\n snapDirection?: \"left\" | \"right\"\n}\n\nexport type TStackModeProps = IComputedDirectionTypes<{\n /**\n * Carousel Animated transitions.\n */\n mode?: \"horizontal-stack\" | \"vertical-stack\"\n /**\n * Stack animation style.\n * @default\n * mode: 'vertical',\n * snapDirection: 'right',\n * moveSize: window.width,\n * stackInterval: 30,\n * scaleInterval: 0.08,\n * rotateZDeg: 135,\n */\n modeConfig?: ILayoutConfig\n}>;\n\nexport function horizontalStackLayout(modeConfig: ILayoutConfig = {}) {\n return (_value: number) => {\n \"worklet\";\n\n const {\n showLength,\n snapDirection = \"left\",\n moveSize = screen.width,\n stackInterval = 18,\n scaleInterval = 0.04,\n opacityInterval = 0.1,\n rotateZDeg = 30,\n } = modeConfig;\n\n const transform: TransformsStyle[\"transform\"] = [];\n const { validLength, value, inputRange } = getCommonVariables({\n showLength: showLength!,\n value: _value,\n snapDirection,\n });\n const { zIndex, opacity } = getCommonStyles({\n validLength,\n value,\n opacityInterval,\n snapDirection,\n });\n\n const styles: ViewStyle = {\n transform,\n zIndex,\n opacity,\n };\n\n let translateX: number;\n let scale: number;\n let rotateZ: string;\n\n if (snapDirection === \"left\") {\n translateX = interpolate(\n value,\n inputRange,\n [-moveSize, 0, validLength * stackInterval],\n Extrapolate.CLAMP,\n );\n scale = interpolate(\n value,\n inputRange,\n [1, 1, 1 - validLength * scaleInterval],\n Extrapolate.CLAMP,\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [-rotateZDeg, 0, 0],\n Extrapolate.CLAMP,\n )}deg`;\n }\n else if (snapDirection === \"right\") {\n translateX = interpolate(\n value,\n inputRange,\n [-validLength * stackInterval, 0, moveSize],\n Extrapolate.CLAMP,\n );\n scale = interpolate(\n value,\n inputRange,\n [1 - validLength * scaleInterval, 1, 1],\n Extrapolate.CLAMP,\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [0, 0, rotateZDeg],\n Extrapolate.CLAMP,\n )}deg`;\n }\n\n transform.push(\n {\n translateX: translateX!,\n },\n {\n scale: scale!,\n },\n {\n rotateZ: rotateZ!,\n },\n );\n\n return styles;\n };\n}\n\nexport function useHorizontalStackLayout(\n customAnimationConfig: ILayoutConfig = {},\n customConfig: CustomConfig = {},\n) {\n const config = useMemo(\n () => ({\n type:\n customAnimationConfig.snapDirection === \"right\"\n ? \"negative\"\n : \"positive\",\n viewCount: customAnimationConfig.showLength,\n ...customConfig,\n }),\n [customAnimationConfig, customConfig],\n );\n\n return {\n layout: horizontalStackLayout(customAnimationConfig),\n config,\n };\n}\n\nexport function verticalStackLayout(modeConfig: ILayoutConfig = {}) {\n return (_value: number) => {\n \"worklet\";\n\n const {\n showLength,\n snapDirection = \"left\",\n moveSize = screen.width,\n stackInterval = 18,\n scaleInterval = 0.04,\n opacityInterval = 0.1,\n rotateZDeg = 30,\n } = modeConfig;\n const transform: TransformsStyle[\"transform\"] = [];\n const { validLength, value, inputRange } = getCommonVariables({\n showLength: showLength!,\n value: _value,\n snapDirection,\n });\n const { zIndex, opacity } = getCommonStyles({\n validLength,\n value,\n opacityInterval,\n snapDirection,\n });\n\n const styles: ViewStyle = {\n transform,\n zIndex,\n opacity,\n };\n\n let translateX: number;\n let scale: number;\n let rotateZ: string;\n let translateY: number;\n\n if (snapDirection === \"left\") {\n translateX = interpolate(\n value,\n inputRange,\n [-moveSize, 0, 0],\n Extrapolate.CLAMP,\n );\n scale = interpolate(\n value,\n inputRange,\n [1, 1, 1 - validLength * scaleInterval],\n Extrapolate.CLAMP,\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [-rotateZDeg, 0, 0],\n Extrapolate.CLAMP,\n )}deg`;\n translateY = interpolate(\n value,\n inputRange,\n [0, 0, validLength * stackInterval],\n Extrapolate.CLAMP,\n );\n }\n else if (snapDirection === \"right\") {\n translateX = interpolate(\n value,\n inputRange,\n [0, 0, moveSize],\n Extrapolate.CLAMP,\n );\n scale = interpolate(\n value,\n inputRange,\n [1 - validLength * scaleInterval, 1, 1],\n Extrapolate.CLAMP,\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [0, 0, rotateZDeg],\n Extrapolate.CLAMP,\n )}deg`;\n translateY = interpolate(\n value,\n inputRange,\n [validLength * stackInterval, 0, 0],\n Extrapolate.CLAMP,\n );\n }\n\n transform.push(\n {\n translateX: translateX!,\n },\n {\n scale: scale!,\n },\n {\n rotateZ: rotateZ!,\n },\n {\n translateY: translateY!,\n },\n );\n\n return styles;\n };\n}\n\nfunction getCommonVariables(opts: {\n value: number\n showLength: number\n snapDirection: \"left\" | \"right\"\n}) {\n \"worklet\";\n\n const { showLength, value: _value, snapDirection } = opts;\n function easeInOutCubic(v: number): number {\n return v < 0.5 ? 4 * v * v * v : 1 - (-2 * v + 2) ** 3 / 2;\n }\n const page = Math.floor(Math.abs(_value));\n const diff = Math.abs(_value) % 1;\n const value\n = _value < 0\n ? -(page + easeInOutCubic(diff))\n : page + easeInOutCubic(diff);\n const validLength = showLength! - 1;\n\n let inputRange: [number, number, number];\n\n if (snapDirection === \"left\")\n inputRange = [-1, 0, validLength];\n else if (snapDirection === \"right\")\n inputRange = [-validLength, 0, 1];\n else\n throw new Error(\"snapDirection must be set to either left or right\");\n\n return {\n inputRange,\n validLength,\n value,\n };\n}\n\nfunction getCommonStyles(opts: {\n value: number\n validLength: number\n opacityInterval: number\n snapDirection: \"left\" | \"right\"\n}) {\n \"worklet\";\n\n const { snapDirection, validLength, value, opacityInterval } = opts;\n\n let zIndex: number;\n let opacity: number;\n\n if (snapDirection === \"left\") {\n zIndex\n = Math.floor(\n interpolate(\n value,\n [-1.5, -1, -1 + Number.MIN_VALUE, 0, validLength],\n [\n Number.MIN_VALUE,\n validLength,\n validLength,\n validLength - 1,\n -1,\n ],\n ) * 10000,\n ) / 100;\n\n opacity = interpolate(\n value,\n [-1, 0, validLength - 1, validLength],\n [0.25, 1, 1 - (validLength - 1) * opacityInterval, 0.25],\n );\n }\n else if (snapDirection === \"right\") {\n zIndex\n = Math.floor(\n interpolate(\n value,\n [-validLength, 0, 1 - Number.MIN_VALUE, 1, 1.5],\n [\n 1,\n validLength - 1,\n validLength,\n validLength,\n Number.MIN_VALUE,\n ],\n ) * 10000,\n ) / 100;\n opacity = interpolate(\n value,\n [-validLength, 1 - validLength, 0, 1],\n [0.25, 1 - (validLength - 1) * opacityInterval, 1, 0.25],\n );\n }\n else {\n throw new Error(\"snapDirection must be set to either left or right\");\n }\n\n return {\n zIndex,\n opacity,\n };\n}\n"]}
1
+ {"version":3,"sources":["stack.ts"],"names":["screen","Dimensions","get","horizontalStackLayout","modeConfig","_value","showLength","snapDirection","moveSize","width","stackInterval","scaleInterval","opacityInterval","rotateZDeg","transform","getCommonVariables","value","validLength","inputRange","getCommonStyles","zIndex","opacity","styles","translateX","scale","rotateZ","Extrapolate","CLAMP","push","interpolate","useHorizontalStackLayout","customAnimationConfig","customConfig","config","type","viewCount","layout","verticalStackLayout","translateY","opts","easeInOutCubic","v","page","Math","floor","abs","diff","Error","Number","MIN_VALUE"],"mappings":"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","sourcesContent":["import { useMemo } from \"react\";\nimport type { TransformsStyle, ViewStyle } from \"react-native\";\nimport { Dimensions } from \"react-native\";\nimport { Extrapolate, interpolate } from \"react-native-reanimated\";\n\nimport type { IComputedDirectionTypes, CustomConfig } from \"../types\";\n\nconst screen = Dimensions.get(\"window\");\n\nexport interface ILayoutConfig {\n showLength?: number\n moveSize?: number\n stackInterval?: number\n scaleInterval?: number\n opacityInterval?: number\n rotateZDeg?: number\n snapDirection?: \"left\" | \"right\"\n}\n\nexport type TStackModeProps = IComputedDirectionTypes<{\n /**\n * Carousel Animated transitions.\n */\n mode?: \"horizontal-stack\" | \"vertical-stack\"\n /**\n * Stack animation style.\n * @default\n * mode: 'vertical',\n * snapDirection: 'right',\n * moveSize: window.width,\n * stackInterval: 30,\n * scaleInterval: 0.08,\n * rotateZDeg: 135,\n */\n modeConfig?: ILayoutConfig\n}>;\n\nexport function horizontalStackLayout(modeConfig: ILayoutConfig = {}) {\n return (_value: number) => {\n \"worklet\";\n\n const {\n showLength,\n snapDirection = \"left\",\n moveSize = screen.width,\n stackInterval = 18,\n scaleInterval = 0.04,\n opacityInterval = 0.1,\n rotateZDeg = 30,\n } = modeConfig;\n\n const transform: TransformsStyle[\"transform\"] = [];\n const { validLength, value, inputRange } = getCommonVariables({\n showLength: showLength!,\n value: _value,\n snapDirection,\n });\n const { zIndex, opacity } = getCommonStyles({\n validLength,\n value,\n opacityInterval,\n snapDirection,\n });\n\n const styles: ViewStyle = {\n transform,\n zIndex,\n opacity,\n };\n\n let translateX: number;\n let scale: number;\n let rotateZ: string;\n\n if (snapDirection === \"left\") {\n translateX = interpolate(\n value,\n inputRange,\n [-moveSize, 0, validLength * stackInterval],\n Extrapolate.CLAMP,\n );\n scale = interpolate(\n value,\n inputRange,\n [1, 1, 1 - validLength * scaleInterval],\n Extrapolate.CLAMP,\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [-rotateZDeg, 0, 0],\n Extrapolate.CLAMP,\n )}deg`;\n }\n else if (snapDirection === \"right\") {\n translateX = interpolate(\n value,\n inputRange,\n [-validLength * stackInterval, 0, moveSize],\n Extrapolate.CLAMP,\n );\n scale = interpolate(\n value,\n inputRange,\n [1 - validLength * scaleInterval, 1, 1],\n Extrapolate.CLAMP,\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [0, 0, rotateZDeg],\n Extrapolate.CLAMP,\n )}deg`;\n }\n\n transform.push(\n {\n translateX: translateX!,\n },\n {\n scale: scale!,\n },\n {\n rotateZ: rotateZ!,\n },\n );\n\n return styles;\n };\n}\n\nexport function useHorizontalStackLayout(\n customAnimationConfig: ILayoutConfig = {},\n customConfig: CustomConfig = {},\n) {\n const config = useMemo(\n () => ({\n type:\n customAnimationConfig.snapDirection === \"right\"\n ? \"negative\"\n : \"positive\",\n viewCount: customAnimationConfig.showLength,\n ...customConfig,\n }),\n [customAnimationConfig, customConfig],\n );\n\n return {\n layout: horizontalStackLayout(customAnimationConfig),\n config,\n };\n}\n\nexport function verticalStackLayout(modeConfig: ILayoutConfig = {}) {\n return (_value: number) => {\n \"worklet\";\n\n const {\n showLength,\n snapDirection = \"left\",\n moveSize = screen.width,\n stackInterval = 18,\n scaleInterval = 0.04,\n opacityInterval = 0.1,\n rotateZDeg = 30,\n } = modeConfig;\n const transform: TransformsStyle[\"transform\"] = [];\n const { validLength, value, inputRange } = getCommonVariables({\n showLength: showLength!,\n value: _value,\n snapDirection,\n });\n const { zIndex, opacity } = getCommonStyles({\n validLength,\n value,\n opacityInterval,\n snapDirection,\n });\n\n const styles: ViewStyle = {\n transform,\n zIndex,\n opacity,\n };\n\n let translateX: number;\n let scale: number;\n let rotateZ: string;\n let translateY: number;\n\n if (snapDirection === \"left\") {\n translateX = interpolate(\n value,\n inputRange,\n [-moveSize, 0, 0],\n Extrapolate.CLAMP,\n );\n scale = interpolate(\n value,\n inputRange,\n [1, 1, 1 - validLength * scaleInterval],\n Extrapolate.CLAMP,\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [-rotateZDeg, 0, 0],\n Extrapolate.CLAMP,\n )}deg`;\n translateY = interpolate(\n value,\n inputRange,\n [0, 0, validLength * stackInterval],\n Extrapolate.CLAMP,\n );\n }\n else if (snapDirection === \"right\") {\n translateX = interpolate(\n value,\n inputRange,\n [0, 0, moveSize],\n Extrapolate.CLAMP,\n );\n scale = interpolate(\n value,\n inputRange,\n [1 - validLength * scaleInterval, 1, 1],\n Extrapolate.CLAMP,\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [0, 0, rotateZDeg],\n Extrapolate.CLAMP,\n )}deg`;\n translateY = interpolate(\n value,\n inputRange,\n [validLength * stackInterval, 0, 0],\n Extrapolate.CLAMP,\n );\n }\n\n transform.push(\n {\n translateX: translateX!,\n },\n {\n scale: scale!,\n },\n {\n rotateZ: rotateZ!,\n },\n {\n translateY: translateY!,\n },\n );\n\n return styles;\n };\n}\n\nfunction getCommonVariables(opts: {\n value: number\n showLength: number\n snapDirection: \"left\" | \"right\"\n}) {\n \"worklet\";\n\n const { showLength, value: _value, snapDirection } = opts;\n function easeInOutCubic(v: number): number {\n return v < 0.5 ? 4 * v * v * v : 1 - (-2 * v + 2) ** 3 / 2;\n }\n const page = Math.floor(Math.abs(_value));\n const diff = Math.abs(_value) % 1;\n const value\n = _value < 0\n ? -(page + easeInOutCubic(diff))\n : page + easeInOutCubic(diff);\n const validLength = showLength! - 1;\n\n let inputRange: [number, number, number];\n\n if (snapDirection === \"left\")\n inputRange = [-1, 0, validLength];\n else if (snapDirection === \"right\")\n inputRange = [-validLength, 0, 1];\n else\n throw new Error(\"snapDirection must be set to either left or right\");\n\n return {\n inputRange,\n validLength,\n value,\n };\n}\n\nfunction getCommonStyles(opts: {\n value: number\n validLength: number\n opacityInterval: number\n snapDirection: \"left\" | \"right\"\n}) {\n \"worklet\";\n\n const { snapDirection, validLength, value, opacityInterval } = opts;\n\n let zIndex: number;\n let opacity: number;\n\n if (snapDirection === \"left\") {\n zIndex\n = Math.floor(\n interpolate(\n value,\n [-1.5, -1, -1 + Number.MIN_VALUE, 0, validLength],\n [\n Number.MIN_VALUE,\n validLength,\n validLength,\n validLength - 1,\n -1,\n ],\n ) * 10000,\n ) / 100;\n\n opacity = interpolate(\n value,\n [-1, 0, validLength - 1, validLength],\n [0.25, 1, 1 - (validLength - 1) * opacityInterval, 0.25],\n );\n }\n else if (snapDirection === \"right\") {\n zIndex\n = Math.floor(\n interpolate(\n value,\n [-validLength, 0, 1 - Number.MIN_VALUE, 1, 1.5],\n [\n 1,\n validLength - 1,\n validLength,\n validLength,\n Number.MIN_VALUE,\n ],\n ) * 10000,\n ) / 100;\n opacity = interpolate(\n value,\n [-validLength, 1 - validLength, 0, 1],\n [0.25, 1 - (validLength - 1) * opacityInterval, 1, 0.25],\n );\n }\n else {\n throw new Error(\"snapDirection must be set to either left or right\");\n }\n\n return {\n zIndex,\n opacity,\n };\n}\n"]}
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});exports.computedFillDataWithAutoFillData=computedFillDataWithAutoFillData;exports.computedOffsetXValueWithAutoFillData=void 0;exports.computedRealIndexWithAutoFillData=computedRealIndexWithAutoFillData;exports.convertToSharedIndex=void 0;var _constants=require("../constants");var SINGLE_ITEM=_constants.DATA_LENGTH.SINGLE_ITEM,DOUBLE_ITEM=_constants.DATA_LENGTH.DOUBLE_ITEM;var isAutoFillData=function(){var _f=function _f(params){return!!params.loop&&!!params.autoFillData;};_f._closure={};_f.asString="function isAutoFillData(params){return!!params.loop&&!!params.autoFillData;}";_f.__workletHash=12581181073993;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/utils/computedWithAutoFillData.ts (5:0)";return _f;}();var convertToSharedIndex=function(){var _f=function _f(params){var loop=params.loop,rawDataLength=params.rawDataLength,index=params.index,autoFillData=params.autoFillData;if(isAutoFillData({loop:loop,autoFillData:autoFillData})){switch(rawDataLength){case SINGLE_ITEM:return 0;case DOUBLE_ITEM:return index%2;}}return index;};_f._closure={isAutoFillData:isAutoFillData,SINGLE_ITEM:SINGLE_ITEM,DOUBLE_ITEM:DOUBLE_ITEM};_f.asString="function convertToSharedIndex(params){const{isAutoFillData,SINGLE_ITEM,DOUBLE_ITEM}=jsThis._closure;{const{loop:loop,rawDataLength:rawDataLength,index:index,autoFillData:autoFillData}=params;if(isAutoFillData({loop:loop,autoFillData:autoFillData})){switch(rawDataLength){case SINGLE_ITEM:return 0;case DOUBLE_ITEM:return index%2;}}return index;}}";_f.__workletHash=15638699687620;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/utils/computedWithAutoFillData.ts (15:7)";return _f;}();exports.convertToSharedIndex=convertToSharedIndex;var computedOffsetXValueWithAutoFillData=function(){var _f=function _f(params){var rawDataLength=params.rawDataLength,value=params.value,size=params.size,loop=params.loop,autoFillData=params.autoFillData;if(isAutoFillData({loop:loop,autoFillData:autoFillData})){switch(rawDataLength){case SINGLE_ITEM:return value%size;case DOUBLE_ITEM:return value%(size*2);}}return value;};_f._closure={isAutoFillData:isAutoFillData,SINGLE_ITEM:SINGLE_ITEM,DOUBLE_ITEM:DOUBLE_ITEM};_f.asString="function computedOffsetXValueWithAutoFillData(params){const{isAutoFillData,SINGLE_ITEM,DOUBLE_ITEM}=jsThis._closure;{const{rawDataLength:rawDataLength,value:value,size:size,loop:loop,autoFillData:autoFillData}=params;if(isAutoFillData({loop:loop,autoFillData:autoFillData})){switch(rawDataLength){case SINGLE_ITEM:return value%size;case DOUBLE_ITEM:return value%(size*2);}}return value;}}";_f.__workletHash=8949924672961;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/utils/computedWithAutoFillData.ts (33:7)";return _f;}();exports.computedOffsetXValueWithAutoFillData=computedOffsetXValueWithAutoFillData;function computedRealIndexWithAutoFillData(params){var index=params.index,dataLength=params.dataLength,loop=params.loop,autoFillData=params.autoFillData;if(isAutoFillData({loop:loop,autoFillData:autoFillData})){switch(dataLength){case SINGLE_ITEM:return index%1;case DOUBLE_ITEM:return index%2;}}return index;}function computedFillDataWithAutoFillData(params){var data=params.data,loop=params.loop,autoFillData=params.autoFillData,dataLength=params.dataLength;if(isAutoFillData({loop:loop,autoFillData:autoFillData})){switch(dataLength){case SINGLE_ITEM:return[data[0],data[0],data[0]];case DOUBLE_ITEM:return[data[0],data[1],data[0],data[1]];}}return data;}
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.computedFillDataWithAutoFillData=computedFillDataWithAutoFillData;exports.computedOffsetXValueWithAutoFillData=void 0;exports.computedRealIndexWithAutoFillData=computedRealIndexWithAutoFillData;exports.convertToSharedIndex=void 0;var _constants=require("../constants");var SINGLE_ITEM=_constants.DATA_LENGTH.SINGLE_ITEM,DOUBLE_ITEM=_constants.DATA_LENGTH.DOUBLE_ITEM;var isAutoFillData=function(){var _f=function _f(params){return!!params.loop&&!!params.autoFillData;};_f._closure={};_f.asString="function isAutoFillData(params){return!!params.loop&&!!params.autoFillData;}";_f.__workletHash=12581181073993;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/utils/computedWithAutoFillData.ts (5:0)";return _f;}();var convertToSharedIndex=function(){var _f=function _f(params){var loop=params.loop,rawDataLength=params.rawDataLength,index=params.index,autoFillData=params.autoFillData;if(isAutoFillData({loop:loop,autoFillData:autoFillData})){switch(rawDataLength){case SINGLE_ITEM:return 0;case DOUBLE_ITEM:return index%2;}}return index;};_f._closure={isAutoFillData:isAutoFillData,SINGLE_ITEM:SINGLE_ITEM,DOUBLE_ITEM:DOUBLE_ITEM};_f.asString="function convertToSharedIndex(params){const{isAutoFillData,SINGLE_ITEM,DOUBLE_ITEM}=jsThis._closure;{const{loop:loop,rawDataLength:rawDataLength,index:index,autoFillData:autoFillData}=params;if(isAutoFillData({loop:loop,autoFillData:autoFillData})){switch(rawDataLength){case SINGLE_ITEM:return 0;case DOUBLE_ITEM:return index%2;}}return index;}}";_f.__workletHash=15638699687620;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/utils/computedWithAutoFillData.ts (15:7)";return _f;}();exports.convertToSharedIndex=convertToSharedIndex;var computedOffsetXValueWithAutoFillData=function(){var _f=function _f(params){var rawDataLength=params.rawDataLength,value=params.value,size=params.size,loop=params.loop,autoFillData=params.autoFillData;if(isAutoFillData({loop:loop,autoFillData:autoFillData})){switch(rawDataLength){case SINGLE_ITEM:return value%size;case DOUBLE_ITEM:return value%(size*2);}}return value;};_f._closure={isAutoFillData:isAutoFillData,SINGLE_ITEM:SINGLE_ITEM,DOUBLE_ITEM:DOUBLE_ITEM};_f.asString="function computedOffsetXValueWithAutoFillData(params){const{isAutoFillData,SINGLE_ITEM,DOUBLE_ITEM}=jsThis._closure;{const{rawDataLength:rawDataLength,value:value,size:size,loop:loop,autoFillData:autoFillData}=params;if(isAutoFillData({loop:loop,autoFillData:autoFillData})){switch(rawDataLength){case SINGLE_ITEM:return value%size;case DOUBLE_ITEM:return value%(size*2);}}return value;}}";_f.__workletHash=8949924672961;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/utils/computedWithAutoFillData.ts (33:7)";return _f;}();exports.computedOffsetXValueWithAutoFillData=computedOffsetXValueWithAutoFillData;function computedRealIndexWithAutoFillData(params){var index=params.index,dataLength=params.dataLength,loop=params.loop,autoFillData=params.autoFillData;if(isAutoFillData({loop:loop,autoFillData:autoFillData})){switch(dataLength){case SINGLE_ITEM:return index%1;case DOUBLE_ITEM:return index%2;}}return index;}function computedFillDataWithAutoFillData(params){var data=params.data,loop=params.loop,autoFillData=params.autoFillData,dataLength=params.dataLength;if(isAutoFillData({loop:loop,autoFillData:autoFillData})){switch(dataLength){case SINGLE_ITEM:return[data[0],data[0],data[0]];case DOUBLE_ITEM:return[data[0],data[1],data[0],data[1]];}}return data;}
2
2
  //# sourceMappingURL=computedWithAutoFillData.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["computedWithAutoFillData.ts"],"names":["SINGLE_ITEM","DATA_LENGTH","DOUBLE_ITEM","isAutoFillData","params","loop","autoFillData","convertToSharedIndex","rawDataLength","index","computedOffsetXValueWithAutoFillData","value","size","computedRealIndexWithAutoFillData","dataLength","computedFillDataWithAutoFillData","data"],"mappings":"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","sourcesContent":["import { DATA_LENGTH } from \"../constants\";\n\nconst { SINGLE_ITEM, DOUBLE_ITEM } = DATA_LENGTH;\n\nfunction isAutoFillData(params: { autoFillData: boolean; loop: boolean }) {\n \"worklet\";\n return !!params.loop && !!params.autoFillData;\n}\n\ntype BaseParams<T extends object = {}> = {\n autoFillData: boolean\n loop: boolean\n} & T;\n\nexport function convertToSharedIndex(\n params: BaseParams<{ index: number; rawDataLength: number }>,\n) {\n \"worklet\";\n const { loop, rawDataLength, index, autoFillData } = params;\n\n if (isAutoFillData({ loop, autoFillData })) {\n switch (rawDataLength) {\n case SINGLE_ITEM:\n return 0;\n case DOUBLE_ITEM:\n return index % 2;\n }\n }\n\n return index;\n}\n\nexport function computedOffsetXValueWithAutoFillData(\n params: BaseParams<{\n rawDataLength: number\n value: number\n size: number\n }>,\n) {\n \"worklet\";\n\n const { rawDataLength, value, size, loop, autoFillData } = params;\n\n if (isAutoFillData({ loop, autoFillData })) {\n switch (rawDataLength) {\n case SINGLE_ITEM:\n return value % size;\n case DOUBLE_ITEM:\n return value % (size * 2);\n }\n }\n\n return value;\n}\n\nexport function computedRealIndexWithAutoFillData(\n params: BaseParams<{\n index: number\n dataLength: number\n }>,\n) {\n const { index, dataLength, loop, autoFillData } = params;\n\n if (isAutoFillData({ loop, autoFillData })) {\n switch (dataLength) {\n case SINGLE_ITEM:\n return index % 1;\n case DOUBLE_ITEM:\n return index % 2;\n }\n }\n\n return index;\n}\n\nexport function computedFillDataWithAutoFillData<T>(\n params: BaseParams<{\n data: T[]\n dataLength: number\n }>,\n): T[] {\n const { data, loop, autoFillData, dataLength } = params;\n\n if (isAutoFillData({ loop, autoFillData })) {\n switch (dataLength) {\n case SINGLE_ITEM:\n return [data[0], data[0], data[0]];\n case DOUBLE_ITEM:\n return [data[0], data[1], data[0], data[1]];\n }\n }\n\n return data;\n}\n"]}
1
+ {"version":3,"sources":["computedWithAutoFillData.ts"],"names":["SINGLE_ITEM","DATA_LENGTH","DOUBLE_ITEM","isAutoFillData","params","loop","autoFillData","convertToSharedIndex","rawDataLength","index","computedOffsetXValueWithAutoFillData","value","size","computedRealIndexWithAutoFillData","dataLength","computedFillDataWithAutoFillData","data"],"mappings":"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","sourcesContent":["import { DATA_LENGTH } from \"../constants\";\n\nconst { SINGLE_ITEM, DOUBLE_ITEM } = DATA_LENGTH;\n\nfunction isAutoFillData(params: { autoFillData: boolean; loop: boolean }) {\n \"worklet\";\n return !!params.loop && !!params.autoFillData;\n}\n\ntype BaseParams<T extends object = {}> = {\n autoFillData: boolean\n loop: boolean\n} & T;\n\nexport function convertToSharedIndex(\n params: BaseParams<{ index: number; rawDataLength: number }>,\n) {\n \"worklet\";\n const { loop, rawDataLength, index, autoFillData } = params;\n\n if (isAutoFillData({ loop, autoFillData })) {\n switch (rawDataLength) {\n case SINGLE_ITEM:\n return 0;\n case DOUBLE_ITEM:\n return index % 2;\n }\n }\n\n return index;\n}\n\nexport function computedOffsetXValueWithAutoFillData(\n params: BaseParams<{\n rawDataLength: number\n value: number\n size: number\n }>,\n) {\n \"worklet\";\n\n const { rawDataLength, value, size, loop, autoFillData } = params;\n\n if (isAutoFillData({ loop, autoFillData })) {\n switch (rawDataLength) {\n case SINGLE_ITEM:\n return value % size;\n case DOUBLE_ITEM:\n return value % (size * 2);\n }\n }\n\n return value;\n}\n\nexport function computedRealIndexWithAutoFillData(\n params: BaseParams<{\n index: number\n dataLength: number\n }>,\n) {\n const { index, dataLength, loop, autoFillData } = params;\n\n if (isAutoFillData({ loop, autoFillData })) {\n switch (dataLength) {\n case SINGLE_ITEM:\n return index % 1;\n case DOUBLE_ITEM:\n return index % 2;\n }\n }\n\n return index;\n}\n\nexport function computedFillDataWithAutoFillData<T>(\n params: BaseParams<{\n data: T[]\n dataLength: number\n }>,\n): T[] {\n const { data, loop, autoFillData, dataLength } = params;\n\n if (isAutoFillData({ loop, autoFillData })) {\n switch (dataLength) {\n case SINGLE_ITEM:\n return [data[0], data[0], data[0]];\n case DOUBLE_ITEM:\n return [data[0], data[1], data[0], data[1]];\n }\n }\n\n return data;\n}\n"]}
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});exports.dealWithAnimation=void 0;var _reactNativeReanimated=require("react-native-reanimated");var dealWithAnimation=function(){var _f=function _f(withAnimation){switch(withAnimation.type){case"spring":return function(value,cb){return(0,_reactNativeReanimated.withSpring)(value,withAnimation.config,function(){var _f=function _f(isFinished){return cb(isFinished);};_f._closure={cb:cb};_f.asString="function _f(isFinished){const{cb}=jsThis._closure;{return cb(isFinished);}}";_f.__workletHash=13669261011863;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/utils/dealWithAnimation.ts (12:55)";return _f;}());};case"timing":return function(value,cb){return(0,_reactNativeReanimated.withTiming)(value,withAnimation.config,function(){var _f=function _f(isFinished){return cb(isFinished);};_f._closure={cb:cb};_f.asString="function _f(isFinished){const{cb}=jsThis._closure;{return cb(isFinished);}}";_f.__workletHash=13669261011863;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/utils/dealWithAnimation.ts (18:55)";return _f;}());};}};_f._closure={withSpring:_reactNativeReanimated.withSpring,withTiming:_reactNativeReanimated.withTiming};_f.asString="function dealWithAnimation(withAnimation){const{withSpring,withTiming}=jsThis._closure;{switch(withAnimation.type){case\"spring\":return function(value,cb){return withSpring(value,withAnimation.config,function(isFinished){return cb(isFinished);});};case\"timing\":return function(value,cb){return withTiming(value,withAnimation.config,function(isFinished){return cb(isFinished);});};}}}";_f.__workletHash=2485591540712;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/utils/dealWithAnimation.ts (5:7)";return _f;}();exports.dealWithAnimation=dealWithAnimation;
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.dealWithAnimation=void 0;var _reactNativeReanimated=require("react-native-reanimated");var dealWithAnimation=function(){var _f=function _f(withAnimation){switch(withAnimation.type){case"spring":return function(value,cb){return(0,_reactNativeReanimated.withSpring)(value,withAnimation.config,function(){var _f=function _f(isFinished){return cb(isFinished);};_f._closure={cb:cb};_f.asString="function _f(isFinished){const{cb}=jsThis._closure;{return cb(isFinished);}}";_f.__workletHash=13669261011863;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/utils/dealWithAnimation.ts (11:68)";return _f;}());};case"timing":return function(value,cb){return(0,_reactNativeReanimated.withTiming)(value,withAnimation.config,function(){var _f=function _f(isFinished){return cb(isFinished);};_f._closure={cb:cb};_f.asString="function _f(isFinished){const{cb}=jsThis._closure;{return cb(isFinished);}}";_f.__workletHash=13669261011863;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/utils/dealWithAnimation.ts (15:68)";return _f;}());};}};_f._closure={withSpring:_reactNativeReanimated.withSpring,withTiming:_reactNativeReanimated.withTiming};_f.asString="function dealWithAnimation(withAnimation){const{withSpring,withTiming}=jsThis._closure;{switch(withAnimation.type){case\"spring\":return function(value,cb){return withSpring(value,withAnimation.config,function(isFinished){return cb(isFinished);});};case\"timing\":return function(value,cb){return withTiming(value,withAnimation.config,function(isFinished){return cb(isFinished);});};}}}";_f.__workletHash=2485591540712;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/utils/dealWithAnimation.ts (5:7)";return _f;}();exports.dealWithAnimation=dealWithAnimation;
2
2
  //# sourceMappingURL=dealWithAnimation.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["dealWithAnimation.ts"],"names":["dealWithAnimation","withAnimation","type","value","cb","config","isFinished","withSpring","withTiming"],"mappings":"0FAAA,8D,GAIgBA,CAAAA,iB,+BACdC,a,CAC8D,CAE9D,OAAQA,aAAa,CAACC,IAAtB,EACE,IAAK,QAAL,CACE,MAAO,UAACC,KAAD,CAAQC,EAAR,CAAe,CACpB,MAAO,sCAAWD,KAAX,CAAkBF,aAAa,CAACI,MAAhC,mBAAwC,YAAAC,UAAU,QACvDF,CAAAA,EAAE,CAACE,UAAD,CADqD,EAAlD,iBAVAF,EAUA,iQAAP,CAGD,CAJD,CAKF,IAAK,QAAL,CACE,MAAO,UAACD,KAAD,CAAQC,EAAR,CAAe,CACpB,MAAO,sCAAWD,KAAX,CAAkBF,aAAa,CAACI,MAAhC,mBAAwC,YAAAC,UAAU,QACvDF,CAAAA,EAAE,CAACE,UAAD,CADqD,EAAlD,iBAhBAF,EAgBA,iQAAP,CAGD,CAJD,CARJ,CAcD,C,yBAjBcG,iC,YAKAC,iC","sourcesContent":["import { withSpring, withTiming } from \"react-native-reanimated\";\n\nimport type { WithAnimation } from \"../types\";\n\nexport function dealWithAnimation(\n withAnimation: WithAnimation,\n): (value: number, cb: (isFinished: boolean) => void) => number {\n \"worklet\";\n switch (withAnimation.type) {\n case \"spring\":\n return (value, cb) => {\n return withSpring(value, withAnimation.config, isFinished =>\n cb(isFinished as boolean),\n );\n };\n case \"timing\":\n return (value, cb) => {\n return withTiming(value, withAnimation.config, isFinished =>\n cb(isFinished as boolean),\n );\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["dealWithAnimation.ts"],"names":["dealWithAnimation","withAnimation","type","value","cb","config","isFinished","withSpring","withTiming"],"mappings":"0FAAA,8D,GAIgBA,CAAAA,iB,+BACdC,a,CAC8D,CAE9D,OAAQA,aAAa,CAACC,IAAtB,EACE,IAAK,QAAL,CACE,MAAO,UAACC,KAAD,CAAQC,EAAR,QAAe,sCAAWD,KAAX,CAAkBF,aAAa,CAACI,MAAhC,mBAAwC,YAAAC,UAAU,QACtEF,CAAAA,EAAE,CAACE,UAAD,CADoE,EAAlD,iBATbF,EASa,qRAAf,EAAP,CAGF,IAAK,QAAL,CACE,MAAO,UAACD,KAAD,CAAQC,EAAR,QAAe,sCAAWD,KAAX,CAAkBF,aAAa,CAACI,MAAhC,mBAAwC,YAAAC,UAAU,QACtEF,CAAAA,EAAE,CAACE,UAAD,CADoE,EAAlD,iBAbbF,EAaa,qRAAf,EAAP,CANJ,CAUD,C,yBAd2BG,iC,YAGAC,iC","sourcesContent":["import { withSpring, withTiming } from \"react-native-reanimated\";\n\nimport type { WithAnimation } from \"../types\";\n\nexport function dealWithAnimation(\n withAnimation: WithAnimation,\n): (value: number, cb: (isFinished: boolean) => void) => number {\n \"worklet\";\n switch (withAnimation.type) {\n case \"spring\":\n return (value, cb) => withSpring(value, withAnimation.config, isFinished =>\n cb(isFinished as boolean),\n );\n case \"timing\":\n return (value, cb) => withTiming(value, withAnimation.config, isFinished =>\n cb(isFinished as boolean),\n );\n }\n}\n"]}
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});exports.handlerOffsetDirection=void 0;var handlerOffsetDirection=function(){var _f=function _f(handlerOffset){var isPositiveZero=Object.is(handlerOffset.value,+0);var isNegativeZero=Object.is(handlerOffset.value,-0);var direction=isPositiveZero?1:isNegativeZero?-1:Math.sign(handlerOffset.value);return direction;};_f._closure={};_f.asString="function handlerOffsetDirection(handlerOffset){const isPositiveZero=Object.is(handlerOffset.value,+0);const isNegativeZero=Object.is(handlerOffset.value,-0);const direction=isPositiveZero?1:isNegativeZero?-1:Math.sign(handlerOffset.value);return direction;}";_f.__workletHash=3485750549090;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/utils/handlerOffsetDirection.ts (3:7)";return _f;}();exports.handlerOffsetDirection=handlerOffsetDirection;
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.handlerOffsetDirection=void 0;var handlerOffsetDirection=function(){var _f=function _f(handlerOffset){var isPositiveZero=Object.is(handlerOffset.value,+0);var isNegativeZero=Object.is(handlerOffset.value,-0);var direction=isPositiveZero?1:isNegativeZero?-1:Math.sign(handlerOffset.value);return direction;};_f._closure={};_f.asString="function handlerOffsetDirection(handlerOffset){const isPositiveZero=Object.is(handlerOffset.value,+0);const isNegativeZero=Object.is(handlerOffset.value,-0);const direction=isPositiveZero?1:isNegativeZero?-1:Math.sign(handlerOffset.value);return direction;}";_f.__workletHash=3485750549090;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/utils/handlerOffsetDirection.ts (3:7)";return _f;}();exports.handlerOffsetDirection=handlerOffsetDirection;
2
2
  //# sourceMappingURL=handlerOffsetDirection.js.map
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});exports.log=log;exports.round=void 0;function log(){var _console;(_console=console).log.apply(_console,arguments);}var round=function(){var _f=function _f(number){return Math.round(number);};_f._closure={};_f.asString="function round(number){return Math.round(number);}";_f.__workletHash=13727510784300;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/utils/log.ts (10:7)";return _f;}();exports.round=round;
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.log=log;exports.round=void 0;function log(){var _console;(_console=console).log.apply(_console,arguments);}var round=function(){var _f=function _f(number){return Math.round(number);};_f._closure={};_f.asString="function round(number){return Math.round(number);}";_f.__workletHash=13727510784300;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/utils/log.ts (10:7)";return _f;}();exports.round=round;
2
2
  //# sourceMappingURL=log.js.map
@@ -2,7 +2,7 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
2
2
 
3
3
  import React from "react";
4
4
  import { PanGestureHandler } from "react-native-gesture-handler";
5
- import Animated, { cancelAnimation, runOnJS, useAnimatedGestureHandler, useAnimatedReaction, useDerivedValue, useSharedValue, withDecay } from "react-native-reanimated";
5
+ import Animated, { cancelAnimation, measure, runOnJS, useAnimatedGestureHandler, useAnimatedReaction, useAnimatedRef, useDerivedValue, useSharedValue, withDecay } from "react-native-reanimated";
6
6
  import { Easing } from "./constants";
7
7
  import { CTX } from "./store";
8
8
  import { dealWithAnimation } from "./utils/dealWithAnimation";
@@ -18,7 +18,8 @@ const IScrollViewGesture = props => {
18
18
  scrollAnimationDuration,
19
19
  withAnimation,
20
20
  enabled,
21
- dataLength
21
+ dataLength,
22
+ overscrollEnabled
22
23
  }
23
24
  } = React.useContext(CTX);
24
25
  const {
@@ -36,8 +37,24 @@ const IScrollViewGesture = props => {
36
37
  const touching = useSharedValue(false);
37
38
  const scrollEndTranslation = useSharedValue(0);
38
39
  const scrollEndVelocity = useSharedValue(0);
40
+ const containerRef = useAnimatedRef(); // Get the limit of the scroll.
39
41
 
40
- const _withSpring = React.useCallback((toValue, onFinished) => {
42
+ const getLimit = React.useCallback(() => {
43
+ "worklet";
44
+
45
+ if (!infinite && !overscrollEnabled) {
46
+ const {
47
+ width: containerWidth = 0
48
+ } = measure(containerRef); // If the item's total width is less than the container's width, then there is no need to scroll.
49
+
50
+ if (dataLength * size < containerWidth) return 0; // Disable the "overscroll" effect
51
+
52
+ return dataLength * size - containerWidth;
53
+ }
54
+
55
+ return dataLength * size;
56
+ }, [infinite, size, dataLength, overscrollEnabled]);
57
+ const withSpring = React.useCallback((toValue, onFinished) => {
41
58
  "worklet";
42
59
 
43
60
  const defaultWithAnimation = {
@@ -53,38 +70,58 @@ const IScrollViewGesture = props => {
53
70
  if (isFinished) onFinished && runOnJS(onFinished)();
54
71
  });
55
72
  }, [scrollAnimationDuration, withAnimation]);
56
-
57
73
  const endWithSpring = React.useCallback(onFinished => {
58
74
  "worklet";
59
75
 
60
76
  const origin = translation.value;
61
- const velocity = scrollEndVelocity.value;
62
-
63
- if (!pagingEnabled) {
64
- /**
65
- * If enabled, releasing the touch will scroll to the nearest item.
66
- * valid when pagingEnabled=false
67
- */
68
- if (snapEnabled) {
69
- const nextPage = Math.round((origin + velocity * 0.4) / size) * size;
70
- translation.value = _withSpring(nextPage, onFinished);
71
- return;
77
+ const velocity = scrollEndVelocity.value; // Default to scroll in the direction of the slide (with deceleration)
78
+
79
+ let finalTranslation = withDecay({
80
+ velocity,
81
+ deceleration: 0.999
82
+ });
83
+ /**
84
+ * The page size is the same as the item size.
85
+ * If direction is vertical, the page size is the height of the item.
86
+ * If direction is horizontal, the page size is the width of the item.
87
+ *
88
+ * `page size` equals to `size` variable.
89
+ * */
90
+
91
+ if (pagingEnabled) {
92
+ // distance with direction
93
+ const offset = -(scrollEndTranslation.value >= 0 ? 1 : -1); // 1 or -1
94
+
95
+ const computed = offset < 0 ? Math.ceil : Math.floor;
96
+ const page = computed(-translation.value / size);
97
+
98
+ if (infinite) {
99
+ const finalPage = page + offset;
100
+ finalTranslation = withSpring(withProcessTranslation(-finalPage * size), onFinished);
101
+ } else {
102
+ const finalPage = Math.min(maxPage - 1, Math.max(0, page + offset));
103
+ finalTranslation = withSpring(withProcessTranslation(-finalPage * size), onFinished);
72
104
  }
105
+ }
73
106
 
74
- translation.value = withDecay({
75
- velocity,
76
- deceleration: 0.999
77
- });
78
- return;
107
+ if (!pagingEnabled && snapEnabled) {
108
+ // scroll to the nearest item
109
+ const nextPage = Math.round((origin + velocity * 0.4) / size) * size;
110
+ finalTranslation = withSpring(withProcessTranslation(nextPage), onFinished);
79
111
  }
80
112
 
81
- const direction = -(scrollEndTranslation.value >= 0 ? 1 : -1);
82
- const computed = direction < 0 ? Math.ceil : Math.floor;
83
- const page = computed(-translation.value / size);
84
- let finalPage = page + direction;
85
- if (!infinite) finalPage = Math.min(maxPage - 1, Math.max(0, finalPage));
86
- translation.value = _withSpring(-finalPage * size, onFinished);
87
- }, [translation, scrollEndVelocity.value, pagingEnabled, size, scrollEndTranslation.value, infinite, _withSpring, snapEnabled, maxPage]);
113
+ translation.value = finalTranslation;
114
+
115
+ function withProcessTranslation(translation) {
116
+ if (!infinite && !overscrollEnabled) {
117
+ const limit = getLimit();
118
+ const sign = Math.sign(translation);
119
+ return sign * Math.max(0, Math.min(limit, Math.abs(translation)));
120
+ }
121
+
122
+ return translation;
123
+ }
124
+ }, [translation, scrollEndVelocity.value, pagingEnabled, size, scrollEndTranslation.value, infinite, withSpring, snapEnabled, maxPage]);
88
125
  const onFinish = React.useCallback(isFinished => {
89
126
  "worklet";
90
127
 
@@ -113,7 +150,7 @@ const IScrollViewGesture = props => {
113
150
  }
114
151
 
115
152
  if (!infinite) {
116
- translation.value = _withSpring(0);
153
+ translation.value = withSpring(0);
117
154
  return;
118
155
  }
119
156
  }
@@ -124,9 +161,9 @@ const IScrollViewGesture = props => {
124
161
  return;
125
162
  }
126
163
 
127
- if (!infinite) translation.value = _withSpring(-((maxPage - 1) * size));
164
+ if (!infinite) translation.value = withSpring(-((maxPage - 1) * size));
128
165
  }
129
- }, [touching.value, translation, maxPage, size, scrollEndTranslation.value, infinite, activeDecay, _withSpring]);
166
+ }, [touching.value, translation, maxPage, size, scrollEndTranslation.value, infinite, activeDecay, withSpring]);
130
167
  useAnimatedReaction(() => translation.value, () => {
131
168
  if (!pagingEnabled) resetBoundary();
132
169
  }, [pagingEnabled, resetBoundary]);
@@ -136,6 +173,7 @@ const IScrollViewGesture = props => {
136
173
  ctx.validStart = true;
137
174
  onScrollBegin && runOnJS(onScrollBegin)();
138
175
  ctx.max = (maxPage - 1) * size;
176
+ if (!infinite && !overscrollEnabled) ctx.max = getLimit();
139
177
  ctx.panOffset = translation.value;
140
178
  },
141
179
  onActive: (e, ctx) => {
@@ -151,15 +189,18 @@ const IScrollViewGesture = props => {
151
189
  } = e;
152
190
  const panTranslation = isHorizontal.value ? translationX : translationY;
153
191
 
154
- if (!infinite && (translation.value > 0 || translation.value < -ctx.max)) {
155
- const boundary = translation.value > 0 ? 0 : -ctx.max;
156
- const fixed = boundary - ctx.panOffset;
157
- const dynamic = panTranslation - fixed;
158
- translation.value = boundary + dynamic * 0.5;
159
- return;
192
+ if (!infinite) {
193
+ if (translation.value > 0 || translation.value < -ctx.max) {
194
+ const boundary = translation.value > 0 ? 0 : -ctx.max;
195
+ const fixed = boundary - ctx.panOffset;
196
+ const dynamic = panTranslation - fixed;
197
+ translation.value = boundary + dynamic * 0.5;
198
+ return;
199
+ }
160
200
  }
161
201
 
162
- translation.value = ctx.panOffset + panTranslation;
202
+ const translationValue = ctx.panOffset + panTranslation;
203
+ translation.value = translationValue;
163
204
  },
164
205
  onEnd: e => {
165
206
  const {
@@ -178,6 +219,7 @@ const IScrollViewGesture = props => {
178
219
  enabled: enabled,
179
220
  onGestureEvent: panGestureEventHandler
180
221
  }), /*#__PURE__*/React.createElement(Animated.View, {
222
+ ref: containerRef,
181
223
  testID: testID,
182
224
  style: style,
183
225
  onTouchStart: onTouchBegin,
@@ -1 +1 @@
1
- {"version":3,"sources":["ScrollViewGesture.tsx"],"names":["React","PanGestureHandler","Animated","cancelAnimation","runOnJS","useAnimatedGestureHandler","useAnimatedReaction","useDerivedValue","useSharedValue","withDecay","Easing","CTX","dealWithAnimation","IScrollViewGesture","props","vertical","pagingEnabled","snapEnabled","panGestureHandlerProps","loop","infinite","scrollAnimationDuration","withAnimation","enabled","dataLength","useContext","size","translation","testID","style","onScrollBegin","onScrollEnd","onTouchBegin","onTouchEnd","maxPage","isHorizontal","touching","scrollEndTranslation","scrollEndVelocity","_withSpring","useCallback","toValue","onFinished","defaultWithAnimation","type","config","duration","easing","easeOutQuart","isFinished","endWithSpring","origin","value","velocity","nextPage","Math","round","deceleration","direction","computed","ceil","floor","page","finalPage","min","max","onFinish","activeDecay","resetBoundary","panGestureEventHandler","onStart","_","ctx","validStart","panOffset","onActive","e","translationX","translationY","panTranslation","boundary","fixed","dynamic","onEnd","velocityX","velocityY","children","ScrollViewGesture"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport type { StyleProp, ViewStyle } from \"react-native\";\nimport type { PanGestureHandlerGestureEvent } from \"react-native-gesture-handler\";\nimport {\n PanGestureHandler,\n} from \"react-native-gesture-handler\";\nimport Animated, {\n cancelAnimation,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedReaction,\n useDerivedValue,\n useSharedValue,\n withDecay,\n} from \"react-native-reanimated\";\n\nimport { Easing } from \"./constants\";\nimport { CTX } from \"./store\";\nimport type { WithTimingAnimation } from \"./types\";\nimport { dealWithAnimation } from \"./utils/dealWithAnimation\";\n\ninterface GestureContext extends Record<string, unknown> {\n validStart: boolean\n panOffset: number\n max: number\n}\n\ninterface Props {\n size: number\n infinite?: boolean\n testID?: string\n style?: StyleProp<ViewStyle>\n onScrollBegin?: () => void\n onScrollEnd?: () => void\n onTouchBegin?: () => void\n onTouchEnd?: () => void\n translation: Animated.SharedValue<number>\n}\n\nconst IScrollViewGesture: React.FC<Props> = (props) => {\n const {\n props: {\n vertical,\n pagingEnabled,\n snapEnabled,\n panGestureHandlerProps,\n loop: infinite,\n scrollAnimationDuration,\n withAnimation,\n enabled,\n dataLength,\n },\n } = React.useContext(CTX);\n\n const {\n size,\n translation,\n testID,\n style = {},\n onScrollBegin,\n onScrollEnd,\n onTouchBegin,\n onTouchEnd,\n } = props;\n\n const maxPage = dataLength;\n const isHorizontal = useDerivedValue(() => !vertical, [vertical]);\n const touching = useSharedValue(false);\n const scrollEndTranslation = useSharedValue(0);\n const scrollEndVelocity = useSharedValue(0);\n\n const _withSpring = React.useCallback(\n (toValue: number, onFinished?: () => void) => {\n \"worklet\";\n const defaultWithAnimation: WithTimingAnimation = {\n type: \"timing\",\n config: {\n duration: scrollAnimationDuration + 100,\n easing: Easing.easeOutQuart,\n },\n };\n\n return dealWithAnimation(withAnimation ?? defaultWithAnimation)(\n toValue,\n (isFinished: boolean) => {\n \"worklet\";\n if (isFinished)\n onFinished && runOnJS(onFinished)();\n },\n );\n },\n [scrollAnimationDuration, withAnimation],\n );\n\n const endWithSpring = React.useCallback(\n (onFinished?: () => void) => {\n \"worklet\";\n const origin = translation.value;\n const velocity = scrollEndVelocity.value;\n if (!pagingEnabled) {\n /**\n * If enabled, releasing the touch will scroll to the nearest item.\n * valid when pagingEnabled=false\n */\n if (snapEnabled) {\n const nextPage\n = Math.round((origin + velocity * 0.4) / size) * size;\n\n translation.value = _withSpring(nextPage, onFinished);\n return;\n }\n translation.value = withDecay({\n velocity,\n deceleration: 0.999,\n });\n return;\n }\n\n const direction = -(scrollEndTranslation.value >= 0 ? 1 : -1);\n const computed = direction < 0 ? Math.ceil : Math.floor;\n const page = computed(-translation.value / size);\n let finalPage = page + direction;\n\n if (!infinite)\n finalPage = Math.min(maxPage - 1, Math.max(0, finalPage));\n\n translation.value = _withSpring(-finalPage * size, onFinished);\n },\n [\n translation,\n scrollEndVelocity.value,\n pagingEnabled,\n size,\n scrollEndTranslation.value,\n infinite,\n _withSpring,\n snapEnabled,\n maxPage,\n ],\n );\n\n const onFinish = React.useCallback(\n (isFinished: boolean) => {\n \"worklet\";\n if (isFinished) {\n touching.value = false;\n onScrollEnd && runOnJS(onScrollEnd)();\n }\n },\n [onScrollEnd, touching],\n );\n\n const activeDecay = React.useCallback(() => {\n \"worklet\";\n touching.value = true;\n translation.value = withDecay(\n { velocity: scrollEndVelocity.value },\n isFinished => onFinish(isFinished as boolean),\n );\n }, [onFinish, scrollEndVelocity.value, touching, translation]);\n\n const resetBoundary = React.useCallback(() => {\n \"worklet\";\n if (touching.value)\n return;\n\n if (translation.value > 0) {\n if (scrollEndTranslation.value < 0) {\n activeDecay();\n return;\n }\n if (!infinite) {\n translation.value = _withSpring(0);\n return;\n }\n }\n\n if (translation.value < -((maxPage - 1) * size)) {\n if (scrollEndTranslation.value > 0) {\n activeDecay();\n return;\n }\n if (!infinite)\n translation.value = _withSpring(-((maxPage - 1) * size));\n }\n }, [\n touching.value,\n translation,\n maxPage,\n size,\n scrollEndTranslation.value,\n infinite,\n activeDecay,\n _withSpring,\n ]);\n\n useAnimatedReaction(\n () => translation.value,\n () => {\n if (!pagingEnabled)\n resetBoundary();\n },\n [pagingEnabled, resetBoundary],\n );\n\n const panGestureEventHandler = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n GestureContext\n >(\n {\n onStart: (_, ctx) => {\n touching.value = true;\n ctx.validStart = true;\n onScrollBegin && runOnJS(onScrollBegin)();\n ctx.max = (maxPage - 1) * size;\n ctx.panOffset = translation.value;\n },\n onActive: (e, ctx) => {\n if (ctx.validStart) {\n ctx.validStart = false;\n cancelAnimation(translation);\n }\n touching.value = true;\n const { translationX, translationY } = e;\n const panTranslation = isHorizontal.value\n ? translationX\n : translationY;\n\n if (\n !infinite\n && (translation.value > 0 || translation.value < -ctx.max)\n ) {\n const boundary = translation.value > 0 ? 0 : -ctx.max;\n const fixed = boundary - ctx.panOffset;\n const dynamic = panTranslation - fixed;\n translation.value = boundary + dynamic * 0.5;\n return;\n }\n\n translation.value = ctx.panOffset + panTranslation;\n },\n onEnd: (e) => {\n const { velocityX, velocityY, translationX, translationY } = e;\n scrollEndVelocity.value = isHorizontal.value\n ? velocityX\n : velocityY;\n scrollEndTranslation.value = isHorizontal.value\n ? translationX\n : translationY;\n\n endWithSpring(onScrollEnd);\n\n if (!infinite)\n touching.value = false;\n },\n },\n [\n pagingEnabled,\n isHorizontal.value,\n infinite,\n maxPage,\n size,\n snapEnabled,\n onScrollBegin,\n onScrollEnd,\n ],\n );\n\n return (\n <PanGestureHandler\n {...panGestureHandlerProps}\n enabled={enabled}\n onGestureEvent={panGestureEventHandler}\n >\n <Animated.View\n testID={testID}\n style={style}\n onTouchStart={onTouchBegin}\n onTouchEnd={onTouchEnd}\n >\n {props.children}\n </Animated.View>\n </PanGestureHandler>\n );\n};\n\nexport const ScrollViewGesture = IScrollViewGesture;\n"]}
1
+ {"version":3,"sources":["ScrollViewGesture.tsx"],"names":["React","PanGestureHandler","Animated","cancelAnimation","measure","runOnJS","useAnimatedGestureHandler","useAnimatedReaction","useAnimatedRef","useDerivedValue","useSharedValue","withDecay","Easing","CTX","dealWithAnimation","IScrollViewGesture","props","vertical","pagingEnabled","snapEnabled","panGestureHandlerProps","loop","infinite","scrollAnimationDuration","withAnimation","enabled","dataLength","overscrollEnabled","useContext","size","translation","testID","style","onScrollBegin","onScrollEnd","onTouchBegin","onTouchEnd","maxPage","isHorizontal","touching","scrollEndTranslation","scrollEndVelocity","containerRef","getLimit","useCallback","width","containerWidth","withSpring","toValue","onFinished","defaultWithAnimation","type","config","duration","easing","easeOutQuart","isFinished","endWithSpring","origin","value","velocity","finalTranslation","deceleration","offset","computed","Math","ceil","floor","page","finalPage","withProcessTranslation","min","max","nextPage","round","limit","sign","abs","onFinish","activeDecay","resetBoundary","panGestureEventHandler","onStart","_","ctx","validStart","panOffset","onActive","e","translationX","translationY","panTranslation","boundary","fixed","dynamic","translationValue","onEnd","velocityX","velocityY","children","ScrollViewGesture"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport type { StyleProp, ViewStyle } from \"react-native\";\nimport type { PanGestureHandlerGestureEvent } from \"react-native-gesture-handler\";\nimport {\n PanGestureHandler,\n} from \"react-native-gesture-handler\";\nimport Animated, {\n cancelAnimation,\n measure,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedReaction,\n useAnimatedRef,\n useDerivedValue,\n useSharedValue,\n withDecay,\n} from \"react-native-reanimated\";\n\nimport { Easing } from \"./constants\";\nimport { CTX } from \"./store\";\nimport type { WithTimingAnimation } from \"./types\";\nimport { dealWithAnimation } from \"./utils/dealWithAnimation\";\n\ninterface GestureContext extends Record<string, unknown> {\n validStart: boolean\n panOffset: number\n max: number\n}\n\ninterface Props {\n size: number\n infinite?: boolean\n testID?: string\n style?: StyleProp<ViewStyle>\n onScrollBegin?: () => void\n onScrollEnd?: () => void\n onTouchBegin?: () => void\n onTouchEnd?: () => void\n translation: Animated.SharedValue<number>\n}\n\nconst IScrollViewGesture: React.FC<Props> = (props) => {\n const {\n props: {\n vertical,\n pagingEnabled,\n snapEnabled,\n panGestureHandlerProps,\n loop: infinite,\n scrollAnimationDuration,\n withAnimation,\n enabled,\n dataLength,\n overscrollEnabled,\n },\n } = React.useContext(CTX);\n\n const {\n size,\n translation,\n testID,\n style = {},\n onScrollBegin,\n onScrollEnd,\n onTouchBegin,\n onTouchEnd,\n } = props;\n\n const maxPage = dataLength;\n const isHorizontal = useDerivedValue(() => !vertical, [vertical]);\n const touching = useSharedValue(false);\n const scrollEndTranslation = useSharedValue(0);\n const scrollEndVelocity = useSharedValue(0);\n const containerRef = useAnimatedRef<Animated.View>();\n\n // Get the limit of the scroll.\n const getLimit = React.useCallback(() => {\n \"worklet\";\n\n if (!infinite && !overscrollEnabled) {\n const { width: containerWidth = 0 } = measure(containerRef);\n\n // If the item's total width is less than the container's width, then there is no need to scroll.\n if (dataLength * size < containerWidth)\n return 0;\n\n // Disable the \"overscroll\" effect\n return dataLength * size - containerWidth;\n }\n\n return dataLength * size;\n }, [infinite, size, dataLength, overscrollEnabled]);\n\n const withSpring = React.useCallback(\n (toValue: number, onFinished?: () => void) => {\n \"worklet\";\n const defaultWithAnimation: WithTimingAnimation = {\n type: \"timing\",\n config: {\n duration: scrollAnimationDuration + 100,\n easing: Easing.easeOutQuart,\n },\n };\n\n return dealWithAnimation(withAnimation ?? defaultWithAnimation)(\n toValue,\n (isFinished: boolean) => {\n \"worklet\";\n if (isFinished)\n onFinished && runOnJS(onFinished)();\n },\n );\n },\n [scrollAnimationDuration, withAnimation],\n );\n\n const endWithSpring = React.useCallback(\n (onFinished?: () => void) => {\n \"worklet\";\n const origin = translation.value;\n const velocity = scrollEndVelocity.value;\n // Default to scroll in the direction of the slide (with deceleration)\n let finalTranslation: number = withDecay({ velocity, deceleration: 0.999 });\n\n /**\n * The page size is the same as the item size.\n * If direction is vertical, the page size is the height of the item.\n * If direction is horizontal, the page size is the width of the item.\n *\n * `page size` equals to `size` variable.\n * */\n if (pagingEnabled) {\n // distance with direction\n const offset = -(scrollEndTranslation.value >= 0 ? 1 : -1); // 1 or -1\n const computed = offset < 0 ? Math.ceil : Math.floor;\n const page = computed(-translation.value / size);\n\n if (infinite) {\n const finalPage = page + offset;\n finalTranslation = withSpring(withProcessTranslation(-finalPage * size), onFinished);\n }\n else {\n const finalPage = Math.min(maxPage - 1, Math.max(0, page + offset));\n finalTranslation = withSpring(withProcessTranslation(-finalPage * size), onFinished);\n }\n }\n\n if (!pagingEnabled && snapEnabled) {\n // scroll to the nearest item\n const nextPage = Math.round((origin + velocity * 0.4) / size) * size;\n finalTranslation = withSpring(withProcessTranslation(nextPage), onFinished);\n }\n\n translation.value = finalTranslation;\n\n function withProcessTranslation(translation: number) {\n if (!infinite && !overscrollEnabled) {\n const limit = getLimit();\n const sign = Math.sign(translation);\n return sign * Math.max(0, Math.min(limit, Math.abs(translation)));\n }\n\n return translation;\n }\n },\n [\n translation,\n scrollEndVelocity.value,\n pagingEnabled,\n size,\n scrollEndTranslation.value,\n infinite,\n withSpring,\n snapEnabled,\n maxPage,\n ],\n );\n\n const onFinish = React.useCallback(\n (isFinished: boolean) => {\n \"worklet\";\n if (isFinished) {\n touching.value = false;\n onScrollEnd && runOnJS(onScrollEnd)();\n }\n },\n [onScrollEnd, touching],\n );\n\n const activeDecay = React.useCallback(() => {\n \"worklet\";\n touching.value = true;\n translation.value = withDecay(\n { velocity: scrollEndVelocity.value },\n isFinished => onFinish(isFinished as boolean),\n );\n }, [onFinish, scrollEndVelocity.value, touching, translation]);\n\n const resetBoundary = React.useCallback(() => {\n \"worklet\";\n if (touching.value)\n return;\n\n if (translation.value > 0) {\n if (scrollEndTranslation.value < 0) {\n activeDecay();\n return;\n }\n if (!infinite) {\n translation.value = withSpring(0);\n return;\n }\n }\n\n if (translation.value < -((maxPage - 1) * size)) {\n if (scrollEndTranslation.value > 0) {\n activeDecay();\n return;\n }\n if (!infinite)\n translation.value = withSpring(-((maxPage - 1) * size));\n }\n }, [\n touching.value,\n translation,\n maxPage,\n size,\n scrollEndTranslation.value,\n infinite,\n activeDecay,\n withSpring,\n ]);\n\n useAnimatedReaction(\n () => translation.value,\n () => {\n if (!pagingEnabled)\n resetBoundary();\n },\n [pagingEnabled, resetBoundary],\n );\n\n const panGestureEventHandler = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n GestureContext\n >(\n {\n onStart: (_, ctx) => {\n touching.value = true;\n ctx.validStart = true;\n onScrollBegin && runOnJS(onScrollBegin)();\n\n ctx.max = (maxPage - 1) * size;\n if (!infinite && !overscrollEnabled)\n ctx.max = getLimit();\n\n ctx.panOffset = translation.value;\n },\n onActive: (e, ctx) => {\n if (ctx.validStart) {\n ctx.validStart = false;\n cancelAnimation(translation);\n }\n touching.value = true;\n const { translationX, translationY } = e;\n const panTranslation = isHorizontal.value\n ? translationX\n : translationY;\n if (!infinite) {\n if ((translation.value > 0 || translation.value < -ctx.max)) {\n const boundary = translation.value > 0 ? 0 : -ctx.max;\n const fixed = boundary - ctx.panOffset;\n const dynamic = panTranslation - fixed;\n translation.value = boundary + dynamic * 0.5;\n return;\n }\n }\n\n const translationValue = ctx.panOffset + panTranslation;\n translation.value = translationValue;\n },\n onEnd: (e) => {\n const { velocityX, velocityY, translationX, translationY } = e;\n scrollEndVelocity.value = isHorizontal.value\n ? velocityX\n : velocityY;\n scrollEndTranslation.value = isHorizontal.value\n ? translationX\n : translationY;\n\n endWithSpring(onScrollEnd);\n\n if (!infinite)\n touching.value = false;\n },\n },\n [\n pagingEnabled,\n isHorizontal.value,\n infinite,\n maxPage,\n size,\n snapEnabled,\n onScrollBegin,\n onScrollEnd,\n ],\n );\n\n return (\n <PanGestureHandler\n {...panGestureHandlerProps}\n enabled={enabled}\n onGestureEvent={panGestureEventHandler}\n >\n <Animated.View\n ref={containerRef}\n testID={testID}\n style={style}\n onTouchStart={onTouchBegin}\n onTouchEnd={onTouchEnd}\n >\n {props.children}\n </Animated.View>\n </PanGestureHandler>\n );\n};\n\nexport const ScrollViewGesture = IScrollViewGesture;\n"]}
@@ -1,4 +1,3 @@
1
- import { describe, expect, it } from "vitest";
2
1
  import { computeNewIndexWhenDataChanges } from "./computeNewIndexWhenDataChanges";
3
2
  describe("should work as expected", () => {
4
3
  const size = 375;
@@ -1 +1 @@
1
- {"version":3,"sources":["index.test.ts"],"names":["describe","expect","it","computeNewIndexWhenDataChanges","size","positive","negative","params","currentIndex","direction","_direction","previousLength","currentLength","handlerOffset","toBe"],"mappings":"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","sourcesContent":["import { describe, expect, it } from \"vitest\";\n\nimport { computeNewIndexWhenDataChanges } from \"./computeNewIndexWhenDataChanges\";\n\ndescribe(\"should work as expected\", () => {\n const size = 375;\n const positive = -1;\n const negative = 1;\n\n const params = (params: {\n direction: \"positive\" | \"negative\"\n currentIndex: number\n previousLength: number\n currentLength: number\n }) => {\n const { currentIndex, direction: _direction, previousLength, currentLength } = params;\n const direction = _direction === \"negative\" ? negative : positive;\n return {\n direction,\n handlerOffset: size * currentIndex * direction,\n size,\n previousLength,\n currentLength,\n };\n };\n\n it(\"The direction is negative, And changing length of data set from 4 to 3, the new index will to be 2.\", async () => {\n const currentIndex = 1;\n const handlerOffset = computeNewIndexWhenDataChanges(params({\n currentIndex,\n direction: \"negative\",\n previousLength: 4,\n currentLength: 3,\n }));\n\n expect(handlerOffset / size).toBe(2 * positive);\n });\n\n it(\"The direction is negative, Changing length of data set from 4 to 3, the index remains original.\", async () => {\n const handlerOffset = computeNewIndexWhenDataChanges(params({\n currentIndex: 2,\n direction: \"negative\",\n previousLength: 4,\n currentLength: 3,\n }));\n\n expect(handlerOffset / size).toBe(1 * negative);\n });\n\n it(\"The direction is positive, Changing length of data set from 4 to 5, the index remains original.\", async () => {\n const handlerOffset = computeNewIndexWhenDataChanges(params({\n currentIndex: 3,\n direction: \"positive\",\n previousLength: 4,\n currentLength: 5,\n }));\n\n expect(handlerOffset / size).toBe(3 * positive);\n });\n\n it(\"The direction is negative, Changing length of data set from 4 to 5, the index remains original.\", async () => {\n const handlerOffset = computeNewIndexWhenDataChanges(params({\n currentIndex: 3,\n direction: \"negative\",\n previousLength: 4,\n currentLength: 5,\n }));\n\n expect(handlerOffset / size).toBe(4 * negative);\n });\n\n it(\"Changing length of data set from 0 to 3, the index remains original.\", async () => {\n const handlerOffset = computeNewIndexWhenDataChanges(params({\n currentIndex: 0,\n direction: \"positive\",\n previousLength: 0,\n currentLength: 3,\n }));\n\n expect(handlerOffset / size).toBe(0 * positive);\n });\n});\n"]}
1
+ {"version":3,"sources":["index.test.ts"],"names":["computeNewIndexWhenDataChanges","describe","size","positive","negative","params","currentIndex","direction","_direction","previousLength","currentLength","handlerOffset","it","expect","toBe"],"mappings":"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","sourcesContent":["import { computeNewIndexWhenDataChanges } from \"./computeNewIndexWhenDataChanges\";\n\ndescribe(\"should work as expected\", () => {\n const size = 375;\n const positive = -1;\n const negative = 1;\n\n const params = (params: {\n direction: \"positive\" | \"negative\"\n currentIndex: number\n previousLength: number\n currentLength: number\n }) => {\n const { currentIndex, direction: _direction, previousLength, currentLength } = params;\n const direction = _direction === \"negative\" ? negative : positive;\n return {\n direction,\n handlerOffset: size * currentIndex * direction,\n size,\n previousLength,\n currentLength,\n };\n };\n\n it(\"The direction is negative, And changing length of data set from 4 to 3, the new index will to be 2.\", async () => {\n const currentIndex = 1;\n const handlerOffset = computeNewIndexWhenDataChanges(params({\n currentIndex,\n direction: \"negative\",\n previousLength: 4,\n currentLength: 3,\n }));\n\n expect(handlerOffset / size).toBe(2 * positive);\n });\n\n it(\"The direction is negative, Changing length of data set from 4 to 3, the index remains original.\", async () => {\n const handlerOffset = computeNewIndexWhenDataChanges(params({\n currentIndex: 2,\n direction: \"negative\",\n previousLength: 4,\n currentLength: 3,\n }));\n\n expect(handlerOffset / size).toBe(1 * negative);\n });\n\n it(\"The direction is positive, Changing length of data set from 4 to 5, the index remains original.\", async () => {\n const handlerOffset = computeNewIndexWhenDataChanges(params({\n currentIndex: 3,\n direction: \"positive\",\n previousLength: 4,\n currentLength: 5,\n }));\n\n expect(handlerOffset / size).toBe(3 * positive);\n });\n\n it(\"The direction is negative, Changing length of data set from 4 to 5, the index remains original.\", async () => {\n const handlerOffset = computeNewIndexWhenDataChanges(params({\n currentIndex: 3,\n direction: \"negative\",\n previousLength: 4,\n currentLength: 5,\n }));\n\n expect(handlerOffset / size).toBe(4 * negative);\n });\n\n it(\"Changing length of data set from 0 to 3, the index remains original.\", async () => {\n const handlerOffset = computeNewIndexWhenDataChanges(params({\n currentIndex: 0,\n direction: \"positive\",\n previousLength: 0,\n currentLength: 3,\n }));\n\n expect(handlerOffset / size).toBe(0 * positive);\n });\n});\n"]}
@@ -7,13 +7,15 @@ export function useInitProps(props) {
7
7
  defaultIndex = 0,
8
8
  data: rawData = [],
9
9
  loop = true,
10
- enabled = true,
11
10
  autoPlayInterval: _autoPlayInterval = 1000,
12
11
  scrollAnimationDuration = 500,
13
12
  style = {},
14
13
  panGestureHandlerProps = {},
15
- pagingEnabled = true,
16
14
  autoFillData = true,
15
+ // switchers
16
+ enabled = true,
17
+ pagingEnabled = true,
18
+ overscrollEnabled = true,
17
19
  snapEnabled = (_props$enableSnap = props.enableSnap) !== null && _props$enableSnap !== void 0 ? _props$enableSnap : true,
18
20
  width: _width,
19
21
  height: _height
@@ -58,6 +60,7 @@ export function useInitProps(props) {
58
60
  panGestureHandlerProps,
59
61
  pagingEnabled,
60
62
  snapEnabled,
63
+ overscrollEnabled,
61
64
  width,
62
65
  height
63
66
  };