react-native-reanimated-carousel 5.0.0-beta.5 → 5.0.0-beta.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.
Files changed (55) hide show
  1. package/README.md +28 -6
  2. package/lib/commonjs/components/CarouselLayout.js +1 -1
  3. package/lib/commonjs/components/CarouselLayout.js.map +1 -1
  4. package/lib/commonjs/components/ItemLayout.js +1 -1
  5. package/lib/commonjs/components/ItemLayout.js.map +1 -1
  6. package/lib/commonjs/components/ItemRenderer.js +1 -1
  7. package/lib/commonjs/components/ItemRenderer.js.map +1 -1
  8. package/lib/commonjs/components/ScrollViewGesture.js +1 -1
  9. package/lib/commonjs/components/ScrollViewGesture.js.map +1 -1
  10. package/lib/commonjs/hooks/useOnProgressChange.js +1 -1
  11. package/lib/commonjs/hooks/useOnProgressChange.js.map +1 -1
  12. package/lib/commonjs/hooks/usePropsErrorBoundary.js +1 -1
  13. package/lib/commonjs/hooks/usePropsErrorBoundary.js.map +1 -1
  14. package/lib/commonjs/hooks/useVisibleRanges.js +1 -1
  15. package/lib/commonjs/hooks/useVisibleRanges.js.map +1 -1
  16. package/lib/module/components/CarouselLayout.js +1 -1
  17. package/lib/module/components/CarouselLayout.js.map +1 -1
  18. package/lib/module/components/ItemLayout.js +1 -1
  19. package/lib/module/components/ItemLayout.js.map +1 -1
  20. package/lib/module/components/ItemRenderer.js +1 -1
  21. package/lib/module/components/ItemRenderer.js.map +1 -1
  22. package/lib/module/components/ScrollViewGesture.js +1 -1
  23. package/lib/module/components/ScrollViewGesture.js.map +1 -1
  24. package/lib/module/hooks/useOnProgressChange.js +1 -1
  25. package/lib/module/hooks/useOnProgressChange.js.map +1 -1
  26. package/lib/module/hooks/usePropsErrorBoundary.js +1 -1
  27. package/lib/module/hooks/usePropsErrorBoundary.js.map +1 -1
  28. package/lib/module/hooks/useVisibleRanges.js +1 -1
  29. package/lib/module/hooks/useVisibleRanges.js.map +1 -1
  30. package/lib/typescript/components/CarouselLayout.d.ts +11 -0
  31. package/lib/typescript/components/CarouselLayout.d.ts.map +1 -1
  32. package/lib/typescript/components/ItemLayout.d.ts +5 -0
  33. package/lib/typescript/components/ItemLayout.d.ts.map +1 -1
  34. package/lib/typescript/components/ItemRenderer.d.ts +1 -0
  35. package/lib/typescript/components/ItemRenderer.d.ts.map +1 -1
  36. package/lib/typescript/components/ScrollViewGesture.d.ts.map +1 -1
  37. package/lib/typescript/hooks/usePropsErrorBoundary.d.ts.map +1 -1
  38. package/lib/typescript/hooks/useVisibleRanges.d.ts +6 -0
  39. package/lib/typescript/hooks/useVisibleRanges.d.ts.map +1 -1
  40. package/lib/typescript/types.d.ts +1 -1
  41. package/package.json +13 -4
  42. package/src/components/Carousel.test.tsx +152 -0
  43. package/src/components/CarouselLayout.tsx +52 -8
  44. package/src/components/ItemLayout.tsx +31 -7
  45. package/src/components/ItemRenderer.tsx +11 -6
  46. package/src/components/ScrollViewGesture.test.tsx +155 -0
  47. package/src/components/ScrollViewGesture.tsx +8 -11
  48. package/src/components/issue-899-parallax-reverse-loop.test.tsx +131 -0
  49. package/src/hooks/useOnProgressChange.test.tsx +71 -8
  50. package/src/hooks/useOnProgressChange.ts +1 -1
  51. package/src/hooks/usePropsErrorBoundary.test.tsx +57 -0
  52. package/src/hooks/usePropsErrorBoundary.ts +4 -3
  53. package/src/hooks/useVisibleRanges.test.tsx +29 -0
  54. package/src/hooks/useVisibleRanges.tsx +80 -49
  55. package/src/types.ts +1 -1
@@ -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_5756233766785_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){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\":\"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\",\"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_5756233766785_init_data=_ref._worklet_5756233766785_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){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=5756233766785;useVisibleRangesTsx1.__pluginVersion="0.5.2";useVisibleRangesTsx1.__initData=_worklet_5756233766785_init_data;useVisibleRangesTsx1.__stackDetails=_e;return useVisibleRangesTsx1;}({_worklet_5756233766785_init_data:_worklet_5756233766785_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\":\"AAwGA,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","_worklet_5756233766785_init_data","code","location","sourceMap","useVisibleRanges","options","_options$total","total","viewSize","translation","_windowSize","windowSize","loop","Number","isFinite","cachedRanges","useRef","ranges","useDerivedValue","useVisibleRangesTsx1Factory","_ref","isArraysEqual","_e","global","Error","useVisibleRangesTsx1","negativeRange","positiveRange","Math","min","positiveCount","round","negativeCount","currentIndex","value","newRanges","max","current","__closure","__workletHash","__pluginVersion","__initData","__stackDetails","_worklet_14683962274529_init_data","isArraysEqual_useVisibleRangesTsx2Factory","_ref2","a","b","length","every","index"],"sourceRoot":"../../../src","sources":["hooks/useVisibleRanges.tsx"],"mappings":"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","ignoreList":[]}
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":[]}
@@ -2,5 +2,16 @@ import React from "react";
2
2
  import { type ViewStyle } from "react-native";
3
3
  import { ICarouselInstance } from "../types";
4
4
  export type TAnimationStyle = (value: number) => ViewStyle;
5
+ export declare function resolveCarouselLayoutStyle(params: {
6
+ flattenedStyle: Partial<ViewStyle>;
7
+ vertical: boolean;
8
+ measuredSize: number;
9
+ sizeExplicit: boolean;
10
+ legacyWidth?: number;
11
+ legacyHeight?: number;
12
+ }): {
13
+ width: number | import("react-native").Animated.AnimatedNode | `${number}%` | "auto";
14
+ height: number | import("react-native").Animated.AnimatedNode | `${number}%` | "auto";
15
+ };
5
16
  export declare const CarouselLayout: React.ForwardRefExoticComponent<React.RefAttributes<ICarouselInstance>>;
6
17
  //# sourceMappingURL=CarouselLayout.d.ts.map
@@ -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,EAAc,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAS1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAK7C,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;AAE3D,eAAO,MAAM,cAAc,yEA+LzB,CAAC"}
1
+ {"version":3,"file":"CarouselLayout.d.ts","sourceRoot":"","sources":["../../../src/components/CarouselLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAS1D,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"}
@@ -3,6 +3,11 @@ import type { SharedValue } from "react-native-reanimated";
3
3
  import type { IVisibleRanges } from "../hooks/useVisibleRanges";
4
4
  import type { TCarouselProps } from "../types";
5
5
  export type TAnimationStyle = NonNullable<TCarouselProps["customAnimation"]>;
6
+ export declare function resolveItemMainAxisSize(params: {
7
+ explicitSize?: number;
8
+ effectivePageSize?: number;
9
+ measuredSize: number | null;
10
+ }): number | "100%";
6
11
  export declare const ItemLayout: React.FC<{
7
12
  index: number;
8
13
  handlerOffset: SharedValue<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"ItemLayout.d.ts","sourceRoot":"","sources":["../../../src/components/ItemLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAU3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAE7E,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,aAAa,EAAE,cAAc,CAAC;IAC9B,cAAc,EAAE,eAAe,CAAC;IAChC,QAAQ,EAAE,CAAC,GAAG,EAAE;QACd,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;KACrC,KAAK,KAAK,CAAC,YAAY,CAAC;CAC1B,CAwJA,CAAC"}
1
+ {"version":3,"file":"ItemLayout.d.ts","sourceRoot":"","sources":["../../../src/components/ItemLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAU3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAE7E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,mBAQA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,aAAa,EAAE,cAAc,CAAC;IAC9B,cAAc,EAAE,eAAe,CAAC;IAChC,QAAQ,EAAE,CAAC,GAAG,EAAE;QACd,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;KACrC,KAAK,KAAK,CAAC,YAAY,CAAC;CAC1B,CAkKA,CAAC"}
@@ -10,6 +10,7 @@ interface Props {
10
10
  loop: boolean;
11
11
  size: number;
12
12
  windowSize?: number;
13
+ defaultIndex: number;
13
14
  autoFillData: boolean;
14
15
  offsetX: SharedValue<number>;
15
16
  handlerOffset: SharedValue<number>;
@@ -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,CA+ElC,CAAC"}
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;AAe5E,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;AA4eD,eAAO,MAAM,iBAAiB,oCAAqB,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,QAkFnF"}
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;AAExD,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,CAmFjB"}
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 use `worklet`, Details: https://docs.swmansion.com/react-native-reanimated/docs/2.2.0/worklets/
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,8 +1,8 @@
1
1
  {
2
2
  "name": "react-native-reanimated-carousel",
3
- "version": "5.0.0-beta.5",
3
+ "version": "5.0.0-beta.7",
4
4
  "packageManager": "yarn@4.0.2",
5
- "description": "Simple carousel component.fully implemented using Reanimated 2.Infinitely scrolling, very smooth.",
5
+ "description": "A performant, customizable carousel for React Native powered by Reanimated.",
6
6
  "author": "Doho <zhaodonghao586@outlook.com> (https://github.com/dohooo)",
7
7
  "license": "MIT",
8
8
  "homepage": "https://rn-carousel.dev/",
@@ -45,6 +45,8 @@
45
45
  "precommit": "yarn lint:fix && yarn format:fix",
46
46
  "e2e": "APP_ID=${APP_ID:-com.react-native-reanimated-carousel.example} maestro test example/app/app/demos/",
47
47
  "e2e:comprehensive": "APP_ID=${APP_ID:-com.react-native-reanimated-carousel.example} maestro test e2e/",
48
+ "compat:expo": "bash scripts/test-packed-expo-consumer.sh",
49
+ "web:smoke": "playwright test --config=playwright.config.ts",
48
50
  "changeset:check": "node scripts/check-changeset-style.mjs"
49
51
  },
50
52
  "resolutions": {
@@ -57,7 +59,7 @@
57
59
  "react": ">=18.0.0",
58
60
  "react-native": ">=0.80.0",
59
61
  "react-native-gesture-handler": ">=2.9.0",
60
- "react-native-reanimated": ">=4.0.0",
62
+ "react-native-reanimated": ">=4.1.0",
61
63
  "react-native-worklets": ">=0.5.0"
62
64
  },
63
65
  "devDependencies": {
@@ -72,11 +74,13 @@
72
74
  "@changesets/changelog-github": "^0.5.0",
73
75
  "@changesets/cli": "latest",
74
76
  "@commitlint/config-conventional": "^11.0.0",
77
+ "@playwright/test": "1.61.1",
75
78
  "@react-native/babel-preset": "0.81.1",
76
79
  "@testing-library/jest-native": "^4.0.4",
77
80
  "@testing-library/react-hooks": "^8.0.0",
78
81
  "@testing-library/react-native": "^13.3.3",
79
82
  "@types/jest": "^29.2.5",
83
+ "@types/node": "22.20.1",
80
84
  "@types/react": "^19.1.10",
81
85
  "@types/react-native": "^0.66.16",
82
86
  "@types/react-test-renderer": "^19.1.0",
@@ -139,7 +143,12 @@
139
143
  "configFile": "./babel.config.js"
140
144
  }
141
145
  ],
142
- "typescript"
146
+ [
147
+ "typescript",
148
+ {
149
+ "project": "tsconfig.build.json"
150
+ }
151
+ ]
143
152
  ],
144
153
  "exclude": "**/*.test.{ts,tsx}"
145
154
  },
@@ -10,6 +10,8 @@ import { act, render, waitFor } from "@testing-library/react-native";
10
10
  import { fireGestureHandler, getByGestureTestId } from "react-native-gesture-handler/jest-utils";
11
11
 
12
12
  import Carousel from "./Carousel";
13
+ import { resolveCarouselLayoutStyle } from "./CarouselLayout";
14
+ import { resolveItemMainAxisSize } from "./ItemLayout";
13
15
 
14
16
  import type { TCarouselProps } from "../types";
15
17
 
@@ -1002,6 +1004,156 @@ describe("Test the real swipe behavior of Carousel to ensure it's working as exp
1002
1004
  });
1003
1005
 
1004
1006
  describe("Carousel sizing and measurement", () => {
1007
+ it.each([
1008
+ {
1009
+ name: "horizontal",
1010
+ vertical: false,
1011
+ flattenedStyle: { height: slideHeight },
1012
+ expected: { width: "100%", height: slideHeight },
1013
+ },
1014
+ {
1015
+ name: "vertical",
1016
+ vertical: true,
1017
+ flattenedStyle: { width: slideWidth },
1018
+ expected: { width: slideWidth, height: "100%" },
1019
+ },
1020
+ ])("issue #890: keeps an auto-sized $name main axis responsive", (scenario) => {
1021
+ expect(
1022
+ resolveCarouselLayoutStyle({
1023
+ flattenedStyle: scenario.flattenedStyle,
1024
+ vertical: scenario.vertical,
1025
+ measuredSize: 350,
1026
+ sizeExplicit: false,
1027
+ })
1028
+ ).toEqual(scenario.expected);
1029
+ });
1030
+
1031
+ it.each([
1032
+ {
1033
+ name: "legacy width",
1034
+ vertical: false,
1035
+ legacyWidth: 350,
1036
+ legacyHeight: undefined,
1037
+ expected: { width: 350, height: "100%" },
1038
+ },
1039
+ {
1040
+ name: "legacy height",
1041
+ vertical: true,
1042
+ legacyWidth: undefined,
1043
+ legacyHeight: 350,
1044
+ expected: { width: "100%", height: 350 },
1045
+ },
1046
+ ])("issue #890: preserves $name behavior", (scenario) => {
1047
+ expect(
1048
+ resolveCarouselLayoutStyle({
1049
+ flattenedStyle: {},
1050
+ vertical: scenario.vertical,
1051
+ measuredSize: 350,
1052
+ sizeExplicit: false,
1053
+ legacyWidth: scenario.legacyWidth,
1054
+ legacyHeight: scenario.legacyHeight,
1055
+ })
1056
+ ).toEqual(scenario.expected);
1057
+ });
1058
+
1059
+ it("issue #890: preserves explicit item size behavior", () => {
1060
+ expect(
1061
+ resolveCarouselLayoutStyle({
1062
+ flattenedStyle: { height: slideHeight },
1063
+ vertical: false,
1064
+ measuredSize: 350,
1065
+ sizeExplicit: true,
1066
+ })
1067
+ ).toEqual({ width: 350, height: slideHeight });
1068
+ });
1069
+
1070
+ it("issue #890: prefers the latest page size over a stale item measurement", () => {
1071
+ expect(
1072
+ resolveItemMainAxisSize({
1073
+ effectivePageSize: 516,
1074
+ measuredSize: 316,
1075
+ })
1076
+ ).toBe(516);
1077
+ });
1078
+
1079
+ it("issue #890: preserves explicit and measured item-size fallbacks", () => {
1080
+ expect(
1081
+ resolveItemMainAxisSize({
1082
+ explicitSize: 280,
1083
+ effectivePageSize: 516,
1084
+ measuredSize: 316,
1085
+ })
1086
+ ).toBe(280);
1087
+ expect(resolveItemMainAxisSize({ measuredSize: 316 })).toBe(316);
1088
+ });
1089
+
1090
+ it("issue #890: keeps the active page aligned when an auto-sized layout changes", async () => {
1091
+ const observedOffset = { current: 0 };
1092
+ let nextSlide: ((opts?: { animated?: boolean }) => void) | undefined;
1093
+
1094
+ const Wrapper: FC<Partial<TCarouselProps<string>>> = React.forwardRef((customProps, ref) => {
1095
+ const progressAnimVal = useSharedValue(0);
1096
+ const scrollOffsetValue = useSharedValue(0);
1097
+ const defaultRenderItem = ({
1098
+ item,
1099
+ index,
1100
+ }: {
1101
+ item: string;
1102
+ index: number;
1103
+ }) => (
1104
+ <Animated.View testID={`carousel-item-${index}`} style={{ flex: 1 }}>
1105
+ {item}
1106
+ </Animated.View>
1107
+ );
1108
+ const { renderItem = defaultRenderItem, ...defaultProps } = createDefaultProps(
1109
+ progressAnimVal,
1110
+ customProps
1111
+ );
1112
+
1113
+ useDerivedValue(() => {
1114
+ observedOffset.current = scrollOffsetValue.value;
1115
+ }, [scrollOffsetValue]);
1116
+
1117
+ return (
1118
+ <Carousel
1119
+ {...defaultProps}
1120
+ ref={ref}
1121
+ renderItem={renderItem}
1122
+ scrollOffsetValue={scrollOffsetValue}
1123
+ />
1124
+ );
1125
+ });
1126
+
1127
+ const { getByTestId } = render(
1128
+ <Wrapper
1129
+ ref={(instance) => {
1130
+ if (instance) nextSlide = instance.next;
1131
+ }}
1132
+ style={{ height: slideHeight }}
1133
+ />
1134
+ );
1135
+ const contentContainer = getByTestId("carousel-content-container");
1136
+
1137
+ act(() => {
1138
+ contentContainer.props.onLayout({
1139
+ nativeEvent: { layout: { width: 320, height: slideHeight } },
1140
+ });
1141
+ jest.runOnlyPendingTimers();
1142
+ });
1143
+
1144
+ nextSlide?.({ animated: false });
1145
+ await waitFor(() => expect(observedOffset.current).toBe(-320));
1146
+
1147
+ act(() => {
1148
+ contentContainer.props.onLayout({
1149
+ nativeEvent: { layout: { width: 520, height: slideHeight } },
1150
+ });
1151
+ jest.runOnlyPendingTimers();
1152
+ });
1153
+
1154
+ await waitFor(() => expect(observedOffset.current).toBe(-520));
1155
+ });
1156
+
1005
1157
  it("should render items even before onLayout provides size (flex-based sizing)", async () => {
1006
1158
  const progress = { current: 0 };
1007
1159
  const Wrapper = createCarousel(progress);
@@ -15,6 +15,34 @@ import { ScrollViewGesture } from "./ScrollViewGesture";
15
15
 
16
16
  export type TAnimationStyle = (value: number) => ViewStyle;
17
17
 
18
+ export function resolveCarouselLayoutStyle(params: {
19
+ flattenedStyle: Partial<ViewStyle>;
20
+ vertical: boolean;
21
+ measuredSize: number;
22
+ sizeExplicit: boolean;
23
+ legacyWidth?: number;
24
+ legacyHeight?: number;
25
+ }) {
26
+ "worklet";
27
+
28
+ const { flattenedStyle, vertical, measuredSize, sizeExplicit, legacyWidth, legacyHeight } =
29
+ params;
30
+ const { width, height } = flattenedStyle;
31
+ const hasLegacyMainAxisSize = vertical
32
+ ? typeof legacyHeight === "number" && legacyHeight > 0
33
+ : typeof legacyWidth === "number" && legacyWidth > 0;
34
+ const shouldUseMeasuredMainAxisSize = sizeExplicit || hasLegacyMainAxisSize;
35
+ const resolvedMainAxisSize = measuredSize || "100%";
36
+
37
+ return {
38
+ width:
39
+ width ?? (vertical ? "100%" : shouldUseMeasuredMainAxisSize ? resolvedMainAxisSize : "100%"),
40
+ height:
41
+ height ??
42
+ (vertical ? (shouldUseMeasuredMainAxisSize ? resolvedMainAxisSize : "100%") : "100%"),
43
+ };
44
+ }
45
+
18
46
  export const CarouselLayout = React.forwardRef<ICarouselInstance>((_props, ref) => {
19
47
  const { props, common } = useGlobalState();
20
48
 
@@ -46,9 +74,11 @@ export const CarouselLayout = React.forwardRef<ICarouselInstance>((_props, ref)
46
74
  onProgressChange,
47
75
  customAnimation,
48
76
  defaultIndex,
77
+ width: legacyWidth,
78
+ height: legacyHeight,
49
79
  } = props;
50
80
 
51
- const { size, handlerOffset, resolvedSize, sizePhase } = common;
81
+ const { size, handlerOffset, resolvedSize, sizePhase, sizeExplicit } = common;
52
82
  const layoutConfig = useLayoutConfig({ ...props, size });
53
83
 
54
84
  const isSizeReady = useDerivedValue(() => {
@@ -157,18 +187,31 @@ export const CarouselLayout = React.forwardRef<ICarouselInstance>((_props, ref)
157
187
  const flattenedStyle = StyleSheet.flatten(style) || {};
158
188
 
159
189
  const layoutStyle = useAnimatedStyle(() => {
160
- const { width, height } = flattenedStyle;
161
190
  const measuredSize = resolvedSize.value ?? 0;
162
-
163
- const computedWidth = width ?? (vertical ? "100%" : measuredSize || "100%");
164
- const computedHeight = height ?? (vertical ? measuredSize || "100%" : "100%");
191
+ const { width, height } = resolveCarouselLayoutStyle({
192
+ flattenedStyle,
193
+ vertical: !!vertical,
194
+ measuredSize,
195
+ sizeExplicit,
196
+ legacyWidth,
197
+ legacyHeight,
198
+ });
165
199
 
166
200
  return {
167
- width: computedWidth,
168
- height: computedHeight,
201
+ width,
202
+ height,
169
203
  opacity: isSizeReady.value ? 1 : 0,
170
204
  };
171
- }, [flattenedStyle, isSizeReady, vertical, resolvedSize, sizePhase]);
205
+ }, [
206
+ flattenedStyle,
207
+ isSizeReady,
208
+ vertical,
209
+ resolvedSize,
210
+ sizePhase,
211
+ sizeExplicit,
212
+ legacyWidth,
213
+ legacyHeight,
214
+ ]);
172
215
 
173
216
  return (
174
217
  <GestureHandlerRootView testID={testID} style={[styles.layoutContainer, style]}>
@@ -196,6 +239,7 @@ export const CarouselLayout = React.forwardRef<ICarouselInstance>((_props, ref)
196
239
  loop={loop}
197
240
  size={size}
198
241
  windowSize={windowSize}
242
+ defaultIndex={defaultIndex}
199
243
  autoFillData={autoFillData}
200
244
  offsetX={offsetX}
201
245
  handlerOffset={handlerOffset}
@@ -19,6 +19,20 @@ import { sanitizeAnimationStyle } from "../utils/sanitize-animation-style";
19
19
 
20
20
  export type TAnimationStyle = NonNullable<TCarouselProps["customAnimation"]>;
21
21
 
22
+ export function resolveItemMainAxisSize(params: {
23
+ explicitSize?: number;
24
+ effectivePageSize?: number;
25
+ measuredSize: number | null;
26
+ }) {
27
+ "worklet";
28
+
29
+ const { explicitSize, effectivePageSize, measuredSize } = params;
30
+
31
+ return typeof explicitSize === "number"
32
+ ? explicitSize
33
+ : (effectivePageSize ?? measuredSize ?? "100%");
34
+ }
35
+
22
36
  export const ItemLayout: React.FC<{
23
37
  index: number;
24
38
  handlerOffset: SharedValue<number>;
@@ -71,15 +85,25 @@ export const ItemLayout: React.FC<{
71
85
  const widthCandidate = vertical ? width : (explicitItemSize ?? explicitAxisSize);
72
86
  const heightCandidate = vertical ? (explicitItemSize ?? explicitAxisSize) : height;
73
87
 
74
- const computedWidth =
75
- typeof widthCandidate === "number"
88
+ const computedWidth = vertical
89
+ ? typeof widthCandidate === "number"
76
90
  ? widthCandidate
77
- : (measuredSize.value.width ?? (vertical ? "100%" : (effectivePageSize ?? "100%")));
78
-
79
- const computedHeight =
80
- typeof heightCandidate === "number"
91
+ : (measuredSize.value.width ?? "100%")
92
+ : resolveItemMainAxisSize({
93
+ explicitSize: widthCandidate,
94
+ effectivePageSize,
95
+ measuredSize: measuredSize.value.width,
96
+ });
97
+
98
+ const computedHeight = vertical
99
+ ? resolveItemMainAxisSize({
100
+ explicitSize: heightCandidate,
101
+ effectivePageSize,
102
+ measuredSize: measuredSize.value.height,
103
+ })
104
+ : typeof heightCandidate === "number"
81
105
  ? heightCandidate
82
- : (measuredSize.value.height ?? (vertical ? (effectivePageSize ?? "100%") : "100%"));
106
+ : (measuredSize.value.height ?? "100%");
83
107
 
84
108
  return {
85
109
  width: computedWidth,
@@ -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
- negativeRange: [0, 0],
59
- positiveRange: [0, Math.min(dataLength - 1, (windowSize ?? dataLength) - 1)],
60
- }),
61
- [dataLength, windowSize]
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);