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.
- package/README.md +9 -0
- package/README.zh-CN.md +38 -30
- package/lib/commonjs/Carousel.js +1 -1
- package/lib/commonjs/Carousel.js.map +1 -1
- package/lib/commonjs/ScrollViewGesture.js +1 -1
- package/lib/commonjs/ScrollViewGesture.js.map +1 -1
- package/lib/commonjs/hooks/computeNewIndexWhenDataChanges.js +1 -1
- package/lib/commonjs/hooks/computeNewIndexWhenDataChanges.js.map +1 -1
- package/lib/commonjs/hooks/index.test.js +1 -1
- package/lib/commonjs/hooks/index.test.js.map +1 -1
- package/lib/commonjs/hooks/useCarouselController.js +1 -1
- package/lib/commonjs/hooks/useCarouselController.js.map +1 -1
- package/lib/commonjs/hooks/useCommonVariables.js +1 -1
- package/lib/commonjs/hooks/useCommonVariables.js.map +1 -1
- package/lib/commonjs/hooks/useInitProps.js +1 -1
- package/lib/commonjs/hooks/useInitProps.js.map +1 -1
- package/lib/commonjs/hooks/useOffsetX.js +1 -1
- package/lib/commonjs/hooks/useOffsetX.js.map +1 -1
- package/lib/commonjs/hooks/useOnProgressChange.js +1 -1
- package/lib/commonjs/hooks/useOnProgressChange.js.map +1 -1
- package/lib/commonjs/hooks/useVisibleRanges.js +1 -1
- package/lib/commonjs/hooks/useVisibleRanges.js.map +1 -1
- package/lib/commonjs/layouts/BaseLayout.js +1 -1
- package/lib/commonjs/layouts/BaseLayout.js.map +1 -1
- package/lib/commonjs/layouts/ParallaxLayout.js +1 -1
- package/lib/commonjs/layouts/ParallaxLayout.js.map +1 -1
- package/lib/commonjs/layouts/normal.js +1 -1
- package/lib/commonjs/layouts/normal.js.map +1 -1
- package/lib/commonjs/layouts/parallax.js +1 -1
- package/lib/commonjs/layouts/parallax.js.map +1 -1
- package/lib/commonjs/layouts/stack.js +1 -1
- package/lib/commonjs/layouts/stack.js.map +1 -1
- package/lib/commonjs/utils/computedWithAutoFillData.js +1 -1
- package/lib/commonjs/utils/computedWithAutoFillData.js.map +1 -1
- package/lib/commonjs/utils/dealWithAnimation.js +1 -1
- package/lib/commonjs/utils/dealWithAnimation.js.map +1 -1
- package/lib/commonjs/utils/handlerOffsetDirection.js +1 -1
- package/lib/commonjs/utils/log.js +1 -1
- package/lib/module/ScrollViewGesture.js +79 -37
- package/lib/module/ScrollViewGesture.js.map +1 -1
- package/lib/module/hooks/index.test.js +0 -1
- package/lib/module/hooks/index.test.js.map +1 -1
- package/lib/module/hooks/useInitProps.js +5 -2
- package/lib/module/hooks/useInitProps.js.map +1 -1
- package/lib/module/layouts/BaseLayout.js +7 -0
- package/lib/module/layouts/BaseLayout.js.map +1 -1
- package/lib/module/utils/dealWithAnimation.js +2 -6
- package/lib/module/utils/dealWithAnimation.js.map +1 -1
- package/lib/typescript/types.d.ts +10 -5
- package/package.json +13 -10
- package/src/ScrollViewGesture.tsx +80 -39
- package/src/hooks/index.test.ts +0 -2
- package/src/hooks/useInitProps.ts +5 -2
- package/src/layouts/BaseLayout.tsx +7 -1
- package/src/types.ts +12 -5
- 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":"wYAAA,4BAEA,yCACA,8D,kxBAIA,GAAMA,CAAAA,MAAM,CAAGC,wBAAWC,GAAX,CAAe,QAAf,CAAf,CA8BO,QAASC,CAAAA,qBAAT,EAA+D,IAAhCC,CAAAA,UAAgC,2DAAJ,EAAI,CACpE,qCAAQC,MAAR,CAA2B,CAGzB,GACEC,CAAAA,UADF,CAQIF,UARJ,CACEE,UADF,uBAQIF,UARJ,CAEEG,aAFF,CAEEA,aAFF,gCAEkB,MAFlB,4CAQIH,UARJ,CAGEI,QAHF,CAGEA,QAHF,+BAGaR,MAAM,CAACS,KAHpB,4CAQIL,UARJ,CAIEM,aAJF,CAIEA,aAJF,gCAIkB,EAJlB,6CAQIN,UARJ,CAKEO,aALF,CAKEA,aALF,gCAKkB,IALlB,6CAQIP,UARJ,CAMEQ,eANF,CAMEA,eANF,gCAMoB,GANpB,6CAQIR,UARJ,CAOES,UAPF,CAOEA,UAPF,gCAOe,EAPf,uBAUA,GAAMC,CAAAA,SAAuC,CAAG,EAAhD,CACA,wBAA2CC,kBAAkB,CAAC,CAC5DT,UAAU,CAAEA,UADgD,CAE5DU,KAAK,CAAEX,MAFqD,CAG5DE,aAAa,CAAbA,aAH4D,CAAD,CAA7D,CAAQU,WAAR,qBAAQA,WAAR,CAAqBD,KAArB,qBAAqBA,KAArB,CAA4BE,UAA5B,qBAA4BA,UAA5B,CAKA,qBAA4BC,eAAe,CAAC,CAC1CF,WAAW,CAAXA,WAD0C,CAE1CD,KAAK,CAALA,KAF0C,CAG1CJ,eAAe,CAAfA,eAH0C,CAI1CL,aAAa,CAAbA,aAJ0C,CAAD,CAA3C,CAAQa,MAAR,kBAAQA,MAAR,CAAgBC,OAAhB,kBAAgBA,OAAhB,CAOA,GAAMC,CAAAA,MAAiB,CAAG,CACxBR,SAAS,CAATA,SADwB,CAExBM,MAAM,CAANA,MAFwB,CAGxBC,OAAO,CAAPA,OAHwB,CAA1B,CAMA,GAAIE,CAAAA,UAAJ,CACA,GAAIC,CAAAA,KAAJ,CACA,GAAIC,CAAAA,OAAJ,CAEA,GAAIlB,aAAa,GAAK,MAAtB,CAA8B,CAC5BgB,UAAU,CAAG,uCACXP,KADW,CAEXE,UAFW,CAGX,CAAC,CAACV,QAAF,CAAY,CAAZ,CAAeS,WAAW,CAAGP,aAA7B,CAHW,CAIXgB,mCAAYC,KAJD,CAAb,CAMAH,KAAK,CAAG,uCACNR,KADM,CAENE,UAFM,CAGN,CAAC,CAAD,CAAI,CAAJ,CAAO,EAAID,WAAW,CAAGN,aAAzB,CAHM,CAINe,mCAAYC,KAJN,CAAR,CAMAF,OAAO,CAAM,uCACXT,KADW,CAEXE,UAFW,CAGX,CAAC,CAACL,UAAF,CAAc,CAAd,CAAiB,CAAjB,CAHW,CAIXa,mCAAYC,KAJD,CAAN,MAAP,CAMD,CAnBD,IAoBK,IAAIpB,aAAa,GAAK,OAAtB,CAA+B,CAClCgB,UAAU,CAAG,uCACXP,KADW,CAEXE,UAFW,CAGX,CAAC,CAACD,WAAD,CAAeP,aAAhB,CAA+B,CAA/B,CAAkCF,QAAlC,CAHW,CAIXkB,mCAAYC,KAJD,CAAb,CAMAH,KAAK,CAAG,uCACNR,KADM,CAENE,UAFM,CAGN,CAAC,EAAID,WAAW,CAAGN,aAAnB,CAAkC,CAAlC,CAAqC,CAArC,CAHM,CAINe,mCAAYC,KAJN,CAAR,CAMAF,OAAO,CAAM,uCACXT,KADW,CAEXE,UAFW,CAGX,CAAC,CAAD,CAAI,CAAJ,CAAOL,UAAP,CAHW,CAIXa,mCAAYC,KAJD,CAAN,MAAP,CAMD,CAEDb,SAAS,CAACc,IAAV,CACE,CACEL,UAAU,CAAEA,UADd,CADF,CAIE,CACEC,KAAK,CAAEA,KADT,CAJF,CAOE,CACEC,OAAO,CAAEA,OADX,CAPF,EAYA,MAAOH,CAAAA,MAAP,CACD,CA1FD,4BAjCatB,MAAM,CAACS,KAiCpB,aA5BIL,UA4BJ,oBAtBIW,kBAsBJ,iBAdII,eAcJ,aAQeU,kCARf,oBAQkEH,mCAAYC,KAR9E,yhDA2FD,CAEM,QAASG,CAAAA,wBAAT,EAGL,IAFAC,CAAAA,qBAEA,2DAFuC,EAEvC,IADAC,CAAAA,YACA,2DAD6B,EAC7B,CACA,GAAMC,CAAAA,MAAM,CAAG,mBACb,iCACEC,IAAI,CACMH,qBAAqB,CAACxB,aAAtB,GAAwC,OAAxC,CACI,UADJ,CAEI,UAJhB,CAKE4B,SAAS,CAAEJ,qBAAqB,CAACzB,UALnC,EAMK0B,YANL,GADa,CASb,CAACD,qBAAD,CAAwBC,YAAxB,CATa,CAAf,CAYA,MAAO,CACLI,MAAM,CAAEjC,qBAAqB,CAAC4B,qBAAD,CADxB,CAELE,MAAM,CAANA,MAFK,CAAP,CAID,CAEM,QAASI,CAAAA,mBAAT,EAA6D,IAAhCjC,CAAAA,UAAgC,2DAAJ,EAAI,CAClE,qCAAQC,MAAR,CAA2B,CAGzB,GACEC,CAAAA,UADF,CAQIF,UARJ,CACEE,UADF,wBAQIF,UARJ,CAEEG,aAFF,CAEEA,aAFF,iCAEkB,MAFlB,8CAQIH,UARJ,CAGEI,QAHF,CAGEA,QAHF,gCAGaR,MAAM,CAACS,KAHpB,8CAQIL,UARJ,CAIEM,aAJF,CAIEA,aAJF,iCAIkB,EAJlB,+CAQIN,UARJ,CAKEO,aALF,CAKEA,aALF,iCAKkB,IALlB,+CAQIP,UARJ,CAMEQ,eANF,CAMEA,eANF,iCAMoB,GANpB,+CAQIR,UARJ,CAOES,UAPF,CAOEA,UAPF,iCAOe,EAPf,wBASA,GAAMC,CAAAA,SAAuC,CAAG,EAAhD,CACA,yBAA2CC,kBAAkB,CAAC,CAC5DT,UAAU,CAAEA,UADgD,CAE5DU,KAAK,CAAEX,MAFqD,CAG5DE,aAAa,CAAbA,aAH4D,CAAD,CAA7D,CAAQU,WAAR,sBAAQA,WAAR,CAAqBD,KAArB,sBAAqBA,KAArB,CAA4BE,UAA5B,sBAA4BA,UAA5B,CAKA,sBAA4BC,eAAe,CAAC,CAC1CF,WAAW,CAAXA,WAD0C,CAE1CD,KAAK,CAALA,KAF0C,CAG1CJ,eAAe,CAAfA,eAH0C,CAI1CL,aAAa,CAAbA,aAJ0C,CAAD,CAA3C,CAAQa,MAAR,mBAAQA,MAAR,CAAgBC,OAAhB,mBAAgBA,OAAhB,CAOA,GAAMC,CAAAA,MAAiB,CAAG,CACxBR,SAAS,CAATA,SADwB,CAExBM,MAAM,CAANA,MAFwB,CAGxBC,OAAO,CAAPA,OAHwB,CAA1B,CAMA,GAAIE,CAAAA,UAAJ,CACA,GAAIC,CAAAA,KAAJ,CACA,GAAIC,CAAAA,OAAJ,CACA,GAAIa,CAAAA,UAAJ,CAEA,GAAI/B,aAAa,GAAK,MAAtB,CAA8B,CAC5BgB,UAAU,CAAG,uCACXP,KADW,CAEXE,UAFW,CAGX,CAAC,CAACV,QAAF,CAAY,CAAZ,CAAe,CAAf,CAHW,CAIXkB,mCAAYC,KAJD,CAAb,CAMAH,KAAK,CAAG,uCACNR,KADM,CAENE,UAFM,CAGN,CAAC,CAAD,CAAI,CAAJ,CAAO,EAAID,WAAW,CAAGN,aAAzB,CAHM,CAINe,mCAAYC,KAJN,CAAR,CAMAF,OAAO,CAAM,uCACXT,KADW,CAEXE,UAFW,CAGX,CAAC,CAACL,UAAF,CAAc,CAAd,CAAiB,CAAjB,CAHW,CAIXa,mCAAYC,KAJD,CAAN,MAAP,CAMAW,UAAU,CAAG,uCACXtB,KADW,CAEXE,UAFW,CAGX,CAAC,CAAD,CAAI,CAAJ,CAAOD,WAAW,CAAGP,aAArB,CAHW,CAIXgB,mCAAYC,KAJD,CAAb,CAMD,CAzBD,IA0BK,IAAIpB,aAAa,GAAK,OAAtB,CAA+B,CAClCgB,UAAU,CAAG,uCACXP,KADW,CAEXE,UAFW,CAGX,CAAC,CAAD,CAAI,CAAJ,CAAOV,QAAP,CAHW,CAIXkB,mCAAYC,KAJD,CAAb,CAMAH,KAAK,CAAG,uCACNR,KADM,CAENE,UAFM,CAGN,CAAC,EAAID,WAAW,CAAGN,aAAnB,CAAkC,CAAlC,CAAqC,CAArC,CAHM,CAINe,mCAAYC,KAJN,CAAR,CAMAF,OAAO,CAAM,uCACXT,KADW,CAEXE,UAFW,CAGX,CAAC,CAAD,CAAI,CAAJ,CAAOL,UAAP,CAHW,CAIXa,mCAAYC,KAJD,CAAN,MAAP,CAMAW,UAAU,CAAG,uCACXtB,KADW,CAEXE,UAFW,CAGX,CAACD,WAAW,CAAGP,aAAf,CAA8B,CAA9B,CAAiC,CAAjC,CAHW,CAIXgB,mCAAYC,KAJD,CAAb,CAMD,CAEDb,SAAS,CAACc,IAAV,CACE,CACEL,UAAU,CAAEA,UADd,CADF,CAIE,CACEC,KAAK,CAAEA,KADT,CAJF,CAOE,CACEC,OAAO,CAAEA,OADX,CAPF,CAUE,CACEa,UAAU,CAAEA,UADd,CAVF,EAeA,MAAOhB,CAAAA,MAAP,CACD,CAzGD,4BArJatB,MAAM,CAACS,KAqJpB,aAhJIL,UAgJJ,oBA1IIW,kBA0IJ,iBAlIII,eAkIJ,aAzGeU,kCAyGf,oBAzGmFH,mCAAYC,KAyG/F,ssDA0GD,C,GAEQZ,CAAAA,kB,+BAAmBwB,I,CAIzB,CAGD,GAAQjC,CAAAA,UAAR,CAAqDiC,IAArD,CAAQjC,UAAR,CAA2BD,MAA3B,CAAqDkC,IAArD,CAAoBvB,KAApB,CAAmCT,aAAnC,CAAqDgC,IAArD,CAAmChC,aAAnC,CACA,QAASiC,CAAAA,cAAT,CAAwBC,CAAxB,CAA2C,CACzC,MAAOA,CAAAA,CAAC,CAAG,GAAJ,CAAU,EAAIA,CAAJ,CAAQA,CAAR,CAAYA,CAAtB,CAA0B,EAAI,SAAC,CAAC,CAAD,CAAKA,CAAL,CAAS,CAAV,CAAgB,CAAhB,EAAoB,CAAzD,CACD,CACD,GAAMC,CAAAA,IAAI,CAAGC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,GAAL,CAASxC,MAAT,CAAX,CAAb,CACA,GAAMyC,CAAAA,IAAI,CAAGH,IAAI,CAACE,GAAL,CAASxC,MAAT,EAAmB,CAAhC,CACA,GAAMW,CAAAA,KAAK,CACHX,MAAM,CAAG,CAAT,CACE,EAAEqC,IAAI,CAAGF,cAAc,CAACM,IAAD,CAAvB,CADF,CAEEJ,IAAI,CAAGF,cAAc,CAACM,IAAD,CAH/B,CAIA,GAAM7B,CAAAA,WAAW,CAAGX,UAAU,CAAI,CAAlC,CAEA,GAAIY,CAAAA,UAAJ,CAEA,GAAIX,aAAa,GAAK,MAAtB,CACEW,UAAU,CAAG,CAAC,CAAC,CAAF,CAAK,CAAL,CAAQD,WAAR,CAAb,CADF,IAEK,IAAIV,aAAa,GAAK,OAAtB,CACHW,UAAU,CAAG,CAAC,CAACD,WAAF,CAAe,CAAf,CAAkB,CAAlB,CAAb,CADG,IAGH,MAAM,IAAI8B,CAAAA,KAAJ,CAAU,mDAAV,CAAN,CAEF,MAAO,CACL7B,UAAU,CAAVA,UADK,CAELD,WAAW,CAAXA,WAFK,CAGLD,KAAK,CAALA,KAHK,CAAP,CAKD,C,mzBAEQG,CAAAA,e,+BAAgBoB,I,CAKtB,CAGD,GAAQhC,CAAAA,aAAR,CAA+DgC,IAA/D,CAAQhC,aAAR,CAAuBU,WAAvB,CAA+DsB,IAA/D,CAAuBtB,WAAvB,CAAoCD,KAApC,CAA+DuB,IAA/D,CAAoCvB,KAApC,CAA2CJ,eAA3C,CAA+D2B,IAA/D,CAA2C3B,eAA3C,CAEA,GAAIQ,CAAAA,MAAJ,CACA,GAAIC,CAAAA,OAAJ,CAEA,GAAId,aAAa,GAAK,MAAtB,CAA8B,CAC5Ba,MAAM,CACIuB,IAAI,CAACC,KAAL,CACN,uCACE5B,KADF,CAEE,CAAC,CAAC,GAAF,CAAO,CAAC,CAAR,CAAW,CAAC,CAAD,CAAKgC,MAAM,CAACC,SAAvB,CAAkC,CAAlC,CAAqChC,WAArC,CAFF,CAGE,CACE+B,MAAM,CAACC,SADT,CAEEhC,WAFF,CAGEA,WAHF,CAIEA,WAAW,CAAG,CAJhB,CAKE,CAAC,CALH,CAHF,EAUI,KAXE,EAYJ,GAbN,CAeAI,OAAO,CAAG,uCACRL,KADQ,CAER,CAAC,CAAC,CAAF,CAAK,CAAL,CAAQC,WAAW,CAAG,CAAtB,CAAyBA,WAAzB,CAFQ,CAGR,CAAC,IAAD,CAAO,CAAP,CAAU,EAAI,CAACA,WAAW,CAAG,CAAf,EAAoBL,eAAlC,CAAmD,IAAnD,CAHQ,CAAV,CAKD,CArBD,IAsBK,IAAIL,aAAa,GAAK,OAAtB,CAA+B,CAClCa,MAAM,CACIuB,IAAI,CAACC,KAAL,CACN,uCACE5B,KADF,CAEE,CAAC,CAACC,WAAF,CAAe,CAAf,CAAkB,EAAI+B,MAAM,CAACC,SAA7B,CAAwC,CAAxC,CAA2C,GAA3C,CAFF,CAGE,CACE,CADF,CAEEhC,WAAW,CAAG,CAFhB,CAGEA,WAHF,CAIEA,WAJF,CAKE+B,MAAM,CAACC,SALT,CAHF,EAUI,KAXE,EAYJ,GAbN,CAcA5B,OAAO,CAAG,uCACRL,KADQ,CAER,CAAC,CAACC,WAAF,CAAe,EAAIA,WAAnB,CAAgC,CAAhC,CAAmC,CAAnC,CAFQ,CAGR,CAAC,IAAD,CAAO,EAAI,CAACA,WAAW,CAAG,CAAf,EAAoBL,eAA/B,CAAgD,CAAhD,CAAmD,IAAnD,CAHQ,CAAV,CAKD,CApBI,IAqBA,CACH,KAAM,IAAImC,CAAAA,KAAJ,CAAU,mDAAV,CAAN,CACD,CAED,MAAO,CACL3B,MAAM,CAANA,MADK,CAELC,OAAO,CAAPA,OAFK,CAAP,CAID,C,0BApVaQ,kC","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="/
|
|
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":"uSAAA,uCAEA,GAAQA,CAAAA,WAAR,CAAqCC,sBAArC,CAAQD,WAAR,CAAqBE,WAArB,CAAqCD,sBAArC,CAAqBC,WAArB,C,GAESC,CAAAA,c,+BAAeC,M,CAAkD,CAExE,MAAO,CAAC,CAACA,MAAM,CAACC,IAAT,EAAiB,CAAC,CAACD,MAAM,CAACE,YAAjC,CACD,C,
|
|
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="/
|
|
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,
|
|
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="/
|
|
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="/
|
|
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
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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 =
|
|
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 =
|
|
164
|
+
if (!infinite) translation.value = withSpring(-((maxPage - 1) * size));
|
|
128
165
|
}
|
|
129
|
-
}, [touching.value, translation, maxPage, size, scrollEndTranslation.value, infinite, activeDecay,
|
|
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
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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
|
-
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.test.ts"],"names":["
|
|
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
|
};
|