react-native-reanimated-carousel 3.1.4 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.zh-CN.md +30 -30
  2. package/lib/commonjs/Carousel.js +1 -1
  3. package/lib/commonjs/Carousel.js.map +1 -1
  4. package/lib/commonjs/ScrollViewGesture.js +1 -1
  5. package/lib/commonjs/ScrollViewGesture.js.map +1 -1
  6. package/lib/commonjs/hooks/computeNewIndexWhenDataChanges.js +1 -1
  7. package/lib/commonjs/hooks/computeNewIndexWhenDataChanges.js.map +1 -1
  8. package/lib/commonjs/hooks/useCarouselController.js +1 -1
  9. package/lib/commonjs/hooks/useCarouselController.js.map +1 -1
  10. package/lib/commonjs/hooks/useCommonVariables.js +1 -1
  11. package/lib/commonjs/hooks/useCommonVariables.js.map +1 -1
  12. package/lib/commonjs/hooks/useInitProps.js +1 -1
  13. package/lib/commonjs/hooks/useInitProps.js.map +1 -1
  14. package/lib/commonjs/hooks/useOffsetX.js +1 -1
  15. package/lib/commonjs/hooks/useOffsetX.js.map +1 -1
  16. package/lib/commonjs/hooks/useOnProgressChange.js +1 -1
  17. package/lib/commonjs/hooks/useOnProgressChange.js.map +1 -1
  18. package/lib/commonjs/hooks/usePropsErrorBoundary.js +1 -1
  19. package/lib/commonjs/hooks/usePropsErrorBoundary.js.map +1 -1
  20. package/lib/commonjs/hooks/useVisibleRanges.js +1 -1
  21. package/lib/commonjs/hooks/useVisibleRanges.js.map +1 -1
  22. package/lib/commonjs/layouts/BaseLayout.js +1 -1
  23. package/lib/commonjs/layouts/BaseLayout.js.map +1 -1
  24. package/lib/commonjs/layouts/ParallaxLayout.js +1 -1
  25. package/lib/commonjs/layouts/ParallaxLayout.js.map +1 -1
  26. package/lib/commonjs/layouts/normal.js +1 -1
  27. package/lib/commonjs/layouts/normal.js.map +1 -1
  28. package/lib/commonjs/layouts/parallax.js +1 -1
  29. package/lib/commonjs/layouts/parallax.js.map +1 -1
  30. package/lib/commonjs/layouts/stack.js +1 -1
  31. package/lib/commonjs/layouts/stack.js.map +1 -1
  32. package/lib/commonjs/utils/computedWithAutoFillData.js +1 -1
  33. package/lib/commonjs/utils/computedWithAutoFillData.js.map +1 -1
  34. package/lib/commonjs/utils/dealWithAnimation.js +1 -1
  35. package/lib/commonjs/utils/dealWithAnimation.js.map +1 -1
  36. package/lib/commonjs/utils/handlerOffsetDirection.js +1 -1
  37. package/lib/commonjs/utils/log.js +1 -1
  38. package/lib/module/Carousel.js +17 -10
  39. package/lib/module/Carousel.js.map +1 -1
  40. package/lib/module/ScrollViewGesture.js +81 -39
  41. package/lib/module/ScrollViewGesture.js.map +1 -1
  42. package/lib/module/hooks/useCarouselController.js +5 -5
  43. package/lib/module/hooks/useCarouselController.js.map +1 -1
  44. package/lib/module/hooks/useCommonVariables.js +6 -6
  45. package/lib/module/hooks/useCommonVariables.js.map +1 -1
  46. package/lib/module/hooks/useInitProps.js +15 -7
  47. package/lib/module/hooks/useInitProps.js.map +1 -1
  48. package/lib/module/hooks/useOffsetX.js +5 -4
  49. package/lib/module/hooks/useOffsetX.js.map +1 -1
  50. package/lib/module/hooks/useOnProgressChange.js +1 -2
  51. package/lib/module/hooks/useOnProgressChange.js.map +1 -1
  52. package/lib/module/hooks/usePropsErrorBoundary.js +1 -2
  53. package/lib/module/hooks/usePropsErrorBoundary.js.map +1 -1
  54. package/lib/module/layouts/BaseLayout.js +3 -3
  55. package/lib/module/layouts/BaseLayout.js.map +1 -1
  56. package/lib/module/layouts/ParallaxLayout.js +2 -2
  57. package/lib/module/layouts/ParallaxLayout.js.map +1 -1
  58. package/lib/module/utils/dealWithAnimation.js +2 -6
  59. package/lib/module/utils/dealWithAnimation.js.map +1 -1
  60. package/lib/typescript/hooks/useCarouselController.d.ts +1 -1
  61. package/lib/typescript/hooks/useInitProps.d.ts +2 -0
  62. package/lib/typescript/hooks/useOffsetX.d.ts +1 -1
  63. package/lib/typescript/hooks/useOnProgressChange.d.ts +1 -1
  64. package/lib/typescript/hooks/usePropsErrorBoundary.d.ts +3 -1
  65. package/lib/typescript/layouts/ParallaxLayout.d.ts +1 -1
  66. package/lib/typescript/types.d.ts +10 -5
  67. package/package.json +8 -4
  68. package/src/Carousel.tsx +15 -10
  69. package/src/ScrollViewGesture.tsx +82 -41
  70. package/src/hooks/useCarouselController.tsx +6 -6
  71. package/src/hooks/useCommonVariables.ts +6 -6
  72. package/src/hooks/useInitProps.ts +18 -6
  73. package/src/hooks/useOffsetX.ts +6 -5
  74. package/src/hooks/useOnProgressChange.ts +2 -4
  75. package/src/hooks/usePropsErrorBoundary.ts +2 -3
  76. package/src/layouts/BaseLayout.tsx +3 -3
  77. package/src/layouts/ParallaxLayout.tsx +3 -3
  78. package/src/types.ts +12 -5
  79. package/src/utils/dealWithAnimation.ts +6 -10
package/README.zh-CN.md CHANGED
@@ -84,38 +84,38 @@ npm install react-native-reanimated-carousel
84
84
  ## 使用
85
85
 
86
86
  ```tsx
87
- import * as React from 'react';
88
- import { Dimensions, Text, View } from 'react-native';
89
- import Carousel from 'react-native-reanimated-carousel';
87
+ import * as React from "react";
88
+ import { Dimensions, Text, View } from "react-native";
89
+ import Carousel from "react-native-reanimated-carousel";
90
90
 
91
91
  function Index() {
92
- const width = Dimensions.get('window').width;
93
- return (
94
- <View style={{ flex: 1 }}>
95
- <Carousel
96
- loop
97
- width={width}
98
- height={width / 2}
99
- autoPlay={true}
100
- data={[...new Array(6).keys()]}
101
- scrollAnimationDuration={1000}
102
- onSnapToItem={(index) => console.log('current index:', index)}
103
- renderItem={({ index }) => (
104
- <View
105
- style={{
106
- flex: 1,
107
- borderWidth: 1,
108
- justifyContent: 'center',
109
- }}
110
- >
111
- <Text style={{ textAlign: 'center', fontSize: 30 }}>
112
- {index}
113
- </Text>
114
- </View>
115
- )}
116
- />
117
- </View>
118
- );
92
+ const width = Dimensions.get("window").width;
93
+ return (
94
+ <View style={{ flex: 1 }}>
95
+ <Carousel
96
+ loop
97
+ width={width}
98
+ height={width / 2}
99
+ autoPlay={true}
100
+ data={[...new Array(6).keys()]}
101
+ scrollAnimationDuration={1000}
102
+ onSnapToItem={index => console.log("current index:", index)}
103
+ renderItem={({ index }) => (
104
+ <View
105
+ style={{
106
+ flex: 1,
107
+ borderWidth: 1,
108
+ justifyContent: "center",
109
+ }}
110
+ >
111
+ <Text style={{ textAlign: "center", fontSize: 30 }}>
112
+ {index}
113
+ </Text>
114
+ </View>
115
+ )}
116
+ />
117
+ </View>
118
+ );
119
119
  }
120
120
 
121
121
  export default Index;
@@ -1,2 +1,2 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _react=_interopRequireDefault(require("react"));var _reactNative=require("react-native");var _reactNativeReanimated=require("react-native-reanimated");var _useAutoPlay2=require("./hooks/useAutoPlay");var _useCarouselController=require("./hooks/useCarouselController");var _useCommonVariables=require("./hooks/useCommonVariables");var _useInitProps=require("./hooks/useInitProps");var _useLayoutConfig=require("./hooks/useLayoutConfig");var _useOnProgressChange=require("./hooks/useOnProgressChange");var _usePropsErrorBoundary=require("./hooks/usePropsErrorBoundary");var _useVisibleRanges=require("./hooks/useVisibleRanges");var _BaseLayout=require("./layouts/BaseLayout");var _ScrollViewGesture=require("./ScrollViewGesture");var _store=require("./store");var _computedWithAutoFillData=require("./utils/computedWithAutoFillData");var _this=this,_jsxFileName="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/Carousel.tsx";function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;})),keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach(function(key){(0,_defineProperty2.default)(target,key,source[key]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}return target;}var Carousel=_react.default.forwardRef(function(_props,ref){var props=(0,_useInitProps.useInitProps)(_props);var testID=props.testID,data=props.data,rawData=props.rawData,loop=props.loop,autoFillData=props.autoFillData,mode=props.mode,style=props.style,width=props.width,height=props.height,vertical=props.vertical,autoPlay=props.autoPlay,windowSize=props.windowSize,autoPlayReverse=props.autoPlayReverse,autoPlayInterval=props.autoPlayInterval,scrollAnimationDuration=props.scrollAnimationDuration,withAnimation=props.withAnimation,renderItem=props.renderItem,onScrollEnd=props.onScrollEnd,onSnapToItem=props.onSnapToItem,_onScrollBegin=props.onScrollBegin,onProgressChange=props.onProgressChange,customAnimation=props.customAnimation,defaultIndex=props.defaultIndex;var commonVariables=(0,_useCommonVariables.useCommonVariables)(props);var size=commonVariables.size,handlerOffset=commonVariables.handlerOffset;var dataLength=data.length;var offsetX=(0,_reactNativeReanimated.useDerivedValue)(function(){var _f=function _f(){var totalSize=size*dataLength;var x=handlerOffset.value%totalSize;if(!loop)return handlerOffset.value;return isNaN(x)?0:x;};_f._closure={size:size,dataLength:dataLength,handlerOffset:handlerOffset,loop:loop};_f.asString="function _f(){const{size,dataLength,handlerOffset,loop}=jsThis._closure;{const totalSize=size*dataLength;const x=handlerOffset.value%totalSize;if(!loop)return handlerOffset.value;return isNaN(x)?0:x;}}";_f.__workletHash=9793733890185;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/Carousel.tsx (54:36)";return _f;}(),[loop,size,dataLength]);(0,_usePropsErrorBoundary.usePropsErrorBoundary)(props);(0,_useOnProgressChange.useOnProgressChange)({autoFillData:autoFillData,loop:loop,size:size,offsetX:offsetX,rawData:rawData,onProgressChange:onProgressChange});var carouselController=(0,_useCarouselController.useCarouselController)({loop:loop,size:size,data:data,autoFillData:autoFillData,handlerOffset:handlerOffset,withAnimation:withAnimation,defaultIndex:defaultIndex,onScrollEnd:function onScrollEnd(){return(0,_reactNativeReanimated.runOnJS)(_onScrollEnd)();},onScrollBegin:function onScrollBegin(){return!!_onScrollBegin&&(0,_reactNativeReanimated.runOnJS)(_onScrollBegin)();},duration:scrollAnimationDuration});var next=carouselController.next,prev=carouselController.prev,scrollTo=carouselController.scrollTo,getSharedIndex=carouselController.getSharedIndex,getCurrentIndex=carouselController.getCurrentIndex;var _useAutoPlay=(0,_useAutoPlay2.useAutoPlay)({autoPlay:autoPlay,autoPlayInterval:autoPlayInterval,autoPlayReverse:autoPlayReverse,carouselController:carouselController}),startAutoPlay=_useAutoPlay.start,pauseAutoPlay=_useAutoPlay.pause;var _onScrollEnd=_react.default.useCallback(function(){var _sharedIndex=Math.round(getSharedIndex());var realIndex=(0,_computedWithAutoFillData.computedRealIndexWithAutoFillData)({index:_sharedIndex,dataLength:rawData.length,loop:loop,autoFillData:autoFillData});if(onSnapToItem)onSnapToItem(realIndex);if(onScrollEnd)onScrollEnd(realIndex);},[loop,autoFillData,rawData.length,getSharedIndex,onSnapToItem,onScrollEnd]);var scrollViewGestureOnScrollBegin=_react.default.useCallback(function(){pauseAutoPlay();_onScrollBegin==null?void 0:_onScrollBegin();},[_onScrollBegin,pauseAutoPlay]);var scrollViewGestureOnScrollEnd=_react.default.useCallback(function(){startAutoPlay();_onScrollEnd();},[_onScrollEnd,startAutoPlay]);var scrollViewGestureOnTouchBegin=_react.default.useCallback(pauseAutoPlay,[pauseAutoPlay]);var scrollViewGestureOnTouchEnd=_react.default.useCallback(startAutoPlay,[startAutoPlay]);_react.default.useImperativeHandle(ref,function(){return{next:next,prev:prev,getCurrentIndex:getCurrentIndex,scrollTo:scrollTo};},[getCurrentIndex,next,prev,scrollTo]);var visibleRanges=(0,_useVisibleRanges.useVisibleRanges)({total:data.length,viewSize:size,translation:handlerOffset,windowSize:windowSize});var layoutConfig=(0,_useLayoutConfig.useLayoutConfig)(_objectSpread(_objectSpread({},props),{},{size:size}));var renderLayout=_react.default.useCallback(function(item,i){var realIndex=(0,_computedWithAutoFillData.computedRealIndexWithAutoFillData)({index:i,dataLength:rawData.length,loop:loop,autoFillData:autoFillData});return _react.default.createElement(_BaseLayout.BaseLayout,{key:i,index:i,handlerOffset:offsetX,visibleRanges:visibleRanges,animationStyle:customAnimation||layoutConfig,__self:_this,__source:{fileName:_jsxFileName,lineNumber:169,columnNumber:11}},function(_ref){var animationValue=_ref.animationValue;return renderItem({item:item,index:realIndex,animationValue:animationValue});});},[loop,rawData,offsetX,visibleRanges,autoFillData,renderItem,layoutConfig,customAnimation]);return _react.default.createElement(_store.CTX.Provider,{value:{props:props,common:commonVariables},__self:_this,__source:{fileName:_jsxFileName,lineNumber:199,columnNumber:7}},_react.default.createElement(_ScrollViewGesture.ScrollViewGesture,{key:mode,size:size,translation:handlerOffset,style:[styles.container,{width:width||"100%",height:height||"100%"},style,vertical?styles.itemsVertical:styles.itemsHorizontal],testID:testID,onScrollBegin:scrollViewGestureOnScrollBegin,onScrollEnd:scrollViewGestureOnScrollEnd,onTouchBegin:scrollViewGestureOnTouchBegin,onTouchEnd:scrollViewGestureOnTouchEnd,__self:_this,__source:{fileName:_jsxFileName,lineNumber:200,columnNumber:9}},data.map(renderLayout)));});var _default=Carousel;exports.default=_default;var styles=_reactNative.StyleSheet.create({container:{overflow:"hidden"},itemsHorizontal:{flexDirection:"row"},itemsVertical:{flexDirection:"column"}});
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _react=_interopRequireDefault(require("react"));var _reactNative=require("react-native");var _reactNativeReanimated=require("react-native-reanimated");var _useAutoPlay2=require("./hooks/useAutoPlay");var _useCarouselController=require("./hooks/useCarouselController");var _useCommonVariables=require("./hooks/useCommonVariables");var _useInitProps=require("./hooks/useInitProps");var _useLayoutConfig=require("./hooks/useLayoutConfig");var _useOnProgressChange=require("./hooks/useOnProgressChange");var _usePropsErrorBoundary=require("./hooks/usePropsErrorBoundary");var _useVisibleRanges=require("./hooks/useVisibleRanges");var _BaseLayout=require("./layouts/BaseLayout");var _ScrollViewGesture=require("./ScrollViewGesture");var _store=require("./store");var _computedWithAutoFillData=require("./utils/computedWithAutoFillData");var _this=this,_jsxFileName="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/Carousel.tsx";function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;})),keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach(function(key){(0,_defineProperty2.default)(target,key,source[key]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}return target;}var Carousel=_react.default.forwardRef(function(_props,ref){var props=(0,_useInitProps.useInitProps)(_props);var testID=props.testID,loop=props.loop,autoFillData=props.autoFillData,data=props.data,dataLength=props.dataLength,rawData=props.rawData,rawDataLength=props.rawDataLength,mode=props.mode,style=props.style,width=props.width,height=props.height,vertical=props.vertical,autoPlay=props.autoPlay,windowSize=props.windowSize,autoPlayReverse=props.autoPlayReverse,autoPlayInterval=props.autoPlayInterval,scrollAnimationDuration=props.scrollAnimationDuration,withAnimation=props.withAnimation,renderItem=props.renderItem,onScrollEnd=props.onScrollEnd,onSnapToItem=props.onSnapToItem,_onScrollBegin=props.onScrollBegin,onProgressChange=props.onProgressChange,customAnimation=props.customAnimation,defaultIndex=props.defaultIndex;var commonVariables=(0,_useCommonVariables.useCommonVariables)(props);var size=commonVariables.size,handlerOffset=commonVariables.handlerOffset;var offsetX=(0,_reactNativeReanimated.useDerivedValue)(function(){var _f=function _f(){var totalSize=size*dataLength;var x=handlerOffset.value%totalSize;if(!loop)return handlerOffset.value;return isNaN(x)?0:x;};_f._closure={size:size,dataLength:dataLength,handlerOffset:handlerOffset,loop:loop};_f.asString="function _f(){const{size,dataLength,handlerOffset,loop}=jsThis._closure;{const totalSize=size*dataLength;const x=handlerOffset.value%totalSize;if(!loop)return handlerOffset.value;return isNaN(x)?0:x;}}";_f.__workletHash=9793733890185;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/Carousel.tsx (59:36)";return _f;}(),[loop,size,dataLength]);(0,_usePropsErrorBoundary.usePropsErrorBoundary)(_objectSpread(_objectSpread({},props),{},{dataLength:dataLength}));(0,_useOnProgressChange.useOnProgressChange)({autoFillData:autoFillData,loop:loop,size:size,offsetX:offsetX,rawDataLength:rawDataLength,onProgressChange:onProgressChange});var carouselController=(0,_useCarouselController.useCarouselController)({loop:loop,size:size,dataLength:dataLength,autoFillData:autoFillData,handlerOffset:handlerOffset,withAnimation:withAnimation,defaultIndex:defaultIndex,onScrollEnd:function onScrollEnd(){return(0,_reactNativeReanimated.runOnJS)(_onScrollEnd)();},onScrollBegin:function onScrollBegin(){return!!_onScrollBegin&&(0,_reactNativeReanimated.runOnJS)(_onScrollBegin)();},duration:scrollAnimationDuration});var next=carouselController.next,prev=carouselController.prev,scrollTo=carouselController.scrollTo,getSharedIndex=carouselController.getSharedIndex,getCurrentIndex=carouselController.getCurrentIndex;var _useAutoPlay=(0,_useAutoPlay2.useAutoPlay)({autoPlay:autoPlay,autoPlayInterval:autoPlayInterval,autoPlayReverse:autoPlayReverse,carouselController:carouselController}),startAutoPlay=_useAutoPlay.start,pauseAutoPlay=_useAutoPlay.pause;var _onScrollEnd=_react.default.useCallback(function(){var _sharedIndex=Math.round(getSharedIndex());var realIndex=(0,_computedWithAutoFillData.computedRealIndexWithAutoFillData)({index:_sharedIndex,dataLength:rawDataLength,loop:loop,autoFillData:autoFillData});if(onSnapToItem)onSnapToItem(realIndex);if(onScrollEnd)onScrollEnd(realIndex);},[loop,autoFillData,rawDataLength,getSharedIndex,onSnapToItem,onScrollEnd]);var scrollViewGestureOnScrollBegin=_react.default.useCallback(function(){pauseAutoPlay();_onScrollBegin==null?void 0:_onScrollBegin();},[_onScrollBegin,pauseAutoPlay]);var scrollViewGestureOnScrollEnd=_react.default.useCallback(function(){startAutoPlay();_onScrollEnd();},[_onScrollEnd,startAutoPlay]);var scrollViewGestureOnTouchBegin=_react.default.useCallback(pauseAutoPlay,[pauseAutoPlay]);var scrollViewGestureOnTouchEnd=_react.default.useCallback(startAutoPlay,[startAutoPlay]);_react.default.useImperativeHandle(ref,function(){return{next:next,prev:prev,getCurrentIndex:getCurrentIndex,scrollTo:scrollTo};},[getCurrentIndex,next,prev,scrollTo]);var visibleRanges=(0,_useVisibleRanges.useVisibleRanges)({total:dataLength,viewSize:size,translation:handlerOffset,windowSize:windowSize});var layoutConfig=(0,_useLayoutConfig.useLayoutConfig)(_objectSpread(_objectSpread({},props),{},{size:size}));var renderLayout=_react.default.useCallback(function(item,i){var realIndex=(0,_computedWithAutoFillData.computedRealIndexWithAutoFillData)({index:i,dataLength:rawDataLength,loop:loop,autoFillData:autoFillData});return _react.default.createElement(_BaseLayout.BaseLayout,{key:i,index:i,handlerOffset:offsetX,visibleRanges:visibleRanges,animationStyle:customAnimation||layoutConfig,__self:_this,__source:{fileName:_jsxFileName,lineNumber:174,columnNumber:11}},function(_ref){var animationValue=_ref.animationValue;return renderItem({item:item,index:realIndex,animationValue:animationValue});});},[loop,rawData,offsetX,visibleRanges,autoFillData,renderItem,layoutConfig,customAnimation]);return _react.default.createElement(_store.CTX.Provider,{value:{props:props,common:commonVariables},__self:_this,__source:{fileName:_jsxFileName,lineNumber:204,columnNumber:7}},_react.default.createElement(_ScrollViewGesture.ScrollViewGesture,{key:mode,size:size,translation:handlerOffset,style:[styles.container,{width:width||"100%",height:height||"100%"},style,vertical?styles.itemsVertical:styles.itemsHorizontal],testID:testID,onScrollBegin:scrollViewGestureOnScrollBegin,onScrollEnd:scrollViewGestureOnScrollEnd,onTouchBegin:scrollViewGestureOnTouchBegin,onTouchEnd:scrollViewGestureOnTouchEnd,__self:_this,__source:{fileName:_jsxFileName,lineNumber:205,columnNumber:9}},data.map(renderLayout)));});var _default=Carousel;exports.default=_default;var styles=_reactNative.StyleSheet.create({container:{overflow:"hidden"},itemsHorizontal:{flexDirection:"row"},itemsVertical:{flexDirection:"column"}});
2
2
  //# sourceMappingURL=Carousel.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["Carousel.tsx"],"names":["Carousel","React","forwardRef","_props","ref","props","testID","data","rawData","loop","autoFillData","mode","style","width","height","vertical","autoPlay","windowSize","autoPlayReverse","autoPlayInterval","scrollAnimationDuration","withAnimation","renderItem","onScrollEnd","onSnapToItem","onScrollBegin","onProgressChange","customAnimation","defaultIndex","commonVariables","size","handlerOffset","dataLength","length","offsetX","totalSize","x","value","isNaN","carouselController","_onScrollEnd","duration","next","prev","scrollTo","getSharedIndex","getCurrentIndex","startAutoPlay","start","pauseAutoPlay","pause","useCallback","_sharedIndex","Math","round","realIndex","index","scrollViewGestureOnScrollBegin","scrollViewGestureOnScrollEnd","scrollViewGestureOnTouchBegin","scrollViewGestureOnTouchEnd","useImperativeHandle","visibleRanges","total","viewSize","translation","layoutConfig","renderLayout","item","i","animationValue","common","styles","container","itemsVertical","itemsHorizontal","map","StyleSheet","create","overflow","flexDirection"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\nimport React from \"react\";\nimport { StyleSheet } from \"react-native\";\nimport { runOnJS, useDerivedValue } from \"react-native-reanimated\";\n\nimport { useAutoPlay } from \"./hooks/useAutoPlay\";\nimport { useCarouselController } from \"./hooks/useCarouselController\";\nimport { useCommonVariables } from \"./hooks/useCommonVariables\";\nimport { useInitProps } from \"./hooks/useInitProps\";\nimport { useLayoutConfig } from \"./hooks/useLayoutConfig\";\nimport { useOnProgressChange } from \"./hooks/useOnProgressChange\";\nimport { usePropsErrorBoundary } from \"./hooks/usePropsErrorBoundary\";\nimport { useVisibleRanges } from \"./hooks/useVisibleRanges\";\nimport { BaseLayout } from \"./layouts/BaseLayout\";\nimport { ScrollViewGesture } from \"./ScrollViewGesture\";\nimport { CTX } from \"./store\";\nimport type { ICarouselInstance, TCarouselProps } from \"./types\";\nimport { computedRealIndexWithAutoFillData } from \"./utils/computedWithAutoFillData\";\n\nconst Carousel = React.forwardRef<ICarouselInstance, TCarouselProps<any>>(\n (_props, ref) => {\n const props = useInitProps(_props);\n\n const {\n testID,\n data,\n rawData,\n loop,\n autoFillData,\n mode,\n style,\n width,\n height,\n vertical,\n autoPlay,\n windowSize,\n autoPlayReverse,\n autoPlayInterval,\n scrollAnimationDuration,\n withAnimation,\n renderItem,\n onScrollEnd,\n onSnapToItem,\n onScrollBegin,\n onProgressChange,\n customAnimation,\n defaultIndex,\n } = props;\n\n const commonVariables = useCommonVariables(props);\n const { size, handlerOffset } = commonVariables;\n const dataLength = data.length;\n\n const offsetX = useDerivedValue(() => {\n const totalSize = size * dataLength;\n const x = handlerOffset.value % totalSize;\n\n if (!loop)\n return handlerOffset.value;\n\n return isNaN(x) ? 0 : x;\n }, [loop, size, dataLength]);\n\n usePropsErrorBoundary(props);\n useOnProgressChange({\n autoFillData,\n loop,\n size,\n offsetX,\n rawData,\n onProgressChange,\n });\n\n const carouselController = useCarouselController({\n loop,\n size,\n data,\n autoFillData,\n handlerOffset,\n withAnimation,\n defaultIndex,\n onScrollEnd: () => runOnJS(_onScrollEnd)(),\n onScrollBegin: () => !!onScrollBegin && runOnJS(onScrollBegin)(),\n duration: scrollAnimationDuration,\n });\n\n const { next, prev, scrollTo, getSharedIndex, getCurrentIndex }\n = carouselController;\n\n const { start: startAutoPlay, pause: pauseAutoPlay } = useAutoPlay({\n autoPlay,\n autoPlayInterval,\n autoPlayReverse,\n carouselController,\n });\n\n const _onScrollEnd = React.useCallback(() => {\n const _sharedIndex = Math.round(getSharedIndex());\n\n const realIndex = computedRealIndexWithAutoFillData({\n index: _sharedIndex,\n dataLength: rawData.length,\n loop,\n autoFillData,\n });\n\n if (onSnapToItem)\n onSnapToItem(realIndex);\n\n if (onScrollEnd)\n onScrollEnd(realIndex);\n }, [\n loop,\n autoFillData,\n rawData.length,\n getSharedIndex,\n onSnapToItem,\n onScrollEnd,\n ]);\n\n const scrollViewGestureOnScrollBegin = React.useCallback(() => {\n pauseAutoPlay();\n onScrollBegin?.();\n }, [onScrollBegin, pauseAutoPlay]);\n\n const scrollViewGestureOnScrollEnd = React.useCallback(() => {\n startAutoPlay();\n _onScrollEnd();\n }, [_onScrollEnd, startAutoPlay]);\n\n const scrollViewGestureOnTouchBegin = React.useCallback(pauseAutoPlay, [\n pauseAutoPlay,\n ]);\n\n const scrollViewGestureOnTouchEnd = React.useCallback(startAutoPlay, [\n startAutoPlay,\n ]);\n\n React.useImperativeHandle(\n ref,\n () => ({\n next,\n prev,\n getCurrentIndex,\n scrollTo,\n }),\n [getCurrentIndex, next, prev, scrollTo],\n );\n\n const visibleRanges = useVisibleRanges({\n total: data.length,\n viewSize: size,\n translation: handlerOffset,\n windowSize,\n });\n\n const layoutConfig = useLayoutConfig({ ...props, size });\n\n const renderLayout = React.useCallback(\n (item: any, i: number) => {\n const realIndex = computedRealIndexWithAutoFillData({\n index: i,\n dataLength: rawData.length,\n loop,\n autoFillData,\n });\n\n return (\n <BaseLayout\n key={i}\n index={i}\n handlerOffset={offsetX}\n visibleRanges={visibleRanges}\n animationStyle={customAnimation || layoutConfig}\n >\n {({ animationValue }) =>\n renderItem({\n item,\n index: realIndex,\n animationValue,\n })\n }\n </BaseLayout>\n );\n },\n [\n loop,\n rawData,\n offsetX,\n visibleRanges,\n autoFillData,\n renderItem,\n layoutConfig,\n customAnimation,\n ],\n );\n\n return (\n <CTX.Provider value={{ props, common: commonVariables }}>\n <ScrollViewGesture\n key={mode}\n size={size}\n translation={handlerOffset}\n style={[\n styles.container,\n {\n width: width || \"100%\",\n height: height || \"100%\",\n },\n style,\n vertical\n ? styles.itemsVertical\n : styles.itemsHorizontal,\n ]}\n testID={testID}\n onScrollBegin={scrollViewGestureOnScrollBegin}\n onScrollEnd={scrollViewGestureOnScrollEnd}\n onTouchBegin={scrollViewGestureOnTouchBegin}\n onTouchEnd={scrollViewGestureOnTouchEnd}\n >\n {data.map(renderLayout)}\n </ScrollViewGesture>\n </CTX.Provider>\n );\n },\n);\n\nexport default Carousel as <T extends any>(\n props: React.PropsWithChildren<TCarouselProps<T>>\n) => React.ReactElement;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: \"hidden\",\n },\n itemsHorizontal: {\n flexDirection: \"row\",\n },\n itemsVertical: {\n flexDirection: \"column\",\n },\n});\n"]}
1
+ {"version":3,"sources":["Carousel.tsx"],"names":["Carousel","React","forwardRef","_props","ref","props","testID","loop","autoFillData","data","dataLength","rawData","rawDataLength","mode","style","width","height","vertical","autoPlay","windowSize","autoPlayReverse","autoPlayInterval","scrollAnimationDuration","withAnimation","renderItem","onScrollEnd","onSnapToItem","onScrollBegin","onProgressChange","customAnimation","defaultIndex","commonVariables","size","handlerOffset","offsetX","totalSize","x","value","isNaN","carouselController","_onScrollEnd","duration","next","prev","scrollTo","getSharedIndex","getCurrentIndex","startAutoPlay","start","pauseAutoPlay","pause","useCallback","_sharedIndex","Math","round","realIndex","index","scrollViewGestureOnScrollBegin","scrollViewGestureOnScrollEnd","scrollViewGestureOnTouchBegin","scrollViewGestureOnTouchEnd","useImperativeHandle","visibleRanges","total","viewSize","translation","layoutConfig","renderLayout","item","i","animationValue","common","styles","container","itemsVertical","itemsHorizontal","map","StyleSheet","create","overflow","flexDirection"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\nimport React from \"react\";\nimport { StyleSheet } from \"react-native\";\nimport { runOnJS, useDerivedValue } from \"react-native-reanimated\";\n\nimport { useAutoPlay } from \"./hooks/useAutoPlay\";\nimport { useCarouselController } from \"./hooks/useCarouselController\";\nimport { useCommonVariables } from \"./hooks/useCommonVariables\";\nimport { useInitProps } from \"./hooks/useInitProps\";\nimport { useLayoutConfig } from \"./hooks/useLayoutConfig\";\nimport { useOnProgressChange } from \"./hooks/useOnProgressChange\";\nimport { usePropsErrorBoundary } from \"./hooks/usePropsErrorBoundary\";\nimport { useVisibleRanges } from \"./hooks/useVisibleRanges\";\nimport { BaseLayout } from \"./layouts/BaseLayout\";\nimport { ScrollViewGesture } from \"./ScrollViewGesture\";\nimport { CTX } from \"./store\";\nimport type { ICarouselInstance, TCarouselProps } from \"./types\";\nimport { computedRealIndexWithAutoFillData } from \"./utils/computedWithAutoFillData\";\n\nconst Carousel = React.forwardRef<ICarouselInstance, TCarouselProps<any>>(\n (_props, ref) => {\n const props = useInitProps(_props);\n\n const {\n testID,\n loop,\n autoFillData,\n // Fill data with autoFillData\n data,\n // Length of fill data\n dataLength,\n // Raw data that has not been processed\n rawData,\n // Length of raw data\n rawDataLength,\n mode,\n style,\n width,\n height,\n vertical,\n autoPlay,\n windowSize,\n autoPlayReverse,\n autoPlayInterval,\n scrollAnimationDuration,\n withAnimation,\n renderItem,\n onScrollEnd,\n onSnapToItem,\n onScrollBegin,\n onProgressChange,\n customAnimation,\n defaultIndex,\n } = props;\n\n const commonVariables = useCommonVariables(props);\n const { size, handlerOffset } = commonVariables;\n\n const offsetX = useDerivedValue(() => {\n const totalSize = size * dataLength;\n const x = handlerOffset.value % totalSize;\n\n if (!loop)\n return handlerOffset.value;\n\n return isNaN(x) ? 0 : x;\n }, [loop, size, dataLength]);\n\n usePropsErrorBoundary({ ...props, dataLength });\n useOnProgressChange({\n autoFillData,\n loop,\n size,\n offsetX,\n rawDataLength,\n onProgressChange,\n });\n\n const carouselController = useCarouselController({\n loop,\n size,\n dataLength,\n autoFillData,\n handlerOffset,\n withAnimation,\n defaultIndex,\n onScrollEnd: () => runOnJS(_onScrollEnd)(),\n onScrollBegin: () => !!onScrollBegin && runOnJS(onScrollBegin)(),\n duration: scrollAnimationDuration,\n });\n\n const { next, prev, scrollTo, getSharedIndex, getCurrentIndex }\n = carouselController;\n\n const { start: startAutoPlay, pause: pauseAutoPlay } = useAutoPlay({\n autoPlay,\n autoPlayInterval,\n autoPlayReverse,\n carouselController,\n });\n\n const _onScrollEnd = React.useCallback(() => {\n const _sharedIndex = Math.round(getSharedIndex());\n\n const realIndex = computedRealIndexWithAutoFillData({\n index: _sharedIndex,\n dataLength: rawDataLength,\n loop,\n autoFillData,\n });\n\n if (onSnapToItem)\n onSnapToItem(realIndex);\n\n if (onScrollEnd)\n onScrollEnd(realIndex);\n }, [\n loop,\n autoFillData,\n rawDataLength,\n getSharedIndex,\n onSnapToItem,\n onScrollEnd,\n ]);\n\n const scrollViewGestureOnScrollBegin = React.useCallback(() => {\n pauseAutoPlay();\n onScrollBegin?.();\n }, [onScrollBegin, pauseAutoPlay]);\n\n const scrollViewGestureOnScrollEnd = React.useCallback(() => {\n startAutoPlay();\n _onScrollEnd();\n }, [_onScrollEnd, startAutoPlay]);\n\n const scrollViewGestureOnTouchBegin = React.useCallback(pauseAutoPlay, [\n pauseAutoPlay,\n ]);\n\n const scrollViewGestureOnTouchEnd = React.useCallback(startAutoPlay, [\n startAutoPlay,\n ]);\n\n React.useImperativeHandle(\n ref,\n () => ({\n next,\n prev,\n getCurrentIndex,\n scrollTo,\n }),\n [getCurrentIndex, next, prev, scrollTo],\n );\n\n const visibleRanges = useVisibleRanges({\n total: dataLength,\n viewSize: size,\n translation: handlerOffset,\n windowSize,\n });\n\n const layoutConfig = useLayoutConfig({ ...props, size });\n\n const renderLayout = React.useCallback(\n (item: any, i: number) => {\n const realIndex = computedRealIndexWithAutoFillData({\n index: i,\n dataLength: rawDataLength,\n loop,\n autoFillData,\n });\n\n return (\n <BaseLayout\n key={i}\n index={i}\n handlerOffset={offsetX}\n visibleRanges={visibleRanges}\n animationStyle={customAnimation || layoutConfig}\n >\n {({ animationValue }) =>\n renderItem({\n item,\n index: realIndex,\n animationValue,\n })\n }\n </BaseLayout>\n );\n },\n [\n loop,\n rawData,\n offsetX,\n visibleRanges,\n autoFillData,\n renderItem,\n layoutConfig,\n customAnimation,\n ],\n );\n\n return (\n <CTX.Provider value={{ props, common: commonVariables }}>\n <ScrollViewGesture\n key={mode}\n size={size}\n translation={handlerOffset}\n style={[\n styles.container,\n {\n width: width || \"100%\",\n height: height || \"100%\",\n },\n style,\n vertical\n ? styles.itemsVertical\n : styles.itemsHorizontal,\n ]}\n testID={testID}\n onScrollBegin={scrollViewGestureOnScrollBegin}\n onScrollEnd={scrollViewGestureOnScrollEnd}\n onTouchBegin={scrollViewGestureOnTouchBegin}\n onTouchEnd={scrollViewGestureOnTouchEnd}\n >\n {data.map(renderLayout)}\n </ScrollViewGesture>\n </CTX.Provider>\n );\n },\n);\n\nexport default Carousel as <T extends any>(\n props: React.PropsWithChildren<TCarouselProps<T>>\n) => React.ReactElement;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: \"hidden\",\n },\n itemsHorizontal: {\n flexDirection: \"row\",\n },\n itemsVertical: {\n flexDirection: \"column\",\n },\n});\n"]}
@@ -1,2 +1,2 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.ScrollViewGesture=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _react=_interopRequireDefault(require("react"));var _reactNativeGestureHandler=require("react-native-gesture-handler");var _reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated"));var _constants=require("./constants");var _store=require("./store");var _dealWithAnimation=require("./utils/dealWithAnimation");var _this=this,_jsxFileName="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/ScrollViewGesture.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 IScrollViewGesture=function IScrollViewGesture(props){var _React$useContext=_react.default.useContext(_store.CTX),_React$useContext$pro=_React$useContext.props,vertical=_React$useContext$pro.vertical,data=_React$useContext$pro.data,pagingEnabled=_React$useContext$pro.pagingEnabled,snapEnabled=_React$useContext$pro.snapEnabled,panGestureHandlerProps=_React$useContext$pro.panGestureHandlerProps,infinite=_React$useContext$pro.loop,scrollAnimationDuration=_React$useContext$pro.scrollAnimationDuration,withAnimation=_React$useContext$pro.withAnimation,enabled=_React$useContext$pro.enabled;var size=props.size,translation=props.translation,testID=props.testID,_props$style=props.style,style=_props$style===void 0?{}:_props$style,onScrollBegin=props.onScrollBegin,onScrollEnd=props.onScrollEnd,onTouchBegin=props.onTouchBegin,onTouchEnd=props.onTouchEnd;var maxPage=data.length;var isHorizontal=(0,_reactNativeReanimated.useDerivedValue)(function(){var _f=function _f(){return!vertical;};_f._closure={vertical:vertical};_f.asString="function _f(){const{vertical}=jsThis._closure;{return!vertical;}}";_f.__workletHash=14495821007639;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (67:39)";return _f;}(),[vertical]);var touching=(0,_reactNativeReanimated.useSharedValue)(false);var scrollEndTranslation=(0,_reactNativeReanimated.useSharedValue)(0);var scrollEndVelocity=(0,_reactNativeReanimated.useSharedValue)(0);var _withSpring=_react.default.useCallback(function(){var _f=function _f(toValue,onFinished){var defaultWithAnimation={type:"timing",config:{duration:scrollAnimationDuration+100,easing:_constants.Easing.easeOutQuart}};return(0,_dealWithAnimation.dealWithAnimation)(withAnimation!=null?withAnimation:defaultWithAnimation)(toValue,function(){var _f=function _f(isFinished){if(isFinished)onFinished&&(0,_reactNativeReanimated.runOnJS)(onFinished)();};_f._closure={onFinished:onFinished,runOnJS:_reactNativeReanimated.runOnJS};_f.asString="function _f(isFinished){const{onFinished,runOnJS}=jsThis._closure;{if(isFinished)onFinished&&runOnJS(onFinished)();}}";_f.__workletHash=3881957308013;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (85:8)";return _f;}());};_f._closure={scrollAnimationDuration:scrollAnimationDuration,Easing:{easeOutQuart:_constants.Easing.easeOutQuart},dealWithAnimation:_dealWithAnimation.dealWithAnimation,withAnimation:withAnimation,runOnJS:_reactNativeReanimated.runOnJS};_f.asString="function _f(toValue,onFinished){const{scrollAnimationDuration,Easing,dealWithAnimation,withAnimation,runOnJS}=jsThis._closure;{var _withAnimation;const defaultWithAnimation={type:\"timing\",config:{duration:scrollAnimationDuration+100,easing:Easing.easeOutQuart}};return dealWithAnimation((_withAnimation=withAnimation)!==null&&_withAnimation!==void 0?_withAnimation:defaultWithAnimation)(toValue,function(isFinished){\"worklet\";if(isFinished)onFinished&&runOnJS(onFinished)();});}}";_f.__workletHash=4492029393801;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (73:4)";return _f;}(),[scrollAnimationDuration,withAnimation]);var endWithSpring=_react.default.useCallback(function(){var _f=function _f(onFinished){var origin=translation.value;var velocity=scrollEndVelocity.value;if(!pagingEnabled){if(snapEnabled){var nextPage=Math.round((origin+velocity*0.4)/size)*size;translation.value=_withSpring(nextPage,onFinished);return;}translation.value=(0,_reactNativeReanimated.withDecay)({velocity:velocity,deceleration:0.999});return;}var direction=-(scrollEndTranslation.value>=0?1:-1);var computed=direction<0?Math.ceil:Math.floor;var page=computed(-translation.value/size);var finalPage=page+direction;if(!infinite)finalPage=Math.min(maxPage-1,Math.max(0,finalPage));translation.value=_withSpring(-finalPage*size,onFinished);};_f._closure={translation:translation,scrollEndVelocity:scrollEndVelocity,pagingEnabled:pagingEnabled,snapEnabled:snapEnabled,size:size,_withSpring:_withSpring,withDecay:_reactNativeReanimated.withDecay,scrollEndTranslation:scrollEndTranslation,infinite:infinite,maxPage:maxPage};_f.asString="function _f(onFinished){const{translation,scrollEndVelocity,pagingEnabled,snapEnabled,size,_withSpring,withDecay,scrollEndTranslation,infinite,maxPage}=jsThis._closure;{const origin=translation.value;const velocity=scrollEndVelocity.value;if(!pagingEnabled){if(snapEnabled){const nextPage=Math.round((origin+velocity*0.4)/size)*size;translation.value=_withSpring(nextPage,onFinished);return;}translation.value=withDecay({velocity:velocity,deceleration:0.999});return;}const direction=-(scrollEndTranslation.value>=0?1:-1);const computed=direction<0?Math.ceil:Math.floor;const page=computed(-translation.value/size);let finalPage=page+direction;if(!infinite)finalPage=Math.min(maxPage-1,Math.max(0,finalPage));translation.value=_withSpring(-finalPage*size,onFinished);}}";_f.__workletHash=7195121800163;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (96:4)";return _f;}(),[translation,scrollEndVelocity.value,pagingEnabled,size,scrollEndTranslation.value,infinite,_withSpring,snapEnabled,maxPage]);var onFinish=_react.default.useCallback(function(){var _f=function _f(isFinished){if(isFinished){touching.value=false;onScrollEnd&&(0,_reactNativeReanimated.runOnJS)(onScrollEnd)();}};_f._closure={touching:touching,onScrollEnd:onScrollEnd,runOnJS:_reactNativeReanimated.runOnJS};_f.asString="function _f(isFinished){const{touching,onScrollEnd,runOnJS}=jsThis._closure;{if(isFinished){touching.value=false;onScrollEnd&&runOnJS(onScrollEnd)();}}}";_f.__workletHash=12308424749737;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (143:4)";return _f;}(),[onScrollEnd,touching]);var activeDecay=_react.default.useCallback(function(){var _f=function _f(){touching.value=true;translation.value=(0,_reactNativeReanimated.withDecay)({velocity:scrollEndVelocity.value},function(){var _f=function _f(isFinished){return onFinish(isFinished);};_f._closure={onFinish:onFinish};_f.asString="function _f(isFinished){const{onFinish}=jsThis._closure;{return onFinish(isFinished);}}";_f.__workletHash=12004837605207;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (158:6)";return _f;}());};_f._closure={touching:touching,translation:translation,withDecay:_reactNativeReanimated.withDecay,scrollEndVelocity:scrollEndVelocity,onFinish:onFinish};_f.asString="function _f(){const{touching,translation,withDecay,scrollEndVelocity,onFinish}=jsThis._closure;{touching.value=true;translation.value=withDecay({velocity:scrollEndVelocity.value},function(isFinished){return onFinish(isFinished);});}}";_f.__workletHash=1701548878343;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (153:40)";return _f;}(),[onFinish,scrollEndVelocity.value,touching,translation]);var resetBoundary=_react.default.useCallback(function(){var _f=function _f(){if(touching.value)return;if(translation.value>0){if(scrollEndTranslation.value<0){activeDecay();return;}if(!infinite){translation.value=_withSpring(0);return;}}if(translation.value<-((maxPage-1)*size)){if(scrollEndTranslation.value>0){activeDecay();return;}if(!infinite)translation.value=_withSpring(-((maxPage-1)*size));}};_f._closure={touching:touching,translation:translation,scrollEndTranslation:scrollEndTranslation,activeDecay:activeDecay,infinite:infinite,_withSpring:_withSpring,maxPage:maxPage,size:size};_f.asString="function _f(){const{touching,translation,scrollEndTranslation,activeDecay,infinite,_withSpring,maxPage,size}=jsThis._closure;{if(touching.value)return;if(translation.value>0){if(scrollEndTranslation.value<0){activeDecay();return;}if(!infinite){translation.value=_withSpring(0);return;}}if(translation.value<-((maxPage-1)*size)){if(scrollEndTranslation.value>0){activeDecay();return;}if(!infinite)translation.value=_withSpring(-((maxPage-1)*size));}}}";_f.__workletHash=17032900471906;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (162:42)";return _f;}(),[touching.value,translation,maxPage,size,scrollEndTranslation.value,infinite,activeDecay,_withSpring]);(0,_reactNativeReanimated.useAnimatedReaction)(function(){var _f=function _f(){return translation.value;};_f._closure={translation:translation};_f.asString="function _f(){const{translation}=jsThis._closure;{return translation.value;}}";_f.__workletHash=9829368032147;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (198:4)";return _f;}(),function(){var _f=function _f(){if(!pagingEnabled)resetBoundary();};_f._closure={pagingEnabled:pagingEnabled,resetBoundary:resetBoundary};_f.asString="function _f(){const{pagingEnabled,resetBoundary}=jsThis._closure;{if(!pagingEnabled)resetBoundary();}}";_f.__workletHash=3586615076030;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (199:4)";return _f;}(),[pagingEnabled,resetBoundary]);var panGestureEventHandler=(0,_reactNativeReanimated.useAnimatedGestureHandler)({onStart:function(){var _f=function _f(_,ctx){touching.value=true;ctx.validStart=true;onScrollBegin&&(0,_reactNativeReanimated.runOnJS)(onScrollBegin)();ctx.max=(maxPage-1)*size;ctx.panOffset=translation.value;};_f._closure={touching:touching,onScrollBegin:onScrollBegin,runOnJS:_reactNativeReanimated.runOnJS,maxPage:maxPage,size:size,translation:translation};_f.asString="function _f(_,ctx){const{touching,onScrollBegin,runOnJS,maxPage,size,translation}=jsThis._closure;{touching.value=true;ctx.validStart=true;onScrollBegin&&runOnJS(onScrollBegin)();ctx.max=(maxPage-1)*size;ctx.panOffset=translation.value;}}";_f.__workletHash=1789833551681;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (211:15)";return _f;}(),onActive:function(){var _f=function _f(e,ctx){if(ctx.validStart){ctx.validStart=false;(0,_reactNativeReanimated.cancelAnimation)(translation);}touching.value=true;var translationX=e.translationX,translationY=e.translationY;var panTranslation=isHorizontal.value?translationX:translationY;if(!infinite&&(translation.value>0||translation.value<-ctx.max)){var boundary=translation.value>0?0:-ctx.max;var fixed=boundary-ctx.panOffset;var dynamic=panTranslation-fixed;translation.value=boundary+dynamic*0.5;return;}translation.value=ctx.panOffset+panTranslation;};_f._closure={cancelAnimation:_reactNativeReanimated.cancelAnimation,translation:translation,touching:touching,isHorizontal:isHorizontal,infinite:infinite};_f.asString="function _f(e,ctx){const{cancelAnimation,translation,touching,isHorizontal,infinite}=jsThis._closure;{if(ctx.validStart){ctx.validStart=false;cancelAnimation(translation);}touching.value=true;const{translationX:translationX,translationY:translationY}=e;const panTranslation=isHorizontal.value?translationX:translationY;if(!infinite&&(translation.value>0||translation.value<-ctx.max)){const boundary=translation.value>0?0:-ctx.max;const fixed=boundary-ctx.panOffset;const dynamic=panTranslation-fixed;translation.value=boundary+dynamic*0.5;return;}translation.value=ctx.panOffset+panTranslation;}}";_f.__workletHash=11738845597539;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (218:16)";return _f;}(),onEnd:function(){var _f=function _f(e){var velocityX=e.velocityX,velocityY=e.velocityY,translationX=e.translationX,translationY=e.translationY;scrollEndVelocity.value=isHorizontal.value?velocityX:velocityY;scrollEndTranslation.value=isHorizontal.value?translationX:translationY;endWithSpring(onScrollEnd);if(!infinite)touching.value=false;};_f._closure={scrollEndVelocity:scrollEndVelocity,isHorizontal:isHorizontal,scrollEndTranslation:scrollEndTranslation,endWithSpring:endWithSpring,onScrollEnd:onScrollEnd,infinite:infinite,touching:touching};_f.asString="function _f(e){const{scrollEndVelocity,isHorizontal,scrollEndTranslation,endWithSpring,onScrollEnd,infinite,touching}=jsThis._closure;{const{velocityX:velocityX,velocityY:velocityY,translationX:translationX,translationY:translationY}=e;scrollEndVelocity.value=isHorizontal.value?velocityX:velocityY;scrollEndTranslation.value=isHorizontal.value?translationX:translationY;endWithSpring(onScrollEnd);if(!infinite)touching.value=false;}}";_f.__workletHash=10638018947905;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (242:13)";return _f;}()},[pagingEnabled,isHorizontal.value,infinite,maxPage,size,snapEnabled,onScrollBegin,onScrollEnd]);return _react.default.createElement(_reactNativeGestureHandler.PanGestureHandler,(0,_extends2.default)({},panGestureHandlerProps,{enabled:enabled,onGestureEvent:panGestureEventHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:270,columnNumber:5}}),_react.default.createElement(_reactNativeReanimated.default.View,{testID:testID,style:style,onTouchStart:onTouchBegin,onTouchEnd:onTouchEnd,__self:_this,__source:{fileName:_jsxFileName,lineNumber:275,columnNumber:7}},props.children));};var ScrollViewGesture=IScrollViewGesture;exports.ScrollViewGesture=ScrollViewGesture;
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.ScrollViewGesture=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _react=_interopRequireDefault(require("react"));var _reactNativeGestureHandler=require("react-native-gesture-handler");var _reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated"));var _constants=require("./constants");var _store=require("./store");var _dealWithAnimation=require("./utils/dealWithAnimation");var _this=this,_jsxFileName="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/ScrollViewGesture.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 IScrollViewGesture=function IScrollViewGesture(props){var _React$useContext=_react.default.useContext(_store.CTX),_React$useContext$pro=_React$useContext.props,vertical=_React$useContext$pro.vertical,pagingEnabled=_React$useContext$pro.pagingEnabled,snapEnabled=_React$useContext$pro.snapEnabled,panGestureHandlerProps=_React$useContext$pro.panGestureHandlerProps,infinite=_React$useContext$pro.loop,scrollAnimationDuration=_React$useContext$pro.scrollAnimationDuration,withAnimation=_React$useContext$pro.withAnimation,enabled=_React$useContext$pro.enabled,dataLength=_React$useContext$pro.dataLength,overscrollEnabled=_React$useContext$pro.overscrollEnabled;var size=props.size,translation=props.translation,testID=props.testID,_props$style=props.style,style=_props$style===void 0?{}:_props$style,onScrollBegin=props.onScrollBegin,onScrollEnd=props.onScrollEnd,onTouchBegin=props.onTouchBegin,onTouchEnd=props.onTouchEnd;var maxPage=dataLength;var isHorizontal=(0,_reactNativeReanimated.useDerivedValue)(function(){var _f=function _f(){return!vertical;};_f._closure={vertical:vertical};_f.asString="function _f(){const{vertical}=jsThis._closure;{return!vertical;}}";_f.__workletHash=14495821007639;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (70:39)";return _f;}(),[vertical]);var touching=(0,_reactNativeReanimated.useSharedValue)(false);var scrollEndTranslation=(0,_reactNativeReanimated.useSharedValue)(0);var scrollEndVelocity=(0,_reactNativeReanimated.useSharedValue)(0);var containerRef=(0,_reactNativeReanimated.useAnimatedRef)();var getLimit=_react.default.useCallback(function(){var _f=function _f(){if(!infinite&&!overscrollEnabled){var _measure=(0,_reactNativeReanimated.measure)(containerRef),_measure$width=_measure.width,containerWidth=_measure$width===void 0?0:_measure$width;if(dataLength*size<containerWidth)return 0;return dataLength*size-containerWidth;}return dataLength*size;};_f._closure={infinite:infinite,overscrollEnabled:overscrollEnabled,measure:_reactNativeReanimated.measure,containerRef:containerRef,dataLength:dataLength,size:size};_f.asString="function _f(){const{infinite,overscrollEnabled,measure,containerRef,dataLength,size}=jsThis._closure;{if(!infinite&&!overscrollEnabled){const{width:containerWidth=0}=measure(containerRef);if(dataLength*size<containerWidth)return 0;return dataLength*size-containerWidth;}return dataLength*size;}}";_f.__workletHash=11841077662563;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (77:37)";return _f;}(),[infinite,size,dataLength,overscrollEnabled]);var withSpring=_react.default.useCallback(function(){var _f=function _f(toValue,onFinished){var defaultWithAnimation={type:"timing",config:{duration:scrollAnimationDuration+100,easing:_constants.Easing.easeOutQuart}};return(0,_dealWithAnimation.dealWithAnimation)(withAnimation!=null?withAnimation:defaultWithAnimation)(toValue,function(){var _f=function _f(isFinished){if(isFinished)onFinished&&(0,_reactNativeReanimated.runOnJS)(onFinished)();};_f._closure={onFinished:onFinished,runOnJS:_reactNativeReanimated.runOnJS};_f.asString="function _f(isFinished){const{onFinished,runOnJS}=jsThis._closure;{if(isFinished)onFinished&&runOnJS(onFinished)();}}";_f.__workletHash=3881957308013;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (107:8)";return _f;}());};_f._closure={scrollAnimationDuration:scrollAnimationDuration,Easing:{easeOutQuart:_constants.Easing.easeOutQuart},dealWithAnimation:_dealWithAnimation.dealWithAnimation,withAnimation:withAnimation,runOnJS:_reactNativeReanimated.runOnJS};_f.asString="function _f(toValue,onFinished){const{scrollAnimationDuration,Easing,dealWithAnimation,withAnimation,runOnJS}=jsThis._closure;{var _withAnimation;const defaultWithAnimation={type:\"timing\",config:{duration:scrollAnimationDuration+100,easing:Easing.easeOutQuart}};return dealWithAnimation((_withAnimation=withAnimation)!==null&&_withAnimation!==void 0?_withAnimation:defaultWithAnimation)(toValue,function(isFinished){\"worklet\";if(isFinished)onFinished&&runOnJS(onFinished)();});}}";_f.__workletHash=4492029393801;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (95:4)";return _f;}(),[scrollAnimationDuration,withAnimation]);var endWithSpring=_react.default.useCallback(function(){var _f=function _f(onFinished){var origin=translation.value;var velocity=scrollEndVelocity.value;var finalTranslation=(0,_reactNativeReanimated.withDecay)({velocity:velocity,deceleration:0.999});if(pagingEnabled){var offset=-(scrollEndTranslation.value>=0?1:-1);var computed=offset<0?Math.ceil:Math.floor;var page=computed(-translation.value/size);if(infinite){var finalPage=page+offset;finalTranslation=withSpring(withProcessTranslation(-finalPage*size),onFinished);}else{var _finalPage=Math.min(maxPage-1,Math.max(0,page+offset));finalTranslation=withSpring(withProcessTranslation(-_finalPage*size),onFinished);}}if(!pagingEnabled&&snapEnabled){var nextPage=Math.round((origin+velocity*0.4)/size)*size;finalTranslation=withSpring(withProcessTranslation(nextPage),onFinished);}translation.value=finalTranslation;function withProcessTranslation(translation){if(!infinite&&!overscrollEnabled){var limit=getLimit();var sign=Math.sign(translation);return sign*Math.max(0,Math.min(limit,Math.abs(translation)));}return translation;}};_f._closure={translation:translation,scrollEndVelocity:scrollEndVelocity,withDecay:_reactNativeReanimated.withDecay,pagingEnabled:pagingEnabled,scrollEndTranslation:scrollEndTranslation,size:size,infinite:infinite,withSpring:withSpring,maxPage:maxPage,snapEnabled:snapEnabled,overscrollEnabled:overscrollEnabled,getLimit:getLimit};_f.asString="function _f(onFinished){const{translation,scrollEndVelocity,withDecay,pagingEnabled,scrollEndTranslation,size,infinite,withSpring,maxPage,snapEnabled,overscrollEnabled,getLimit}=jsThis._closure;{const origin=translation.value;const velocity=scrollEndVelocity.value;let finalTranslation=withDecay({velocity:velocity,deceleration:0.999});if(pagingEnabled){const offset=-(scrollEndTranslation.value>=0?1:-1);const computed=offset<0?Math.ceil:Math.floor;const page=computed(-translation.value/size);if(infinite){const finalPage=page+offset;finalTranslation=withSpring(withProcessTranslation(-finalPage*size),onFinished);}else{const finalPage=Math.min(maxPage-1,Math.max(0,page+offset));finalTranslation=withSpring(withProcessTranslation(-finalPage*size),onFinished);}}if(!pagingEnabled&&snapEnabled){const nextPage=Math.round((origin+velocity*0.4)/size)*size;finalTranslation=withSpring(withProcessTranslation(nextPage),onFinished);}translation.value=finalTranslation;function withProcessTranslation(translation){if(!infinite&&!overscrollEnabled){const limit=getLimit();const sign=Math.sign(translation);return sign*Math.max(0,Math.min(limit,Math.abs(translation)));}return translation;}}}";_f.__workletHash=17058811688208;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (118:4)";return _f;}(),[translation,scrollEndVelocity.value,pagingEnabled,size,scrollEndTranslation.value,infinite,withSpring,snapEnabled,maxPage]);var onFinish=_react.default.useCallback(function(){var _f=function _f(isFinished){if(isFinished){touching.value=false;onScrollEnd&&(0,_reactNativeReanimated.runOnJS)(onScrollEnd)();}};_f._closure={touching:touching,onScrollEnd:onScrollEnd,runOnJS:_reactNativeReanimated.runOnJS};_f.asString="function _f(isFinished){const{touching,onScrollEnd,runOnJS}=jsThis._closure;{if(isFinished){touching.value=false;onScrollEnd&&runOnJS(onScrollEnd)();}}}";_f.__workletHash=12308424749737;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (180:4)";return _f;}(),[onScrollEnd,touching]);var activeDecay=_react.default.useCallback(function(){var _f=function _f(){touching.value=true;translation.value=(0,_reactNativeReanimated.withDecay)({velocity:scrollEndVelocity.value},function(){var _f=function _f(isFinished){return onFinish(isFinished);};_f._closure={onFinish:onFinish};_f.asString="function _f(isFinished){const{onFinish}=jsThis._closure;{return onFinish(isFinished);}}";_f.__workletHash=12004837605207;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (195:6)";return _f;}());};_f._closure={touching:touching,translation:translation,withDecay:_reactNativeReanimated.withDecay,scrollEndVelocity:scrollEndVelocity,onFinish:onFinish};_f.asString="function _f(){const{touching,translation,withDecay,scrollEndVelocity,onFinish}=jsThis._closure;{touching.value=true;translation.value=withDecay({velocity:scrollEndVelocity.value},function(isFinished){return onFinish(isFinished);});}}";_f.__workletHash=1701548878343;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (190:40)";return _f;}(),[onFinish,scrollEndVelocity.value,touching,translation]);var resetBoundary=_react.default.useCallback(function(){var _f=function _f(){if(touching.value)return;if(translation.value>0){if(scrollEndTranslation.value<0){activeDecay();return;}if(!infinite){translation.value=withSpring(0);return;}}if(translation.value<-((maxPage-1)*size)){if(scrollEndTranslation.value>0){activeDecay();return;}if(!infinite)translation.value=withSpring(-((maxPage-1)*size));}};_f._closure={touching:touching,translation:translation,scrollEndTranslation:scrollEndTranslation,activeDecay:activeDecay,infinite:infinite,withSpring:withSpring,maxPage:maxPage,size:size};_f.asString="function _f(){const{touching,translation,scrollEndTranslation,activeDecay,infinite,withSpring,maxPage,size}=jsThis._closure;{if(touching.value)return;if(translation.value>0){if(scrollEndTranslation.value<0){activeDecay();return;}if(!infinite){translation.value=withSpring(0);return;}}if(translation.value<-((maxPage-1)*size)){if(scrollEndTranslation.value>0){activeDecay();return;}if(!infinite)translation.value=withSpring(-((maxPage-1)*size));}}}";_f.__workletHash=5584514378333;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (199:42)";return _f;}(),[touching.value,translation,maxPage,size,scrollEndTranslation.value,infinite,activeDecay,withSpring]);(0,_reactNativeReanimated.useAnimatedReaction)(function(){var _f=function _f(){return translation.value;};_f._closure={translation:translation};_f.asString="function _f(){const{translation}=jsThis._closure;{return translation.value;}}";_f.__workletHash=9829368032147;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (235:4)";return _f;}(),function(){var _f=function _f(){if(!pagingEnabled)resetBoundary();};_f._closure={pagingEnabled:pagingEnabled,resetBoundary:resetBoundary};_f.asString="function _f(){const{pagingEnabled,resetBoundary}=jsThis._closure;{if(!pagingEnabled)resetBoundary();}}";_f.__workletHash=3586615076030;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (236:4)";return _f;}(),[pagingEnabled,resetBoundary]);var panGestureEventHandler=(0,_reactNativeReanimated.useAnimatedGestureHandler)({onStart:function(){var _f=function _f(_,ctx){touching.value=true;ctx.validStart=true;onScrollBegin&&(0,_reactNativeReanimated.runOnJS)(onScrollBegin)();ctx.max=(maxPage-1)*size;if(!infinite&&!overscrollEnabled)ctx.max=getLimit();ctx.panOffset=translation.value;};_f._closure={touching:touching,onScrollBegin:onScrollBegin,runOnJS:_reactNativeReanimated.runOnJS,maxPage:maxPage,size:size,infinite:infinite,overscrollEnabled:overscrollEnabled,getLimit:getLimit,translation:translation};_f.asString="function _f(_,ctx){const{touching,onScrollBegin,runOnJS,maxPage,size,infinite,overscrollEnabled,getLimit,translation}=jsThis._closure;{touching.value=true;ctx.validStart=true;onScrollBegin&&runOnJS(onScrollBegin)();ctx.max=(maxPage-1)*size;if(!infinite&&!overscrollEnabled)ctx.max=getLimit();ctx.panOffset=translation.value;}}";_f.__workletHash=3619428160497;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (248:15)";return _f;}(),onActive:function(){var _f=function _f(e,ctx){if(ctx.validStart){ctx.validStart=false;(0,_reactNativeReanimated.cancelAnimation)(translation);}touching.value=true;var translationX=e.translationX,translationY=e.translationY;var panTranslation=isHorizontal.value?translationX:translationY;if(!infinite){if(translation.value>0||translation.value<-ctx.max){var boundary=translation.value>0?0:-ctx.max;var fixed=boundary-ctx.panOffset;var dynamic=panTranslation-fixed;translation.value=boundary+dynamic*0.5;return;}}var translationValue=ctx.panOffset+panTranslation;translation.value=translationValue;};_f._closure={cancelAnimation:_reactNativeReanimated.cancelAnimation,translation:translation,touching:touching,isHorizontal:isHorizontal,infinite:infinite};_f.asString="function _f(e,ctx){const{cancelAnimation,translation,touching,isHorizontal,infinite}=jsThis._closure;{if(ctx.validStart){ctx.validStart=false;cancelAnimation(translation);}touching.value=true;const{translationX:translationX,translationY:translationY}=e;const panTranslation=isHorizontal.value?translationX:translationY;if(!infinite){if(translation.value>0||translation.value<-ctx.max){const boundary=translation.value>0?0:-ctx.max;const fixed=boundary-ctx.panOffset;const dynamic=panTranslation-fixed;translation.value=boundary+dynamic*0.5;return;}}const translationValue=ctx.panOffset+panTranslation;translation.value=translationValue;}}";_f.__workletHash=11300048714025;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (259:16)";return _f;}(),onEnd:function(){var _f=function _f(e){var velocityX=e.velocityX,velocityY=e.velocityY,translationX=e.translationX,translationY=e.translationY;scrollEndVelocity.value=isHorizontal.value?velocityX:velocityY;scrollEndTranslation.value=isHorizontal.value?translationX:translationY;endWithSpring(onScrollEnd);if(!infinite)touching.value=false;};_f._closure={scrollEndVelocity:scrollEndVelocity,isHorizontal:isHorizontal,scrollEndTranslation:scrollEndTranslation,endWithSpring:endWithSpring,onScrollEnd:onScrollEnd,infinite:infinite,touching:touching};_f.asString="function _f(e){const{scrollEndVelocity,isHorizontal,scrollEndTranslation,endWithSpring,onScrollEnd,infinite,touching}=jsThis._closure;{const{velocityX:velocityX,velocityY:velocityY,translationX:translationX,translationY:translationY}=e;scrollEndVelocity.value=isHorizontal.value?velocityX:velocityY;scrollEndTranslation.value=isHorizontal.value?translationX:translationY;endWithSpring(onScrollEnd);if(!infinite)touching.value=false;}}";_f.__workletHash=10638018947905;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (282:13)";return _f;}()},[pagingEnabled,isHorizontal.value,infinite,maxPage,size,snapEnabled,onScrollBegin,onScrollEnd]);return _react.default.createElement(_reactNativeGestureHandler.PanGestureHandler,(0,_extends2.default)({},panGestureHandlerProps,{enabled:enabled,onGestureEvent:panGestureEventHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:310,columnNumber:5}}),_react.default.createElement(_reactNativeReanimated.default.View,{ref:containerRef,testID:testID,style:style,onTouchStart:onTouchBegin,onTouchEnd:onTouchEnd,__self:_this,__source:{fileName:_jsxFileName,lineNumber:315,columnNumber:7}},props.children));};var ScrollViewGesture=IScrollViewGesture;exports.ScrollViewGesture=ScrollViewGesture;
2
2
  //# sourceMappingURL=ScrollViewGesture.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["ScrollViewGesture.tsx"],"names":["IScrollViewGesture","props","React","useContext","CTX","vertical","data","pagingEnabled","snapEnabled","panGestureHandlerProps","infinite","loop","scrollAnimationDuration","withAnimation","enabled","size","translation","testID","style","onScrollBegin","onScrollEnd","onTouchBegin","onTouchEnd","maxPage","length","isHorizontal","touching","scrollEndTranslation","scrollEndVelocity","_withSpring","useCallback","toValue","onFinished","defaultWithAnimation","type","config","duration","easing","Easing","easeOutQuart","isFinished","runOnJS","dealWithAnimation","endWithSpring","origin","value","velocity","nextPage","Math","round","deceleration","direction","computed","ceil","floor","page","finalPage","min","max","withDecay","onFinish","activeDecay","resetBoundary","panGestureEventHandler","onStart","_","ctx","validStart","panOffset","onActive","e","translationX","translationY","panTranslation","boundary","fixed","dynamic","cancelAnimation","onEnd","velocityX","velocityY","children","ScrollViewGesture"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport type { StyleProp, ViewStyle } from \"react-native\";\nimport type { PanGestureHandlerGestureEvent } from \"react-native-gesture-handler\";\nimport {\n PanGestureHandler,\n} from \"react-native-gesture-handler\";\nimport Animated, {\n cancelAnimation,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedReaction,\n useDerivedValue,\n useSharedValue,\n withDecay,\n} from \"react-native-reanimated\";\n\nimport { Easing } from \"./constants\";\nimport { CTX } from \"./store\";\nimport type { WithTimingAnimation } from \"./types\";\nimport { dealWithAnimation } from \"./utils/dealWithAnimation\";\n\ninterface GestureContext extends Record<string, unknown> {\n validStart: boolean\n panOffset: number\n max: number\n}\n\ninterface Props {\n size: number\n infinite?: boolean\n testID?: string\n style?: StyleProp<ViewStyle>\n onScrollBegin?: () => void\n onScrollEnd?: () => void\n onTouchBegin?: () => void\n onTouchEnd?: () => void\n translation: Animated.SharedValue<number>\n}\n\nconst IScrollViewGesture: React.FC<Props> = (props) => {\n const {\n props: {\n vertical,\n data,\n pagingEnabled,\n snapEnabled,\n panGestureHandlerProps,\n loop: infinite,\n scrollAnimationDuration,\n withAnimation,\n enabled,\n },\n } = React.useContext(CTX);\n\n const {\n size,\n translation,\n testID,\n style = {},\n onScrollBegin,\n onScrollEnd,\n onTouchBegin,\n onTouchEnd,\n } = props;\n\n const maxPage = data.length;\n const isHorizontal = useDerivedValue(() => !vertical, [vertical]);\n const touching = useSharedValue(false);\n const scrollEndTranslation = useSharedValue(0);\n const scrollEndVelocity = useSharedValue(0);\n\n const _withSpring = React.useCallback(\n (toValue: number, onFinished?: () => void) => {\n \"worklet\";\n const defaultWithAnimation: WithTimingAnimation = {\n type: \"timing\",\n config: {\n duration: scrollAnimationDuration + 100,\n easing: Easing.easeOutQuart,\n },\n };\n\n return dealWithAnimation(withAnimation ?? defaultWithAnimation)(\n toValue,\n (isFinished: boolean) => {\n \"worklet\";\n if (isFinished)\n onFinished && runOnJS(onFinished)();\n },\n );\n },\n [scrollAnimationDuration, withAnimation],\n );\n\n const endWithSpring = React.useCallback(\n (onFinished?: () => void) => {\n \"worklet\";\n const origin = translation.value;\n const velocity = scrollEndVelocity.value;\n if (!pagingEnabled) {\n /**\n * If enabled, releasing the touch will scroll to the nearest item.\n * valid when pagingEnabled=false\n */\n if (snapEnabled) {\n const nextPage\n = Math.round((origin + velocity * 0.4) / size) * size;\n\n translation.value = _withSpring(nextPage, onFinished);\n return;\n }\n translation.value = withDecay({\n velocity,\n deceleration: 0.999,\n });\n return;\n }\n\n const direction = -(scrollEndTranslation.value >= 0 ? 1 : -1);\n const computed = direction < 0 ? Math.ceil : Math.floor;\n const page = computed(-translation.value / size);\n let finalPage = page + direction;\n\n if (!infinite)\n finalPage = Math.min(maxPage - 1, Math.max(0, finalPage));\n\n translation.value = _withSpring(-finalPage * size, onFinished);\n },\n [\n translation,\n scrollEndVelocity.value,\n pagingEnabled,\n size,\n scrollEndTranslation.value,\n infinite,\n _withSpring,\n snapEnabled,\n maxPage,\n ],\n );\n\n const onFinish = React.useCallback(\n (isFinished: boolean) => {\n \"worklet\";\n if (isFinished) {\n touching.value = false;\n onScrollEnd && runOnJS(onScrollEnd)();\n }\n },\n [onScrollEnd, touching],\n );\n\n const activeDecay = React.useCallback(() => {\n \"worklet\";\n touching.value = true;\n translation.value = withDecay(\n { velocity: scrollEndVelocity.value },\n isFinished => onFinish(isFinished as boolean),\n );\n }, [onFinish, scrollEndVelocity.value, touching, translation]);\n\n const resetBoundary = React.useCallback(() => {\n \"worklet\";\n if (touching.value)\n return;\n\n if (translation.value > 0) {\n if (scrollEndTranslation.value < 0) {\n activeDecay();\n return;\n }\n if (!infinite) {\n translation.value = _withSpring(0);\n return;\n }\n }\n\n if (translation.value < -((maxPage - 1) * size)) {\n if (scrollEndTranslation.value > 0) {\n activeDecay();\n return;\n }\n if (!infinite)\n translation.value = _withSpring(-((maxPage - 1) * size));\n }\n }, [\n touching.value,\n translation,\n maxPage,\n size,\n scrollEndTranslation.value,\n infinite,\n activeDecay,\n _withSpring,\n ]);\n\n useAnimatedReaction(\n () => translation.value,\n () => {\n if (!pagingEnabled)\n resetBoundary();\n },\n [pagingEnabled, resetBoundary],\n );\n\n const panGestureEventHandler = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n GestureContext\n >(\n {\n onStart: (_, ctx) => {\n touching.value = true;\n ctx.validStart = true;\n onScrollBegin && runOnJS(onScrollBegin)();\n ctx.max = (maxPage - 1) * size;\n ctx.panOffset = translation.value;\n },\n onActive: (e, ctx) => {\n if (ctx.validStart) {\n ctx.validStart = false;\n cancelAnimation(translation);\n }\n touching.value = true;\n const { translationX, translationY } = e;\n const panTranslation = isHorizontal.value\n ? translationX\n : translationY;\n\n if (\n !infinite\n && (translation.value > 0 || translation.value < -ctx.max)\n ) {\n const boundary = translation.value > 0 ? 0 : -ctx.max;\n const fixed = boundary - ctx.panOffset;\n const dynamic = panTranslation - fixed;\n translation.value = boundary + dynamic * 0.5;\n return;\n }\n\n translation.value = ctx.panOffset + panTranslation;\n },\n onEnd: (e) => {\n const { velocityX, velocityY, translationX, translationY } = e;\n scrollEndVelocity.value = isHorizontal.value\n ? velocityX\n : velocityY;\n scrollEndTranslation.value = isHorizontal.value\n ? translationX\n : translationY;\n\n endWithSpring(onScrollEnd);\n\n if (!infinite)\n touching.value = false;\n },\n },\n [\n pagingEnabled,\n isHorizontal.value,\n infinite,\n maxPage,\n size,\n snapEnabled,\n onScrollBegin,\n onScrollEnd,\n ],\n );\n\n return (\n <PanGestureHandler\n {...panGestureHandlerProps}\n enabled={enabled}\n onGestureEvent={panGestureEventHandler}\n >\n <Animated.View\n testID={testID}\n style={style}\n onTouchStart={onTouchBegin}\n onTouchEnd={onTouchEnd}\n >\n {props.children}\n </Animated.View>\n </PanGestureHandler>\n );\n};\n\nexport const ScrollViewGesture = IScrollViewGesture;\n"]}
1
+ {"version":3,"sources":["ScrollViewGesture.tsx"],"names":["IScrollViewGesture","props","React","useContext","CTX","vertical","pagingEnabled","snapEnabled","panGestureHandlerProps","infinite","loop","scrollAnimationDuration","withAnimation","enabled","dataLength","overscrollEnabled","size","translation","testID","style","onScrollBegin","onScrollEnd","onTouchBegin","onTouchEnd","maxPage","isHorizontal","touching","scrollEndTranslation","scrollEndVelocity","containerRef","getLimit","useCallback","width","containerWidth","measure","withSpring","toValue","onFinished","defaultWithAnimation","type","config","duration","easing","Easing","easeOutQuart","isFinished","runOnJS","dealWithAnimation","endWithSpring","origin","value","velocity","finalTranslation","deceleration","offset","computed","Math","ceil","floor","page","finalPage","withProcessTranslation","min","max","nextPage","round","limit","sign","abs","withDecay","onFinish","activeDecay","resetBoundary","panGestureEventHandler","onStart","_","ctx","validStart","panOffset","onActive","e","translationX","translationY","panTranslation","boundary","fixed","dynamic","translationValue","cancelAnimation","onEnd","velocityX","velocityY","children","ScrollViewGesture"],"mappings":"6PAAA,oDAGA,uEAGA,uFAYA,sCACA,8BAEA,4D,soCAoBA,GAAMA,CAAAA,kBAAmC,CAAG,QAAtCA,CAAAA,kBAAsC,CAACC,KAAD,CAAW,CACrD,sBAaIC,eAAMC,UAAN,CAAiBC,UAAjB,CAbJ,yCACEH,KADF,CAEII,QAFJ,uBAEIA,QAFJ,CAGIC,aAHJ,uBAGIA,aAHJ,CAIIC,WAJJ,uBAIIA,WAJJ,CAKIC,sBALJ,uBAKIA,sBALJ,CAMUC,QANV,uBAMIC,IANJ,CAOIC,uBAPJ,uBAOIA,uBAPJ,CAQIC,aARJ,uBAQIA,aARJ,CASIC,OATJ,uBASIA,OATJ,CAUIC,UAVJ,uBAUIA,UAVJ,CAWIC,iBAXJ,uBAWIA,iBAXJ,CAeA,GACEC,CAAAA,IADF,CASIf,KATJ,CACEe,IADF,CAEEC,WAFF,CASIhB,KATJ,CAEEgB,WAFF,CAGEC,MAHF,CASIjB,KATJ,CAGEiB,MAHF,cASIjB,KATJ,CAIEkB,KAJF,CAIEA,KAJF,uBAIU,EAJV,cAKEC,aALF,CASInB,KATJ,CAKEmB,aALF,CAMEC,WANF,CASIpB,KATJ,CAMEoB,WANF,CAOEC,YAPF,CASIrB,KATJ,CAOEqB,YAPF,CAQEC,UARF,CASItB,KATJ,CAQEsB,UARF,CAWA,GAAMC,CAAAA,OAAO,CAAGV,UAAhB,CACA,GAAMW,CAAAA,YAAY,CAAG,6DAAgB,oBAAM,CAACpB,QAAP,EAAhB,uBApEfA,QAoEe,sQAAiC,CAACA,QAAD,CAAjC,CAArB,CACA,GAAMqB,CAAAA,QAAQ,CAAG,0CAAe,KAAf,CAAjB,CACA,GAAMC,CAAAA,oBAAoB,CAAG,0CAAe,CAAf,CAA7B,CACA,GAAMC,CAAAA,iBAAiB,CAAG,0CAAe,CAAf,CAA1B,CACA,GAAMC,CAAAA,YAAY,CAAG,2CAArB,CAGA,GAAMC,CAAAA,QAAQ,CAAG5B,eAAM6B,WAAN,gCAAwB,CAGvC,GAAI,CAACtB,QAAD,EAAa,CAACM,iBAAlB,CAAqC,CACnC,aAAsC,mCAAQc,YAAR,CAAtC,yBAAQG,KAAR,CAAeC,cAAf,yBAAgC,CAAhC,gBAGA,GAAInB,UAAU,CAAGE,IAAb,CAAoBiB,cAAxB,CACE,MAAO,EAAP,CAGF,MAAOnB,CAAAA,UAAU,CAAGE,IAAb,CAAoBiB,cAA3B,CACD,CAED,MAAOnB,CAAAA,UAAU,CAAGE,IAApB,CACD,CAfgB,uBA1EZP,QA0EY,mBA1ECM,iBA0ED,SAvEXmB,8BAuEW,cAvEHL,YAuEG,YAhEVf,UAgEU,MAhEGE,IAgEH,4eAed,CAACP,QAAD,CAAWO,IAAX,CAAiBF,UAAjB,CAA6BC,iBAA7B,CAfc,CAAjB,CAiBA,GAAMoB,CAAAA,UAAU,CAAGjC,eAAM6B,WAAN,+BAChBK,OADgB,CACCC,UADD,CAC6B,CAE5C,GAAMC,CAAAA,oBAAyC,CAAG,CAChDC,IAAI,CAAE,QAD0C,CAEhDC,MAAM,CAAE,CACNC,QAAQ,CAAE9B,uBAAuB,CAAG,GAD9B,CAEN+B,MAAM,CAAEC,kBAAOC,YAFT,CAFwC,CAAlD,CAQA,MAAO,yCAAkBhC,aAAlB,OAAkBA,aAAlB,CAAmC0B,oBAAnC,EACLF,OADK,+BAEJS,UAFI,CAEoB,CAEvB,GAAIA,UAAJ,CACER,UAAU,EAAI,mCAAQA,UAAR,GAAd,CACH,CANI,yBAtG2BA,UAsG3B,SAtGmBS,8BAsGnB,yTAAP,CAQD,CAnBgB,sCAxFLnC,uBAwFK,sBAvFPgC,kBAAOC,YAuFA,oBApFZG,oCAoFY,eApFMnC,aAoFN,SAjFakC,8BAiFb,sqBAoBjB,CAACnC,uBAAD,CAA0BC,aAA1B,CApBiB,CAAnB,CAuBA,GAAMoC,CAAAA,aAAa,CAAG9C,eAAM6B,WAAN,+BACnBM,UADmB,CACS,CAE3B,GAAMY,CAAAA,MAAM,CAAGhC,WAAW,CAACiC,KAA3B,CACA,GAAMC,CAAAA,QAAQ,CAAGvB,iBAAiB,CAACsB,KAAnC,CAEA,GAAIE,CAAAA,gBAAwB,CAAG,qCAAU,CAAED,QAAQ,CAARA,QAAF,CAAYE,YAAY,CAAE,KAA1B,CAAV,CAA/B,CASA,GAAI/C,aAAJ,CAAmB,CAEjB,GAAMgD,CAAAA,MAAM,CAAG,EAAE3B,oBAAoB,CAACuB,KAArB,EAA8B,CAA9B,CAAkC,CAAlC,CAAsC,CAAC,CAAzC,CAAf,CACA,GAAMK,CAAAA,QAAQ,CAAGD,MAAM,CAAG,CAAT,CAAaE,IAAI,CAACC,IAAlB,CAAyBD,IAAI,CAACE,KAA/C,CACA,GAAMC,CAAAA,IAAI,CAAGJ,QAAQ,CAAC,CAACtC,WAAW,CAACiC,KAAb,CAAqBlC,IAAtB,CAArB,CAEA,GAAIP,QAAJ,CAAc,CACZ,GAAMmD,CAAAA,SAAS,CAAGD,IAAI,CAAGL,MAAzB,CACAF,gBAAgB,CAAGjB,UAAU,CAAC0B,sBAAsB,CAAC,CAACD,SAAD,CAAa5C,IAAd,CAAvB,CAA4CqB,UAA5C,CAA7B,CACD,CAHD,IAIK,CACH,GAAMuB,CAAAA,UAAS,CAAGJ,IAAI,CAACM,GAAL,CAAStC,OAAO,CAAG,CAAnB,CAAsBgC,IAAI,CAACO,GAAL,CAAS,CAAT,CAAYJ,IAAI,CAAGL,MAAnB,CAAtB,CAAlB,CACAF,gBAAgB,CAAGjB,UAAU,CAAC0B,sBAAsB,CAAC,CAACD,UAAD,CAAa5C,IAAd,CAAvB,CAA4CqB,UAA5C,CAA7B,CACD,CACF,CAED,GAAI,CAAC/B,aAAD,EAAkBC,WAAtB,CAAmC,CAEjC,GAAMyD,CAAAA,QAAQ,CAAGR,IAAI,CAACS,KAAL,CAAW,CAAChB,MAAM,CAAGE,QAAQ,CAAG,GAArB,EAA4BnC,IAAvC,EAA+CA,IAAhE,CACAoC,gBAAgB,CAAGjB,UAAU,CAAC0B,sBAAsB,CAACG,QAAD,CAAvB,CAAmC3B,UAAnC,CAA7B,CACD,CAEDpB,WAAW,CAACiC,KAAZ,CAAoBE,gBAApB,CAEA,QAASS,CAAAA,sBAAT,CAAgC5C,WAAhC,CAAqD,CACnD,GAAI,CAACR,QAAD,EAAa,CAACM,iBAAlB,CAAqC,CACnC,GAAMmD,CAAAA,KAAK,CAAGpC,QAAQ,EAAtB,CACA,GAAMqC,CAAAA,IAAI,CAAGX,IAAI,CAACW,IAAL,CAAUlD,WAAV,CAAb,CACA,MAAOkD,CAAAA,IAAI,CAAGX,IAAI,CAACO,GAAL,CAAS,CAAT,CAAYP,IAAI,CAACM,GAAL,CAASI,KAAT,CAAgBV,IAAI,CAACY,GAAL,CAASnD,WAAT,CAAhB,CAAZ,CAAd,CACD,CAED,MAAOA,CAAAA,WAAP,CACD,CACF,CAhDmB,0BA7EtBA,WA6EsB,mBAjHLW,iBAiHK,WA/GSyC,gCA+GT,eAnFjB/D,aAmFiB,sBAjGHqB,oBAiGG,MAjF4CX,IAiF5C,UA1EfP,QA0Ee,YAhFD0B,UAgFC,SAxFSX,OAwFT,aAnFAjB,WAmFA,mBA1EFQ,iBA0EE,UAzEJe,QAyEI,s2CAiDpB,CACEb,WADF,CAEEW,iBAAiB,CAACsB,KAFpB,CAGE5C,aAHF,CAIEU,IAJF,CAKEW,oBAAoB,CAACuB,KALvB,CAMEzC,QANF,CAOE0B,UAPF,CAQE5B,WARF,CASEiB,OATF,CAjDoB,CAAtB,CA8DA,GAAM8C,CAAAA,QAAQ,CAAGpE,eAAM6B,WAAN,+BACdc,UADc,CACU,CAEvB,GAAIA,UAAJ,CAAgB,CACdnB,QAAQ,CAACwB,KAAT,CAAiB,KAAjB,CACA7B,WAAW,EAAI,mCAAQA,WAAR,GAAf,CACD,CACF,CAPc,uBA/KfK,QA+Ke,aA9KQL,WA8KR,SA9KAyB,8BA8KA,6VAQf,CAACzB,WAAD,CAAcK,QAAd,CARe,CAAjB,CAWA,GAAM6C,CAAAA,WAAW,CAAGrE,eAAM6B,WAAN,gCAAwB,CAE1CL,QAAQ,CAACwB,KAAT,CAAiB,IAAjB,CACAjC,WAAW,CAACiC,KAAZ,CAAoB,qCAClB,CAAEC,QAAQ,CAAEvB,iBAAiB,CAACsB,KAA9B,CADkB,mBAElB,YAAAL,UAAU,QAAIyB,CAAAA,QAAQ,CAACzB,UAAD,CAAZ,EAFQ,uBA/LTyB,QA+LS,4RAApB,CAID,CAPmB,uBA3LpB5C,QA2LoB,aA1LpBT,WA0LoB,WA1LAoD,gCA0LA,mBAzLRzC,iBAyLQ,UAxLH0C,QAwLG,8aAOjB,CAACA,QAAD,CAAW1C,iBAAiB,CAACsB,KAA7B,CAAoCxB,QAApC,CAA8CT,WAA9C,CAPiB,CAApB,CASA,GAAMuD,CAAAA,aAAa,CAAGtE,eAAM6B,WAAN,gCAAwB,CAE5C,GAAIL,QAAQ,CAACwB,KAAb,CACE,OAEF,GAAIjC,WAAW,CAACiC,KAAZ,CAAoB,CAAxB,CAA2B,CACzB,GAAIvB,oBAAoB,CAACuB,KAArB,CAA6B,CAAjC,CAAoC,CAClCqB,WAAW,GACX,OACD,CACD,GAAI,CAAC9D,QAAL,CAAe,CACbQ,WAAW,CAACiC,KAAZ,CAAoBf,UAAU,CAAC,CAAD,CAA9B,CACA,OACD,CACF,CAED,GAAIlB,WAAW,CAACiC,KAAZ,CAAoB,EAAE,CAAC1B,OAAO,CAAG,CAAX,EAAgBR,IAAlB,CAAxB,CAAiD,CAC/C,GAAIW,oBAAoB,CAACuB,KAArB,CAA6B,CAAjC,CAAoC,CAClCqB,WAAW,GACX,OACD,CACD,GAAI,CAAC9D,QAAL,CACEQ,WAAW,CAACiC,KAAZ,CAAoBf,UAAU,CAAC,EAAE,CAACX,OAAO,CAAG,CAAX,EAAgBR,IAAlB,CAAD,CAA9B,CACH,CACF,CAxBqB,uBApMlBU,QAoMkB,aAhLLT,WAgLK,sBArLhBU,oBAqLgB,aApLlB4C,WAoLkB,UAhLf9D,QAgLe,YAhLe0B,UAgLf,SAhL6BX,OAgL7B,MAhL4CR,IAgL5C,ooBAwBnB,CACDU,QAAQ,CAACwB,KADR,CAEDjC,WAFC,CAGDO,OAHC,CAIDR,IAJC,CAKDW,oBAAoB,CAACuB,KALpB,CAMDzC,QANC,CAOD8D,WAPC,CAQDpC,UARC,CAxBmB,CAAtB,CAmCA,iEACE,oBAAMlB,CAAAA,WAAW,CAACiC,KAAlB,EADF,0BAxOKjC,WAwOL,gTAEQ,CACJ,GAAI,CAACX,aAAL,CACEkE,aAAa,GAChB,CALH,4BAvOKlE,aAuOL,eAvOoBkE,aAuOpB,0SAME,CAAClE,aAAD,CAAgBkE,aAAhB,CANF,EASA,GAAMC,CAAAA,sBAAsB,CAAG,qDAI7B,CACEC,OAAO,+BAAGC,CAAH,CAAMC,GAAN,CAAc,CACnBlD,QAAQ,CAACwB,KAAT,CAAiB,IAAjB,CACA0B,GAAG,CAACC,UAAJ,CAAiB,IAAjB,CACAzD,aAAa,EAAI,mCAAQA,aAAR,GAAjB,CAEAwD,GAAG,CAACb,GAAJ,CAAU,CAACvC,OAAO,CAAG,CAAX,EAAgBR,IAA1B,CACA,GAAI,CAACP,QAAD,EAAa,CAACM,iBAAlB,CACE6D,GAAG,CAACb,GAAJ,CAAUjC,QAAQ,EAAlB,CAEF8C,GAAG,CAACE,SAAJ,CAAgB7D,WAAW,CAACiC,KAA5B,CACD,CAVM,uBArPXxB,QAqPW,eAnPcN,aAmPd,SAnPM0B,8BAmPN,SAlPAtB,OAkPA,MAlPeR,IAkPf,UAjPNP,QAiPM,mBAjPOM,iBAiPP,UAjPoCe,QAiPpC,aAhPKb,WAgPL,0gBADT,CAYE8D,QAAQ,+BAAGC,CAAH,CAAMJ,GAAN,CAAc,CACpB,GAAIA,GAAG,CAACC,UAAR,CAAoB,CAClBD,GAAG,CAACC,UAAJ,CAAiB,KAAjB,CACA,2CAAgB5D,WAAhB,EACD,CACDS,QAAQ,CAACwB,KAAT,CAAiB,IAAjB,CACA,GAAQ+B,CAAAA,YAAR,CAAuCD,CAAvC,CAAQC,YAAR,CAAsBC,YAAtB,CAAuCF,CAAvC,CAAsBE,YAAtB,CACA,GAAMC,CAAAA,cAAc,CAAG1D,YAAY,CAACyB,KAAb,CACnB+B,YADmB,CAEnBC,YAFJ,CAGA,GAAI,CAACzE,QAAL,CAAe,CACb,GAAKQ,WAAW,CAACiC,KAAZ,CAAoB,CAApB,EAAyBjC,WAAW,CAACiC,KAAZ,CAAoB,CAAC0B,GAAG,CAACb,GAAvD,CAA6D,CAC3D,GAAMqB,CAAAA,QAAQ,CAAGnE,WAAW,CAACiC,KAAZ,CAAoB,CAApB,CAAwB,CAAxB,CAA4B,CAAC0B,GAAG,CAACb,GAAlD,CACA,GAAMsB,CAAAA,KAAK,CAAGD,QAAQ,CAAGR,GAAG,CAACE,SAA7B,CACA,GAAMQ,CAAAA,OAAO,CAAGH,cAAc,CAAGE,KAAjC,CACApE,WAAW,CAACiC,KAAZ,CAAoBkC,QAAQ,CAAGE,OAAO,CAAG,GAAzC,CACA,OACD,CACF,CAED,GAAMC,CAAAA,gBAAgB,CAAGX,GAAG,CAACE,SAAJ,CAAgBK,cAAzC,CACAlE,WAAW,CAACiC,KAAZ,CAAoBqC,gBAApB,CACD,CAtBO,8BA9PVC,sCA8PU,aAzOZvE,WAyOY,UA3PZS,QA2PY,cAtPWD,YAsPX,UApPPhB,QAoPO,m0BAZV,CAmCEgF,KAAK,+BAAGT,CAAH,CAAS,CACZ,GAAQU,CAAAA,SAAR,CAA6DV,CAA7D,CAAQU,SAAR,CAAmBC,SAAnB,CAA6DX,CAA7D,CAAmBW,SAAnB,CAA8BV,YAA9B,CAA6DD,CAA7D,CAA8BC,YAA9B,CAA4CC,YAA5C,CAA6DF,CAA7D,CAA4CE,YAA5C,CACAtD,iBAAiB,CAACsB,KAAlB,CAA0BzB,YAAY,CAACyB,KAAb,CACtBwC,SADsB,CAEtBC,SAFJ,CAGAhE,oBAAoB,CAACuB,KAArB,CAA6BzB,YAAY,CAACyB,KAAb,CACzB+B,YADyB,CAEzBC,YAFJ,CAIAlC,aAAa,CAAC3B,WAAD,CAAb,CAEA,GAAI,CAACZ,QAAL,CACEiB,QAAQ,CAACwB,KAAT,CAAiB,KAAjB,CACH,CAbI,gCAjRTtB,iBAiRS,cAhRoBH,YAgRpB,sBAhRTE,oBAgRS,eA/QTqB,aA+QS,aA/QK3B,WA+QL,UA9QJZ,QA8QI,UA9QMiB,QA8QN,unBAnCP,CAJ6B,CAsD7B,CACEpB,aADF,CAEEmB,YAAY,CAACyB,KAFf,CAGEzC,QAHF,CAIEe,OAJF,CAKER,IALF,CAMET,WANF,CAOEa,aAPF,CAQEC,WARF,CAtD6B,CAA/B,CAkEA,MACE,8BAAC,4CAAD,0BACMb,sBADN,EAEE,OAAO,CAAEK,OAFX,CAGE,cAAc,CAAE4D,sBAHlB,+EAKE,6BAAC,8BAAD,CAAU,IAAV,EACE,GAAG,CAAE5C,YADP,CAEE,MAAM,CAAEX,MAFV,CAGE,KAAK,CAAEC,KAHT,CAIE,YAAY,CAAEG,YAJhB,CAKE,UAAU,CAAEC,UALd,8EAOGtB,KAAK,CAAC2F,QAPT,CALF,CADF,CAiBD,CA5RD,CA8RO,GAAMC,CAAAA,iBAAiB,CAAG7F,kBAA1B,C","sourcesContent":["import React from \"react\";\nimport type { StyleProp, ViewStyle } from \"react-native\";\nimport type { PanGestureHandlerGestureEvent } from \"react-native-gesture-handler\";\nimport {\n PanGestureHandler,\n} from \"react-native-gesture-handler\";\nimport Animated, {\n cancelAnimation,\n measure,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedReaction,\n useAnimatedRef,\n useDerivedValue,\n useSharedValue,\n withDecay,\n} from \"react-native-reanimated\";\n\nimport { Easing } from \"./constants\";\nimport { CTX } from \"./store\";\nimport type { WithTimingAnimation } from \"./types\";\nimport { dealWithAnimation } from \"./utils/dealWithAnimation\";\n\ninterface GestureContext extends Record<string, unknown> {\n validStart: boolean\n panOffset: number\n max: number\n}\n\ninterface Props {\n size: number\n infinite?: boolean\n testID?: string\n style?: StyleProp<ViewStyle>\n onScrollBegin?: () => void\n onScrollEnd?: () => void\n onTouchBegin?: () => void\n onTouchEnd?: () => void\n translation: Animated.SharedValue<number>\n}\n\nconst IScrollViewGesture: React.FC<Props> = (props) => {\n const {\n props: {\n vertical,\n pagingEnabled,\n snapEnabled,\n panGestureHandlerProps,\n loop: infinite,\n scrollAnimationDuration,\n withAnimation,\n enabled,\n dataLength,\n overscrollEnabled,\n },\n } = React.useContext(CTX);\n\n const {\n size,\n translation,\n testID,\n style = {},\n onScrollBegin,\n onScrollEnd,\n onTouchBegin,\n onTouchEnd,\n } = props;\n\n const maxPage = dataLength;\n const isHorizontal = useDerivedValue(() => !vertical, [vertical]);\n const touching = useSharedValue(false);\n const scrollEndTranslation = useSharedValue(0);\n const scrollEndVelocity = useSharedValue(0);\n const containerRef = useAnimatedRef<Animated.View>();\n\n // Get the limit of the scroll.\n const getLimit = React.useCallback(() => {\n \"worklet\";\n\n if (!infinite && !overscrollEnabled) {\n const { width: containerWidth = 0 } = measure(containerRef);\n\n // If the item's total width is less than the container's width, then there is no need to scroll.\n if (dataLength * size < containerWidth)\n return 0;\n\n // Disable the \"overscroll\" effect\n return dataLength * size - containerWidth;\n }\n\n return dataLength * size;\n }, [infinite, size, dataLength, overscrollEnabled]);\n\n const withSpring = React.useCallback(\n (toValue: number, onFinished?: () => void) => {\n \"worklet\";\n const defaultWithAnimation: WithTimingAnimation = {\n type: \"timing\",\n config: {\n duration: scrollAnimationDuration + 100,\n easing: Easing.easeOutQuart,\n },\n };\n\n return dealWithAnimation(withAnimation ?? defaultWithAnimation)(\n toValue,\n (isFinished: boolean) => {\n \"worklet\";\n if (isFinished)\n onFinished && runOnJS(onFinished)();\n },\n );\n },\n [scrollAnimationDuration, withAnimation],\n );\n\n const endWithSpring = React.useCallback(\n (onFinished?: () => void) => {\n \"worklet\";\n const origin = translation.value;\n const velocity = scrollEndVelocity.value;\n // Default to scroll in the direction of the slide (with deceleration)\n let finalTranslation: number = withDecay({ velocity, deceleration: 0.999 });\n\n /**\n * The page size is the same as the item size.\n * If direction is vertical, the page size is the height of the item.\n * If direction is horizontal, the page size is the width of the item.\n *\n * `page size` equals to `size` variable.\n * */\n if (pagingEnabled) {\n // distance with direction\n const offset = -(scrollEndTranslation.value >= 0 ? 1 : -1); // 1 or -1\n const computed = offset < 0 ? Math.ceil : Math.floor;\n const page = computed(-translation.value / size);\n\n if (infinite) {\n const finalPage = page + offset;\n finalTranslation = withSpring(withProcessTranslation(-finalPage * size), onFinished);\n }\n else {\n const finalPage = Math.min(maxPage - 1, Math.max(0, page + offset));\n finalTranslation = withSpring(withProcessTranslation(-finalPage * size), onFinished);\n }\n }\n\n if (!pagingEnabled && snapEnabled) {\n // scroll to the nearest item\n const nextPage = Math.round((origin + velocity * 0.4) / size) * size;\n finalTranslation = withSpring(withProcessTranslation(nextPage), onFinished);\n }\n\n translation.value = finalTranslation;\n\n function withProcessTranslation(translation: number) {\n if (!infinite && !overscrollEnabled) {\n const limit = getLimit();\n const sign = Math.sign(translation);\n return sign * Math.max(0, Math.min(limit, Math.abs(translation)));\n }\n\n return translation;\n }\n },\n [\n translation,\n scrollEndVelocity.value,\n pagingEnabled,\n size,\n scrollEndTranslation.value,\n infinite,\n withSpring,\n snapEnabled,\n maxPage,\n ],\n );\n\n const onFinish = React.useCallback(\n (isFinished: boolean) => {\n \"worklet\";\n if (isFinished) {\n touching.value = false;\n onScrollEnd && runOnJS(onScrollEnd)();\n }\n },\n [onScrollEnd, touching],\n );\n\n const activeDecay = React.useCallback(() => {\n \"worklet\";\n touching.value = true;\n translation.value = withDecay(\n { velocity: scrollEndVelocity.value },\n isFinished => onFinish(isFinished as boolean),\n );\n }, [onFinish, scrollEndVelocity.value, touching, translation]);\n\n const resetBoundary = React.useCallback(() => {\n \"worklet\";\n if (touching.value)\n return;\n\n if (translation.value > 0) {\n if (scrollEndTranslation.value < 0) {\n activeDecay();\n return;\n }\n if (!infinite) {\n translation.value = withSpring(0);\n return;\n }\n }\n\n if (translation.value < -((maxPage - 1) * size)) {\n if (scrollEndTranslation.value > 0) {\n activeDecay();\n return;\n }\n if (!infinite)\n translation.value = withSpring(-((maxPage - 1) * size));\n }\n }, [\n touching.value,\n translation,\n maxPage,\n size,\n scrollEndTranslation.value,\n infinite,\n activeDecay,\n withSpring,\n ]);\n\n useAnimatedReaction(\n () => translation.value,\n () => {\n if (!pagingEnabled)\n resetBoundary();\n },\n [pagingEnabled, resetBoundary],\n );\n\n const panGestureEventHandler = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n GestureContext\n >(\n {\n onStart: (_, ctx) => {\n touching.value = true;\n ctx.validStart = true;\n onScrollBegin && runOnJS(onScrollBegin)();\n\n ctx.max = (maxPage - 1) * size;\n if (!infinite && !overscrollEnabled)\n ctx.max = getLimit();\n\n ctx.panOffset = translation.value;\n },\n onActive: (e, ctx) => {\n if (ctx.validStart) {\n ctx.validStart = false;\n cancelAnimation(translation);\n }\n touching.value = true;\n const { translationX, translationY } = e;\n const panTranslation = isHorizontal.value\n ? translationX\n : translationY;\n if (!infinite) {\n if ((translation.value > 0 || translation.value < -ctx.max)) {\n const boundary = translation.value > 0 ? 0 : -ctx.max;\n const fixed = boundary - ctx.panOffset;\n const dynamic = panTranslation - fixed;\n translation.value = boundary + dynamic * 0.5;\n return;\n }\n }\n\n const translationValue = ctx.panOffset + panTranslation;\n translation.value = translationValue;\n },\n onEnd: (e) => {\n const { velocityX, velocityY, translationX, translationY } = e;\n scrollEndVelocity.value = isHorizontal.value\n ? velocityX\n : velocityY;\n scrollEndTranslation.value = isHorizontal.value\n ? translationX\n : translationY;\n\n endWithSpring(onScrollEnd);\n\n if (!infinite)\n touching.value = false;\n },\n },\n [\n pagingEnabled,\n isHorizontal.value,\n infinite,\n maxPage,\n size,\n snapEnabled,\n onScrollBegin,\n onScrollEnd,\n ],\n );\n\n return (\n <PanGestureHandler\n {...panGestureHandlerProps}\n enabled={enabled}\n onGestureEvent={panGestureEventHandler}\n >\n <Animated.View\n ref={containerRef}\n testID={testID}\n style={style}\n onTouchStart={onTouchBegin}\n onTouchEnd={onTouchEnd}\n >\n {props.children}\n </Animated.View>\n </PanGestureHandler>\n );\n};\n\nexport const ScrollViewGesture = IScrollViewGesture;\n"]}
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});exports.omitZero=exports.computeNewIndexWhenDataChanges=void 0;var omitZero=function(){var _f=function _f(a,b){if(a===0)return 0;return b;};_f._closure={};_f.asString="function omitZero(a,b){if(a===0)return 0;return b;}";_f.__workletHash=5890945945056;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/hooks/computeNewIndexWhenDataChanges.ts (1:7)";return _f;}();exports.omitZero=omitZero;var computeNewIndexWhenDataChanges=function(){var _f=function _f(params){var direction=params.direction,_handlerOffset=params.handlerOffset,size=params.size,previousLength=params.previousLength,currentLength=params.currentLength;var handlerOffset=_handlerOffset;var positionIndex;var round;var isPositive=direction<0;if(isPositive){positionIndex=Math.abs(handlerOffset)/size;round=parseInt(String(omitZero(previousLength,positionIndex/previousLength)));}else{positionIndex=(Math.abs(handlerOffset)-size)/size;round=parseInt(String(omitZero(previousLength,positionIndex/previousLength)))+1;}var prevOffset=omitZero(previousLength,positionIndex%previousLength);var prevIndex=isPositive?prevOffset:previousLength-prevOffset-1;var changedLength=round*(currentLength-previousLength);var changedOffset=changedLength*size;if(prevIndex>currentLength-1&&currentLength<previousLength){if(isPositive)handlerOffset=(currentLength-1)*size*direction;else handlerOffset=(currentLength-1)*size*-1;}else{handlerOffset+=changedOffset*direction;}return handlerOffset;};_f._closure={omitZero:omitZero};_f.asString="function computeNewIndexWhenDataChanges(params){const{omitZero}=jsThis._closure;{const{direction:direction,handlerOffset:_handlerOffset,size:size,previousLength:previousLength,currentLength:currentLength}=params;let handlerOffset=_handlerOffset;let positionIndex;let round;const isPositive=direction<0;if(isPositive){positionIndex=Math.abs(handlerOffset)/size;round=parseInt(String(omitZero(previousLength,positionIndex/previousLength)));}else{positionIndex=(Math.abs(handlerOffset)-size)/size;round=parseInt(String(omitZero(previousLength,positionIndex/previousLength)))+1;}const prevOffset=omitZero(previousLength,positionIndex%previousLength);const prevIndex=isPositive?prevOffset:previousLength-prevOffset-1;const changedLength=round*(currentLength-previousLength);const changedOffset=changedLength*size;if(prevIndex>currentLength-1&&currentLength<previousLength){if(isPositive)handlerOffset=(currentLength-1)*size*direction;else handlerOffset=(currentLength-1)*size*-1;}else{handlerOffset+=changedOffset*direction;}return handlerOffset;}}";_f.__workletHash=10599245670129;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/hooks/computeNewIndexWhenDataChanges.ts (9:7)";return _f;}();exports.computeNewIndexWhenDataChanges=computeNewIndexWhenDataChanges;
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.omitZero=exports.computeNewIndexWhenDataChanges=void 0;var omitZero=function(){var _f=function _f(a,b){if(a===0)return 0;return b;};_f._closure={};_f.asString="function omitZero(a,b){if(a===0)return 0;return b;}";_f.__workletHash=5890945945056;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/computeNewIndexWhenDataChanges.ts (1:7)";return _f;}();exports.omitZero=omitZero;var computeNewIndexWhenDataChanges=function(){var _f=function _f(params){var direction=params.direction,_handlerOffset=params.handlerOffset,size=params.size,previousLength=params.previousLength,currentLength=params.currentLength;var handlerOffset=_handlerOffset;var positionIndex;var round;var isPositive=direction<0;if(isPositive){positionIndex=Math.abs(handlerOffset)/size;round=parseInt(String(omitZero(previousLength,positionIndex/previousLength)));}else{positionIndex=(Math.abs(handlerOffset)-size)/size;round=parseInt(String(omitZero(previousLength,positionIndex/previousLength)))+1;}var prevOffset=omitZero(previousLength,positionIndex%previousLength);var prevIndex=isPositive?prevOffset:previousLength-prevOffset-1;var changedLength=round*(currentLength-previousLength);var changedOffset=changedLength*size;if(prevIndex>currentLength-1&&currentLength<previousLength){if(isPositive)handlerOffset=(currentLength-1)*size*direction;else handlerOffset=(currentLength-1)*size*-1;}else{handlerOffset+=changedOffset*direction;}return handlerOffset;};_f._closure={omitZero:omitZero};_f.asString="function computeNewIndexWhenDataChanges(params){const{omitZero}=jsThis._closure;{const{direction:direction,handlerOffset:_handlerOffset,size:size,previousLength:previousLength,currentLength:currentLength}=params;let handlerOffset=_handlerOffset;let positionIndex;let round;const isPositive=direction<0;if(isPositive){positionIndex=Math.abs(handlerOffset)/size;round=parseInt(String(omitZero(previousLength,positionIndex/previousLength)));}else{positionIndex=(Math.abs(handlerOffset)-size)/size;round=parseInt(String(omitZero(previousLength,positionIndex/previousLength)))+1;}const prevOffset=omitZero(previousLength,positionIndex%previousLength);const prevIndex=isPositive?prevOffset:previousLength-prevOffset-1;const changedLength=round*(currentLength-previousLength);const changedOffset=changedLength*size;if(prevIndex>currentLength-1&&currentLength<previousLength){if(isPositive)handlerOffset=(currentLength-1)*size*direction;else handlerOffset=(currentLength-1)*size*-1;}else{handlerOffset+=changedOffset*direction;}return handlerOffset;}}";_f.__workletHash=10599245670129;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/computeNewIndexWhenDataChanges.ts (9:7)";return _f;}();exports.computeNewIndexWhenDataChanges=computeNewIndexWhenDataChanges;
2
2
  //# sourceMappingURL=computeNewIndexWhenDataChanges.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["computeNewIndexWhenDataChanges.ts"],"names":["omitZero","a","b","computeNewIndexWhenDataChanges","params","direction","_handlerOffset","handlerOffset","size","previousLength","currentLength","positionIndex","round","isPositive","Math","abs","parseInt","String","prevOffset","prevIndex","changedLength","changedOffset"],"mappings":"2HAAgBA,CAAAA,Q,+BAASC,C,CAAWC,C,CAAW,CAE7C,GAAID,CAAC,GAAK,CAAV,CACE,MAAO,EAAP,CAEF,MAAOC,CAAAA,CAAP,CACD,C,8RAEeC,CAAAA,8B,+BAA+BC,M,CAM5C,CAED,GAAQC,CAAAA,SAAR,CAA0FD,MAA1F,CAAQC,SAAR,CAAkCC,cAAlC,CAA0FF,MAA1F,CAAmBG,aAAnB,CAAkDC,IAAlD,CAA0FJ,MAA1F,CAAkDI,IAAlD,CAAwDC,cAAxD,CAA0FL,MAA1F,CAAwDK,cAAxD,CAAwEC,aAAxE,CAA0FN,MAA1F,CAAwEM,aAAxE,CAEA,GAAIH,CAAAA,aAAa,CAAGD,cAApB,CACA,GAAIK,CAAAA,aAAJ,CACA,GAAIC,CAAAA,KAAJ,CAEA,GAAMC,CAAAA,UAAU,CAAGR,SAAS,CAAG,CAA/B,CAEA,GAAIQ,UAAJ,CAAgB,CACdF,aAAa,CAAIG,IAAI,CAACC,GAAL,CAASR,aAAT,CAAD,CAA4BC,IAA5C,CACAI,KAAK,CAAGI,QAAQ,CAACC,MAAM,CAACjB,QAAQ,CAACS,cAAD,CAAiBE,aAAa,CAAGF,cAAjC,CAAT,CAAP,CAAhB,CACD,CAHD,IAIK,CACHE,aAAa,CAAG,CAACG,IAAI,CAACC,GAAL,CAASR,aAAT,EAA0BC,IAA3B,EAAmCA,IAAnD,CACAI,KAAK,CAAGI,QAAQ,CAACC,MAAM,CAACjB,QAAQ,CAACS,cAAD,CAAiBE,aAAa,CAAGF,cAAjC,CAAT,CAAP,CAAR,CAA6E,CAArF,CACD,CAED,GAAMS,CAAAA,UAAU,CAAGlB,QAAQ,CAACS,cAAD,CAAiBE,aAAa,CAAGF,cAAjC,CAA3B,CACA,GAAMU,CAAAA,SAAS,CAAGN,UAAU,CAAGK,UAAH,CAAgBT,cAAc,CAAGS,UAAjB,CAA8B,CAA1E,CACA,GAAME,CAAAA,aAAa,CAAGR,KAAK,EAAIF,aAAa,CAAGD,cAApB,CAA3B,CACA,GAAMY,CAAAA,aAAa,CAAGD,aAAa,CAAGZ,IAAtC,CACA,GAAIW,SAAS,CAAGT,aAAa,CAAG,CAA5B,EAAiCA,aAAa,CAAGD,cAArD,CAAqE,CACnE,GAAII,UAAJ,CACEN,aAAa,CAAG,CAACG,aAAa,CAAG,CAAjB,EAAsBF,IAAtB,CAA6BH,SAA7C,CADF,IAIEE,CAAAA,aAAa,CAAG,CAACG,aAAa,CAAG,CAAjB,EAAsBF,IAAtB,CAA6B,CAAC,CAA9C,CACH,CAND,IAOK,CACHD,aAAa,EAAIc,aAAa,CAAGhB,SAAjC,CACD,CAED,MAAOE,CAAAA,aAAP,CACD,C,uBArBoBP,Q","sourcesContent":["export function omitZero(a: number, b: number) {\n \"worklet\";\n if (a === 0)\n return 0;\n\n return b;\n}\n\nexport function computeNewIndexWhenDataChanges(params: {\n direction: number\n handlerOffset: number\n size: number\n previousLength: number\n currentLength: number\n}) {\n \"worklet\";\n const { direction, handlerOffset: _handlerOffset, size, previousLength, currentLength } = params;\n\n let handlerOffset = _handlerOffset;\n let positionIndex;\n let round;\n\n const isPositive = direction < 0;\n\n if (isPositive) {\n positionIndex = (Math.abs(handlerOffset)) / size;\n round = parseInt(String(omitZero(previousLength, positionIndex / previousLength)));\n }\n else {\n positionIndex = (Math.abs(handlerOffset) - size) / size;\n round = parseInt(String(omitZero(previousLength, positionIndex / previousLength))) + 1;\n }\n\n const prevOffset = omitZero(previousLength, positionIndex % previousLength);\n const prevIndex = isPositive ? prevOffset : previousLength - prevOffset - 1;\n const changedLength = round * (currentLength - previousLength);\n const changedOffset = changedLength * size;\n if (prevIndex > currentLength - 1 && currentLength < previousLength) {\n if (isPositive)\n handlerOffset = (currentLength - 1) * size * direction;\n\n else\n handlerOffset = (currentLength - 1) * size * -1;\n }\n else {\n handlerOffset += changedOffset * direction;\n }\n\n return handlerOffset;\n}\n\n"]}
1
+ {"version":3,"sources":["computeNewIndexWhenDataChanges.ts"],"names":["omitZero","a","b","computeNewIndexWhenDataChanges","params","direction","_handlerOffset","handlerOffset","size","previousLength","currentLength","positionIndex","round","isPositive","Math","abs","parseInt","String","prevOffset","prevIndex","changedLength","changedOffset"],"mappings":"2HAAgBA,CAAAA,Q,+BAASC,C,CAAWC,C,CAAW,CAE7C,GAAID,CAAC,GAAK,CAAV,CACE,MAAO,EAAP,CAEF,MAAOC,CAAAA,CAAP,CACD,C,kTAEeC,CAAAA,8B,+BAA+BC,M,CAM5C,CAED,GAAQC,CAAAA,SAAR,CAA0FD,MAA1F,CAAQC,SAAR,CAAkCC,cAAlC,CAA0FF,MAA1F,CAAmBG,aAAnB,CAAkDC,IAAlD,CAA0FJ,MAA1F,CAAkDI,IAAlD,CAAwDC,cAAxD,CAA0FL,MAA1F,CAAwDK,cAAxD,CAAwEC,aAAxE,CAA0FN,MAA1F,CAAwEM,aAAxE,CAEA,GAAIH,CAAAA,aAAa,CAAGD,cAApB,CACA,GAAIK,CAAAA,aAAJ,CACA,GAAIC,CAAAA,KAAJ,CAEA,GAAMC,CAAAA,UAAU,CAAGR,SAAS,CAAG,CAA/B,CAEA,GAAIQ,UAAJ,CAAgB,CACdF,aAAa,CAAIG,IAAI,CAACC,GAAL,CAASR,aAAT,CAAD,CAA4BC,IAA5C,CACAI,KAAK,CAAGI,QAAQ,CAACC,MAAM,CAACjB,QAAQ,CAACS,cAAD,CAAiBE,aAAa,CAAGF,cAAjC,CAAT,CAAP,CAAhB,CACD,CAHD,IAIK,CACHE,aAAa,CAAG,CAACG,IAAI,CAACC,GAAL,CAASR,aAAT,EAA0BC,IAA3B,EAAmCA,IAAnD,CACAI,KAAK,CAAGI,QAAQ,CAACC,MAAM,CAACjB,QAAQ,CAACS,cAAD,CAAiBE,aAAa,CAAGF,cAAjC,CAAT,CAAP,CAAR,CAA6E,CAArF,CACD,CAED,GAAMS,CAAAA,UAAU,CAAGlB,QAAQ,CAACS,cAAD,CAAiBE,aAAa,CAAGF,cAAjC,CAA3B,CACA,GAAMU,CAAAA,SAAS,CAAGN,UAAU,CAAGK,UAAH,CAAgBT,cAAc,CAAGS,UAAjB,CAA8B,CAA1E,CACA,GAAME,CAAAA,aAAa,CAAGR,KAAK,EAAIF,aAAa,CAAGD,cAApB,CAA3B,CACA,GAAMY,CAAAA,aAAa,CAAGD,aAAa,CAAGZ,IAAtC,CACA,GAAIW,SAAS,CAAGT,aAAa,CAAG,CAA5B,EAAiCA,aAAa,CAAGD,cAArD,CAAqE,CACnE,GAAII,UAAJ,CACEN,aAAa,CAAG,CAACG,aAAa,CAAG,CAAjB,EAAsBF,IAAtB,CAA6BH,SAA7C,CADF,IAIEE,CAAAA,aAAa,CAAG,CAACG,aAAa,CAAG,CAAjB,EAAsBF,IAAtB,CAA6B,CAAC,CAA9C,CACH,CAND,IAOK,CACHD,aAAa,EAAIc,aAAa,CAAGhB,SAAjC,CACD,CAED,MAAOE,CAAAA,aAAP,CACD,C,uBArBoBP,Q","sourcesContent":["export function omitZero(a: number, b: number) {\n \"worklet\";\n if (a === 0)\n return 0;\n\n return b;\n}\n\nexport function computeNewIndexWhenDataChanges(params: {\n direction: number\n handlerOffset: number\n size: number\n previousLength: number\n currentLength: number\n}) {\n \"worklet\";\n const { direction, handlerOffset: _handlerOffset, size, previousLength, currentLength } = params;\n\n let handlerOffset = _handlerOffset;\n let positionIndex;\n let round;\n\n const isPositive = direction < 0;\n\n if (isPositive) {\n positionIndex = (Math.abs(handlerOffset)) / size;\n round = parseInt(String(omitZero(previousLength, positionIndex / previousLength)));\n }\n else {\n positionIndex = (Math.abs(handlerOffset) - size) / size;\n round = parseInt(String(omitZero(previousLength, positionIndex / previousLength))) + 1;\n }\n\n const prevOffset = omitZero(previousLength, positionIndex % previousLength);\n const prevIndex = isPositive ? prevOffset : previousLength - prevOffset - 1;\n const changedLength = round * (currentLength - previousLength);\n const changedOffset = changedLength * size;\n if (prevIndex > currentLength - 1 && currentLength < previousLength) {\n if (isPositive)\n handlerOffset = (currentLength - 1) * size * direction;\n\n else\n handlerOffset = (currentLength - 1) * size * -1;\n }\n else {\n handlerOffset += changedOffset * direction;\n }\n\n return handlerOffset;\n}\n\n"]}
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});exports.useCarouselController=useCarouselController;var _react=_interopRequireWildcard(require("react"));var _reactNativeReanimated=require("react-native-reanimated");var _constants=require("../constants");var _computedWithAutoFillData=require("../utils/computedWithAutoFillData");var _dealWithAnimation=require("../utils/dealWithAnimation");var _handlerOffsetDirection=require("../utils/handlerOffsetDirection");var _log=require("../utils/log");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;}function useCarouselController(options){var size=options.size,data=options.data,loop=options.loop,handlerOffset=options.handlerOffset,withAnimation=options.withAnimation,_options$defaultIndex=options.defaultIndex,defaultIndex=_options$defaultIndex===void 0?0:_options$defaultIndex,duration=options.duration,autoFillData=options.autoFillData;var dataInfo=_react.default.useMemo(function(){return{length:data.length,disable:!data.length,originalLength:data.length};},[data]);var index=(0,_reactNativeReanimated.useSharedValue)(defaultIndex);var sharedIndex=(0,_react.useRef)(defaultIndex);var sharedPreIndex=(0,_react.useRef)(defaultIndex);var currentFixedPage=_react.default.useCallback(function(){if(loop)return-Math.round(handlerOffset.value/size);var fixed=handlerOffset.value/size%dataInfo.length;return Math.round(handlerOffset.value<=0?Math.abs(fixed):Math.abs(fixed>0?dataInfo.length-fixed:0));},[handlerOffset,dataInfo,size,loop]);function setSharedIndex(newSharedIndex){sharedIndex.current=newSharedIndex;}(0,_reactNativeReanimated.useAnimatedReaction)(function(){var _f=function _f(){var handlerOffsetValue=handlerOffset.value;var toInt=(0,_log.round)(handlerOffsetValue/size)%dataInfo.length;var isPositive=handlerOffsetValue<=0;var i=isPositive?Math.abs(toInt):Math.abs(toInt>0?dataInfo.length-toInt:0);var newSharedIndexValue=(0,_computedWithAutoFillData.convertToSharedIndex)({loop:loop,rawDataLength:dataInfo.originalLength,autoFillData:autoFillData,index:i});return{i:i,newSharedIndexValue:newSharedIndexValue};};_f._closure={handlerOffset:handlerOffset,round:_log.round,size:size,dataInfo:dataInfo,convertToSharedIndex:_computedWithAutoFillData.convertToSharedIndex,loop:loop,autoFillData:autoFillData};_f.asString="function _f(){const{handlerOffset,round,size,dataInfo,convertToSharedIndex,loop,autoFillData}=jsThis._closure;{const handlerOffsetValue=handlerOffset.value;const toInt=round(handlerOffsetValue/size)%dataInfo.length;const isPositive=handlerOffsetValue<=0;const i=isPositive?Math.abs(toInt):Math.abs(toInt>0?dataInfo.length-toInt:0);const newSharedIndexValue=convertToSharedIndex({loop:loop,rawDataLength:dataInfo.originalLength,autoFillData:autoFillData,index:i});return{i:i,newSharedIndexValue:newSharedIndexValue};}}";_f.__workletHash=442719064151;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/hooks/useCarouselController.tsx (84:4)";return _f;}(),function(){var _f=function _f(_ref){var i=_ref.i,newSharedIndexValue=_ref.newSharedIndexValue;index.value=i;(0,_reactNativeReanimated.runOnJS)(setSharedIndex)(newSharedIndexValue);};_f._closure={index:index,runOnJS:_reactNativeReanimated.runOnJS,setSharedIndex:setSharedIndex};_f.asString="function _f({i:i,newSharedIndexValue:newSharedIndexValue}){const{index,runOnJS,setSharedIndex}=jsThis._closure;{index.value=i;runOnJS(setSharedIndex)(newSharedIndexValue);}}";_f.__workletHash=16638491076412;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/hooks/useCarouselController.tsx (104:4)";return _f;}(),[sharedPreIndex,sharedIndex,size,dataInfo,index,loop,autoFillData,handlerOffset]);var getCurrentIndex=_react.default.useCallback(function(){var realIndex=(0,_computedWithAutoFillData.computedRealIndexWithAutoFillData)({index:index.value,dataLength:dataInfo.originalLength,loop:loop,autoFillData:autoFillData});return realIndex;},[index,autoFillData,dataInfo,loop]);var canSliding=_react.default.useCallback(function(){return!dataInfo.disable;},[dataInfo]);var onScrollEnd=_react.default.useCallback(function(){options.onScrollEnd==null?void 0:options.onScrollEnd();},[options]);var onScrollBegin=_react.default.useCallback(function(){options.onScrollBegin==null?void 0:options.onScrollBegin();},[options]);var scrollWithTiming=_react.default.useCallback(function(){var _f=function _f(toValue,onFinished){var callback=function(){var _f=function _f(isFinished){if(isFinished){(0,_reactNativeReanimated.runOnJS)(onScrollEnd)();onFinished&&(0,_reactNativeReanimated.runOnJS)(onFinished)();}};_f._closure={runOnJS:_reactNativeReanimated.runOnJS,onScrollEnd:onScrollEnd,onFinished:onFinished};_f.asString="function _f(isFinished){const{runOnJS,onScrollEnd,onFinished}=jsThis._closure;{if(isFinished){runOnJS(onScrollEnd)();onFinished&&runOnJS(onFinished)();}}}";_f.__workletHash=7767198641261;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/hooks/useCarouselController.tsx (146:23)";return _f;}();var defaultWithAnimation={type:"timing",config:{duration:duration,easing:_constants.Easing.easeOutQuart}};return(0,_dealWithAnimation.dealWithAnimation)(withAnimation!=null?withAnimation:defaultWithAnimation)(toValue,callback);};_f._closure={runOnJS:_reactNativeReanimated.runOnJS,onScrollEnd:onScrollEnd,duration:duration,Easing:{easeOutQuart:_constants.Easing.easeOutQuart},dealWithAnimation:_dealWithAnimation.dealWithAnimation,withAnimation:withAnimation};_f.asString="function _f(toValue,onFinished){const{runOnJS,onScrollEnd,duration,Easing,dealWithAnimation,withAnimation}=jsThis._closure;{var _withAnimation;const callback=function(isFinished){\"worklet\";if(isFinished){runOnJS(onScrollEnd)();onFinished&&runOnJS(onFinished)();}};const defaultWithAnimation={type:\"timing\",config:{duration:duration,easing:Easing.easeOutQuart}};return dealWithAnimation((_withAnimation=withAnimation)!==null&&_withAnimation!==void 0?_withAnimation:defaultWithAnimation)(toValue,callback);}}";_f.__workletHash=12575476119920;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/hooks/useCarouselController.tsx (144:4)";return _f;}(),[duration,withAnimation,onScrollEnd]);var next=_react.default.useCallback(function(){var _f=function _f(){var opts=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var _opts$count=opts.count,count=_opts$count===void 0?1:_opts$count,_opts$animated=opts.animated,animated=_opts$animated===void 0?true:_opts$animated,onFinished=opts.onFinished;if(!canSliding()||!loop&&index.value>=dataInfo.length-1)return;onScrollBegin==null?void 0:onScrollBegin();var nextPage=currentFixedPage()+count;index.value=nextPage;if(animated){handlerOffset.value=scrollWithTiming(-nextPage*size,onFinished);}else{handlerOffset.value=-nextPage*size;onFinished==null?void 0:onFinished();}};_f._closure={canSliding:canSliding,loop:loop,index:index,dataInfo:dataInfo,onScrollBegin:onScrollBegin,currentFixedPage:currentFixedPage,handlerOffset:handlerOffset,scrollWithTiming:scrollWithTiming,size:size};_f.asString="function _f(opts={}){const{canSliding,loop,index,dataInfo,onScrollBegin,currentFixedPage,handlerOffset,scrollWithTiming,size}=jsThis._closure;{var _onScrollBegin;const{count=1,animated=true,onFinished:onFinished}=opts;if(!canSliding()||!loop&&index.value>=dataInfo.length-1)return;(_onScrollBegin=onScrollBegin)===null||_onScrollBegin===void 0?void 0:_onScrollBegin();const nextPage=currentFixedPage()+count;index.value=nextPage;if(animated){handlerOffset.value=scrollWithTiming(-nextPage*size,onFinished);}else{handlerOffset.value=-nextPage*size;onFinished===null||onFinished===void 0?void 0:onFinished();}}}";_f.__workletHash=10530429864168;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/hooks/useCarouselController.tsx (168:4)";return _f;}(),[canSliding,loop,index,dataInfo,onScrollBegin,handlerOffset,size,scrollWithTiming,currentFixedPage]);var prev=_react.default.useCallback(function(){var opts=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var _opts$count2=opts.count,count=_opts$count2===void 0?1:_opts$count2,_opts$animated2=opts.animated,animated=_opts$animated2===void 0?true:_opts$animated2,onFinished=opts.onFinished;if(!canSliding()||!loop&&index.value<=0)return;onScrollBegin==null?void 0:onScrollBegin();var prevPage=currentFixedPage()-count;index.value=prevPage;if(animated){handlerOffset.value=scrollWithTiming(-prevPage*size,onFinished);}else{handlerOffset.value=-prevPage*size;onFinished==null?void 0:onFinished();}},[canSliding,loop,index,onScrollBegin,handlerOffset,size,scrollWithTiming,currentFixedPage]);var to=_react.default.useCallback(function(opts){var i=opts.i,_opts$animated3=opts.animated,animated=_opts$animated3===void 0?false:_opts$animated3,onFinished=opts.onFinished;if(i===index.value)return;if(!canSliding())return;onScrollBegin==null?void 0:onScrollBegin();var direction=(0,_handlerOffsetDirection.handlerOffsetDirection)(handlerOffset);var offset=i*size*direction;var totalSize=dataInfo.length*size;var isCloseToNextLoop=false;if(loop){isCloseToNextLoop=Math.abs(handlerOffset.value%totalSize)/totalSize>=0.5;}var finalOffset=(Math.floor(Math.abs(handlerOffset.value/totalSize))+(isCloseToNextLoop?1:0))*totalSize*direction+offset;if(animated){index.value=i;handlerOffset.value=scrollWithTiming(finalOffset,onFinished);}else{handlerOffset.value=finalOffset;index.value=i;onFinished==null?void 0:onFinished();}},[index,canSliding,onScrollBegin,handlerOffset,size,dataInfo.length,loop,scrollWithTiming]);var scrollTo=_react.default.useCallback(function(){var opts=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var i=opts.index,count=opts.count,_opts$animated4=opts.animated,animated=_opts$animated4===void 0?false:_opts$animated4,onFinished=opts.onFinished;if(typeof i==="number"&&i>-1){to({i:i,animated:animated,onFinished:onFinished});return;}if(!count)return;var n=Math.round(count);if(n<0)prev({count:Math.abs(n),animated:animated,onFinished:onFinished});else next({count:n,animated:animated,onFinished:onFinished});},[prev,next,to]);return{next:next,prev:prev,scrollTo:scrollTo,getCurrentIndex:getCurrentIndex,getSharedIndex:function getSharedIndex(){return sharedIndex.current;}};}
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.useCarouselController=useCarouselController;var _react=_interopRequireWildcard(require("react"));var _reactNativeReanimated=require("react-native-reanimated");var _constants=require("../constants");var _computedWithAutoFillData=require("../utils/computedWithAutoFillData");var _dealWithAnimation=require("../utils/dealWithAnimation");var _handlerOffsetDirection=require("../utils/handlerOffsetDirection");var _log=require("../utils/log");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;}function useCarouselController(options){var size=options.size,loop=options.loop,dataLength=options.dataLength,handlerOffset=options.handlerOffset,withAnimation=options.withAnimation,_options$defaultIndex=options.defaultIndex,defaultIndex=_options$defaultIndex===void 0?0:_options$defaultIndex,duration=options.duration,autoFillData=options.autoFillData;var dataInfo=_react.default.useMemo(function(){return{length:dataLength,disable:!dataLength,originalLength:dataLength};},[dataLength]);var index=(0,_reactNativeReanimated.useSharedValue)(defaultIndex);var sharedIndex=(0,_react.useRef)(defaultIndex);var sharedPreIndex=(0,_react.useRef)(defaultIndex);var currentFixedPage=_react.default.useCallback(function(){if(loop)return-Math.round(handlerOffset.value/size);var fixed=handlerOffset.value/size%dataInfo.length;return Math.round(handlerOffset.value<=0?Math.abs(fixed):Math.abs(fixed>0?dataInfo.length-fixed:0));},[handlerOffset,dataInfo,size,loop]);function setSharedIndex(newSharedIndex){sharedIndex.current=newSharedIndex;}(0,_reactNativeReanimated.useAnimatedReaction)(function(){var _f=function _f(){var handlerOffsetValue=handlerOffset.value;var toInt=(0,_log.round)(handlerOffsetValue/size)%dataInfo.length;var isPositive=handlerOffsetValue<=0;var i=isPositive?Math.abs(toInt):Math.abs(toInt>0?dataInfo.length-toInt:0);var newSharedIndexValue=(0,_computedWithAutoFillData.convertToSharedIndex)({loop:loop,rawDataLength:dataInfo.originalLength,autoFillData:autoFillData,index:i});return{i:i,newSharedIndexValue:newSharedIndexValue};};_f._closure={handlerOffset:handlerOffset,round:_log.round,size:size,dataInfo:dataInfo,convertToSharedIndex:_computedWithAutoFillData.convertToSharedIndex,loop:loop,autoFillData:autoFillData};_f.asString="function _f(){const{handlerOffset,round,size,dataInfo,convertToSharedIndex,loop,autoFillData}=jsThis._closure;{const handlerOffsetValue=handlerOffset.value;const toInt=round(handlerOffsetValue/size)%dataInfo.length;const isPositive=handlerOffsetValue<=0;const i=isPositive?Math.abs(toInt):Math.abs(toInt>0?dataInfo.length-toInt:0);const newSharedIndexValue=convertToSharedIndex({loop:loop,rawDataLength:dataInfo.originalLength,autoFillData:autoFillData,index:i});return{i:i,newSharedIndexValue:newSharedIndexValue};}}";_f.__workletHash=442719064151;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useCarouselController.tsx (84:4)";return _f;}(),function(){var _f=function _f(_ref){var i=_ref.i,newSharedIndexValue=_ref.newSharedIndexValue;index.value=i;(0,_reactNativeReanimated.runOnJS)(setSharedIndex)(newSharedIndexValue);};_f._closure={index:index,runOnJS:_reactNativeReanimated.runOnJS,setSharedIndex:setSharedIndex};_f.asString="function _f({i:i,newSharedIndexValue:newSharedIndexValue}){const{index,runOnJS,setSharedIndex}=jsThis._closure;{index.value=i;runOnJS(setSharedIndex)(newSharedIndexValue);}}";_f.__workletHash=16638491076412;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useCarouselController.tsx (104:4)";return _f;}(),[sharedPreIndex,sharedIndex,size,dataInfo,index,loop,autoFillData,handlerOffset]);var getCurrentIndex=_react.default.useCallback(function(){var realIndex=(0,_computedWithAutoFillData.computedRealIndexWithAutoFillData)({index:index.value,dataLength:dataInfo.originalLength,loop:loop,autoFillData:autoFillData});return realIndex;},[index,autoFillData,dataInfo,loop]);var canSliding=_react.default.useCallback(function(){return!dataInfo.disable;},[dataInfo]);var onScrollEnd=_react.default.useCallback(function(){options.onScrollEnd==null?void 0:options.onScrollEnd();},[options]);var onScrollBegin=_react.default.useCallback(function(){options.onScrollBegin==null?void 0:options.onScrollBegin();},[options]);var scrollWithTiming=_react.default.useCallback(function(){var _f=function _f(toValue,onFinished){var callback=function(){var _f=function _f(isFinished){if(isFinished){(0,_reactNativeReanimated.runOnJS)(onScrollEnd)();onFinished&&(0,_reactNativeReanimated.runOnJS)(onFinished)();}};_f._closure={runOnJS:_reactNativeReanimated.runOnJS,onScrollEnd:onScrollEnd,onFinished:onFinished};_f.asString="function _f(isFinished){const{runOnJS,onScrollEnd,onFinished}=jsThis._closure;{if(isFinished){runOnJS(onScrollEnd)();onFinished&&runOnJS(onFinished)();}}}";_f.__workletHash=7767198641261;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useCarouselController.tsx (146:23)";return _f;}();var defaultWithAnimation={type:"timing",config:{duration:duration,easing:_constants.Easing.easeOutQuart}};return(0,_dealWithAnimation.dealWithAnimation)(withAnimation!=null?withAnimation:defaultWithAnimation)(toValue,callback);};_f._closure={runOnJS:_reactNativeReanimated.runOnJS,onScrollEnd:onScrollEnd,duration:duration,Easing:{easeOutQuart:_constants.Easing.easeOutQuart},dealWithAnimation:_dealWithAnimation.dealWithAnimation,withAnimation:withAnimation};_f.asString="function _f(toValue,onFinished){const{runOnJS,onScrollEnd,duration,Easing,dealWithAnimation,withAnimation}=jsThis._closure;{var _withAnimation;const callback=function(isFinished){\"worklet\";if(isFinished){runOnJS(onScrollEnd)();onFinished&&runOnJS(onFinished)();}};const defaultWithAnimation={type:\"timing\",config:{duration:duration,easing:Easing.easeOutQuart}};return dealWithAnimation((_withAnimation=withAnimation)!==null&&_withAnimation!==void 0?_withAnimation:defaultWithAnimation)(toValue,callback);}}";_f.__workletHash=12575476119920;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useCarouselController.tsx (144:4)";return _f;}(),[duration,withAnimation,onScrollEnd]);var next=_react.default.useCallback(function(){var _f=function _f(){var opts=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var _opts$count=opts.count,count=_opts$count===void 0?1:_opts$count,_opts$animated=opts.animated,animated=_opts$animated===void 0?true:_opts$animated,onFinished=opts.onFinished;if(!canSliding()||!loop&&index.value>=dataInfo.length-1)return;onScrollBegin==null?void 0:onScrollBegin();var nextPage=currentFixedPage()+count;index.value=nextPage;if(animated){handlerOffset.value=scrollWithTiming(-nextPage*size,onFinished);}else{handlerOffset.value=-nextPage*size;onFinished==null?void 0:onFinished();}};_f._closure={canSliding:canSliding,loop:loop,index:index,dataInfo:dataInfo,onScrollBegin:onScrollBegin,currentFixedPage:currentFixedPage,handlerOffset:handlerOffset,scrollWithTiming:scrollWithTiming,size:size};_f.asString="function _f(opts={}){const{canSliding,loop,index,dataInfo,onScrollBegin,currentFixedPage,handlerOffset,scrollWithTiming,size}=jsThis._closure;{var _onScrollBegin;const{count=1,animated=true,onFinished:onFinished}=opts;if(!canSliding()||!loop&&index.value>=dataInfo.length-1)return;(_onScrollBegin=onScrollBegin)===null||_onScrollBegin===void 0?void 0:_onScrollBegin();const nextPage=currentFixedPage()+count;index.value=nextPage;if(animated){handlerOffset.value=scrollWithTiming(-nextPage*size,onFinished);}else{handlerOffset.value=-nextPage*size;onFinished===null||onFinished===void 0?void 0:onFinished();}}}";_f.__workletHash=10530429864168;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useCarouselController.tsx (168:4)";return _f;}(),[canSliding,loop,index,dataInfo,onScrollBegin,handlerOffset,size,scrollWithTiming,currentFixedPage]);var prev=_react.default.useCallback(function(){var opts=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var _opts$count2=opts.count,count=_opts$count2===void 0?1:_opts$count2,_opts$animated2=opts.animated,animated=_opts$animated2===void 0?true:_opts$animated2,onFinished=opts.onFinished;if(!canSliding()||!loop&&index.value<=0)return;onScrollBegin==null?void 0:onScrollBegin();var prevPage=currentFixedPage()-count;index.value=prevPage;if(animated){handlerOffset.value=scrollWithTiming(-prevPage*size,onFinished);}else{handlerOffset.value=-prevPage*size;onFinished==null?void 0:onFinished();}},[canSliding,loop,index,onScrollBegin,handlerOffset,size,scrollWithTiming,currentFixedPage]);var to=_react.default.useCallback(function(opts){var i=opts.i,_opts$animated3=opts.animated,animated=_opts$animated3===void 0?false:_opts$animated3,onFinished=opts.onFinished;if(i===index.value)return;if(!canSliding())return;onScrollBegin==null?void 0:onScrollBegin();var direction=(0,_handlerOffsetDirection.handlerOffsetDirection)(handlerOffset);var offset=i*size*direction;var totalSize=dataInfo.length*size;var isCloseToNextLoop=false;if(loop){isCloseToNextLoop=Math.abs(handlerOffset.value%totalSize)/totalSize>=0.5;}var finalOffset=(Math.floor(Math.abs(handlerOffset.value/totalSize))+(isCloseToNextLoop?1:0))*totalSize*direction+offset;if(animated){index.value=i;handlerOffset.value=scrollWithTiming(finalOffset,onFinished);}else{handlerOffset.value=finalOffset;index.value=i;onFinished==null?void 0:onFinished();}},[index,canSliding,onScrollBegin,handlerOffset,size,dataInfo.length,loop,scrollWithTiming]);var scrollTo=_react.default.useCallback(function(){var opts=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var i=opts.index,count=opts.count,_opts$animated4=opts.animated,animated=_opts$animated4===void 0?false:_opts$animated4,onFinished=opts.onFinished;if(typeof i==="number"&&i>-1){to({i:i,animated:animated,onFinished:onFinished});return;}if(!count)return;var n=Math.round(count);if(n<0)prev({count:Math.abs(n),animated:animated,onFinished:onFinished});else next({count:n,animated:animated,onFinished:onFinished});},[prev,next,to]);return{next:next,prev:prev,scrollTo:scrollTo,getCurrentIndex:getCurrentIndex,getSharedIndex:function getSharedIndex(){return sharedIndex.current;}};}
2
2
  //# sourceMappingURL=useCarouselController.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["useCarouselController.tsx"],"names":["useCarouselController","options","size","data","loop","handlerOffset","withAnimation","defaultIndex","duration","autoFillData","dataInfo","React","useMemo","length","disable","originalLength","index","sharedIndex","sharedPreIndex","currentFixedPage","useCallback","Math","round","value","fixed","abs","setSharedIndex","newSharedIndex","current","handlerOffsetValue","toInt","isPositive","i","newSharedIndexValue","rawDataLength","convertToSharedIndex","runOnJS","getCurrentIndex","realIndex","dataLength","canSliding","onScrollEnd","onScrollBegin","scrollWithTiming","toValue","onFinished","callback","isFinished","defaultWithAnimation","type","config","easing","Easing","easeOutQuart","dealWithAnimation","next","opts","count","animated","nextPage","prev","prevPage","to","direction","offset","totalSize","isCloseToNextLoop","finalOffset","floor","scrollTo","n","getSharedIndex"],"mappings":"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","sourcesContent":["import React, { useRef } from \"react\";\nimport type Animated from \"react-native-reanimated\";\nimport {\n runOnJS,\n useAnimatedReaction,\n useSharedValue,\n} from \"react-native-reanimated\";\n\nimport { Easing } from \"../constants\";\nimport type {\n TCarouselActionOptions,\n TCarouselProps,\n WithTimingAnimation,\n} from \"../types\";\nimport { computedRealIndexWithAutoFillData, convertToSharedIndex } from \"../utils/computedWithAutoFillData\";\nimport { dealWithAnimation } from \"../utils/dealWithAnimation\";\nimport { handlerOffsetDirection } from \"../utils/handlerOffsetDirection\";\nimport { round } from \"../utils/log\";\n\ninterface IOpts {\n loop: boolean\n size: number\n data: TCarouselProps[\"data\"]\n autoFillData: TCarouselProps[\"autoFillData\"]\n handlerOffset: Animated.SharedValue<number>\n withAnimation?: TCarouselProps[\"withAnimation\"]\n duration?: number\n defaultIndex?: number\n onScrollBegin?: () => void\n onScrollEnd?: () => void\n}\n\nexport interface ICarouselController {\n getSharedIndex: () => number\n prev: (opts?: TCarouselActionOptions) => void\n next: (opts?: TCarouselActionOptions) => void\n getCurrentIndex: () => number\n scrollTo: (opts?: TCarouselActionOptions) => void\n}\n\nexport function useCarouselController(options: IOpts): ICarouselController {\n const {\n size,\n data,\n loop,\n handlerOffset,\n withAnimation,\n defaultIndex = 0,\n duration,\n autoFillData,\n } = options;\n\n const dataInfo = React.useMemo(\n () => ({\n length: data.length,\n disable: !data.length,\n originalLength: data.length,\n }),\n [data],\n );\n\n const index = useSharedValue<number>(defaultIndex);\n // The Index displayed to the user\n const sharedIndex = useRef<number>(defaultIndex);\n const sharedPreIndex = useRef<number>(defaultIndex);\n\n const currentFixedPage = React.useCallback(() => {\n if (loop)\n return -Math.round(handlerOffset.value / size);\n\n const fixed = (handlerOffset.value / size) % dataInfo.length;\n return Math.round(\n handlerOffset.value <= 0\n ? Math.abs(fixed)\n : Math.abs(fixed > 0 ? dataInfo.length - fixed : 0),\n );\n }, [handlerOffset, dataInfo, size, loop]);\n\n function setSharedIndex(newSharedIndex: number) {\n sharedIndex.current = newSharedIndex;\n }\n\n useAnimatedReaction(\n () => {\n const handlerOffsetValue = handlerOffset.value;\n const toInt = round(handlerOffsetValue / size) % dataInfo.length;\n const isPositive = handlerOffsetValue <= 0;\n const i = isPositive\n ? Math.abs(toInt)\n : Math.abs(toInt > 0 ? dataInfo.length - toInt : 0);\n\n const newSharedIndexValue = convertToSharedIndex({\n loop,\n rawDataLength: dataInfo.originalLength,\n autoFillData: autoFillData!,\n index: i,\n });\n\n return {\n i,\n newSharedIndexValue,\n };\n },\n ({ i, newSharedIndexValue }) => {\n index.value = i;\n runOnJS(setSharedIndex)(newSharedIndexValue);\n },\n [\n sharedPreIndex,\n sharedIndex,\n size,\n dataInfo,\n index,\n loop,\n autoFillData,\n handlerOffset,\n ],\n );\n\n const getCurrentIndex = React.useCallback(() => {\n const realIndex = computedRealIndexWithAutoFillData({\n index: index.value,\n dataLength: dataInfo.originalLength,\n loop,\n autoFillData: autoFillData!,\n });\n\n return realIndex;\n }, [index, autoFillData, dataInfo, loop]);\n\n const canSliding = React.useCallback(() => {\n return !dataInfo.disable;\n }, [dataInfo]);\n\n const onScrollEnd = React.useCallback(() => {\n options.onScrollEnd?.();\n }, [options]);\n\n const onScrollBegin = React.useCallback(() => {\n options.onScrollBegin?.();\n }, [options]);\n\n const scrollWithTiming = React.useCallback(\n (toValue: number, onFinished?: () => void) => {\n \"worklet\";\n const callback = (isFinished: boolean) => {\n \"worklet\";\n if (isFinished) {\n runOnJS(onScrollEnd)();\n onFinished && runOnJS(onFinished)();\n }\n };\n\n const defaultWithAnimation: WithTimingAnimation = {\n type: \"timing\",\n config: { duration, easing: Easing.easeOutQuart },\n };\n\n return dealWithAnimation(withAnimation ?? defaultWithAnimation)(\n toValue,\n callback,\n );\n },\n [duration, withAnimation, onScrollEnd],\n );\n\n const next = React.useCallback(\n (opts: TCarouselActionOptions = {}) => {\n \"worklet\";\n const { count = 1, animated = true, onFinished } = opts;\n if (!canSliding() || (!loop && index.value >= dataInfo.length - 1))\n return;\n\n onScrollBegin?.();\n\n const nextPage = currentFixedPage() + count;\n index.value = nextPage;\n\n if (animated) {\n handlerOffset.value = scrollWithTiming(\n -nextPage * size,\n onFinished,\n ) as any;\n }\n else {\n handlerOffset.value = -nextPage * size;\n onFinished?.();\n }\n },\n [\n canSliding,\n loop,\n index,\n dataInfo,\n onScrollBegin,\n handlerOffset,\n size,\n scrollWithTiming,\n currentFixedPage,\n ],\n );\n\n const prev = React.useCallback(\n (opts: TCarouselActionOptions = {}) => {\n const { count = 1, animated = true, onFinished } = opts;\n if (!canSliding() || (!loop && index.value <= 0)) return;\n\n onScrollBegin?.();\n\n const prevPage = currentFixedPage() - count;\n index.value = prevPage;\n\n if (animated) {\n handlerOffset.value = scrollWithTiming(\n -prevPage * size,\n onFinished,\n );\n }\n else {\n handlerOffset.value = -prevPage * size;\n onFinished?.();\n }\n },\n [\n canSliding,\n loop,\n index,\n onScrollBegin,\n handlerOffset,\n size,\n scrollWithTiming,\n currentFixedPage,\n ],\n );\n\n const to = React.useCallback(\n (opts: { i: number; animated: boolean; onFinished?: () => void }) => {\n const { i, animated = false, onFinished } = opts;\n if (i === index.value) return;\n if (!canSliding()) return;\n\n onScrollBegin?.();\n // direction -> 1 | -1\n const direction = handlerOffsetDirection(handlerOffset);\n\n // target offset\n const offset = i * size * direction;\n // page width size * page count\n const totalSize = dataInfo.length * size;\n\n let isCloseToNextLoop = false;\n\n if (loop) {\n isCloseToNextLoop\n = Math.abs(handlerOffset.value % totalSize) / totalSize\n >= 0.5;\n }\n\n const finalOffset\n = (Math.floor(Math.abs(handlerOffset.value / totalSize))\n + (isCloseToNextLoop ? 1 : 0))\n * totalSize\n * direction\n + offset;\n\n if (animated) {\n index.value = i;\n handlerOffset.value = scrollWithTiming(finalOffset, onFinished);\n }\n else {\n handlerOffset.value = finalOffset;\n index.value = i;\n onFinished?.();\n }\n },\n [\n index,\n canSliding,\n onScrollBegin,\n handlerOffset,\n size,\n dataInfo.length,\n loop,\n scrollWithTiming,\n ],\n );\n\n const scrollTo = React.useCallback(\n (opts: TCarouselActionOptions = {}) => {\n const { index: i, count, animated = false, onFinished } = opts;\n if (typeof i === \"number\" && i > -1) {\n to({ i, animated, onFinished });\n return;\n }\n\n if (!count)\n return;\n\n const n = Math.round(count);\n\n if (n < 0)\n prev({ count: Math.abs(n), animated, onFinished });\n\n else\n next({ count: n, animated, onFinished });\n },\n [prev, next, to],\n );\n\n return {\n next,\n prev,\n scrollTo,\n getCurrentIndex,\n getSharedIndex: () => sharedIndex.current,\n };\n}\n"]}
1
+ {"version":3,"sources":["useCarouselController.tsx"],"names":["useCarouselController","options","size","loop","dataLength","handlerOffset","withAnimation","defaultIndex","duration","autoFillData","dataInfo","React","useMemo","length","disable","originalLength","index","sharedIndex","sharedPreIndex","currentFixedPage","useCallback","Math","round","value","fixed","abs","setSharedIndex","newSharedIndex","current","handlerOffsetValue","toInt","isPositive","i","newSharedIndexValue","rawDataLength","convertToSharedIndex","runOnJS","getCurrentIndex","realIndex","canSliding","onScrollEnd","onScrollBegin","scrollWithTiming","toValue","onFinished","callback","isFinished","defaultWithAnimation","type","config","easing","Easing","easeOutQuart","dealWithAnimation","next","opts","count","animated","nextPage","prev","prevPage","to","direction","offset","totalSize","isCloseToNextLoop","finalOffset","floor","scrollTo","n","getSharedIndex"],"mappings":"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","sourcesContent":["import React, { useRef } from \"react\";\nimport type Animated from \"react-native-reanimated\";\nimport {\n runOnJS,\n useAnimatedReaction,\n useSharedValue,\n} from \"react-native-reanimated\";\n\nimport { Easing } from \"../constants\";\nimport type {\n TCarouselActionOptions,\n TCarouselProps,\n WithTimingAnimation,\n} from \"../types\";\nimport { computedRealIndexWithAutoFillData, convertToSharedIndex } from \"../utils/computedWithAutoFillData\";\nimport { dealWithAnimation } from \"../utils/dealWithAnimation\";\nimport { handlerOffsetDirection } from \"../utils/handlerOffsetDirection\";\nimport { round } from \"../utils/log\";\n\ninterface IOpts {\n loop: boolean\n size: number\n dataLength: number\n autoFillData: TCarouselProps[\"autoFillData\"]\n handlerOffset: Animated.SharedValue<number>\n withAnimation?: TCarouselProps[\"withAnimation\"]\n duration?: number\n defaultIndex?: number\n onScrollBegin?: () => void\n onScrollEnd?: () => void\n}\n\nexport interface ICarouselController {\n getSharedIndex: () => number\n prev: (opts?: TCarouselActionOptions) => void\n next: (opts?: TCarouselActionOptions) => void\n getCurrentIndex: () => number\n scrollTo: (opts?: TCarouselActionOptions) => void\n}\n\nexport function useCarouselController(options: IOpts): ICarouselController {\n const {\n size,\n loop,\n dataLength,\n handlerOffset,\n withAnimation,\n defaultIndex = 0,\n duration,\n autoFillData,\n } = options;\n\n const dataInfo = React.useMemo(\n () => ({\n length: dataLength,\n disable: !dataLength,\n originalLength: dataLength,\n }),\n [dataLength],\n );\n\n const index = useSharedValue<number>(defaultIndex);\n // The Index displayed to the user\n const sharedIndex = useRef<number>(defaultIndex);\n const sharedPreIndex = useRef<number>(defaultIndex);\n\n const currentFixedPage = React.useCallback(() => {\n if (loop)\n return -Math.round(handlerOffset.value / size);\n\n const fixed = (handlerOffset.value / size) % dataInfo.length;\n return Math.round(\n handlerOffset.value <= 0\n ? Math.abs(fixed)\n : Math.abs(fixed > 0 ? dataInfo.length - fixed : 0),\n );\n }, [handlerOffset, dataInfo, size, loop]);\n\n function setSharedIndex(newSharedIndex: number) {\n sharedIndex.current = newSharedIndex;\n }\n\n useAnimatedReaction(\n () => {\n const handlerOffsetValue = handlerOffset.value;\n const toInt = round(handlerOffsetValue / size) % dataInfo.length;\n const isPositive = handlerOffsetValue <= 0;\n const i = isPositive\n ? Math.abs(toInt)\n : Math.abs(toInt > 0 ? dataInfo.length - toInt : 0);\n\n const newSharedIndexValue = convertToSharedIndex({\n loop,\n rawDataLength: dataInfo.originalLength,\n autoFillData: autoFillData!,\n index: i,\n });\n\n return {\n i,\n newSharedIndexValue,\n };\n },\n ({ i, newSharedIndexValue }) => {\n index.value = i;\n runOnJS(setSharedIndex)(newSharedIndexValue);\n },\n [\n sharedPreIndex,\n sharedIndex,\n size,\n dataInfo,\n index,\n loop,\n autoFillData,\n handlerOffset,\n ],\n );\n\n const getCurrentIndex = React.useCallback(() => {\n const realIndex = computedRealIndexWithAutoFillData({\n index: index.value,\n dataLength: dataInfo.originalLength,\n loop,\n autoFillData: autoFillData!,\n });\n\n return realIndex;\n }, [index, autoFillData, dataInfo, loop]);\n\n const canSliding = React.useCallback(() => {\n return !dataInfo.disable;\n }, [dataInfo]);\n\n const onScrollEnd = React.useCallback(() => {\n options.onScrollEnd?.();\n }, [options]);\n\n const onScrollBegin = React.useCallback(() => {\n options.onScrollBegin?.();\n }, [options]);\n\n const scrollWithTiming = React.useCallback(\n (toValue: number, onFinished?: () => void) => {\n \"worklet\";\n const callback = (isFinished: boolean) => {\n \"worklet\";\n if (isFinished) {\n runOnJS(onScrollEnd)();\n onFinished && runOnJS(onFinished)();\n }\n };\n\n const defaultWithAnimation: WithTimingAnimation = {\n type: \"timing\",\n config: { duration, easing: Easing.easeOutQuart },\n };\n\n return dealWithAnimation(withAnimation ?? defaultWithAnimation)(\n toValue,\n callback,\n );\n },\n [duration, withAnimation, onScrollEnd],\n );\n\n const next = React.useCallback(\n (opts: TCarouselActionOptions = {}) => {\n \"worklet\";\n const { count = 1, animated = true, onFinished } = opts;\n if (!canSliding() || (!loop && index.value >= dataInfo.length - 1))\n return;\n\n onScrollBegin?.();\n\n const nextPage = currentFixedPage() + count;\n index.value = nextPage;\n\n if (animated) {\n handlerOffset.value = scrollWithTiming(\n -nextPage * size,\n onFinished,\n ) as any;\n }\n else {\n handlerOffset.value = -nextPage * size;\n onFinished?.();\n }\n },\n [\n canSliding,\n loop,\n index,\n dataInfo,\n onScrollBegin,\n handlerOffset,\n size,\n scrollWithTiming,\n currentFixedPage,\n ],\n );\n\n const prev = React.useCallback(\n (opts: TCarouselActionOptions = {}) => {\n const { count = 1, animated = true, onFinished } = opts;\n if (!canSliding() || (!loop && index.value <= 0)) return;\n\n onScrollBegin?.();\n\n const prevPage = currentFixedPage() - count;\n index.value = prevPage;\n\n if (animated) {\n handlerOffset.value = scrollWithTiming(\n -prevPage * size,\n onFinished,\n );\n }\n else {\n handlerOffset.value = -prevPage * size;\n onFinished?.();\n }\n },\n [\n canSliding,\n loop,\n index,\n onScrollBegin,\n handlerOffset,\n size,\n scrollWithTiming,\n currentFixedPage,\n ],\n );\n\n const to = React.useCallback(\n (opts: { i: number; animated: boolean; onFinished?: () => void }) => {\n const { i, animated = false, onFinished } = opts;\n if (i === index.value) return;\n if (!canSliding()) return;\n\n onScrollBegin?.();\n // direction -> 1 | -1\n const direction = handlerOffsetDirection(handlerOffset);\n\n // target offset\n const offset = i * size * direction;\n // page width size * page count\n const totalSize = dataInfo.length * size;\n\n let isCloseToNextLoop = false;\n\n if (loop) {\n isCloseToNextLoop\n = Math.abs(handlerOffset.value % totalSize) / totalSize\n >= 0.5;\n }\n\n const finalOffset\n = (Math.floor(Math.abs(handlerOffset.value / totalSize))\n + (isCloseToNextLoop ? 1 : 0))\n * totalSize\n * direction\n + offset;\n\n if (animated) {\n index.value = i;\n handlerOffset.value = scrollWithTiming(finalOffset, onFinished);\n }\n else {\n handlerOffset.value = finalOffset;\n index.value = i;\n onFinished?.();\n }\n },\n [\n index,\n canSliding,\n onScrollBegin,\n handlerOffset,\n size,\n dataInfo.length,\n loop,\n scrollWithTiming,\n ],\n );\n\n const scrollTo = React.useCallback(\n (opts: TCarouselActionOptions = {}) => {\n const { index: i, count, animated = false, onFinished } = opts;\n if (typeof i === \"number\" && i > -1) {\n to({ i, animated, onFinished });\n return;\n }\n\n if (!count)\n return;\n\n const n = Math.round(count);\n\n if (n < 0)\n prev({ count: Math.abs(n), animated, onFinished });\n\n else\n next({ count: n, animated, onFinished });\n },\n [prev, next, to],\n );\n\n return {\n next,\n prev,\n scrollTo,\n getCurrentIndex,\n getSharedIndex: () => sharedIndex.current,\n };\n}\n"]}
@@ -1,2 +1,2 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.useCommonVariables=useCommonVariables;var _react=_interopRequireDefault(require("react"));var _reactNativeReanimated=require("react-native-reanimated");var _computeNewIndexWhenDataChanges=require("./computeNewIndexWhenDataChanges");var _handlerOffsetDirection=require("../utils/handlerOffsetDirection");function useCommonVariables(props){var vertical=props.vertical,height=props.height,width=props.width,data=props.data,defaultIndex=props.defaultIndex,defaultScrollOffsetValue=props.defaultScrollOffsetValue,loop=props.loop;var size=vertical?height:width;var validLength=data.length-1;var defaultHandlerOffsetValue=-Math.abs(defaultIndex*size);var _handlerOffset=(0,_reactNativeReanimated.useSharedValue)(defaultHandlerOffsetValue);var handlerOffset=defaultScrollOffsetValue!=null?defaultScrollOffsetValue:_handlerOffset;var prevDataLength=(0,_reactNativeReanimated.useSharedValue)(data.length);_react.default.useEffect(function(){handlerOffset.value=defaultHandlerOffsetValue;},[vertical,handlerOffset,defaultHandlerOffsetValue]);(0,_reactNativeReanimated.useAnimatedReaction)(function(){var _f=function _f(){var previousLength=prevDataLength.value;var currentLength=data.length;var isLengthChanged=previousLength!==currentLength;var shouldComputed=isLengthChanged&&loop;if(shouldComputed)prevDataLength.value=data.length;return{shouldComputed:shouldComputed,previousLength:previousLength,currentLength:currentLength};};_f._closure={prevDataLength:prevDataLength,data:data,loop:loop};_f.asString="function _f(){const{prevDataLength,data,loop}=jsThis._closure;{const previousLength=prevDataLength.value;const currentLength=data.length;const isLengthChanged=previousLength!==currentLength;const shouldComputed=isLengthChanged&&loop;if(shouldComputed)prevDataLength.value=data.length;return{shouldComputed:shouldComputed,previousLength:previousLength,currentLength:currentLength};}}";_f.__workletHash=9379463381326;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/hooks/useCommonVariables.ts (39:22)";return _f;}(),function(){var _f=function _f(_ref){var shouldComputed=_ref.shouldComputed,previousLength=_ref.previousLength,currentLength=_ref.currentLength;if(shouldComputed){var direction=(0,_handlerOffsetDirection.handlerOffsetDirection)(handlerOffset);handlerOffset.value=(0,_computeNewIndexWhenDataChanges.computeNewIndexWhenDataChanges)({direction:direction,previousLength:previousLength,currentLength:currentLength,size:size,handlerOffset:handlerOffset.value});}};_f._closure={handlerOffsetDirection:_handlerOffsetDirection.handlerOffsetDirection,handlerOffset:handlerOffset,computeNewIndexWhenDataChanges:_computeNewIndexWhenDataChanges.computeNewIndexWhenDataChanges,size:size};_f.asString="function _f({shouldComputed:shouldComputed,previousLength:previousLength,currentLength:currentLength}){const{handlerOffsetDirection,handlerOffset,computeNewIndexWhenDataChanges,size}=jsThis._closure;{if(shouldComputed){const direction=handlerOffsetDirection(handlerOffset);handlerOffset.value=computeNewIndexWhenDataChanges({direction:direction,previousLength:previousLength,currentLength:currentLength,size:size,handlerOffset:handlerOffset.value});}}}";_f.__workletHash=7425703877323;_f.__location="/Users/zhaodonghao/code/github/react-native-reanimated-carousel/src/hooks/useCommonVariables.ts (53:5)";return _f;}(),[data,loop]);return{size:size,validLength:validLength,handlerOffset:handlerOffset};}
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.useCommonVariables=useCommonVariables;var _react=_interopRequireDefault(require("react"));var _reactNativeReanimated=require("react-native-reanimated");var _computeNewIndexWhenDataChanges=require("./computeNewIndexWhenDataChanges");var _handlerOffsetDirection=require("../utils/handlerOffsetDirection");function useCommonVariables(props){var vertical=props.vertical,height=props.height,width=props.width,dataLength=props.dataLength,defaultIndex=props.defaultIndex,defaultScrollOffsetValue=props.defaultScrollOffsetValue,loop=props.loop;var size=vertical?height:width;var validLength=dataLength-1;var defaultHandlerOffsetValue=-Math.abs(defaultIndex*size);var _handlerOffset=(0,_reactNativeReanimated.useSharedValue)(defaultHandlerOffsetValue);var handlerOffset=defaultScrollOffsetValue!=null?defaultScrollOffsetValue:_handlerOffset;var prevDataLength=(0,_reactNativeReanimated.useSharedValue)(dataLength);_react.default.useEffect(function(){handlerOffset.value=defaultHandlerOffsetValue;},[vertical,handlerOffset,defaultHandlerOffsetValue]);(0,_reactNativeReanimated.useAnimatedReaction)(function(){var _f=function _f(){var previousLength=prevDataLength.value;var currentLength=dataLength;var isLengthChanged=previousLength!==currentLength;var shouldComputed=isLengthChanged&&loop;if(shouldComputed)prevDataLength.value=dataLength;return{shouldComputed:shouldComputed,previousLength:previousLength,currentLength:currentLength};};_f._closure={prevDataLength:prevDataLength,dataLength:dataLength,loop:loop};_f.asString="function _f(){const{prevDataLength,dataLength,loop}=jsThis._closure;{const previousLength=prevDataLength.value;const currentLength=dataLength;const isLengthChanged=previousLength!==currentLength;const shouldComputed=isLengthChanged&&loop;if(shouldComputed)prevDataLength.value=dataLength;return{shouldComputed:shouldComputed,previousLength:previousLength,currentLength:currentLength};}}";_f.__workletHash=13698961874962;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useCommonVariables.ts (39:22)";return _f;}(),function(){var _f=function _f(_ref){var shouldComputed=_ref.shouldComputed,previousLength=_ref.previousLength,currentLength=_ref.currentLength;if(shouldComputed){var direction=(0,_handlerOffsetDirection.handlerOffsetDirection)(handlerOffset);handlerOffset.value=(0,_computeNewIndexWhenDataChanges.computeNewIndexWhenDataChanges)({direction:direction,previousLength:previousLength,currentLength:currentLength,size:size,handlerOffset:handlerOffset.value});}};_f._closure={handlerOffsetDirection:_handlerOffsetDirection.handlerOffsetDirection,handlerOffset:handlerOffset,computeNewIndexWhenDataChanges:_computeNewIndexWhenDataChanges.computeNewIndexWhenDataChanges,size:size};_f.asString="function _f({shouldComputed:shouldComputed,previousLength:previousLength,currentLength:currentLength}){const{handlerOffsetDirection,handlerOffset,computeNewIndexWhenDataChanges,size}=jsThis._closure;{if(shouldComputed){const direction=handlerOffsetDirection(handlerOffset);handlerOffset.value=computeNewIndexWhenDataChanges({direction:direction,previousLength:previousLength,currentLength:currentLength,size:size,handlerOffset:handlerOffset.value});}}}";_f.__workletHash=7425703877323;_f.__location="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useCommonVariables.ts (53:5)";return _f;}(),[dataLength,loop]);return{size:size,validLength:validLength,handlerOffset:handlerOffset};}
2
2
  //# sourceMappingURL=useCommonVariables.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["useCommonVariables.ts"],"names":["useCommonVariables","props","vertical","height","width","data","defaultIndex","defaultScrollOffsetValue","loop","size","validLength","length","defaultHandlerOffsetValue","Math","abs","_handlerOffset","handlerOffset","prevDataLength","React","useEffect","value","previousLength","currentLength","isLengthChanged","shouldComputed","direction","handlerOffsetDirection","computeNewIndexWhenDataChanges"],"mappings":"0LAAA,oDAEA,8DAEA,gFAGA,uEAQO,QAASA,CAAAA,kBAAT,CACLC,KADK,CAEa,CAClB,GACEC,CAAAA,QADF,CAQID,KARJ,CACEC,QADF,CAEEC,MAFF,CAQIF,KARJ,CAEEE,MAFF,CAGEC,KAHF,CAQIH,KARJ,CAGEG,KAHF,CAIEC,IAJF,CAQIJ,KARJ,CAIEI,IAJF,CAKEC,YALF,CAQIL,KARJ,CAKEK,YALF,CAMEC,wBANF,CAQIN,KARJ,CAMEM,wBANF,CAOEC,IAPF,CAQIP,KARJ,CAOEO,IAPF,CASA,GAAMC,CAAAA,IAAI,CAAGP,QAAQ,CAAGC,MAAH,CAAYC,KAAjC,CACA,GAAMM,CAAAA,WAAW,CAAGL,IAAI,CAACM,MAAL,CAAc,CAAlC,CACA,GAAMC,CAAAA,yBAAyB,CAAG,CAACC,IAAI,CAACC,GAAL,CAASR,YAAY,CAAGG,IAAxB,CAAnC,CACA,GAAMM,CAAAA,cAAc,CAAG,0CAAuBH,yBAAvB,CAAvB,CACA,GAAMI,CAAAA,aAAa,CAAGT,wBAAH,OAAGA,wBAAH,CAA+BQ,cAAlD,CACA,GAAME,CAAAA,cAAc,CAAG,0CAAeZ,IAAI,CAACM,MAApB,CAAvB,CAEAO,eAAMC,SAAN,CAAgB,UAAM,CACpBH,aAAa,CAACI,KAAd,CAAsBR,yBAAtB,CACD,CAFD,CAEG,CAACV,QAAD,CAAWc,aAAX,CAA0BJ,yBAA1B,CAFH,EAIA,8EAA0B,CACxB,GAAMS,CAAAA,cAAc,CAAGJ,cAAc,CAACG,KAAtC,CACA,GAAME,CAAAA,aAAa,CAAGjB,IAAI,CAACM,MAA3B,CACA,GAAMY,CAAAA,eAAe,CAAGF,cAAc,GAAKC,aAA3C,CACA,GAAME,CAAAA,cAAc,CAAGD,eAAe,EAAIf,IAA1C,CAEA,GAAIgB,cAAJ,CACEP,cAAc,CAACG,KAAf,CAAuBf,IAAI,CAACM,MAA5B,CAEF,MAAO,CACLa,cAAc,CAAdA,cADK,CAELH,cAAc,CAAdA,cAFK,CAGLC,aAAa,CAAbA,aAHK,CAAP,CAKD,CAdD,6BAhCoBL,cAgCpB,MAhC2CZ,IAgC3C,MAjC0CG,IAiC1C,ulBAc0D,IAApDgB,CAAAA,cAAoD,MAApDA,cAAoD,CAApCH,cAAoC,MAApCA,cAAoC,CAApBC,aAAoB,MAApBA,aAAoB,CACxD,GAAIE,cAAJ,CAAoB,CAElB,GAAMC,CAAAA,SAAS,CAAG,mDAAuBT,aAAvB,CAAlB,CAEAA,aAAa,CAACI,KAAd,CAAsB,mEAA+B,CACnDK,SAAS,CAATA,SADmD,CAEnDJ,cAAc,CAAdA,cAFmD,CAGnDC,aAAa,CAAbA,aAHmD,CAInDb,IAAI,CAAJA,IAJmD,CAKnDO,aAAa,CAAEA,aAAa,CAACI,KALsB,CAA/B,CAAtB,CAOD,CACF,CA3BD,qCA9BoBM,8CA8BpB,eAxBmBV,aAwBnB,gCA7BwBW,8DA6BxB,MAzBIlB,IAyBJ,ynBA2BG,CAACJ,IAAD,CAAOG,IAAP,CA3BH,EA6BA,MAAO,CACLC,IAAI,CAAJA,IADK,CAELC,WAAW,CAAXA,WAFK,CAGLM,aAAa,CAAbA,aAHK,CAAP,CAKD","sourcesContent":["import React from \"react\";\nimport type Animated from \"react-native-reanimated\";\nimport { useSharedValue, useAnimatedReaction } from \"react-native-reanimated\";\n\nimport { computeNewIndexWhenDataChanges } from \"./computeNewIndexWhenDataChanges\";\nimport type { TInitializeCarouselProps } from \"./useInitProps\";\n\nimport { handlerOffsetDirection } from \"../utils/handlerOffsetDirection\";\n\ninterface ICommonVariables {\n size: number\n validLength: number\n handlerOffset: Animated.SharedValue<number>\n}\n\nexport function useCommonVariables(\n props: TInitializeCarouselProps<any>,\n): ICommonVariables {\n const {\n vertical,\n height,\n width,\n data,\n defaultIndex,\n defaultScrollOffsetValue,\n loop,\n } = props;\n const size = vertical ? height : width;\n const validLength = data.length - 1;\n const defaultHandlerOffsetValue = -Math.abs(defaultIndex * size);\n const _handlerOffset = useSharedValue<number>(defaultHandlerOffsetValue);\n const handlerOffset = defaultScrollOffsetValue ?? _handlerOffset;\n const prevDataLength = useSharedValue(data.length);\n\n React.useEffect(() => {\n handlerOffset.value = defaultHandlerOffsetValue;\n }, [vertical, handlerOffset, defaultHandlerOffsetValue]);\n\n useAnimatedReaction(() => {\n const previousLength = prevDataLength.value;\n const currentLength = data.length;\n const isLengthChanged = previousLength !== currentLength;\n const shouldComputed = isLengthChanged && loop;\n\n if (shouldComputed)\n prevDataLength.value = data.length;\n\n return {\n shouldComputed,\n previousLength,\n currentLength,\n };\n }, ({ shouldComputed, previousLength, currentLength }) => {\n if (shouldComputed) {\n // direction -> 1 | -1\n const direction = handlerOffsetDirection(handlerOffset);\n\n handlerOffset.value = computeNewIndexWhenDataChanges({\n direction,\n previousLength,\n currentLength,\n size,\n handlerOffset: handlerOffset.value,\n });\n }\n }, [data, loop]);\n\n return {\n size,\n validLength,\n handlerOffset,\n };\n}\n"]}
1
+ {"version":3,"sources":["useCommonVariables.ts"],"names":["useCommonVariables","props","vertical","height","width","dataLength","defaultIndex","defaultScrollOffsetValue","loop","size","validLength","defaultHandlerOffsetValue","Math","abs","_handlerOffset","handlerOffset","prevDataLength","React","useEffect","value","previousLength","currentLength","isLengthChanged","shouldComputed","direction","handlerOffsetDirection","computeNewIndexWhenDataChanges"],"mappings":"0LAAA,oDAEA,8DAEA,gFAGA,uEAQO,QAASA,CAAAA,kBAAT,CACLC,KADK,CAEa,CAClB,GACEC,CAAAA,QADF,CAQID,KARJ,CACEC,QADF,CAEEC,MAFF,CAQIF,KARJ,CAEEE,MAFF,CAGEC,KAHF,CAQIH,KARJ,CAGEG,KAHF,CAIEC,UAJF,CAQIJ,KARJ,CAIEI,UAJF,CAKEC,YALF,CAQIL,KARJ,CAKEK,YALF,CAMEC,wBANF,CAQIN,KARJ,CAMEM,wBANF,CAOEC,IAPF,CAQIP,KARJ,CAOEO,IAPF,CASA,GAAMC,CAAAA,IAAI,CAAGP,QAAQ,CAAGC,MAAH,CAAYC,KAAjC,CACA,GAAMM,CAAAA,WAAW,CAAGL,UAAU,CAAG,CAAjC,CACA,GAAMM,CAAAA,yBAAyB,CAAG,CAACC,IAAI,CAACC,GAAL,CAASP,YAAY,CAAGG,IAAxB,CAAnC,CACA,GAAMK,CAAAA,cAAc,CAAG,0CAAuBH,yBAAvB,CAAvB,CACA,GAAMI,CAAAA,aAAa,CAAGR,wBAAH,OAAGA,wBAAH,CAA+BO,cAAlD,CACA,GAAME,CAAAA,cAAc,CAAG,0CAAeX,UAAf,CAAvB,CAEAY,eAAMC,SAAN,CAAgB,UAAM,CACpBH,aAAa,CAACI,KAAd,CAAsBR,yBAAtB,CACD,CAFD,CAEG,CAACT,QAAD,CAAWa,aAAX,CAA0BJ,yBAA1B,CAFH,EAIA,8EAA0B,CACxB,GAAMS,CAAAA,cAAc,CAAGJ,cAAc,CAACG,KAAtC,CACA,GAAME,CAAAA,aAAa,CAAGhB,UAAtB,CACA,GAAMiB,CAAAA,eAAe,CAAGF,cAAc,GAAKC,aAA3C,CACA,GAAME,CAAAA,cAAc,CAAGD,eAAe,EAAId,IAA1C,CAEA,GAAIe,cAAJ,CACEP,cAAc,CAACG,KAAf,CAAuBd,UAAvB,CAEF,MAAO,CACLkB,cAAc,CAAdA,cADK,CAELH,cAAc,CAAdA,cAFK,CAGLC,aAAa,CAAbA,aAHK,CAAP,CAKD,CAdD,6BAhCoBL,cAgCpB,YAhC2CX,UAgC3C,MAjC0CG,IAiC1C,gnBAc0D,IAApDe,CAAAA,cAAoD,MAApDA,cAAoD,CAApCH,cAAoC,MAApCA,cAAoC,CAApBC,aAAoB,MAApBA,aAAoB,CACxD,GAAIE,cAAJ,CAAoB,CAElB,GAAMC,CAAAA,SAAS,CAAG,mDAAuBT,aAAvB,CAAlB,CAEAA,aAAa,CAACI,KAAd,CAAsB,mEAA+B,CACnDK,SAAS,CAATA,SADmD,CAEnDJ,cAAc,CAAdA,cAFmD,CAGnDC,aAAa,CAAbA,aAHmD,CAInDZ,IAAI,CAAJA,IAJmD,CAKnDM,aAAa,CAAEA,aAAa,CAACI,KALsB,CAA/B,CAAtB,CAOD,CACF,CA3BD,qCA9BoBM,8CA8BpB,eAxBmBV,aAwBnB,gCA7BwBW,8DA6BxB,MAzBIjB,IAyBJ,6oBA2BG,CAACJ,UAAD,CAAaG,IAAb,CA3BH,EA6BA,MAAO,CACLC,IAAI,CAAJA,IADK,CAELC,WAAW,CAAXA,WAFK,CAGLK,aAAa,CAAbA,aAHK,CAAP,CAKD","sourcesContent":["import React from \"react\";\nimport type Animated from \"react-native-reanimated\";\nimport { useSharedValue, useAnimatedReaction } from \"react-native-reanimated\";\n\nimport { computeNewIndexWhenDataChanges } from \"./computeNewIndexWhenDataChanges\";\nimport type { TInitializeCarouselProps } from \"./useInitProps\";\n\nimport { handlerOffsetDirection } from \"../utils/handlerOffsetDirection\";\n\ninterface ICommonVariables {\n size: number\n validLength: number\n handlerOffset: Animated.SharedValue<number>\n}\n\nexport function useCommonVariables(\n props: TInitializeCarouselProps<any>,\n): ICommonVariables {\n const {\n vertical,\n height,\n width,\n dataLength,\n defaultIndex,\n defaultScrollOffsetValue,\n loop,\n } = props;\n const size = vertical ? height : width;\n const validLength = dataLength - 1;\n const defaultHandlerOffsetValue = -Math.abs(defaultIndex * size);\n const _handlerOffset = useSharedValue<number>(defaultHandlerOffsetValue);\n const handlerOffset = defaultScrollOffsetValue ?? _handlerOffset;\n const prevDataLength = useSharedValue(dataLength);\n\n React.useEffect(() => {\n handlerOffset.value = defaultHandlerOffsetValue;\n }, [vertical, handlerOffset, defaultHandlerOffsetValue]);\n\n useAnimatedReaction(() => {\n const previousLength = prevDataLength.value;\n const currentLength = dataLength;\n const isLengthChanged = previousLength !== currentLength;\n const shouldComputed = isLengthChanged && loop;\n\n if (shouldComputed)\n prevDataLength.value = dataLength;\n\n return {\n shouldComputed,\n previousLength,\n currentLength,\n };\n }, ({ shouldComputed, previousLength, currentLength }) => {\n if (shouldComputed) {\n // direction -> 1 | -1\n const direction = handlerOffsetDirection(handlerOffset);\n\n handlerOffset.value = computeNewIndexWhenDataChanges({\n direction,\n previousLength,\n currentLength,\n size,\n handlerOffset: handlerOffset.value,\n });\n }\n }, [dataLength, loop]);\n\n return {\n size,\n validLength,\n handlerOffset,\n };\n}\n"]}