react-native-reanimated-carousel 2.0.0 → 2.1.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.
- package/CHANGELOG.md +22 -0
- package/README.md +17 -8
- package/README.zh-CN.md +18 -8
- package/lib/commonjs/Carousel.js +11 -4
- package/lib/commonjs/Carousel.js.map +1 -1
- package/lib/commonjs/hooks/useInitProps.js.map +1 -1
- package/lib/commonjs/layouts/BaseLayout.js +14 -8
- package/lib/commonjs/layouts/BaseLayout.js.map +1 -1
- package/lib/commonjs/layouts/parallax.js.map +1 -1
- package/lib/commonjs/layouts/stack.js +15 -0
- package/lib/commonjs/layouts/stack.js.map +1 -1
- package/lib/module/Carousel.js +11 -4
- package/lib/module/Carousel.js.map +1 -1
- package/lib/module/hooks/useInitProps.js.map +1 -1
- package/lib/module/layouts/BaseLayout.js +14 -10
- package/lib/module/layouts/BaseLayout.js.map +1 -1
- package/lib/module/layouts/parallax.js.map +1 -1
- package/lib/module/layouts/stack.js +12 -0
- package/lib/module/layouts/stack.js.map +1 -1
- package/lib/typescript/layouts/BaseLayout.d.ts +3 -0
- package/lib/typescript/layouts/parallax.d.ts +9 -1
- package/lib/typescript/layouts/stack.d.ts +25 -0
- package/lib/typescript/types.d.ts +23 -28
- package/package.json +7 -3
- package/src/Carousel.tsx +17 -3
- package/src/hooks/useInitProps.ts +0 -1
- package/src/layouts/BaseLayout.tsx +26 -12
- package/src/layouts/parallax.ts +10 -1
- package/src/layouts/stack.ts +42 -0
- package/src/types.ts +27 -28
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
# [2.1.0](https://github.com/dohooo/react-native-reanimated-carousel/compare/v2.0.0...v2.1.0) (2022-01-08)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* pass animation value to renderItem ([bf57233](https://github.com/dohooo/react-native-reanimated-carousel/commit/bf572335a19179aefd52d0bf43e61029ec2f945a)), closes [#89](https://github.com/dohooo/react-native-reanimated-carousel/issues/89)
|
|
7
|
+
* support to custom carousel animations by `customAnimation` `customConfig` props ([eb3082b](https://github.com/dohooo/react-native-reanimated-carousel/commit/eb3082b74d3f08f6205cce47a30435ffc8570145))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### BREAKING CHANGES
|
|
11
|
+
|
|
12
|
+
* Remove the parameter of `renderItem` and change it to `info` object
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## [1.1.1](https://github.com/dohooo/react-native-reanimated-carousel/compare/v2.0.0...v2.1.0) (2022-01-04)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
* fix bug with windowSize props ([8a048df](https://github.com/dohooo/react-native-reanimated-carousel/commit/8a048dfafbf46ba6d4776f82564dea43af026144)), closes [#71](https://github.com/dohooo/react-native-reanimated-carousel/issues/71)
|
|
22
|
+
|
|
1
23
|
# [2.0.0](https://github.com/dohooo/react-native-reanimated-carousel/compare/v1.2.0-beta.4...v2.0.0) (2022-01-07)
|
|
2
24
|
|
|
3
25
|
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
English | [简体中文](./README.zh-CN.md)
|
|
2
2
|
|
|
3
|
-
# react-native-reanimated-carousel
|
|
3
|
+
# react-native-reanimated-carousel
|
|
4
4
|
|
|
5
5
|
<img src="assets/banner.png" width="100%"/>
|
|
6
6
|
|
|
@@ -13,12 +13,12 @@ English | [简体中文](./README.zh-CN.md)
|
|
|
13
13
|
|
|
14
14
|
## ReactNative community's best use of the carousel component! 🎉🎉🎉
|
|
15
15
|
|
|
16
|
-
- **It completely solves this [problem](https://github.com/meliorence/react-native-snap-carousel/issues/632) for `react-native-snap-carousel`!**
|
|
16
|
+
- **It completely solves this** [[problem]](https://github.com/meliorence/react-native-snap-carousel/issues/632) **for `react-native-snap-carousel`!**
|
|
17
17
|
- **Simple**、**Infinitely scrolling very smooth**、**Fully implemented using Reanimated 2!**
|
|
18
18
|
|
|
19
|
-
>
|
|
19
|
+
> v2 has been released! Join it! [[v1 docs]](https://github.com/dohooo/react-native-reanimated-carousel/tree/v1.x.x)
|
|
20
20
|
|
|
21
|
-
> Click on the image to see the demo. [Try it
|
|
21
|
+
> Click on the image to see the demo. [[Try it]](https://snack.expo.dev/@zhaodonghao586/simple-carousel) 🍺
|
|
22
22
|
|
|
23
23
|
<p align="center">
|
|
24
24
|
<a href="./example/src/normal/index.tsx">
|
|
@@ -47,7 +47,16 @@ English | [简体中文](./README.zh-CN.md)
|
|
|
47
47
|
</a>
|
|
48
48
|
</p>
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
> Now you can make cool animations with us! Very easy! [[Details]](./docs/custom-animation.md)
|
|
51
|
+
|
|
52
|
+
<p align="center">
|
|
53
|
+
<a href="./example/src/advanced-parallax/index.tsx">
|
|
54
|
+
<img src="assets/advanced-parallax.gif" width="300"/>
|
|
55
|
+
</a>
|
|
56
|
+
<a href="./example/src/scale-fade-in-out/index.tsx">
|
|
57
|
+
<img src="assets/scale-fade-in-out.gif" width="300"/>
|
|
58
|
+
</a>
|
|
59
|
+
</p>
|
|
51
60
|
|
|
52
61
|
## Table of contents
|
|
53
62
|
|
|
@@ -83,7 +92,7 @@ import Carousel from 'react-native-reanimated-carousel';
|
|
|
83
92
|
width={300}
|
|
84
93
|
height={150}
|
|
85
94
|
data={[1, 2, 3]}
|
|
86
|
-
renderItem={(item) => <AnyElement />}
|
|
95
|
+
renderItem={({ item }) => <AnyElement />}
|
|
87
96
|
/>;
|
|
88
97
|
```
|
|
89
98
|
|
|
@@ -120,8 +129,8 @@ import Carousel from 'react-native-reanimated-carousel';
|
|
|
120
129
|
## Example
|
|
121
130
|
|
|
122
131
|
```shell
|
|
123
|
-
yarn
|
|
124
|
-
yarn
|
|
132
|
+
yarn ios
|
|
133
|
+
yarn android
|
|
125
134
|
```
|
|
126
135
|
|
|
127
136
|
## License
|
package/README.zh-CN.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[English](./README.md) | 简体中文
|
|
2
2
|
|
|
3
|
-
# react-native-reanimated-carousel
|
|
3
|
+
# react-native-reanimated-carousel
|
|
4
4
|
|
|
5
5
|
<img src="assets/banner-zh.jpeg" width="100%"/>
|
|
6
6
|
|
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
|
|
14
14
|
## ReactNative 社区最好用的轮播图组件! 🎉🎉🎉
|
|
15
15
|
|
|
16
|
-
- **完全解决了`react-native-snap-carousel
|
|
16
|
+
- **完全解决了`react-native-snap-carousel`的** [[问题]](https://github.com/meliorence/react-native-snap-carousel/issues/632)
|
|
17
17
|
- **易用**、**无限滚动**、**完全使用 Reanimated2 实现**
|
|
18
18
|
|
|
19
|
-
>
|
|
19
|
+
> v2 已经发布,希望大家喜欢!~ [[v1 文档]](https://github.com/dohooo/react-native-reanimated-carousel/tree/v1.x.x)
|
|
20
20
|
|
|
21
|
-
> 点击图片,查看 demo。[试一下
|
|
21
|
+
> 点击图片,查看 demo。[[试一下]](https://snack.expo.dev/@zhaodonghao586/simple-carousel) 🍺
|
|
22
22
|
|
|
23
23
|
<p align="center">
|
|
24
24
|
<a href="./example/src/normal/index.tsx">
|
|
@@ -47,7 +47,17 @@
|
|
|
47
47
|
</a>
|
|
48
48
|
</p>
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
|
|
51
|
+
> 现在你可以和我们一起来制作酷炫的动画了! 非常简单! [[详情]](./docs/custom-animation.zh-CN.md)
|
|
52
|
+
|
|
53
|
+
<p align="center">
|
|
54
|
+
<a href="./example/src/advanced-parallax/index.tsx">
|
|
55
|
+
<img src="assets/advanced-parallax.gif" width="300"/>
|
|
56
|
+
</a>
|
|
57
|
+
<a href="./example/src/scale-fade-in-out/index.tsx">
|
|
58
|
+
<img src="assets/scale-fade-in-out.gif" width="300"/>
|
|
59
|
+
</a>
|
|
60
|
+
</p>
|
|
51
61
|
|
|
52
62
|
## 目录
|
|
53
63
|
|
|
@@ -85,7 +95,7 @@ import Carousel from 'react-native-reanimated-carousel';
|
|
|
85
95
|
width={300}
|
|
86
96
|
height={150}
|
|
87
97
|
data={[1, 2, 3]}
|
|
88
|
-
renderItem={(item) => <AnyElement />}
|
|
98
|
+
renderItem={({ item }) => <AnyElement />}
|
|
89
99
|
/>;
|
|
90
100
|
```
|
|
91
101
|
|
|
@@ -119,8 +129,8 @@ import Carousel from 'react-native-reanimated-carousel';
|
|
|
119
129
|
## 示例
|
|
120
130
|
|
|
121
131
|
```shell
|
|
122
|
-
yarn
|
|
123
|
-
yarn
|
|
132
|
+
yarn ios
|
|
133
|
+
yarn android
|
|
124
134
|
```
|
|
125
135
|
|
|
126
136
|
## 许可
|
package/lib/commonjs/Carousel.js
CHANGED
|
@@ -59,7 +59,8 @@ function Carousel(_props, ref) {
|
|
|
59
59
|
onScrollEnd,
|
|
60
60
|
onSnapToItem,
|
|
61
61
|
onScrollBegin,
|
|
62
|
-
onProgressChange
|
|
62
|
+
onProgressChange,
|
|
63
|
+
customAnimation
|
|
63
64
|
} = props;
|
|
64
65
|
const commonVariables = (0, _useCommonVariables.useCommonVariables)(props);
|
|
65
66
|
const {
|
|
@@ -165,9 +166,15 @@ function Carousel(_props, ref) {
|
|
|
165
166
|
index: i,
|
|
166
167
|
handlerOffsetX: offsetX,
|
|
167
168
|
visibleRanges: visibleRanges,
|
|
168
|
-
animationStyle: layoutConfig
|
|
169
|
-
},
|
|
170
|
-
|
|
169
|
+
animationStyle: customAnimation || layoutConfig
|
|
170
|
+
}, ({
|
|
171
|
+
animationValue
|
|
172
|
+
}) => renderItem({
|
|
173
|
+
item,
|
|
174
|
+
index: realIndex,
|
|
175
|
+
animationValue
|
|
176
|
+
}));
|
|
177
|
+
}, [data, offsetX, visibleRanges, renderItem, layoutConfig, customAnimation]);
|
|
171
178
|
|
|
172
179
|
return /*#__PURE__*/_react.default.createElement(_store.CTX.Provider, {
|
|
173
180
|
value: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Carousel.tsx"],"names":["Carousel","_props","ref","props","data","loop","mode","style","width","height","vertical","autoPlay","windowSize","autoPlayReverse","autoPlayInterval","renderItem","onScrollEnd","onSnapToItem","onScrollBegin","onProgressChange","commonVariables","size","handlerOffsetX","offsetX","totalSize","length","x","value","isNaN","carouselController","disable","originalLength","_onScrollEnd","onChange","i","next","prev","sharedPreIndex","sharedIndex","computedIndex","getCurrentIndex","run","pause","scrollViewGestureOnScrollBegin","React","useCallback","current","scrollViewGestureOnScrollEnd","goToIndex","animated","to","useImperativeHandle","visibleRanges","total","viewSize","translation","layoutConfig","renderLayout","item","realIndex","DATA_LENGTH","SINGLE_ITEM","DOUBLE_ITEM","common","styles","container","itemsVertical","itemsHorizontal","map","forwardRef","StyleSheet","create","overflow","flexDirection"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport Animated, { runOnJS, useDerivedValue } from 'react-native-reanimated';\nimport { useCarouselController } from './hooks/useCarouselController';\nimport { useAutoPlay } from './hooks/useAutoPlay';\nimport { usePropsErrorBoundary } from './hooks/usePropsErrorBoundary';\nimport { ScrollViewGesture } from './ScrollViewGesture';\nimport { useVisibleRanges } from './hooks/useVisibleRanges';\nimport type { ICarouselInstance, TCarouselProps } from './types';\nimport { StyleSheet, View } from 'react-native';\nimport { DATA_LENGTH } from './constants';\nimport { BaseLayout } from './layouts/BaseLayout';\nimport { useLayoutConfig } from './hooks/useLayoutConfig';\nimport { useInitProps } from './hooks/useInitProps';\nimport { CTX } from './store';\nimport { useCommonVariables } from './hooks/useCommonVariables';\nimport { useOnProgressChange } from './hooks/useOnProgressChange';\n\nfunction Carousel<T>(\n _props: PropsWithChildren<TCarouselProps<T>>,\n ref: React.Ref<ICarouselInstance>\n) {\n const props = useInitProps(_props);\n\n const {\n data,\n loop,\n mode,\n style,\n width,\n height,\n vertical,\n autoPlay,\n windowSize,\n autoPlayReverse,\n autoPlayInterval,\n renderItem,\n onScrollEnd,\n onSnapToItem,\n onScrollBegin,\n onProgressChange,\n } = props;\n\n const commonVariables = useCommonVariables(props);\n const { size, handlerOffsetX } = commonVariables;\n\n const offsetX = useDerivedValue(() => {\n const totalSize = size * data.length;\n const x = handlerOffsetX.value % totalSize;\n\n if (!loop) {\n return handlerOffsetX.value;\n }\n return isNaN(x) ? 0 : x;\n }, [loop, size, data]);\n\n usePropsErrorBoundary(props);\n useOnProgressChange({ size, offsetX, data, onProgressChange });\n\n const carouselController = useCarouselController({\n loop,\n size,\n handlerOffsetX,\n length: data.length,\n disable: !data.length,\n originalLength: data.length,\n onScrollEnd: () => runOnJS(_onScrollEnd)(),\n onScrollBegin: () => !!onScrollBegin && runOnJS(onScrollBegin)(),\n onChange: (i) => onSnapToItem && runOnJS(onSnapToItem)(i),\n });\n\n const {\n next,\n prev,\n sharedPreIndex,\n sharedIndex,\n computedIndex,\n getCurrentIndex,\n } = carouselController;\n\n const { run, pause } = useAutoPlay({\n autoPlay,\n autoPlayInterval,\n autoPlayReverse,\n carouselController,\n });\n\n const scrollViewGestureOnScrollBegin = React.useCallback(() => {\n pause();\n onScrollBegin?.();\n }, [onScrollBegin, pause]);\n\n const _onScrollEnd = React.useCallback(() => {\n computedIndex();\n onScrollEnd?.(sharedPreIndex.current, sharedIndex.current);\n }, [sharedPreIndex, sharedIndex, computedIndex, onScrollEnd]);\n\n const scrollViewGestureOnScrollEnd = React.useCallback(() => {\n run();\n _onScrollEnd();\n }, [_onScrollEnd, run]);\n\n const goToIndex = React.useCallback(\n (i: number, animated?: boolean) => {\n carouselController.to(i, animated);\n },\n [carouselController]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n next,\n prev,\n getCurrentIndex,\n goToIndex,\n }),\n [getCurrentIndex, goToIndex, next, prev]\n );\n\n const visibleRanges = useVisibleRanges({\n total: data.length,\n viewSize: size,\n translation: handlerOffsetX,\n windowSize,\n });\n\n const layoutConfig = useLayoutConfig<T>({ ...props, size });\n\n const renderLayout = React.useCallback(\n (item: T, i: number) => {\n let realIndex = i;\n if (data.length === DATA_LENGTH.SINGLE_ITEM) {\n realIndex = i % 1;\n }\n\n if (data.length === DATA_LENGTH.DOUBLE_ITEM) {\n realIndex = i % 2;\n }\n\n return (\n <BaseLayout\n key={i}\n index={i}\n handlerOffsetX={offsetX}\n visibleRanges={visibleRanges}\n animationStyle={layoutConfig}\n >\n {renderItem(item, realIndex)}\n </BaseLayout>\n );\n },\n [data, offsetX, renderItem, layoutConfig, visibleRanges]\n );\n\n return (\n <CTX.Provider value={{ props, common: commonVariables }}>\n <View\n style={[\n styles.container,\n { width: width || '100%', height: height || '100%' },\n style,\n ]}\n >\n <ScrollViewGesture\n size={size}\n translation={handlerOffsetX}\n onScrollBegin={scrollViewGestureOnScrollBegin}\n onScrollEnd={scrollViewGestureOnScrollEnd}\n >\n <Animated.View\n key={mode}\n style={[\n styles.container,\n {\n width: width || '100%',\n height: height || '100%',\n },\n style,\n vertical\n ? styles.itemsVertical\n : styles.itemsHorizontal,\n ]}\n >\n {data.map(renderLayout)}\n </Animated.View>\n </ScrollViewGesture>\n </View>\n </CTX.Provider>\n );\n}\n\nexport default React.forwardRef(Carousel) as typeof Carousel;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n itemsHorizontal: {\n flexDirection: 'row',\n },\n itemsVertical: {\n flexDirection: 'column',\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["Carousel.tsx"],"names":["Carousel","_props","ref","props","data","loop","mode","style","width","height","vertical","autoPlay","windowSize","autoPlayReverse","autoPlayInterval","renderItem","onScrollEnd","onSnapToItem","onScrollBegin","onProgressChange","customAnimation","commonVariables","size","handlerOffsetX","offsetX","totalSize","length","x","value","isNaN","carouselController","disable","originalLength","_onScrollEnd","onChange","i","next","prev","sharedPreIndex","sharedIndex","computedIndex","getCurrentIndex","run","pause","scrollViewGestureOnScrollBegin","React","useCallback","current","scrollViewGestureOnScrollEnd","goToIndex","animated","to","useImperativeHandle","visibleRanges","total","viewSize","translation","layoutConfig","renderLayout","item","realIndex","DATA_LENGTH","SINGLE_ITEM","DOUBLE_ITEM","animationValue","index","common","styles","container","itemsVertical","itemsHorizontal","map","forwardRef","StyleSheet","create","overflow","flexDirection"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport Animated, { runOnJS, useDerivedValue } from 'react-native-reanimated';\nimport { useCarouselController } from './hooks/useCarouselController';\nimport { useAutoPlay } from './hooks/useAutoPlay';\nimport { usePropsErrorBoundary } from './hooks/usePropsErrorBoundary';\nimport { ScrollViewGesture } from './ScrollViewGesture';\nimport { useVisibleRanges } from './hooks/useVisibleRanges';\nimport type { ICarouselInstance, TCarouselProps } from './types';\nimport { StyleSheet, View } from 'react-native';\nimport { DATA_LENGTH } from './constants';\nimport { BaseLayout } from './layouts/BaseLayout';\nimport { useLayoutConfig } from './hooks/useLayoutConfig';\nimport { useInitProps } from './hooks/useInitProps';\nimport { CTX } from './store';\nimport { useCommonVariables } from './hooks/useCommonVariables';\nimport { useOnProgressChange } from './hooks/useOnProgressChange';\n\nfunction Carousel<T>(\n _props: PropsWithChildren<TCarouselProps<T>>,\n ref: React.Ref<ICarouselInstance>\n) {\n const props = useInitProps(_props);\n\n const {\n data,\n loop,\n mode,\n style,\n width,\n height,\n vertical,\n autoPlay,\n windowSize,\n autoPlayReverse,\n autoPlayInterval,\n renderItem,\n onScrollEnd,\n onSnapToItem,\n onScrollBegin,\n onProgressChange,\n customAnimation,\n } = props;\n\n const commonVariables = useCommonVariables(props);\n const { size, handlerOffsetX } = commonVariables;\n\n const offsetX = useDerivedValue(() => {\n const totalSize = size * data.length;\n const x = handlerOffsetX.value % totalSize;\n\n if (!loop) {\n return handlerOffsetX.value;\n }\n return isNaN(x) ? 0 : x;\n }, [loop, size, data]);\n\n usePropsErrorBoundary(props);\n useOnProgressChange({ size, offsetX, data, onProgressChange });\n\n const carouselController = useCarouselController({\n loop,\n size,\n handlerOffsetX,\n length: data.length,\n disable: !data.length,\n originalLength: data.length,\n onScrollEnd: () => runOnJS(_onScrollEnd)(),\n onScrollBegin: () => !!onScrollBegin && runOnJS(onScrollBegin)(),\n onChange: (i) => onSnapToItem && runOnJS(onSnapToItem)(i),\n });\n\n const {\n next,\n prev,\n sharedPreIndex,\n sharedIndex,\n computedIndex,\n getCurrentIndex,\n } = carouselController;\n\n const { run, pause } = useAutoPlay({\n autoPlay,\n autoPlayInterval,\n autoPlayReverse,\n carouselController,\n });\n\n const scrollViewGestureOnScrollBegin = React.useCallback(() => {\n pause();\n onScrollBegin?.();\n }, [onScrollBegin, pause]);\n\n const _onScrollEnd = React.useCallback(() => {\n computedIndex();\n onScrollEnd?.(sharedPreIndex.current, sharedIndex.current);\n }, [sharedPreIndex, sharedIndex, computedIndex, onScrollEnd]);\n\n const scrollViewGestureOnScrollEnd = React.useCallback(() => {\n run();\n _onScrollEnd();\n }, [_onScrollEnd, run]);\n\n const goToIndex = React.useCallback(\n (i: number, animated?: boolean) => {\n carouselController.to(i, animated);\n },\n [carouselController]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n next,\n prev,\n getCurrentIndex,\n goToIndex,\n }),\n [getCurrentIndex, goToIndex, next, prev]\n );\n\n const visibleRanges = useVisibleRanges({\n total: data.length,\n viewSize: size,\n translation: handlerOffsetX,\n windowSize,\n });\n\n const layoutConfig = useLayoutConfig<T>({ ...props, size });\n\n const renderLayout = React.useCallback(\n (item: T, i: number) => {\n let realIndex = i;\n if (data.length === DATA_LENGTH.SINGLE_ITEM) {\n realIndex = i % 1;\n }\n\n if (data.length === DATA_LENGTH.DOUBLE_ITEM) {\n realIndex = i % 2;\n }\n\n return (\n <BaseLayout\n key={i}\n index={i}\n handlerOffsetX={offsetX}\n visibleRanges={visibleRanges}\n animationStyle={customAnimation || layoutConfig}\n >\n {({ animationValue }) =>\n renderItem({\n item,\n index: realIndex,\n animationValue,\n })\n }\n </BaseLayout>\n );\n },\n [\n data,\n offsetX,\n visibleRanges,\n renderItem,\n layoutConfig,\n customAnimation,\n ]\n );\n\n return (\n <CTX.Provider value={{ props, common: commonVariables }}>\n <View\n style={[\n styles.container,\n { width: width || '100%', height: height || '100%' },\n style,\n ]}\n >\n <ScrollViewGesture\n size={size}\n translation={handlerOffsetX}\n onScrollBegin={scrollViewGestureOnScrollBegin}\n onScrollEnd={scrollViewGestureOnScrollEnd}\n >\n <Animated.View\n key={mode}\n style={[\n styles.container,\n {\n width: width || '100%',\n height: height || '100%',\n },\n style,\n vertical\n ? styles.itemsVertical\n : styles.itemsHorizontal,\n ]}\n >\n {data.map(renderLayout)}\n </Animated.View>\n </ScrollViewGesture>\n </View>\n </CTX.Provider>\n );\n}\n\nexport default React.forwardRef(Carousel) as typeof Carousel;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n itemsHorizontal: {\n flexDirection: 'row',\n },\n itemsVertical: {\n flexDirection: 'column',\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useInitProps.ts"],"names":["useInitProps","props","defaultIndex","data","_data","loop","autoPlayInterval","style","panGestureHandlerProps","pagingEnabled","enableSnap","width","_width","height","_height","Math","round","React","useMemo","length","DATA_LENGTH","SINGLE_ITEM","DOUBLE_ITEM","mode","modeConfig","showLength"],"mappings":";;;;;;;AAAA;;AACA;;;;AAUO,SAASA,YAAT,CACHC,KADG,EAEwB;AAC3B,QAAM;AACFC,IAAAA,YAAY,GAAG,CADb;AAEFC,IAAAA,IAAI,EAAEC,KAAK,GAAG,EAFZ;AAGFC,IAAAA,IAAI,GAAG,IAHL;AAIFC,IAAAA,gBAAgB,GAAG,IAJjB;AAKFC,IAAAA,KAAK,GAAG,EALN;AAMFC,IAAAA,sBAAsB,GAAG,EANvB;AAOFC,IAAAA,aAAa,GAAG,IAPd;AAQFC,IAAAA,UAAU,GAAG,IARX;AASFC,IAAAA,KAAK,EAAEC,MATL;AAUFC,IAAAA,MAAM,EAAEC;AAVN,MAWFb,KAXJ;AAaA,QAAMU,KAAK,GAAGI,IAAI,CAACC,KAAL,CAAWJ,MAAM,IAAI,CAArB,CAAd;AACA,QAAMC,MAAM,GAAGE,IAAI,CAACC,KAAL,CAAWF,OAAO,IAAI,CAAtB,CAAf;;AAEA,QAAMX,IAAI,GAAGc,eAAMC,OAAN,CAAmB,MAAM;AAClC,QAAI,CAACb,IAAL,EAAW,OAAOD,KAAP;;AAEX,QAAIA,KAAK,CAACe,MAAN,KAAiBC,uBAAYC,WAAjC,EAA8C;AAC1C,aAAO,CAACjB,KAAK,CAAC,CAAD,CAAN,EAAWA,KAAK,CAAC,CAAD,CAAhB,EAAqBA,KAAK,CAAC,CAAD,CAA1B,CAAP;AACH;;AAED,QAAIA,KAAK,CAACe,MAAN,KAAiBC,uBAAYE,WAAjC,EAA8C;AAC1C,aAAO,CAAClB,KAAK,CAAC,CAAD,CAAN,EAAWA,KAAK,CAAC,CAAD,CAAhB,EAAqBA,KAAK,CAAC,CAAD,CAA1B,EAA+BA,KAAK,CAAC,CAAD,CAApC,CAAP;AACH;;AAED,WAAOA,KAAP;AACH,GAZY,EAYV,CAACA,KAAD,EAAQC,IAAR,CAZU,CAAb;;AAcA,MAAIJ,KAAK,CAACsB,IAAN,KAAe,gBAAf,IAAmCtB,KAAK,CAACsB,IAAN,KAAe,kBAAtD,EAA0E;AAAA;;AACtE,QAAI,CAACtB,KAAK,CAACuB,UAAX,EAAuB;AACnBvB,MAAAA,KAAK,CAACuB,UAAN,GAAmB,EAAnB;AACH;;AACDvB,IAAAA,KAAK,CAACuB,UAAN,CAAiBC,UAAjB,iDACIxB,KAAK,CAACuB,UADV,sDACI,kBAAkBC,UADtB,yEACoCtB,IAAI,CAACgB,MAAL,GAAc,CADlD;AAEH;;
|
|
1
|
+
{"version":3,"sources":["useInitProps.ts"],"names":["useInitProps","props","defaultIndex","data","_data","loop","autoPlayInterval","style","panGestureHandlerProps","pagingEnabled","enableSnap","width","_width","height","_height","Math","round","React","useMemo","length","DATA_LENGTH","SINGLE_ITEM","DOUBLE_ITEM","mode","modeConfig","showLength"],"mappings":";;;;;;;AAAA;;AACA;;;;AAUO,SAASA,YAAT,CACHC,KADG,EAEwB;AAC3B,QAAM;AACFC,IAAAA,YAAY,GAAG,CADb;AAEFC,IAAAA,IAAI,EAAEC,KAAK,GAAG,EAFZ;AAGFC,IAAAA,IAAI,GAAG,IAHL;AAIFC,IAAAA,gBAAgB,GAAG,IAJjB;AAKFC,IAAAA,KAAK,GAAG,EALN;AAMFC,IAAAA,sBAAsB,GAAG,EANvB;AAOFC,IAAAA,aAAa,GAAG,IAPd;AAQFC,IAAAA,UAAU,GAAG,IARX;AASFC,IAAAA,KAAK,EAAEC,MATL;AAUFC,IAAAA,MAAM,EAAEC;AAVN,MAWFb,KAXJ;AAaA,QAAMU,KAAK,GAAGI,IAAI,CAACC,KAAL,CAAWJ,MAAM,IAAI,CAArB,CAAd;AACA,QAAMC,MAAM,GAAGE,IAAI,CAACC,KAAL,CAAWF,OAAO,IAAI,CAAtB,CAAf;;AAEA,QAAMX,IAAI,GAAGc,eAAMC,OAAN,CAAmB,MAAM;AAClC,QAAI,CAACb,IAAL,EAAW,OAAOD,KAAP;;AAEX,QAAIA,KAAK,CAACe,MAAN,KAAiBC,uBAAYC,WAAjC,EAA8C;AAC1C,aAAO,CAACjB,KAAK,CAAC,CAAD,CAAN,EAAWA,KAAK,CAAC,CAAD,CAAhB,EAAqBA,KAAK,CAAC,CAAD,CAA1B,CAAP;AACH;;AAED,QAAIA,KAAK,CAACe,MAAN,KAAiBC,uBAAYE,WAAjC,EAA8C;AAC1C,aAAO,CAAClB,KAAK,CAAC,CAAD,CAAN,EAAWA,KAAK,CAAC,CAAD,CAAhB,EAAqBA,KAAK,CAAC,CAAD,CAA1B,EAA+BA,KAAK,CAAC,CAAD,CAApC,CAAP;AACH;;AAED,WAAOA,KAAP;AACH,GAZY,EAYV,CAACA,KAAD,EAAQC,IAAR,CAZU,CAAb;;AAcA,MAAIJ,KAAK,CAACsB,IAAN,KAAe,gBAAf,IAAmCtB,KAAK,CAACsB,IAAN,KAAe,kBAAtD,EAA0E;AAAA;;AACtE,QAAI,CAACtB,KAAK,CAACuB,UAAX,EAAuB;AACnBvB,MAAAA,KAAK,CAACuB,UAAN,GAAmB,EAAnB;AACH;;AACDvB,IAAAA,KAAK,CAACuB,UAAN,CAAiBC,UAAjB,iDACIxB,KAAK,CAACuB,UADV,sDACI,kBAAkBC,UADtB,yEACoCtB,IAAI,CAACgB,MAAL,GAAc,CADlD;AAEH;;AACD,SAAO,EACH,GAAGlB,KADA;AAEHC,IAAAA,YAFG;AAGHC,IAAAA,IAHG;AAIHE,IAAAA,IAJG;AAKHC,IAAAA,gBALG;AAMHC,IAAAA,KANG;AAOHC,IAAAA,sBAPG;AAQHC,IAAAA,aARG;AASHC,IAAAA,UATG;AAUHC,IAAAA,KAVG;AAWHE,IAAAA;AAXG,GAAP;AAaH","sourcesContent":["import React from 'react';\nimport { DATA_LENGTH } from '../constants';\nimport type { TCarouselProps } from '../types';\n\nexport type TInitializeCarouselProps<T> = TCarouselProps<T> & {\n defaultIndex: Required<TCarouselProps>['defaultIndex'];\n loop: Required<TCarouselProps>['loop'];\n width: Required<TCarouselProps>['width'];\n height: Required<TCarouselProps>['height'];\n};\n\nexport function useInitProps<T>(\n props: TCarouselProps<T>\n): TInitializeCarouselProps<T> {\n const {\n defaultIndex = 0,\n data: _data = [],\n loop = true,\n autoPlayInterval = 1000,\n style = {},\n panGestureHandlerProps = {},\n pagingEnabled = true,\n enableSnap = true,\n width: _width,\n height: _height,\n } = props;\n\n const width = Math.round(_width || 0);\n const height = Math.round(_height || 0);\n\n const data = React.useMemo<T[]>(() => {\n if (!loop) return _data;\n\n if (_data.length === DATA_LENGTH.SINGLE_ITEM) {\n return [_data[0], _data[0], _data[0]];\n }\n\n if (_data.length === DATA_LENGTH.DOUBLE_ITEM) {\n return [_data[0], _data[1], _data[0], _data[1]];\n }\n\n return _data;\n }, [_data, loop]);\n\n if (props.mode === 'vertical-stack' || props.mode === 'horizontal-stack') {\n if (!props.modeConfig) {\n props.modeConfig = {};\n }\n props.modeConfig.showLength =\n props.modeConfig?.showLength ?? data.length - 1;\n }\n return {\n ...props,\n defaultIndex,\n data,\n loop,\n autoPlayInterval,\n style,\n panGestureHandlerProps,\n pagingEnabled,\n enableSnap,\n width,\n height,\n };\n}\n"]}
|
|
@@ -30,27 +30,31 @@ const BaseLayout = props => {
|
|
|
30
30
|
animationStyle
|
|
31
31
|
} = props;
|
|
32
32
|
|
|
33
|
+
const context = _react.default.useContext(_store.CTX);
|
|
34
|
+
|
|
33
35
|
const {
|
|
34
36
|
props: {
|
|
35
|
-
mode,
|
|
36
37
|
loop,
|
|
37
38
|
data,
|
|
38
39
|
width,
|
|
39
40
|
height,
|
|
40
41
|
vertical,
|
|
42
|
+
customConfig,
|
|
43
|
+
mode,
|
|
41
44
|
modeConfig
|
|
42
45
|
}
|
|
43
|
-
} =
|
|
46
|
+
} = context;
|
|
47
|
+
const size = vertical ? height : width;
|
|
44
48
|
|
|
45
49
|
const [shouldUpdate, setShouldUpdate] = _react.default.useState(false);
|
|
46
50
|
|
|
47
|
-
const size = vertical ? height : width;
|
|
48
51
|
let offsetXConfig = {
|
|
49
52
|
handlerOffsetX,
|
|
50
53
|
index,
|
|
51
54
|
size,
|
|
52
55
|
data,
|
|
53
|
-
loop
|
|
56
|
+
loop,
|
|
57
|
+
...(typeof customConfig === 'function' ? customConfig() : {})
|
|
54
58
|
};
|
|
55
59
|
|
|
56
60
|
if (mode === 'horizontal-stack') {
|
|
@@ -70,8 +74,8 @@ const BaseLayout = props => {
|
|
|
70
74
|
}
|
|
71
75
|
|
|
72
76
|
const x = (0, _useOffsetX.useOffsetX)(offsetXConfig, visibleRanges);
|
|
73
|
-
|
|
74
|
-
const
|
|
77
|
+
const animationValue = (0, _reactNativeReanimated.useDerivedValue)(() => x.value / size, [x, size]);
|
|
78
|
+
const animatedStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => animationStyle(x.value / size), [animationStyle]);
|
|
75
79
|
|
|
76
80
|
const updateView = _react.default.useCallback((negativeRange, positiveRange) => {
|
|
77
81
|
setShouldUpdate(index >= negativeRange[0] && index <= negativeRange[1] || index >= positiveRange[0] && index <= positiveRange[1]);
|
|
@@ -85,10 +89,12 @@ const BaseLayout = props => {
|
|
|
85
89
|
width: width || '100%',
|
|
86
90
|
height: height || '100%',
|
|
87
91
|
position: 'absolute'
|
|
88
|
-
},
|
|
92
|
+
}, animatedStyle]
|
|
89
93
|
}, /*#__PURE__*/_react.default.createElement(_LazyView.LazyView, {
|
|
90
94
|
shouldUpdate: shouldUpdate
|
|
91
|
-
}, children
|
|
95
|
+
}, children({
|
|
96
|
+
animationValue
|
|
97
|
+
})));
|
|
92
98
|
};
|
|
93
99
|
|
|
94
100
|
exports.BaseLayout = BaseLayout;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["BaseLayout.tsx"],"names":["BaseLayout","props","handlerOffsetX","index","children","visibleRanges","animationStyle","
|
|
1
|
+
{"version":3,"sources":["BaseLayout.tsx"],"names":["BaseLayout","props","handlerOffsetX","index","children","visibleRanges","animationStyle","context","React","useContext","CTX","loop","data","width","height","vertical","customConfig","mode","modeConfig","size","shouldUpdate","setShouldUpdate","useState","offsetXConfig","snapDirection","showLength","type","viewCount","x","animationValue","value","animatedStyle","updateView","useCallback","negativeRange","positiveRange","position"],"mappings":"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","sourcesContent":["import React from 'react';\nimport type { ViewStyle } from 'react-native';\nimport Animated, {\n runOnJS,\n useAnimatedReaction,\n useAnimatedStyle,\n useDerivedValue,\n} from 'react-native-reanimated';\nimport { IOpts, useOffsetX } from '../hooks/useOffsetX';\nimport type { IVisibleRanges } from '../hooks/useVisibleRanges';\nimport { LazyView } from '../LazyView';\nimport { CTX } from '../store';\nimport type { ILayoutConfig } from './stack';\n\nexport type TAnimationStyle = (\n value: number\n) => Animated.AnimatedStyleProp<ViewStyle>;\n\nexport const BaseLayout: React.FC<{\n index: number;\n handlerOffsetX: Animated.SharedValue<number>;\n visibleRanges: IVisibleRanges;\n animationStyle: TAnimationStyle;\n children: (ctx: {\n animationValue: Animated.SharedValue<number>;\n }) => React.ReactElement;\n}> = (props) => {\n const { handlerOffsetX, index, children, visibleRanges, animationStyle } =\n props;\n\n const context = React.useContext(CTX);\n const {\n props: {\n loop,\n data,\n width,\n height,\n vertical,\n customConfig,\n mode,\n modeConfig,\n },\n } = context;\n const size = vertical ? height : width;\n const [shouldUpdate, setShouldUpdate] = React.useState(false);\n let offsetXConfig: IOpts = {\n handlerOffsetX,\n index,\n size,\n data,\n loop,\n ...(typeof customConfig === 'function' ? customConfig() : {}),\n };\n\n if (mode === 'horizontal-stack') {\n const { snapDirection, showLength } = modeConfig as ILayoutConfig;\n\n offsetXConfig = {\n handlerOffsetX,\n index,\n size,\n data,\n loop,\n type: snapDirection === 'right' ? 'negative' : 'positive',\n viewCount: showLength,\n };\n }\n\n const x = useOffsetX(offsetXConfig, visibleRanges);\n const animationValue = useDerivedValue(() => x.value / size, [x, size]);\n const animatedStyle = useAnimatedStyle(\n () => animationStyle(x.value / size),\n [animationStyle]\n );\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 animatedStyle,\n ]}\n >\n <LazyView shouldUpdate={shouldUpdate}>\n {children({ animationValue })}\n </LazyView>\n </Animated.View>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["parallax.ts"],"names":["parallaxLayout","baseConfig","modeConfig","size","vertical","parallaxScrollingOffset","parallaxScrollingScale","value","translate","zIndex","Extrapolate","CLAMP","scale","Math","pow","transform","translateY","translateX"],"mappings":";;;;;;;AAAA;;
|
|
1
|
+
{"version":3,"sources":["parallax.ts"],"names":["parallaxLayout","baseConfig","modeConfig","size","vertical","parallaxScrollingOffset","parallaxScrollingScale","value","translate","zIndex","Extrapolate","CLAMP","scale","Math","pow","transform","translateY","translateX"],"mappings":";;;;;;;AAAA;;AA6BO,SAASA,cAAT,CACHC,UADG,EAEHC,UAAyB,GAAG,EAFzB,EAGL;AACE,QAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAqBH,UAA3B;AACA,QAAM;AAAEI,IAAAA,uBAAuB,GAAG,GAA5B;AAAiCC,IAAAA,sBAAsB,GAAG;AAA1D,MACFJ,UADJ;AAGA,SAAQK,KAAD,IAAmB;AACtB;;AACA,UAAMC,SAAS,GAAG,wCACdD,KADc,EAEd,CAAC,CAAC,CAAF,EAAK,CAAL,EAAQ,CAAR,CAFc,EAGd,CAAC,CAACJ,IAAD,GAAQE,uBAAT,EAAkC,CAAlC,EAAqCF,IAAI,GAAGE,uBAA5C,CAHc,CAAlB;AAMA,UAAMI,MAAM,GAAG,wCACXF,KADW,EAEX,CAAC,CAAC,CAAF,EAAK,CAAL,EAAQ,CAAR,CAFW,EAGX,CAAC,CAAD,EAAIJ,IAAJ,EAAU,CAAV,CAHW,EAIXO,mCAAYC,KAJD,CAAf;AAOA,UAAMC,KAAK,GAAG,wCACVL,KADU,EAEV,CAAC,CAAC,CAAF,EAAK,CAAL,EAAQ,CAAR,CAFU,EAGV,CACIM,IAAI,CAACC,GAAL,CAASR,sBAAT,EAAiC,CAAjC,CADJ,EAEIA,sBAFJ,EAGIO,IAAI,CAACC,GAAL,CAASR,sBAAT,EAAiC,CAAjC,CAHJ,CAHU,EAQVI,mCAAYC,KARF,CAAd;AAWA,WAAO;AACHI,MAAAA,SAAS,EAAE,CACPX,QAAQ,GACF;AACIY,QAAAA,UAAU,EAAER;AADhB,OADE,GAIF;AACIS,QAAAA,UAAU,EAAET;AADhB,OALC,EAQP;AACII,QAAAA;AADJ,OARO,CADR;AAaHH,MAAAA;AAbG,KAAP;AAeH,GAzCD;AA0CH","sourcesContent":["import { Extrapolate, interpolate } from 'react-native-reanimated';\nimport type { ComputedDirectionTypes } from '../types';\n\ntype TBaseConfig = {\n size: number;\n vertical: boolean;\n};\n\ninterface ILayoutConfig {\n /**\n * When use default Layout props,this prop can be control prev/next item offset.\n * @default 100\n */\n parallaxScrollingOffset?: number;\n /**\n * When use default Layout props,this prop can be control prev/next item offset.\n * @default 0.8\n */\n parallaxScrollingScale?: number;\n}\n\nexport type TParallaxModeProps = ComputedDirectionTypes<{\n /**\n * Carousel Animated transitions.\n */\n mode?: 'parallax';\n modeConfig?: ILayoutConfig;\n}>;\n\nexport function parallaxLayout(\n baseConfig: TBaseConfig,\n modeConfig: ILayoutConfig = {}\n) {\n const { size, vertical } = baseConfig;\n const { parallaxScrollingOffset = 100, parallaxScrollingScale = 0.8 } =\n modeConfig;\n\n return (value: number) => {\n 'worklet';\n const translate = interpolate(\n value,\n [-1, 0, 1],\n [-size + parallaxScrollingOffset, 0, size - parallaxScrollingOffset]\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 Math.pow(parallaxScrollingScale, 2),\n parallaxScrollingScale,\n Math.pow(parallaxScrollingScale, 2),\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 };\n}\n"]}
|
|
@@ -4,8 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.horizontalStackLayout = horizontalStackLayout;
|
|
7
|
+
exports.useHorizontalStackLayout = useHorizontalStackLayout;
|
|
7
8
|
exports.verticalStackLayout = verticalStackLayout;
|
|
8
9
|
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
|
|
9
12
|
var _reactNative = require("react-native");
|
|
10
13
|
|
|
11
14
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
@@ -74,6 +77,18 @@ function horizontalStackLayout(modeConfig = {}) {
|
|
|
74
77
|
};
|
|
75
78
|
}
|
|
76
79
|
|
|
80
|
+
function useHorizontalStackLayout(customAnimationConfig = {}, customConfig = {}) {
|
|
81
|
+
const config = (0, _react.useMemo)(() => ({
|
|
82
|
+
type: customAnimationConfig.snapDirection === 'right' ? 'negative' : 'positive',
|
|
83
|
+
viewCount: customAnimationConfig.showLength,
|
|
84
|
+
...customConfig
|
|
85
|
+
}), [customAnimationConfig, customConfig]);
|
|
86
|
+
return {
|
|
87
|
+
layout: horizontalStackLayout(customAnimationConfig),
|
|
88
|
+
config
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
|
|
77
92
|
function verticalStackLayout(modeConfig = {}) {
|
|
78
93
|
return _value => {
|
|
79
94
|
'worklet';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["stack.ts"],"names":["screen","Dimensions","get","horizontalStackLayout","modeConfig","_value","showLength","snapDirection","moveSize","width","stackInterval","scaleInterval","opacityInterval","rotateZDeg","transform","validLength","value","inputRange","getCommonVariables","zIndex","opacity","getCommonStyles","styles","translateX","scale","rotateZ","Extrapolate","CLAMP","push","verticalStackLayout","translateY","opts","easeInOutCubic","v","Math","pow","page","floor","abs","diff","Error","Number","MIN_VALUE"],"mappings":"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","sourcesContent":["import { Dimensions, TransformsStyle, ViewStyle } from 'react-native';\nimport { Extrapolate, interpolate } from 'react-native-reanimated';\n\nconst screen = Dimensions.get('window');\n\nexport interface ILayoutConfig {\n showLength?: number;\n moveSize?: number;\n stackInterval?: number;\n scaleInterval?: number;\n opacityInterval?: number;\n rotateZDeg?: number;\n snapDirection?: 'left' | 'right';\n}\n\nexport function horizontalStackLayout(modeConfig: ILayoutConfig = {}) {\n return (_value: number) => {\n 'worklet';\n\n const {\n showLength,\n snapDirection = 'left',\n moveSize = screen.width,\n stackInterval = 18,\n scaleInterval = 0.04,\n opacityInterval = 0.1,\n rotateZDeg = 30,\n } = modeConfig;\n\n const transform: TransformsStyle['transform'] = [];\n const { validLength, value, inputRange } = getCommonVariables({\n showLength: showLength!,\n value: _value,\n snapDirection,\n });\n const { zIndex, opacity } = getCommonStyles({\n validLength,\n value,\n opacityInterval,\n snapDirection,\n });\n\n const styles: ViewStyle = {\n transform,\n zIndex,\n opacity,\n };\n\n let translateX: number;\n let scale: number;\n let rotateZ: string;\n\n if (snapDirection === 'left') {\n translateX = interpolate(\n value,\n inputRange,\n [-moveSize, 0, validLength * stackInterval],\n Extrapolate.CLAMP\n );\n scale = interpolate(\n value,\n inputRange,\n [1, 1, 1 - validLength * scaleInterval],\n Extrapolate.CLAMP\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [-rotateZDeg, 0, 0],\n Extrapolate.CLAMP\n )}deg`;\n } else if (snapDirection === 'right') {\n translateX = interpolate(\n value,\n inputRange,\n [-validLength * stackInterval, 0, moveSize],\n Extrapolate.CLAMP\n );\n scale = interpolate(\n value,\n inputRange,\n [1 - validLength * scaleInterval, 1, 1],\n Extrapolate.CLAMP\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [0, 0, rotateZDeg],\n Extrapolate.CLAMP\n )}deg`;\n }\n\n transform.push(\n {\n translateX: translateX!,\n },\n {\n scale: scale!,\n },\n {\n rotateZ: rotateZ!,\n }\n );\n\n return styles;\n };\n}\n\nexport function verticalStackLayout(modeConfig: ILayoutConfig = {}) {\n return (_value: number) => {\n 'worklet';\n\n const {\n showLength,\n snapDirection = 'left',\n moveSize = screen.width,\n stackInterval = 18,\n scaleInterval = 0.04,\n opacityInterval = 0.1,\n rotateZDeg = 30,\n } = modeConfig;\n const transform: TransformsStyle['transform'] = [];\n const { validLength, value, inputRange } = getCommonVariables({\n showLength: showLength!,\n value: _value,\n snapDirection,\n });\n const { zIndex, opacity } = getCommonStyles({\n validLength,\n value,\n opacityInterval,\n snapDirection,\n });\n\n const styles: ViewStyle = {\n transform,\n zIndex,\n opacity,\n };\n\n let translateX: number;\n let scale: number;\n let rotateZ: string;\n let translateY: number;\n\n if (snapDirection === 'left') {\n translateX = interpolate(\n value,\n inputRange,\n [-moveSize, 0, 0],\n Extrapolate.CLAMP\n );\n scale = interpolate(\n value,\n inputRange,\n [1, 1, 1 - validLength * scaleInterval],\n Extrapolate.CLAMP\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [-rotateZDeg, 0, 0],\n Extrapolate.CLAMP\n )}deg`;\n translateY = interpolate(\n value,\n inputRange,\n [0, 0, validLength * stackInterval],\n Extrapolate.CLAMP\n );\n } else if (snapDirection === 'right') {\n translateX = interpolate(\n value,\n inputRange,\n [0, 0, moveSize],\n Extrapolate.CLAMP\n );\n scale = interpolate(\n value,\n inputRange,\n [1 - validLength * scaleInterval, 1, 1],\n Extrapolate.CLAMP\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [0, 0, rotateZDeg],\n Extrapolate.CLAMP\n )}deg`;\n translateY = interpolate(\n value,\n inputRange,\n [validLength * stackInterval, 0, 0],\n Extrapolate.CLAMP\n );\n }\n\n transform.push(\n {\n translateX: translateX!,\n },\n {\n scale: scale!,\n },\n {\n rotateZ: rotateZ!,\n },\n {\n translateY: translateY!,\n }\n );\n\n return styles;\n };\n}\n\nfunction getCommonVariables(opts: {\n value: number;\n showLength: number;\n snapDirection: 'left' | 'right';\n}) {\n 'worklet';\n\n const { showLength, value: _value, snapDirection } = opts;\n function easeInOutCubic(v: number): number {\n return v < 0.5 ? 4 * v * v * v : 1 - Math.pow(-2 * v + 2, 3) / 2;\n }\n const page = Math.floor(Math.abs(_value));\n const diff = Math.abs(_value) % 1;\n const value =\n _value < 0\n ? -(page + easeInOutCubic(diff))\n : page + easeInOutCubic(diff);\n const validLength = showLength! - 1;\n\n let inputRange: [number, number, number];\n\n if (snapDirection === 'left') {\n inputRange = [-1, 0, validLength];\n } else if (snapDirection === 'right') {\n inputRange = [-validLength, 0, 1];\n } else {\n throw Error('snapDirection must be set to either left or right');\n }\n\n return {\n inputRange,\n validLength,\n value,\n };\n}\n\nfunction getCommonStyles(opts: {\n value: number;\n validLength: number;\n opacityInterval: number;\n snapDirection: 'left' | 'right';\n}) {\n 'worklet';\n\n const { snapDirection, validLength, value, opacityInterval } = opts;\n\n let zIndex: number;\n let opacity: number;\n\n if (snapDirection === 'left') {\n zIndex =\n Math.floor(\n interpolate(\n value,\n [-1.5, -1, -1 + Number.MIN_VALUE, 0, validLength],\n [\n Number.MIN_VALUE,\n validLength,\n validLength,\n validLength - 1,\n -1,\n ]\n ) * 10000\n ) / 100;\n\n opacity = interpolate(\n value,\n [-1, 0, validLength - 1, validLength],\n [0.25, 1, 1 - (validLength - 1) * opacityInterval, 0.25]\n );\n } else if (snapDirection === 'right') {\n zIndex =\n Math.floor(\n interpolate(\n value,\n [-validLength, 0, 1 - Number.MIN_VALUE, 1, 1.5],\n [\n 1,\n validLength - 1,\n validLength,\n validLength,\n Number.MIN_VALUE,\n ]\n ) * 10000\n ) / 100;\n opacity = interpolate(\n value,\n [-validLength, 1 - validLength, 0, 1],\n [0.25, 1 - (validLength - 1) * opacityInterval, 1, 0.25]\n );\n } else {\n throw Error('snapDirection must be set to either left or right');\n }\n\n return {\n zIndex,\n opacity,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["stack.ts"],"names":["screen","Dimensions","get","horizontalStackLayout","modeConfig","_value","showLength","snapDirection","moveSize","width","stackInterval","scaleInterval","opacityInterval","rotateZDeg","transform","validLength","value","inputRange","getCommonVariables","zIndex","opacity","getCommonStyles","styles","translateX","scale","rotateZ","Extrapolate","CLAMP","push","useHorizontalStackLayout","customAnimationConfig","customConfig","config","type","viewCount","layout","verticalStackLayout","translateY","opts","easeInOutCubic","v","Math","pow","page","floor","abs","diff","Error","Number","MIN_VALUE"],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\nimport { Dimensions, TransformsStyle, ViewStyle } from 'react-native';\nimport { Extrapolate, interpolate } from 'react-native-reanimated';\nimport type { ComputedDirectionTypes, CustomConfig } from 'src/types';\n\nconst screen = Dimensions.get('window');\n\nexport interface ILayoutConfig {\n showLength?: number;\n moveSize?: number;\n stackInterval?: number;\n scaleInterval?: number;\n opacityInterval?: number;\n rotateZDeg?: number;\n snapDirection?: 'left' | 'right';\n}\n\nexport type TStackModeProps = ComputedDirectionTypes<{\n /**\n * Carousel Animated transitions.\n */\n mode?: 'horizontal-stack' | 'vertical-stack';\n /**\n * Stack animation style.\n * @default\n * mode: 'vertical',\n * snapDirection: 'right',\n * moveSize: window.width,\n * stackInterval: 30,\n * scaleInterval: 0.08,\n * rotateZDeg: 135,\n */\n modeConfig?: ILayoutConfig;\n}>;\n\nexport function horizontalStackLayout(modeConfig: ILayoutConfig = {}) {\n return (_value: number) => {\n 'worklet';\n\n const {\n showLength,\n snapDirection = 'left',\n moveSize = screen.width,\n stackInterval = 18,\n scaleInterval = 0.04,\n opacityInterval = 0.1,\n rotateZDeg = 30,\n } = modeConfig;\n\n const transform: TransformsStyle['transform'] = [];\n const { validLength, value, inputRange } = getCommonVariables({\n showLength: showLength!,\n value: _value,\n snapDirection,\n });\n const { zIndex, opacity } = getCommonStyles({\n validLength,\n value,\n opacityInterval,\n snapDirection,\n });\n\n const styles: ViewStyle = {\n transform,\n zIndex,\n opacity,\n };\n\n let translateX: number;\n let scale: number;\n let rotateZ: string;\n\n if (snapDirection === 'left') {\n translateX = interpolate(\n value,\n inputRange,\n [-moveSize, 0, validLength * stackInterval],\n Extrapolate.CLAMP\n );\n scale = interpolate(\n value,\n inputRange,\n [1, 1, 1 - validLength * scaleInterval],\n Extrapolate.CLAMP\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [-rotateZDeg, 0, 0],\n Extrapolate.CLAMP\n )}deg`;\n } else if (snapDirection === 'right') {\n translateX = interpolate(\n value,\n inputRange,\n [-validLength * stackInterval, 0, moveSize],\n Extrapolate.CLAMP\n );\n scale = interpolate(\n value,\n inputRange,\n [1 - validLength * scaleInterval, 1, 1],\n Extrapolate.CLAMP\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [0, 0, rotateZDeg],\n Extrapolate.CLAMP\n )}deg`;\n }\n\n transform.push(\n {\n translateX: translateX!,\n },\n {\n scale: scale!,\n },\n {\n rotateZ: rotateZ!,\n }\n );\n\n return styles;\n };\n}\n\nexport function useHorizontalStackLayout(\n customAnimationConfig: ILayoutConfig = {},\n customConfig: CustomConfig = {}\n) {\n const config = useMemo(\n () => ({\n type:\n customAnimationConfig.snapDirection === 'right'\n ? 'negative'\n : 'positive',\n viewCount: customAnimationConfig.showLength,\n ...customConfig,\n }),\n [customAnimationConfig, customConfig]\n );\n\n return {\n layout: horizontalStackLayout(customAnimationConfig),\n config,\n };\n}\n\nexport function verticalStackLayout(modeConfig: ILayoutConfig = {}) {\n return (_value: number) => {\n 'worklet';\n\n const {\n showLength,\n snapDirection = 'left',\n moveSize = screen.width,\n stackInterval = 18,\n scaleInterval = 0.04,\n opacityInterval = 0.1,\n rotateZDeg = 30,\n } = modeConfig;\n const transform: TransformsStyle['transform'] = [];\n const { validLength, value, inputRange } = getCommonVariables({\n showLength: showLength!,\n value: _value,\n snapDirection,\n });\n const { zIndex, opacity } = getCommonStyles({\n validLength,\n value,\n opacityInterval,\n snapDirection,\n });\n\n const styles: ViewStyle = {\n transform,\n zIndex,\n opacity,\n };\n\n let translateX: number;\n let scale: number;\n let rotateZ: string;\n let translateY: number;\n\n if (snapDirection === 'left') {\n translateX = interpolate(\n value,\n inputRange,\n [-moveSize, 0, 0],\n Extrapolate.CLAMP\n );\n scale = interpolate(\n value,\n inputRange,\n [1, 1, 1 - validLength * scaleInterval],\n Extrapolate.CLAMP\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [-rotateZDeg, 0, 0],\n Extrapolate.CLAMP\n )}deg`;\n translateY = interpolate(\n value,\n inputRange,\n [0, 0, validLength * stackInterval],\n Extrapolate.CLAMP\n );\n } else if (snapDirection === 'right') {\n translateX = interpolate(\n value,\n inputRange,\n [0, 0, moveSize],\n Extrapolate.CLAMP\n );\n scale = interpolate(\n value,\n inputRange,\n [1 - validLength * scaleInterval, 1, 1],\n Extrapolate.CLAMP\n );\n rotateZ = `${interpolate(\n value,\n inputRange,\n [0, 0, rotateZDeg],\n Extrapolate.CLAMP\n )}deg`;\n translateY = interpolate(\n value,\n inputRange,\n [validLength * stackInterval, 0, 0],\n Extrapolate.CLAMP\n );\n }\n\n transform.push(\n {\n translateX: translateX!,\n },\n {\n scale: scale!,\n },\n {\n rotateZ: rotateZ!,\n },\n {\n translateY: translateY!,\n }\n );\n\n return styles;\n };\n}\n\nfunction getCommonVariables(opts: {\n value: number;\n showLength: number;\n snapDirection: 'left' | 'right';\n}) {\n 'worklet';\n\n const { showLength, value: _value, snapDirection } = opts;\n function easeInOutCubic(v: number): number {\n return v < 0.5 ? 4 * v * v * v : 1 - Math.pow(-2 * v + 2, 3) / 2;\n }\n const page = Math.floor(Math.abs(_value));\n const diff = Math.abs(_value) % 1;\n const value =\n _value < 0\n ? -(page + easeInOutCubic(diff))\n : page + easeInOutCubic(diff);\n const validLength = showLength! - 1;\n\n let inputRange: [number, number, number];\n\n if (snapDirection === 'left') {\n inputRange = [-1, 0, validLength];\n } else if (snapDirection === 'right') {\n inputRange = [-validLength, 0, 1];\n } else {\n throw Error('snapDirection must be set to either left or right');\n }\n\n return {\n inputRange,\n validLength,\n value,\n };\n}\n\nfunction getCommonStyles(opts: {\n value: number;\n validLength: number;\n opacityInterval: number;\n snapDirection: 'left' | 'right';\n}) {\n 'worklet';\n\n const { snapDirection, validLength, value, opacityInterval } = opts;\n\n let zIndex: number;\n let opacity: number;\n\n if (snapDirection === 'left') {\n zIndex =\n Math.floor(\n interpolate(\n value,\n [-1.5, -1, -1 + Number.MIN_VALUE, 0, validLength],\n [\n Number.MIN_VALUE,\n validLength,\n validLength,\n validLength - 1,\n -1,\n ]\n ) * 10000\n ) / 100;\n\n opacity = interpolate(\n value,\n [-1, 0, validLength - 1, validLength],\n [0.25, 1, 1 - (validLength - 1) * opacityInterval, 0.25]\n );\n } else if (snapDirection === 'right') {\n zIndex =\n Math.floor(\n interpolate(\n value,\n [-validLength, 0, 1 - Number.MIN_VALUE, 1, 1.5],\n [\n 1,\n validLength - 1,\n validLength,\n validLength,\n Number.MIN_VALUE,\n ]\n ) * 10000\n ) / 100;\n opacity = interpolate(\n value,\n [-validLength, 1 - validLength, 0, 1],\n [0.25, 1 - (validLength - 1) * opacityInterval, 1, 0.25]\n );\n } else {\n throw Error('snapDirection must be set to either left or right');\n }\n\n return {\n zIndex,\n opacity,\n };\n}\n"]}
|
package/lib/module/Carousel.js
CHANGED
|
@@ -32,7 +32,8 @@ function Carousel(_props, ref) {
|
|
|
32
32
|
onScrollEnd,
|
|
33
33
|
onSnapToItem,
|
|
34
34
|
onScrollBegin,
|
|
35
|
-
onProgressChange
|
|
35
|
+
onProgressChange,
|
|
36
|
+
customAnimation
|
|
36
37
|
} = props;
|
|
37
38
|
const commonVariables = useCommonVariables(props);
|
|
38
39
|
const {
|
|
@@ -133,9 +134,15 @@ function Carousel(_props, ref) {
|
|
|
133
134
|
index: i,
|
|
134
135
|
handlerOffsetX: offsetX,
|
|
135
136
|
visibleRanges: visibleRanges,
|
|
136
|
-
animationStyle: layoutConfig
|
|
137
|
-
},
|
|
138
|
-
|
|
137
|
+
animationStyle: customAnimation || layoutConfig
|
|
138
|
+
}, ({
|
|
139
|
+
animationValue
|
|
140
|
+
}) => renderItem({
|
|
141
|
+
item,
|
|
142
|
+
index: realIndex,
|
|
143
|
+
animationValue
|
|
144
|
+
}));
|
|
145
|
+
}, [data, offsetX, visibleRanges, renderItem, layoutConfig, customAnimation]);
|
|
139
146
|
return /*#__PURE__*/React.createElement(CTX.Provider, {
|
|
140
147
|
value: {
|
|
141
148
|
props,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Carousel.tsx"],"names":["React","Animated","runOnJS","useDerivedValue","useCarouselController","useAutoPlay","usePropsErrorBoundary","ScrollViewGesture","useVisibleRanges","StyleSheet","View","DATA_LENGTH","BaseLayout","useLayoutConfig","useInitProps","CTX","useCommonVariables","useOnProgressChange","Carousel","_props","ref","props","data","loop","mode","style","width","height","vertical","autoPlay","windowSize","autoPlayReverse","autoPlayInterval","renderItem","onScrollEnd","onSnapToItem","onScrollBegin","onProgressChange","commonVariables","size","handlerOffsetX","offsetX","totalSize","length","x","value","isNaN","carouselController","disable","originalLength","_onScrollEnd","onChange","i","next","prev","sharedPreIndex","sharedIndex","computedIndex","getCurrentIndex","run","pause","scrollViewGestureOnScrollBegin","useCallback","current","scrollViewGestureOnScrollEnd","goToIndex","animated","to","useImperativeHandle","visibleRanges","total","viewSize","translation","layoutConfig","renderLayout","item","realIndex","SINGLE_ITEM","DOUBLE_ITEM","common","styles","container","itemsVertical","itemsHorizontal","map","forwardRef","create","overflow","flexDirection"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport Animated, { runOnJS, useDerivedValue } from 'react-native-reanimated';\nimport { useCarouselController } from './hooks/useCarouselController';\nimport { useAutoPlay } from './hooks/useAutoPlay';\nimport { usePropsErrorBoundary } from './hooks/usePropsErrorBoundary';\nimport { ScrollViewGesture } from './ScrollViewGesture';\nimport { useVisibleRanges } from './hooks/useVisibleRanges';\nimport type { ICarouselInstance, TCarouselProps } from './types';\nimport { StyleSheet, View } from 'react-native';\nimport { DATA_LENGTH } from './constants';\nimport { BaseLayout } from './layouts/BaseLayout';\nimport { useLayoutConfig } from './hooks/useLayoutConfig';\nimport { useInitProps } from './hooks/useInitProps';\nimport { CTX } from './store';\nimport { useCommonVariables } from './hooks/useCommonVariables';\nimport { useOnProgressChange } from './hooks/useOnProgressChange';\n\nfunction Carousel<T>(\n _props: PropsWithChildren<TCarouselProps<T>>,\n ref: React.Ref<ICarouselInstance>\n) {\n const props = useInitProps(_props);\n\n const {\n data,\n loop,\n mode,\n style,\n width,\n height,\n vertical,\n autoPlay,\n windowSize,\n autoPlayReverse,\n autoPlayInterval,\n renderItem,\n onScrollEnd,\n onSnapToItem,\n onScrollBegin,\n onProgressChange,\n } = props;\n\n const commonVariables = useCommonVariables(props);\n const { size, handlerOffsetX } = commonVariables;\n\n const offsetX = useDerivedValue(() => {\n const totalSize = size * data.length;\n const x = handlerOffsetX.value % totalSize;\n\n if (!loop) {\n return handlerOffsetX.value;\n }\n return isNaN(x) ? 0 : x;\n }, [loop, size, data]);\n\n usePropsErrorBoundary(props);\n useOnProgressChange({ size, offsetX, data, onProgressChange });\n\n const carouselController = useCarouselController({\n loop,\n size,\n handlerOffsetX,\n length: data.length,\n disable: !data.length,\n originalLength: data.length,\n onScrollEnd: () => runOnJS(_onScrollEnd)(),\n onScrollBegin: () => !!onScrollBegin && runOnJS(onScrollBegin)(),\n onChange: (i) => onSnapToItem && runOnJS(onSnapToItem)(i),\n });\n\n const {\n next,\n prev,\n sharedPreIndex,\n sharedIndex,\n computedIndex,\n getCurrentIndex,\n } = carouselController;\n\n const { run, pause } = useAutoPlay({\n autoPlay,\n autoPlayInterval,\n autoPlayReverse,\n carouselController,\n });\n\n const scrollViewGestureOnScrollBegin = React.useCallback(() => {\n pause();\n onScrollBegin?.();\n }, [onScrollBegin, pause]);\n\n const _onScrollEnd = React.useCallback(() => {\n computedIndex();\n onScrollEnd?.(sharedPreIndex.current, sharedIndex.current);\n }, [sharedPreIndex, sharedIndex, computedIndex, onScrollEnd]);\n\n const scrollViewGestureOnScrollEnd = React.useCallback(() => {\n run();\n _onScrollEnd();\n }, [_onScrollEnd, run]);\n\n const goToIndex = React.useCallback(\n (i: number, animated?: boolean) => {\n carouselController.to(i, animated);\n },\n [carouselController]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n next,\n prev,\n getCurrentIndex,\n goToIndex,\n }),\n [getCurrentIndex, goToIndex, next, prev]\n );\n\n const visibleRanges = useVisibleRanges({\n total: data.length,\n viewSize: size,\n translation: handlerOffsetX,\n windowSize,\n });\n\n const layoutConfig = useLayoutConfig<T>({ ...props, size });\n\n const renderLayout = React.useCallback(\n (item: T, i: number) => {\n let realIndex = i;\n if (data.length === DATA_LENGTH.SINGLE_ITEM) {\n realIndex = i % 1;\n }\n\n if (data.length === DATA_LENGTH.DOUBLE_ITEM) {\n realIndex = i % 2;\n }\n\n return (\n <BaseLayout\n key={i}\n index={i}\n handlerOffsetX={offsetX}\n visibleRanges={visibleRanges}\n animationStyle={layoutConfig}\n >\n {renderItem(item, realIndex)}\n </BaseLayout>\n );\n },\n [data, offsetX, renderItem, layoutConfig, visibleRanges]\n );\n\n return (\n <CTX.Provider value={{ props, common: commonVariables }}>\n <View\n style={[\n styles.container,\n { width: width || '100%', height: height || '100%' },\n style,\n ]}\n >\n <ScrollViewGesture\n size={size}\n translation={handlerOffsetX}\n onScrollBegin={scrollViewGestureOnScrollBegin}\n onScrollEnd={scrollViewGestureOnScrollEnd}\n >\n <Animated.View\n key={mode}\n style={[\n styles.container,\n {\n width: width || '100%',\n height: height || '100%',\n },\n style,\n vertical\n ? styles.itemsVertical\n : styles.itemsHorizontal,\n ]}\n >\n {data.map(renderLayout)}\n </Animated.View>\n </ScrollViewGesture>\n </View>\n </CTX.Provider>\n );\n}\n\nexport default React.forwardRef(Carousel) as typeof Carousel;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n itemsHorizontal: {\n flexDirection: 'row',\n },\n itemsVertical: {\n flexDirection: 'column',\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["Carousel.tsx"],"names":["React","Animated","runOnJS","useDerivedValue","useCarouselController","useAutoPlay","usePropsErrorBoundary","ScrollViewGesture","useVisibleRanges","StyleSheet","View","DATA_LENGTH","BaseLayout","useLayoutConfig","useInitProps","CTX","useCommonVariables","useOnProgressChange","Carousel","_props","ref","props","data","loop","mode","style","width","height","vertical","autoPlay","windowSize","autoPlayReverse","autoPlayInterval","renderItem","onScrollEnd","onSnapToItem","onScrollBegin","onProgressChange","customAnimation","commonVariables","size","handlerOffsetX","offsetX","totalSize","length","x","value","isNaN","carouselController","disable","originalLength","_onScrollEnd","onChange","i","next","prev","sharedPreIndex","sharedIndex","computedIndex","getCurrentIndex","run","pause","scrollViewGestureOnScrollBegin","useCallback","current","scrollViewGestureOnScrollEnd","goToIndex","animated","to","useImperativeHandle","visibleRanges","total","viewSize","translation","layoutConfig","renderLayout","item","realIndex","SINGLE_ITEM","DOUBLE_ITEM","animationValue","index","common","styles","container","itemsVertical","itemsHorizontal","map","forwardRef","create","overflow","flexDirection"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport Animated, { runOnJS, useDerivedValue } from 'react-native-reanimated';\nimport { useCarouselController } from './hooks/useCarouselController';\nimport { useAutoPlay } from './hooks/useAutoPlay';\nimport { usePropsErrorBoundary } from './hooks/usePropsErrorBoundary';\nimport { ScrollViewGesture } from './ScrollViewGesture';\nimport { useVisibleRanges } from './hooks/useVisibleRanges';\nimport type { ICarouselInstance, TCarouselProps } from './types';\nimport { StyleSheet, View } from 'react-native';\nimport { DATA_LENGTH } from './constants';\nimport { BaseLayout } from './layouts/BaseLayout';\nimport { useLayoutConfig } from './hooks/useLayoutConfig';\nimport { useInitProps } from './hooks/useInitProps';\nimport { CTX } from './store';\nimport { useCommonVariables } from './hooks/useCommonVariables';\nimport { useOnProgressChange } from './hooks/useOnProgressChange';\n\nfunction Carousel<T>(\n _props: PropsWithChildren<TCarouselProps<T>>,\n ref: React.Ref<ICarouselInstance>\n) {\n const props = useInitProps(_props);\n\n const {\n data,\n loop,\n mode,\n style,\n width,\n height,\n vertical,\n autoPlay,\n windowSize,\n autoPlayReverse,\n autoPlayInterval,\n renderItem,\n onScrollEnd,\n onSnapToItem,\n onScrollBegin,\n onProgressChange,\n customAnimation,\n } = props;\n\n const commonVariables = useCommonVariables(props);\n const { size, handlerOffsetX } = commonVariables;\n\n const offsetX = useDerivedValue(() => {\n const totalSize = size * data.length;\n const x = handlerOffsetX.value % totalSize;\n\n if (!loop) {\n return handlerOffsetX.value;\n }\n return isNaN(x) ? 0 : x;\n }, [loop, size, data]);\n\n usePropsErrorBoundary(props);\n useOnProgressChange({ size, offsetX, data, onProgressChange });\n\n const carouselController = useCarouselController({\n loop,\n size,\n handlerOffsetX,\n length: data.length,\n disable: !data.length,\n originalLength: data.length,\n onScrollEnd: () => runOnJS(_onScrollEnd)(),\n onScrollBegin: () => !!onScrollBegin && runOnJS(onScrollBegin)(),\n onChange: (i) => onSnapToItem && runOnJS(onSnapToItem)(i),\n });\n\n const {\n next,\n prev,\n sharedPreIndex,\n sharedIndex,\n computedIndex,\n getCurrentIndex,\n } = carouselController;\n\n const { run, pause } = useAutoPlay({\n autoPlay,\n autoPlayInterval,\n autoPlayReverse,\n carouselController,\n });\n\n const scrollViewGestureOnScrollBegin = React.useCallback(() => {\n pause();\n onScrollBegin?.();\n }, [onScrollBegin, pause]);\n\n const _onScrollEnd = React.useCallback(() => {\n computedIndex();\n onScrollEnd?.(sharedPreIndex.current, sharedIndex.current);\n }, [sharedPreIndex, sharedIndex, computedIndex, onScrollEnd]);\n\n const scrollViewGestureOnScrollEnd = React.useCallback(() => {\n run();\n _onScrollEnd();\n }, [_onScrollEnd, run]);\n\n const goToIndex = React.useCallback(\n (i: number, animated?: boolean) => {\n carouselController.to(i, animated);\n },\n [carouselController]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n next,\n prev,\n getCurrentIndex,\n goToIndex,\n }),\n [getCurrentIndex, goToIndex, next, prev]\n );\n\n const visibleRanges = useVisibleRanges({\n total: data.length,\n viewSize: size,\n translation: handlerOffsetX,\n windowSize,\n });\n\n const layoutConfig = useLayoutConfig<T>({ ...props, size });\n\n const renderLayout = React.useCallback(\n (item: T, i: number) => {\n let realIndex = i;\n if (data.length === DATA_LENGTH.SINGLE_ITEM) {\n realIndex = i % 1;\n }\n\n if (data.length === DATA_LENGTH.DOUBLE_ITEM) {\n realIndex = i % 2;\n }\n\n return (\n <BaseLayout\n key={i}\n index={i}\n handlerOffsetX={offsetX}\n visibleRanges={visibleRanges}\n animationStyle={customAnimation || layoutConfig}\n >\n {({ animationValue }) =>\n renderItem({\n item,\n index: realIndex,\n animationValue,\n })\n }\n </BaseLayout>\n );\n },\n [\n data,\n offsetX,\n visibleRanges,\n renderItem,\n layoutConfig,\n customAnimation,\n ]\n );\n\n return (\n <CTX.Provider value={{ props, common: commonVariables }}>\n <View\n style={[\n styles.container,\n { width: width || '100%', height: height || '100%' },\n style,\n ]}\n >\n <ScrollViewGesture\n size={size}\n translation={handlerOffsetX}\n onScrollBegin={scrollViewGestureOnScrollBegin}\n onScrollEnd={scrollViewGestureOnScrollEnd}\n >\n <Animated.View\n key={mode}\n style={[\n styles.container,\n {\n width: width || '100%',\n height: height || '100%',\n },\n style,\n vertical\n ? styles.itemsVertical\n : styles.itemsHorizontal,\n ]}\n >\n {data.map(renderLayout)}\n </Animated.View>\n </ScrollViewGesture>\n </View>\n </CTX.Provider>\n );\n}\n\nexport default React.forwardRef(Carousel) as typeof Carousel;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n itemsHorizontal: {\n flexDirection: 'row',\n },\n itemsVertical: {\n flexDirection: 'column',\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useInitProps.ts"],"names":["React","DATA_LENGTH","useInitProps","props","defaultIndex","data","_data","loop","autoPlayInterval","style","panGestureHandlerProps","pagingEnabled","enableSnap","width","_width","height","_height","Math","round","useMemo","length","SINGLE_ITEM","DOUBLE_ITEM","mode","modeConfig","showLength"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,WAAT,QAA4B,cAA5B;AAUA,OAAO,SAASC,YAAT,CACHC,KADG,EAEwB;AAC3B,QAAM;AACFC,IAAAA,YAAY,GAAG,CADb;AAEFC,IAAAA,IAAI,EAAEC,KAAK,GAAG,EAFZ;AAGFC,IAAAA,IAAI,GAAG,IAHL;AAIFC,IAAAA,gBAAgB,GAAG,IAJjB;AAKFC,IAAAA,KAAK,GAAG,EALN;AAMFC,IAAAA,sBAAsB,GAAG,EANvB;AAOFC,IAAAA,aAAa,GAAG,IAPd;AAQFC,IAAAA,UAAU,GAAG,IARX;AASFC,IAAAA,KAAK,EAAEC,MATL;AAUFC,IAAAA,MAAM,EAAEC;AAVN,MAWFb,KAXJ;AAaA,QAAMU,KAAK,GAAGI,IAAI,CAACC,KAAL,CAAWJ,MAAM,IAAI,CAArB,CAAd;AACA,QAAMC,MAAM,GAAGE,IAAI,CAACC,KAAL,CAAWF,OAAO,IAAI,CAAtB,CAAf;AAEA,QAAMX,IAAI,GAAGL,KAAK,CAACmB,OAAN,CAAmB,MAAM;AAClC,QAAI,CAACZ,IAAL,EAAW,OAAOD,KAAP;;AAEX,QAAIA,KAAK,CAACc,MAAN,KAAiBnB,WAAW,CAACoB,WAAjC,EAA8C;AAC1C,aAAO,CAACf,KAAK,CAAC,CAAD,CAAN,EAAWA,KAAK,CAAC,CAAD,CAAhB,EAAqBA,KAAK,CAAC,CAAD,CAA1B,CAAP;AACH;;AAED,QAAIA,KAAK,CAACc,MAAN,KAAiBnB,WAAW,CAACqB,WAAjC,EAA8C;AAC1C,aAAO,CAAChB,KAAK,CAAC,CAAD,CAAN,EAAWA,KAAK,CAAC,CAAD,CAAhB,EAAqBA,KAAK,CAAC,CAAD,CAA1B,EAA+BA,KAAK,CAAC,CAAD,CAApC,CAAP;AACH;;AAED,WAAOA,KAAP;AACH,GAZY,EAYV,CAACA,KAAD,EAAQC,IAAR,CAZU,CAAb;;AAcA,MAAIJ,KAAK,CAACoB,IAAN,KAAe,gBAAf,IAAmCpB,KAAK,CAACoB,IAAN,KAAe,kBAAtD,EAA0E;AAAA;;AACtE,QAAI,CAACpB,KAAK,CAACqB,UAAX,EAAuB;AACnBrB,MAAAA,KAAK,CAACqB,UAAN,GAAmB,EAAnB;AACH;;AACDrB,IAAAA,KAAK,CAACqB,UAAN,CAAiBC,UAAjB,iDACItB,KAAK,CAACqB,UADV,sDACI,kBAAkBC,UADtB,yEACoCpB,IAAI,CAACe,MAAL,GAAc,CADlD;AAEH;;
|
|
1
|
+
{"version":3,"sources":["useInitProps.ts"],"names":["React","DATA_LENGTH","useInitProps","props","defaultIndex","data","_data","loop","autoPlayInterval","style","panGestureHandlerProps","pagingEnabled","enableSnap","width","_width","height","_height","Math","round","useMemo","length","SINGLE_ITEM","DOUBLE_ITEM","mode","modeConfig","showLength"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,WAAT,QAA4B,cAA5B;AAUA,OAAO,SAASC,YAAT,CACHC,KADG,EAEwB;AAC3B,QAAM;AACFC,IAAAA,YAAY,GAAG,CADb;AAEFC,IAAAA,IAAI,EAAEC,KAAK,GAAG,EAFZ;AAGFC,IAAAA,IAAI,GAAG,IAHL;AAIFC,IAAAA,gBAAgB,GAAG,IAJjB;AAKFC,IAAAA,KAAK,GAAG,EALN;AAMFC,IAAAA,sBAAsB,GAAG,EANvB;AAOFC,IAAAA,aAAa,GAAG,IAPd;AAQFC,IAAAA,UAAU,GAAG,IARX;AASFC,IAAAA,KAAK,EAAEC,MATL;AAUFC,IAAAA,MAAM,EAAEC;AAVN,MAWFb,KAXJ;AAaA,QAAMU,KAAK,GAAGI,IAAI,CAACC,KAAL,CAAWJ,MAAM,IAAI,CAArB,CAAd;AACA,QAAMC,MAAM,GAAGE,IAAI,CAACC,KAAL,CAAWF,OAAO,IAAI,CAAtB,CAAf;AAEA,QAAMX,IAAI,GAAGL,KAAK,CAACmB,OAAN,CAAmB,MAAM;AAClC,QAAI,CAACZ,IAAL,EAAW,OAAOD,KAAP;;AAEX,QAAIA,KAAK,CAACc,MAAN,KAAiBnB,WAAW,CAACoB,WAAjC,EAA8C;AAC1C,aAAO,CAACf,KAAK,CAAC,CAAD,CAAN,EAAWA,KAAK,CAAC,CAAD,CAAhB,EAAqBA,KAAK,CAAC,CAAD,CAA1B,CAAP;AACH;;AAED,QAAIA,KAAK,CAACc,MAAN,KAAiBnB,WAAW,CAACqB,WAAjC,EAA8C;AAC1C,aAAO,CAAChB,KAAK,CAAC,CAAD,CAAN,EAAWA,KAAK,CAAC,CAAD,CAAhB,EAAqBA,KAAK,CAAC,CAAD,CAA1B,EAA+BA,KAAK,CAAC,CAAD,CAApC,CAAP;AACH;;AAED,WAAOA,KAAP;AACH,GAZY,EAYV,CAACA,KAAD,EAAQC,IAAR,CAZU,CAAb;;AAcA,MAAIJ,KAAK,CAACoB,IAAN,KAAe,gBAAf,IAAmCpB,KAAK,CAACoB,IAAN,KAAe,kBAAtD,EAA0E;AAAA;;AACtE,QAAI,CAACpB,KAAK,CAACqB,UAAX,EAAuB;AACnBrB,MAAAA,KAAK,CAACqB,UAAN,GAAmB,EAAnB;AACH;;AACDrB,IAAAA,KAAK,CAACqB,UAAN,CAAiBC,UAAjB,iDACItB,KAAK,CAACqB,UADV,sDACI,kBAAkBC,UADtB,yEACoCpB,IAAI,CAACe,MAAL,GAAc,CADlD;AAEH;;AACD,SAAO,EACH,GAAGjB,KADA;AAEHC,IAAAA,YAFG;AAGHC,IAAAA,IAHG;AAIHE,IAAAA,IAJG;AAKHC,IAAAA,gBALG;AAMHC,IAAAA,KANG;AAOHC,IAAAA,sBAPG;AAQHC,IAAAA,aARG;AASHC,IAAAA,UATG;AAUHC,IAAAA,KAVG;AAWHE,IAAAA;AAXG,GAAP;AAaH","sourcesContent":["import React from 'react';\nimport { DATA_LENGTH } from '../constants';\nimport type { TCarouselProps } from '../types';\n\nexport type TInitializeCarouselProps<T> = TCarouselProps<T> & {\n defaultIndex: Required<TCarouselProps>['defaultIndex'];\n loop: Required<TCarouselProps>['loop'];\n width: Required<TCarouselProps>['width'];\n height: Required<TCarouselProps>['height'];\n};\n\nexport function useInitProps<T>(\n props: TCarouselProps<T>\n): TInitializeCarouselProps<T> {\n const {\n defaultIndex = 0,\n data: _data = [],\n loop = true,\n autoPlayInterval = 1000,\n style = {},\n panGestureHandlerProps = {},\n pagingEnabled = true,\n enableSnap = true,\n width: _width,\n height: _height,\n } = props;\n\n const width = Math.round(_width || 0);\n const height = Math.round(_height || 0);\n\n const data = React.useMemo<T[]>(() => {\n if (!loop) return _data;\n\n if (_data.length === DATA_LENGTH.SINGLE_ITEM) {\n return [_data[0], _data[0], _data[0]];\n }\n\n if (_data.length === DATA_LENGTH.DOUBLE_ITEM) {\n return [_data[0], _data[1], _data[0], _data[1]];\n }\n\n return _data;\n }, [_data, loop]);\n\n if (props.mode === 'vertical-stack' || props.mode === 'horizontal-stack') {\n if (!props.modeConfig) {\n props.modeConfig = {};\n }\n props.modeConfig.showLength =\n props.modeConfig?.showLength ?? data.length - 1;\n }\n return {\n ...props,\n defaultIndex,\n data,\n loop,\n autoPlayInterval,\n style,\n panGestureHandlerProps,\n pagingEnabled,\n enableSnap,\n width,\n height,\n };\n}\n"]}
|