react-native-reanimated-carousel 2.2.2 → 2.2.5-beta.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 +1 -1
- package/README.zh-CN.md +1 -1
- package/lib/commonjs/Carousel.js +1 -221
- package/lib/commonjs/Carousel.js.map +1 -1
- package/lib/commonjs/LazyView.js +1 -25
- package/lib/commonjs/LazyView.js.map +1 -1
- package/lib/commonjs/ScrollViewGesture.js +1 -217
- package/lib/commonjs/ScrollViewGesture.js.map +1 -1
- package/lib/commonjs/constants/index.js +1 -21
- package/lib/commonjs/constants/index.js.map +1 -1
- package/lib/commonjs/hooks/useAutoPlay.js +1 -61
- package/lib/commonjs/hooks/useAutoPlay.js.map +1 -1
- package/lib/commonjs/hooks/useCarouselController.js +1 -194
- package/lib/commonjs/hooks/useCarouselController.js.map +1 -1
- package/lib/commonjs/hooks/useCommonVariables.js +1 -36
- package/lib/commonjs/hooks/useCommonVariables.js.map +1 -1
- package/lib/commonjs/hooks/useInitProps.js +1 -70
- package/lib/commonjs/hooks/useInitProps.js.map +1 -1
- package/lib/commonjs/hooks/useLayoutConfig.js +1 -39
- package/lib/commonjs/hooks/useLayoutConfig.js.map +1 -1
- package/lib/commonjs/hooks/useOffsetX.js +1 -54
- package/lib/commonjs/hooks/useOffsetX.js.map +1 -1
- package/lib/commonjs/hooks/useOnProgressChange.js +1 -38
- package/lib/commonjs/hooks/useOnProgressChange.js.map +1 -1
- package/lib/commonjs/hooks/usePropsErrorBoundary.js +1 -37
- package/lib/commonjs/hooks/usePropsErrorBoundary.js.map +1 -1
- package/lib/commonjs/hooks/useVisibleRanges.js +1 -42
- package/lib/commonjs/hooks/useVisibleRanges.js.map +1 -1
- package/lib/commonjs/index.js +1 -13
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/layouts/BaseLayout.js +1 -100
- package/lib/commonjs/layouts/BaseLayout.js.map +1 -1
- package/lib/commonjs/layouts/ParallaxLayout.js +1 -82
- package/lib/commonjs/layouts/ParallaxLayout.js.map +1 -1
- package/lib/commonjs/layouts/index.js +1 -20
- package/lib/commonjs/layouts/index.js.map +1 -1
- package/lib/commonjs/layouts/normal.js +1 -27
- package/lib/commonjs/layouts/normal.js.map +1 -1
- package/lib/commonjs/layouts/parallax.js +1 -36
- package/lib/commonjs/layouts/parallax.js.map +1 -1
- package/lib/commonjs/layouts/stack.js +1 -219
- package/lib/commonjs/layouts/stack.js.map +1 -1
- package/lib/commonjs/store/index.js +1 -14
- package/lib/commonjs/store/index.js.map +1 -1
- package/lib/commonjs/types.js +1 -5
- package/lib/commonjs/utils/dealWithAnimation.js +2 -0
- package/lib/commonjs/utils/dealWithAnimation.js.map +1 -0
- package/lib/commonjs/utils/log.js +1 -14
- package/lib/commonjs/utils/log.js.map +1 -1
- package/lib/module/Carousel.js +14 -10
- package/lib/module/Carousel.js.map +1 -1
- package/lib/module/ScrollViewGesture.js +46 -29
- package/lib/module/ScrollViewGesture.js.map +1 -1
- package/lib/module/hooks/useAutoPlay.js +5 -1
- package/lib/module/hooks/useAutoPlay.js.map +1 -1
- package/lib/module/hooks/useCarouselController.js +21 -7
- package/lib/module/hooks/useCarouselController.js.map +1 -1
- package/lib/module/layouts/BaseLayout.js +2 -1
- package/lib/module/layouts/BaseLayout.js.map +1 -1
- package/lib/module/layouts/stack.js.map +1 -1
- package/lib/module/utils/dealWithAnimation.js +17 -0
- package/lib/module/utils/dealWithAnimation.js.map +1 -0
- package/lib/typescript/Carousel.d.ts +3 -4
- package/lib/typescript/ScrollViewGesture.d.ts +3 -1
- package/lib/typescript/hooks/useCarouselController.d.ts +2 -1
- package/lib/typescript/layouts/BaseLayout.d.ts +2 -2
- package/lib/typescript/layouts/stack.d.ts +1 -1
- package/lib/typescript/types.d.ts +14 -2
- package/lib/typescript/utils/dealWithAnimation.d.ts +2 -0
- package/package.json +12 -2
- package/src/Carousel.tsx +203 -188
- package/src/ScrollViewGesture.tsx +70 -33
- package/src/hooks/useAutoPlay.ts +4 -1
- package/src/hooks/useCarouselController.tsx +28 -12
- package/src/layouts/BaseLayout.tsx +3 -3
- package/src/layouts/stack.ts +1 -1
- package/src/types.ts +22 -4
- package/src/utils/dealWithAnimation.ts +22 -0
|
@@ -1,83 +1,2 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.ParallaxLayout = void 0;
|
|
7
|
-
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
|
|
10
|
-
var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
|
|
11
|
-
|
|
12
|
-
var _useOffsetX = require("../hooks/useOffsetX");
|
|
13
|
-
|
|
14
|
-
var _LazyView = require("../LazyView");
|
|
15
|
-
|
|
16
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
-
|
|
18
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
-
|
|
20
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
-
|
|
22
|
-
const ParallaxLayout = props => {
|
|
23
|
-
const {
|
|
24
|
-
handlerOffsetX,
|
|
25
|
-
parallaxScrollingOffset = 100,
|
|
26
|
-
parallaxScrollingScale = 0.8,
|
|
27
|
-
index,
|
|
28
|
-
width,
|
|
29
|
-
height,
|
|
30
|
-
loop,
|
|
31
|
-
data,
|
|
32
|
-
children,
|
|
33
|
-
visibleRanges,
|
|
34
|
-
vertical
|
|
35
|
-
} = props;
|
|
36
|
-
|
|
37
|
-
const [shouldUpdate, setShouldUpdate] = _react.default.useState(false);
|
|
38
|
-
|
|
39
|
-
const size = props.vertical ? props.height : props.width;
|
|
40
|
-
const x = (0, _useOffsetX.useOffsetX)({
|
|
41
|
-
handlerOffsetX,
|
|
42
|
-
index,
|
|
43
|
-
size,
|
|
44
|
-
data,
|
|
45
|
-
loop
|
|
46
|
-
}, visibleRanges);
|
|
47
|
-
const offsetXStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
|
|
48
|
-
const value = x.value / size;
|
|
49
|
-
const translate = (0, _reactNativeReanimated.interpolate)(value, [-1, 0, 1], [-size + parallaxScrollingOffset, 0, size - parallaxScrollingOffset], _reactNativeReanimated.Extrapolate.EXTEND);
|
|
50
|
-
const zIndex = (0, _reactNativeReanimated.interpolate)(value, [-1, 0, 1], [0, size, 0], _reactNativeReanimated.Extrapolate.CLAMP);
|
|
51
|
-
const scale = (0, _reactNativeReanimated.interpolate)(value, [-1, 0, 1], [Math.pow(parallaxScrollingScale, 2), parallaxScrollingScale, Math.pow(parallaxScrollingScale, 2)], _reactNativeReanimated.Extrapolate.CLAMP);
|
|
52
|
-
return {
|
|
53
|
-
transform: [vertical ? {
|
|
54
|
-
translateY: translate
|
|
55
|
-
} : {
|
|
56
|
-
translateX: translate
|
|
57
|
-
}, {
|
|
58
|
-
scale
|
|
59
|
-
}],
|
|
60
|
-
zIndex
|
|
61
|
-
};
|
|
62
|
-
}, [loop, vertical, parallaxScrollingOffset]);
|
|
63
|
-
|
|
64
|
-
const updateView = _react.default.useCallback((negativeRange, positiveRange) => {
|
|
65
|
-
setShouldUpdate(index >= negativeRange[0] && index <= negativeRange[1] || index >= positiveRange[0] && index <= positiveRange[1]);
|
|
66
|
-
}, [index]);
|
|
67
|
-
|
|
68
|
-
(0, _reactNativeReanimated.useAnimatedReaction)(() => visibleRanges.value, () => {
|
|
69
|
-
(0, _reactNativeReanimated.runOnJS)(updateView)(visibleRanges.value.negativeRange, visibleRanges.value.positiveRange);
|
|
70
|
-
}, [visibleRanges.value]);
|
|
71
|
-
return /*#__PURE__*/_react.default.createElement(_reactNativeReanimated.default.View, {
|
|
72
|
-
style: [{
|
|
73
|
-
width: width || '100%',
|
|
74
|
-
height: height || '100%',
|
|
75
|
-
position: 'absolute'
|
|
76
|
-
}, offsetXStyle]
|
|
77
|
-
}, /*#__PURE__*/_react.default.createElement(_LazyView.LazyView, {
|
|
78
|
-
shouldUpdate: shouldUpdate
|
|
79
|
-
}, children));
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
exports.ParallaxLayout = ParallaxLayout;
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.ParallaxLayout=void 0;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _react=_interopRequireDefault(require("react"));var _reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated"));var _useOffsetX=require("../hooks/useOffsetX");var _LazyView=require("../LazyView");var _this=this,_jsxFileName="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/layouts/ParallaxLayout.tsx";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var ParallaxLayout=function ParallaxLayout(props){var handlerOffsetX=props.handlerOffsetX,_props$parallaxScroll=props.parallaxScrollingOffset,parallaxScrollingOffset=_props$parallaxScroll===void 0?100:_props$parallaxScroll,_props$parallaxScroll2=props.parallaxScrollingScale,parallaxScrollingScale=_props$parallaxScroll2===void 0?0.8:_props$parallaxScroll2,index=props.index,width=props.width,height=props.height,loop=props.loop,data=props.data,children=props.children,visibleRanges=props.visibleRanges,vertical=props.vertical;var _React$useState=_react.default.useState(false),_React$useState2=(0,_slicedToArray2.default)(_React$useState,2),shouldUpdate=_React$useState2[0],setShouldUpdate=_React$useState2[1];var size=props.vertical?props.height:props.width;var x=(0,_useOffsetX.useOffsetX)({handlerOffsetX:handlerOffsetX,index:index,size:size,data:data,loop:loop},visibleRanges);var offsetXStyle=(0,_reactNativeReanimated.useAnimatedStyle)(function(){var _f=function _f(){var value=x.value/size;var translate=(0,_reactNativeReanimated.interpolate)(value,[-1,0,1],[-size+parallaxScrollingOffset,0,size-parallaxScrollingOffset],_reactNativeReanimated.Extrapolate.EXTEND);var zIndex=(0,_reactNativeReanimated.interpolate)(value,[-1,0,1],[0,size,0],_reactNativeReanimated.Extrapolate.CLAMP);var scale=(0,_reactNativeReanimated.interpolate)(value,[-1,0,1],[Math.pow(parallaxScrollingScale,2),parallaxScrollingScale,Math.pow(parallaxScrollingScale,2)],_reactNativeReanimated.Extrapolate.CLAMP);return{transform:[vertical?{translateY:translate}:{translateX:translate},{scale:scale}],zIndex:zIndex};};_f._closure={x:x,size:size,interpolate:_reactNativeReanimated.interpolate,parallaxScrollingOffset:parallaxScrollingOffset,Extrapolate:{EXTEND:_reactNativeReanimated.Extrapolate.EXTEND,CLAMP:_reactNativeReanimated.Extrapolate.CLAMP},parallaxScrollingScale:parallaxScrollingScale,vertical:vertical};_f.asString="function _f(){const{x,size,interpolate,parallaxScrollingOffset,Extrapolate,parallaxScrollingScale,vertical}=jsThis._closure;{const value=x.value/size;const translate=interpolate(value,[-1,0,1],[-size+parallaxScrollingOffset,0,size-parallaxScrollingOffset],Extrapolate.EXTEND);const zIndex=interpolate(value,[-1,0,1],[0,size,0],Extrapolate.CLAMP);const scale=interpolate(value,[-1,0,1],[Math.pow(parallaxScrollingScale,2),parallaxScrollingScale,Math.pow(parallaxScrollingScale,2)],Extrapolate.CLAMP);return{transform:[vertical?{translateY:translate}:{translateX:translate},{scale:scale}],zIndex:zIndex};}}";_f.__workletHash=17002584047503;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/layouts/ParallaxLayout.tsx (54:42)";_f.__optimalization=2;global.__reanimatedWorkletInit(_f);return _f;}(),[loop,vertical,parallaxScrollingOffset]);var updateView=_react.default.useCallback(function(negativeRange,positiveRange){setShouldUpdate(index>=negativeRange[0]&&index<=negativeRange[1]||index>=positiveRange[0]&&index<=positiveRange[1]);},[index]);(0,_reactNativeReanimated.useAnimatedReaction)(function(){var _f=function _f(){return visibleRanges.value;};_f._closure={visibleRanges:visibleRanges};_f.asString="function _f(){const{visibleRanges}=jsThis._closure;{return visibleRanges.value;}}";_f.__workletHash=15231519758579;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/layouts/ParallaxLayout.tsx (114:8)";global.__reanimatedWorkletInit(_f);return _f;}(),function(){var _f=function _f(){(0,_reactNativeReanimated.runOnJS)(updateView)(visibleRanges.value.negativeRange,visibleRanges.value.positiveRange);};_f._closure={runOnJS:_reactNativeReanimated.runOnJS,updateView:updateView,visibleRanges:visibleRanges};_f.asString="function _f(){const{runOnJS,updateView,visibleRanges}=jsThis._closure;{runOnJS(updateView)(visibleRanges.value.negativeRange,visibleRanges.value.positiveRange);}}";_f.__workletHash=6352504350554;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/layouts/ParallaxLayout.tsx (115:8)";global.__reanimatedWorkletInit(_f);return _f;}(),[visibleRanges.value]);return _react.default.createElement(_reactNativeReanimated.default.View,{style:[{width:width||'100%',height:height||'100%',position:'absolute'},offsetXStyle],__self:_this,__source:{fileName:_jsxFileName,lineNumber:125,columnNumber:9}},_react.default.createElement(_LazyView.LazyView,{shouldUpdate:shouldUpdate,__self:_this,__source:{fileName:_jsxFileName,lineNumber:135,columnNumber:13}},children));};exports.ParallaxLayout=ParallaxLayout;
|
|
83
2
|
//# sourceMappingURL=ParallaxLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ParallaxLayout.tsx"],"names":["ParallaxLayout","props","handlerOffsetX","parallaxScrollingOffset","parallaxScrollingScale","index","width","height","loop","data","children","visibleRanges","vertical","
|
|
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","Math","pow","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';\n\nexport const ParallaxLayout: React.FC<\n ComputedDirectionTypes<{\n loop?: boolean;\n parallaxScrollingOffset?: number;\n parallaxScrollingScale?: number;\n handlerOffsetX: Animated.SharedValue<number>;\n index: number;\n data: unknown[];\n visibleRanges: IVisibleRanges;\n }>\n> = (props) => {\n const {\n handlerOffsetX,\n parallaxScrollingOffset = 100,\n parallaxScrollingScale = 0.8,\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 Math.pow(parallaxScrollingScale, 2),\n parallaxScrollingScale,\n Math.pow(parallaxScrollingScale, 2),\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,21 +1,2 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.Layouts = void 0;
|
|
7
|
-
|
|
8
|
-
var _normal = require("./normal");
|
|
9
|
-
|
|
10
|
-
var _parallax = require("./parallax");
|
|
11
|
-
|
|
12
|
-
var _stack = require("./stack");
|
|
13
|
-
|
|
14
|
-
const Layouts = {
|
|
15
|
-
normal: _normal.normalLayout,
|
|
16
|
-
parallax: _parallax.parallaxLayout,
|
|
17
|
-
horizontalStack: _stack.horizontalStackLayout,
|
|
18
|
-
verticalStack: _stack.verticalStackLayout
|
|
19
|
-
};
|
|
20
|
-
exports.Layouts = Layouts;
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.Layouts=void 0;var _normal=require("./normal");var _parallax=require("./parallax");var _stack=require("./stack");var Layouts={normal:_normal.normalLayout,parallax:_parallax.parallaxLayout,horizontalStack:_stack.horizontalStackLayout,verticalStack:_stack.verticalStackLayout};exports.Layouts=Layouts;
|
|
21
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.tsx"],"names":["Layouts","normal","normalLayout","parallax","parallaxLayout","horizontalStack","horizontalStackLayout","verticalStack","verticalStackLayout"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":["Layouts","normal","normalLayout","parallax","parallaxLayout","horizontalStack","horizontalStackLayout","verticalStack","verticalStackLayout"],"mappings":"gFAAA,gCACA,oCACA,8BAIO,GAAMA,CAAAA,OAAO,CAAG,CACnBC,MAAM,CAAEC,oBADW,CAEnBC,QAAQ,CAAEC,wBAFS,CAGnBC,eAAe,CAAEC,4BAHE,CAInBC,aAAa,CAAEC,0BAJI,CAAhB,C","sourcesContent":["import { normalLayout } from './normal';\nimport { parallaxLayout } from './parallax';\nimport { horizontalStackLayout, verticalStackLayout } from './stack';\n\nexport type TMode = 'parallax' | 'horizontal-stack' | 'vertical-stack';\n\nexport const Layouts = {\n normal: normalLayout,\n parallax: parallaxLayout,\n horizontalStack: horizontalStackLayout,\n verticalStack: verticalStackLayout,\n};\n"]}
|
|
@@ -1,28 +1,2 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.normalLayout = normalLayout;
|
|
7
|
-
|
|
8
|
-
var _reactNativeReanimated = require("react-native-reanimated");
|
|
9
|
-
|
|
10
|
-
function normalLayout(opts) {
|
|
11
|
-
const {
|
|
12
|
-
size,
|
|
13
|
-
vertical
|
|
14
|
-
} = opts;
|
|
15
|
-
return value => {
|
|
16
|
-
'worklet';
|
|
17
|
-
|
|
18
|
-
const translate = (0, _reactNativeReanimated.interpolate)(value, [-1, 0, 1], [-size, 0, size]);
|
|
19
|
-
return {
|
|
20
|
-
transform: [vertical ? {
|
|
21
|
-
translateY: translate
|
|
22
|
-
} : {
|
|
23
|
-
translateX: translate
|
|
24
|
-
}]
|
|
25
|
-
};
|
|
26
|
-
};
|
|
27
|
-
}
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.normalLayout=normalLayout;var _reactNativeReanimated=require("react-native-reanimated");function normalLayout(opts){var size=opts.size,vertical=opts.vertical;return function(){var _f=function _f(value){var translate=(0,_reactNativeReanimated.interpolate)(value,[-1,0,1],[-size,0,size]);return{transform:[vertical?{translateY:translate}:{translateX:translate}]};};_f._closure={interpolate:_reactNativeReanimated.interpolate,size:size,vertical:vertical};_f.asString="function _f(value){const{interpolate,size,vertical}=jsThis._closure;{const translate=interpolate(value,[-1,0,1],[-size,0,size]);return{transform:[vertical?{translateY:translate}:{translateX:translate}]};}}";_f.__workletHash=10942319418565;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/layouts/normal.ts (6:11)";global.__reanimatedWorkletInit(_f);return _f;}();}
|
|
28
2
|
//# sourceMappingURL=normal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["normal.ts"],"names":["normalLayout","opts","size","vertical","value","translate","transform","translateY","translateX"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["normal.ts"],"names":["normalLayout","opts","size","vertical","value","translate","transform","translateY","translateX","interpolate"],"mappings":"2FAAA,8DAEO,QAASA,CAAAA,YAAT,CAAsBC,IAAtB,CAAiE,CACpE,GAAQC,CAAAA,IAAR,CAA2BD,IAA3B,CAAQC,IAAR,CAAcC,QAAd,CAA2BF,IAA3B,CAAcE,QAAd,CAEA,qCAAQC,KAAR,CAA0B,CAEtB,GAAMC,CAAAA,SAAS,CAAG,uCAAYD,KAAZ,CAAmB,CAAC,CAAC,CAAF,CAAK,CAAL,CAAQ,CAAR,CAAnB,CAA+B,CAAC,CAACF,IAAF,CAAQ,CAAR,CAAWA,IAAX,CAA/B,CAAlB,CAEA,MAAO,CACHI,SAAS,CAAE,CACPH,QAAQ,CACF,CACII,UAAU,CAAEF,SADhB,CADE,CAIF,CACIG,UAAU,CAAEH,SADhB,CALC,CADR,CAAP,CAWH,CAfD,0BAHgBI,kCAGhB,MAH0DP,IAG1D,UADYC,QACZ,qZAgBH","sourcesContent":["import { interpolate } from 'react-native-reanimated';\n\nexport function normalLayout(opts: { size: number; vertical: boolean }) {\n const { size, vertical } = opts;\n\n return (value: number) => {\n 'worklet';\n const translate = interpolate(value, [-1, 0, 1], [-size, 0, size]);\n\n return {\n transform: [\n vertical\n ? {\n translateY: translate,\n }\n : {\n translateX: translate,\n },\n ],\n };\n };\n}\n"]}
|
|
@@ -1,37 +1,2 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.parallaxLayout = parallaxLayout;
|
|
7
|
-
|
|
8
|
-
var _reactNativeReanimated = require("react-native-reanimated");
|
|
9
|
-
|
|
10
|
-
function parallaxLayout(baseConfig, modeConfig = {}) {
|
|
11
|
-
const {
|
|
12
|
-
size,
|
|
13
|
-
vertical
|
|
14
|
-
} = baseConfig;
|
|
15
|
-
const {
|
|
16
|
-
parallaxScrollingOffset = 100,
|
|
17
|
-
parallaxScrollingScale = 0.8
|
|
18
|
-
} = modeConfig;
|
|
19
|
-
return value => {
|
|
20
|
-
'worklet';
|
|
21
|
-
|
|
22
|
-
const translate = (0, _reactNativeReanimated.interpolate)(value, [-1, 0, 1], [-size + parallaxScrollingOffset, 0, size - parallaxScrollingOffset]);
|
|
23
|
-
const zIndex = (0, _reactNativeReanimated.interpolate)(value, [-1, 0, 1], [0, size, 0], _reactNativeReanimated.Extrapolate.CLAMP);
|
|
24
|
-
const scale = (0, _reactNativeReanimated.interpolate)(value, [-1, 0, 1], [Math.pow(parallaxScrollingScale, 2), parallaxScrollingScale, Math.pow(parallaxScrollingScale, 2)], _reactNativeReanimated.Extrapolate.CLAMP);
|
|
25
|
-
return {
|
|
26
|
-
transform: [vertical ? {
|
|
27
|
-
translateY: translate
|
|
28
|
-
} : {
|
|
29
|
-
translateX: translate
|
|
30
|
-
}, {
|
|
31
|
-
scale
|
|
32
|
-
}],
|
|
33
|
-
zIndex
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
}
|
|
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],[Math.pow(parallaxScrollingScale,2),parallaxScrollingScale,Math.pow(parallaxScrollingScale,2)],_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},parallaxScrollingScale:parallaxScrollingScale,vertical:vertical};_f.asString="function _f(value){const{interpolate,size,parallaxScrollingOffset,Extrapolate,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],[Math.pow(parallaxScrollingScale,2),parallaxScrollingScale,Math.pow(parallaxScrollingScale,2)],Extrapolate.CLAMP);return{transform:[vertical?{translateY:translate}:{translateX:translate},{scale:scale}],zIndex:zIndex};}}";_f.__workletHash=4897118335602;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/layouts/parallax.ts (38:11)";global.__reanimatedWorkletInit(_f);return _f;}();}
|
|
37
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","Math","pow","transform","translateY","translateX"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["parallax.ts"],"names":["parallaxLayout","baseConfig","modeConfig","size","vertical","parallaxScrollingOffset","parallaxScrollingScale","value","translate","zIndex","Extrapolate","CLAMP","scale","Math","pow","transform","translateY","translateX","interpolate"],"mappings":"+FAAA,8DA6BO,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,0BACIF,UADJ,CAAQG,uBAAR,CAAQA,uBAAR,gCAAkC,GAAlC,8CACIH,UADJ,CAAuCI,sBAAvC,CAAuCA,sBAAvC,iCAAgE,GAAhE,wBAGA,qCAAQC,KAAR,CAA0B,CAEtB,GAAMC,CAAAA,SAAS,CAAG,uCACdD,KADc,CAEd,CAAC,CAAC,CAAF,CAAK,CAAL,CAAQ,CAAR,CAFc,CAGd,CAAC,CAACJ,IAAD,CAAQE,uBAAT,CAAkC,CAAlC,CAAqCF,IAAI,CAAGE,uBAA5C,CAHc,CAAlB,CAMA,GAAMI,CAAAA,MAAM,CAAG,uCACXF,KADW,CAEX,CAAC,CAAC,CAAF,CAAK,CAAL,CAAQ,CAAR,CAFW,CAGX,CAAC,CAAD,CAAIJ,IAAJ,CAAU,CAAV,CAHW,CAIXO,mCAAYC,KAJD,CAAf,CAOA,GAAMC,CAAAA,KAAK,CAAG,uCACVL,KADU,CAEV,CAAC,CAAC,CAAF,CAAK,CAAL,CAAQ,CAAR,CAFU,CAGV,CACIM,IAAI,CAACC,GAAL,CAASR,sBAAT,CAAiC,CAAjC,CADJ,CAEIA,sBAFJ,CAGIO,IAAI,CAACC,GAAL,CAASR,sBAAT,CAAiC,CAAjC,CAHJ,CAHU,CAQVI,mCAAYC,KARF,CAAd,CAWA,MAAO,CACHI,SAAS,CAAE,CACPX,QAAQ,CACF,CACIY,UAAU,CAAER,SADhB,CADE,CAIF,CACIS,UAAU,CAAET,SADhB,CALC,CAQP,CACII,KAAK,CAALA,KADJ,CARO,CADR,CAaHH,MAAM,CAANA,MAbG,CAAP,CAeH,CAzCD,0BAjCYS,kCAiCZ,MAlCgDf,IAkChD,yBAnC2FE,uBAmC3F,oBAjC+IK,mCAAYC,KAiC3J,yBAjCkHL,sBAiClH,UA/BYF,QA+BZ,6vBA0CH","sourcesContent":["import { Extrapolate, interpolate } from 'react-native-reanimated';\nimport type { ComputedDirectionTypes } from '../types';\n\ntype TBaseConfig = {\n size: number;\n vertical: boolean;\n};\n\ninterface ILayoutConfig {\n /**\n * When use default Layout props,this prop can be control prev/next item offset.\n * @default 100\n */\n parallaxScrollingOffset?: number;\n /**\n * When use default Layout props,this prop can be control prev/next item offset.\n * @default 0.8\n */\n parallaxScrollingScale?: 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 { parallaxScrollingOffset = 100, parallaxScrollingScale = 0.8 } =\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 Math.pow(parallaxScrollingScale, 2),\n parallaxScrollingScale,\n Math.pow(parallaxScrollingScale, 2),\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,220 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.horizontalStackLayout = horizontalStackLayout;
|
|
7
|
-
exports.useHorizontalStackLayout = useHorizontalStackLayout;
|
|
8
|
-
exports.verticalStackLayout = verticalStackLayout;
|
|
9
|
-
|
|
10
|
-
var _react = require("react");
|
|
11
|
-
|
|
12
|
-
var _reactNative = require("react-native");
|
|
13
|
-
|
|
14
|
-
var _reactNativeReanimated = require("react-native-reanimated");
|
|
15
|
-
|
|
16
|
-
const screen = _reactNative.Dimensions.get('window');
|
|
17
|
-
|
|
18
|
-
function horizontalStackLayout(modeConfig = {}) {
|
|
19
|
-
return _value => {
|
|
20
|
-
'worklet';
|
|
21
|
-
|
|
22
|
-
const {
|
|
23
|
-
showLength,
|
|
24
|
-
snapDirection = 'left',
|
|
25
|
-
moveSize = screen.width,
|
|
26
|
-
stackInterval = 18,
|
|
27
|
-
scaleInterval = 0.04,
|
|
28
|
-
opacityInterval = 0.1,
|
|
29
|
-
rotateZDeg = 30
|
|
30
|
-
} = modeConfig;
|
|
31
|
-
const transform = [];
|
|
32
|
-
const {
|
|
33
|
-
validLength,
|
|
34
|
-
value,
|
|
35
|
-
inputRange
|
|
36
|
-
} = getCommonVariables({
|
|
37
|
-
showLength: showLength,
|
|
38
|
-
value: _value,
|
|
39
|
-
snapDirection
|
|
40
|
-
});
|
|
41
|
-
const {
|
|
42
|
-
zIndex,
|
|
43
|
-
opacity
|
|
44
|
-
} = getCommonStyles({
|
|
45
|
-
validLength,
|
|
46
|
-
value,
|
|
47
|
-
opacityInterval,
|
|
48
|
-
snapDirection
|
|
49
|
-
});
|
|
50
|
-
const styles = {
|
|
51
|
-
transform,
|
|
52
|
-
zIndex,
|
|
53
|
-
opacity
|
|
54
|
-
};
|
|
55
|
-
let translateX;
|
|
56
|
-
let scale;
|
|
57
|
-
let rotateZ;
|
|
58
|
-
|
|
59
|
-
if (snapDirection === 'left') {
|
|
60
|
-
translateX = (0, _reactNativeReanimated.interpolate)(value, inputRange, [-moveSize, 0, validLength * stackInterval], _reactNativeReanimated.Extrapolate.CLAMP);
|
|
61
|
-
scale = (0, _reactNativeReanimated.interpolate)(value, inputRange, [1, 1, 1 - validLength * scaleInterval], _reactNativeReanimated.Extrapolate.CLAMP);
|
|
62
|
-
rotateZ = `${(0, _reactNativeReanimated.interpolate)(value, inputRange, [-rotateZDeg, 0, 0], _reactNativeReanimated.Extrapolate.CLAMP)}deg`;
|
|
63
|
-
} else if (snapDirection === 'right') {
|
|
64
|
-
translateX = (0, _reactNativeReanimated.interpolate)(value, inputRange, [-validLength * stackInterval, 0, moveSize], _reactNativeReanimated.Extrapolate.CLAMP);
|
|
65
|
-
scale = (0, _reactNativeReanimated.interpolate)(value, inputRange, [1 - validLength * scaleInterval, 1, 1], _reactNativeReanimated.Extrapolate.CLAMP);
|
|
66
|
-
rotateZ = `${(0, _reactNativeReanimated.interpolate)(value, inputRange, [0, 0, rotateZDeg], _reactNativeReanimated.Extrapolate.CLAMP)}deg`;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
transform.push({
|
|
70
|
-
translateX: translateX
|
|
71
|
-
}, {
|
|
72
|
-
scale: scale
|
|
73
|
-
}, {
|
|
74
|
-
rotateZ: rotateZ
|
|
75
|
-
});
|
|
76
|
-
return styles;
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
function useHorizontalStackLayout(customAnimationConfig = {}, customConfig = {}) {
|
|
81
|
-
const config = (0, _react.useMemo)(() => ({
|
|
82
|
-
type: customAnimationConfig.snapDirection === 'right' ? 'negative' : 'positive',
|
|
83
|
-
viewCount: customAnimationConfig.showLength,
|
|
84
|
-
...customConfig
|
|
85
|
-
}), [customAnimationConfig, customConfig]);
|
|
86
|
-
return {
|
|
87
|
-
layout: horizontalStackLayout(customAnimationConfig),
|
|
88
|
-
config
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
function verticalStackLayout(modeConfig = {}) {
|
|
93
|
-
return _value => {
|
|
94
|
-
'worklet';
|
|
95
|
-
|
|
96
|
-
const {
|
|
97
|
-
showLength,
|
|
98
|
-
snapDirection = 'left',
|
|
99
|
-
moveSize = screen.width,
|
|
100
|
-
stackInterval = 18,
|
|
101
|
-
scaleInterval = 0.04,
|
|
102
|
-
opacityInterval = 0.1,
|
|
103
|
-
rotateZDeg = 30
|
|
104
|
-
} = modeConfig;
|
|
105
|
-
const transform = [];
|
|
106
|
-
const {
|
|
107
|
-
validLength,
|
|
108
|
-
value,
|
|
109
|
-
inputRange
|
|
110
|
-
} = getCommonVariables({
|
|
111
|
-
showLength: showLength,
|
|
112
|
-
value: _value,
|
|
113
|
-
snapDirection
|
|
114
|
-
});
|
|
115
|
-
const {
|
|
116
|
-
zIndex,
|
|
117
|
-
opacity
|
|
118
|
-
} = getCommonStyles({
|
|
119
|
-
validLength,
|
|
120
|
-
value,
|
|
121
|
-
opacityInterval,
|
|
122
|
-
snapDirection
|
|
123
|
-
});
|
|
124
|
-
const styles = {
|
|
125
|
-
transform,
|
|
126
|
-
zIndex,
|
|
127
|
-
opacity
|
|
128
|
-
};
|
|
129
|
-
let translateX;
|
|
130
|
-
let scale;
|
|
131
|
-
let rotateZ;
|
|
132
|
-
let translateY;
|
|
133
|
-
|
|
134
|
-
if (snapDirection === 'left') {
|
|
135
|
-
translateX = (0, _reactNativeReanimated.interpolate)(value, inputRange, [-moveSize, 0, 0], _reactNativeReanimated.Extrapolate.CLAMP);
|
|
136
|
-
scale = (0, _reactNativeReanimated.interpolate)(value, inputRange, [1, 1, 1 - validLength * scaleInterval], _reactNativeReanimated.Extrapolate.CLAMP);
|
|
137
|
-
rotateZ = `${(0, _reactNativeReanimated.interpolate)(value, inputRange, [-rotateZDeg, 0, 0], _reactNativeReanimated.Extrapolate.CLAMP)}deg`;
|
|
138
|
-
translateY = (0, _reactNativeReanimated.interpolate)(value, inputRange, [0, 0, validLength * stackInterval], _reactNativeReanimated.Extrapolate.CLAMP);
|
|
139
|
-
} else if (snapDirection === 'right') {
|
|
140
|
-
translateX = (0, _reactNativeReanimated.interpolate)(value, inputRange, [0, 0, moveSize], _reactNativeReanimated.Extrapolate.CLAMP);
|
|
141
|
-
scale = (0, _reactNativeReanimated.interpolate)(value, inputRange, [1 - validLength * scaleInterval, 1, 1], _reactNativeReanimated.Extrapolate.CLAMP);
|
|
142
|
-
rotateZ = `${(0, _reactNativeReanimated.interpolate)(value, inputRange, [0, 0, rotateZDeg], _reactNativeReanimated.Extrapolate.CLAMP)}deg`;
|
|
143
|
-
translateY = (0, _reactNativeReanimated.interpolate)(value, inputRange, [validLength * stackInterval, 0, 0], _reactNativeReanimated.Extrapolate.CLAMP);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
transform.push({
|
|
147
|
-
translateX: translateX
|
|
148
|
-
}, {
|
|
149
|
-
scale: scale
|
|
150
|
-
}, {
|
|
151
|
-
rotateZ: rotateZ
|
|
152
|
-
}, {
|
|
153
|
-
translateY: translateY
|
|
154
|
-
});
|
|
155
|
-
return styles;
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
function getCommonVariables(opts) {
|
|
160
|
-
'worklet';
|
|
161
|
-
|
|
162
|
-
const {
|
|
163
|
-
showLength,
|
|
164
|
-
value: _value,
|
|
165
|
-
snapDirection
|
|
166
|
-
} = opts;
|
|
167
|
-
|
|
168
|
-
function easeInOutCubic(v) {
|
|
169
|
-
return v < 0.5 ? 4 * v * v * v : 1 - Math.pow(-2 * v + 2, 3) / 2;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
const page = Math.floor(Math.abs(_value));
|
|
173
|
-
const diff = Math.abs(_value) % 1;
|
|
174
|
-
const value = _value < 0 ? -(page + easeInOutCubic(diff)) : page + easeInOutCubic(diff);
|
|
175
|
-
const validLength = showLength - 1;
|
|
176
|
-
let inputRange;
|
|
177
|
-
|
|
178
|
-
if (snapDirection === 'left') {
|
|
179
|
-
inputRange = [-1, 0, validLength];
|
|
180
|
-
} else if (snapDirection === 'right') {
|
|
181
|
-
inputRange = [-validLength, 0, 1];
|
|
182
|
-
} else {
|
|
183
|
-
throw Error('snapDirection must be set to either left or right');
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
return {
|
|
187
|
-
inputRange,
|
|
188
|
-
validLength,
|
|
189
|
-
value
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
function getCommonStyles(opts) {
|
|
194
|
-
'worklet';
|
|
195
|
-
|
|
196
|
-
const {
|
|
197
|
-
snapDirection,
|
|
198
|
-
validLength,
|
|
199
|
-
value,
|
|
200
|
-
opacityInterval
|
|
201
|
-
} = opts;
|
|
202
|
-
let zIndex;
|
|
203
|
-
let opacity;
|
|
204
|
-
|
|
205
|
-
if (snapDirection === 'left') {
|
|
206
|
-
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;
|
|
207
|
-
opacity = (0, _reactNativeReanimated.interpolate)(value, [-1, 0, validLength - 1, validLength], [0.25, 1, 1 - (validLength - 1) * opacityInterval, 0.25]);
|
|
208
|
-
} else if (snapDirection === 'right') {
|
|
209
|
-
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;
|
|
210
|
-
opacity = (0, _reactNativeReanimated.interpolate)(value, [-validLength, 1 - validLength, 0, 1], [0.25, 1 - (validLength - 1) * opacityInterval, 1, 0.25]);
|
|
211
|
-
} else {
|
|
212
|
-
throw Error('snapDirection must be set to either left or right');
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
return {
|
|
216
|
-
zIndex,
|
|
217
|
-
opacity
|
|
218
|
-
};
|
|
219
|
-
}
|
|
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;}();
|
|
220
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","validLength","value","inputRange","getCommonVariables","zIndex","opacity","getCommonStyles","styles","translateX","scale","rotateZ","Extrapolate","CLAMP","push","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 'src/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"]}
|