react-native-reanimated-carousel 3.4.0 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/lib/commonjs/Carousel.js +1 -1
  2. package/lib/commonjs/Carousel.js.map +1 -1
  3. package/lib/commonjs/LazyView.js +1 -1
  4. package/lib/commonjs/LazyView.js.map +1 -1
  5. package/lib/commonjs/ScrollViewGesture.js +1 -1
  6. package/lib/commonjs/ScrollViewGesture.js.map +1 -1
  7. package/lib/commonjs/hooks/computeNewIndexWhenDataChanges.js +1 -1
  8. package/lib/commonjs/hooks/computeNewIndexWhenDataChanges.js.map +1 -1
  9. package/lib/commonjs/hooks/index.test.js +1 -1
  10. package/lib/commonjs/hooks/index.test.js.map +1 -1
  11. package/lib/commonjs/hooks/useAutoPlay.js.map +1 -1
  12. package/lib/commonjs/hooks/useCarouselController.js +1 -1
  13. package/lib/commonjs/hooks/useCarouselController.js.map +1 -1
  14. package/lib/commonjs/hooks/useCommonVariables.js +1 -1
  15. package/lib/commonjs/hooks/useCommonVariables.js.map +1 -1
  16. package/lib/commonjs/hooks/useInitProps.js +1 -1
  17. package/lib/commonjs/hooks/useInitProps.js.map +1 -1
  18. package/lib/commonjs/hooks/useOffsetX.js +1 -1
  19. package/lib/commonjs/hooks/useOffsetX.js.map +1 -1
  20. package/lib/commonjs/hooks/useOnProgressChange.js +1 -1
  21. package/lib/commonjs/hooks/useOnProgressChange.js.map +1 -1
  22. package/lib/commonjs/hooks/useVisibleRanges.js +1 -1
  23. package/lib/commonjs/hooks/useVisibleRanges.js.map +1 -1
  24. package/lib/commonjs/index.js +1 -1
  25. package/lib/commonjs/index.js.map +1 -1
  26. package/lib/commonjs/layouts/BaseLayout.js +1 -1
  27. package/lib/commonjs/layouts/BaseLayout.js.map +1 -1
  28. package/lib/commonjs/layouts/ParallaxLayout.js +1 -1
  29. package/lib/commonjs/layouts/ParallaxLayout.js.map +1 -1
  30. package/lib/commonjs/layouts/normal.js +1 -1
  31. package/lib/commonjs/layouts/normal.js.map +1 -1
  32. package/lib/commonjs/layouts/parallax.js +1 -1
  33. package/lib/commonjs/layouts/parallax.js.map +1 -1
  34. package/lib/commonjs/layouts/stack.js +1 -1
  35. package/lib/commonjs/layouts/stack.js.map +1 -1
  36. package/lib/commonjs/utils/computedWithAutoFillData.js +1 -1
  37. package/lib/commonjs/utils/computedWithAutoFillData.js.map +1 -1
  38. package/lib/commonjs/utils/dealWithAnimation.js +1 -1
  39. package/lib/commonjs/utils/dealWithAnimation.js.map +1 -1
  40. package/lib/commonjs/utils/handlerOffsetDirection.js +1 -1
  41. package/lib/commonjs/utils/handlerOffsetDirection.js.map +1 -1
  42. package/lib/commonjs/utils/log.js +1 -1
  43. package/lib/commonjs/utils/log.js.map +1 -1
  44. package/lib/module/Carousel.js +3 -2
  45. package/lib/module/Carousel.js.map +1 -1
  46. package/lib/module/LazyView.js.map +1 -1
  47. package/lib/module/ScrollViewGesture.js.map +1 -1
  48. package/lib/module/hooks/useAutoPlay.js.map +1 -1
  49. package/lib/module/index.js +1 -0
  50. package/lib/module/index.js.map +1 -1
  51. package/lib/module/layouts/ParallaxLayout.js.map +1 -1
  52. package/lib/typescript/LazyView.d.ts +2 -1
  53. package/lib/typescript/ScrollViewGesture.d.ts +2 -1
  54. package/lib/typescript/index.d.ts +2 -1
  55. package/lib/typescript/layouts/ParallaxLayout.d.ts +3 -2
  56. package/lib/typescript/types.d.ts +0 -1
  57. package/package.json +12 -10
  58. package/src/Carousel.tsx +28 -25
  59. package/src/LazyView.tsx +2 -1
  60. package/src/ScrollViewGesture.tsx +3 -4
  61. package/src/hooks/useAutoPlay.ts +1 -1
  62. package/src/index.tsx +2 -0
  63. package/src/layouts/ParallaxLayout.tsx +3 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["ScrollViewGesture.tsx"],"names":["React","PanGestureHandler","Animated","cancelAnimation","measure","runOnJS","useAnimatedGestureHandler","useAnimatedReaction","useAnimatedRef","useDerivedValue","useSharedValue","withDecay","Easing","CTX","dealWithAnimation","IScrollViewGesture","props","vertical","pagingEnabled","snapEnabled","panGestureHandlerProps","loop","infinite","scrollAnimationDuration","withAnimation","enabled","dataLength","overscrollEnabled","maxScrollDistancePerSwipe","useContext","size","translation","testID","style","onScrollBegin","onScrollEnd","onTouchBegin","onTouchEnd","maxPage","isHorizontal","touching","scrollEndTranslation","scrollEndVelocity","containerRef","getLimit","useCallback","width","containerWidth","withSpring","toValue","onFinished","defaultWithAnimation","type","config","duration","easing","easeOutQuart","isFinished","endWithSpring","origin","value","velocity","finalTranslation","deceleration","Math","abs","offset","computed","ceil","floor","page","finalPage","withProcessTranslation","min","max","nextPage","round","limit","sign","onFinish","activeDecay","resetBoundary","panGestureEventHandler","onStart","_","ctx","validStart","panOffset","onActive","e","translationX","translationY","totalTranslation","overSwipe","dampedTranslation","panTranslation","boundary","fixed","dynamic","translationValue","onEnd","velocityX","velocityY","children","ScrollViewGesture"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport type { StyleProp, ViewStyle } from \"react-native\";\nimport type { PanGestureHandlerGestureEvent } from \"react-native-gesture-handler\";\nimport {\n PanGestureHandler,\n} from \"react-native-gesture-handler\";\nimport Animated, {\n cancelAnimation,\n measure,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedReaction,\n useAnimatedRef,\n useDerivedValue,\n useSharedValue,\n withDecay,\n} from \"react-native-reanimated\";\n\nimport { Easing } from \"./constants\";\nimport { CTX } from \"./store\";\nimport type { WithTimingAnimation } from \"./types\";\nimport { dealWithAnimation } from \"./utils/dealWithAnimation\";\n\ninterface GestureContext extends Record<string, unknown> {\n validStart: boolean\n panOffset: number\n max: number\n}\n\ninterface Props {\n size: number\n infinite?: boolean\n testID?: string\n style?: StyleProp<ViewStyle>\n onScrollBegin?: () => void\n onScrollEnd?: () => void\n onTouchBegin?: () => void\n onTouchEnd?: () => void\n translation: Animated.SharedValue<number>\n}\n\nconst IScrollViewGesture: React.FC<Props> = (props) => {\n const {\n props: {\n vertical,\n pagingEnabled,\n snapEnabled,\n panGestureHandlerProps,\n loop: infinite,\n scrollAnimationDuration,\n withAnimation,\n enabled,\n dataLength,\n overscrollEnabled,\n maxScrollDistancePerSwipe,\n },\n } = React.useContext(CTX);\n\n const {\n size,\n translation,\n testID,\n style = {},\n onScrollBegin,\n onScrollEnd,\n onTouchBegin,\n onTouchEnd,\n } = props;\n\n const maxPage = dataLength;\n const isHorizontal = useDerivedValue(() => !vertical, [vertical]);\n const touching = useSharedValue(false);\n const scrollEndTranslation = useSharedValue(0);\n const scrollEndVelocity = useSharedValue(0);\n const containerRef = useAnimatedRef<Animated.View>();\n\n // Get the limit of the scroll.\n const getLimit = React.useCallback(() => {\n \"worklet\";\n\n if (!infinite && !overscrollEnabled) {\n const { width: containerWidth = 0 } = measure(containerRef);\n\n // If the item's total width is less than the container's width, then there is no need to scroll.\n if (dataLength * size < containerWidth)\n return 0;\n\n // Disable the \"overscroll\" effect\n return dataLength * size - containerWidth;\n }\n\n return dataLength * size;\n }, [infinite, size, dataLength, overscrollEnabled]);\n\n const withSpring = React.useCallback(\n (toValue: number, onFinished?: () => void) => {\n \"worklet\";\n const defaultWithAnimation: WithTimingAnimation = {\n type: \"timing\",\n config: {\n duration: scrollAnimationDuration + 100,\n easing: Easing.easeOutQuart,\n },\n };\n\n return dealWithAnimation(withAnimation ?? defaultWithAnimation)(\n toValue,\n (isFinished: boolean) => {\n \"worklet\";\n if (isFinished)\n onFinished && runOnJS(onFinished)();\n },\n );\n },\n [scrollAnimationDuration, withAnimation],\n );\n\n const endWithSpring = React.useCallback(\n (onFinished?: () => void) => {\n \"worklet\";\n const origin = translation.value;\n const velocity = scrollEndVelocity.value;\n // Default to scroll in the direction of the slide (with deceleration)\n let finalTranslation: number = withDecay({ velocity, deceleration: 0.999 });\n\n // If the distance of the swipe exceeds the max scroll distance, keep the view at the current position\n if (typeof maxScrollDistancePerSwipe === \"number\" && Math.abs(scrollEndTranslation.value) > maxScrollDistancePerSwipe) {\n finalTranslation = origin;\n }\n else {\n /**\n * The page size is the same as the item size.\n * If direction is vertical, the page size is the height of the item.\n * If direction is horizontal, the page size is the width of the item.\n *\n * `page size` equals to `size` variable.\n * */\n if (pagingEnabled) {\n // distance with direction\n const offset = -(scrollEndTranslation.value >= 0 ? 1 : -1); // 1 or -1\n const computed = offset < 0 ? Math.ceil : Math.floor;\n const page = computed(-translation.value / size);\n\n if (infinite) {\n const finalPage = page + offset;\n finalTranslation = withSpring(withProcessTranslation(-finalPage * size), onFinished);\n }\n else {\n const finalPage = Math.min(maxPage - 1, Math.max(0, page + offset));\n finalTranslation = withSpring(withProcessTranslation(-finalPage * size), onFinished);\n }\n }\n\n if (!pagingEnabled && snapEnabled) {\n // scroll to the nearest item\n const nextPage = Math.round((origin + velocity * 0.4) / size) * size;\n finalTranslation = withSpring(withProcessTranslation(nextPage), onFinished);\n }\n }\n\n translation.value = finalTranslation;\n\n function withProcessTranslation(translation: number) {\n if (!infinite && !overscrollEnabled) {\n const limit = getLimit();\n const sign = Math.sign(translation);\n return sign * Math.max(0, Math.min(limit, Math.abs(translation)));\n }\n\n return translation;\n }\n },\n [\n withSpring,\n size,\n maxPage,\n infinite,\n snapEnabled,\n translation,\n pagingEnabled,\n scrollEndVelocity.value,\n maxScrollDistancePerSwipe,\n scrollEndTranslation.value,\n ],\n );\n\n const onFinish = React.useCallback(\n (isFinished: boolean) => {\n \"worklet\";\n if (isFinished) {\n touching.value = false;\n onScrollEnd && runOnJS(onScrollEnd)();\n }\n },\n [onScrollEnd, touching],\n );\n\n const activeDecay = React.useCallback(() => {\n \"worklet\";\n touching.value = true;\n translation.value = withDecay(\n { velocity: scrollEndVelocity.value },\n isFinished => onFinish(isFinished as boolean),\n );\n }, [onFinish, scrollEndVelocity.value, touching, translation]);\n\n const resetBoundary = React.useCallback(() => {\n \"worklet\";\n if (touching.value)\n return;\n\n if (translation.value > 0) {\n if (scrollEndTranslation.value < 0) {\n activeDecay();\n return;\n }\n if (!infinite) {\n translation.value = withSpring(0);\n return;\n }\n }\n\n if (translation.value < -((maxPage - 1) * size)) {\n if (scrollEndTranslation.value > 0) {\n activeDecay();\n return;\n }\n if (!infinite)\n translation.value = withSpring(-((maxPage - 1) * size));\n }\n }, [\n touching.value,\n translation,\n maxPage,\n size,\n scrollEndTranslation.value,\n infinite,\n activeDecay,\n withSpring,\n ]);\n\n useAnimatedReaction(\n () => translation.value,\n () => {\n if (!pagingEnabled)\n resetBoundary();\n },\n [pagingEnabled, resetBoundary],\n );\n\n function withProcessTranslation(translation: number) {\n \"worklet\";\n\n if (!infinite && !overscrollEnabled) {\n const limit = getLimit();\n const sign = Math.sign(translation);\n return sign * Math.max(0, Math.min(limit, Math.abs(translation)));\n }\n\n return translation;\n }\n\n const panGestureEventHandler = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n GestureContext\n >(\n {\n onStart: (_, ctx) => {\n touching.value = true;\n ctx.validStart = true;\n onScrollBegin && runOnJS(onScrollBegin)();\n\n ctx.max = (maxPage - 1) * size;\n if (!infinite && !overscrollEnabled)\n ctx.max = getLimit();\n\n ctx.panOffset = translation.value;\n },\n onActive: (e, ctx) => {\n if (ctx.validStart) {\n ctx.validStart = false;\n cancelAnimation(translation);\n }\n touching.value = true;\n let { translationX, translationY } = e;\n\n const totalTranslation = isHorizontal.value ? translationX : translationY;\n\n if (typeof maxScrollDistancePerSwipe === \"number\" && Math.abs(totalTranslation) > maxScrollDistancePerSwipe) {\n const overSwipe = Math.abs(totalTranslation) - maxScrollDistancePerSwipe;\n const dampedTranslation = maxScrollDistancePerSwipe + overSwipe * 0.5;\n\n translationX = isHorizontal.value ? dampedTranslation * Math.sign(translationX) : translationX;\n translationY = !isHorizontal.value ? dampedTranslation * Math.sign(translationY) : translationY;\n }\n\n const panTranslation = isHorizontal.value ? translationX : translationY;\n if (!infinite) {\n if ((translation.value > 0 || translation.value < -ctx.max)) {\n const boundary = translation.value > 0 ? 0 : -ctx.max;\n const fixed = boundary - ctx.panOffset;\n const dynamic = panTranslation - fixed;\n translation.value = boundary + dynamic * 0.5;\n return;\n }\n }\n\n const translationValue = ctx.panOffset + panTranslation;\n\n translation.value = translationValue;\n },\n onEnd: (e, ctx) => {\n const { velocityX, velocityY, translationX, translationY } = e;\n scrollEndVelocity.value = isHorizontal.value\n ? velocityX\n : velocityY;\n scrollEndTranslation.value = isHorizontal.value\n ? translationX\n : translationY;\n\n const totalTranslation = isHorizontal.value ? translationX : translationY;\n\n if (typeof maxScrollDistancePerSwipe === \"number\" && Math.abs(totalTranslation) > maxScrollDistancePerSwipe) {\n const nextPage = Math.round((ctx.panOffset + maxScrollDistancePerSwipe * Math.sign(totalTranslation)) / size) * size;\n translation.value = withSpring(withProcessTranslation(nextPage), onScrollEnd);\n }\n else {\n endWithSpring(onScrollEnd);\n }\n\n if (!infinite)\n touching.value = false;\n },\n },\n [\n pagingEnabled,\n isHorizontal.value,\n infinite,\n maxPage,\n size,\n snapEnabled,\n onScrollBegin,\n onScrollEnd,\n ],\n );\n\n return (\n <PanGestureHandler\n {...panGestureHandlerProps}\n enabled={enabled}\n onGestureEvent={panGestureEventHandler}\n >\n <Animated.View\n ref={containerRef}\n testID={testID}\n style={style}\n onTouchStart={onTouchBegin}\n onTouchEnd={onTouchEnd}\n >\n {props.children}\n </Animated.View>\n </PanGestureHandler>\n );\n};\n\nexport const ScrollViewGesture = IScrollViewGesture;\n"]}
1
+ {"version":3,"sources":["ScrollViewGesture.tsx"],"names":["React","PanGestureHandler","Animated","cancelAnimation","measure","runOnJS","useAnimatedGestureHandler","useAnimatedReaction","useAnimatedRef","useDerivedValue","useSharedValue","withDecay","Easing","CTX","dealWithAnimation","IScrollViewGesture","props","vertical","pagingEnabled","snapEnabled","panGestureHandlerProps","loop","infinite","scrollAnimationDuration","withAnimation","enabled","dataLength","overscrollEnabled","maxScrollDistancePerSwipe","useContext","size","translation","testID","style","onScrollBegin","onScrollEnd","onTouchBegin","onTouchEnd","maxPage","isHorizontal","touching","scrollEndTranslation","scrollEndVelocity","containerRef","getLimit","useCallback","width","containerWidth","withSpring","toValue","onFinished","defaultWithAnimation","type","config","duration","easing","easeOutQuart","isFinished","endWithSpring","origin","value","velocity","finalTranslation","deceleration","Math","abs","offset","computed","ceil","floor","page","finalPage","withProcessTranslation","min","max","nextPage","round","limit","sign","onFinish","activeDecay","resetBoundary","panGestureEventHandler","onStart","_","ctx","validStart","panOffset","onActive","e","translationX","translationY","totalTranslation","overSwipe","dampedTranslation","panTranslation","boundary","fixed","dynamic","translationValue","onEnd","velocityX","velocityY","children","ScrollViewGesture"],"mappings":"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","sourcesContent":["import type { PropsWithChildren } from \"react\";\nimport React from \"react\";\nimport type { StyleProp, ViewStyle } from \"react-native\";\nimport type { PanGestureHandlerGestureEvent } from \"react-native-gesture-handler\";\nimport { PanGestureHandler } from \"react-native-gesture-handler\";\nimport Animated, {\n cancelAnimation,\n measure,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedReaction,\n useAnimatedRef,\n useDerivedValue,\n useSharedValue,\n withDecay,\n} from \"react-native-reanimated\";\n\nimport { Easing } from \"./constants\";\nimport { CTX } from \"./store\";\nimport type { WithTimingAnimation } from \"./types\";\nimport { dealWithAnimation } from \"./utils/dealWithAnimation\";\n\ninterface GestureContext extends Record<string, unknown> {\n validStart: boolean\n panOffset: number\n max: number\n}\n\ninterface Props {\n size: number\n infinite?: boolean\n testID?: string\n style?: StyleProp<ViewStyle>\n onScrollBegin?: () => void\n onScrollEnd?: () => void\n onTouchBegin?: () => void\n onTouchEnd?: () => void\n translation: Animated.SharedValue<number>\n}\n\nconst IScrollViewGesture: React.FC<PropsWithChildren<Props>> = (props) => {\n const {\n props: {\n vertical,\n pagingEnabled,\n snapEnabled,\n panGestureHandlerProps,\n loop: infinite,\n scrollAnimationDuration,\n withAnimation,\n enabled,\n dataLength,\n overscrollEnabled,\n maxScrollDistancePerSwipe,\n },\n } = React.useContext(CTX);\n\n const {\n size,\n translation,\n testID,\n style = {},\n onScrollBegin,\n onScrollEnd,\n onTouchBegin,\n onTouchEnd,\n } = props;\n\n const maxPage = dataLength;\n const isHorizontal = useDerivedValue(() => !vertical, [vertical]);\n const touching = useSharedValue(false);\n const scrollEndTranslation = useSharedValue(0);\n const scrollEndVelocity = useSharedValue(0);\n const containerRef = useAnimatedRef<Animated.View>();\n\n // Get the limit of the scroll.\n const getLimit = React.useCallback(() => {\n \"worklet\";\n\n if (!infinite && !overscrollEnabled) {\n const { width: containerWidth = 0 } = measure(containerRef);\n\n // If the item's total width is less than the container's width, then there is no need to scroll.\n if (dataLength * size < containerWidth)\n return 0;\n\n // Disable the \"overscroll\" effect\n return dataLength * size - containerWidth;\n }\n\n return dataLength * size;\n }, [infinite, size, dataLength, overscrollEnabled]);\n\n const withSpring = React.useCallback(\n (toValue: number, onFinished?: () => void) => {\n \"worklet\";\n const defaultWithAnimation: WithTimingAnimation = {\n type: \"timing\",\n config: {\n duration: scrollAnimationDuration + 100,\n easing: Easing.easeOutQuart,\n },\n };\n\n return dealWithAnimation(withAnimation ?? defaultWithAnimation)(\n toValue,\n (isFinished: boolean) => {\n \"worklet\";\n if (isFinished)\n onFinished && runOnJS(onFinished)();\n },\n );\n },\n [scrollAnimationDuration, withAnimation],\n );\n\n const endWithSpring = React.useCallback(\n (onFinished?: () => void) => {\n \"worklet\";\n const origin = translation.value;\n const velocity = scrollEndVelocity.value;\n // Default to scroll in the direction of the slide (with deceleration)\n let finalTranslation: number = withDecay({ velocity, deceleration: 0.999 });\n\n // If the distance of the swipe exceeds the max scroll distance, keep the view at the current position\n if (typeof maxScrollDistancePerSwipe === \"number\" && Math.abs(scrollEndTranslation.value) > maxScrollDistancePerSwipe) {\n finalTranslation = origin;\n }\n else {\n /**\n * The page size is the same as the item size.\n * If direction is vertical, the page size is the height of the item.\n * If direction is horizontal, the page size is the width of the item.\n *\n * `page size` equals to `size` variable.\n * */\n if (pagingEnabled) {\n // distance with direction\n const offset = -(scrollEndTranslation.value >= 0 ? 1 : -1); // 1 or -1\n const computed = offset < 0 ? Math.ceil : Math.floor;\n const page = computed(-translation.value / size);\n\n if (infinite) {\n const finalPage = page + offset;\n finalTranslation = withSpring(withProcessTranslation(-finalPage * size), onFinished);\n }\n else {\n const finalPage = Math.min(maxPage - 1, Math.max(0, page + offset));\n finalTranslation = withSpring(withProcessTranslation(-finalPage * size), onFinished);\n }\n }\n\n if (!pagingEnabled && snapEnabled) {\n // scroll to the nearest item\n const nextPage = Math.round((origin + velocity * 0.4) / size) * size;\n finalTranslation = withSpring(withProcessTranslation(nextPage), onFinished);\n }\n }\n\n translation.value = finalTranslation;\n\n function withProcessTranslation(translation: number) {\n if (!infinite && !overscrollEnabled) {\n const limit = getLimit();\n const sign = Math.sign(translation);\n return sign * Math.max(0, Math.min(limit, Math.abs(translation)));\n }\n\n return translation;\n }\n },\n [\n withSpring,\n size,\n maxPage,\n infinite,\n snapEnabled,\n translation,\n pagingEnabled,\n scrollEndVelocity.value,\n maxScrollDistancePerSwipe,\n scrollEndTranslation.value,\n ],\n );\n\n const onFinish = React.useCallback(\n (isFinished: boolean) => {\n \"worklet\";\n if (isFinished) {\n touching.value = false;\n onScrollEnd && runOnJS(onScrollEnd)();\n }\n },\n [onScrollEnd, touching],\n );\n\n const activeDecay = React.useCallback(() => {\n \"worklet\";\n touching.value = true;\n translation.value = withDecay(\n { velocity: scrollEndVelocity.value },\n isFinished => onFinish(isFinished as boolean),\n );\n }, [onFinish, scrollEndVelocity.value, touching, translation]);\n\n const resetBoundary = React.useCallback(() => {\n \"worklet\";\n if (touching.value)\n return;\n\n if (translation.value > 0) {\n if (scrollEndTranslation.value < 0) {\n activeDecay();\n return;\n }\n if (!infinite) {\n translation.value = withSpring(0);\n return;\n }\n }\n\n if (translation.value < -((maxPage - 1) * size)) {\n if (scrollEndTranslation.value > 0) {\n activeDecay();\n return;\n }\n if (!infinite)\n translation.value = withSpring(-((maxPage - 1) * size));\n }\n }, [\n touching.value,\n translation,\n maxPage,\n size,\n scrollEndTranslation.value,\n infinite,\n activeDecay,\n withSpring,\n ]);\n\n useAnimatedReaction(\n () => translation.value,\n () => {\n if (!pagingEnabled)\n resetBoundary();\n },\n [pagingEnabled, resetBoundary],\n );\n\n function withProcessTranslation(translation: number) {\n \"worklet\";\n\n if (!infinite && !overscrollEnabled) {\n const limit = getLimit();\n const sign = Math.sign(translation);\n return sign * Math.max(0, Math.min(limit, Math.abs(translation)));\n }\n\n return translation;\n }\n\n const panGestureEventHandler = useAnimatedGestureHandler<\n PanGestureHandlerGestureEvent,\n GestureContext\n >(\n {\n onStart: (_, ctx) => {\n touching.value = true;\n ctx.validStart = true;\n onScrollBegin && runOnJS(onScrollBegin)();\n\n ctx.max = (maxPage - 1) * size;\n if (!infinite && !overscrollEnabled)\n ctx.max = getLimit();\n\n ctx.panOffset = translation.value;\n },\n onActive: (e, ctx) => {\n if (ctx.validStart) {\n ctx.validStart = false;\n cancelAnimation(translation);\n }\n touching.value = true;\n let { translationX, translationY } = e;\n\n const totalTranslation = isHorizontal.value ? translationX : translationY;\n\n if (typeof maxScrollDistancePerSwipe === \"number\" && Math.abs(totalTranslation) > maxScrollDistancePerSwipe) {\n const overSwipe = Math.abs(totalTranslation) - maxScrollDistancePerSwipe;\n const dampedTranslation = maxScrollDistancePerSwipe + overSwipe * 0.5;\n\n translationX = isHorizontal.value ? dampedTranslation * Math.sign(translationX) : translationX;\n translationY = !isHorizontal.value ? dampedTranslation * Math.sign(translationY) : translationY;\n }\n\n const panTranslation = isHorizontal.value ? translationX : translationY;\n if (!infinite) {\n if ((translation.value > 0 || translation.value < -ctx.max)) {\n const boundary = translation.value > 0 ? 0 : -ctx.max;\n const fixed = boundary - ctx.panOffset;\n const dynamic = panTranslation - fixed;\n translation.value = boundary + dynamic * 0.5;\n return;\n }\n }\n\n const translationValue = ctx.panOffset + panTranslation;\n\n translation.value = translationValue;\n },\n onEnd: (e, ctx) => {\n const { velocityX, velocityY, translationX, translationY } = e;\n scrollEndVelocity.value = isHorizontal.value\n ? velocityX\n : velocityY;\n scrollEndTranslation.value = isHorizontal.value\n ? translationX\n : translationY;\n\n const totalTranslation = isHorizontal.value ? translationX : translationY;\n\n if (typeof maxScrollDistancePerSwipe === \"number\" && Math.abs(totalTranslation) > maxScrollDistancePerSwipe) {\n const nextPage = Math.round((ctx.panOffset + maxScrollDistancePerSwipe * Math.sign(totalTranslation)) / size) * size;\n translation.value = withSpring(withProcessTranslation(nextPage), onScrollEnd);\n }\n else {\n endWithSpring(onScrollEnd);\n }\n\n if (!infinite)\n touching.value = false;\n },\n },\n [\n pagingEnabled,\n isHorizontal.value,\n infinite,\n maxPage,\n size,\n snapEnabled,\n onScrollBegin,\n onScrollEnd,\n ],\n );\n\n return (\n <PanGestureHandler\n {...panGestureHandlerProps}\n enabled={enabled}\n onGestureEvent={panGestureEventHandler}\n >\n <Animated.View\n ref={containerRef}\n testID={testID}\n style={style}\n onTouchStart={onTouchBegin}\n onTouchEnd={onTouchEnd}\n >\n {props.children}\n </Animated.View>\n </PanGestureHandler>\n );\n};\n\nexport const ScrollViewGesture = IScrollViewGesture;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["useAutoPlay.ts"],"names":["React","useAutoPlay","opts","autoPlay","autoPlayReverse","autoPlayInterval","carouselController","prev","next","timer","useRef","stopped","play","useCallback","current","clearTimeout","setTimeout","onFinished","pause","start","useEffect"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAIA,OAAO,SAASC,WAAT,CAAqBC,IAArB,EAKJ;AACD,QAAM;AACJC,IAAAA,QAAQ,GAAG,KADP;AAEJC,IAAAA,eAAe,GAAG,KAFd;AAGJC,IAAAA,gBAHI;AAIJC,IAAAA;AAJI,MAKFJ,IALJ;AAOA,QAAM;AAAEK,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAiBF,kBAAvB;AACA,QAAMG,KAAK,GAAGT,KAAK,CAACU,MAAN,EAAd;AACA,QAAMC,OAAO,GAAGX,KAAK,CAACU,MAAN,CAAsB,CAACP,QAAvB,CAAhB;AAEA,QAAMS,IAAI,GAAGZ,KAAK,CAACa,WAAN,CAAkB,MAAM;AACnC,QAAIF,OAAO,CAACG,OAAZ,EACE;AAEFL,IAAAA,KAAK,CAACK,OAAN,IAAiBC,YAAY,CAACN,KAAK,CAACK,OAAP,CAA7B;AACAL,IAAAA,KAAK,CAACK,OAAN,GAAgBE,UAAU,CAAC,MAAM;AAC/BZ,MAAAA,eAAe,GACXG,IAAI,CAAC;AAAEU,QAAAA,UAAU,EAAEL;AAAd,OAAD,CADO,GAEXJ,IAAI,CAAC;AAAES,QAAAA,UAAU,EAAEL;AAAd,OAAD,CAFR;AAGD,KAJyB,EAIvBP,gBAJuB,CAA1B;AAKD,GAVY,EAUV,CAACD,eAAD,EAAkBC,gBAAlB,EAAoCE,IAApC,EAA0CC,IAA1C,CAVU,CAAb;AAYA,QAAMU,KAAK,GAAGlB,KAAK,CAACa,WAAN,CAAkB,MAAM;AACpC,QAAI,CAACV,QAAL,EACE;AAEFM,IAAAA,KAAK,CAACK,OAAN,IAAiBC,YAAY,CAACN,KAAK,CAACK,OAAP,CAA7B;AACAH,IAAAA,OAAO,CAACG,OAAR,GAAkB,IAAlB;AACD,GANa,EAMX,CAACX,QAAD,CANW,CAAd;AAQA,QAAMgB,KAAK,GAAGnB,KAAK,CAACa,WAAN,CAAkB,MAAM;AACpC,QAAI,CAACV,QAAL,EACE;AAEFQ,IAAAA,OAAO,CAACG,OAAR,GAAkB,KAAlB;AACAF,IAAAA,IAAI;AACL,GANa,EAMX,CAACA,IAAD,EAAOT,QAAP,CANW,CAAd;AAQAH,EAAAA,KAAK,CAACoB,SAAN,CAAgB,MAAM;AACpB,QAAIjB,QAAJ,EACEgB,KAAK,GADP,KAGED,KAAK;AAEP,WAAOA,KAAP;AACD,GAPD,EAOG,CAACA,KAAD,EAAQC,KAAR,EAAehB,QAAf,CAPH;AASA,SAAO;AACLe,IAAAA,KADK;AAELC,IAAAA;AAFK,GAAP;AAID","sourcesContent":["import * as React from \"react\";\n\nimport type { ICarouselController } from \"./useCarouselController\";\n\nexport function useAutoPlay(opts: {\n autoPlay?: boolean\n autoPlayInterval?: number\n autoPlayReverse?: boolean\n carouselController: ICarouselController\n}) {\n const {\n autoPlay = false,\n autoPlayReverse = false,\n autoPlayInterval,\n carouselController,\n } = opts;\n\n const { prev, next } = carouselController;\n const timer = React.useRef<NodeJS.Timer>();\n const stopped = React.useRef<boolean>(!autoPlay);\n\n const play = React.useCallback(() => {\n if (stopped.current)\n return;\n\n timer.current && clearTimeout(timer.current);\n timer.current = setTimeout(() => {\n autoPlayReverse\n ? prev({ onFinished: play })\n : next({ onFinished: play });\n }, autoPlayInterval);\n }, [autoPlayReverse, autoPlayInterval, prev, next]);\n\n const pause = React.useCallback(() => {\n if (!autoPlay)\n return;\n\n timer.current && clearTimeout(timer.current);\n stopped.current = true;\n }, [autoPlay]);\n\n const start = React.useCallback(() => {\n if (!autoPlay)\n return;\n\n stopped.current = false;\n play();\n }, [play, autoPlay]);\n\n React.useEffect(() => {\n if (autoPlay)\n start();\n else\n pause();\n\n return pause;\n }, [pause, start, autoPlay]);\n\n return {\n pause,\n start,\n };\n}\n"]}
1
+ {"version":3,"sources":["useAutoPlay.ts"],"names":["React","useAutoPlay","opts","autoPlay","autoPlayReverse","autoPlayInterval","carouselController","prev","next","timer","useRef","stopped","play","useCallback","current","clearTimeout","setTimeout","onFinished","pause","start","useEffect"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAIA,OAAO,SAASC,WAAT,CAAqBC,IAArB,EAKJ;AACD,QAAM;AACJC,IAAAA,QAAQ,GAAG,KADP;AAEJC,IAAAA,eAAe,GAAG,KAFd;AAGJC,IAAAA,gBAHI;AAIJC,IAAAA;AAJI,MAKFJ,IALJ;AAOA,QAAM;AAAEK,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAiBF,kBAAvB;AACA,QAAMG,KAAK,GAAGT,KAAK,CAACU,MAAN,EAAd;AACA,QAAMC,OAAO,GAAGX,KAAK,CAACU,MAAN,CAAsB,CAACP,QAAvB,CAAhB;AAEA,QAAMS,IAAI,GAAGZ,KAAK,CAACa,WAAN,CAAkB,MAAM;AACnC,QAAIF,OAAO,CAACG,OAAZ,EACE;AAEFL,IAAAA,KAAK,CAACK,OAAN,IAAiBC,YAAY,CAACN,KAAK,CAACK,OAAP,CAA7B;AACAL,IAAAA,KAAK,CAACK,OAAN,GAAgBE,UAAU,CAAC,MAAM;AAC/BZ,MAAAA,eAAe,GACXG,IAAI,CAAC;AAAEU,QAAAA,UAAU,EAAEL;AAAd,OAAD,CADO,GAEXJ,IAAI,CAAC;AAAES,QAAAA,UAAU,EAAEL;AAAd,OAAD,CAFR;AAGD,KAJyB,EAIvBP,gBAJuB,CAA1B;AAKD,GAVY,EAUV,CAACD,eAAD,EAAkBC,gBAAlB,EAAoCE,IAApC,EAA0CC,IAA1C,CAVU,CAAb;AAYA,QAAMU,KAAK,GAAGlB,KAAK,CAACa,WAAN,CAAkB,MAAM;AACpC,QAAI,CAACV,QAAL,EACE;AAEFM,IAAAA,KAAK,CAACK,OAAN,IAAiBC,YAAY,CAACN,KAAK,CAACK,OAAP,CAA7B;AACAH,IAAAA,OAAO,CAACG,OAAR,GAAkB,IAAlB;AACD,GANa,EAMX,CAACX,QAAD,CANW,CAAd;AAQA,QAAMgB,KAAK,GAAGnB,KAAK,CAACa,WAAN,CAAkB,MAAM;AACpC,QAAI,CAACV,QAAL,EACE;AAEFQ,IAAAA,OAAO,CAACG,OAAR,GAAkB,KAAlB;AACAF,IAAAA,IAAI;AACL,GANa,EAMX,CAACA,IAAD,EAAOT,QAAP,CANW,CAAd;AAQAH,EAAAA,KAAK,CAACoB,SAAN,CAAgB,MAAM;AACpB,QAAIjB,QAAJ,EACEgB,KAAK,GADP,KAGED,KAAK;AAEP,WAAOA,KAAP;AACD,GAPD,EAOG,CAACA,KAAD,EAAQC,KAAR,EAAehB,QAAf,CAPH;AASA,SAAO;AACLe,IAAAA,KADK;AAELC,IAAAA;AAFK,GAAP;AAID","sourcesContent":["import * as React from \"react\";\n\nimport type { ICarouselController } from \"./useCarouselController\";\n\nexport function useAutoPlay(opts: {\n autoPlay?: boolean\n autoPlayInterval?: number\n autoPlayReverse?: boolean\n carouselController: ICarouselController\n}) {\n const {\n autoPlay = false,\n autoPlayReverse = false,\n autoPlayInterval,\n carouselController,\n } = opts;\n\n const { prev, next } = carouselController;\n const timer = React.useRef<ReturnType<typeof setTimeout>>();\n const stopped = React.useRef<boolean>(!autoPlay);\n\n const play = React.useCallback(() => {\n if (stopped.current)\n return;\n\n timer.current && clearTimeout(timer.current);\n timer.current = setTimeout(() => {\n autoPlayReverse\n ? prev({ onFinished: play })\n : next({ onFinished: play });\n }, autoPlayInterval);\n }, [autoPlayReverse, autoPlayInterval, prev, next]);\n\n const pause = React.useCallback(() => {\n if (!autoPlay)\n return;\n\n timer.current && clearTimeout(timer.current);\n stopped.current = true;\n }, [autoPlay]);\n\n const start = React.useCallback(() => {\n if (!autoPlay)\n return;\n\n stopped.current = false;\n play();\n }, [play, autoPlay]);\n\n React.useEffect(() => {\n if (autoPlay)\n start();\n else\n pause();\n\n return pause;\n }, [pause, start, autoPlay]);\n\n return {\n pause,\n start,\n };\n}\n"]}
@@ -1,3 +1,4 @@
1
1
  import Carousel from "./Carousel";
2
+ export { ILayoutConfig } from "./layouts/stack";
2
3
  export default Carousel;
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["Carousel"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,YAArB;AAOA,eAAeA,QAAf","sourcesContent":["import Carousel from \"./Carousel\";\nexport type {\n TCarouselProps,\n ICarouselInstance,\n IComputedDirectionTypes,\n} from \"./types\";\n\nexport default Carousel;\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["Carousel","ILayoutConfig"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,YAArB;AAOA,SAASC,aAAT,QAA8B,iBAA9B;AAEA,eAAeD,QAAf","sourcesContent":["import Carousel from \"./Carousel\";\nexport type {\n TCarouselProps,\n ICarouselInstance,\n IComputedDirectionTypes,\n CarouselRenderItem,\n} from \"./types\";\nexport { ILayoutConfig } from \"./layouts/stack\";\n\nexport default Carousel;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["ParallaxLayout.tsx"],"names":["React","Animated","Extrapolate","interpolate","runOnJS","useAnimatedReaction","useAnimatedStyle","useOffsetX","LazyView","ParallaxLayout","props","handlerOffset","parallaxScrollingOffset","parallaxScrollingScale","parallaxAdjacentItemScale","index","width","height","loop","dataLength","children","visibleRanges","vertical","shouldUpdate","setShouldUpdate","useState","size","x","offsetXStyle","value","translate","EXTEND","zIndex","CLAMP","scale","transform","translateY","translateX","updateView","useCallback","negativeRange","positiveRange","position"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport Animated, {\n Extrapolate,\n interpolate,\n runOnJS,\n useAnimatedReaction,\n useAnimatedStyle,\n} from \"react-native-reanimated\";\n\nimport type { ILayoutConfig } from \"./parallax\";\n\nimport { useOffsetX } from \"../hooks/useOffsetX\";\nimport type { IVisibleRanges } from \"../hooks/useVisibleRanges\";\nimport { LazyView } from \"../LazyView\";\nimport type { IComputedDirectionTypes } from \"../types\";\n\nexport const ParallaxLayout: React.FC<\nIComputedDirectionTypes<\n{\n loop?: boolean\n handlerOffset: Animated.SharedValue<number>\n index: number\n dataLength: number\n visibleRanges: IVisibleRanges\n} & ILayoutConfig\n>\n> = (props) => {\n const {\n handlerOffset,\n parallaxScrollingOffset = 100,\n parallaxScrollingScale = 0.8,\n parallaxAdjacentItemScale = parallaxScrollingScale ** 2,\n index,\n width,\n height,\n loop,\n dataLength,\n children,\n visibleRanges,\n vertical,\n } = props;\n\n const [shouldUpdate, setShouldUpdate] = React.useState(false);\n\n const size = props.vertical ? props.height : props.width;\n\n const x = useOffsetX(\n {\n handlerOffset,\n index,\n size,\n dataLength,\n loop,\n },\n visibleRanges,\n );\n\n const offsetXStyle = useAnimatedStyle(() => {\n const value = x.value / size;\n\n const translate = interpolate(\n value,\n [-1, 0, 1],\n [\n -size + parallaxScrollingOffset,\n 0,\n size - parallaxScrollingOffset,\n ],\n Extrapolate.EXTEND,\n );\n\n const zIndex = interpolate(\n value,\n [-1, 0, 1],\n [0, size, 0],\n Extrapolate.CLAMP,\n );\n\n const scale = interpolate(\n value,\n [-1, 0, 1],\n [\n parallaxAdjacentItemScale,\n parallaxScrollingScale,\n parallaxAdjacentItemScale,\n ],\n Extrapolate.CLAMP,\n );\n\n return {\n transform: [\n vertical\n ? {\n translateY: translate,\n }\n : {\n translateX: translate,\n },\n {\n scale,\n },\n ],\n zIndex,\n };\n }, [loop, vertical, parallaxScrollingOffset]);\n\n const updateView = React.useCallback(\n (negativeRange: number[], positiveRange: number[]) => {\n setShouldUpdate(\n (index >= negativeRange[0] && index <= negativeRange[1])\n || (index >= positiveRange[0] && index <= positiveRange[1]),\n );\n },\n [index],\n );\n\n useAnimatedReaction(\n () => visibleRanges.value,\n () => {\n runOnJS(updateView)(\n visibleRanges.value.negativeRange,\n visibleRanges.value.positiveRange,\n );\n },\n [visibleRanges.value],\n );\n\n return (\n <Animated.View\n style={[\n {\n width: width || \"100%\",\n height: height || \"100%\",\n position: \"absolute\",\n },\n offsetXStyle,\n ]}\n >\n <LazyView shouldUpdate={shouldUpdate}>{children}</LazyView>\n </Animated.View>\n );\n};\n"]}
1
+ {"version":3,"sources":["ParallaxLayout.tsx"],"names":["React","Animated","Extrapolate","interpolate","runOnJS","useAnimatedReaction","useAnimatedStyle","useOffsetX","LazyView","ParallaxLayout","props","handlerOffset","parallaxScrollingOffset","parallaxScrollingScale","parallaxAdjacentItemScale","index","width","height","loop","dataLength","children","visibleRanges","vertical","shouldUpdate","setShouldUpdate","useState","size","x","offsetXStyle","value","translate","EXTEND","zIndex","CLAMP","scale","transform","translateY","translateX","updateView","useCallback","negativeRange","positiveRange","position"],"mappings":"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","sourcesContent":["import type { PropsWithChildren } from \"react\";\nimport React from \"react\";\nimport Animated, {\n Extrapolate,\n interpolate,\n runOnJS,\n useAnimatedReaction,\n useAnimatedStyle,\n} from \"react-native-reanimated\";\n\nimport type { ILayoutConfig } from \"./parallax\";\n\nimport { useOffsetX } from \"../hooks/useOffsetX\";\nimport type { IVisibleRanges } from \"../hooks/useVisibleRanges\";\nimport { LazyView } from \"../LazyView\";\nimport type { IComputedDirectionTypes } from \"../types\";\n\nexport const ParallaxLayout: React.FC<PropsWithChildren<IComputedDirectionTypes<\n{\n loop?: boolean\n handlerOffset: Animated.SharedValue<number>\n index: number\n dataLength: number\n visibleRanges: IVisibleRanges\n} & ILayoutConfig\n>>> = (props) => {\n const {\n handlerOffset,\n parallaxScrollingOffset = 100,\n parallaxScrollingScale = 0.8,\n parallaxAdjacentItemScale = parallaxScrollingScale ** 2,\n index,\n width,\n height,\n loop,\n dataLength,\n children,\n visibleRanges,\n vertical,\n } = props;\n\n const [shouldUpdate, setShouldUpdate] = React.useState(false);\n\n const size = props.vertical ? props.height : props.width;\n\n const x = useOffsetX(\n {\n handlerOffset,\n index,\n size,\n dataLength,\n loop,\n },\n visibleRanges,\n );\n\n const offsetXStyle = useAnimatedStyle(() => {\n const value = x.value / size;\n\n const translate = interpolate(\n value,\n [-1, 0, 1],\n [\n -size + parallaxScrollingOffset,\n 0,\n size - parallaxScrollingOffset,\n ],\n Extrapolate.EXTEND,\n );\n\n const zIndex = interpolate(\n value,\n [-1, 0, 1],\n [0, size, 0],\n Extrapolate.CLAMP,\n );\n\n const scale = interpolate(\n value,\n [-1, 0, 1],\n [\n parallaxAdjacentItemScale,\n parallaxScrollingScale,\n parallaxAdjacentItemScale,\n ],\n Extrapolate.CLAMP,\n );\n\n return {\n transform: [\n vertical\n ? {\n translateY: translate,\n }\n : {\n translateX: translate,\n },\n {\n scale,\n },\n ],\n zIndex,\n };\n }, [loop, vertical, parallaxScrollingOffset]);\n\n const updateView = React.useCallback(\n (negativeRange: number[], positiveRange: number[]) => {\n setShouldUpdate(\n (index >= negativeRange[0] && index <= negativeRange[1])\n || (index >= positiveRange[0] && index <= positiveRange[1]),\n );\n },\n [index],\n );\n\n useAnimatedReaction(\n () => visibleRanges.value,\n () => {\n runOnJS(updateView)(\n visibleRanges.value.negativeRange,\n visibleRanges.value.positiveRange,\n );\n },\n [visibleRanges.value],\n );\n\n return (\n <Animated.View\n style={[\n {\n width: width || \"100%\",\n height: height || \"100%\",\n position: \"absolute\",\n },\n offsetXStyle,\n ]}\n >\n <LazyView shouldUpdate={shouldUpdate}>{children}</LazyView>\n </Animated.View>\n );\n};\n"]}
@@ -1,6 +1,7 @@
1
+ import type { PropsWithChildren } from "react";
1
2
  import React from "react";
2
3
  interface Props {
3
4
  shouldUpdate: boolean;
4
5
  }
5
- export declare const LazyView: React.FC<Props>;
6
+ export declare const LazyView: React.FC<PropsWithChildren<Props>>;
6
7
  export {};
@@ -1,3 +1,4 @@
1
+ import type { PropsWithChildren } from "react";
1
2
  import React from "react";
2
3
  import type { StyleProp, ViewStyle } from "react-native";
3
4
  import Animated from "react-native-reanimated";
@@ -12,5 +13,5 @@ interface Props {
12
13
  onTouchEnd?: () => void;
13
14
  translation: Animated.SharedValue<number>;
14
15
  }
15
- export declare const ScrollViewGesture: React.FC<Props>;
16
+ export declare const ScrollViewGesture: React.FC<PropsWithChildren<Props>>;
16
17
  export {};
@@ -1,3 +1,4 @@
1
1
  import Carousel from "./Carousel";
2
- export type { TCarouselProps, ICarouselInstance, IComputedDirectionTypes, } from "./types";
2
+ export type { TCarouselProps, ICarouselInstance, IComputedDirectionTypes, CarouselRenderItem, } from "./types";
3
+ export { ILayoutConfig } from "./layouts/stack";
3
4
  export default Carousel;
@@ -1,12 +1,13 @@
1
+ import type { PropsWithChildren } from "react";
1
2
  import React from "react";
2
3
  import Animated from "react-native-reanimated";
3
4
  import type { ILayoutConfig } from "./parallax";
4
5
  import type { IVisibleRanges } from "../hooks/useVisibleRanges";
5
6
  import type { IComputedDirectionTypes } from "../types";
6
- export declare const ParallaxLayout: React.FC<IComputedDirectionTypes<{
7
+ export declare const ParallaxLayout: React.FC<PropsWithChildren<IComputedDirectionTypes<{
7
8
  loop?: boolean;
8
9
  handlerOffset: Animated.SharedValue<number>;
9
10
  index: number;
10
11
  dataLength: number;
11
12
  visibleRanges: IVisibleRanges;
12
- } & ILayoutConfig>>;
13
+ } & ILayoutConfig>>>;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { StyleProp, ViewStyle } from "react-native";
3
2
  import type { PanGestureHandlerProps } from "react-native-gesture-handler";
4
3
  import type { AnimatedStyleProp, SharedValue, WithSpringConfig, WithTimingConfig } from "react-native-reanimated";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-reanimated-carousel",
3
- "version": "3.4.0",
3
+ "version": "3.5.1",
4
4
  "description": "Simple carousel component.fully implemented using Reanimated 2.Infinitely scrolling, very smooth.",
5
5
  "main": "lib/commonjs/index",
6
6
  "react-native": "src/index.tsx",
@@ -17,7 +17,7 @@
17
17
  "typescript": "tsc --noEmit",
18
18
  "lint": "eslint 'src/**/*.{js,ts,tsx}'",
19
19
  "lint:fix": "eslint 'src/**/*.{js,ts,tsx}' --fix",
20
- "dev": "yarn watch 'yarn prepare' ./src",
20
+ "dev": "watch 'yarn prepare' ./src",
21
21
  "prepare": "bob build",
22
22
  "release": "yarn prepare && dotenv release-it --no-git.requireUpstream",
23
23
  "preRelease": "yarn prepare && dotenv release-it --no-git.requireUpstream --preRelease=beta",
@@ -57,7 +57,7 @@
57
57
  "@react-native-community/eslint-config": "^2.0.0",
58
58
  "@release-it/conventional-changelog": "^2.0.0",
59
59
  "@types/jest": "^29.2.5",
60
- "@types/react": "~17.0.2",
60
+ "@types/react": "^18.2.15",
61
61
  "@types/react-native": "^0.66.16",
62
62
  "@types/react-native-snap-carousel": "^3.8.5",
63
63
  "babel-plugin-inline-dotenv": "^1.6.0",
@@ -71,22 +71,24 @@
71
71
  "gifify": "^2.4.3",
72
72
  "husky": "^4.2.5",
73
73
  "jest": "^29.3.1",
74
+ "metro-react-native-babel-preset": "^0.77.0",
74
75
  "pod-install": "^0.1.0",
75
76
  "prettier": "^2.0.5",
76
- "react": "16.13.1",
77
- "react-native": "0.63.4",
77
+ "react": "18.2.0",
78
+ "react-native": "0.72.3",
78
79
  "react-native-builder-bob": "^0.18.1",
79
- "react-native-gesture-handler": "^1.10.3",
80
- "react-native-reanimated": "2.8.0",
80
+ "react-native-gesture-handler": "~2.12.0",
81
+ "react-native-reanimated": "~3.3.0",
81
82
  "release-it": "^14.2.2",
82
83
  "sponsorkit": "^0.1.3",
83
- "typescript": "^4.0.8"
84
+ "typescript": "^4.0.8",
85
+ "watch": "^1.0.2"
84
86
  },
85
87
  "peerDependencies": {
86
88
  "react": ">=16.8.0",
87
89
  "react-native": ">=0.6.0",
88
- "react-native-gesture-handler": "*",
89
- "react-native-reanimated": ">=2.7.0"
90
+ "react-native-gesture-handler": ">=2.0.0",
91
+ "react-native-reanimated": ">=3.0.0"
90
92
  },
91
93
  "jest": {
92
94
  "preset": "react-native",
package/src/Carousel.tsx CHANGED
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-use-before-define */
2
2
  import React from "react";
3
3
  import { StyleSheet } from "react-native";
4
+ import { GestureHandlerRootView } from "react-native-gesture-handler";
4
5
  import { runOnJS, useDerivedValue } from "react-native-reanimated";
5
6
 
6
7
  import { useAutoPlay } from "./hooks/useAutoPlay";
@@ -201,31 +202,33 @@ const Carousel = React.forwardRef<ICarouselInstance, TCarouselProps<any>>(
201
202
  );
202
203
 
203
204
  return (
204
- <CTX.Provider value={{ props, common: commonVariables }}>
205
- <ScrollViewGesture
206
- key={mode}
207
- size={size}
208
- translation={handlerOffset}
209
- style={[
210
- styles.container,
211
- {
212
- width: width || "100%",
213
- height: height || "100%",
214
- },
215
- style,
216
- vertical
217
- ? styles.itemsVertical
218
- : styles.itemsHorizontal,
219
- ]}
220
- testID={testID}
221
- onScrollBegin={scrollViewGestureOnScrollBegin}
222
- onScrollEnd={scrollViewGestureOnScrollEnd}
223
- onTouchBegin={scrollViewGestureOnTouchBegin}
224
- onTouchEnd={scrollViewGestureOnTouchEnd}
225
- >
226
- {data.map(renderLayout)}
227
- </ScrollViewGesture>
228
- </CTX.Provider>
205
+ <GestureHandlerRootView>
206
+ <CTX.Provider value={{ props, common: commonVariables }}>
207
+ <ScrollViewGesture
208
+ key={mode}
209
+ size={size}
210
+ translation={handlerOffset}
211
+ style={[
212
+ styles.container,
213
+ {
214
+ width: width || "100%",
215
+ height: height || "100%",
216
+ },
217
+ style,
218
+ vertical
219
+ ? styles.itemsVertical
220
+ : styles.itemsHorizontal,
221
+ ]}
222
+ testID={testID}
223
+ onScrollBegin={scrollViewGestureOnScrollBegin}
224
+ onScrollEnd={scrollViewGestureOnScrollEnd}
225
+ onTouchBegin={scrollViewGestureOnTouchBegin}
226
+ onTouchEnd={scrollViewGestureOnTouchEnd}
227
+ >
228
+ {data.map(renderLayout)}
229
+ </ScrollViewGesture>
230
+ </CTX.Provider>
231
+ </GestureHandlerRootView>
229
232
  );
230
233
  },
231
234
  );
package/src/LazyView.tsx CHANGED
@@ -1,10 +1,11 @@
1
+ import type { PropsWithChildren } from "react";
1
2
  import React from "react";
2
3
 
3
4
  interface Props {
4
5
  shouldUpdate: boolean
5
6
  }
6
7
 
7
- export const LazyView: React.FC<Props> = (props) => {
8
+ export const LazyView: React.FC<PropsWithChildren<Props>> = (props) => {
8
9
  const { shouldUpdate, children } = props;
9
10
 
10
11
  if (!shouldUpdate)
@@ -1,9 +1,8 @@
1
+ import type { PropsWithChildren } from "react";
1
2
  import React from "react";
2
3
  import type { StyleProp, ViewStyle } from "react-native";
3
4
  import type { PanGestureHandlerGestureEvent } from "react-native-gesture-handler";
4
- import {
5
- PanGestureHandler,
6
- } from "react-native-gesture-handler";
5
+ import { PanGestureHandler } from "react-native-gesture-handler";
7
6
  import Animated, {
8
7
  cancelAnimation,
9
8
  measure,
@@ -39,7 +38,7 @@ interface Props {
39
38
  translation: Animated.SharedValue<number>
40
39
  }
41
40
 
42
- const IScrollViewGesture: React.FC<Props> = (props) => {
41
+ const IScrollViewGesture: React.FC<PropsWithChildren<Props>> = (props) => {
43
42
  const {
44
43
  props: {
45
44
  vertical,
@@ -16,7 +16,7 @@ export function useAutoPlay(opts: {
16
16
  } = opts;
17
17
 
18
18
  const { prev, next } = carouselController;
19
- const timer = React.useRef<NodeJS.Timer>();
19
+ const timer = React.useRef<ReturnType<typeof setTimeout>>();
20
20
  const stopped = React.useRef<boolean>(!autoPlay);
21
21
 
22
22
  const play = React.useCallback(() => {
package/src/index.tsx CHANGED
@@ -3,6 +3,8 @@ export type {
3
3
  TCarouselProps,
4
4
  ICarouselInstance,
5
5
  IComputedDirectionTypes,
6
+ CarouselRenderItem,
6
7
  } from "./types";
8
+ export { ILayoutConfig } from "./layouts/stack";
7
9
 
8
10
  export default Carousel;
@@ -1,3 +1,4 @@
1
+ import type { PropsWithChildren } from "react";
1
2
  import React from "react";
2
3
  import Animated, {
3
4
  Extrapolate,
@@ -14,8 +15,7 @@ import type { IVisibleRanges } from "../hooks/useVisibleRanges";
14
15
  import { LazyView } from "../LazyView";
15
16
  import type { IComputedDirectionTypes } from "../types";
16
17
 
17
- export const ParallaxLayout: React.FC<
18
- IComputedDirectionTypes<
18
+ export const ParallaxLayout: React.FC<PropsWithChildren<IComputedDirectionTypes<
19
19
  {
20
20
  loop?: boolean
21
21
  handlerOffset: Animated.SharedValue<number>
@@ -23,8 +23,7 @@ IComputedDirectionTypes<
23
23
  dataLength: number
24
24
  visibleRanges: IVisibleRanges
25
25
  } & ILayoutConfig
26
- >
27
- > = (props) => {
26
+ >>> = (props) => {
28
27
  const {
29
28
  handlerOffset,
30
29
  parallaxScrollingOffset = 100,