react-native-reanimated-carousel 5.0.0-beta.6 → 5.0.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -2
- package/lib/commonjs/components/CarouselLayout.js +1 -1
- package/lib/commonjs/components/CarouselLayout.js.map +1 -1
- package/lib/commonjs/components/ItemRenderer.js +1 -1
- package/lib/commonjs/components/ItemRenderer.js.map +1 -1
- package/lib/commonjs/components/ScrollViewGesture.js +1 -1
- package/lib/commonjs/components/ScrollViewGesture.js.map +1 -1
- package/lib/commonjs/hooks/useOnProgressChange.js +1 -1
- package/lib/commonjs/hooks/useOnProgressChange.js.map +1 -1
- package/lib/commonjs/hooks/usePropsErrorBoundary.js +1 -1
- package/lib/commonjs/hooks/usePropsErrorBoundary.js.map +1 -1
- package/lib/commonjs/hooks/useVisibleRanges.js +1 -1
- package/lib/commonjs/hooks/useVisibleRanges.js.map +1 -1
- package/lib/module/components/CarouselLayout.js +1 -1
- package/lib/module/components/CarouselLayout.js.map +1 -1
- package/lib/module/components/ItemRenderer.js +1 -1
- package/lib/module/components/ItemRenderer.js.map +1 -1
- package/lib/module/components/ScrollViewGesture.js +1 -1
- package/lib/module/components/ScrollViewGesture.js.map +1 -1
- package/lib/module/hooks/useOnProgressChange.js +1 -1
- package/lib/module/hooks/useOnProgressChange.js.map +1 -1
- package/lib/module/hooks/usePropsErrorBoundary.js +1 -1
- package/lib/module/hooks/usePropsErrorBoundary.js.map +1 -1
- package/lib/module/hooks/useVisibleRanges.js +1 -1
- package/lib/module/hooks/useVisibleRanges.js.map +1 -1
- package/lib/typescript/components/CarouselLayout.d.ts.map +1 -1
- package/lib/typescript/components/ItemRenderer.d.ts +1 -0
- package/lib/typescript/components/ItemRenderer.d.ts.map +1 -1
- package/lib/typescript/components/ScrollViewGesture.d.ts.map +1 -1
- package/lib/typescript/hooks/usePropsErrorBoundary.d.ts.map +1 -1
- package/lib/typescript/hooks/useVisibleRanges.d.ts +6 -0
- package/lib/typescript/hooks/useVisibleRanges.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +1 -1
- package/package.json +4 -2
- package/src/components/CarouselLayout.tsx +4 -4
- package/src/components/ItemRenderer.tsx +11 -6
- package/src/components/ScrollViewGesture.tsx +8 -11
- package/src/hooks/useOnProgressChange.ts +1 -1
- package/src/hooks/usePropsErrorBoundary.ts +4 -3
- package/src/hooks/useVisibleRanges.tsx +80 -54
- package/src/types.ts +1 -1
- package/src/components/Carousel.test.tsx +0 -1215
- package/src/components/LazyView.test.tsx +0 -61
- package/src/components/Pagination/Pagination.test.tsx +0 -178
- package/src/components/rnr-demo.test.tsx +0 -53
- package/src/hooks/useAutoPlay.test.ts +0 -194
- package/src/hooks/useCarouselController.test.tsx +0 -1158
- package/src/hooks/useCheckMounted.test.ts +0 -47
- package/src/hooks/useCommonVariables.test.tsx +0 -384
- package/src/hooks/useInitProps.test.tsx +0 -134
- package/src/hooks/useLayoutConfig.test.tsx +0 -247
- package/src/hooks/useOffsetX.test.ts +0 -54
- package/src/hooks/useOnProgressChange.test.tsx +0 -207
- package/src/hooks/usePanGestureProxy.test.tsx +0 -368
- package/src/hooks/useUpdateGestureConfig.test.ts +0 -89
- package/src/hooks/useVisibleRanges.test.tsx +0 -347
- package/src/layouts/parallax.test.ts +0 -239
- package/src/layouts/stack.test.ts +0 -252
- package/src/store/index.test.tsx +0 -314
- package/src/utils/compute-gesture-translation.test.ts +0 -70
- package/src/utils/compute-offset-if-data-changed.test.ts +0 -133
- package/src/utils/compute-offset-if-size-changed.test.ts +0 -78
- package/src/utils/computed-with-auto-fill-data.test.ts +0 -298
- package/src/utils/deal-with-animation.test.ts +0 -181
- package/src/utils/handleroffset-direction.test.ts +0 -124
- package/src/utils/index.test.ts +0 -90
- package/src/utils/log.test.ts +0 -134
- package/src/utils/sanitize-animation-style.test.ts +0 -40
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});exports.useVisibleRanges=useVisibleRanges;var _react=require("react");var _reactNativeReanimated=require("react-native-reanimated");var _worklet_11788449878648_init_data={code:"function useVisibleRangesTsx1(){const{total,viewSize,windowSize,translation,loop,cachedRanges,isArraysEqual}=this.__closure;if(total<=0){return{negativeRange:[0,0],positiveRange:[0,-1]};}if(!Number.isFinite(viewSize)||viewSize<=0){return{negativeRange:[0,0],positiveRange:[0,Math.min(total-1,windowSize-1)]};}const positiveCount=Math.round(windowSize/2);const negativeCount=windowSize-positiveCount;let currentIndex=Math.round(-translation.value/viewSize);if(!Number.isFinite(currentIndex))currentIndex=0;let newRanges;if(loop&&windowSize>=total){newRanges={negativeRange:[0,0],positiveRange:[0,total-1]};}else if(!loop){currentIndex=Math.max(0,Math.min(total-1,currentIndex));newRanges={negativeRange:[Math.max(0,currentIndex-(windowSize-1)),currentIndex],positiveRange:[currentIndex,Math.min(total-1,currentIndex+(windowSize-1))]};}else{currentIndex=currentIndex<0?currentIndex%total+total:currentIndex;const negativeRange=[(currentIndex-negativeCount+total)%total,(currentIndex-1+total)%total];const positiveRange=[(currentIndex+total)%total,(currentIndex+positiveCount+total)%total];if(negativeRange[0]<total&&negativeRange[0]>negativeRange[1]){negativeRange[1]=total-1;positiveRange[0]=0;}if(positiveRange[0]>positiveRange[1]){negativeRange[1]=total-1;positiveRange[0]=0;}newRanges={negativeRange:negativeRange,positiveRange:positiveRange};}if(cachedRanges.current&&isArraysEqual(cachedRanges.current.negativeRange,newRanges.negativeRange)&&isArraysEqual(cachedRanges.current.positiveRange,newRanges.positiveRange)){return cachedRanges.current;}cachedRanges.current=newRanges;return newRanges;}",location:"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useVisibleRanges.tsx",sourceMap:"{\"version\":3,\"names\":[\"useVisibleRangesTsx1\",\"total\",\"viewSize\",\"windowSize\",\"translation\",\"loop\",\"cachedRanges\",\"isArraysEqual\",\"__closure\",\"negativeRange\",\"positiveRange\",\"Number\",\"isFinite\",\"Math\",\"min\",\"positiveCount\",\"round\",\"negativeCount\",\"currentIndex\",\"value\",\"newRanges\",\"max\",\"current\"],\"sources\":[\"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useVisibleRanges.tsx\"],\"mappings\":\"AA4BiC,SAAAA,oBAAMA,CAAA,QAAAC,KAAA,CAAAC,QAAA,CAAAC,UAAA,CAAAC,WAAA,CAAAC,IAAA,CAAAC,YAAA,CAAAC,aAAA,OAAAC,SAAA,CACnC,GAAIP,KAAK,EAAI,CAAC,CAAE,CACd,MAAO,CACLQ,aAAa,CAAE,CAAC,CAAC,CAAE,CAAC,CAAU,CAC9BC,aAAa,CAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CACvB,CAAC,CACH,CAGA,GAAI,CAACC,MAAM,CAACC,QAAQ,CAACV,QAAQ,CAAC,EAAIA,QAAQ,EAAI,CAAC,CAAE,CAC/C,MAAO,CACLO,aAAa,CAAE,CAAC,CAAC,CAAE,CAAC,CAAU,CAC9BC,aAAa,CAAE,CAAC,CAAC,CAAEG,IAAI,CAACC,GAAG,CAACb,KAAK,CAAG,CAAC,CAAEE,UAAU,CAAG,CAAC,CAAC,CACxD,CAAC,CACH,CAEA,KAAM,CAAAY,aAAa,CAAGF,IAAI,CAACG,KAAK,CAACb,UAAU,CAAG,CAAC,CAAC,CAChD,KAAM,CAAAc,aAAa,CAAGd,UAAU,CAAGY,aAAa,CAEhD,GAAI,CAAAG,YAAY,CAAGL,IAAI,CAACG,KAAK,CAAC,CAACZ,WAAW,CAACe,KAAK,CAAGjB,QAAQ,CAAC,CAC5D,GAAI,CAACS,MAAM,CAACC,QAAQ,CAACM,YAAY,CAAC,CAAEA,YAAY,CAAG,CAAC,CAEpD,GAAI,CAAAE,SAAwB,CAE5B,GAAIf,IAAI,EAAIF,UAAU,EAAIF,KAAK,CAAE,CAC/BmB,SAAS,CAAG,CACVX,aAAa,CAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CACrBC,aAAa,CAAE,CAAC,CAAC,CAAET,KAAK,CAAG,CAAC,CAC9B,CAAC,CACH,CAAC,IAAM,IAAI,CAACI,IAAI,CAAE,CAGhBa,YAAY,CAAGL,IAAI,CAACQ,GAAG,CAAC,CAAC,CAAER,IAAI,CAACC,GAAG,CAACb,KAAK,CAAG,CAAC,CAAEiB,YAAY,CAAC,CAAC,CAI7DE,SAAS,CAAG,CACVX,aAAa,CAAE,CAACI,IAAI,CAACQ,GAAG,CAAC,CAAC,CAAEH,YAAY,EAAIf,UAAU,CAAG,CAAC,CAAC,CAAC,CAAEe,YAAY,CAAC,CAC3ER,aAAa,CAAE,CAACQ,YAAY,CAAEL,IAAI,CAACC,GAAG,CAACb,KAAK,CAAG,CAAC,CAAEiB,YAAY,EAAIf,UAAU,CAAG,CAAC,CAAC,CAAC,CACpF,CAAC,CACH,CAAC,IAAM,CACLe,YAAY,CAAGA,YAAY,CAAG,CAAC,CAAIA,YAAY,CAAGjB,KAAK,CAAIA,KAAK,CAAGiB,YAAY,CAE/E,KAAM,CAAAT,aAAoB,CAAG,CAC3B,CAACS,YAAY,CAAGD,aAAa,CAAGhB,KAAK,EAAIA,KAAK,CAC9C,CAACiB,YAAY,CAAG,CAAC,CAAGjB,KAAK,EAAIA,KAAK,CACnC,CAED,KAAM,CAAAS,aAAoB,CAAG,CAC3B,CAACQ,YAAY,CAAGjB,KAAK,EAAIA,KAAK,CAC9B,CAACiB,YAAY,CAAGH,aAAa,CAAGd,KAAK,EAAIA,KAAK,CAC/C,CAED,GAAIQ,aAAa,CAAC,CAAC,CAAC,CAAGR,KAAK,EAAIQ,aAAa,CAAC,CAAC,CAAC,CAAGA,aAAa,CAAC,CAAC,CAAC,CAAE,CACnEA,aAAa,CAAC,CAAC,CAAC,CAAGR,KAAK,CAAG,CAAC,CAC5BS,aAAa,CAAC,CAAC,CAAC,CAAG,CAAC,CACtB,CACA,GAAIA,aAAa,CAAC,CAAC,CAAC,CAAGA,aAAa,CAAC,CAAC,CAAC,CAAE,CACvCD,aAAa,CAAC,CAAC,CAAC,CAAGR,KAAK,CAAG,CAAC,CAC5BS,aAAa,CAAC,CAAC,CAAC,CAAG,CAAC,CACtB,CAGAU,SAAS,CAAG,CAAEX,aAAa,CAAbA,aAAa,CAAEC,aAAA,CAAAA,aAAc,CAAC,CAC9C,CAEA,GACEJ,YAAY,CAACgB,OAAO,EACpBf,aAAa,CAACD,YAAY,CAACgB,OAAO,CAACb,aAAa,CAAEW,SAAS,CAACX,aAAa,CAAC,EAC1EF,aAAa,CAACD,YAAY,CAACgB,OAAO,CAACZ,aAAa,CAAEU,SAAS,CAACV,aAAa,CAAC,CAC1E,CACA,MAAO,CAAAJ,YAAY,CAACgB,OAAO,CAC7B,CAEAhB,YAAY,CAACgB,OAAO,CAAGF,SAAS,CAChC,MAAO,CAAAA,SAAS,CAClB\",\"ignoreList\":[]}"};function useVisibleRanges(options){var _options$total=options.total,total=_options$total===void 0?0:_options$total,viewSize=options.viewSize,translation=options.translation,_windowSize=options.windowSize,loop=options.loop;var windowSize=typeof _windowSize==="number"&&Number.isFinite(_windowSize)&&_windowSize>0?_windowSize:total;var cachedRanges=(0,_react.useRef)(null);var ranges=(0,_reactNativeReanimated.useDerivedValue)(function useVisibleRangesTsx1Factory(_ref){var _worklet_11788449878648_init_data=_ref._worklet_11788449878648_init_data,total=_ref.total,viewSize=_ref.viewSize,windowSize=_ref.windowSize,translation=_ref.translation,loop=_ref.loop,cachedRanges=_ref.cachedRanges,isArraysEqual=_ref.isArraysEqual;var _e=[new global.Error(),-8,-27];var useVisibleRangesTsx1=function useVisibleRangesTsx1(){if(total<=0){return{negativeRange:[0,0],positiveRange:[0,-1]};}if(!Number.isFinite(viewSize)||viewSize<=0){return{negativeRange:[0,0],positiveRange:[0,Math.min(total-1,windowSize-1)]};}var positiveCount=Math.round(windowSize/2);var negativeCount=windowSize-positiveCount;var currentIndex=Math.round(-translation.value/viewSize);if(!Number.isFinite(currentIndex))currentIndex=0;var newRanges;if(loop&&windowSize>=total){newRanges={negativeRange:[0,0],positiveRange:[0,total-1]};}else if(!loop){currentIndex=Math.max(0,Math.min(total-1,currentIndex));newRanges={negativeRange:[Math.max(0,currentIndex-(windowSize-1)),currentIndex],positiveRange:[currentIndex,Math.min(total-1,currentIndex+(windowSize-1))]};}else{currentIndex=currentIndex<0?currentIndex%total+total:currentIndex;var negativeRange=[(currentIndex-negativeCount+total)%total,(currentIndex-1+total)%total];var positiveRange=[(currentIndex+total)%total,(currentIndex+positiveCount+total)%total];if(negativeRange[0]<total&&negativeRange[0]>negativeRange[1]){negativeRange[1]=total-1;positiveRange[0]=0;}if(positiveRange[0]>positiveRange[1]){negativeRange[1]=total-1;positiveRange[0]=0;}newRanges={negativeRange:negativeRange,positiveRange:positiveRange};}if(cachedRanges.current&&isArraysEqual(cachedRanges.current.negativeRange,newRanges.negativeRange)&&isArraysEqual(cachedRanges.current.positiveRange,newRanges.positiveRange)){return cachedRanges.current;}cachedRanges.current=newRanges;return newRanges;};useVisibleRangesTsx1.__closure={total:total,viewSize:viewSize,windowSize:windowSize,translation:translation,loop:loop,cachedRanges:cachedRanges,isArraysEqual:isArraysEqual};useVisibleRangesTsx1.__workletHash=11788449878648;useVisibleRangesTsx1.__pluginVersion="0.5.2";useVisibleRangesTsx1.__initData=_worklet_11788449878648_init_data;useVisibleRangesTsx1.__stackDetails=_e;return useVisibleRangesTsx1;}({_worklet_11788449878648_init_data:_worklet_11788449878648_init_data,total:total,viewSize:viewSize,windowSize:windowSize,translation:translation,loop:loop,cachedRanges:cachedRanges,isArraysEqual:isArraysEqual}),[loop,total,windowSize,translation,viewSize]);return ranges;}var _worklet_14683962274529_init_data={code:"function isArraysEqual_useVisibleRangesTsx2(a,b){if(a.length!==b.length)return false;return a.every(function(value,index){return value===b[index];});}",location:"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useVisibleRanges.tsx",sourceMap:"{\"version\":3,\"names\":[\"isArraysEqual_useVisibleRangesTsx2\",\"a\",\"b\",\"length\",\"every\",\"value\",\"index\"],\"sources\":[\"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useVisibleRanges.tsx\"],\"mappings\":\"AA6GA,SAAAA,kCAA0DA,CAAAC,CAAA,CAAAC,CAAA,EAExD,GAAID,CAAC,CAACE,MAAM,GAAKD,CAAC,CAACC,MAAM,CAAE,MAAO,MAAK,CAEvC,MAAO,CAAAF,CAAC,CAACG,KAAK,CAAC,SAACC,KAAK,CAAEC,KAAK,QAAK,CAAAD,KAAK,GAAKH,CAAC,CAACI,KAAK,CAAC,GAAC,CACtD\",\"ignoreList\":[]}"};var isArraysEqual=function isArraysEqual_useVisibleRangesTsx2Factory(_ref2){var _worklet_14683962274529_init_data=_ref2._worklet_14683962274529_init_data;var _e=[new global.Error(),1,-27];var isArraysEqual=function isArraysEqual(a,b){if(a.length!==b.length)return false;return a.every(function(value,index){return value===b[index];});};isArraysEqual.__closure={};isArraysEqual.__workletHash=14683962274529;isArraysEqual.__pluginVersion="0.5.2";isArraysEqual.__initData=_worklet_14683962274529_init_data;isArraysEqual.__stackDetails=_e;return isArraysEqual;}({_worklet_14683962274529_init_data:_worklet_14683962274529_init_data});
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.computeVisibleRanges=void 0;exports.useVisibleRanges=useVisibleRanges;var _react=require("react");var _reactNativeReanimated=require("react-native-reanimated");var _worklet_857738204961_init_data={code:"function normalizeWindowSize_useVisibleRangesTsx1(total,windowSize){return typeof windowSize===\"number\"&&Number.isFinite(windowSize)&&windowSize>0?windowSize:total;}",location:"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useVisibleRanges.tsx",sourceMap:"{\"version\":3,\"names\":[\"normalizeWindowSize_useVisibleRangesTsx1\",\"total\",\"windowSize\",\"Number\",\"isFinite\"],\"sources\":[\"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useVisibleRanges.tsx\"],\"mappings\":\"AAaA,SAAAA,wCAAiEA,CAAAC,KAAA,CAAAC,UAAA,EAG/D,MAAO,OAAO,CAAAA,UAAU,GAAK,QAAQ,EAAIC,MAAM,CAACC,QAAQ,CAACF,UAAU,CAAC,EAAIA,UAAU,CAAG,CAAC,CAClFA,UAAU,CACVD,KAAK,CACX\",\"ignoreList\":[]}"};var normalizeWindowSize=function normalizeWindowSize_useVisibleRangesTsx1Factory(_ref){var _worklet_857738204961_init_data=_ref._worklet_857738204961_init_data;var _e=[new global.Error(),1,-27];var normalizeWindowSize=function normalizeWindowSize(total,windowSize){return typeof windowSize==="number"&&Number.isFinite(windowSize)&&windowSize>0?windowSize:total;};normalizeWindowSize.__closure={};normalizeWindowSize.__workletHash=857738204961;normalizeWindowSize.__pluginVersion="0.5.2";normalizeWindowSize.__initData=_worklet_857738204961_init_data;normalizeWindowSize.__stackDetails=_e;return normalizeWindowSize;}({_worklet_857738204961_init_data:_worklet_857738204961_init_data});var _worklet_10467342159726_init_data={code:"function normalizeLoopIndex_useVisibleRangesTsx2(currentIndex,total){return currentIndex<0?currentIndex%total+total:currentIndex;}",location:"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useVisibleRanges.tsx",sourceMap:"{\"version\":3,\"names\":[\"normalizeLoopIndex_useVisibleRangesTsx2\",\"currentIndex\",\"total\"],\"sources\":[\"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useVisibleRanges.tsx\"],\"mappings\":\"AAqBA,SAAAA,uCAA+DA,CAAAC,YAAE,CAAAC,KAAA,EAG/D,MAAO,CAAAD,YAAY,CAAG,CAAC,CAAIA,YAAY,CAAGC,KAAK,CAAIA,KAAK,CAAGD,YAAY,CACzE\",\"ignoreList\":[]}"};var normalizeLoopIndex=function normalizeLoopIndex_useVisibleRangesTsx2Factory(_ref2){var _worklet_10467342159726_init_data=_ref2._worklet_10467342159726_init_data;var _e=[new global.Error(),1,-27];var normalizeLoopIndex=function normalizeLoopIndex(currentIndex,total){return currentIndex<0?currentIndex%total+total:currentIndex;};normalizeLoopIndex.__closure={};normalizeLoopIndex.__workletHash=10467342159726;normalizeLoopIndex.__pluginVersion="0.5.2";normalizeLoopIndex.__initData=_worklet_10467342159726_init_data;normalizeLoopIndex.__stackDetails=_e;return normalizeLoopIndex;}({_worklet_10467342159726_init_data:_worklet_10467342159726_init_data});var _worklet_12590357434072_init_data={code:"function computeVisibleRanges_useVisibleRangesTsx3(params){const{normalizeWindowSize,normalizeLoopIndex}=this.__closure;const{total=0,loop:loop}=params;const windowSize=normalizeWindowSize(total,params.windowSize);if(total<=0){return{negativeRange:[0,0],positiveRange:[0,-1]};}if(loop&&windowSize>=total){return{negativeRange:[0,0],positiveRange:[0,total-1]};}const positiveCount=Math.round(windowSize/2);const negativeCount=windowSize-positiveCount;let currentIndex=params.currentIndex;if(!Number.isFinite(currentIndex))currentIndex=0;if(!loop){currentIndex=Math.max(0,Math.min(total-1,currentIndex));return{negativeRange:[Math.max(0,currentIndex-(windowSize-1)),currentIndex],positiveRange:[currentIndex,Math.min(total-1,currentIndex+(windowSize-1))]};}currentIndex=normalizeLoopIndex(currentIndex,total);const negativeRange=[(currentIndex-negativeCount+total)%total,(currentIndex-1+total)%total];const positiveRange=[(currentIndex+total)%total,(currentIndex+positiveCount+total)%total];if(negativeRange[0]<total&&negativeRange[0]>negativeRange[1]){negativeRange[1]=total-1;positiveRange[0]=0;}if(positiveRange[0]>positiveRange[1]){negativeRange[1]=total-1;positiveRange[0]=0;}return{negativeRange:negativeRange,positiveRange:positiveRange};}",location:"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useVisibleRanges.tsx",sourceMap:"{\"version\":3,\"names\":[\"computeVisibleRanges_useVisibleRangesTsx3\",\"params\",\"normalizeWindowSize\",\"normalizeLoopIndex\",\"__closure\",\"total\",\"loop\",\"windowSize\",\"negativeRange\",\"positiveRange\",\"positiveCount\",\"Math\",\"round\",\"negativeCount\",\"currentIndex\",\"Number\",\"isFinite\",\"max\",\"min\"],\"sources\":[\"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useVisibleRanges.tsx\"],\"mappings\":\"AA2BO,SAAAA,yCAKWA,CAAAC,MAAA,QAAAC,mBAAA,CAAAC,kBAAA,OAAAC,SAAA,CAGhB,KAAM,CAAEC,KAAK,CAAG,CAAC,CAAEC,IAAA,CAAAA,IAAK,CAAC,CAAGL,MAAM,CAClC,KAAM,CAAAM,UAAU,CAAGL,mBAAmB,CAACG,KAAK,CAAEJ,MAAM,CAACM,UAAU,CAAC,CAEhE,GAAIF,KAAK,EAAI,CAAC,CAAE,CACd,MAAO,CACLG,aAAa,CAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CACrBC,aAAa,CAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CACvB,CAAC,CACH,CAEA,GAAIH,IAAI,EAAIC,UAAU,EAAIF,KAAK,CAAE,CAC/B,MAAO,CACLG,aAAa,CAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CACrBC,aAAa,CAAE,CAAC,CAAC,CAAEJ,KAAK,CAAG,CAAC,CAC9B,CAAC,CACH,CAEA,KAAM,CAAAK,aAAa,CAAGC,IAAI,CAACC,KAAK,CAACL,UAAU,CAAG,CAAC,CAAC,CAChD,KAAM,CAAAM,aAAa,CAAGN,UAAU,CAAGG,aAAa,CAEhD,GAAI,CAAAI,YAAY,CAAGb,MAAM,CAACa,YAAY,CACtC,GAAI,CAACC,MAAM,CAACC,QAAQ,CAACF,YAAY,CAAC,CAAEA,YAAY,CAAG,CAAC,CAEpD,GAAI,CAACR,IAAI,CAAE,CACTQ,YAAY,CAAGH,IAAI,CAACM,GAAG,CAAC,CAAC,CAAEN,IAAI,CAACO,GAAG,CAACb,KAAK,CAAG,CAAC,CAAES,YAAY,CAAC,CAAC,CAC7D,MAAO,CACLN,aAAa,CAAE,CAACG,IAAI,CAACM,GAAG,CAAC,CAAC,CAAEH,YAAY,EAAIP,UAAU,CAAG,CAAC,CAAC,CAAC,CAAEO,YAAY,CAAC,CAC3EL,aAAa,CAAE,CAACK,YAAY,CAAEH,IAAI,CAACO,GAAG,CAACb,KAAK,CAAG,CAAC,CAAES,YAAY,EAAIP,UAAU,CAAG,CAAC,CAAC,CAAC,CACpF,CAAC,CACH,CAEAO,YAAY,CAAGX,kBAAkB,CAACW,YAAY,CAAET,KAAK,CAAC,CAEtD,KAAM,CAAAG,aAAoB,CAAG,CAC3B,CAACM,YAAY,CAAGD,aAAa,CAAGR,KAAK,EAAIA,KAAK,CAC9C,CAACS,YAAY,CAAG,CAAC,CAAGT,KAAK,EAAIA,KAAK,CACnC,CAED,KAAM,CAAAI,aAAoB,CAAG,CAC3B,CAACK,YAAY,CAAGT,KAAK,EAAIA,KAAK,CAC9B,CAACS,YAAY,CAAGJ,aAAa,CAAGL,KAAK,EAAIA,KAAK,CAC/C,CAED,GAAIG,aAAa,CAAC,CAAC,CAAC,CAAGH,KAAK,EAAIG,aAAa,CAAC,CAAC,CAAC,CAAGA,aAAa,CAAC,CAAC,CAAC,CAAE,CACnEA,aAAa,CAAC,CAAC,CAAC,CAAGH,KAAK,CAAG,CAAC,CAC5BI,aAAa,CAAC,CAAC,CAAC,CAAG,CAAC,CACtB,CACA,GAAIA,aAAa,CAAC,CAAC,CAAC,CAAGA,aAAa,CAAC,CAAC,CAAC,CAAE,CACvCD,aAAa,CAAC,CAAC,CAAC,CAAGH,KAAK,CAAG,CAAC,CAC5BI,aAAa,CAAC,CAAC,CAAC,CAAG,CAAC,CACtB,CAEA,MAAO,CAAED,aAAa,CAAbA,aAAa,CAAEC,aAAA,CAAAA,aAAc,CAAC,CACzC\",\"ignoreList\":[]}"};var computeVisibleRanges=exports.computeVisibleRanges=function computeVisibleRanges_useVisibleRangesTsx3Factory(_ref3){var _worklet_12590357434072_init_data=_ref3._worklet_12590357434072_init_data,normalizeWindowSize=_ref3.normalizeWindowSize,normalizeLoopIndex=_ref3.normalizeLoopIndex;var _e=[new global.Error(),-3,-27];var computeVisibleRanges=function computeVisibleRanges(params){var _params$total=params.total,total=_params$total===void 0?0:_params$total,loop=params.loop;var windowSize=normalizeWindowSize(total,params.windowSize);if(total<=0){return{negativeRange:[0,0],positiveRange:[0,-1]};}if(loop&&windowSize>=total){return{negativeRange:[0,0],positiveRange:[0,total-1]};}var positiveCount=Math.round(windowSize/2);var negativeCount=windowSize-positiveCount;var currentIndex=params.currentIndex;if(!Number.isFinite(currentIndex))currentIndex=0;if(!loop){currentIndex=Math.max(0,Math.min(total-1,currentIndex));return{negativeRange:[Math.max(0,currentIndex-(windowSize-1)),currentIndex],positiveRange:[currentIndex,Math.min(total-1,currentIndex+(windowSize-1))]};}currentIndex=normalizeLoopIndex(currentIndex,total);var negativeRange=[(currentIndex-negativeCount+total)%total,(currentIndex-1+total)%total];var positiveRange=[(currentIndex+total)%total,(currentIndex+positiveCount+total)%total];if(negativeRange[0]<total&&negativeRange[0]>negativeRange[1]){negativeRange[1]=total-1;positiveRange[0]=0;}if(positiveRange[0]>positiveRange[1]){negativeRange[1]=total-1;positiveRange[0]=0;}return{negativeRange:negativeRange,positiveRange:positiveRange};};computeVisibleRanges.__closure={normalizeWindowSize:normalizeWindowSize,normalizeLoopIndex:normalizeLoopIndex};computeVisibleRanges.__workletHash=12590357434072;computeVisibleRanges.__pluginVersion="0.5.2";computeVisibleRanges.__initData=_worklet_12590357434072_init_data;computeVisibleRanges.__stackDetails=_e;return computeVisibleRanges;}({_worklet_12590357434072_init_data:_worklet_12590357434072_init_data,normalizeWindowSize:normalizeWindowSize,normalizeLoopIndex:normalizeLoopIndex});var _worklet_6485309998197_init_data={code:"function useVisibleRangesTsx4(){const{total,computeVisibleRanges,windowSize,loop,viewSize,translation,cachedRanges,isArraysEqual}=this.__closure;if(total<=0){return computeVisibleRanges({total:total,currentIndex:0,windowSize:windowSize,loop:loop});}if(!Number.isFinite(viewSize)||viewSize<=0){return{negativeRange:[0,0],positiveRange:[0,Math.min(total-1,windowSize-1)]};}let currentIndex=Math.round(-translation.value/viewSize);if(!Number.isFinite(currentIndex))currentIndex=0;const newRanges=computeVisibleRanges({total:total,windowSize:windowSize,currentIndex:currentIndex,loop:loop});if(cachedRanges.current&&isArraysEqual(cachedRanges.current.negativeRange,newRanges.negativeRange)&&isArraysEqual(cachedRanges.current.positiveRange,newRanges.positiveRange)){return cachedRanges.current;}cachedRanges.current=newRanges;return newRanges;}",location:"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useVisibleRanges.tsx",sourceMap:"{\"version\":3,\"names\":[\"useVisibleRangesTsx4\",\"total\",\"computeVisibleRanges\",\"windowSize\",\"loop\",\"viewSize\",\"translation\",\"cachedRanges\",\"isArraysEqual\",\"__closure\",\"currentIndex\",\"Number\",\"isFinite\",\"negativeRange\",\"positiveRange\",\"Math\",\"min\",\"round\",\"value\",\"newRanges\",\"current\"],\"sources\":[\"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useVisibleRanges.tsx\"],\"mappings\":\"AAsGiC,SAAAA,oBAAMA,CAAA,QAAAC,KAAA,CAAAC,oBAAA,CAAAC,UAAA,CAAAC,IAAA,CAAAC,QAAA,CAAAC,WAAA,CAAAC,YAAA,CAAAC,aAAA,OAAAC,SAAA,CACnC,GAAIR,KAAK,EAAI,CAAC,CAAE,CACd,MAAO,CAAAC,oBAAoB,CAAC,CAAED,KAAK,CAALA,KAAK,CAAES,YAAY,CAAE,CAAC,CAAEP,UAAU,CAAVA,UAAU,CAAEC,IAAA,CAAAA,IAAK,CAAC,CAAC,CAC3E,CAGA,GAAI,CAACO,MAAM,CAACC,QAAQ,CAACP,QAAQ,CAAC,EAAIA,QAAQ,EAAI,CAAC,CAAE,CAC/C,MAAO,CACLQ,aAAa,CAAE,CAAC,CAAC,CAAE,CAAC,CAAU,CAC9BC,aAAa,CAAE,CAAC,CAAC,CAAEC,IAAI,CAACC,GAAG,CAACf,KAAK,CAAG,CAAC,CAAEE,UAAU,CAAG,CAAC,CAAC,CACxD,CAAC,CACH,CAEA,GAAI,CAAAO,YAAY,CAAGK,IAAI,CAACE,KAAK,CAAC,CAACX,WAAW,CAACY,KAAK,CAAGb,QAAQ,CAAC,CAC5D,GAAI,CAACM,MAAM,CAACC,QAAQ,CAACF,YAAY,CAAC,CAAEA,YAAY,CAAG,CAAC,CAEpD,KAAM,CAAAS,SAAS,CAAGjB,oBAAoB,CAAC,CAAED,KAAK,CAALA,KAAK,CAAEE,UAAU,CAAVA,UAAU,CAAEO,YAAY,CAAZA,YAAY,CAAEN,IAAA,CAAAA,IAAK,CAAC,CAAC,CAEjF,GACEG,YAAY,CAACa,OAAO,EACpBZ,aAAa,CAACD,YAAY,CAACa,OAAO,CAACP,aAAa,CAAEM,SAAS,CAACN,aAAa,CAAC,EAC1EL,aAAa,CAACD,YAAY,CAACa,OAAO,CAACN,aAAa,CAAEK,SAAS,CAACL,aAAa,CAAC,CAC1E,CACA,MAAO,CAAAP,YAAY,CAACa,OAAO,CAC7B,CAEAb,YAAY,CAACa,OAAO,CAAGD,SAAS,CAChC,MAAO,CAAAA,SAAS,CAClB\",\"ignoreList\":[]}"};function useVisibleRanges(options){var _options$total=options.total,total=_options$total===void 0?0:_options$total,viewSize=options.viewSize,translation=options.translation,_windowSize=options.windowSize,loop=options.loop;var windowSize=normalizeWindowSize(total,_windowSize);var cachedRanges=(0,_react.useRef)(null);var ranges=(0,_reactNativeReanimated.useDerivedValue)(function useVisibleRangesTsx4Factory(_ref4){var _worklet_6485309998197_init_data=_ref4._worklet_6485309998197_init_data,total=_ref4.total,computeVisibleRanges=_ref4.computeVisibleRanges,windowSize=_ref4.windowSize,loop=_ref4.loop,viewSize=_ref4.viewSize,translation=_ref4.translation,cachedRanges=_ref4.cachedRanges,isArraysEqual=_ref4.isArraysEqual;var _e=[new global.Error(),-9,-27];var useVisibleRangesTsx4=function useVisibleRangesTsx4(){if(total<=0){return computeVisibleRanges({total:total,currentIndex:0,windowSize:windowSize,loop:loop});}if(!Number.isFinite(viewSize)||viewSize<=0){return{negativeRange:[0,0],positiveRange:[0,Math.min(total-1,windowSize-1)]};}var currentIndex=Math.round(-translation.value/viewSize);if(!Number.isFinite(currentIndex))currentIndex=0;var newRanges=computeVisibleRanges({total:total,windowSize:windowSize,currentIndex:currentIndex,loop:loop});if(cachedRanges.current&&isArraysEqual(cachedRanges.current.negativeRange,newRanges.negativeRange)&&isArraysEqual(cachedRanges.current.positiveRange,newRanges.positiveRange)){return cachedRanges.current;}cachedRanges.current=newRanges;return newRanges;};useVisibleRangesTsx4.__closure={total:total,computeVisibleRanges:computeVisibleRanges,windowSize:windowSize,loop:loop,viewSize:viewSize,translation:translation,cachedRanges:cachedRanges,isArraysEqual:isArraysEqual};useVisibleRangesTsx4.__workletHash=6485309998197;useVisibleRangesTsx4.__pluginVersion="0.5.2";useVisibleRangesTsx4.__initData=_worklet_6485309998197_init_data;useVisibleRangesTsx4.__stackDetails=_e;return useVisibleRangesTsx4;}({_worklet_6485309998197_init_data:_worklet_6485309998197_init_data,total:total,computeVisibleRanges:computeVisibleRanges,windowSize:windowSize,loop:loop,viewSize:viewSize,translation:translation,cachedRanges:cachedRanges,isArraysEqual:isArraysEqual}),[loop,total,windowSize,translation,viewSize]);return ranges;}var _worklet_1694653230246_init_data={code:"function isArraysEqual_useVisibleRangesTsx5(a,b){if(a.length!==b.length)return false;return a.every(function(value,index){return value===b[index];});}",location:"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useVisibleRanges.tsx",sourceMap:"{\"version\":3,\"names\":[\"isArraysEqual_useVisibleRangesTsx5\",\"a\",\"b\",\"length\",\"every\",\"value\",\"index\"],\"sources\":[\"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useVisibleRanges.tsx\"],\"mappings\":\"AAuIA,SAAAA,kCAA0DA,CAAAC,CAAA,CAAAC,CAAA,EAExD,GAAID,CAAC,CAACE,MAAM,GAAKD,CAAC,CAACC,MAAM,CAAE,MAAO,MAAK,CAEvC,MAAO,CAAAF,CAAC,CAACG,KAAK,CAAC,SAACC,KAAK,CAAEC,KAAK,QAAK,CAAAD,KAAK,GAAKH,CAAC,CAACI,KAAK,CAAC,GAAC,CACtD\",\"ignoreList\":[]}"};var isArraysEqual=function isArraysEqual_useVisibleRangesTsx5Factory(_ref5){var _worklet_1694653230246_init_data=_ref5._worklet_1694653230246_init_data;var _e=[new global.Error(),1,-27];var isArraysEqual=function isArraysEqual(a,b){if(a.length!==b.length)return false;return a.every(function(value,index){return value===b[index];});};isArraysEqual.__closure={};isArraysEqual.__workletHash=1694653230246;isArraysEqual.__pluginVersion="0.5.2";isArraysEqual.__initData=_worklet_1694653230246_init_data;isArraysEqual.__stackDetails=_e;return isArraysEqual;}({_worklet_1694653230246_init_data:_worklet_1694653230246_init_data});
|
|
2
2
|
//# sourceMappingURL=useVisibleRanges.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNativeReanimated","
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNativeReanimated","_worklet_857738204961_init_data","code","location","sourceMap","normalizeWindowSize","normalizeWindowSize_useVisibleRangesTsx1Factory","_ref","_e","global","Error","total","windowSize","Number","isFinite","__closure","__workletHash","__pluginVersion","__initData","__stackDetails","_worklet_10467342159726_init_data","normalizeLoopIndex","normalizeLoopIndex_useVisibleRangesTsx2Factory","_ref2","currentIndex","_worklet_12590357434072_init_data","computeVisibleRanges","exports","computeVisibleRanges_useVisibleRangesTsx3Factory","_ref3","params","_params$total","loop","negativeRange","positiveRange","positiveCount","Math","round","negativeCount","max","min","_worklet_6485309998197_init_data","useVisibleRanges","options","_options$total","viewSize","translation","_windowSize","cachedRanges","useRef","ranges","useDerivedValue","useVisibleRangesTsx4Factory","_ref4","isArraysEqual","useVisibleRangesTsx4","value","newRanges","current","_worklet_1694653230246_init_data","isArraysEqual_useVisibleRangesTsx5Factory","_ref5","a","b","length","every","index"],"sourceRoot":"../../../src","sources":["hooks/useVisibleRanges.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CarouselLayout.d.ts","sourceRoot":"","sources":["../../../src/components/CarouselLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"CarouselLayout.d.ts","sourceRoot":"","sources":["../../../src/components/CarouselLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAQhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAK7C,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;AAE3D,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,cAAc,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;;;EAmBA;AAED,eAAO,MAAM,cAAc,yEA+MzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/ItemRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAI3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAKpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGnD,UAAU,KAAK;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,YAAY,EAAE,eAAe,CAAC;IAC9B,UAAU,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;CAC/D;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"ItemRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/ItemRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAI3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAKpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGnD,UAAU,KAAK;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,YAAY,EAAE,eAAe,CAAC;IAC9B,UAAU,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;CAC/D;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,KAAK,CAmFlC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollViewGesture.d.ts","sourceRoot":"","sources":["../../../src/components/ScrollViewGesture.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ScrollViewGesture.d.ts","sourceRoot":"","sources":["../../../src/components/ScrollViewGesture.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAa5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAU3D,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AA2eD,eAAO,MAAM,iBAAiB,oCAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePropsErrorBoundary.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePropsErrorBoundary.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"usePropsErrorBoundary.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePropsErrorBoundary.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,QAmFnF"}
|
|
@@ -5,6 +5,12 @@ export interface VisibleRanges {
|
|
|
5
5
|
positiveRange: Range;
|
|
6
6
|
}
|
|
7
7
|
export type IVisibleRanges = SharedValue<VisibleRanges>;
|
|
8
|
+
export declare function computeVisibleRanges(params: {
|
|
9
|
+
total: number;
|
|
10
|
+
windowSize?: number;
|
|
11
|
+
currentIndex: number;
|
|
12
|
+
loop?: boolean;
|
|
13
|
+
}): VisibleRanges;
|
|
8
14
|
export declare function useVisibleRanges(options: {
|
|
9
15
|
total: number;
|
|
10
16
|
viewSize: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVisibleRanges.d.ts","sourceRoot":"","sources":["../../../src/hooks/useVisibleRanges.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D,KAAK,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9B,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,KAAK,CAAC;IACrB,aAAa,EAAE,KAAK,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"useVisibleRanges.d.ts","sourceRoot":"","sources":["../../../src/hooks/useVisibleRanges.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D,KAAK,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9B,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,KAAK,CAAC;IACrB,aAAa,EAAE,KAAK,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;AAgBxD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,aAAa,CAwDhB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,cAAc,CAqCjB"}
|
|
@@ -225,7 +225,7 @@ export type TCarouselProps<T = any> = {
|
|
|
225
225
|
customConfig?: CustomConfig | (() => CustomConfig);
|
|
226
226
|
/**
|
|
227
227
|
* Custom animations.
|
|
228
|
-
* Must
|
|
228
|
+
* Must be worklet-compatible. See https://docs.swmansion.com/react-native-reanimated/docs/guides/worklets/
|
|
229
229
|
* @test_coverage ✅ tested in Carousel.test.tsx > should apply the custom animation
|
|
230
230
|
*/
|
|
231
231
|
customAnimation?: (value: number, index: number) => ViewStyle;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-reanimated-carousel",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.8",
|
|
4
4
|
"packageManager": "yarn@4.0.2",
|
|
5
5
|
"description": "A performant, customizable carousel for React Native powered by Reanimated.",
|
|
6
6
|
"author": "Doho <zhaodonghao586@outlook.com> (https://github.com/dohooo)",
|
|
@@ -25,7 +25,9 @@
|
|
|
25
25
|
"source": "src/index",
|
|
26
26
|
"files": [
|
|
27
27
|
"lib",
|
|
28
|
-
"src"
|
|
28
|
+
"src",
|
|
29
|
+
"!src/**/*.test.ts",
|
|
30
|
+
"!src/**/*.test.tsx"
|
|
29
31
|
],
|
|
30
32
|
"scripts": {
|
|
31
33
|
"gif": "node scripts/makegif.js ./scripts/gif-works-directory",
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { StyleSheet, type ViewStyle } from "react-native";
|
|
3
|
-
import { GestureHandlerRootView } from "react-native-gesture-handler";
|
|
2
|
+
import { StyleSheet, View, type ViewStyle } from "react-native";
|
|
4
3
|
import { useAnimatedReaction, useAnimatedStyle, useDerivedValue } from "react-native-reanimated";
|
|
5
4
|
import { scheduleOnRN } from "react-native-worklets";
|
|
6
5
|
import { useAutoPlay } from "../hooks/useAutoPlay";
|
|
@@ -214,7 +213,7 @@ export const CarouselLayout = React.forwardRef<ICarouselInstance>((_props, ref)
|
|
|
214
213
|
]);
|
|
215
214
|
|
|
216
215
|
return (
|
|
217
|
-
<
|
|
216
|
+
<View testID={testID} style={[styles.layoutContainer, style]}>
|
|
218
217
|
<ScrollViewGesture
|
|
219
218
|
size={size}
|
|
220
219
|
key={mode}
|
|
@@ -239,6 +238,7 @@ export const CarouselLayout = React.forwardRef<ICarouselInstance>((_props, ref)
|
|
|
239
238
|
loop={loop}
|
|
240
239
|
size={size}
|
|
241
240
|
windowSize={windowSize}
|
|
241
|
+
defaultIndex={defaultIndex}
|
|
242
242
|
autoFillData={autoFillData}
|
|
243
243
|
offsetX={offsetX}
|
|
244
244
|
handlerOffset={handlerOffset}
|
|
@@ -247,7 +247,7 @@ export const CarouselLayout = React.forwardRef<ICarouselInstance>((_props, ref)
|
|
|
247
247
|
customAnimation={customAnimation}
|
|
248
248
|
/>
|
|
249
249
|
</ScrollViewGesture>
|
|
250
|
-
</
|
|
250
|
+
</View>
|
|
251
251
|
);
|
|
252
252
|
});
|
|
253
253
|
|
|
@@ -9,7 +9,7 @@ import type { TAnimationStyle } from "./ItemLayout";
|
|
|
9
9
|
import { ItemLayout } from "./ItemLayout";
|
|
10
10
|
|
|
11
11
|
import type { VisibleRanges } from "../hooks/useVisibleRanges";
|
|
12
|
-
import { useVisibleRanges } from "../hooks/useVisibleRanges";
|
|
12
|
+
import { computeVisibleRanges, useVisibleRanges } from "../hooks/useVisibleRanges";
|
|
13
13
|
import type { CarouselRenderItem } from "../types";
|
|
14
14
|
import { computedRealIndexWithAutoFillData } from "../utils/computed-with-auto-fill-data";
|
|
15
15
|
|
|
@@ -20,6 +20,7 @@ interface Props {
|
|
|
20
20
|
loop: boolean;
|
|
21
21
|
size: number;
|
|
22
22
|
windowSize?: number;
|
|
23
|
+
defaultIndex: number;
|
|
23
24
|
autoFillData: boolean;
|
|
24
25
|
offsetX: SharedValue<number>;
|
|
25
26
|
handlerOffset: SharedValue<number>;
|
|
@@ -33,6 +34,7 @@ export const ItemRenderer: FC<Props> = (props) => {
|
|
|
33
34
|
data,
|
|
34
35
|
size,
|
|
35
36
|
windowSize,
|
|
37
|
+
defaultIndex,
|
|
36
38
|
handlerOffset,
|
|
37
39
|
offsetX,
|
|
38
40
|
dataLength,
|
|
@@ -54,11 +56,14 @@ export const ItemRenderer: FC<Props> = (props) => {
|
|
|
54
56
|
|
|
55
57
|
// Initialize with a sensible default to avoid blank render on first frame
|
|
56
58
|
const initialRanges: VisibleRanges = React.useMemo(
|
|
57
|
-
() =>
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
() =>
|
|
60
|
+
computeVisibleRanges({
|
|
61
|
+
total: dataLength,
|
|
62
|
+
windowSize,
|
|
63
|
+
currentIndex: defaultIndex,
|
|
64
|
+
loop,
|
|
65
|
+
}),
|
|
66
|
+
[dataLength, defaultIndex, loop, windowSize]
|
|
62
67
|
);
|
|
63
68
|
|
|
64
69
|
const [displayedItems, setDisplayedItems] = React.useState<VisibleRanges>(initialRanges);
|
|
@@ -8,9 +8,7 @@ import type {
|
|
|
8
8
|
import { GestureDetector } from "react-native-gesture-handler";
|
|
9
9
|
import Animated, {
|
|
10
10
|
cancelAnimation,
|
|
11
|
-
measure,
|
|
12
11
|
useAnimatedReaction,
|
|
13
|
-
useAnimatedRef,
|
|
14
12
|
useDerivedValue,
|
|
15
13
|
useSharedValue,
|
|
16
14
|
withDecay,
|
|
@@ -56,7 +54,7 @@ const IScrollViewGesture: React.FC<PropsWithChildren<Props>> = (props) => {
|
|
|
56
54
|
fixedDirection,
|
|
57
55
|
},
|
|
58
56
|
common: { size, resolvedSize, sizePhase, sizeExplicit },
|
|
59
|
-
layout: { updateContainerSize },
|
|
57
|
+
layout: { containerSize, updateContainerSize },
|
|
60
58
|
} = useGlobalState();
|
|
61
59
|
|
|
62
60
|
const {
|
|
@@ -77,7 +75,6 @@ const IScrollViewGesture: React.FC<PropsWithChildren<Props>> = (props) => {
|
|
|
77
75
|
const validStart = useSharedValue(false);
|
|
78
76
|
const scrollEndTranslation = useSharedValue(0);
|
|
79
77
|
const scrollEndVelocity = useSharedValue(0);
|
|
80
|
-
const containerRef = useAnimatedRef<Animated.View>();
|
|
81
78
|
const maxScrollDistancePerSwipeIsSet = typeof maxScrollDistancePerSwipe === "number";
|
|
82
79
|
const minScrollDistancePerSwipeIsSet = typeof minScrollDistancePerSwipe === "number";
|
|
83
80
|
const sizeReady = useDerivedValue(() => {
|
|
@@ -92,18 +89,19 @@ const IScrollViewGesture: React.FC<PropsWithChildren<Props>> = (props) => {
|
|
|
92
89
|
if (size <= 0) return 0;
|
|
93
90
|
|
|
94
91
|
if (!loop && !overscrollEnabled) {
|
|
95
|
-
const
|
|
96
|
-
|
|
92
|
+
const containerMainAxisSize = vertical
|
|
93
|
+
? containerSize.value.height
|
|
94
|
+
: containerSize.value.width;
|
|
97
95
|
|
|
98
|
-
// If the item's total
|
|
99
|
-
if (dataLength * size <
|
|
96
|
+
// If the item's total size is less than the container's size, then there is no need to scroll.
|
|
97
|
+
if (containerMainAxisSize <= 0 || dataLength * size < containerMainAxisSize) return 0;
|
|
100
98
|
|
|
101
99
|
// Disable the "overscroll" effect
|
|
102
|
-
return dataLength * size -
|
|
100
|
+
return dataLength * size - containerMainAxisSize;
|
|
103
101
|
}
|
|
104
102
|
|
|
105
103
|
return dataLength * size;
|
|
106
|
-
}, [loop, size, dataLength, overscrollEnabled]);
|
|
104
|
+
}, [loop, size, dataLength, overscrollEnabled, vertical, containerSize]);
|
|
107
105
|
|
|
108
106
|
const withSpring = React.useCallback(
|
|
109
107
|
(toValue: number, onFinished?: () => void) => {
|
|
@@ -515,7 +513,6 @@ const IScrollViewGesture: React.FC<PropsWithChildren<Props>> = (props) => {
|
|
|
515
513
|
return (
|
|
516
514
|
<GestureDetector gesture={gesture}>
|
|
517
515
|
<Animated.View
|
|
518
|
-
ref={containerRef}
|
|
519
516
|
testID={testID}
|
|
520
517
|
style={style}
|
|
521
518
|
onTouchStart={onTouchBegin}
|
|
@@ -16,7 +16,7 @@ export function usePropsErrorBoundary(props: TCarouselProps & { dataLength: numb
|
|
|
16
16
|
if (__DEV__) {
|
|
17
17
|
const { style, vertical, width, height, itemWidth, itemHeight, contentContainerStyle } =
|
|
18
18
|
props;
|
|
19
|
-
const { width: styleWidth, height: styleHeight } = StyleSheet.flatten(style) || {};
|
|
19
|
+
const { width: styleWidth, height: styleHeight, flex } = StyleSheet.flatten(style) || {};
|
|
20
20
|
|
|
21
21
|
// Deprecation warnings for width/height props
|
|
22
22
|
if (typeof width === "number" && !warnedRefs.width) {
|
|
@@ -42,10 +42,11 @@ export function usePropsErrorBoundary(props: TCarouselProps & { dataLength: numb
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
// Updated missing size warnings
|
|
45
|
+
const hasFlexibleContainerSize = typeof flex === "number" && flex > 0;
|
|
45
46
|
const hasHorizontalContainerSize =
|
|
46
|
-
|
|
47
|
+
styleWidth != null || typeof width === "number" || hasFlexibleContainerSize;
|
|
47
48
|
const hasVerticalContainerSize =
|
|
48
|
-
|
|
49
|
+
styleHeight != null || typeof height === "number" || hasFlexibleContainerSize;
|
|
49
50
|
|
|
50
51
|
if (!vertical && !hasHorizontalContainerSize && !warnedRefs.horizontal) {
|
|
51
52
|
console.warn(
|
|
@@ -11,6 +11,83 @@ export interface VisibleRanges {
|
|
|
11
11
|
|
|
12
12
|
export type IVisibleRanges = SharedValue<VisibleRanges>;
|
|
13
13
|
|
|
14
|
+
function normalizeWindowSize(total: number, windowSize?: number) {
|
|
15
|
+
"worklet";
|
|
16
|
+
|
|
17
|
+
return typeof windowSize === "number" && Number.isFinite(windowSize) && windowSize > 0
|
|
18
|
+
? windowSize
|
|
19
|
+
: total;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function normalizeLoopIndex(currentIndex: number, total: number) {
|
|
23
|
+
"worklet";
|
|
24
|
+
|
|
25
|
+
return currentIndex < 0 ? (currentIndex % total) + total : currentIndex;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function computeVisibleRanges(params: {
|
|
29
|
+
total: number;
|
|
30
|
+
windowSize?: number;
|
|
31
|
+
currentIndex: number;
|
|
32
|
+
loop?: boolean;
|
|
33
|
+
}): VisibleRanges {
|
|
34
|
+
"worklet";
|
|
35
|
+
|
|
36
|
+
const { total = 0, loop } = params;
|
|
37
|
+
const windowSize = normalizeWindowSize(total, params.windowSize);
|
|
38
|
+
|
|
39
|
+
if (total <= 0) {
|
|
40
|
+
return {
|
|
41
|
+
negativeRange: [0, 0],
|
|
42
|
+
positiveRange: [0, -1],
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (loop && windowSize >= total) {
|
|
47
|
+
return {
|
|
48
|
+
negativeRange: [0, 0],
|
|
49
|
+
positiveRange: [0, total - 1],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const positiveCount = Math.round(windowSize / 2);
|
|
54
|
+
const negativeCount = windowSize - positiveCount;
|
|
55
|
+
|
|
56
|
+
let currentIndex = params.currentIndex;
|
|
57
|
+
if (!Number.isFinite(currentIndex)) currentIndex = 0;
|
|
58
|
+
|
|
59
|
+
if (!loop) {
|
|
60
|
+
currentIndex = Math.max(0, Math.min(total - 1, currentIndex));
|
|
61
|
+
return {
|
|
62
|
+
negativeRange: [Math.max(0, currentIndex - (windowSize - 1)), currentIndex],
|
|
63
|
+
positiveRange: [currentIndex, Math.min(total - 1, currentIndex + (windowSize - 1))],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
currentIndex = normalizeLoopIndex(currentIndex, total);
|
|
68
|
+
|
|
69
|
+
const negativeRange: Range = [
|
|
70
|
+
(currentIndex - negativeCount + total) % total,
|
|
71
|
+
(currentIndex - 1 + total) % total,
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
const positiveRange: Range = [
|
|
75
|
+
(currentIndex + total) % total,
|
|
76
|
+
(currentIndex + positiveCount + total) % total,
|
|
77
|
+
];
|
|
78
|
+
|
|
79
|
+
if (negativeRange[0] < total && negativeRange[0] > negativeRange[1]) {
|
|
80
|
+
negativeRange[1] = total - 1;
|
|
81
|
+
positiveRange[0] = 0;
|
|
82
|
+
}
|
|
83
|
+
if (positiveRange[0] > positiveRange[1]) {
|
|
84
|
+
negativeRange[1] = total - 1;
|
|
85
|
+
positiveRange[0] = 0;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return { negativeRange, positiveRange };
|
|
89
|
+
}
|
|
90
|
+
|
|
14
91
|
export function useVisibleRanges(options: {
|
|
15
92
|
total: number;
|
|
16
93
|
viewSize: number;
|
|
@@ -20,18 +97,12 @@ export function useVisibleRanges(options: {
|
|
|
20
97
|
}): IVisibleRanges {
|
|
21
98
|
const { total = 0, viewSize, translation, windowSize: _windowSize, loop } = options;
|
|
22
99
|
|
|
23
|
-
const windowSize =
|
|
24
|
-
typeof _windowSize === "number" && Number.isFinite(_windowSize) && _windowSize > 0
|
|
25
|
-
? _windowSize
|
|
26
|
-
: total;
|
|
100
|
+
const windowSize = normalizeWindowSize(total, _windowSize);
|
|
27
101
|
const cachedRanges = useRef<VisibleRanges | null>(null);
|
|
28
102
|
|
|
29
103
|
const ranges = useDerivedValue(() => {
|
|
30
104
|
if (total <= 0) {
|
|
31
|
-
return {
|
|
32
|
-
negativeRange: [0, 0] as Range,
|
|
33
|
-
positiveRange: [0, -1] as Range,
|
|
34
|
-
};
|
|
105
|
+
return computeVisibleRanges({ total, currentIndex: 0, windowSize, loop });
|
|
35
106
|
}
|
|
36
107
|
|
|
37
108
|
// Prevent division by zero when viewSize is not yet measured
|
|
@@ -42,55 +113,10 @@ export function useVisibleRanges(options: {
|
|
|
42
113
|
};
|
|
43
114
|
}
|
|
44
115
|
|
|
45
|
-
const positiveCount = Math.round(windowSize / 2);
|
|
46
|
-
const negativeCount = windowSize - positiveCount;
|
|
47
|
-
|
|
48
116
|
let currentIndex = Math.round(-translation.value / viewSize);
|
|
49
117
|
if (!Number.isFinite(currentIndex)) currentIndex = 0;
|
|
50
118
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (loop && windowSize >= total) {
|
|
54
|
-
newRanges = {
|
|
55
|
-
negativeRange: [0, 0],
|
|
56
|
-
positiveRange: [0, total - 1],
|
|
57
|
-
};
|
|
58
|
-
} else if (!loop) {
|
|
59
|
-
// Clamp currentIndex to valid range [0, total-1] for non-loop mode
|
|
60
|
-
// When overdragging right, translation.value becomes positive, making currentIndex negative
|
|
61
|
-
currentIndex = Math.max(0, Math.min(total - 1, currentIndex));
|
|
62
|
-
|
|
63
|
-
// Adjusting negative range if the carousel is not loopable.
|
|
64
|
-
// So, It will be only displayed the positive items.
|
|
65
|
-
newRanges = {
|
|
66
|
-
negativeRange: [Math.max(0, currentIndex - (windowSize - 1)), currentIndex],
|
|
67
|
-
positiveRange: [currentIndex, Math.min(total - 1, currentIndex + (windowSize - 1))],
|
|
68
|
-
};
|
|
69
|
-
} else {
|
|
70
|
-
currentIndex = currentIndex < 0 ? (currentIndex % total) + total : currentIndex;
|
|
71
|
-
|
|
72
|
-
const negativeRange: Range = [
|
|
73
|
-
(currentIndex - negativeCount + total) % total,
|
|
74
|
-
(currentIndex - 1 + total) % total,
|
|
75
|
-
];
|
|
76
|
-
|
|
77
|
-
const positiveRange: Range = [
|
|
78
|
-
(currentIndex + total) % total,
|
|
79
|
-
(currentIndex + positiveCount + total) % total,
|
|
80
|
-
];
|
|
81
|
-
|
|
82
|
-
if (negativeRange[0] < total && negativeRange[0] > negativeRange[1]) {
|
|
83
|
-
negativeRange[1] = total - 1;
|
|
84
|
-
positiveRange[0] = 0;
|
|
85
|
-
}
|
|
86
|
-
if (positiveRange[0] > positiveRange[1]) {
|
|
87
|
-
negativeRange[1] = total - 1;
|
|
88
|
-
positiveRange[0] = 0;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// console.log({ negativeRange, positiveRange ,total,windowSize,a:total <= _windowSize})
|
|
92
|
-
newRanges = { negativeRange, positiveRange };
|
|
93
|
-
}
|
|
119
|
+
const newRanges = computeVisibleRanges({ total, windowSize, currentIndex, loop });
|
|
94
120
|
|
|
95
121
|
if (
|
|
96
122
|
cachedRanges.current &&
|
package/src/types.ts
CHANGED
|
@@ -242,7 +242,7 @@ export type TCarouselProps<T = any> = {
|
|
|
242
242
|
customConfig?: CustomConfig | (() => CustomConfig);
|
|
243
243
|
/**
|
|
244
244
|
* Custom animations.
|
|
245
|
-
* Must
|
|
245
|
+
* Must be worklet-compatible. See https://docs.swmansion.com/react-native-reanimated/docs/guides/worklets/
|
|
246
246
|
* @test_coverage ✅ tested in Carousel.test.tsx > should apply the custom animation
|
|
247
247
|
*/
|
|
248
248
|
customAnimation?: (value: number, index: number) => ViewStyle;
|