react-native-reanimated-carousel 3.4.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) 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 +2 -1
  45. package/lib/module/Carousel.js.map +1 -1
  46. package/lib/module/ScrollViewGesture.js.map +1 -1
  47. package/lib/module/hooks/useAutoPlay.js.map +1 -1
  48. package/lib/module/index.js +1 -0
  49. package/lib/module/index.js.map +1 -1
  50. package/lib/typescript/index.d.ts +2 -1
  51. package/lib/typescript/types.d.ts +0 -1
  52. package/package.json +11 -10
  53. package/src/Carousel.tsx +2 -1
  54. package/src/ScrollViewGesture.tsx +1 -3
  55. package/src/hooks/useAutoPlay.ts +1 -1
  56. package/src/index.tsx +2 -0
@@ -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 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<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<number>();\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,SAAQC,aAAR,QAA4B,iBAA5B;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,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,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.0",
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,6 @@
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",
61
60
  "@types/react-native": "^0.66.16",
62
61
  "@types/react-native-snap-carousel": "^3.8.5",
63
62
  "babel-plugin-inline-dotenv": "^1.6.0",
@@ -71,22 +70,24 @@
71
70
  "gifify": "^2.4.3",
72
71
  "husky": "^4.2.5",
73
72
  "jest": "^29.3.1",
73
+ "metro-react-native-babel-preset": "^0.77.0",
74
74
  "pod-install": "^0.1.0",
75
75
  "prettier": "^2.0.5",
76
- "react": "16.13.1",
77
- "react-native": "0.63.4",
76
+ "react": "18.2.0",
77
+ "react-native": "0.72.3",
78
78
  "react-native-builder-bob": "^0.18.1",
79
- "react-native-gesture-handler": "^1.10.3",
80
- "react-native-reanimated": "2.8.0",
79
+ "react-native-gesture-handler": "~2.12.0",
80
+ "react-native-reanimated": "~3.3.0",
81
81
  "release-it": "^14.2.2",
82
82
  "sponsorkit": "^0.1.3",
83
- "typescript": "^4.0.8"
83
+ "typescript": "^4.0.8",
84
+ "watch": "^1.0.2"
84
85
  },
85
86
  "peerDependencies": {
86
87
  "react": ">=16.8.0",
87
88
  "react-native": ">=0.6.0",
88
- "react-native-gesture-handler": "*",
89
- "react-native-reanimated": ">=2.7.0"
89
+ "react-native-gesture-handler": ">=2.0.0",
90
+ "react-native-reanimated": ">=3.0.0"
90
91
  },
91
92
  "jest": {
92
93
  "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 { gestureHandlerRootHOC } from "react-native-gesture-handler";
4
5
  import { runOnJS, useDerivedValue } from "react-native-reanimated";
5
6
 
6
7
  import { useAutoPlay } from "./hooks/useAutoPlay";
@@ -230,7 +231,7 @@ const Carousel = React.forwardRef<ICarouselInstance, TCarouselProps<any>>(
230
231
  },
231
232
  );
232
233
 
233
- export default Carousel as <T extends any>(
234
+ export default gestureHandlerRootHOC(Carousel as any) as any as <T extends any>(
234
235
  props: React.PropsWithChildren<TCarouselProps<T>>
235
236
  ) => React.ReactElement;
236
237
 
@@ -1,9 +1,7 @@
1
1
  import React from "react";
2
2
  import type { StyleProp, ViewStyle } from "react-native";
3
3
  import type { PanGestureHandlerGestureEvent } from "react-native-gesture-handler";
4
- import {
5
- PanGestureHandler,
6
- } from "react-native-gesture-handler";
4
+ import { PanGestureHandler } from "react-native-gesture-handler";
7
5
  import Animated, {
8
6
  cancelAnimation,
9
7
  measure,
@@ -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<number>();
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;