react-native-reanimated-carousel 2.3.6 → 2.3.7

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.
@@ -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 _reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated"));var _useCarouselController=require("./hooks/useCarouselController");var _useAutoPlay2=require("./hooks/useAutoPlay");var _usePropsErrorBoundary=require("./hooks/usePropsErrorBoundary");var _ScrollViewGesture=require("./ScrollViewGesture");var _useVisibleRanges=require("./hooks/useVisibleRanges");var _reactNative=require("react-native");var _BaseLayout=require("./layouts/BaseLayout");var _useLayoutConfig=require("./hooks/useLayoutConfig");var _useInitProps=require("./hooks/useInitProps");var _store=require("./store");var _useCommonVariables=require("./hooks/useCommonVariables");var _useOnProgressChange=require("./hooks/useOnProgressChange");var _computedWithAutoFillData=require("./utils/computedWithAutoFillData");var _this=this,_jsxFileName="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/Carousel.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;}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 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,handlerOffsetX=commonVariables.handlerOffsetX;var dataLength=data.length;var offsetX=(0,_reactNativeReanimated.useDerivedValue)(function(){var _f=function _f(){var totalSize=size*dataLength;var x=handlerOffsetX.value%totalSize;if(!loop){return handlerOffsetX.value;}return isNaN(x)?0:x;};_f._closure={size:size,dataLength:dataLength,handlerOffsetX:handlerOffsetX,loop:loop};_f.asString="function _f(){const{size,dataLength,handlerOffsetX,loop}=jsThis._closure;{const totalSize=size*dataLength;const x=handlerOffsetX.value%totalSize;if(!loop){return handlerOffsetX.value;}return isNaN(x)?0:x;}}";_f.__workletHash=17456063948631;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/Carousel.tsx (53:40)";global.__reanimatedWorkletInit(_f);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,handlerOffsetX:handlerOffsetX,length:data.length,disable:!data.length,withAnimation:withAnimation,originalLength:data.length,defaultIndex:defaultIndex,onScrollEnd:function onScrollEnd(){return(0,_reactNativeReanimated.runOnJS)(_onScrollEnd)();},onScrollBegin:function onScrollBegin(){return!!_onScrollBegin&&(0,_reactNativeReanimated.runOnJS)(_onScrollBegin)();},onChange:function onChange(i){return!!onSnapToItem&&(0,_reactNativeReanimated.runOnJS)(onSnapToItem)(i);},duration:scrollAnimationDuration});var next=carouselController.next,prev=carouselController.prev,sharedPreIndex=carouselController.sharedPreIndex,sharedIndex=carouselController.sharedIndex,computedIndex=carouselController.computedIndex,getCurrentIndex=carouselController.getCurrentIndex;var _useAutoPlay=(0,_useAutoPlay2.useAutoPlay)({autoPlay:autoPlay,autoPlayInterval:autoPlayInterval,autoPlayReverse:autoPlayReverse,carouselController:carouselController}),start=_useAutoPlay.start,pause=_useAutoPlay.pause;var _onScrollEnd=_react.default.useCallback(function(){computedIndex();onScrollEnd==null?void 0:onScrollEnd(sharedPreIndex.current,sharedIndex.current);},[sharedPreIndex,sharedIndex,computedIndex,onScrollEnd]);var scrollViewGestureOnScrollBegin=_react.default.useCallback(function(){pause();_onScrollBegin==null?void 0:_onScrollBegin();},[_onScrollBegin,pause]);var scrollViewGestureOnScrollEnd=_react.default.useCallback(function(){start();_onScrollEnd();},[_onScrollEnd,start]);var scrollViewGestureOnTouchBegin=_react.default.useCallback(pause,[pause]);var scrollViewGestureOnTouchEnd=_react.default.useCallback(start,[start]);var goToIndex=_react.default.useCallback(function(i,animated){carouselController.to(i,animated);},[carouselController]);_react.default.useImperativeHandle(ref,function(){return{next:next,prev:prev,getCurrentIndex:getCurrentIndex,goToIndex:goToIndex,scrollTo:carouselController.scrollTo};},[getCurrentIndex,goToIndex,next,prev,carouselController.scrollTo]);var visibleRanges=(0,_useVisibleRanges.useVisibleRanges)({total:data.length,viewSize:size,translation:handlerOffsetX,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,handlerOffsetX:offsetX,visibleRanges:visibleRanges,animationStyle:customAnimation||layoutConfig,__self:_this,__source:{fileName:_jsxFileName,lineNumber:167,columnNumber:21}},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:197,columnNumber:13}},_react.default.createElement(_reactNative.View,{style:[styles.container,{width:width||'100%',height:height||'100%'}],__self:_this,__source:{fileName:_jsxFileName,lineNumber:198,columnNumber:17}},_react.default.createElement(_ScrollViewGesture.ScrollViewGesture,{size:size,translation:handlerOffsetX,onScrollBegin:scrollViewGestureOnScrollBegin,onScrollEnd:scrollViewGestureOnScrollEnd,onTouchBegin:scrollViewGestureOnTouchBegin,onTouchEnd:scrollViewGestureOnTouchEnd,__self:_this,__source:{fileName:_jsxFileName,lineNumber:204,columnNumber:21}},_react.default.createElement(_reactNativeReanimated.default.View,{key:mode,style:[styles.container,{width:width||'100%',height:height||'100%'},style,vertical?styles.itemsVertical:styles.itemsHorizontal],__self:_this,__source:{fileName:_jsxFileName,lineNumber:212,columnNumber:25}},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 _reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated"));var _useCarouselController=require("./hooks/useCarouselController");var _useAutoPlay2=require("./hooks/useAutoPlay");var _usePropsErrorBoundary=require("./hooks/usePropsErrorBoundary");var _ScrollViewGesture=require("./ScrollViewGesture");var _useVisibleRanges=require("./hooks/useVisibleRanges");var _reactNative=require("react-native");var _BaseLayout=require("./layouts/BaseLayout");var _useLayoutConfig=require("./hooks/useLayoutConfig");var _useInitProps=require("./hooks/useInitProps");var _store=require("./store");var _useCommonVariables=require("./hooks/useCommonVariables");var _useOnProgressChange=require("./hooks/useOnProgressChange");var _computedWithAutoFillData=require("./utils/computedWithAutoFillData");var _this=this,_jsxFileName="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/Carousel.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;}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 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,handlerOffsetX=commonVariables.handlerOffsetX;var dataLength=data.length;var offsetX=(0,_reactNativeReanimated.useDerivedValue)(function(){var _f=function _f(){var totalSize=size*dataLength;var x=handlerOffsetX.value%totalSize;if(!loop){return handlerOffsetX.value;}return isNaN(x)?0:x;};_f._closure={size:size,dataLength:dataLength,handlerOffsetX:handlerOffsetX,loop:loop};_f.asString="function _f(){const{size,dataLength,handlerOffsetX,loop}=jsThis._closure;{const totalSize=size*dataLength;const x=handlerOffsetX.value%totalSize;if(!loop){return handlerOffsetX.value;}return isNaN(x)?0:x;}}";_f.__workletHash=17456063948631;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/Carousel.tsx (53:40)";global.__reanimatedWorkletInit(_f);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,handlerOffsetX:handlerOffsetX,length:data.length,disable:!data.length,withAnimation:withAnimation,originalLength:data.length,defaultIndex:defaultIndex,onScrollEnd:function onScrollEnd(){return(0,_reactNativeReanimated.runOnJS)(_onScrollEnd)();},onScrollBegin:function onScrollBegin(){return!!_onScrollBegin&&(0,_reactNativeReanimated.runOnJS)(_onScrollBegin)();},onChange:function onChange(i){return!!onSnapToItem&&(0,_reactNativeReanimated.runOnJS)(onSnapToItem)(i);},duration:scrollAnimationDuration});var next=carouselController.next,prev=carouselController.prev,sharedPreIndex=carouselController.sharedPreIndex,sharedIndex=carouselController.sharedIndex,computedIndex=carouselController.computedIndex,getCurrentIndex=carouselController.getCurrentIndex;var _useAutoPlay=(0,_useAutoPlay2.useAutoPlay)({autoPlay:autoPlay,autoPlayInterval:autoPlayInterval,autoPlayReverse:autoPlayReverse,carouselController:carouselController}),start=_useAutoPlay.start,pause=_useAutoPlay.pause;var _onScrollEnd=_react.default.useCallback(function(){computedIndex();onScrollEnd==null?void 0:onScrollEnd(sharedPreIndex.current,sharedIndex.current);},[sharedPreIndex,sharedIndex,computedIndex,onScrollEnd]);var scrollViewGestureOnScrollBegin=_react.default.useCallback(function(){pause();_onScrollBegin==null?void 0:_onScrollBegin();},[_onScrollBegin,pause]);var scrollViewGestureOnScrollEnd=_react.default.useCallback(function(){start();_onScrollEnd();},[_onScrollEnd,start]);var scrollViewGestureOnTouchBegin=_react.default.useCallback(pause,[pause]);var scrollViewGestureOnTouchEnd=_react.default.useCallback(start,[start]);var goToIndex=_react.default.useCallback(function(i,animated){carouselController.to(i,animated);},[carouselController]);_react.default.useImperativeHandle(ref,function(){return{next:next,prev:prev,getCurrentIndex:getCurrentIndex,goToIndex:goToIndex,scrollTo:carouselController.scrollTo};},[getCurrentIndex,goToIndex,next,prev,carouselController.scrollTo]);var visibleRanges=(0,_useVisibleRanges.useVisibleRanges)({total:data.length,viewSize:size,translation:handlerOffsetX,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,handlerOffsetX:offsetX,visibleRanges:visibleRanges,animationStyle:customAnimation||layoutConfig,__self:_this,__source:{fileName:_jsxFileName,lineNumber:167,columnNumber:21}},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:197,columnNumber:13}},_react.default.createElement(_reactNative.View,{style:[styles.container,{width:width||'100%',height:height||'100%'},style],__self:_this,__source:{fileName:_jsxFileName,lineNumber:198,columnNumber:17}},_react.default.createElement(_ScrollViewGesture.ScrollViewGesture,{size:size,translation:handlerOffsetX,onScrollBegin:scrollViewGestureOnScrollBegin,onScrollEnd:scrollViewGestureOnScrollEnd,onTouchBegin:scrollViewGestureOnTouchBegin,onTouchEnd:scrollViewGestureOnTouchEnd,__self:_this,__source:{fileName:_jsxFileName,lineNumber:205,columnNumber:21}},_react.default.createElement(_reactNativeReanimated.default.View,{key:mode,style:[styles.container,{width:width||'100%',height:height||'100%'},style,vertical?styles.itemsVertical:styles.itemsHorizontal],__self:_this,__source:{fileName:_jsxFileName,lineNumber:213,columnNumber:25}},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","data","rawData","loop","autoFillData","mode","style","width","height","vertical","autoPlay","windowSize","autoPlayReverse","autoPlayInterval","scrollAnimationDuration","withAnimation","renderItem","onScrollEnd","onSnapToItem","onScrollBegin","onProgressChange","customAnimation","defaultIndex","commonVariables","size","handlerOffsetX","dataLength","length","offsetX","totalSize","x","value","isNaN","carouselController","disable","originalLength","_onScrollEnd","onChange","i","duration","next","prev","sharedPreIndex","sharedIndex","computedIndex","getCurrentIndex","start","pause","useCallback","current","scrollViewGestureOnScrollBegin","scrollViewGestureOnScrollEnd","scrollViewGestureOnTouchBegin","scrollViewGestureOnTouchEnd","goToIndex","animated","to","useImperativeHandle","scrollTo","visibleRanges","total","viewSize","translation","layoutConfig","renderLayout","item","realIndex","index","animationValue","common","styles","container","itemsVertical","itemsHorizontal","map","StyleSheet","create","overflow","flexDirection"],"mappings":"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","sourcesContent":["import React from 'react';\nimport Animated, { runOnJS, useDerivedValue } from 'react-native-reanimated';\n\nimport { useCarouselController } from './hooks/useCarouselController';\nimport { useAutoPlay } from './hooks/useAutoPlay';\nimport { usePropsErrorBoundary } from './hooks/usePropsErrorBoundary';\nimport { ScrollViewGesture } from './ScrollViewGesture';\nimport { useVisibleRanges } from './hooks/useVisibleRanges';\n\nimport type { ICarouselInstance, TCarouselProps } from './types';\nimport { StyleSheet, View } from 'react-native';\nimport { BaseLayout } from './layouts/BaseLayout';\nimport { useLayoutConfig } from './hooks/useLayoutConfig';\nimport { useInitProps } from './hooks/useInitProps';\nimport { CTX } from './store';\nimport { useCommonVariables } from './hooks/useCommonVariables';\nimport { useOnProgressChange } from './hooks/useOnProgressChange';\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 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, handlerOffsetX } = commonVariables;\n const dataLength = data.length;\n\n const offsetX = useDerivedValue(() => {\n const totalSize = size * dataLength;\n const x = handlerOffsetX.value % totalSize;\n\n if (!loop) {\n return handlerOffsetX.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 handlerOffsetX,\n length: data.length,\n disable: !data.length,\n withAnimation,\n originalLength: data.length,\n defaultIndex,\n onScrollEnd: () => runOnJS(_onScrollEnd)(),\n onScrollBegin: () => !!onScrollBegin && runOnJS(onScrollBegin)(),\n onChange: (i) => !!onSnapToItem && runOnJS(onSnapToItem)(i),\n duration: scrollAnimationDuration,\n });\n\n const {\n next,\n prev,\n sharedPreIndex,\n sharedIndex,\n computedIndex,\n getCurrentIndex,\n } = carouselController;\n\n const { start, pause } = useAutoPlay({\n autoPlay,\n autoPlayInterval,\n autoPlayReverse,\n carouselController,\n });\n\n const _onScrollEnd = React.useCallback(() => {\n computedIndex();\n onScrollEnd?.(sharedPreIndex.current, sharedIndex.current);\n }, [sharedPreIndex, sharedIndex, computedIndex, onScrollEnd]);\n\n const scrollViewGestureOnScrollBegin = React.useCallback(() => {\n pause();\n onScrollBegin?.();\n }, [onScrollBegin, pause]);\n\n const scrollViewGestureOnScrollEnd = React.useCallback(() => {\n start();\n _onScrollEnd();\n }, [_onScrollEnd, start]);\n\n const scrollViewGestureOnTouchBegin = React.useCallback(pause, [pause]);\n\n const scrollViewGestureOnTouchEnd = React.useCallback(start, [start]);\n\n const goToIndex = React.useCallback(\n (i: number, animated?: boolean) => {\n carouselController.to(i, animated);\n },\n [carouselController]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n next,\n prev,\n getCurrentIndex,\n goToIndex,\n scrollTo: carouselController.scrollTo,\n }),\n [\n getCurrentIndex,\n goToIndex,\n next,\n prev,\n carouselController.scrollTo,\n ]\n );\n\n const visibleRanges = useVisibleRanges({\n total: data.length,\n viewSize: size,\n translation: handlerOffsetX,\n windowSize,\n });\n\n const layoutConfig = useLayoutConfig({ ...props, size });\n\n const renderLayout = React.useCallback(\n (item: any, i: number) => {\n 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 handlerOffsetX={offsetX}\n visibleRanges={visibleRanges}\n animationStyle={customAnimation || layoutConfig}\n >\n {({ animationValue }) =>\n renderItem({\n item,\n index: realIndex,\n animationValue,\n })\n }\n </BaseLayout>\n );\n },\n [\n 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 <View\n style={[\n styles.container,\n { width: width || '100%', height: height || '100%' },\n ]}\n >\n <ScrollViewGesture\n size={size}\n translation={handlerOffsetX}\n onScrollBegin={scrollViewGestureOnScrollBegin}\n onScrollEnd={scrollViewGestureOnScrollEnd}\n onTouchBegin={scrollViewGestureOnTouchBegin}\n onTouchEnd={scrollViewGestureOnTouchEnd}\n >\n <Animated.View\n key={mode}\n style={[\n styles.container,\n {\n width: width || '100%',\n height: height || '100%',\n },\n style,\n vertical\n ? styles.itemsVertical\n : styles.itemsHorizontal,\n ]}\n >\n {data.map(renderLayout)}\n </Animated.View>\n </ScrollViewGesture>\n </View>\n </CTX.Provider>\n );\n }\n);\n\nexport default Carousel as <T extends any>(\n props: React.PropsWithChildren<TCarouselProps<T>>\n) => React.ReactElement;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n itemsHorizontal: {\n flexDirection: 'row',\n },\n itemsVertical: {\n flexDirection: 'column',\n },\n});\n"]}
1
+ {"version":3,"sources":["Carousel.tsx"],"names":["Carousel","React","forwardRef","_props","ref","props","data","rawData","loop","autoFillData","mode","style","width","height","vertical","autoPlay","windowSize","autoPlayReverse","autoPlayInterval","scrollAnimationDuration","withAnimation","renderItem","onScrollEnd","onSnapToItem","onScrollBegin","onProgressChange","customAnimation","defaultIndex","commonVariables","size","handlerOffsetX","dataLength","length","offsetX","totalSize","x","value","isNaN","carouselController","disable","originalLength","_onScrollEnd","onChange","i","duration","next","prev","sharedPreIndex","sharedIndex","computedIndex","getCurrentIndex","start","pause","useCallback","current","scrollViewGestureOnScrollBegin","scrollViewGestureOnScrollEnd","scrollViewGestureOnTouchBegin","scrollViewGestureOnTouchEnd","goToIndex","animated","to","useImperativeHandle","scrollTo","visibleRanges","total","viewSize","translation","layoutConfig","renderLayout","item","realIndex","index","animationValue","common","styles","container","itemsVertical","itemsHorizontal","map","StyleSheet","create","overflow","flexDirection"],"mappings":"iQAAA,oDACA,uFAEA,oEACA,iDACA,oEACA,sDACA,0DAGA,yCACA,gDACA,wDACA,kDACA,8BACA,8DACA,gEACA,0E,o3DAEA,GAAMA,CAAAA,QAAQ,CAAGC,eAAMC,UAAN,CACb,SAACC,MAAD,CAASC,GAAT,CAAiB,CACb,GAAMC,CAAAA,KAAK,CAAG,+BAAaF,MAAb,CAAd,CAEA,GACIG,CAAAA,IADJ,CAuBID,KAvBJ,CACIC,IADJ,CAEIC,OAFJ,CAuBIF,KAvBJ,CAEIE,OAFJ,CAGIC,IAHJ,CAuBIH,KAvBJ,CAGIG,IAHJ,CAIIC,YAJJ,CAuBIJ,KAvBJ,CAIII,YAJJ,CAKIC,IALJ,CAuBIL,KAvBJ,CAKIK,IALJ,CAMIC,KANJ,CAuBIN,KAvBJ,CAMIM,KANJ,CAOIC,KAPJ,CAuBIP,KAvBJ,CAOIO,KAPJ,CAQIC,MARJ,CAuBIR,KAvBJ,CAQIQ,MARJ,CASIC,QATJ,CAuBIT,KAvBJ,CASIS,QATJ,CAUIC,QAVJ,CAuBIV,KAvBJ,CAUIU,QAVJ,CAWIC,UAXJ,CAuBIX,KAvBJ,CAWIW,UAXJ,CAYIC,eAZJ,CAuBIZ,KAvBJ,CAYIY,eAZJ,CAaIC,gBAbJ,CAuBIb,KAvBJ,CAaIa,gBAbJ,CAcIC,uBAdJ,CAuBId,KAvBJ,CAcIc,uBAdJ,CAeIC,aAfJ,CAuBIf,KAvBJ,CAeIe,aAfJ,CAgBIC,UAhBJ,CAuBIhB,KAvBJ,CAgBIgB,UAhBJ,CAiBIC,WAjBJ,CAuBIjB,KAvBJ,CAiBIiB,WAjBJ,CAkBIC,YAlBJ,CAuBIlB,KAvBJ,CAkBIkB,YAlBJ,CAmBIC,cAnBJ,CAuBInB,KAvBJ,CAmBImB,aAnBJ,CAoBIC,gBApBJ,CAuBIpB,KAvBJ,CAoBIoB,gBApBJ,CAqBIC,eArBJ,CAuBIrB,KAvBJ,CAqBIqB,eArBJ,CAsBIC,YAtBJ,CAuBItB,KAvBJ,CAsBIsB,YAtBJ,CAyBA,GAAMC,CAAAA,eAAe,CAAG,2CAAmBvB,KAAnB,CAAxB,CACA,GAAQwB,CAAAA,IAAR,CAAiCD,eAAjC,CAAQC,IAAR,CAAcC,cAAd,CAAiCF,eAAjC,CAAcE,cAAd,CACA,GAAMC,CAAAA,UAAU,CAAGzB,IAAI,CAAC0B,MAAxB,CAEA,GAAMC,CAAAA,OAAO,CAAG,0EAAsB,CAClC,GAAMC,CAAAA,SAAS,CAAGL,IAAI,CAAGE,UAAzB,CACA,GAAMI,CAAAA,CAAC,CAAGL,cAAc,CAACM,KAAf,CAAuBF,SAAjC,CAEA,GAAI,CAAC1B,IAAL,CAAW,CACP,MAAOsB,CAAAA,cAAc,CAACM,KAAtB,CACH,CACD,MAAOC,CAAAA,KAAK,CAACF,CAAD,CAAL,CAAW,CAAX,CAAeA,CAAtB,CACH,CARe,mBAlDJN,IAkDI,YAlDGE,UAkDH,gBA9CbD,cA8Ca,MA/CjBtB,IA+CiB,kZAQb,CAACA,IAAD,CAAOqB,IAAP,CAAaE,UAAb,CARa,CAAhB,CAUA,iDAAsB1B,KAAtB,EACA,6CAAoB,CAChBI,YAAY,CAAZA,YADgB,CAEhBD,IAAI,CAAJA,IAFgB,CAGhBqB,IAAI,CAAJA,IAHgB,CAIhBI,OAAO,CAAPA,OAJgB,CAKhB1B,OAAO,CAAPA,OALgB,CAMhBkB,gBAAgB,CAAhBA,gBANgB,CAApB,EASA,GAAMa,CAAAA,kBAAkB,CAAG,iDAAsB,CAC7C9B,IAAI,CAAJA,IAD6C,CAE7CqB,IAAI,CAAJA,IAF6C,CAG7CC,cAAc,CAAdA,cAH6C,CAI7CE,MAAM,CAAE1B,IAAI,CAAC0B,MAJgC,CAK7CO,OAAO,CAAE,CAACjC,IAAI,CAAC0B,MAL8B,CAM7CZ,aAAa,CAAbA,aAN6C,CAO7CoB,cAAc,CAAElC,IAAI,CAAC0B,MAPwB,CAQ7CL,YAAY,CAAZA,YAR6C,CAS7CL,WAAW,CAAE,6BAAM,mCAAQmB,YAAR,GAAN,EATgC,CAU7CjB,aAAa,CAAE,+BAAM,CAAC,CAACA,cAAF,EAAmB,mCAAQA,cAAR,GAAzB,EAV8B,CAW7CkB,QAAQ,CAAE,kBAACC,CAAD,QAAO,CAAC,CAACpB,YAAF,EAAkB,mCAAQA,YAAR,EAAsBoB,CAAtB,CAAzB,EAXmC,CAY7CC,QAAQ,CAAEzB,uBAZmC,CAAtB,CAA3B,CAeA,GACI0B,CAAAA,IADJ,CAOIP,kBAPJ,CACIO,IADJ,CAEIC,IAFJ,CAOIR,kBAPJ,CAEIQ,IAFJ,CAGIC,cAHJ,CAOIT,kBAPJ,CAGIS,cAHJ,CAIIC,WAJJ,CAOIV,kBAPJ,CAIIU,WAJJ,CAKIC,aALJ,CAOIX,kBAPJ,CAKIW,aALJ,CAMIC,eANJ,CAOIZ,kBAPJ,CAMIY,eANJ,CASA,iBAAyB,8BAAY,CACjCnC,QAAQ,CAARA,QADiC,CAEjCG,gBAAgB,CAAhBA,gBAFiC,CAGjCD,eAAe,CAAfA,eAHiC,CAIjCqB,kBAAkB,CAAlBA,kBAJiC,CAAZ,CAAzB,CAAQa,KAAR,cAAQA,KAAR,CAAeC,KAAf,cAAeA,KAAf,CAOA,GAAMX,CAAAA,YAAY,CAAGxC,eAAMoD,WAAN,CAAkB,UAAM,CACzCJ,aAAa,GACb3B,WAAW,MAAX,QAAAA,WAAW,CAAGyB,cAAc,CAACO,OAAlB,CAA2BN,WAAW,CAACM,OAAvC,CAAX,CACH,CAHoB,CAGlB,CAACP,cAAD,CAAiBC,WAAjB,CAA8BC,aAA9B,CAA6C3B,WAA7C,CAHkB,CAArB,CAKA,GAAMiC,CAAAA,8BAA8B,CAAGtD,eAAMoD,WAAN,CAAkB,UAAM,CAC3DD,KAAK,GACL5B,cAAa,MAAb,QAAAA,cAAa,GAChB,CAHsC,CAGpC,CAACA,cAAD,CAAgB4B,KAAhB,CAHoC,CAAvC,CAKA,GAAMI,CAAAA,4BAA4B,CAAGvD,eAAMoD,WAAN,CAAkB,UAAM,CACzDF,KAAK,GACLV,YAAY,GACf,CAHoC,CAGlC,CAACA,YAAD,CAAeU,KAAf,CAHkC,CAArC,CAKA,GAAMM,CAAAA,6BAA6B,CAAGxD,eAAMoD,WAAN,CAAkBD,KAAlB,CAAyB,CAACA,KAAD,CAAzB,CAAtC,CAEA,GAAMM,CAAAA,2BAA2B,CAAGzD,eAAMoD,WAAN,CAAkBF,KAAlB,CAAyB,CAACA,KAAD,CAAzB,CAApC,CAEA,GAAMQ,CAAAA,SAAS,CAAG1D,eAAMoD,WAAN,CACd,SAACV,CAAD,CAAYiB,QAAZ,CAAmC,CAC/BtB,kBAAkB,CAACuB,EAAnB,CAAsBlB,CAAtB,CAAyBiB,QAAzB,EACH,CAHa,CAId,CAACtB,kBAAD,CAJc,CAAlB,CAOArC,eAAM6D,mBAAN,CACI1D,GADJ,CAEI,iBAAO,CACHyC,IAAI,CAAJA,IADG,CAEHC,IAAI,CAAJA,IAFG,CAGHI,eAAe,CAAfA,eAHG,CAIHS,SAAS,CAATA,SAJG,CAKHI,QAAQ,CAAEzB,kBAAkB,CAACyB,QAL1B,CAAP,EAFJ,CASI,CACIb,eADJ,CAEIS,SAFJ,CAGId,IAHJ,CAIIC,IAJJ,CAKIR,kBAAkB,CAACyB,QALvB,CATJ,EAkBA,GAAMC,CAAAA,aAAa,CAAG,uCAAiB,CACnCC,KAAK,CAAE3D,IAAI,CAAC0B,MADuB,CAEnCkC,QAAQ,CAAErC,IAFyB,CAGnCsC,WAAW,CAAErC,cAHsB,CAInCd,UAAU,CAAVA,UAJmC,CAAjB,CAAtB,CAOA,GAAMoD,CAAAA,YAAY,CAAG,oEAAqB/D,KAArB,MAA4BwB,IAAI,CAAJA,IAA5B,GAArB,CAEA,GAAMwC,CAAAA,YAAY,CAAGpE,eAAMoD,WAAN,CACjB,SAACiB,IAAD,CAAY3B,CAAZ,CAA0B,CACtB,GAAM4B,CAAAA,SAAS,CAAG,gEAAkC,CAChDC,KAAK,CAAE7B,CADyC,CAEhDZ,UAAU,CAAExB,OAAO,CAACyB,MAF4B,CAGhDxB,IAAI,CAAJA,IAHgD,CAIhDC,YAAY,CAAZA,YAJgD,CAAlC,CAAlB,CAOA,MACI,8BAAC,sBAAD,EACI,GAAG,CAAEkC,CADT,CAEI,KAAK,CAAEA,CAFX,CAGI,cAAc,CAAEV,OAHpB,CAII,aAAa,CAAE+B,aAJnB,CAKI,cAAc,CAAEtC,eAAe,EAAI0C,YALvC,+EAOK,kBAAGK,CAAAA,cAAH,MAAGA,cAAH,OACGpD,CAAAA,UAAU,CAAC,CACPiD,IAAI,CAAJA,IADO,CAEPE,KAAK,CAAED,SAFA,CAGPE,cAAc,CAAdA,cAHO,CAAD,CADb,EAPL,CADJ,CAiBH,CA1BgB,CA2BjB,CACIjE,IADJ,CAEID,OAFJ,CAGI0B,OAHJ,CAII+B,aAJJ,CAKIvD,YALJ,CAMIY,UANJ,CAOI+C,YAPJ,CAQI1C,eARJ,CA3BiB,CAArB,CAuCA,MACI,8BAAC,UAAD,CAAK,QAAL,EAAc,KAAK,CAAE,CAAErB,KAAK,CAALA,KAAF,CAASqE,MAAM,CAAE9C,eAAjB,CAArB,+EACI,6BAAC,iBAAD,EACI,KAAK,CAAE,CACH+C,MAAM,CAACC,SADJ,CAEH,CAAEhE,KAAK,CAAEA,KAAK,EAAI,MAAlB,CAA0BC,MAAM,CAAEA,MAAM,EAAI,MAA5C,CAFG,CAGHF,KAHG,CADX,+EAOI,6BAAC,oCAAD,EACI,IAAI,CAAEkB,IADV,CAEI,WAAW,CAAEC,cAFjB,CAGI,aAAa,CAAEyB,8BAHnB,CAII,WAAW,CAAEC,4BAJjB,CAKI,YAAY,CAAEC,6BALlB,CAMI,UAAU,CAAEC,2BANhB,+EAQI,6BAAC,8BAAD,CAAU,IAAV,EACI,GAAG,CAAEhD,IADT,CAEI,KAAK,CAAE,CACHiE,MAAM,CAACC,SADJ,CAEH,CACIhE,KAAK,CAAEA,KAAK,EAAI,MADpB,CAEIC,MAAM,CAAEA,MAAM,EAAI,MAFtB,CAFG,CAMHF,KANG,CAOHG,QAAQ,CACF6D,MAAM,CAACE,aADL,CAEFF,MAAM,CAACG,eATV,CAFX,+EAcKxE,IAAI,CAACyE,GAAL,CAASV,YAAT,CAdL,CARJ,CAPJ,CADJ,CADJ,CAqCH,CArNY,CAAjB,C,aAwNerE,Q,0BAIf,GAAM2E,CAAAA,MAAM,CAAGK,wBAAWC,MAAX,CAAkB,CAC7BL,SAAS,CAAE,CACPM,QAAQ,CAAE,QADH,CADkB,CAI7BJ,eAAe,CAAE,CACbK,aAAa,CAAE,KADF,CAJY,CAO7BN,aAAa,CAAE,CACXM,aAAa,CAAE,QADJ,CAPc,CAAlB,CAAf","sourcesContent":["import React from 'react';\nimport Animated, { runOnJS, useDerivedValue } from 'react-native-reanimated';\n\nimport { useCarouselController } from './hooks/useCarouselController';\nimport { useAutoPlay } from './hooks/useAutoPlay';\nimport { usePropsErrorBoundary } from './hooks/usePropsErrorBoundary';\nimport { ScrollViewGesture } from './ScrollViewGesture';\nimport { useVisibleRanges } from './hooks/useVisibleRanges';\n\nimport type { ICarouselInstance, TCarouselProps } from './types';\nimport { StyleSheet, View } from 'react-native';\nimport { BaseLayout } from './layouts/BaseLayout';\nimport { useLayoutConfig } from './hooks/useLayoutConfig';\nimport { useInitProps } from './hooks/useInitProps';\nimport { CTX } from './store';\nimport { useCommonVariables } from './hooks/useCommonVariables';\nimport { useOnProgressChange } from './hooks/useOnProgressChange';\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 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, handlerOffsetX } = commonVariables;\n const dataLength = data.length;\n\n const offsetX = useDerivedValue(() => {\n const totalSize = size * dataLength;\n const x = handlerOffsetX.value % totalSize;\n\n if (!loop) {\n return handlerOffsetX.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 handlerOffsetX,\n length: data.length,\n disable: !data.length,\n withAnimation,\n originalLength: data.length,\n defaultIndex,\n onScrollEnd: () => runOnJS(_onScrollEnd)(),\n onScrollBegin: () => !!onScrollBegin && runOnJS(onScrollBegin)(),\n onChange: (i) => !!onSnapToItem && runOnJS(onSnapToItem)(i),\n duration: scrollAnimationDuration,\n });\n\n const {\n next,\n prev,\n sharedPreIndex,\n sharedIndex,\n computedIndex,\n getCurrentIndex,\n } = carouselController;\n\n const { start, pause } = useAutoPlay({\n autoPlay,\n autoPlayInterval,\n autoPlayReverse,\n carouselController,\n });\n\n const _onScrollEnd = React.useCallback(() => {\n computedIndex();\n onScrollEnd?.(sharedPreIndex.current, sharedIndex.current);\n }, [sharedPreIndex, sharedIndex, computedIndex, onScrollEnd]);\n\n const scrollViewGestureOnScrollBegin = React.useCallback(() => {\n pause();\n onScrollBegin?.();\n }, [onScrollBegin, pause]);\n\n const scrollViewGestureOnScrollEnd = React.useCallback(() => {\n start();\n _onScrollEnd();\n }, [_onScrollEnd, start]);\n\n const scrollViewGestureOnTouchBegin = React.useCallback(pause, [pause]);\n\n const scrollViewGestureOnTouchEnd = React.useCallback(start, [start]);\n\n const goToIndex = React.useCallback(\n (i: number, animated?: boolean) => {\n carouselController.to(i, animated);\n },\n [carouselController]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n next,\n prev,\n getCurrentIndex,\n goToIndex,\n scrollTo: carouselController.scrollTo,\n }),\n [\n getCurrentIndex,\n goToIndex,\n next,\n prev,\n carouselController.scrollTo,\n ]\n );\n\n const visibleRanges = useVisibleRanges({\n total: data.length,\n viewSize: size,\n translation: handlerOffsetX,\n windowSize,\n });\n\n const layoutConfig = useLayoutConfig({ ...props, size });\n\n const renderLayout = React.useCallback(\n (item: any, i: number) => {\n 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 handlerOffsetX={offsetX}\n visibleRanges={visibleRanges}\n animationStyle={customAnimation || layoutConfig}\n >\n {({ animationValue }) =>\n renderItem({\n item,\n index: realIndex,\n animationValue,\n })\n }\n </BaseLayout>\n );\n },\n [\n 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 <View\n style={[\n styles.container,\n { width: width || '100%', height: height || '100%' },\n style,\n ]}\n >\n <ScrollViewGesture\n size={size}\n translation={handlerOffsetX}\n onScrollBegin={scrollViewGestureOnScrollBegin}\n onScrollEnd={scrollViewGestureOnScrollEnd}\n onTouchBegin={scrollViewGestureOnTouchBegin}\n onTouchEnd={scrollViewGestureOnTouchEnd}\n >\n <Animated.View\n key={mode}\n style={[\n styles.container,\n {\n width: width || '100%',\n height: height || '100%',\n },\n style,\n vertical\n ? styles.itemsVertical\n : styles.itemsHorizontal,\n ]}\n >\n {data.map(renderLayout)}\n </Animated.View>\n </ScrollViewGesture>\n </View>\n </CTX.Provider>\n );\n }\n);\n\nexport default Carousel as <T extends any>(\n props: React.PropsWithChildren<TCarouselProps<T>>\n) => React.ReactElement;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n itemsHorizontal: {\n flexDirection: 'row',\n },\n itemsVertical: {\n flexDirection: 'column',\n },\n});\n"]}
@@ -1,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 _reactNative=require("react-native");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/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,style=_React$useContext$pro.style,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 translation=props.translation,size=props.size,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/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (64:41)";global.__reanimatedWorkletInit(_f);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 callback=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=9122154549195;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (72:29)";global.__reanimatedWorkletInit(_f);return _f;}();var defaultWithAnimation={type:'timing',config:{duration:scrollAnimationDuration,easing:_constants.Easing.easeOutQuart}};return(0,_dealWithAnimation.dealWithAnimation)(withAnimation!=null?withAnimation:defaultWithAnimation)(toValue,callback);};_f._closure={runOnJS:_reactNativeReanimated.runOnJS,scrollAnimationDuration:scrollAnimationDuration,Easing:{easeOutQuart:_constants.Easing.easeOutQuart},dealWithAnimation:_dealWithAnimation.dealWithAnimation,withAnimation:withAnimation};_f.asString="function _f(toValue,onFinished){const{runOnJS,scrollAnimationDuration,Easing,dealWithAnimation,withAnimation}=jsThis._closure;{var _withAnimation;const callback=function(isFinished){'worklet';if(isFinished){onFinished&&runOnJS(onFinished)();}};const defaultWithAnimation={type:'timing',config:{duration:scrollAnimationDuration,easing:Easing.easeOutQuart}};return dealWithAnimation((_withAnimation=withAnimation)!==null&&_withAnimation!==void 0?_withAnimation:defaultWithAnimation)(toValue,callback);}}";_f.__workletHash=399949545942;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (70:8)";global.__reanimatedWorkletInit(_f);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 page=Math.round(-translation.value/size);var velocityPage=Math.round(-(translation.value+scrollEndVelocity.value)/size);var finalPage=Math.min(page+1,Math.max(page-1,velocityPage));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,infinite:infinite,maxPage:maxPage};_f.asString="function _f(onFinished){const{translation,scrollEndVelocity,pagingEnabled,snapEnabled,size,_withSpring,withDecay,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 page=Math.round(-translation.value/size);const velocityPage=Math.round(-(translation.value+scrollEndVelocity.value)/size);let finalPage=Math.min(page+1,Math.max(page-1,velocityPage));if(!infinite){finalPage=Math.min(maxPage-1,Math.max(0,finalPage));}translation.value=_withSpring(-finalPage*size,onFinished);}}";_f.__workletHash=6617882707805;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (96:8)";global.__reanimatedWorkletInit(_f);return _f;}(),[infinite,_withSpring,translation,scrollEndVelocity,size,maxPage,pagingEnabled,snapEnabled]);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/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (140:8)";global.__reanimatedWorkletInit(_f);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/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (155:12)";global.__reanimatedWorkletInit(_f);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/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (150:42)";global.__reanimatedWorkletInit(_f);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));return;}}};_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));return;}}}}";_f.__workletHash=3458376770899;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (159:44)";global.__reanimatedWorkletInit(_f);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/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (198:8)";global.__reanimatedWorkletInit(_f);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=10686939088248;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (199:8)";global.__reanimatedWorkletInit(_f);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/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (212:21)";global.__reanimatedWorkletInit(_f);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;let 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=10275621069851;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (219:22)";global.__reanimatedWorkletInit(_f);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=8095479445863;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (243:19)";global.__reanimatedWorkletInit(_f);return _f;}()},[pagingEnabled,isHorizontal.value,infinite,maxPage,size,snapEnabled,onScrollBegin,onScrollEnd]);var directionStyle=_react.default.useMemo(function(){return vertical?styles.contentHorizontal:styles.contentVertical;},[vertical]);return _react.default.createElement(_reactNativeReanimated.default.View,{style:[styles.container,directionStyle,style],onTouchStart:onTouchBegin,onTouchEnd:onTouchEnd,__self:_this,__source:{fileName:_jsxFileName,lineNumber:276,columnNumber:9}},_react.default.createElement(_reactNativeGestureHandler.PanGestureHandler,(0,_extends2.default)({},panGestureHandlerProps,{enabled:enabled,onGestureEvent:panGestureEventHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:281,columnNumber:13}}),props.children));};var ScrollViewGesture=IScrollViewGesture;exports.ScrollViewGesture=ScrollViewGesture;var styles=_reactNative.StyleSheet.create({container:{flex:1,overflow:'hidden'},contentVertical:{flexDirection:'column'},contentHorizontal:{flexDirection:'row'}});
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 _reactNative=require("react-native");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/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 translation=props.translation,size=props.size,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/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (63:41)";global.__reanimatedWorkletInit(_f);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 callback=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=9122154549195;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (71:29)";global.__reanimatedWorkletInit(_f);return _f;}();var defaultWithAnimation={type:'timing',config:{duration:scrollAnimationDuration,easing:_constants.Easing.easeOutQuart}};return(0,_dealWithAnimation.dealWithAnimation)(withAnimation!=null?withAnimation:defaultWithAnimation)(toValue,callback);};_f._closure={runOnJS:_reactNativeReanimated.runOnJS,scrollAnimationDuration:scrollAnimationDuration,Easing:{easeOutQuart:_constants.Easing.easeOutQuart},dealWithAnimation:_dealWithAnimation.dealWithAnimation,withAnimation:withAnimation};_f.asString="function _f(toValue,onFinished){const{runOnJS,scrollAnimationDuration,Easing,dealWithAnimation,withAnimation}=jsThis._closure;{var _withAnimation;const callback=function(isFinished){'worklet';if(isFinished){onFinished&&runOnJS(onFinished)();}};const defaultWithAnimation={type:'timing',config:{duration:scrollAnimationDuration,easing:Easing.easeOutQuart}};return dealWithAnimation((_withAnimation=withAnimation)!==null&&_withAnimation!==void 0?_withAnimation:defaultWithAnimation)(toValue,callback);}}";_f.__workletHash=399949545942;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (69:8)";global.__reanimatedWorkletInit(_f);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 page=Math.round(-translation.value/size);var velocityPage=Math.round(-(translation.value+scrollEndVelocity.value)/size);var finalPage=Math.min(page+1,Math.max(page-1,velocityPage));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,infinite:infinite,maxPage:maxPage};_f.asString="function _f(onFinished){const{translation,scrollEndVelocity,pagingEnabled,snapEnabled,size,_withSpring,withDecay,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 page=Math.round(-translation.value/size);const velocityPage=Math.round(-(translation.value+scrollEndVelocity.value)/size);let finalPage=Math.min(page+1,Math.max(page-1,velocityPage));if(!infinite){finalPage=Math.min(maxPage-1,Math.max(0,finalPage));}translation.value=_withSpring(-finalPage*size,onFinished);}}";_f.__workletHash=6617882707805;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (95:8)";global.__reanimatedWorkletInit(_f);return _f;}(),[infinite,_withSpring,translation,scrollEndVelocity,size,maxPage,pagingEnabled,snapEnabled]);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/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (139:8)";global.__reanimatedWorkletInit(_f);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/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (154:12)";global.__reanimatedWorkletInit(_f);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/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (149:42)";global.__reanimatedWorkletInit(_f);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));return;}}};_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));return;}}}}";_f.__workletHash=3458376770899;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (158:44)";global.__reanimatedWorkletInit(_f);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/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (197:8)";global.__reanimatedWorkletInit(_f);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=10686939088248;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (198:8)";global.__reanimatedWorkletInit(_f);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/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (211:21)";global.__reanimatedWorkletInit(_f);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;let 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=10275621069851;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (218:22)";global.__reanimatedWorkletInit(_f);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=8095479445863;_f.__location="/Users/zhaodonghao/code/react-native-reanimated-carousel/src/ScrollViewGesture.tsx (242:19)";global.__reanimatedWorkletInit(_f);return _f;}()},[pagingEnabled,isHorizontal.value,infinite,maxPage,size,snapEnabled,onScrollBegin,onScrollEnd]);var directionStyle=_react.default.useMemo(function(){return vertical?styles.contentHorizontal:styles.contentVertical;},[vertical]);return _react.default.createElement(_reactNativeReanimated.default.View,{style:[styles.container,directionStyle],onTouchStart:onTouchBegin,onTouchEnd:onTouchEnd,__self:_this,__source:{fileName:_jsxFileName,lineNumber:275,columnNumber:9}},_react.default.createElement(_reactNativeGestureHandler.PanGestureHandler,(0,_extends2.default)({},panGestureHandlerProps,{enabled:enabled,onGestureEvent:panGestureEventHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:280,columnNumber:13}}),props.children));};var ScrollViewGesture=IScrollViewGesture;exports.ScrollViewGesture=ScrollViewGesture;var styles=_reactNative.StyleSheet.create({container:{flex:1,overflow:'hidden'},contentVertical:{flexDirection:'column'},contentHorizontal:{flexDirection:'row'}});
2
2
  //# sourceMappingURL=ScrollViewGesture.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["ScrollViewGesture.tsx"],"names":["IScrollViewGesture","props","React","useContext","CTX","vertical","style","data","pagingEnabled","snapEnabled","panGestureHandlerProps","infinite","loop","scrollAnimationDuration","withAnimation","enabled","translation","size","onScrollBegin","onScrollEnd","onTouchBegin","onTouchEnd","maxPage","length","isHorizontal","touching","scrollEndTranslation","scrollEndVelocity","_withSpring","useCallback","toValue","onFinished","callback","isFinished","runOnJS","defaultWithAnimation","type","config","duration","easing","Easing","easeOutQuart","dealWithAnimation","endWithSpring","origin","value","velocity","nextPage","Math","round","deceleration","page","velocityPage","finalPage","min","max","withDecay","onFinish","activeDecay","resetBoundary","panGestureEventHandler","onStart","_","ctx","validStart","panOffset","onActive","e","translationX","translationY","panTranslation","boundary","fixed","dynamic","cancelAnimation","onEnd","velocityX","velocityY","directionStyle","useMemo","styles","contentHorizontal","contentVertical","container","children","ScrollViewGesture","StyleSheet","create","flex","overflow","flexDirection"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleProp, StyleSheet, ViewStyle } from 'react-native';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedReaction,\n useDerivedValue,\n useSharedValue,\n withDecay,\n} from 'react-native-reanimated';\nimport { Easing } from './constants';\nimport { CTX } from './store';\nimport type { WithTimingAnimation } from './types';\nimport { dealWithAnimation } from './utils/dealWithAnimation';\n\ntype GestureContext = {\n validStart: boolean;\n panOffset: number;\n max: number;\n};\n\ninterface Props {\n size: number;\n infinite?: boolean;\n onScrollBegin?: () => void;\n onScrollEnd?: () => void;\n onTouchBegin?: () => void;\n onTouchEnd?: () => void;\n style?: StyleProp<ViewStyle>;\n translation: Animated.SharedValue<number>;\n}\n\nconst IScrollViewGesture: React.FC<Props> = (props) => {\n const {\n props: {\n vertical,\n style,\n data,\n pagingEnabled,\n snapEnabled,\n panGestureHandlerProps,\n loop: infinite,\n scrollAnimationDuration,\n withAnimation,\n enabled,\n },\n } = React.useContext(CTX);\n\n const {\n translation,\n size,\n onScrollBegin,\n onScrollEnd,\n onTouchBegin,\n onTouchEnd,\n } = props;\n\n const maxPage = data.length;\n const isHorizontal = useDerivedValue(() => !vertical, [vertical]);\n const touching = useSharedValue(false);\n const scrollEndTranslation = useSharedValue(0);\n const scrollEndVelocity = useSharedValue(0);\n\n const _withSpring = React.useCallback(\n (toValue: number, onFinished?: () => void) => {\n 'worklet';\n const callback = (isFinished: boolean) => {\n 'worklet';\n if (isFinished) {\n onFinished && runOnJS(onFinished)();\n }\n };\n\n const defaultWithAnimation: WithTimingAnimation = {\n type: 'timing',\n config: {\n duration: scrollAnimationDuration,\n easing: Easing.easeOutQuart,\n },\n };\n\n return dealWithAnimation(withAnimation ?? defaultWithAnimation)(\n toValue,\n callback\n );\n },\n [scrollAnimationDuration, withAnimation]\n );\n\n const endWithSpring = React.useCallback(\n (onFinished?: () => void) => {\n 'worklet';\n const origin = translation.value;\n const velocity = scrollEndVelocity.value;\n if (!pagingEnabled) {\n if (snapEnabled) {\n const nextPage =\n Math.round((origin + velocity * 0.4) / size) * size;\n translation.value = _withSpring(nextPage, onFinished);\n return;\n }\n translation.value = withDecay({\n velocity,\n deceleration: 0.999,\n });\n return;\n }\n const page = Math.round(-translation.value / size);\n const velocityPage = Math.round(\n -(translation.value + scrollEndVelocity.value) / size\n );\n let finalPage = Math.min(\n page + 1,\n Math.max(page - 1, velocityPage)\n );\n if (!infinite) {\n finalPage = Math.min(maxPage - 1, Math.max(0, finalPage));\n }\n\n translation.value = _withSpring(-finalPage * size, onFinished);\n },\n [\n infinite,\n _withSpring,\n translation,\n scrollEndVelocity,\n size,\n maxPage,\n pagingEnabled,\n snapEnabled,\n ]\n );\n\n const onFinish = React.useCallback(\n (isFinished: boolean) => {\n 'worklet';\n if (isFinished) {\n touching.value = false;\n onScrollEnd && runOnJS(onScrollEnd)();\n }\n },\n [onScrollEnd, touching]\n );\n\n const activeDecay = React.useCallback(() => {\n 'worklet';\n touching.value = true;\n translation.value = withDecay(\n { velocity: scrollEndVelocity.value },\n (isFinished) => onFinish(isFinished as boolean)\n );\n }, [onFinish, scrollEndVelocity.value, touching, translation]);\n\n const resetBoundary = React.useCallback(() => {\n 'worklet';\n if (touching.value) {\n return;\n }\n\n if (translation.value > 0) {\n if (scrollEndTranslation.value < 0) {\n activeDecay();\n return;\n }\n if (!infinite) {\n translation.value = _withSpring(0);\n return;\n }\n }\n\n if (translation.value < -((maxPage - 1) * size)) {\n if (scrollEndTranslation.value > 0) {\n activeDecay();\n return;\n }\n if (!infinite) {\n translation.value = _withSpring(-((maxPage - 1) * size));\n return;\n }\n }\n }, [\n touching.value,\n translation,\n maxPage,\n size,\n scrollEndTranslation.value,\n infinite,\n activeDecay,\n _withSpring,\n ]);\n\n useAnimatedReaction(\n () => translation.value,\n () => {\n if (!pagingEnabled) {\n resetBoundary();\n }\n },\n [pagingEnabled, resetBoundary]\n );\n\n const panGestureEventHandler = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n GestureContext\n >(\n {\n onStart: (_, ctx) => {\n touching.value = true;\n 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 let panTranslation = isHorizontal.value\n ? translationX\n : translationY;\n\n if (\n !infinite &&\n (translation.value > 0 || translation.value < -ctx.max)\n ) {\n const boundary = translation.value > 0 ? 0 : -ctx.max;\n const fixed = boundary - ctx.panOffset;\n const dynamic = panTranslation - fixed;\n translation.value = boundary + dynamic * 0.5;\n return;\n }\n\n translation.value = ctx.panOffset + panTranslation;\n },\n onEnd: (e) => {\n const { velocityX, velocityY, translationX, translationY } = e;\n scrollEndVelocity.value = isHorizontal.value\n ? velocityX\n : velocityY;\n scrollEndTranslation.value = isHorizontal.value\n ? translationX\n : translationY;\n\n endWithSpring(onScrollEnd);\n\n if (!infinite) {\n touching.value = false;\n }\n },\n },\n [\n pagingEnabled,\n isHorizontal.value,\n infinite,\n maxPage,\n size,\n snapEnabled,\n onScrollBegin,\n onScrollEnd,\n ]\n );\n\n const directionStyle = React.useMemo(() => {\n return vertical ? styles.contentHorizontal : styles.contentVertical;\n }, [vertical]);\n\n return (\n <Animated.View\n style={[styles.container, directionStyle, style]}\n onTouchStart={onTouchBegin}\n onTouchEnd={onTouchEnd}\n >\n <PanGestureHandler\n {...panGestureHandlerProps}\n enabled={enabled}\n onGestureEvent={panGestureEventHandler}\n >\n {props.children}\n </PanGestureHandler>\n </Animated.View>\n );\n};\n\nexport const ScrollViewGesture = IScrollViewGesture;\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n contentVertical: {\n flexDirection: 'column',\n },\n contentHorizontal: {\n flexDirection: 'row',\n },\n});\n"]}
1
+ {"version":3,"sources":["ScrollViewGesture.tsx"],"names":["IScrollViewGesture","props","React","useContext","CTX","vertical","data","pagingEnabled","snapEnabled","panGestureHandlerProps","infinite","loop","scrollAnimationDuration","withAnimation","enabled","translation","size","onScrollBegin","onScrollEnd","onTouchBegin","onTouchEnd","maxPage","length","isHorizontal","touching","scrollEndTranslation","scrollEndVelocity","_withSpring","useCallback","toValue","onFinished","callback","isFinished","runOnJS","defaultWithAnimation","type","config","duration","easing","Easing","easeOutQuart","dealWithAnimation","endWithSpring","origin","value","velocity","nextPage","Math","round","deceleration","page","velocityPage","finalPage","min","max","withDecay","onFinish","activeDecay","resetBoundary","panGestureEventHandler","onStart","_","ctx","validStart","panOffset","onActive","e","translationX","translationY","panTranslation","boundary","fixed","dynamic","cancelAnimation","onEnd","velocityX","velocityY","directionStyle","useMemo","styles","contentHorizontal","contentVertical","container","children","ScrollViewGesture","StyleSheet","create","flex","overflow","flexDirection"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleProp, StyleSheet, ViewStyle } from 'react-native';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedReaction,\n useDerivedValue,\n useSharedValue,\n withDecay,\n} from 'react-native-reanimated';\nimport { Easing } from './constants';\nimport { CTX } from './store';\nimport type { WithTimingAnimation } from './types';\nimport { dealWithAnimation } from './utils/dealWithAnimation';\n\ntype GestureContext = {\n validStart: boolean;\n panOffset: number;\n max: number;\n};\n\ninterface Props {\n size: number;\n infinite?: boolean;\n onScrollBegin?: () => void;\n onScrollEnd?: () => void;\n onTouchBegin?: () => void;\n onTouchEnd?: () => void;\n style?: StyleProp<ViewStyle>;\n translation: Animated.SharedValue<number>;\n}\n\nconst IScrollViewGesture: React.FC<Props> = (props) => {\n const {\n props: {\n vertical,\n data,\n pagingEnabled,\n snapEnabled,\n panGestureHandlerProps,\n loop: infinite,\n scrollAnimationDuration,\n withAnimation,\n enabled,\n },\n } = React.useContext(CTX);\n\n const {\n translation,\n size,\n onScrollBegin,\n onScrollEnd,\n onTouchBegin,\n onTouchEnd,\n } = props;\n\n const maxPage = data.length;\n const isHorizontal = useDerivedValue(() => !vertical, [vertical]);\n const touching = useSharedValue(false);\n const scrollEndTranslation = useSharedValue(0);\n const scrollEndVelocity = useSharedValue(0);\n\n const _withSpring = React.useCallback(\n (toValue: number, onFinished?: () => void) => {\n 'worklet';\n const callback = (isFinished: boolean) => {\n 'worklet';\n if (isFinished) {\n onFinished && runOnJS(onFinished)();\n }\n };\n\n const defaultWithAnimation: WithTimingAnimation = {\n type: 'timing',\n config: {\n duration: scrollAnimationDuration,\n easing: Easing.easeOutQuart,\n },\n };\n\n return dealWithAnimation(withAnimation ?? defaultWithAnimation)(\n toValue,\n callback\n );\n },\n [scrollAnimationDuration, withAnimation]\n );\n\n const endWithSpring = React.useCallback(\n (onFinished?: () => void) => {\n 'worklet';\n const origin = translation.value;\n const velocity = scrollEndVelocity.value;\n if (!pagingEnabled) {\n if (snapEnabled) {\n const nextPage =\n Math.round((origin + velocity * 0.4) / size) * size;\n translation.value = _withSpring(nextPage, onFinished);\n return;\n }\n translation.value = withDecay({\n velocity,\n deceleration: 0.999,\n });\n return;\n }\n const page = Math.round(-translation.value / size);\n const velocityPage = Math.round(\n -(translation.value + scrollEndVelocity.value) / size\n );\n let finalPage = Math.min(\n page + 1,\n Math.max(page - 1, velocityPage)\n );\n if (!infinite) {\n finalPage = Math.min(maxPage - 1, Math.max(0, finalPage));\n }\n\n translation.value = _withSpring(-finalPage * size, onFinished);\n },\n [\n infinite,\n _withSpring,\n translation,\n scrollEndVelocity,\n size,\n maxPage,\n pagingEnabled,\n snapEnabled,\n ]\n );\n\n const onFinish = React.useCallback(\n (isFinished: boolean) => {\n 'worklet';\n if (isFinished) {\n touching.value = false;\n onScrollEnd && runOnJS(onScrollEnd)();\n }\n },\n [onScrollEnd, touching]\n );\n\n const activeDecay = React.useCallback(() => {\n 'worklet';\n touching.value = true;\n translation.value = withDecay(\n { velocity: scrollEndVelocity.value },\n (isFinished) => onFinish(isFinished as boolean)\n );\n }, [onFinish, scrollEndVelocity.value, touching, translation]);\n\n const resetBoundary = React.useCallback(() => {\n 'worklet';\n if (touching.value) {\n return;\n }\n\n if (translation.value > 0) {\n if (scrollEndTranslation.value < 0) {\n activeDecay();\n return;\n }\n if (!infinite) {\n translation.value = _withSpring(0);\n return;\n }\n }\n\n if (translation.value < -((maxPage - 1) * size)) {\n if (scrollEndTranslation.value > 0) {\n activeDecay();\n return;\n }\n if (!infinite) {\n translation.value = _withSpring(-((maxPage - 1) * size));\n return;\n }\n }\n }, [\n touching.value,\n translation,\n maxPage,\n size,\n scrollEndTranslation.value,\n infinite,\n activeDecay,\n _withSpring,\n ]);\n\n useAnimatedReaction(\n () => translation.value,\n () => {\n if (!pagingEnabled) {\n resetBoundary();\n }\n },\n [pagingEnabled, resetBoundary]\n );\n\n const panGestureEventHandler = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n GestureContext\n >(\n {\n onStart: (_, ctx) => {\n touching.value = true;\n 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 let panTranslation = isHorizontal.value\n ? translationX\n : translationY;\n\n if (\n !infinite &&\n (translation.value > 0 || translation.value < -ctx.max)\n ) {\n const boundary = translation.value > 0 ? 0 : -ctx.max;\n const fixed = boundary - ctx.panOffset;\n const dynamic = panTranslation - fixed;\n translation.value = boundary + dynamic * 0.5;\n return;\n }\n\n translation.value = ctx.panOffset + panTranslation;\n },\n onEnd: (e) => {\n const { velocityX, velocityY, translationX, translationY } = e;\n scrollEndVelocity.value = isHorizontal.value\n ? velocityX\n : velocityY;\n scrollEndTranslation.value = isHorizontal.value\n ? translationX\n : translationY;\n\n endWithSpring(onScrollEnd);\n\n if (!infinite) {\n touching.value = false;\n }\n },\n },\n [\n pagingEnabled,\n isHorizontal.value,\n infinite,\n maxPage,\n size,\n snapEnabled,\n onScrollBegin,\n onScrollEnd,\n ]\n );\n\n const directionStyle = React.useMemo(() => {\n return vertical ? styles.contentHorizontal : styles.contentVertical;\n }, [vertical]);\n\n return (\n <Animated.View\n style={[styles.container, directionStyle]}\n onTouchStart={onTouchBegin}\n onTouchEnd={onTouchEnd}\n >\n <PanGestureHandler\n {...panGestureHandlerProps}\n enabled={enabled}\n onGestureEvent={panGestureEventHandler}\n >\n {props.children}\n </PanGestureHandler>\n </Animated.View>\n );\n};\n\nexport const ScrollViewGesture = IScrollViewGesture;\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n contentVertical: {\n flexDirection: 'column',\n },\n contentHorizontal: {\n flexDirection: 'row',\n },\n});\n"]}
@@ -164,7 +164,7 @@ const Carousel = /*#__PURE__*/React.forwardRef((_props, ref) => {
164
164
  style: [styles.container, {
165
165
  width: width || '100%',
166
166
  height: height || '100%'
167
- }]
167
+ }, style]
168
168
  }, /*#__PURE__*/React.createElement(ScrollViewGesture, {
169
169
  size: size,
170
170
  translation: handlerOffsetX,
@@ -1 +1 @@
1
- {"version":3,"sources":["Carousel.tsx"],"names":["React","Animated","runOnJS","useDerivedValue","useCarouselController","useAutoPlay","usePropsErrorBoundary","ScrollViewGesture","useVisibleRanges","StyleSheet","View","BaseLayout","useLayoutConfig","useInitProps","CTX","useCommonVariables","useOnProgressChange","computedRealIndexWithAutoFillData","Carousel","forwardRef","_props","ref","props","data","rawData","loop","autoFillData","mode","style","width","height","vertical","autoPlay","windowSize","autoPlayReverse","autoPlayInterval","scrollAnimationDuration","withAnimation","renderItem","onScrollEnd","onSnapToItem","onScrollBegin","onProgressChange","customAnimation","defaultIndex","commonVariables","size","handlerOffsetX","dataLength","length","offsetX","totalSize","x","value","isNaN","carouselController","disable","originalLength","_onScrollEnd","onChange","i","duration","next","prev","sharedPreIndex","sharedIndex","computedIndex","getCurrentIndex","start","pause","useCallback","current","scrollViewGestureOnScrollBegin","scrollViewGestureOnScrollEnd","scrollViewGestureOnTouchBegin","scrollViewGestureOnTouchEnd","goToIndex","animated","to","useImperativeHandle","scrollTo","visibleRanges","total","viewSize","translation","layoutConfig","renderLayout","item","realIndex","index","animationValue","common","styles","container","itemsVertical","itemsHorizontal","map","create","overflow","flexDirection"],"mappings":"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","sourcesContent":["import React from 'react';\nimport Animated, { runOnJS, useDerivedValue } from 'react-native-reanimated';\n\nimport { useCarouselController } from './hooks/useCarouselController';\nimport { useAutoPlay } from './hooks/useAutoPlay';\nimport { usePropsErrorBoundary } from './hooks/usePropsErrorBoundary';\nimport { ScrollViewGesture } from './ScrollViewGesture';\nimport { useVisibleRanges } from './hooks/useVisibleRanges';\n\nimport type { ICarouselInstance, TCarouselProps } from './types';\nimport { StyleSheet, View } from 'react-native';\nimport { BaseLayout } from './layouts/BaseLayout';\nimport { useLayoutConfig } from './hooks/useLayoutConfig';\nimport { useInitProps } from './hooks/useInitProps';\nimport { CTX } from './store';\nimport { useCommonVariables } from './hooks/useCommonVariables';\nimport { useOnProgressChange } from './hooks/useOnProgressChange';\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 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, handlerOffsetX } = commonVariables;\n const dataLength = data.length;\n\n const offsetX = useDerivedValue(() => {\n const totalSize = size * dataLength;\n const x = handlerOffsetX.value % totalSize;\n\n if (!loop) {\n return handlerOffsetX.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 handlerOffsetX,\n length: data.length,\n disable: !data.length,\n withAnimation,\n originalLength: data.length,\n defaultIndex,\n onScrollEnd: () => runOnJS(_onScrollEnd)(),\n onScrollBegin: () => !!onScrollBegin && runOnJS(onScrollBegin)(),\n onChange: (i) => !!onSnapToItem && runOnJS(onSnapToItem)(i),\n duration: scrollAnimationDuration,\n });\n\n const {\n next,\n prev,\n sharedPreIndex,\n sharedIndex,\n computedIndex,\n getCurrentIndex,\n } = carouselController;\n\n const { start, pause } = useAutoPlay({\n autoPlay,\n autoPlayInterval,\n autoPlayReverse,\n carouselController,\n });\n\n const _onScrollEnd = React.useCallback(() => {\n computedIndex();\n onScrollEnd?.(sharedPreIndex.current, sharedIndex.current);\n }, [sharedPreIndex, sharedIndex, computedIndex, onScrollEnd]);\n\n const scrollViewGestureOnScrollBegin = React.useCallback(() => {\n pause();\n onScrollBegin?.();\n }, [onScrollBegin, pause]);\n\n const scrollViewGestureOnScrollEnd = React.useCallback(() => {\n start();\n _onScrollEnd();\n }, [_onScrollEnd, start]);\n\n const scrollViewGestureOnTouchBegin = React.useCallback(pause, [pause]);\n\n const scrollViewGestureOnTouchEnd = React.useCallback(start, [start]);\n\n const goToIndex = React.useCallback(\n (i: number, animated?: boolean) => {\n carouselController.to(i, animated);\n },\n [carouselController]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n next,\n prev,\n getCurrentIndex,\n goToIndex,\n scrollTo: carouselController.scrollTo,\n }),\n [\n getCurrentIndex,\n goToIndex,\n next,\n prev,\n carouselController.scrollTo,\n ]\n );\n\n const visibleRanges = useVisibleRanges({\n total: data.length,\n viewSize: size,\n translation: handlerOffsetX,\n windowSize,\n });\n\n const layoutConfig = useLayoutConfig({ ...props, size });\n\n const renderLayout = React.useCallback(\n (item: any, i: number) => {\n 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 handlerOffsetX={offsetX}\n visibleRanges={visibleRanges}\n animationStyle={customAnimation || layoutConfig}\n >\n {({ animationValue }) =>\n renderItem({\n item,\n index: realIndex,\n animationValue,\n })\n }\n </BaseLayout>\n );\n },\n [\n 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 <View\n style={[\n styles.container,\n { width: width || '100%', height: height || '100%' },\n ]}\n >\n <ScrollViewGesture\n size={size}\n translation={handlerOffsetX}\n onScrollBegin={scrollViewGestureOnScrollBegin}\n onScrollEnd={scrollViewGestureOnScrollEnd}\n onTouchBegin={scrollViewGestureOnTouchBegin}\n onTouchEnd={scrollViewGestureOnTouchEnd}\n >\n <Animated.View\n key={mode}\n style={[\n styles.container,\n {\n width: width || '100%',\n height: height || '100%',\n },\n style,\n vertical\n ? styles.itemsVertical\n : styles.itemsHorizontal,\n ]}\n >\n {data.map(renderLayout)}\n </Animated.View>\n </ScrollViewGesture>\n </View>\n </CTX.Provider>\n );\n }\n);\n\nexport default Carousel as <T extends any>(\n props: React.PropsWithChildren<TCarouselProps<T>>\n) => React.ReactElement;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n itemsHorizontal: {\n flexDirection: 'row',\n },\n itemsVertical: {\n flexDirection: 'column',\n },\n});\n"]}
1
+ {"version":3,"sources":["Carousel.tsx"],"names":["React","Animated","runOnJS","useDerivedValue","useCarouselController","useAutoPlay","usePropsErrorBoundary","ScrollViewGesture","useVisibleRanges","StyleSheet","View","BaseLayout","useLayoutConfig","useInitProps","CTX","useCommonVariables","useOnProgressChange","computedRealIndexWithAutoFillData","Carousel","forwardRef","_props","ref","props","data","rawData","loop","autoFillData","mode","style","width","height","vertical","autoPlay","windowSize","autoPlayReverse","autoPlayInterval","scrollAnimationDuration","withAnimation","renderItem","onScrollEnd","onSnapToItem","onScrollBegin","onProgressChange","customAnimation","defaultIndex","commonVariables","size","handlerOffsetX","dataLength","length","offsetX","totalSize","x","value","isNaN","carouselController","disable","originalLength","_onScrollEnd","onChange","i","duration","next","prev","sharedPreIndex","sharedIndex","computedIndex","getCurrentIndex","start","pause","useCallback","current","scrollViewGestureOnScrollBegin","scrollViewGestureOnScrollEnd","scrollViewGestureOnTouchBegin","scrollViewGestureOnTouchEnd","goToIndex","animated","to","useImperativeHandle","scrollTo","visibleRanges","total","viewSize","translation","layoutConfig","renderLayout","item","realIndex","index","animationValue","common","styles","container","itemsVertical","itemsHorizontal","map","create","overflow","flexDirection"],"mappings":"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","sourcesContent":["import React from 'react';\nimport Animated, { runOnJS, useDerivedValue } from 'react-native-reanimated';\n\nimport { useCarouselController } from './hooks/useCarouselController';\nimport { useAutoPlay } from './hooks/useAutoPlay';\nimport { usePropsErrorBoundary } from './hooks/usePropsErrorBoundary';\nimport { ScrollViewGesture } from './ScrollViewGesture';\nimport { useVisibleRanges } from './hooks/useVisibleRanges';\n\nimport type { ICarouselInstance, TCarouselProps } from './types';\nimport { StyleSheet, View } from 'react-native';\nimport { BaseLayout } from './layouts/BaseLayout';\nimport { useLayoutConfig } from './hooks/useLayoutConfig';\nimport { useInitProps } from './hooks/useInitProps';\nimport { CTX } from './store';\nimport { useCommonVariables } from './hooks/useCommonVariables';\nimport { useOnProgressChange } from './hooks/useOnProgressChange';\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 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, handlerOffsetX } = commonVariables;\n const dataLength = data.length;\n\n const offsetX = useDerivedValue(() => {\n const totalSize = size * dataLength;\n const x = handlerOffsetX.value % totalSize;\n\n if (!loop) {\n return handlerOffsetX.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 handlerOffsetX,\n length: data.length,\n disable: !data.length,\n withAnimation,\n originalLength: data.length,\n defaultIndex,\n onScrollEnd: () => runOnJS(_onScrollEnd)(),\n onScrollBegin: () => !!onScrollBegin && runOnJS(onScrollBegin)(),\n onChange: (i) => !!onSnapToItem && runOnJS(onSnapToItem)(i),\n duration: scrollAnimationDuration,\n });\n\n const {\n next,\n prev,\n sharedPreIndex,\n sharedIndex,\n computedIndex,\n getCurrentIndex,\n } = carouselController;\n\n const { start, pause } = useAutoPlay({\n autoPlay,\n autoPlayInterval,\n autoPlayReverse,\n carouselController,\n });\n\n const _onScrollEnd = React.useCallback(() => {\n computedIndex();\n onScrollEnd?.(sharedPreIndex.current, sharedIndex.current);\n }, [sharedPreIndex, sharedIndex, computedIndex, onScrollEnd]);\n\n const scrollViewGestureOnScrollBegin = React.useCallback(() => {\n pause();\n onScrollBegin?.();\n }, [onScrollBegin, pause]);\n\n const scrollViewGestureOnScrollEnd = React.useCallback(() => {\n start();\n _onScrollEnd();\n }, [_onScrollEnd, start]);\n\n const scrollViewGestureOnTouchBegin = React.useCallback(pause, [pause]);\n\n const scrollViewGestureOnTouchEnd = React.useCallback(start, [start]);\n\n const goToIndex = React.useCallback(\n (i: number, animated?: boolean) => {\n carouselController.to(i, animated);\n },\n [carouselController]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n next,\n prev,\n getCurrentIndex,\n goToIndex,\n scrollTo: carouselController.scrollTo,\n }),\n [\n getCurrentIndex,\n goToIndex,\n next,\n prev,\n carouselController.scrollTo,\n ]\n );\n\n const visibleRanges = useVisibleRanges({\n total: data.length,\n viewSize: size,\n translation: handlerOffsetX,\n windowSize,\n });\n\n const layoutConfig = useLayoutConfig({ ...props, size });\n\n const renderLayout = React.useCallback(\n (item: any, i: number) => {\n 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 handlerOffsetX={offsetX}\n visibleRanges={visibleRanges}\n animationStyle={customAnimation || layoutConfig}\n >\n {({ animationValue }) =>\n renderItem({\n item,\n index: realIndex,\n animationValue,\n })\n }\n </BaseLayout>\n );\n },\n [\n 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 <View\n style={[\n styles.container,\n { width: width || '100%', height: height || '100%' },\n style,\n ]}\n >\n <ScrollViewGesture\n size={size}\n translation={handlerOffsetX}\n onScrollBegin={scrollViewGestureOnScrollBegin}\n onScrollEnd={scrollViewGestureOnScrollEnd}\n onTouchBegin={scrollViewGestureOnTouchBegin}\n onTouchEnd={scrollViewGestureOnTouchEnd}\n >\n <Animated.View\n key={mode}\n style={[\n styles.container,\n {\n width: width || '100%',\n height: height || '100%',\n },\n style,\n vertical\n ? styles.itemsVertical\n : styles.itemsHorizontal,\n ]}\n >\n {data.map(renderLayout)}\n </Animated.View>\n </ScrollViewGesture>\n </View>\n </CTX.Provider>\n );\n }\n);\n\nexport default Carousel as <T extends any>(\n props: React.PropsWithChildren<TCarouselProps<T>>\n) => React.ReactElement;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n itemsHorizontal: {\n flexDirection: 'row',\n },\n itemsVertical: {\n flexDirection: 'column',\n },\n});\n"]}
@@ -12,7 +12,6 @@ const IScrollViewGesture = props => {
12
12
  const {
13
13
  props: {
14
14
  vertical,
15
- style,
16
15
  data,
17
16
  pagingEnabled,
18
17
  snapEnabled,
@@ -191,7 +190,7 @@ const IScrollViewGesture = props => {
191
190
  return vertical ? styles.contentHorizontal : styles.contentVertical;
192
191
  }, [vertical]);
193
192
  return /*#__PURE__*/React.createElement(Animated.View, {
194
- style: [styles.container, directionStyle, style],
193
+ style: [styles.container, directionStyle],
195
194
  onTouchStart: onTouchBegin,
196
195
  onTouchEnd: onTouchEnd
197
196
  }, /*#__PURE__*/React.createElement(PanGestureHandler, _extends({}, panGestureHandlerProps, {
@@ -1 +1 @@
1
- {"version":3,"sources":["ScrollViewGesture.tsx"],"names":["React","StyleSheet","PanGestureHandler","Animated","cancelAnimation","runOnJS","useAnimatedGestureHandler","useAnimatedReaction","useDerivedValue","useSharedValue","withDecay","Easing","CTX","dealWithAnimation","IScrollViewGesture","props","vertical","style","data","pagingEnabled","snapEnabled","panGestureHandlerProps","loop","infinite","scrollAnimationDuration","withAnimation","enabled","useContext","translation","size","onScrollBegin","onScrollEnd","onTouchBegin","onTouchEnd","maxPage","length","isHorizontal","touching","scrollEndTranslation","scrollEndVelocity","_withSpring","useCallback","toValue","onFinished","callback","isFinished","defaultWithAnimation","type","config","duration","easing","easeOutQuart","endWithSpring","origin","value","velocity","nextPage","Math","round","deceleration","page","velocityPage","finalPage","min","max","onFinish","activeDecay","resetBoundary","panGestureEventHandler","onStart","_","ctx","validStart","panOffset","onActive","e","translationX","translationY","panTranslation","boundary","fixed","dynamic","onEnd","velocityX","velocityY","directionStyle","useMemo","styles","contentHorizontal","contentVertical","container","children","ScrollViewGesture","create","flex","overflow","flexDirection"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleProp, StyleSheet, ViewStyle } from 'react-native';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedReaction,\n useDerivedValue,\n useSharedValue,\n withDecay,\n} from 'react-native-reanimated';\nimport { Easing } from './constants';\nimport { CTX } from './store';\nimport type { WithTimingAnimation } from './types';\nimport { dealWithAnimation } from './utils/dealWithAnimation';\n\ntype GestureContext = {\n validStart: boolean;\n panOffset: number;\n max: number;\n};\n\ninterface Props {\n size: number;\n infinite?: boolean;\n onScrollBegin?: () => void;\n onScrollEnd?: () => void;\n onTouchBegin?: () => void;\n onTouchEnd?: () => void;\n style?: StyleProp<ViewStyle>;\n translation: Animated.SharedValue<number>;\n}\n\nconst IScrollViewGesture: React.FC<Props> = (props) => {\n const {\n props: {\n vertical,\n style,\n data,\n pagingEnabled,\n snapEnabled,\n panGestureHandlerProps,\n loop: infinite,\n scrollAnimationDuration,\n withAnimation,\n enabled,\n },\n } = React.useContext(CTX);\n\n const {\n translation,\n size,\n onScrollBegin,\n onScrollEnd,\n onTouchBegin,\n onTouchEnd,\n } = props;\n\n const maxPage = data.length;\n const isHorizontal = useDerivedValue(() => !vertical, [vertical]);\n const touching = useSharedValue(false);\n const scrollEndTranslation = useSharedValue(0);\n const scrollEndVelocity = useSharedValue(0);\n\n const _withSpring = React.useCallback(\n (toValue: number, onFinished?: () => void) => {\n 'worklet';\n const callback = (isFinished: boolean) => {\n 'worklet';\n if (isFinished) {\n onFinished && runOnJS(onFinished)();\n }\n };\n\n const defaultWithAnimation: WithTimingAnimation = {\n type: 'timing',\n config: {\n duration: scrollAnimationDuration,\n easing: Easing.easeOutQuart,\n },\n };\n\n return dealWithAnimation(withAnimation ?? defaultWithAnimation)(\n toValue,\n callback\n );\n },\n [scrollAnimationDuration, withAnimation]\n );\n\n const endWithSpring = React.useCallback(\n (onFinished?: () => void) => {\n 'worklet';\n const origin = translation.value;\n const velocity = scrollEndVelocity.value;\n if (!pagingEnabled) {\n if (snapEnabled) {\n const nextPage =\n Math.round((origin + velocity * 0.4) / size) * size;\n translation.value = _withSpring(nextPage, onFinished);\n return;\n }\n translation.value = withDecay({\n velocity,\n deceleration: 0.999,\n });\n return;\n }\n const page = Math.round(-translation.value / size);\n const velocityPage = Math.round(\n -(translation.value + scrollEndVelocity.value) / size\n );\n let finalPage = Math.min(\n page + 1,\n Math.max(page - 1, velocityPage)\n );\n if (!infinite) {\n finalPage = Math.min(maxPage - 1, Math.max(0, finalPage));\n }\n\n translation.value = _withSpring(-finalPage * size, onFinished);\n },\n [\n infinite,\n _withSpring,\n translation,\n scrollEndVelocity,\n size,\n maxPage,\n pagingEnabled,\n snapEnabled,\n ]\n );\n\n const onFinish = React.useCallback(\n (isFinished: boolean) => {\n 'worklet';\n if (isFinished) {\n touching.value = false;\n onScrollEnd && runOnJS(onScrollEnd)();\n }\n },\n [onScrollEnd, touching]\n );\n\n const activeDecay = React.useCallback(() => {\n 'worklet';\n touching.value = true;\n translation.value = withDecay(\n { velocity: scrollEndVelocity.value },\n (isFinished) => onFinish(isFinished as boolean)\n );\n }, [onFinish, scrollEndVelocity.value, touching, translation]);\n\n const resetBoundary = React.useCallback(() => {\n 'worklet';\n if (touching.value) {\n return;\n }\n\n if (translation.value > 0) {\n if (scrollEndTranslation.value < 0) {\n activeDecay();\n return;\n }\n if (!infinite) {\n translation.value = _withSpring(0);\n return;\n }\n }\n\n if (translation.value < -((maxPage - 1) * size)) {\n if (scrollEndTranslation.value > 0) {\n activeDecay();\n return;\n }\n if (!infinite) {\n translation.value = _withSpring(-((maxPage - 1) * size));\n return;\n }\n }\n }, [\n touching.value,\n translation,\n maxPage,\n size,\n scrollEndTranslation.value,\n infinite,\n activeDecay,\n _withSpring,\n ]);\n\n useAnimatedReaction(\n () => translation.value,\n () => {\n if (!pagingEnabled) {\n resetBoundary();\n }\n },\n [pagingEnabled, resetBoundary]\n );\n\n const panGestureEventHandler = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n GestureContext\n >(\n {\n onStart: (_, ctx) => {\n touching.value = true;\n 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 let panTranslation = isHorizontal.value\n ? translationX\n : translationY;\n\n if (\n !infinite &&\n (translation.value > 0 || translation.value < -ctx.max)\n ) {\n const boundary = translation.value > 0 ? 0 : -ctx.max;\n const fixed = boundary - ctx.panOffset;\n const dynamic = panTranslation - fixed;\n translation.value = boundary + dynamic * 0.5;\n return;\n }\n\n translation.value = ctx.panOffset + panTranslation;\n },\n onEnd: (e) => {\n const { velocityX, velocityY, translationX, translationY } = e;\n scrollEndVelocity.value = isHorizontal.value\n ? velocityX\n : velocityY;\n scrollEndTranslation.value = isHorizontal.value\n ? translationX\n : translationY;\n\n endWithSpring(onScrollEnd);\n\n if (!infinite) {\n touching.value = false;\n }\n },\n },\n [\n pagingEnabled,\n isHorizontal.value,\n infinite,\n maxPage,\n size,\n snapEnabled,\n onScrollBegin,\n onScrollEnd,\n ]\n );\n\n const directionStyle = React.useMemo(() => {\n return vertical ? styles.contentHorizontal : styles.contentVertical;\n }, [vertical]);\n\n return (\n <Animated.View\n style={[styles.container, directionStyle, style]}\n onTouchStart={onTouchBegin}\n onTouchEnd={onTouchEnd}\n >\n <PanGestureHandler\n {...panGestureHandlerProps}\n enabled={enabled}\n onGestureEvent={panGestureEventHandler}\n >\n {props.children}\n </PanGestureHandler>\n </Animated.View>\n );\n};\n\nexport const ScrollViewGesture = IScrollViewGesture;\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n contentVertical: {\n flexDirection: 'column',\n },\n contentHorizontal: {\n flexDirection: 'row',\n },\n});\n"]}
1
+ {"version":3,"sources":["ScrollViewGesture.tsx"],"names":["React","StyleSheet","PanGestureHandler","Animated","cancelAnimation","runOnJS","useAnimatedGestureHandler","useAnimatedReaction","useDerivedValue","useSharedValue","withDecay","Easing","CTX","dealWithAnimation","IScrollViewGesture","props","vertical","data","pagingEnabled","snapEnabled","panGestureHandlerProps","loop","infinite","scrollAnimationDuration","withAnimation","enabled","useContext","translation","size","onScrollBegin","onScrollEnd","onTouchBegin","onTouchEnd","maxPage","length","isHorizontal","touching","scrollEndTranslation","scrollEndVelocity","_withSpring","useCallback","toValue","onFinished","callback","isFinished","defaultWithAnimation","type","config","duration","easing","easeOutQuart","endWithSpring","origin","value","velocity","nextPage","Math","round","deceleration","page","velocityPage","finalPage","min","max","onFinish","activeDecay","resetBoundary","panGestureEventHandler","onStart","_","ctx","validStart","panOffset","onActive","e","translationX","translationY","panTranslation","boundary","fixed","dynamic","onEnd","velocityX","velocityY","directionStyle","useMemo","styles","contentHorizontal","contentVertical","container","children","ScrollViewGesture","create","flex","overflow","flexDirection"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleProp, StyleSheet, ViewStyle } from 'react-native';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedReaction,\n useDerivedValue,\n useSharedValue,\n withDecay,\n} from 'react-native-reanimated';\nimport { Easing } from './constants';\nimport { CTX } from './store';\nimport type { WithTimingAnimation } from './types';\nimport { dealWithAnimation } from './utils/dealWithAnimation';\n\ntype GestureContext = {\n validStart: boolean;\n panOffset: number;\n max: number;\n};\n\ninterface Props {\n size: number;\n infinite?: boolean;\n onScrollBegin?: () => void;\n onScrollEnd?: () => void;\n onTouchBegin?: () => void;\n onTouchEnd?: () => void;\n style?: StyleProp<ViewStyle>;\n translation: Animated.SharedValue<number>;\n}\n\nconst IScrollViewGesture: React.FC<Props> = (props) => {\n const {\n props: {\n vertical,\n data,\n pagingEnabled,\n snapEnabled,\n panGestureHandlerProps,\n loop: infinite,\n scrollAnimationDuration,\n withAnimation,\n enabled,\n },\n } = React.useContext(CTX);\n\n const {\n translation,\n size,\n onScrollBegin,\n onScrollEnd,\n onTouchBegin,\n onTouchEnd,\n } = props;\n\n const maxPage = data.length;\n const isHorizontal = useDerivedValue(() => !vertical, [vertical]);\n const touching = useSharedValue(false);\n const scrollEndTranslation = useSharedValue(0);\n const scrollEndVelocity = useSharedValue(0);\n\n const _withSpring = React.useCallback(\n (toValue: number, onFinished?: () => void) => {\n 'worklet';\n const callback = (isFinished: boolean) => {\n 'worklet';\n if (isFinished) {\n onFinished && runOnJS(onFinished)();\n }\n };\n\n const defaultWithAnimation: WithTimingAnimation = {\n type: 'timing',\n config: {\n duration: scrollAnimationDuration,\n easing: Easing.easeOutQuart,\n },\n };\n\n return dealWithAnimation(withAnimation ?? defaultWithAnimation)(\n toValue,\n callback\n );\n },\n [scrollAnimationDuration, withAnimation]\n );\n\n const endWithSpring = React.useCallback(\n (onFinished?: () => void) => {\n 'worklet';\n const origin = translation.value;\n const velocity = scrollEndVelocity.value;\n if (!pagingEnabled) {\n if (snapEnabled) {\n const nextPage =\n Math.round((origin + velocity * 0.4) / size) * size;\n translation.value = _withSpring(nextPage, onFinished);\n return;\n }\n translation.value = withDecay({\n velocity,\n deceleration: 0.999,\n });\n return;\n }\n const page = Math.round(-translation.value / size);\n const velocityPage = Math.round(\n -(translation.value + scrollEndVelocity.value) / size\n );\n let finalPage = Math.min(\n page + 1,\n Math.max(page - 1, velocityPage)\n );\n if (!infinite) {\n finalPage = Math.min(maxPage - 1, Math.max(0, finalPage));\n }\n\n translation.value = _withSpring(-finalPage * size, onFinished);\n },\n [\n infinite,\n _withSpring,\n translation,\n scrollEndVelocity,\n size,\n maxPage,\n pagingEnabled,\n snapEnabled,\n ]\n );\n\n const onFinish = React.useCallback(\n (isFinished: boolean) => {\n 'worklet';\n if (isFinished) {\n touching.value = false;\n onScrollEnd && runOnJS(onScrollEnd)();\n }\n },\n [onScrollEnd, touching]\n );\n\n const activeDecay = React.useCallback(() => {\n 'worklet';\n touching.value = true;\n translation.value = withDecay(\n { velocity: scrollEndVelocity.value },\n (isFinished) => onFinish(isFinished as boolean)\n );\n }, [onFinish, scrollEndVelocity.value, touching, translation]);\n\n const resetBoundary = React.useCallback(() => {\n 'worklet';\n if (touching.value) {\n return;\n }\n\n if (translation.value > 0) {\n if (scrollEndTranslation.value < 0) {\n activeDecay();\n return;\n }\n if (!infinite) {\n translation.value = _withSpring(0);\n return;\n }\n }\n\n if (translation.value < -((maxPage - 1) * size)) {\n if (scrollEndTranslation.value > 0) {\n activeDecay();\n return;\n }\n if (!infinite) {\n translation.value = _withSpring(-((maxPage - 1) * size));\n return;\n }\n }\n }, [\n touching.value,\n translation,\n maxPage,\n size,\n scrollEndTranslation.value,\n infinite,\n activeDecay,\n _withSpring,\n ]);\n\n useAnimatedReaction(\n () => translation.value,\n () => {\n if (!pagingEnabled) {\n resetBoundary();\n }\n },\n [pagingEnabled, resetBoundary]\n );\n\n const panGestureEventHandler = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n GestureContext\n >(\n {\n onStart: (_, ctx) => {\n touching.value = true;\n 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 let panTranslation = isHorizontal.value\n ? translationX\n : translationY;\n\n if (\n !infinite &&\n (translation.value > 0 || translation.value < -ctx.max)\n ) {\n const boundary = translation.value > 0 ? 0 : -ctx.max;\n const fixed = boundary - ctx.panOffset;\n const dynamic = panTranslation - fixed;\n translation.value = boundary + dynamic * 0.5;\n return;\n }\n\n translation.value = ctx.panOffset + panTranslation;\n },\n onEnd: (e) => {\n const { velocityX, velocityY, translationX, translationY } = e;\n scrollEndVelocity.value = isHorizontal.value\n ? velocityX\n : velocityY;\n scrollEndTranslation.value = isHorizontal.value\n ? translationX\n : translationY;\n\n endWithSpring(onScrollEnd);\n\n if (!infinite) {\n touching.value = false;\n }\n },\n },\n [\n pagingEnabled,\n isHorizontal.value,\n infinite,\n maxPage,\n size,\n snapEnabled,\n onScrollBegin,\n onScrollEnd,\n ]\n );\n\n const directionStyle = React.useMemo(() => {\n return vertical ? styles.contentHorizontal : styles.contentVertical;\n }, [vertical]);\n\n return (\n <Animated.View\n style={[styles.container, directionStyle]}\n onTouchStart={onTouchBegin}\n onTouchEnd={onTouchEnd}\n >\n <PanGestureHandler\n {...panGestureHandlerProps}\n enabled={enabled}\n onGestureEvent={panGestureEventHandler}\n >\n {props.children}\n </PanGestureHandler>\n </Animated.View>\n );\n};\n\nexport const ScrollViewGesture = IScrollViewGesture;\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n contentVertical: {\n flexDirection: 'column',\n },\n contentHorizontal: {\n flexDirection: 'row',\n },\n});\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-reanimated-carousel",
3
- "version": "2.3.6",
3
+ "version": "2.3.7",
4
4
  "description": "Simple carousel component.fully implemented using Reanimated 2.Infinitely scrolling, very smooth.",
5
5
  "main": "lib/commonjs/index",
6
6
  "types": "lib/typescript/index.d.ts",
package/src/Carousel.tsx CHANGED
@@ -199,6 +199,7 @@ const Carousel = React.forwardRef<ICarouselInstance, TCarouselProps<any>>(
199
199
  style={[
200
200
  styles.container,
201
201
  { width: width || '100%', height: height || '100%' },
202
+ style,
202
203
  ]}
203
204
  >
204
205
  <ScrollViewGesture
@@ -39,7 +39,6 @@ const IScrollViewGesture: React.FC<Props> = (props) => {
39
39
  const {
40
40
  props: {
41
41
  vertical,
42
- style,
43
42
  data,
44
43
  pagingEnabled,
45
44
  snapEnabled,
@@ -274,7 +273,7 @@ const IScrollViewGesture: React.FC<Props> = (props) => {
274
273
 
275
274
  return (
276
275
  <Animated.View
277
- style={[styles.container, directionStyle, style]}
276
+ style={[styles.container, directionStyle]}
278
277
  onTouchStart={onTouchBegin}
279
278
  onTouchEnd={onTouchEnd}
280
279
  >