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.
Files changed (78) hide show
  1. package/README.md +1 -1
  2. package/README.zh-CN.md +1 -1
  3. package/lib/commonjs/Carousel.js +1 -221
  4. package/lib/commonjs/Carousel.js.map +1 -1
  5. package/lib/commonjs/LazyView.js +1 -25
  6. package/lib/commonjs/LazyView.js.map +1 -1
  7. package/lib/commonjs/ScrollViewGesture.js +1 -217
  8. package/lib/commonjs/ScrollViewGesture.js.map +1 -1
  9. package/lib/commonjs/constants/index.js +1 -21
  10. package/lib/commonjs/constants/index.js.map +1 -1
  11. package/lib/commonjs/hooks/useAutoPlay.js +1 -61
  12. package/lib/commonjs/hooks/useAutoPlay.js.map +1 -1
  13. package/lib/commonjs/hooks/useCarouselController.js +1 -194
  14. package/lib/commonjs/hooks/useCarouselController.js.map +1 -1
  15. package/lib/commonjs/hooks/useCommonVariables.js +1 -36
  16. package/lib/commonjs/hooks/useCommonVariables.js.map +1 -1
  17. package/lib/commonjs/hooks/useInitProps.js +1 -70
  18. package/lib/commonjs/hooks/useInitProps.js.map +1 -1
  19. package/lib/commonjs/hooks/useLayoutConfig.js +1 -39
  20. package/lib/commonjs/hooks/useLayoutConfig.js.map +1 -1
  21. package/lib/commonjs/hooks/useOffsetX.js +1 -54
  22. package/lib/commonjs/hooks/useOffsetX.js.map +1 -1
  23. package/lib/commonjs/hooks/useOnProgressChange.js +1 -38
  24. package/lib/commonjs/hooks/useOnProgressChange.js.map +1 -1
  25. package/lib/commonjs/hooks/usePropsErrorBoundary.js +1 -37
  26. package/lib/commonjs/hooks/usePropsErrorBoundary.js.map +1 -1
  27. package/lib/commonjs/hooks/useVisibleRanges.js +1 -42
  28. package/lib/commonjs/hooks/useVisibleRanges.js.map +1 -1
  29. package/lib/commonjs/index.js +1 -13
  30. package/lib/commonjs/index.js.map +1 -1
  31. package/lib/commonjs/layouts/BaseLayout.js +1 -100
  32. package/lib/commonjs/layouts/BaseLayout.js.map +1 -1
  33. package/lib/commonjs/layouts/ParallaxLayout.js +1 -82
  34. package/lib/commonjs/layouts/ParallaxLayout.js.map +1 -1
  35. package/lib/commonjs/layouts/index.js +1 -20
  36. package/lib/commonjs/layouts/index.js.map +1 -1
  37. package/lib/commonjs/layouts/normal.js +1 -27
  38. package/lib/commonjs/layouts/normal.js.map +1 -1
  39. package/lib/commonjs/layouts/parallax.js +1 -36
  40. package/lib/commonjs/layouts/parallax.js.map +1 -1
  41. package/lib/commonjs/layouts/stack.js +1 -219
  42. package/lib/commonjs/layouts/stack.js.map +1 -1
  43. package/lib/commonjs/store/index.js +1 -14
  44. package/lib/commonjs/store/index.js.map +1 -1
  45. package/lib/commonjs/types.js +1 -5
  46. package/lib/commonjs/utils/dealWithAnimation.js +2 -0
  47. package/lib/commonjs/utils/dealWithAnimation.js.map +1 -0
  48. package/lib/commonjs/utils/log.js +1 -14
  49. package/lib/commonjs/utils/log.js.map +1 -1
  50. package/lib/module/Carousel.js +14 -10
  51. package/lib/module/Carousel.js.map +1 -1
  52. package/lib/module/ScrollViewGesture.js +46 -29
  53. package/lib/module/ScrollViewGesture.js.map +1 -1
  54. package/lib/module/hooks/useAutoPlay.js +5 -1
  55. package/lib/module/hooks/useAutoPlay.js.map +1 -1
  56. package/lib/module/hooks/useCarouselController.js +21 -7
  57. package/lib/module/hooks/useCarouselController.js.map +1 -1
  58. package/lib/module/layouts/BaseLayout.js +2 -1
  59. package/lib/module/layouts/BaseLayout.js.map +1 -1
  60. package/lib/module/layouts/stack.js.map +1 -1
  61. package/lib/module/utils/dealWithAnimation.js +17 -0
  62. package/lib/module/utils/dealWithAnimation.js.map +1 -0
  63. package/lib/typescript/Carousel.d.ts +3 -4
  64. package/lib/typescript/ScrollViewGesture.d.ts +3 -1
  65. package/lib/typescript/hooks/useCarouselController.d.ts +2 -1
  66. package/lib/typescript/layouts/BaseLayout.d.ts +2 -2
  67. package/lib/typescript/layouts/stack.d.ts +1 -1
  68. package/lib/typescript/types.d.ts +14 -2
  69. package/lib/typescript/utils/dealWithAnimation.d.ts +2 -0
  70. package/package.json +12 -2
  71. package/src/Carousel.tsx +203 -188
  72. package/src/ScrollViewGesture.tsx +70 -33
  73. package/src/hooks/useAutoPlay.ts +4 -1
  74. package/src/hooks/useCarouselController.tsx +28 -12
  75. package/src/layouts/BaseLayout.tsx +3 -3
  76. package/src/layouts/stack.ts +1 -1
  77. package/src/types.ts +22 -4
  78. package/src/utils/dealWithAnimation.ts +22 -0
@@ -1,83 +1,2 @@
1
- "use strict";
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","shouldUpdate","setShouldUpdate","React","useState","size","x","offsetXStyle","value","translate","Extrapolate","EXTEND","zIndex","CLAMP","scale","Math","pow","transform","translateY","translateX","updateView","useCallback","negativeRange","positiveRange","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
+ {"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
- "use strict";
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":";;;;;;;AAAA;;AACA;;AACA;;AAIO,MAAMA,OAAO,GAAG;AACnBC,EAAAA,MAAM,EAAEC,oBADW;AAEnBC,EAAAA,QAAQ,EAAEC,wBAFS;AAGnBC,EAAAA,eAAe,EAAEC,4BAHE;AAInBC,EAAAA,aAAa,EAAEC;AAJI,CAAhB","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
+ {"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
- "use strict";
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":";;;;;;;AAAA;;AAEO,SAASA,YAAT,CAAsBC,IAAtB,EAAiE;AACpE,QAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAqBF,IAA3B;AAEA,SAAQG,KAAD,IAAmB;AACtB;;AACA,UAAMC,SAAS,GAAG,wCAAYD,KAAZ,EAAmB,CAAC,CAAC,CAAF,EAAK,CAAL,EAAQ,CAAR,CAAnB,EAA+B,CAAC,CAACF,IAAF,EAAQ,CAAR,EAAWA,IAAX,CAA/B,CAAlB;AAEA,WAAO;AACHI,MAAAA,SAAS,EAAE,CACPH,QAAQ,GACF;AACII,QAAAA,UAAU,EAAEF;AADhB,OADE,GAIF;AACIG,QAAAA,UAAU,EAAEH;AADhB,OALC;AADR,KAAP;AAWH,GAfD;AAgBH","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
+ {"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
- "use strict";
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":";;;;;;;AAAA;;AA6BO,SAASA,cAAT,CACHC,UADG,EAEHC,UAAyB,GAAG,EAFzB,EAGL;AACE,QAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAqBH,UAA3B;AACA,QAAM;AAAEI,IAAAA,uBAAuB,GAAG,GAA5B;AAAiCC,IAAAA,sBAAsB,GAAG;AAA1D,MACFJ,UADJ;AAGA,SAAQK,KAAD,IAAmB;AACtB;;AACA,UAAMC,SAAS,GAAG,wCACdD,KADc,EAEd,CAAC,CAAC,CAAF,EAAK,CAAL,EAAQ,CAAR,CAFc,EAGd,CAAC,CAACJ,IAAD,GAAQE,uBAAT,EAAkC,CAAlC,EAAqCF,IAAI,GAAGE,uBAA5C,CAHc,CAAlB;AAMA,UAAMI,MAAM,GAAG,wCACXF,KADW,EAEX,CAAC,CAAC,CAAF,EAAK,CAAL,EAAQ,CAAR,CAFW,EAGX,CAAC,CAAD,EAAIJ,IAAJ,EAAU,CAAV,CAHW,EAIXO,mCAAYC,KAJD,CAAf;AAOA,UAAMC,KAAK,GAAG,wCACVL,KADU,EAEV,CAAC,CAAC,CAAF,EAAK,CAAL,EAAQ,CAAR,CAFU,EAGV,CACIM,IAAI,CAACC,GAAL,CAASR,sBAAT,EAAiC,CAAjC,CADJ,EAEIA,sBAFJ,EAGIO,IAAI,CAACC,GAAL,CAASR,sBAAT,EAAiC,CAAjC,CAHJ,CAHU,EAQVI,mCAAYC,KARF,CAAd;AAWA,WAAO;AACHI,MAAAA,SAAS,EAAE,CACPX,QAAQ,GACF;AACIY,QAAAA,UAAU,EAAER;AADhB,OADE,GAIF;AACIS,QAAAA,UAAU,EAAET;AADhB,OALC,EAQP;AACII,QAAAA;AADJ,OARO,CADR;AAaHH,MAAAA;AAbG,KAAP;AAeH,GAzCD;AA0CH","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
+ {"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"]}