react-native-reanimated-carousel 2.2.5-beta.2 → 2.3.1
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 +3 -0
- package/README.zh-CN.md +3 -0
- 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/constants/index.js.map +1 -1
- package/lib/commonjs/hooks/useCarouselController.js.map +1 -1
- package/lib/commonjs/hooks/useCheckMounted.js +2 -0
- package/lib/commonjs/hooks/useCheckMounted.js.map +1 -0
- package/lib/commonjs/hooks/useInitProps.js +1 -1
- package/lib/commonjs/hooks/useInitProps.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/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/module/Carousel.js +10 -7
- package/lib/module/Carousel.js.map +1 -1
- package/lib/module/ScrollViewGesture.js +8 -7
- package/lib/module/ScrollViewGesture.js.map +1 -1
- package/lib/module/constants/index.js.map +1 -1
- package/lib/module/hooks/useCarouselController.js +8 -4
- package/lib/module/hooks/useCarouselController.js.map +1 -1
- package/lib/module/hooks/useCheckMounted.js +12 -0
- package/lib/module/hooks/useCheckMounted.js.map +1 -0
- package/lib/module/hooks/useInitProps.js +6 -2
- package/lib/module/hooks/useInitProps.js.map +1 -1
- package/lib/module/layouts/BaseLayout.js +4 -2
- package/lib/module/layouts/BaseLayout.js.map +1 -1
- package/lib/module/layouts/ParallaxLayout.js +2 -1
- package/lib/module/layouts/ParallaxLayout.js.map +1 -1
- package/lib/module/layouts/parallax.js +5 -3
- package/lib/module/layouts/parallax.js.map +1 -1
- package/lib/module/layouts/stack.js +7 -3
- package/lib/module/layouts/stack.js.map +1 -1
- package/lib/module/utils/log.js +2 -2
- package/lib/module/utils/log.js.map +1 -1
- package/lib/typescript/constants/index.d.ts +2 -1
- package/lib/typescript/hooks/useCheckMounted.d.ts +2 -0
- package/lib/typescript/layouts/ParallaxLayout.d.ts +2 -3
- package/lib/typescript/layouts/parallax.d.ts +8 -3
- package/lib/typescript/types.d.ts +17 -4
- package/package.json +3 -3
- package/src/ScrollViewGesture.tsx +8 -7
- package/src/constants/index.ts +7 -2
- package/src/hooks/useCarouselController.tsx +2 -2
- package/src/hooks/useCheckMounted.ts +14 -0
- package/src/hooks/useInitProps.ts +4 -2
- package/src/layouts/BaseLayout.tsx +8 -5
- package/src/layouts/ParallaxLayout.tsx +13 -11
- package/src/layouts/parallax.ts +15 -7
- package/src/types.ts +24 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ParallaxLayout.tsx"],"names":["ParallaxLayout","props","handlerOffsetX","parallaxScrollingOffset","parallaxScrollingScale","index","width","height","loop","data","children","visibleRanges","vertical","React","useState","shouldUpdate","setShouldUpdate","size","x","offsetXStyle","value","translate","Extrapolate","EXTEND","zIndex","CLAMP","scale","
|
|
1
|
+
{"version":3,"sources":["ParallaxLayout.tsx"],"names":["ParallaxLayout","props","handlerOffsetX","parallaxScrollingOffset","parallaxScrollingScale","parallaxAdjacentItemScale","Math","pow","index","width","height","loop","data","children","visibleRanges","vertical","React","useState","shouldUpdate","setShouldUpdate","size","x","offsetXStyle","value","translate","Extrapolate","EXTEND","zIndex","CLAMP","scale","transform","translateY","translateX","interpolate","updateView","useCallback","negativeRange","positiveRange","runOnJS","position"],"mappings":"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","sourcesContent":["import React from 'react';\nimport Animated, {\n Extrapolate,\n interpolate,\n runOnJS,\n useAnimatedReaction,\n useAnimatedStyle,\n} from 'react-native-reanimated';\nimport type { ComputedDirectionTypes } from 'src/types';\nimport { useOffsetX } from '../hooks/useOffsetX';\nimport type { IVisibleRanges } from '../hooks/useVisibleRanges';\nimport { LazyView } from '../LazyView';\nimport type { ILayoutConfig } from './parallax';\n\nexport const ParallaxLayout: React.FC<\n ComputedDirectionTypes<\n {\n loop?: boolean;\n handlerOffsetX: Animated.SharedValue<number>;\n index: number;\n data: unknown[];\n visibleRanges: IVisibleRanges;\n } & ILayoutConfig\n >\n> = (props) => {\n const {\n handlerOffsetX,\n parallaxScrollingOffset = 100,\n parallaxScrollingScale = 0.8,\n parallaxAdjacentItemScale = Math.pow(parallaxScrollingScale, 2),\n index,\n width,\n height,\n loop,\n data,\n children,\n visibleRanges,\n vertical,\n } = props;\n\n const [shouldUpdate, setShouldUpdate] = React.useState(false);\n\n const size = props.vertical ? props.height : props.width;\n\n const x = useOffsetX(\n {\n handlerOffsetX,\n index,\n size,\n data,\n loop,\n },\n visibleRanges\n );\n\n const offsetXStyle = useAnimatedStyle(() => {\n const value = x.value / size;\n\n const translate = interpolate(\n value,\n [-1, 0, 1],\n [\n -size + parallaxScrollingOffset,\n 0,\n size - parallaxScrollingOffset,\n ],\n Extrapolate.EXTEND\n );\n\n const zIndex = interpolate(\n value,\n [-1, 0, 1],\n [0, size, 0],\n Extrapolate.CLAMP\n );\n\n const scale = interpolate(\n value,\n [-1, 0, 1],\n [\n parallaxAdjacentItemScale,\n parallaxScrollingScale,\n parallaxAdjacentItemScale,\n ],\n Extrapolate.CLAMP\n );\n\n return {\n transform: [\n vertical\n ? {\n translateY: translate,\n }\n : {\n translateX: translate,\n },\n {\n scale,\n },\n ],\n zIndex,\n };\n }, [loop, vertical, parallaxScrollingOffset]);\n\n const updateView = React.useCallback(\n (negativeRange: number[], positiveRange: number[]) => {\n setShouldUpdate(\n (index >= negativeRange[0] && index <= negativeRange[1]) ||\n (index >= positiveRange[0] && index <= positiveRange[1])\n );\n },\n [index]\n );\n\n useAnimatedReaction(\n () => visibleRanges.value,\n () => {\n runOnJS(updateView)(\n visibleRanges.value.negativeRange,\n visibleRanges.value.positiveRange\n );\n },\n [visibleRanges.value]\n );\n\n return (\n <Animated.View\n style={[\n {\n width: width || '100%',\n height: height || '100%',\n position: 'absolute',\n },\n offsetXStyle,\n ]}\n >\n <LazyView shouldUpdate={shouldUpdate}>{children}</LazyView>\n </Animated.View>\n );\n};\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});exports.parallaxLayout=parallaxLayout;var _reactNativeReanimated=require("react-native-reanimated");function parallaxLayout(baseConfig){var modeConfig=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var size=baseConfig.size,vertical=baseConfig.vertical;var _modeConfig$parallaxS=modeConfig.parallaxScrollingOffset,parallaxScrollingOffset=_modeConfig$parallaxS===void 0?100:_modeConfig$parallaxS,_modeConfig$parallaxS2=modeConfig.parallaxScrollingScale,parallaxScrollingScale=_modeConfig$parallaxS2===void 0?0.8:_modeConfig$parallaxS2;return function(){var _f=function _f(value){var translate=(0,_reactNativeReanimated.interpolate)(value,[-1,0,1],[-size+parallaxScrollingOffset,0,size-parallaxScrollingOffset]);var zIndex=(0,_reactNativeReanimated.interpolate)(value,[-1,0,1],[0,size,0],_reactNativeReanimated.Extrapolate.CLAMP);var scale=(0,_reactNativeReanimated.interpolate)(value,[-1,0,1],[
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.parallaxLayout=parallaxLayout;var _reactNativeReanimated=require("react-native-reanimated");function parallaxLayout(baseConfig){var modeConfig=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var size=baseConfig.size,vertical=baseConfig.vertical;var _modeConfig$parallaxS=modeConfig.parallaxScrollingOffset,parallaxScrollingOffset=_modeConfig$parallaxS===void 0?100:_modeConfig$parallaxS,_modeConfig$parallaxS2=modeConfig.parallaxScrollingScale,parallaxScrollingScale=_modeConfig$parallaxS2===void 0?0.8:_modeConfig$parallaxS2,_modeConfig$parallaxA=modeConfig.parallaxAdjacentItemScale,parallaxAdjacentItemScale=_modeConfig$parallaxA===void 0?Math.pow(parallaxScrollingScale,2):_modeConfig$parallaxA;return function(){var _f=function _f(value){var translate=(0,_reactNativeReanimated.interpolate)(value,[-1,0,1],[-size+parallaxScrollingOffset,0,size-parallaxScrollingOffset]);var zIndex=(0,_reactNativeReanimated.interpolate)(value,[-1,0,1],[0,size,0],_reactNativeReanimated.Extrapolate.CLAMP);var scale=(0,_reactNativeReanimated.interpolate)(value,[-1,0,1],[parallaxAdjacentItemScale,parallaxScrollingScale,parallaxAdjacentItemScale],_reactNativeReanimated.Extrapolate.CLAMP);return{transform:[vertical?{translateY:translate}:{translateX:translate},{scale:scale}],zIndex:zIndex};};_f._closure={interpolate:_reactNativeReanimated.interpolate,size:size,parallaxScrollingOffset:parallaxScrollingOffset,Extrapolate:{CLAMP:_reactNativeReanimated.Extrapolate.CLAMP},parallaxAdjacentItemScale:parallaxAdjacentItemScale,parallaxScrollingScale:parallaxScrollingScale,vertical:vertical};_f.asString="function _f(value){const{interpolate,size,parallaxScrollingOffset,Extrapolate,parallaxAdjacentItemScale,parallaxScrollingScale,vertical}=jsThis._closure;{const translate=interpolate(value,[-1,0,1],[-size+parallaxScrollingOffset,0,size-parallaxScrollingOffset]);const zIndex=interpolate(value,[-1,0,1],[0,size,0],Extrapolate.CLAMP);const scale=interpolate(value,[-1,0,1],[parallaxAdjacentItemScale,parallaxScrollingScale,parallaxAdjacentItemScale],Extrapolate.CLAMP);return{transform:[vertical?{translateY:translate}:{translateX:translate},{scale:scale}],zIndex:zIndex};}}";_f.__workletHash=942233491674;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/layouts/parallax.ts (46:11)";global.__reanimatedWorkletInit(_f);return _f;}();}
|
|
2
2
|
//# sourceMappingURL=parallax.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["parallax.ts"],"names":["parallaxLayout","baseConfig","modeConfig","size","vertical","parallaxScrollingOffset","parallaxScrollingScale","value","translate","zIndex","Extrapolate","CLAMP","scale","
|
|
1
|
+
{"version":3,"sources":["parallax.ts"],"names":["parallaxLayout","baseConfig","modeConfig","size","vertical","parallaxScrollingOffset","parallaxScrollingScale","parallaxAdjacentItemScale","Math","pow","value","translate","zIndex","Extrapolate","CLAMP","scale","transform","translateY","translateX","interpolate"],"mappings":"+FAAA,8DAkCO,QAASA,CAAAA,cAAT,CACHC,UADG,CAGL,IADEC,CAAAA,UACF,2DAD8B,EAC9B,CACE,GAAQC,CAAAA,IAAR,CAA2BF,UAA3B,CAAQE,IAAR,CAAcC,QAAd,CAA2BH,UAA3B,CAAcG,QAAd,CACA,0BAIIF,UAJJ,CACIG,uBADJ,CACIA,uBADJ,gCAC8B,GAD9B,8CAIIH,UAJJ,CAEII,sBAFJ,CAEIA,sBAFJ,iCAE6B,GAF7B,8CAIIJ,UAJJ,CAGIK,yBAHJ,CAGIA,yBAHJ,gCAGgCC,IAAI,CAACC,GAAL,CAASH,sBAAT,CAAiC,CAAjC,CAHhC,uBAMA,qCAAQI,KAAR,CAA0B,CAEtB,GAAMC,CAAAA,SAAS,CAAG,uCACdD,KADc,CAEd,CAAC,CAAC,CAAF,CAAK,CAAL,CAAQ,CAAR,CAFc,CAGd,CAAC,CAACP,IAAD,CAAQE,uBAAT,CAAkC,CAAlC,CAAqCF,IAAI,CAAGE,uBAA5C,CAHc,CAAlB,CAMA,GAAMO,CAAAA,MAAM,CAAG,uCACXF,KADW,CAEX,CAAC,CAAC,CAAF,CAAK,CAAL,CAAQ,CAAR,CAFW,CAGX,CAAC,CAAD,CAAIP,IAAJ,CAAU,CAAV,CAHW,CAIXU,mCAAYC,KAJD,CAAf,CAOA,GAAMC,CAAAA,KAAK,CAAG,uCACVL,KADU,CAEV,CAAC,CAAC,CAAF,CAAK,CAAL,CAAQ,CAAR,CAFU,CAGV,CACIH,yBADJ,CAEID,sBAFJ,CAGIC,yBAHJ,CAHU,CAQVM,mCAAYC,KARF,CAAd,CAWA,MAAO,CACHE,SAAS,CAAE,CACPZ,QAAQ,CACF,CACIa,UAAU,CAAEN,SADhB,CADE,CAIF,CACIO,UAAU,CAAEP,SADhB,CALC,CAQP,CACII,KAAK,CAALA,KADJ,CARO,CADR,CAaHH,MAAM,CAANA,MAbG,CAAP,CAeH,CAzCD,0BAzCYO,kCAyCZ,MA1CgDhB,IA0ChD,yBA3C2FE,uBA2C3F,oBAzC2HQ,mCAAYC,KAyCvI,4BAzC+FP,yBAyC/F,wBAzCuED,sBAyCvE,UAvCYF,QAuCZ,owBA0CH","sourcesContent":["import { Extrapolate, interpolate } from 'react-native-reanimated';\nimport type { ComputedDirectionTypes } from '../types';\n\ntype TBaseConfig = {\n size: number;\n vertical: boolean;\n};\n\nexport interface ILayoutConfig {\n /**\n * control prev/next item offset.\n * @default 100\n */\n parallaxScrollingOffset?: number;\n /**\n * control prev/current/next item offset.\n * @default 0.8\n */\n parallaxScrollingScale?: number;\n /**\n * control prev/next item offset.\n * @default Math.pow(parallaxScrollingScale, 2)\n */\n parallaxAdjacentItemScale?: number;\n}\n\nexport type TParallaxModeProps = ComputedDirectionTypes<{\n /**\n * Carousel Animated transitions.\n */\n mode?: 'parallax';\n modeConfig?: ILayoutConfig;\n}>;\n\nexport function parallaxLayout(\n baseConfig: TBaseConfig,\n modeConfig: ILayoutConfig = {}\n) {\n const { size, vertical } = baseConfig;\n const {\n parallaxScrollingOffset = 100,\n parallaxScrollingScale = 0.8,\n parallaxAdjacentItemScale = Math.pow(parallaxScrollingScale, 2),\n } = modeConfig;\n\n return (value: number) => {\n 'worklet';\n const translate = interpolate(\n value,\n [-1, 0, 1],\n [-size + parallaxScrollingOffset, 0, size - parallaxScrollingOffset]\n );\n\n const zIndex = interpolate(\n value,\n [-1, 0, 1],\n [0, size, 0],\n Extrapolate.CLAMP\n );\n\n const scale = interpolate(\n value,\n [-1, 0, 1],\n [\n parallaxAdjacentItemScale,\n parallaxScrollingScale,\n parallaxAdjacentItemScale,\n ],\n Extrapolate.CLAMP\n );\n\n return {\n transform: [\n vertical\n ? {\n translateY: translate,\n }\n : {\n translateX: translate,\n },\n {\n scale,\n },\n ],\n zIndex,\n };\n };\n}\n"]}
|
|
@@ -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);if(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=arguments[i]!=null?arguments[i]:{};if(i%2){ownKeys(Object(source),true).forEach(function(key){(0,_defineProperty2.default)(target,key,source[key]);});}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source));}else{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=3265668150098;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/layouts/stack.ts (37:11)";global.__reanimatedWorkletInit(_f);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=2365281434390;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/layouts/stack.ts (152:11)";global.__reanimatedWorkletInit(_f);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 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-Math.pow(-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 Error('snapDirection must be set to either left or right');}return{inputRange:inputRange,validLength:validLength,value:value};}";_f.__workletHash=3893657980264;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/layouts/stack.ts (259:0)";global.__reanimatedWorkletInit(_f);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 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 Error('snapDirection must be set to either left or right');}return{zIndex:zIndex,opacity:opacity};}}";_f.__workletHash=16145327689090;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/layouts/stack.ts (295:0)";global.__reanimatedWorkletInit(_f);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=3265668150098;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/layouts/stack.ts (37:11)";global.__reanimatedWorkletInit(_f);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=2365281434390;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/layouts/stack.ts (152:11)";global.__reanimatedWorkletInit(_f);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 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-Math.pow(-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 Error('snapDirection must be set to either left or right');}return{inputRange:inputRange,validLength:validLength,value:value};}";_f.__workletHash=3893657980264;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/layouts/stack.ts (259:0)";global.__reanimatedWorkletInit(_f);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 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 Error('snapDirection must be set to either left or right');}return{zIndex:zIndex,opacity:opacity};}}";_f.__workletHash=16145327689090;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/layouts/stack.ts (295:0)";global.__reanimatedWorkletInit(_f);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","Math","pow","page","floor","abs","diff","Error","Number","MIN_VALUE"],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\nimport { Dimensions, TransformsStyle, ViewStyle } from 'react-native';\nimport { Extrapolate, interpolate } from 'react-native-reanimated';\nimport type { ComputedDirectionTypes, 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 = ComputedDirectionTypes<{\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 } 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 } 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 - Math.pow(-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 Error('snapDirection must be set to either left or right');\n }\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 } 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 } else {\n throw 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","Math","pow","page","floor","abs","diff","Error","Number","MIN_VALUE"],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\nimport { Dimensions, TransformsStyle, ViewStyle } from 'react-native';\nimport { Extrapolate, interpolate } from 'react-native-reanimated';\nimport type { ComputedDirectionTypes, 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 = ComputedDirectionTypes<{\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 } 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 } 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 - Math.pow(-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 Error('snapDirection must be set to either left or right');\n }\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 } 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 } else {\n throw Error('snapDirection must be set to either left or right');\n }\n\n return {\n zIndex,\n opacity,\n };\n}\n"]}
|
package/lib/module/Carousel.js
CHANGED
|
@@ -142,13 +142,16 @@ const Carousel = /*#__PURE__*/React.forwardRef((_props, ref) => {
|
|
|
142
142
|
handlerOffsetX: offsetX,
|
|
143
143
|
visibleRanges: visibleRanges,
|
|
144
144
|
animationStyle: customAnimation || layoutConfig
|
|
145
|
-
},
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
145
|
+
}, _ref => {
|
|
146
|
+
let {
|
|
147
|
+
animationValue
|
|
148
|
+
} = _ref;
|
|
149
|
+
return renderItem({
|
|
150
|
+
item,
|
|
151
|
+
index: realIndex,
|
|
152
|
+
animationValue
|
|
153
|
+
});
|
|
154
|
+
});
|
|
152
155
|
}, [rawData, offsetX, visibleRanges, renderItem, layoutConfig, customAnimation]);
|
|
153
156
|
return /*#__PURE__*/React.createElement(CTX.Provider, {
|
|
154
157
|
value: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Carousel.tsx"],"names":["React","Animated","runOnJS","useDerivedValue","useCarouselController","useAutoPlay","usePropsErrorBoundary","ScrollViewGesture","useVisibleRanges","StyleSheet","View","DATA_LENGTH","BaseLayout","useLayoutConfig","useInitProps","CTX","useCommonVariables","useOnProgressChange","Carousel","forwardRef","_props","ref","props","data","rawData","loop","mode","style","width","height","vertical","autoPlay","windowSize","autoPlayReverse","autoPlayInterval","scrollAnimationDuration","withAnimation","renderItem","onScrollEnd","onSnapToItem","onScrollBegin","onProgressChange","customAnimation","commonVariables","size","handlerOffsetX","offsetX","totalSize","length","x","value","isNaN","carouselController","disable","originalLength","_onScrollEnd","onChange","i","duration","next","prev","sharedPreIndex","sharedIndex","computedIndex","getCurrentIndex","start","pause","useCallback","current","scrollViewGestureOnScrollBegin","scrollViewGestureOnScrollEnd","scrollViewGestureOnTouchBegin","scrollViewGestureOnTouchEnd","goToIndex","animated","to","useImperativeHandle","scrollTo","visibleRanges","total","viewSize","translation","layoutConfig","renderLayout","item","realIndex","SINGLE_ITEM","DOUBLE_ITEM","animationValue","index","common","styles","container","itemsVertical","itemsHorizontal","map","create","overflow","flexDirection"],"mappings":"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","sourcesContent":["import React from 'react';\nimport Animated, { runOnJS, useDerivedValue } from 'react-native-reanimated';\n\nimport { useCarouselController } from './hooks/useCarouselController';\nimport { useAutoPlay } from './hooks/useAutoPlay';\nimport { usePropsErrorBoundary } from './hooks/usePropsErrorBoundary';\nimport { ScrollViewGesture } from './ScrollViewGesture';\nimport { useVisibleRanges } from './hooks/useVisibleRanges';\n\nimport type { ICarouselInstance, TCarouselProps } from './types';\nimport { StyleSheet, View } from 'react-native';\nimport { DATA_LENGTH } from './constants';\nimport { BaseLayout } from './layouts/BaseLayout';\nimport { useLayoutConfig } from './hooks/useLayoutConfig';\nimport { useInitProps } from './hooks/useInitProps';\nimport { CTX } from './store';\nimport { useCommonVariables } from './hooks/useCommonVariables';\nimport { useOnProgressChange } from './hooks/useOnProgressChange';\n\nconst Carousel = React.forwardRef<ICarouselInstance, TCarouselProps<any>>(\n (_props, ref) => {\n const props = useInitProps(_props);\n\n const {\n data,\n rawData,\n loop,\n mode,\n style,\n width,\n height,\n vertical,\n autoPlay,\n windowSize,\n autoPlayReverse,\n autoPlayInterval,\n scrollAnimationDuration,\n withAnimation,\n renderItem,\n onScrollEnd,\n onSnapToItem,\n onScrollBegin,\n onProgressChange,\n customAnimation,\n } = props;\n\n const commonVariables = useCommonVariables(props);\n const { size, handlerOffsetX } = commonVariables;\n\n const offsetX = useDerivedValue(() => {\n const totalSize = size * data.length;\n const x = handlerOffsetX.value % totalSize;\n\n if (!loop) {\n return handlerOffsetX.value;\n }\n return isNaN(x) ? 0 : x;\n }, [loop, size, data]);\n\n usePropsErrorBoundary(props);\n useOnProgressChange({ size, offsetX, rawData, onProgressChange });\n\n const carouselController = useCarouselController({\n loop,\n size,\n handlerOffsetX,\n length: data.length,\n disable: !data.length,\n withAnimation,\n originalLength: data.length,\n onScrollEnd: () => runOnJS(_onScrollEnd)(),\n onScrollBegin: () => !!onScrollBegin && runOnJS(onScrollBegin)(),\n onChange: (i) => !!onSnapToItem && runOnJS(onSnapToItem)(i),\n duration: scrollAnimationDuration,\n });\n\n const {\n next,\n prev,\n sharedPreIndex,\n sharedIndex,\n computedIndex,\n getCurrentIndex,\n } = carouselController;\n\n const { start, pause } = useAutoPlay({\n autoPlay,\n autoPlayInterval,\n autoPlayReverse,\n carouselController,\n });\n\n const _onScrollEnd = React.useCallback(() => {\n computedIndex();\n onScrollEnd?.(sharedPreIndex.current, sharedIndex.current);\n }, [sharedPreIndex, sharedIndex, computedIndex, onScrollEnd]);\n\n const scrollViewGestureOnScrollBegin = React.useCallback(() => {\n pause();\n onScrollBegin?.();\n }, [onScrollBegin, pause]);\n\n const scrollViewGestureOnScrollEnd = React.useCallback(() => {\n start();\n _onScrollEnd();\n }, [_onScrollEnd, start]);\n\n const scrollViewGestureOnTouchBegin = React.useCallback(pause, [pause]);\n\n const scrollViewGestureOnTouchEnd = React.useCallback(start, [start]);\n\n const goToIndex = React.useCallback(\n (i: number, animated?: boolean) => {\n carouselController.to(i, animated);\n },\n [carouselController]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n next,\n prev,\n getCurrentIndex,\n goToIndex,\n scrollTo: carouselController.scrollTo,\n }),\n [\n getCurrentIndex,\n goToIndex,\n next,\n prev,\n carouselController.scrollTo,\n ]\n );\n\n const visibleRanges = useVisibleRanges({\n total: data.length,\n viewSize: size,\n translation: handlerOffsetX,\n windowSize,\n });\n\n const layoutConfig = useLayoutConfig({ ...props, size });\n\n const renderLayout = React.useCallback(\n (item: any, i: number) => {\n let realIndex = i;\n if (rawData.length === DATA_LENGTH.SINGLE_ITEM) {\n realIndex = i % 1;\n }\n\n if (rawData.length === DATA_LENGTH.DOUBLE_ITEM) {\n realIndex = i % 2;\n }\n\n return (\n <BaseLayout\n key={i}\n index={i}\n handlerOffsetX={offsetX}\n visibleRanges={visibleRanges}\n animationStyle={customAnimation || layoutConfig}\n >\n {({ animationValue }) =>\n renderItem({\n item,\n index: realIndex,\n animationValue,\n })\n }\n </BaseLayout>\n );\n },\n [\n rawData,\n offsetX,\n visibleRanges,\n renderItem,\n layoutConfig,\n customAnimation,\n ]\n );\n\n return (\n <CTX.Provider value={{ props, common: commonVariables }}>\n <View\n style={[\n styles.container,\n { width: width || '100%', height: height || '100%' },\n style,\n ]}\n >\n <ScrollViewGesture\n size={size}\n translation={handlerOffsetX}\n onScrollBegin={scrollViewGestureOnScrollBegin}\n onScrollEnd={scrollViewGestureOnScrollEnd}\n onTouchBegin={scrollViewGestureOnTouchBegin}\n onTouchEnd={scrollViewGestureOnTouchEnd}\n >\n <Animated.View\n key={mode}\n style={[\n styles.container,\n {\n width: width || '100%',\n height: height || '100%',\n },\n style,\n vertical\n ? styles.itemsVertical\n : styles.itemsHorizontal,\n ]}\n >\n {data.map(renderLayout)}\n </Animated.View>\n </ScrollViewGesture>\n </View>\n </CTX.Provider>\n );\n }\n);\n\nexport default Carousel as <T extends any>(\n props: React.PropsWithChildren<TCarouselProps<T>>\n) => React.ReactElement;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n itemsHorizontal: {\n flexDirection: 'row',\n },\n itemsVertical: {\n flexDirection: 'column',\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["Carousel.tsx"],"names":["React","Animated","runOnJS","useDerivedValue","useCarouselController","useAutoPlay","usePropsErrorBoundary","ScrollViewGesture","useVisibleRanges","StyleSheet","View","DATA_LENGTH","BaseLayout","useLayoutConfig","useInitProps","CTX","useCommonVariables","useOnProgressChange","Carousel","forwardRef","_props","ref","props","data","rawData","loop","mode","style","width","height","vertical","autoPlay","windowSize","autoPlayReverse","autoPlayInterval","scrollAnimationDuration","withAnimation","renderItem","onScrollEnd","onSnapToItem","onScrollBegin","onProgressChange","customAnimation","commonVariables","size","handlerOffsetX","offsetX","totalSize","length","x","value","isNaN","carouselController","disable","originalLength","_onScrollEnd","onChange","i","duration","next","prev","sharedPreIndex","sharedIndex","computedIndex","getCurrentIndex","start","pause","useCallback","current","scrollViewGestureOnScrollBegin","scrollViewGestureOnScrollEnd","scrollViewGestureOnTouchBegin","scrollViewGestureOnTouchEnd","goToIndex","animated","to","useImperativeHandle","scrollTo","visibleRanges","total","viewSize","translation","layoutConfig","renderLayout","item","realIndex","SINGLE_ITEM","DOUBLE_ITEM","animationValue","index","common","styles","container","itemsVertical","itemsHorizontal","map","create","overflow","flexDirection"],"mappings":"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","sourcesContent":["import React from 'react';\nimport Animated, { runOnJS, useDerivedValue } from 'react-native-reanimated';\n\nimport { useCarouselController } from './hooks/useCarouselController';\nimport { useAutoPlay } from './hooks/useAutoPlay';\nimport { usePropsErrorBoundary } from './hooks/usePropsErrorBoundary';\nimport { ScrollViewGesture } from './ScrollViewGesture';\nimport { useVisibleRanges } from './hooks/useVisibleRanges';\n\nimport type { ICarouselInstance, TCarouselProps } from './types';\nimport { StyleSheet, View } from 'react-native';\nimport { DATA_LENGTH } from './constants';\nimport { BaseLayout } from './layouts/BaseLayout';\nimport { useLayoutConfig } from './hooks/useLayoutConfig';\nimport { useInitProps } from './hooks/useInitProps';\nimport { CTX } from './store';\nimport { useCommonVariables } from './hooks/useCommonVariables';\nimport { useOnProgressChange } from './hooks/useOnProgressChange';\n\nconst Carousel = React.forwardRef<ICarouselInstance, TCarouselProps<any>>(\n (_props, ref) => {\n const props = useInitProps(_props);\n\n const {\n data,\n rawData,\n loop,\n mode,\n style,\n width,\n height,\n vertical,\n autoPlay,\n windowSize,\n autoPlayReverse,\n autoPlayInterval,\n scrollAnimationDuration,\n withAnimation,\n renderItem,\n onScrollEnd,\n onSnapToItem,\n onScrollBegin,\n onProgressChange,\n customAnimation,\n } = props;\n\n const commonVariables = useCommonVariables(props);\n const { size, handlerOffsetX } = commonVariables;\n\n const offsetX = useDerivedValue(() => {\n const totalSize = size * data.length;\n const x = handlerOffsetX.value % totalSize;\n\n if (!loop) {\n return handlerOffsetX.value;\n }\n return isNaN(x) ? 0 : x;\n }, [loop, size, data]);\n\n usePropsErrorBoundary(props);\n useOnProgressChange({ size, offsetX, rawData, onProgressChange });\n\n const carouselController = useCarouselController({\n loop,\n size,\n handlerOffsetX,\n length: data.length,\n disable: !data.length,\n withAnimation,\n originalLength: data.length,\n onScrollEnd: () => runOnJS(_onScrollEnd)(),\n onScrollBegin: () => !!onScrollBegin && runOnJS(onScrollBegin)(),\n onChange: (i) => !!onSnapToItem && runOnJS(onSnapToItem)(i),\n duration: scrollAnimationDuration,\n });\n\n const {\n next,\n prev,\n sharedPreIndex,\n sharedIndex,\n computedIndex,\n getCurrentIndex,\n } = carouselController;\n\n const { start, pause } = useAutoPlay({\n autoPlay,\n autoPlayInterval,\n autoPlayReverse,\n carouselController,\n });\n\n const _onScrollEnd = React.useCallback(() => {\n computedIndex();\n onScrollEnd?.(sharedPreIndex.current, sharedIndex.current);\n }, [sharedPreIndex, sharedIndex, computedIndex, onScrollEnd]);\n\n const scrollViewGestureOnScrollBegin = React.useCallback(() => {\n pause();\n onScrollBegin?.();\n }, [onScrollBegin, pause]);\n\n const scrollViewGestureOnScrollEnd = React.useCallback(() => {\n start();\n _onScrollEnd();\n }, [_onScrollEnd, start]);\n\n const scrollViewGestureOnTouchBegin = React.useCallback(pause, [pause]);\n\n const scrollViewGestureOnTouchEnd = React.useCallback(start, [start]);\n\n const goToIndex = React.useCallback(\n (i: number, animated?: boolean) => {\n carouselController.to(i, animated);\n },\n [carouselController]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n next,\n prev,\n getCurrentIndex,\n goToIndex,\n scrollTo: carouselController.scrollTo,\n }),\n [\n getCurrentIndex,\n goToIndex,\n next,\n prev,\n carouselController.scrollTo,\n ]\n );\n\n const visibleRanges = useVisibleRanges({\n total: data.length,\n viewSize: size,\n translation: handlerOffsetX,\n windowSize,\n });\n\n const layoutConfig = useLayoutConfig({ ...props, size });\n\n const renderLayout = React.useCallback(\n (item: any, i: number) => {\n let realIndex = i;\n if (rawData.length === DATA_LENGTH.SINGLE_ITEM) {\n realIndex = i % 1;\n }\n\n if (rawData.length === DATA_LENGTH.DOUBLE_ITEM) {\n realIndex = i % 2;\n }\n\n return (\n <BaseLayout\n key={i}\n index={i}\n handlerOffsetX={offsetX}\n visibleRanges={visibleRanges}\n animationStyle={customAnimation || layoutConfig}\n >\n {({ animationValue }) =>\n renderItem({\n item,\n index: realIndex,\n animationValue,\n })\n }\n </BaseLayout>\n );\n },\n [\n rawData,\n offsetX,\n visibleRanges,\n renderItem,\n layoutConfig,\n customAnimation,\n ]\n );\n\n return (\n <CTX.Provider value={{ props, common: commonVariables }}>\n <View\n style={[\n styles.container,\n { width: width || '100%', height: height || '100%' },\n style,\n ]}\n >\n <ScrollViewGesture\n size={size}\n translation={handlerOffsetX}\n onScrollBegin={scrollViewGestureOnScrollBegin}\n onScrollEnd={scrollViewGestureOnScrollEnd}\n onTouchBegin={scrollViewGestureOnTouchBegin}\n onTouchEnd={scrollViewGestureOnTouchEnd}\n >\n <Animated.View\n key={mode}\n style={[\n styles.container,\n {\n width: width || '100%',\n height: height || '100%',\n },\n style,\n vertical\n ? styles.itemsVertical\n : styles.itemsHorizontal,\n ]}\n >\n {data.map(renderLayout)}\n </Animated.View>\n </ScrollViewGesture>\n </View>\n </CTX.Provider>\n );\n }\n);\n\nexport default Carousel as <T extends any>(\n props: React.PropsWithChildren<TCarouselProps<T>>\n) => React.ReactElement;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n itemsHorizontal: {\n flexDirection: 'row',\n },\n itemsVertical: {\n flexDirection: 'column',\n },\n});\n"]}
|
|
@@ -15,11 +15,12 @@ const IScrollViewGesture = props => {
|
|
|
15
15
|
style,
|
|
16
16
|
data,
|
|
17
17
|
pagingEnabled,
|
|
18
|
-
|
|
18
|
+
snapEnabled,
|
|
19
19
|
panGestureHandlerProps,
|
|
20
20
|
loop: infinite,
|
|
21
21
|
scrollAnimationDuration,
|
|
22
|
-
withAnimation
|
|
22
|
+
withAnimation,
|
|
23
|
+
enabled
|
|
23
24
|
}
|
|
24
25
|
} = React.useContext(CTX);
|
|
25
26
|
const {
|
|
@@ -64,7 +65,7 @@ const IScrollViewGesture = props => {
|
|
|
64
65
|
const velocity = scrollEndVelocity.value;
|
|
65
66
|
|
|
66
67
|
if (!pagingEnabled) {
|
|
67
|
-
if (
|
|
68
|
+
if (snapEnabled) {
|
|
68
69
|
const nextPage = Math.round((origin + velocity * 0.4) / size) * size;
|
|
69
70
|
translation.value = _withSpring(nextPage, onFinished);
|
|
70
71
|
return;
|
|
@@ -86,7 +87,7 @@ const IScrollViewGesture = props => {
|
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
translation.value = _withSpring(-finalPage * size, onFinished);
|
|
89
|
-
}, [infinite, _withSpring, translation, scrollEndVelocity, size, maxPage, pagingEnabled,
|
|
90
|
+
}, [infinite, _withSpring, translation, scrollEndVelocity, size, maxPage, pagingEnabled, snapEnabled]);
|
|
90
91
|
const onFinish = React.useCallback(isFinished => {
|
|
91
92
|
'worklet';
|
|
92
93
|
|
|
@@ -173,15 +174,14 @@ const IScrollViewGesture = props => {
|
|
|
173
174
|
translationY
|
|
174
175
|
} = e;
|
|
175
176
|
scrollEndVelocity.value = isHorizontal.value ? velocityX : velocityY;
|
|
176
|
-
scrollEndTranslation.value = isHorizontal.value ? translationX : translationY;
|
|
177
|
-
|
|
177
|
+
scrollEndTranslation.value = isHorizontal.value ? translationX : translationY;
|
|
178
178
|
endWithSpring(onScrollEnd);
|
|
179
179
|
|
|
180
180
|
if (!infinite) {
|
|
181
181
|
touching.value = false;
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
|
-
}, [pagingEnabled, isHorizontal.value, infinite, maxPage, size,
|
|
184
|
+
}, [pagingEnabled, isHorizontal.value, infinite, maxPage, size, snapEnabled, onScrollBegin, onScrollEnd]);
|
|
185
185
|
const directionStyle = React.useMemo(() => {
|
|
186
186
|
return vertical ? styles.contentHorizontal : styles.contentVertical;
|
|
187
187
|
}, [vertical]);
|
|
@@ -190,6 +190,7 @@ const IScrollViewGesture = props => {
|
|
|
190
190
|
onTouchStart: onTouchBegin,
|
|
191
191
|
onTouchEnd: onTouchEnd
|
|
192
192
|
}, /*#__PURE__*/React.createElement(PanGestureHandler, _extends({}, panGestureHandlerProps, {
|
|
193
|
+
enabled: enabled,
|
|
193
194
|
onGestureEvent: panGestureEventHandler
|
|
194
195
|
}), props.children));
|
|
195
196
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ScrollViewGesture.tsx"],"names":["React","StyleSheet","PanGestureHandler","Animated","cancelAnimation","runOnJS","useAnimatedGestureHandler","useAnimatedReaction","useDerivedValue","useSharedValue","withDecay","Easing","CTX","dealWithAnimation","IScrollViewGesture","props","vertical","style","data","pagingEnabled","enableSnap","panGestureHandlerProps","loop","infinite","scrollAnimationDuration","withAnimation","useContext","translation","size","onScrollBegin","onScrollEnd","onTouchBegin","onTouchEnd","maxPage","length","isHorizontal","touching","scrollEndTranslation","scrollEndVelocity","_withSpring","useCallback","toValue","onFinished","callback","isFinished","defaultWithAnimation","type","config","duration","easing","easeOutQuart","endWithSpring","origin","value","velocity","nextPage","Math","round","deceleration","page","velocityPage","finalPage","min","max","onFinish","activeDecay","resetBoundary","panGestureEventHandler","onStart","_","ctx","panOffset","onActive","e","translationX","translationY","panTranslation","boundary","fixed","dynamic","onEnd","velocityX","velocityY","directionStyle","useMemo","styles","contentHorizontal","contentVertical","container","children","ScrollViewGesture","create","flex","overflow","flexDirection"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleProp, StyleSheet, ViewStyle } from 'react-native';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\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';\nimport { Easing } from './constants';\nimport { CTX } from './store';\nimport type { WithAnimation } from './types';\nimport { dealWithAnimation } from './utils/dealWithAnimation';\n\ntype GestureContext = {\n panOffset: number;\n max: number;\n};\n\ninterface Props {\n size: number;\n infinite?: boolean;\n onScrollBegin?: () => void;\n onScrollEnd?: () => void;\n onTouchBegin?: () => void;\n onTouchEnd?: () => void;\n style?: StyleProp<ViewStyle>;\n translation: Animated.SharedValue<number>;\n}\n\nconst IScrollViewGesture: React.FC<Props> = (props) => {\n const {\n props: {\n vertical,\n style,\n data,\n pagingEnabled,\n enableSnap,\n panGestureHandlerProps,\n loop: infinite,\n scrollAnimationDuration,\n withAnimation,\n },\n } = React.useContext(CTX);\n\n const {\n translation,\n size,\n onScrollBegin,\n onScrollEnd,\n onTouchBegin,\n onTouchEnd,\n } = props;\n\n const maxPage = data.length;\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 callback = (isFinished: boolean) => {\n 'worklet';\n if (isFinished) {\n onFinished && runOnJS(onFinished)();\n }\n };\n\n const defaultWithAnimation: WithAnimation = {\n type: 'timing',\n config: {\n duration: scrollAnimationDuration,\n easing: Easing.easeOutQuart,\n },\n };\n\n return dealWithAnimation(withAnimation ?? defaultWithAnimation)(\n toValue,\n callback\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 if (enableSnap) {\n const nextPage =\n Math.round((origin + velocity * 0.4) / size) * size;\n translation.value = _withSpring(nextPage, onFinished);\n return;\n }\n translation.value = withDecay({\n velocity,\n deceleration: 0.999,\n });\n return;\n }\n const page = Math.round(-translation.value / size);\n const velocityPage = Math.round(\n -(translation.value + scrollEndVelocity.value) / size\n );\n let finalPage = Math.min(\n page + 1,\n Math.max(page - 1, velocityPage)\n );\n if (!infinite) {\n finalPage = Math.min(maxPage - 1, Math.max(0, finalPage));\n }\n\n translation.value = _withSpring(-finalPage * size, onFinished);\n },\n [\n infinite,\n _withSpring,\n translation,\n scrollEndVelocity,\n size,\n maxPage,\n pagingEnabled,\n enableSnap,\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\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 return;\n }\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 },\n [pagingEnabled, resetBoundary]\n );\n\n const panGestureEventHandler = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n GestureContext\n >(\n {\n onStart: (_, ctx) => {\n touching.value = true;\n cancelAnimation(translation);\n onScrollBegin && runOnJS(onScrollBegin)();\n ctx.max = (maxPage - 1) * size;\n ctx.panOffset = translation.value;\n },\n onActive: (e, ctx) => {\n touching.value = true;\n const { translationX, translationY } = e;\n let 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 && runOnJS(onScrollEnd)());\n endWithSpring(onScrollEnd);\n\n if (!infinite) {\n touching.value = false;\n }\n },\n },\n [\n pagingEnabled,\n isHorizontal.value,\n infinite,\n maxPage,\n size,\n enableSnap,\n onScrollBegin,\n onScrollEnd,\n ]\n );\n\n const directionStyle = React.useMemo(() => {\n return vertical ? styles.contentHorizontal : styles.contentVertical;\n }, [vertical]);\n\n return (\n <Animated.View\n style={[styles.container, directionStyle, style]}\n onTouchStart={onTouchBegin}\n onTouchEnd={onTouchEnd}\n >\n <PanGestureHandler\n {...panGestureHandlerProps}\n onGestureEvent={panGestureEventHandler}\n >\n {props.children}\n </PanGestureHandler>\n </Animated.View>\n );\n};\n\nexport const ScrollViewGesture = IScrollViewGesture;\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n contentVertical: {\n flexDirection: 'column',\n },\n contentHorizontal: {\n flexDirection: 'row',\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["ScrollViewGesture.tsx"],"names":["React","StyleSheet","PanGestureHandler","Animated","cancelAnimation","runOnJS","useAnimatedGestureHandler","useAnimatedReaction","useDerivedValue","useSharedValue","withDecay","Easing","CTX","dealWithAnimation","IScrollViewGesture","props","vertical","style","data","pagingEnabled","snapEnabled","panGestureHandlerProps","loop","infinite","scrollAnimationDuration","withAnimation","enabled","useContext","translation","size","onScrollBegin","onScrollEnd","onTouchBegin","onTouchEnd","maxPage","length","isHorizontal","touching","scrollEndTranslation","scrollEndVelocity","_withSpring","useCallback","toValue","onFinished","callback","isFinished","defaultWithAnimation","type","config","duration","easing","easeOutQuart","endWithSpring","origin","value","velocity","nextPage","Math","round","deceleration","page","velocityPage","finalPage","min","max","onFinish","activeDecay","resetBoundary","panGestureEventHandler","onStart","_","ctx","panOffset","onActive","e","translationX","translationY","panTranslation","boundary","fixed","dynamic","onEnd","velocityX","velocityY","directionStyle","useMemo","styles","contentHorizontal","contentVertical","container","children","ScrollViewGesture","create","flex","overflow","flexDirection"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleProp, StyleSheet, ViewStyle } from 'react-native';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\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';\nimport { Easing } from './constants';\nimport { CTX } from './store';\nimport type { WithTimingAnimation } from './types';\nimport { dealWithAnimation } from './utils/dealWithAnimation';\n\ntype GestureContext = {\n panOffset: number;\n max: number;\n};\n\ninterface Props {\n size: number;\n infinite?: boolean;\n onScrollBegin?: () => void;\n onScrollEnd?: () => void;\n onTouchBegin?: () => void;\n onTouchEnd?: () => void;\n style?: StyleProp<ViewStyle>;\n translation: Animated.SharedValue<number>;\n}\n\nconst IScrollViewGesture: React.FC<Props> = (props) => {\n const {\n props: {\n vertical,\n style,\n data,\n pagingEnabled,\n snapEnabled,\n panGestureHandlerProps,\n loop: infinite,\n scrollAnimationDuration,\n withAnimation,\n enabled,\n },\n } = React.useContext(CTX);\n\n const {\n translation,\n size,\n onScrollBegin,\n onScrollEnd,\n onTouchBegin,\n onTouchEnd,\n } = props;\n\n const maxPage = data.length;\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 callback = (isFinished: boolean) => {\n 'worklet';\n if (isFinished) {\n onFinished && runOnJS(onFinished)();\n }\n };\n\n const defaultWithAnimation: WithTimingAnimation = {\n type: 'timing',\n config: {\n duration: scrollAnimationDuration,\n easing: Easing.easeOutQuart,\n },\n };\n\n return dealWithAnimation(withAnimation ?? defaultWithAnimation)(\n toValue,\n callback\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 if (snapEnabled) {\n const nextPage =\n Math.round((origin + velocity * 0.4) / size) * size;\n translation.value = _withSpring(nextPage, onFinished);\n return;\n }\n translation.value = withDecay({\n velocity,\n deceleration: 0.999,\n });\n return;\n }\n const page = Math.round(-translation.value / size);\n const velocityPage = Math.round(\n -(translation.value + scrollEndVelocity.value) / size\n );\n let finalPage = Math.min(\n page + 1,\n Math.max(page - 1, velocityPage)\n );\n if (!infinite) {\n finalPage = Math.min(maxPage - 1, Math.max(0, finalPage));\n }\n\n translation.value = _withSpring(-finalPage * size, onFinished);\n },\n [\n infinite,\n _withSpring,\n translation,\n scrollEndVelocity,\n size,\n maxPage,\n pagingEnabled,\n snapEnabled,\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\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 return;\n }\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 },\n [pagingEnabled, resetBoundary]\n );\n\n const panGestureEventHandler = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n GestureContext\n >(\n {\n onStart: (_, ctx) => {\n touching.value = true;\n cancelAnimation(translation);\n onScrollBegin && runOnJS(onScrollBegin)();\n ctx.max = (maxPage - 1) * size;\n ctx.panOffset = translation.value;\n },\n onActive: (e, ctx) => {\n touching.value = true;\n const { translationX, translationY } = e;\n let 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 [\n pagingEnabled,\n isHorizontal.value,\n infinite,\n maxPage,\n size,\n snapEnabled,\n onScrollBegin,\n onScrollEnd,\n ]\n );\n\n const directionStyle = React.useMemo(() => {\n return vertical ? styles.contentHorizontal : styles.contentVertical;\n }, [vertical]);\n\n return (\n <Animated.View\n style={[styles.container, directionStyle, style]}\n onTouchStart={onTouchBegin}\n onTouchEnd={onTouchEnd}\n >\n <PanGestureHandler\n {...panGestureHandlerProps}\n enabled={enabled}\n onGestureEvent={panGestureEventHandler}\n >\n {props.children}\n </PanGestureHandler>\n </Animated.View>\n );\n};\n\nexport const ScrollViewGesture = IScrollViewGesture;\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n contentVertical: {\n flexDirection: 'column',\n },\n contentHorizontal: {\n flexDirection: 'row',\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["Easing","_Easing","DATA_LENGTH","easeOutQuart","bezier"],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["Easing","_Easing","DATA_LENGTH","easeOutQuart","bezier"],"mappings":"AAAA,SAAmBA,MAAM,IAAIC,OAA7B,QAA4C,yBAA5C;AAEA,WAAYC,WAAZ;;WAAYA,W;AAAAA,EAAAA,W,CAAAA,W;AAAAA,EAAAA,W,CAAAA,W;GAAAA,W,KAAAA,W;;AAKZ,OAAO,MAAMF,MAAM,GAAG;AAClBG,EAAAA,YAAY,EAAEF,OAAO,CAACG,MAAR,CACV,IADU,EAEV,CAFU,EAGV,GAHU,EAIV,CAJU;AADI,CAAf","sourcesContent":["import Animated, { Easing as _Easing } from 'react-native-reanimated';\n\nexport enum DATA_LENGTH {\n SINGLE_ITEM = 1,\n DOUBLE_ITEM = 2,\n}\n\nexport const Easing = {\n easeOutQuart: _Easing.bezier(\n 0.25,\n 1,\n 0.5,\n 1\n ) as unknown as Animated.EasingFunction,\n};\n"]}
|
|
@@ -87,9 +87,10 @@ export function useCarouselController(options) {
|
|
|
87
87
|
};
|
|
88
88
|
return dealWithAnimation(withAnimation !== null && withAnimation !== void 0 ? withAnimation : defaultWithAnimation)(toValue, callback);
|
|
89
89
|
}, [duration, withAnimation, onScrollEnd]);
|
|
90
|
-
const next = React.useCallback((
|
|
90
|
+
const next = React.useCallback(function () {
|
|
91
91
|
'worklet';
|
|
92
92
|
|
|
93
|
+
let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
93
94
|
const {
|
|
94
95
|
count = 1,
|
|
95
96
|
animated = true,
|
|
@@ -107,7 +108,8 @@ export function useCarouselController(options) {
|
|
|
107
108
|
onFinished === null || onFinished === void 0 ? void 0 : onFinished();
|
|
108
109
|
}
|
|
109
110
|
}, [canSliding, loop, index, length, onScrollBegin, handlerOffsetX, size, scrollWithTiming, currentFixedPage]);
|
|
110
|
-
const prev = React.useCallback((
|
|
111
|
+
const prev = React.useCallback(function () {
|
|
112
|
+
let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
111
113
|
const {
|
|
112
114
|
count = 1,
|
|
113
115
|
animated = true,
|
|
@@ -125,7 +127,8 @@ export function useCarouselController(options) {
|
|
|
125
127
|
onFinished === null || onFinished === void 0 ? void 0 : onFinished();
|
|
126
128
|
}
|
|
127
129
|
}, [canSliding, loop, index, onScrollBegin, handlerOffsetX, size, scrollWithTiming, currentFixedPage]);
|
|
128
|
-
const to = React.useCallback((idx
|
|
130
|
+
const to = React.useCallback(function (idx) {
|
|
131
|
+
let animated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
129
132
|
if (idx === index.value) return;
|
|
130
133
|
if (!canSliding()) return;
|
|
131
134
|
onScrollBegin === null || onScrollBegin === void 0 ? void 0 : onScrollBegin();
|
|
@@ -140,7 +143,8 @@ export function useCarouselController(options) {
|
|
|
140
143
|
runOnJS(onScrollEnd)();
|
|
141
144
|
}
|
|
142
145
|
}, [index, canSliding, onScrollBegin, handlerOffsetX, size, scrollWithTiming, onScrollEnd]);
|
|
143
|
-
const scrollTo = React.useCallback((
|
|
146
|
+
const scrollTo = React.useCallback(function () {
|
|
147
|
+
let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
144
148
|
const {
|
|
145
149
|
count,
|
|
146
150
|
animated = false,
|