react-native-reanimated-carousel 4.0.0 → 4.0.2

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 (120) hide show
  1. package/README.md +2 -40
  2. package/lib/commonjs/components/Carousel.js +1 -42
  3. package/lib/commonjs/components/Carousel.js.map +1 -1
  4. package/lib/commonjs/components/Carousel.test.js +2 -678
  5. package/lib/commonjs/components/Carousel.test.js.map +1 -1
  6. package/lib/commonjs/components/CarouselLayout.js +1 -211
  7. package/lib/commonjs/components/CarouselLayout.js.map +1 -1
  8. package/lib/commonjs/components/ItemLayout.js +1 -98
  9. package/lib/commonjs/components/ItemLayout.js.map +1 -1
  10. package/lib/commonjs/components/ItemRenderer.js +1 -79
  11. package/lib/commonjs/components/ItemRenderer.js.map +1 -1
  12. package/lib/commonjs/components/LazyView.js +1 -21
  13. package/lib/commonjs/components/LazyView.js.map +1 -1
  14. package/lib/commonjs/components/Pagination/Basic/PaginationItem.js +1 -83
  15. package/lib/commonjs/components/Pagination/Basic/PaginationItem.js.map +1 -1
  16. package/lib/commonjs/components/Pagination/Basic/index.js +1 -53
  17. package/lib/commonjs/components/Pagination/Basic/index.js.map +1 -1
  18. package/lib/commonjs/components/Pagination/Custom/PaginationItem.js +1 -88
  19. package/lib/commonjs/components/Pagination/Custom/PaginationItem.js.map +1 -1
  20. package/lib/commonjs/components/Pagination/Custom/index.js +1 -61
  21. package/lib/commonjs/components/Pagination/Custom/index.js.map +1 -1
  22. package/lib/commonjs/components/Pagination/index.js +1 -16
  23. package/lib/commonjs/components/Pagination/index.js.map +1 -1
  24. package/lib/commonjs/components/ScrollViewGesture.js +1 -362
  25. package/lib/commonjs/components/ScrollViewGesture.js.map +1 -1
  26. package/lib/commonjs/components/rnr-demo.test.js +1 -44
  27. package/lib/commonjs/components/rnr-demo.test.js.map +1 -1
  28. package/lib/commonjs/constants/index.js +1 -21
  29. package/lib/commonjs/constants/index.js.map +1 -1
  30. package/lib/commonjs/hooks/useAutoPlay.js +1 -56
  31. package/lib/commonjs/hooks/useAutoPlay.js.map +1 -1
  32. package/lib/commonjs/hooks/useAutoPlay.test.js +1 -154
  33. package/lib/commonjs/hooks/useAutoPlay.test.js.map +1 -1
  34. package/lib/commonjs/hooks/useCarouselController.js +1 -301
  35. package/lib/commonjs/hooks/useCarouselController.js.map +1 -1
  36. package/lib/commonjs/hooks/useCarouselController.test.js +1 -456
  37. package/lib/commonjs/hooks/useCarouselController.test.js.map +1 -1
  38. package/lib/commonjs/hooks/useCheckMounted.js +1 -23
  39. package/lib/commonjs/hooks/useCheckMounted.js.map +1 -1
  40. package/lib/commonjs/hooks/useCheckMounted.test.js +1 -44
  41. package/lib/commonjs/hooks/useCheckMounted.test.js.map +1 -1
  42. package/lib/commonjs/hooks/useCommonVariables.js +1 -102
  43. package/lib/commonjs/hooks/useCommonVariables.js.map +1 -1
  44. package/lib/commonjs/hooks/useCommonVariables.test.js +1 -37
  45. package/lib/commonjs/hooks/useCommonVariables.test.js.map +1 -1
  46. package/lib/commonjs/hooks/useInitProps.js +1 -78
  47. package/lib/commonjs/hooks/useInitProps.js.map +1 -1
  48. package/lib/commonjs/hooks/useInitProps.test.js +1 -126
  49. package/lib/commonjs/hooks/useInitProps.test.js.map +1 -1
  50. package/lib/commonjs/hooks/useLayoutConfig.js +1 -39
  51. package/lib/commonjs/hooks/useLayoutConfig.js.map +1 -1
  52. package/lib/commonjs/hooks/useLayoutConfig.test.js +1 -241
  53. package/lib/commonjs/hooks/useLayoutConfig.test.js.map +1 -1
  54. package/lib/commonjs/hooks/useOffsetX.js +1 -51
  55. package/lib/commonjs/hooks/useOffsetX.js.map +1 -1
  56. package/lib/commonjs/hooks/useOffsetX.test.js +2 -40
  57. package/lib/commonjs/hooks/useOffsetX.test.js.map +1 -1
  58. package/lib/commonjs/hooks/useOnProgressChange.js +1 -46
  59. package/lib/commonjs/hooks/useOnProgressChange.js.map +1 -1
  60. package/lib/commonjs/hooks/useOnProgressChange.test.js +1 -162
  61. package/lib/commonjs/hooks/useOnProgressChange.test.js.map +1 -1
  62. package/lib/commonjs/hooks/usePanGestureProxy.js +1 -117
  63. package/lib/commonjs/hooks/usePanGestureProxy.js.map +1 -1
  64. package/lib/commonjs/hooks/usePanGestureProxy.test.js +1 -419
  65. package/lib/commonjs/hooks/usePanGestureProxy.test.js.map +1 -1
  66. package/lib/commonjs/hooks/usePropsErrorBoundary.js +1 -36
  67. package/lib/commonjs/hooks/usePropsErrorBoundary.js.map +1 -1
  68. package/lib/commonjs/hooks/useUpdateGestureConfig.js +1 -19
  69. package/lib/commonjs/hooks/useUpdateGestureConfig.js.map +1 -1
  70. package/lib/commonjs/hooks/useUpdateGestureConfig.test.js +1 -91
  71. package/lib/commonjs/hooks/useUpdateGestureConfig.test.js.map +1 -1
  72. package/lib/commonjs/hooks/useVisibleRanges.js +1 -71
  73. package/lib/commonjs/hooks/useVisibleRanges.js.map +1 -1
  74. package/lib/commonjs/hooks/useVisibleRanges.test.js +7 -101
  75. package/lib/commonjs/hooks/useVisibleRanges.test.js.map +1 -1
  76. package/lib/commonjs/index.js +1 -21
  77. package/lib/commonjs/index.js.map +1 -1
  78. package/lib/commonjs/layouts/index.js +1 -20
  79. package/lib/commonjs/layouts/index.js.map +1 -1
  80. package/lib/commonjs/layouts/normal.js +1 -27
  81. package/lib/commonjs/layouts/normal.js.map +1 -1
  82. package/lib/commonjs/layouts/parallax.js +1 -38
  83. package/lib/commonjs/layouts/parallax.js.map +1 -1
  84. package/lib/commonjs/layouts/stack.js +1 -213
  85. package/lib/commonjs/layouts/stack.js.map +1 -1
  86. package/lib/commonjs/layouts/stack.test.js +3 -22
  87. package/lib/commonjs/layouts/stack.test.js.map +1 -1
  88. package/lib/commonjs/store/index.js +1 -67
  89. package/lib/commonjs/store/index.js.map +1 -1
  90. package/lib/commonjs/types.js +1 -5
  91. package/lib/commonjs/utils/compute-offset-if-data-changed.js +1 -51
  92. package/lib/commonjs/utils/compute-offset-if-data-changed.js.map +1 -1
  93. package/lib/commonjs/utils/compute-offset-if-data-changed.test.js +1 -29
  94. package/lib/commonjs/utils/compute-offset-if-data-changed.test.js.map +1 -1
  95. package/lib/commonjs/utils/compute-offset-if-size-changed.js +1 -17
  96. package/lib/commonjs/utils/compute-offset-if-size-changed.js.map +1 -1
  97. package/lib/commonjs/utils/compute-offset-if-size-changed.test.js +1 -71
  98. package/lib/commonjs/utils/compute-offset-if-size-changed.test.js.map +1 -1
  99. package/lib/commonjs/utils/computed-with-auto-fill-data.js +1 -123
  100. package/lib/commonjs/utils/computed-with-auto-fill-data.js.map +1 -1
  101. package/lib/commonjs/utils/computed-with-auto-fill-data.test.js +1 -179
  102. package/lib/commonjs/utils/computed-with-auto-fill-data.test.js.map +1 -1
  103. package/lib/commonjs/utils/deal-with-animation.js +1 -20
  104. package/lib/commonjs/utils/deal-with-animation.js.map +1 -1
  105. package/lib/commonjs/utils/deal-with-animation.test.js +1 -75
  106. package/lib/commonjs/utils/deal-with-animation.test.js.map +1 -1
  107. package/lib/commonjs/utils/handleroffset-direction.js +1 -15
  108. package/lib/commonjs/utils/handleroffset-direction.js.map +1 -1
  109. package/lib/commonjs/utils/handleroffset-direction.test.js +1 -45
  110. package/lib/commonjs/utils/handleroffset-direction.test.js.map +1 -1
  111. package/lib/commonjs/utils/index.test.js +1 -73
  112. package/lib/commonjs/utils/index.test.js.map +1 -1
  113. package/lib/commonjs/utils/log.js +1 -21
  114. package/lib/commonjs/utils/log.js.map +1 -1
  115. package/lib/commonjs/utils/log.test.js +1 -57
  116. package/lib/commonjs/utils/log.test.js.map +1 -1
  117. package/lib/module/hooks/useOnProgressChange.js +1 -1
  118. package/lib/module/hooks/useOnProgressChange.js.map +1 -1
  119. package/package.json +7 -2
  120. package/src/hooks/useOnProgressChange.ts +1 -1
@@ -1,40 +1,2 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useLayoutConfig = useLayoutConfig;
7
-
8
- var _react = _interopRequireDefault(require("react"));
9
-
10
- var _layouts = require("../layouts");
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- function useLayoutConfig(opts) {
15
- const {
16
- size,
17
- vertical
18
- } = opts;
19
- return _react.default.useMemo(() => {
20
- const baseConfig = {
21
- size,
22
- vertical
23
- };
24
-
25
- switch (opts.mode) {
26
- case "parallax":
27
- return _layouts.Layouts.parallax(baseConfig, opts.modeConfig);
28
-
29
- case "horizontal-stack":
30
- return _layouts.Layouts.horizontalStack(opts.modeConfig);
31
-
32
- case "vertical-stack":
33
- return _layouts.Layouts.verticalStack(opts.modeConfig);
34
-
35
- default:
36
- return _layouts.Layouts.normal(baseConfig);
37
- }
38
- }, [opts.mode, opts.modeConfig, size, vertical]);
39
- }
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.useLayoutConfig=useLayoutConfig;var _react=_interopRequireDefault(require("react"));var _layouts=require("../layouts");function useLayoutConfig(opts){var _ref=opts,size=_ref.size,vertical=_ref.vertical;return _react.default.useMemo(function(){var baseConfig={size:size,vertical:vertical};switch(opts.mode){case"parallax":return _layouts.Layouts.parallax(baseConfig,opts.modeConfig);case"horizontal-stack":return _layouts.Layouts.horizontalStack(opts.modeConfig);case"vertical-stack":return _layouts.Layouts.verticalStack(opts.modeConfig);default:return _layouts.Layouts.normal(baseConfig);}},[opts.mode,opts.modeConfig,size,vertical]);}
40
2
  //# sourceMappingURL=useLayoutConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["useLayoutConfig.ts"],"names":["useLayoutConfig","opts","size","vertical","React","useMemo","baseConfig","mode","Layouts","parallax","modeConfig","horizontalStack","verticalStack","normal"],"mappings":";;;;;;;AAAA;;AAKA;;;;AAIO,SAASA,eAAT,CAA4BC,IAA5B,EAAyE;AAC9E,QAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAqBF,IAA3B;AAEA,SAAOG,eAAMC,OAAN,CAAc,MAAM;AACzB,UAAMC,UAAU,GAAG;AAAEJ,MAAAA,IAAF;AAAQC,MAAAA;AAAR,KAAnB;;AACA,YAAQF,IAAI,CAACM,IAAb;AACE,WAAK,UAAL;AACE,eAAOC,iBAAQC,QAAR,CAAiBH,UAAjB,EAA6BL,IAAI,CAACS,UAAlC,CAAP;;AACF,WAAK,kBAAL;AACE,eAAOF,iBAAQG,eAAR,CAAwBV,IAAI,CAACS,UAA7B,CAAP;;AACF,WAAK,gBAAL;AACE,eAAOF,iBAAQI,aAAR,CAAsBX,IAAI,CAACS,UAA3B,CAAP;;AACF;AACE,eAAOF,iBAAQK,MAAR,CAAeP,UAAf,CAAP;AARJ;AAUD,GAZM,EAYJ,CAACL,IAAI,CAACM,IAAN,EAAYN,IAAI,CAACS,UAAjB,EAA6BR,IAA7B,EAAmCC,QAAnC,CAZI,CAAP;AAaD","sourcesContent":["import React from \"react\";\n\nimport type { TInitializeCarouselProps } from \"./useInitProps\";\n\nimport type { TAnimationStyle } from \"../components/ItemLayout\";\nimport { Layouts } from \"../layouts\";\n\ntype TLayoutConfigOpts<T> = TInitializeCarouselProps<T> & { size: number };\n\nexport function useLayoutConfig<T>(opts: TLayoutConfigOpts<T>): TAnimationStyle {\n const { size, vertical } = opts as Required<TLayoutConfigOpts<T>>;\n\n return React.useMemo(() => {\n const baseConfig = { size, vertical };\n switch (opts.mode) {\n case \"parallax\":\n return Layouts.parallax(baseConfig, opts.modeConfig);\n case \"horizontal-stack\":\n return Layouts.horizontalStack(opts.modeConfig);\n case \"vertical-stack\":\n return Layouts.verticalStack(opts.modeConfig);\n default:\n return Layouts.normal(baseConfig);\n }\n }, [opts.mode, opts.modeConfig, size, vertical]);\n}\n"]}
1
+ {"version":3,"sources":["useLayoutConfig.ts"],"names":["useLayoutConfig","opts","size","vertical","React","useMemo","baseConfig","mode","Layouts","parallax","modeConfig","horizontalStack","verticalStack","normal"],"mappings":"oLAAA,oDAKA,mCAIO,QAASA,CAAAA,eAAT,CAA4BC,IAA5B,CAAyE,CAC9E,SAA2BA,IAA3B,CAAQC,IAAR,MAAQA,IAAR,CAAcC,QAAd,MAAcA,QAAd,CAEA,MAAOC,gBAAMC,OAAN,CAAc,UAAM,CACzB,GAAMC,CAAAA,UAAU,CAAG,CAAEJ,IAAI,CAAJA,IAAF,CAAQC,QAAQ,CAARA,QAAR,CAAnB,CACA,OAAQF,IAAI,CAACM,IAAb,EACE,IAAK,UAAL,CACE,MAAOC,kBAAQC,QAAR,CAAiBH,UAAjB,CAA6BL,IAAI,CAACS,UAAlC,CAAP,CACF,IAAK,kBAAL,CACE,MAAOF,kBAAQG,eAAR,CAAwBV,IAAI,CAACS,UAA7B,CAAP,CACF,IAAK,gBAAL,CACE,MAAOF,kBAAQI,aAAR,CAAsBX,IAAI,CAACS,UAA3B,CAAP,CACF,QACE,MAAOF,kBAAQK,MAAR,CAAeP,UAAf,CAAP,CARJ,CAUD,CAZM,CAYJ,CAACL,IAAI,CAACM,IAAN,CAAYN,IAAI,CAACS,UAAjB,CAA6BR,IAA7B,CAAmCC,QAAnC,CAZI,CAAP,CAaD","sourcesContent":["import React from \"react\";\n\nimport type { TInitializeCarouselProps } from \"./useInitProps\";\n\nimport type { TAnimationStyle } from \"../components/ItemLayout\";\nimport { Layouts } from \"../layouts\";\n\ntype TLayoutConfigOpts<T> = TInitializeCarouselProps<T> & { size: number };\n\nexport function useLayoutConfig<T>(opts: TLayoutConfigOpts<T>): TAnimationStyle {\n const { size, vertical } = opts as Required<TLayoutConfigOpts<T>>;\n\n return React.useMemo(() => {\n const baseConfig = { size, vertical };\n switch (opts.mode) {\n case \"parallax\":\n return Layouts.parallax(baseConfig, opts.modeConfig);\n case \"horizontal-stack\":\n return Layouts.horizontalStack(opts.modeConfig);\n case \"vertical-stack\":\n return Layouts.verticalStack(opts.modeConfig);\n default:\n return Layouts.normal(baseConfig);\n }\n }, [opts.mode, opts.modeConfig, size, vertical]);\n}\n"]}
@@ -1,242 +1,2 @@
1
- "use strict";
2
-
3
- var _react = _interopRequireDefault(require("react"));
4
-
5
- var _reactNative = require("react-native");
6
-
7
- var _reactHooks = require("@testing-library/react-hooks");
8
-
9
- var _useLayoutConfig = require("./useLayoutConfig");
10
-
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
-
13
- describe("useLayoutConfig", () => {
14
- const defaultProps = {
15
- size: 300,
16
- vertical: false
17
- };
18
- it("should return normal layout by default", () => {
19
- const {
20
- result
21
- } = (0, _reactHooks.renderHook)(() => (0, _useLayoutConfig.useLayoutConfig)({ ...defaultProps,
22
- data: [],
23
- renderItem: () => /*#__PURE__*/_react.default.createElement(_reactNative.View, null),
24
- loop: false,
25
- autoFillData: false,
26
- defaultIndex: 0,
27
- autoPlayInterval: 0,
28
- scrollAnimationDuration: 0,
29
- width: 0,
30
- height: 0,
31
- rawData: [],
32
- dataLength: 0,
33
- rawDataLength: 0
34
- }));
35
- expect(result.current).toBeDefined();
36
- expect(typeof result.current).toBe("function");
37
- });
38
- it("should handle parallax mode", () => {
39
- const props = { ...defaultProps,
40
- mode: "parallax",
41
- modeConfig: {
42
- parallaxScrollingScale: 0.9,
43
- parallaxScrollingOffset: 50,
44
- parallaxAdjacentItemScale: 0.8
45
- }
46
- };
47
- const {
48
- result
49
- } = (0, _reactHooks.renderHook)(() => (0, _useLayoutConfig.useLayoutConfig)({ ...props,
50
- data: [],
51
- renderItem: () => /*#__PURE__*/_react.default.createElement(_reactNative.View, null),
52
- loop: false,
53
- autoFillData: false,
54
- defaultIndex: 0,
55
- autoPlayInterval: 0,
56
- scrollAnimationDuration: 0,
57
- width: 0,
58
- height: 0,
59
- rawData: [],
60
- dataLength: 0,
61
- rawDataLength: 0
62
- }));
63
- const style = result.current(0); // Test with offset 0
64
-
65
- expect(style.transform).toBeDefined();
66
- expect(style.transform).toContainEqual({
67
- translateX: 0
68
- });
69
- expect(style.transform).toContainEqual({
70
- scale: 0.9
71
- });
72
- });
73
- it("should handle horizontal-stack mode", () => {
74
- const props = { ...defaultProps,
75
- mode: "horizontal-stack",
76
- modeConfig: {
77
- snapDirection: "left",
78
- showLength: 3
79
- }
80
- };
81
- const {
82
- result
83
- } = (0, _reactHooks.renderHook)(() => (0, _useLayoutConfig.useLayoutConfig)({ ...props,
84
- data: [],
85
- renderItem: () => /*#__PURE__*/_react.default.createElement(_reactNative.View, null),
86
- loop: false,
87
- autoFillData: false,
88
- defaultIndex: 0,
89
- autoPlayInterval: 0,
90
- scrollAnimationDuration: 0,
91
- width: 0,
92
- height: 0,
93
- rawData: [],
94
- dataLength: 0,
95
- rawDataLength: 0
96
- }));
97
- const style = result.current(0); // Test with offset 0
98
-
99
- expect(style.transform).toBeDefined();
100
- expect(style.zIndex).toBeDefined();
101
- expect(style.opacity).toBeDefined();
102
- });
103
- it("should handle vertical-stack mode", () => {
104
- const props = { ...defaultProps,
105
- mode: "vertical-stack",
106
- modeConfig: {
107
- snapDirection: "left",
108
- showLength: 3
109
- }
110
- };
111
- const {
112
- result
113
- } = (0, _reactHooks.renderHook)(() => (0, _useLayoutConfig.useLayoutConfig)({ ...props,
114
- data: [],
115
- renderItem: () => /*#__PURE__*/_react.default.createElement(_reactNative.View, null),
116
- loop: false,
117
- autoFillData: false,
118
- defaultIndex: 0,
119
- autoPlayInterval: 0,
120
- scrollAnimationDuration: 0,
121
- width: 0,
122
- height: 0,
123
- rawData: [],
124
- dataLength: 0,
125
- rawDataLength: 0
126
- }));
127
- const style = result.current(0); // Test with offset 0
128
-
129
- expect(style.transform).toBeDefined();
130
- expect(style.zIndex).toBeDefined();
131
- expect(style.opacity).toBeDefined();
132
- });
133
- it("should handle vertical orientation", () => {
134
- const props = { ...defaultProps,
135
- vertical: true
136
- };
137
- const {
138
- result
139
- } = (0, _reactHooks.renderHook)(() => (0, _useLayoutConfig.useLayoutConfig)({ ...props,
140
- data: [],
141
- renderItem: () => /*#__PURE__*/_react.default.createElement(_reactNative.View, null),
142
- loop: false,
143
- autoFillData: false,
144
- defaultIndex: 0,
145
- autoPlayInterval: 0,
146
- scrollAnimationDuration: 0,
147
- width: 0,
148
- height: 0,
149
- rawData: [],
150
- dataLength: 0,
151
- rawDataLength: 0
152
- }));
153
- const style = result.current(0); // Test with offset 0
154
-
155
- expect(style.transform).toBeDefined();
156
- expect(style.transform).toContainEqual({
157
- translateY: 0
158
- });
159
- });
160
- it("should handle different offsets", () => {
161
- const {
162
- result
163
- } = (0, _reactHooks.renderHook)(() => (0, _useLayoutConfig.useLayoutConfig)({ ...defaultProps,
164
- data: [],
165
- renderItem: () => /*#__PURE__*/_react.default.createElement(_reactNative.View, null),
166
- loop: false,
167
- autoFillData: false,
168
- defaultIndex: 0,
169
- autoPlayInterval: 0,
170
- scrollAnimationDuration: 0,
171
- width: 0,
172
- height: 0,
173
- rawData: [],
174
- dataLength: 0,
175
- rawDataLength: 0
176
- }));
177
- const style1 = result.current(-1); // Previous item
178
-
179
- const style2 = result.current(0); // Current item
180
-
181
- const style3 = result.current(1); // Next item
182
-
183
- expect(style1.transform).toContainEqual({
184
- translateX: -300
185
- });
186
- expect(style2.transform).toContainEqual({
187
- translateX: 0
188
- });
189
- expect(style3.transform).toContainEqual({
190
- translateX: 300
191
- });
192
- });
193
- it("should memoize layout function", () => {
194
- const {
195
- result,
196
- rerender
197
- } = (0, _reactHooks.renderHook)(() => (0, _useLayoutConfig.useLayoutConfig)({ ...defaultProps,
198
- data: [],
199
- renderItem: () => /*#__PURE__*/_react.default.createElement(_reactNative.View, null),
200
- loop: false,
201
- autoFillData: false,
202
- defaultIndex: 0,
203
- autoPlayInterval: 0,
204
- scrollAnimationDuration: 0,
205
- width: 0,
206
- height: 0,
207
- rawData: [],
208
- dataLength: 0,
209
- rawDataLength: 0
210
- }));
211
- const firstResult = result.current;
212
- rerender();
213
- expect(result.current).toBe(firstResult);
214
- });
215
- it("should update layout when props change", () => {
216
- const {
217
- result,
218
- rerender
219
- } = (0, _reactHooks.renderHook)(props => (0, _useLayoutConfig.useLayoutConfig)({ ...props,
220
- data: [],
221
- renderItem: () => /*#__PURE__*/_react.default.createElement(_reactNative.View, null),
222
- loop: false,
223
- autoFillData: false,
224
- defaultIndex: 0,
225
- autoPlayInterval: 0,
226
- scrollAnimationDuration: 0,
227
- width: 0,
228
- height: 0,
229
- rawData: [],
230
- dataLength: 0,
231
- rawDataLength: 0
232
- }), {
233
- initialProps: defaultProps
234
- });
235
- const firstResult = result.current;
236
- rerender({ ...defaultProps,
237
- size: 400
238
- });
239
- expect(result.current).not.toBe(firstResult);
240
- });
241
- });
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _react=_interopRequireDefault(require("react"));var _reactNative=require("react-native");var _reactHooks=require("@testing-library/react-hooks");var _useLayoutConfig=require("./useLayoutConfig");var _jsxRuntime=require("react/jsx-runtime");var _this=this,_jsxFileName="/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useLayoutConfig.test.tsx";describe("useLayoutConfig",function(){var defaultProps={size:300,vertical:false};it("should return normal layout by default",function(){var _renderHook=(0,_reactHooks.renderHook)(function(){return(0,_useLayoutConfig.useLayoutConfig)(Object.assign({},defaultProps,{data:[],renderItem:function renderItem(){return(0,_jsxRuntime.jsx)(_reactNative.View,{});},loop:false,autoFillData:false,defaultIndex:0,autoPlayInterval:0,scrollAnimationDuration:0,width:0,height:0,rawData:[],dataLength:0,rawDataLength:0}));}),result=_renderHook.result;expect(result.current).toBeDefined();expect(typeof result.current).toBe("function");});it("should handle parallax mode",function(){var props=Object.assign({},defaultProps,{mode:"parallax",modeConfig:{parallaxScrollingScale:0.9,parallaxScrollingOffset:50,parallaxAdjacentItemScale:0.8}});var _renderHook2=(0,_reactHooks.renderHook)(function(){return(0,_useLayoutConfig.useLayoutConfig)(Object.assign({},props,{data:[],renderItem:function renderItem(){return(0,_jsxRuntime.jsx)(_reactNative.View,{});},loop:false,autoFillData:false,defaultIndex:0,autoPlayInterval:0,scrollAnimationDuration:0,width:0,height:0,rawData:[],dataLength:0,rawDataLength:0}));}),result=_renderHook2.result;var style=result.current(0);expect(style.transform).toBeDefined();expect(style.transform).toContainEqual({translateX:0});expect(style.transform).toContainEqual({scale:0.9});});it("should handle horizontal-stack mode",function(){var props=Object.assign({},defaultProps,{mode:"horizontal-stack",modeConfig:{snapDirection:"left",showLength:3}});var _renderHook3=(0,_reactHooks.renderHook)(function(){return(0,_useLayoutConfig.useLayoutConfig)(Object.assign({},props,{data:[],renderItem:function renderItem(){return(0,_jsxRuntime.jsx)(_reactNative.View,{});},loop:false,autoFillData:false,defaultIndex:0,autoPlayInterval:0,scrollAnimationDuration:0,width:0,height:0,rawData:[],dataLength:0,rawDataLength:0}));}),result=_renderHook3.result;var style=result.current(0);expect(style.transform).toBeDefined();expect(style.zIndex).toBeDefined();expect(style.opacity).toBeDefined();});it("should handle vertical-stack mode",function(){var props=Object.assign({},defaultProps,{mode:"vertical-stack",modeConfig:{snapDirection:"left",showLength:3}});var _renderHook4=(0,_reactHooks.renderHook)(function(){return(0,_useLayoutConfig.useLayoutConfig)(Object.assign({},props,{data:[],renderItem:function renderItem(){return(0,_jsxRuntime.jsx)(_reactNative.View,{});},loop:false,autoFillData:false,defaultIndex:0,autoPlayInterval:0,scrollAnimationDuration:0,width:0,height:0,rawData:[],dataLength:0,rawDataLength:0}));}),result=_renderHook4.result;var style=result.current(0);expect(style.transform).toBeDefined();expect(style.zIndex).toBeDefined();expect(style.opacity).toBeDefined();});it("should handle vertical orientation",function(){var props=Object.assign({},defaultProps,{vertical:true});var _renderHook5=(0,_reactHooks.renderHook)(function(){return(0,_useLayoutConfig.useLayoutConfig)(Object.assign({},props,{data:[],renderItem:function renderItem(){return(0,_jsxRuntime.jsx)(_reactNative.View,{});},loop:false,autoFillData:false,defaultIndex:0,autoPlayInterval:0,scrollAnimationDuration:0,width:0,height:0,rawData:[],dataLength:0,rawDataLength:0}));}),result=_renderHook5.result;var style=result.current(0);expect(style.transform).toBeDefined();expect(style.transform).toContainEqual({translateY:0});});it("should handle different offsets",function(){var _renderHook6=(0,_reactHooks.renderHook)(function(){return(0,_useLayoutConfig.useLayoutConfig)(Object.assign({},defaultProps,{data:[],renderItem:function renderItem(){return(0,_jsxRuntime.jsx)(_reactNative.View,{});},loop:false,autoFillData:false,defaultIndex:0,autoPlayInterval:0,scrollAnimationDuration:0,width:0,height:0,rawData:[],dataLength:0,rawDataLength:0}));}),result=_renderHook6.result;var style1=result.current(-1);var style2=result.current(0);var style3=result.current(1);expect(style1.transform).toContainEqual({translateX:-300});expect(style2.transform).toContainEqual({translateX:0});expect(style3.transform).toContainEqual({translateX:300});});it("should memoize layout function",function(){var _renderHook7=(0,_reactHooks.renderHook)(function(){return(0,_useLayoutConfig.useLayoutConfig)(Object.assign({},defaultProps,{data:[],renderItem:function renderItem(){return(0,_jsxRuntime.jsx)(_reactNative.View,{});},loop:false,autoFillData:false,defaultIndex:0,autoPlayInterval:0,scrollAnimationDuration:0,width:0,height:0,rawData:[],dataLength:0,rawDataLength:0}));}),result=_renderHook7.result,rerender=_renderHook7.rerender;var firstResult=result.current;rerender();expect(result.current).toBe(firstResult);});it("should update layout when props change",function(){var _renderHook8=(0,_reactHooks.renderHook)(function(props){return(0,_useLayoutConfig.useLayoutConfig)(Object.assign({},props,{data:[],renderItem:function renderItem(){return(0,_jsxRuntime.jsx)(_reactNative.View,{});},loop:false,autoFillData:false,defaultIndex:0,autoPlayInterval:0,scrollAnimationDuration:0,width:0,height:0,rawData:[],dataLength:0,rawDataLength:0}));},{initialProps:defaultProps}),result=_renderHook8.result,rerender=_renderHook8.rerender;var firstResult=result.current;rerender(Object.assign({},defaultProps,{size:400}));expect(result.current).not.toBe(firstResult);});});
242
2
  //# sourceMappingURL=useLayoutConfig.test.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["useLayoutConfig.test.tsx"],"names":["describe","defaultProps","size","vertical","it","result","data","renderItem","loop","autoFillData","defaultIndex","autoPlayInterval","scrollAnimationDuration","width","height","rawData","dataLength","rawDataLength","expect","current","toBeDefined","toBe","props","mode","modeConfig","parallaxScrollingScale","parallaxScrollingOffset","parallaxAdjacentItemScale","style","transform","toContainEqual","translateX","scale","snapDirection","showLength","zIndex","opacity","translateY","style1","style2","style3","rerender","firstResult","initialProps","not"],"mappings":";;AAAA;;AACA;;AAEA;;AAEA;;;;AAEAA,QAAQ,CAAC,iBAAD,EAAoB,MAAM;AAChC,QAAMC,YAAY,GAAG;AACnBC,IAAAA,IAAI,EAAE,GADa;AAEnBC,IAAAA,QAAQ,EAAE;AAFS,GAArB;AAIAC,EAAAA,EAAE,CAAC,wCAAD,EAA2C,MAAM;AACjD,UAAM;AAAEC,MAAAA;AAAF,QAAa,4BAAW,MAC5B,sCAAgB,EACd,GAAGJ,YADW;AAEdK,MAAAA,IAAI,EAAE,EAFQ;AAGdC,MAAAA,UAAU,EAAE,mBAAM,6BAAC,iBAAD,OAHJ;AAIdC,MAAAA,IAAI,EAAE,KAJQ;AAKdC,MAAAA,YAAY,EAAE,KALA;AAMdC,MAAAA,YAAY,EAAE,CANA;AAOdC,MAAAA,gBAAgB,EAAE,CAPJ;AAQdC,MAAAA,uBAAuB,EAAE,CARX;AASdC,MAAAA,KAAK,EAAE,CATO;AAUdC,MAAAA,MAAM,EAAE,CAVM;AAWdC,MAAAA,OAAO,EAAE,EAXK;AAYdC,MAAAA,UAAU,EAAE,CAZE;AAadC,MAAAA,aAAa,EAAE;AAbD,KAAhB,CADiB,CAAnB;AAkBAC,IAAAA,MAAM,CAACb,MAAM,CAACc,OAAR,CAAN,CAAuBC,WAAvB;AACAF,IAAAA,MAAM,CAAC,OAAOb,MAAM,CAACc,OAAf,CAAN,CAA8BE,IAA9B,CAAmC,UAAnC;AACD,GArBC,CAAF;AAuBAjB,EAAAA,EAAE,CAAC,6BAAD,EAAgC,MAAM;AACtC,UAAMkB,KAAK,GAAG,EACZ,GAAGrB,YADS;AAEZsB,MAAAA,IAAI,EAAE,UAFM;AAGZC,MAAAA,UAAU,EAAE;AACVC,QAAAA,sBAAsB,EAAE,GADd;AAEVC,QAAAA,uBAAuB,EAAE,EAFf;AAGVC,QAAAA,yBAAyB,EAAE;AAHjB;AAHA,KAAd;AAUA,UAAM;AAAEtB,MAAAA;AAAF,QAAa,4BAAW,MAC5B,sCAAgB,EACd,GAAGiB,KADW;AAEdhB,MAAAA,IAAI,EAAE,EAFQ;AAGdC,MAAAA,UAAU,EAAE,mBAAM,6BAAC,iBAAD,OAHJ;AAIdC,MAAAA,IAAI,EAAE,KAJQ;AAKdC,MAAAA,YAAY,EAAE,KALA;AAMdC,MAAAA,YAAY,EAAE,CANA;AAOdC,MAAAA,gBAAgB,EAAE,CAPJ;AAQdC,MAAAA,uBAAuB,EAAE,CARX;AASdC,MAAAA,KAAK,EAAE,CATO;AAUdC,MAAAA,MAAM,EAAE,CAVM;AAWdC,MAAAA,OAAO,EAAE,EAXK;AAYdC,MAAAA,UAAU,EAAE,CAZE;AAadC,MAAAA,aAAa,EAAE;AAbD,KAAhB,CADiB,CAAnB;AAiBA,UAAMW,KAAK,GAAGvB,MAAM,CAACc,OAAP,CAAe,CAAf,CAAd,CA5BsC,CA4BL;;AAEjCD,IAAAA,MAAM,CAACU,KAAK,CAACC,SAAP,CAAN,CAAwBT,WAAxB;AACAF,IAAAA,MAAM,CAACU,KAAK,CAACC,SAAP,CAAN,CAAwBC,cAAxB,CAAuC;AAAEC,MAAAA,UAAU,EAAE;AAAd,KAAvC;AACAb,IAAAA,MAAM,CAACU,KAAK,CAACC,SAAP,CAAN,CAAwBC,cAAxB,CAAuC;AAAEE,MAAAA,KAAK,EAAE;AAAT,KAAvC;AACD,GAjCC,CAAF;AAmCA5B,EAAAA,EAAE,CAAC,qCAAD,EAAwC,MAAM;AAC9C,UAAMkB,KAAK,GAAG,EACZ,GAAGrB,YADS;AAEZsB,MAAAA,IAAI,EAAE,kBAFM;AAGZC,MAAAA,UAAU,EAAE;AACVS,QAAAA,aAAa,EAAE,MADL;AAEVC,QAAAA,UAAU,EAAE;AAFF;AAHA,KAAd;AASA,UAAM;AAAE7B,MAAAA;AAAF,QAAa,4BAAW,MAC5B,sCAAgB,EACd,GAAGiB,KADW;AAEdhB,MAAAA,IAAI,EAAE,EAFQ;AAGdC,MAAAA,UAAU,EAAE,mBAAM,6BAAC,iBAAD,OAHJ;AAIdC,MAAAA,IAAI,EAAE,KAJQ;AAKdC,MAAAA,YAAY,EAAE,KALA;AAMdC,MAAAA,YAAY,EAAE,CANA;AAOdC,MAAAA,gBAAgB,EAAE,CAPJ;AAQdC,MAAAA,uBAAuB,EAAE,CARX;AASdC,MAAAA,KAAK,EAAE,CATO;AAUdC,MAAAA,MAAM,EAAE,CAVM;AAWdC,MAAAA,OAAO,EAAE,EAXK;AAYdC,MAAAA,UAAU,EAAE,CAZE;AAadC,MAAAA,aAAa,EAAE;AAbD,KAAhB,CADiB,CAAnB;AAiBA,UAAMW,KAAK,GAAGvB,MAAM,CAACc,OAAP,CAAe,CAAf,CAAd,CA3B8C,CA2Bb;;AAEjCD,IAAAA,MAAM,CAACU,KAAK,CAACC,SAAP,CAAN,CAAwBT,WAAxB;AACAF,IAAAA,MAAM,CAACU,KAAK,CAACO,MAAP,CAAN,CAAqBf,WAArB;AACAF,IAAAA,MAAM,CAACU,KAAK,CAACQ,OAAP,CAAN,CAAsBhB,WAAtB;AACD,GAhCC,CAAF;AAkCAhB,EAAAA,EAAE,CAAC,mCAAD,EAAsC,MAAM;AAC5C,UAAMkB,KAAK,GAAG,EACZ,GAAGrB,YADS;AAEZsB,MAAAA,IAAI,EAAE,gBAFM;AAGZC,MAAAA,UAAU,EAAE;AACVS,QAAAA,aAAa,EAAE,MADL;AAEVC,QAAAA,UAAU,EAAE;AAFF;AAHA,KAAd;AASA,UAAM;AAAE7B,MAAAA;AAAF,QAAa,4BAAW,MAC5B,sCAAgB,EACd,GAAGiB,KADW;AAEdhB,MAAAA,IAAI,EAAE,EAFQ;AAGdC,MAAAA,UAAU,EAAE,mBAAM,6BAAC,iBAAD,OAHJ;AAIdC,MAAAA,IAAI,EAAE,KAJQ;AAKdC,MAAAA,YAAY,EAAE,KALA;AAMdC,MAAAA,YAAY,EAAE,CANA;AAOdC,MAAAA,gBAAgB,EAAE,CAPJ;AAQdC,MAAAA,uBAAuB,EAAE,CARX;AASdC,MAAAA,KAAK,EAAE,CATO;AAUdC,MAAAA,MAAM,EAAE,CAVM;AAWdC,MAAAA,OAAO,EAAE,EAXK;AAYdC,MAAAA,UAAU,EAAE,CAZE;AAadC,MAAAA,aAAa,EAAE;AAbD,KAAhB,CADiB,CAAnB;AAiBA,UAAMW,KAAK,GAAGvB,MAAM,CAACc,OAAP,CAAe,CAAf,CAAd,CA3B4C,CA2BX;;AAEjCD,IAAAA,MAAM,CAACU,KAAK,CAACC,SAAP,CAAN,CAAwBT,WAAxB;AACAF,IAAAA,MAAM,CAACU,KAAK,CAACO,MAAP,CAAN,CAAqBf,WAArB;AACAF,IAAAA,MAAM,CAACU,KAAK,CAACQ,OAAP,CAAN,CAAsBhB,WAAtB;AACD,GAhCC,CAAF;AAkCAhB,EAAAA,EAAE,CAAC,oCAAD,EAAuC,MAAM;AAC7C,UAAMkB,KAAK,GAAG,EACZ,GAAGrB,YADS;AAEZE,MAAAA,QAAQ,EAAE;AAFE,KAAd;AAKA,UAAM;AAAEE,MAAAA;AAAF,QAAa,4BAAW,MAC5B,sCAAgB,EACd,GAAGiB,KADW;AAEdhB,MAAAA,IAAI,EAAE,EAFQ;AAGdC,MAAAA,UAAU,EAAE,mBAAM,6BAAC,iBAAD,OAHJ;AAIdC,MAAAA,IAAI,EAAE,KAJQ;AAKdC,MAAAA,YAAY,EAAE,KALA;AAMdC,MAAAA,YAAY,EAAE,CANA;AAOdC,MAAAA,gBAAgB,EAAE,CAPJ;AAQdC,MAAAA,uBAAuB,EAAE,CARX;AASdC,MAAAA,KAAK,EAAE,CATO;AAUdC,MAAAA,MAAM,EAAE,CAVM;AAWdC,MAAAA,OAAO,EAAE,EAXK;AAYdC,MAAAA,UAAU,EAAE,CAZE;AAadC,MAAAA,aAAa,EAAE;AAbD,KAAhB,CADiB,CAAnB;AAiBA,UAAMW,KAAK,GAAGvB,MAAM,CAACc,OAAP,CAAe,CAAf,CAAd,CAvB6C,CAuBZ;;AAEjCD,IAAAA,MAAM,CAACU,KAAK,CAACC,SAAP,CAAN,CAAwBT,WAAxB;AACAF,IAAAA,MAAM,CAACU,KAAK,CAACC,SAAP,CAAN,CAAwBC,cAAxB,CAAuC;AAAEO,MAAAA,UAAU,EAAE;AAAd,KAAvC;AACD,GA3BC,CAAF;AA6BAjC,EAAAA,EAAE,CAAC,iCAAD,EAAoC,MAAM;AAC1C,UAAM;AAAEC,MAAAA;AAAF,QAAa,4BAAW,MAC5B,sCAAgB,EACd,GAAGJ,YADW;AAEdK,MAAAA,IAAI,EAAE,EAFQ;AAGdC,MAAAA,UAAU,EAAE,mBAAM,6BAAC,iBAAD,OAHJ;AAIdC,MAAAA,IAAI,EAAE,KAJQ;AAKdC,MAAAA,YAAY,EAAE,KALA;AAMdC,MAAAA,YAAY,EAAE,CANA;AAOdC,MAAAA,gBAAgB,EAAE,CAPJ;AAQdC,MAAAA,uBAAuB,EAAE,CARX;AASdC,MAAAA,KAAK,EAAE,CATO;AAUdC,MAAAA,MAAM,EAAE,CAVM;AAWdC,MAAAA,OAAO,EAAE,EAXK;AAYdC,MAAAA,UAAU,EAAE,CAZE;AAadC,MAAAA,aAAa,EAAE;AAbD,KAAhB,CADiB,CAAnB;AAkBA,UAAMqB,MAAM,GAAGjC,MAAM,CAACc,OAAP,CAAe,CAAC,CAAhB,CAAf,CAnB0C,CAmBP;;AACnC,UAAMoB,MAAM,GAAGlC,MAAM,CAACc,OAAP,CAAe,CAAf,CAAf,CApB0C,CAoBR;;AAClC,UAAMqB,MAAM,GAAGnC,MAAM,CAACc,OAAP,CAAe,CAAf,CAAf,CArB0C,CAqBR;;AAElCD,IAAAA,MAAM,CAACoB,MAAM,CAACT,SAAR,CAAN,CAAyBC,cAAzB,CAAwC;AAAEC,MAAAA,UAAU,EAAE,CAAC;AAAf,KAAxC;AACAb,IAAAA,MAAM,CAACqB,MAAM,CAACV,SAAR,CAAN,CAAyBC,cAAzB,CAAwC;AAAEC,MAAAA,UAAU,EAAE;AAAd,KAAxC;AACAb,IAAAA,MAAM,CAACsB,MAAM,CAACX,SAAR,CAAN,CAAyBC,cAAzB,CAAwC;AAAEC,MAAAA,UAAU,EAAE;AAAd,KAAxC;AACD,GA1BC,CAAF;AA4BA3B,EAAAA,EAAE,CAAC,gCAAD,EAAmC,MAAM;AACzC,UAAM;AAAEC,MAAAA,MAAF;AAAUoC,MAAAA;AAAV,QAAuB,4BAAW,MACtC,sCAAgB,EACd,GAAGxC,YADW;AAEdK,MAAAA,IAAI,EAAE,EAFQ;AAGdC,MAAAA,UAAU,EAAE,mBAAM,6BAAC,iBAAD,OAHJ;AAIdC,MAAAA,IAAI,EAAE,KAJQ;AAKdC,MAAAA,YAAY,EAAE,KALA;AAMdC,MAAAA,YAAY,EAAE,CANA;AAOdC,MAAAA,gBAAgB,EAAE,CAPJ;AAQdC,MAAAA,uBAAuB,EAAE,CARX;AASdC,MAAAA,KAAK,EAAE,CATO;AAUdC,MAAAA,MAAM,EAAE,CAVM;AAWdC,MAAAA,OAAO,EAAE,EAXK;AAYdC,MAAAA,UAAU,EAAE,CAZE;AAadC,MAAAA,aAAa,EAAE;AAbD,KAAhB,CAD2B,CAA7B;AAiBA,UAAMyB,WAAW,GAAGrC,MAAM,CAACc,OAA3B;AAEAsB,IAAAA,QAAQ;AACRvB,IAAAA,MAAM,CAACb,MAAM,CAACc,OAAR,CAAN,CAAuBE,IAAvB,CAA4BqB,WAA5B;AACD,GAtBC,CAAF;AAwBAtC,EAAAA,EAAE,CAAC,wCAAD,EAA2C,MAAM;AACjD,UAAM;AAAEC,MAAAA,MAAF;AAAUoC,MAAAA;AAAV,QAAuB,4BAC1BnB,KAAD,IACE,sCAAgB,EACd,GAAGA,KADW;AAEdhB,MAAAA,IAAI,EAAE,EAFQ;AAGdC,MAAAA,UAAU,EAAE,mBAAM,6BAAC,iBAAD,OAHJ;AAIdC,MAAAA,IAAI,EAAE,KAJQ;AAKdC,MAAAA,YAAY,EAAE,KALA;AAMdC,MAAAA,YAAY,EAAE,CANA;AAOdC,MAAAA,gBAAgB,EAAE,CAPJ;AAQdC,MAAAA,uBAAuB,EAAE,CARX;AASdC,MAAAA,KAAK,EAAE,CATO;AAUdC,MAAAA,MAAM,EAAE,CAVM;AAWdC,MAAAA,OAAO,EAAE,EAXK;AAYdC,MAAAA,UAAU,EAAE,CAZE;AAadC,MAAAA,aAAa,EAAE;AAbD,KAAhB,CAFyB,EAiB3B;AACE0B,MAAAA,YAAY,EAAE1C;AADhB,KAjB2B,CAA7B;AAqBA,UAAMyC,WAAW,GAAGrC,MAAM,CAACc,OAA3B;AAEAsB,IAAAA,QAAQ,CAAC,EAAE,GAAGxC,YAAL;AAAmBC,MAAAA,IAAI,EAAE;AAAzB,KAAD,CAAR;AACAgB,IAAAA,MAAM,CAACb,MAAM,CAACc,OAAR,CAAN,CAAuByB,GAAvB,CAA2BvB,IAA3B,CAAgCqB,WAAhC;AACD,GA1BC,CAAF;AA2BD,CA/OO,CAAR","sourcesContent":["import React from \"react\";\nimport { View } from \"react-native\";\n\nimport { renderHook } from \"@testing-library/react-hooks\";\n\nimport { useLayoutConfig } from \"./useLayoutConfig\";\n\ndescribe(\"useLayoutConfig\", () => {\n const defaultProps = {\n size: 300,\n vertical: false,\n };\n it(\"should return normal layout by default\", () => {\n const { result } = renderHook(() =>\n useLayoutConfig({\n ...defaultProps,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n })\n );\n\n expect(result.current).toBeDefined();\n expect(typeof result.current).toBe(\"function\");\n });\n\n it(\"should handle parallax mode\", () => {\n const props = {\n ...defaultProps,\n mode: \"parallax\" as const,\n modeConfig: {\n parallaxScrollingScale: 0.9,\n parallaxScrollingOffset: 50,\n parallaxAdjacentItemScale: 0.8,\n },\n };\n\n const { result } = renderHook(() =>\n useLayoutConfig({\n ...props,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n })\n );\n const style = result.current(0); // Test with offset 0\n\n expect(style.transform).toBeDefined();\n expect(style.transform).toContainEqual({ translateX: 0 });\n expect(style.transform).toContainEqual({ scale: 0.9 });\n });\n\n it(\"should handle horizontal-stack mode\", () => {\n const props = {\n ...defaultProps,\n mode: \"horizontal-stack\" as const,\n modeConfig: {\n snapDirection: \"left\" as const,\n showLength: 3,\n },\n };\n\n const { result } = renderHook(() =>\n useLayoutConfig({\n ...props,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n })\n );\n const style = result.current(0); // Test with offset 0\n\n expect(style.transform).toBeDefined();\n expect(style.zIndex).toBeDefined();\n expect(style.opacity).toBeDefined();\n });\n\n it(\"should handle vertical-stack mode\", () => {\n const props = {\n ...defaultProps,\n mode: \"vertical-stack\" as const,\n modeConfig: {\n snapDirection: \"left\" as const,\n showLength: 3,\n },\n };\n\n const { result } = renderHook(() =>\n useLayoutConfig({\n ...props,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n })\n );\n const style = result.current(0); // Test with offset 0\n\n expect(style.transform).toBeDefined();\n expect(style.zIndex).toBeDefined();\n expect(style.opacity).toBeDefined();\n });\n\n it(\"should handle vertical orientation\", () => {\n const props = {\n ...defaultProps,\n vertical: true,\n };\n\n const { result } = renderHook(() =>\n useLayoutConfig({\n ...props,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n })\n );\n const style = result.current(0); // Test with offset 0\n\n expect(style.transform).toBeDefined();\n expect(style.transform).toContainEqual({ translateY: 0 });\n });\n\n it(\"should handle different offsets\", () => {\n const { result } = renderHook(() =>\n useLayoutConfig({\n ...defaultProps,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n })\n );\n\n const style1 = result.current(-1); // Previous item\n const style2 = result.current(0); // Current item\n const style3 = result.current(1); // Next item\n\n expect(style1.transform).toContainEqual({ translateX: -300 });\n expect(style2.transform).toContainEqual({ translateX: 0 });\n expect(style3.transform).toContainEqual({ translateX: 300 });\n });\n\n it(\"should memoize layout function\", () => {\n const { result, rerender } = renderHook(() =>\n useLayoutConfig({\n ...defaultProps,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n })\n );\n const firstResult = result.current;\n\n rerender();\n expect(result.current).toBe(firstResult);\n });\n\n it(\"should update layout when props change\", () => {\n const { result, rerender } = renderHook(\n (props) =>\n useLayoutConfig({\n ...props,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n }),\n {\n initialProps: defaultProps,\n }\n );\n const firstResult = result.current;\n\n rerender({ ...defaultProps, size: 400 });\n expect(result.current).not.toBe(firstResult);\n });\n});\n"]}
1
+ {"version":3,"sources":["useLayoutConfig.test.tsx"],"names":["describe","defaultProps","size","vertical","it","data","renderItem","loop","autoFillData","defaultIndex","autoPlayInterval","scrollAnimationDuration","width","height","rawData","dataLength","rawDataLength","result","expect","current","toBeDefined","toBe","props","mode","modeConfig","parallaxScrollingScale","parallaxScrollingOffset","parallaxAdjacentItemScale","style","transform","toContainEqual","translateX","scale","snapDirection","showLength","zIndex","opacity","translateY","style1","style2","style3","rerender","firstResult","initialProps","not"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { View } from \"react-native\";\n\nimport { renderHook } from \"@testing-library/react-hooks\";\n\nimport { useLayoutConfig } from \"./useLayoutConfig\";\n\ndescribe(\"useLayoutConfig\", () => {\n const defaultProps = {\n size: 300,\n vertical: false,\n };\n it(\"should return normal layout by default\", () => {\n const { result } = renderHook(() =>\n useLayoutConfig({\n ...defaultProps,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n })\n );\n\n expect(result.current).toBeDefined();\n expect(typeof result.current).toBe(\"function\");\n });\n\n it(\"should handle parallax mode\", () => {\n const props = {\n ...defaultProps,\n mode: \"parallax\" as const,\n modeConfig: {\n parallaxScrollingScale: 0.9,\n parallaxScrollingOffset: 50,\n parallaxAdjacentItemScale: 0.8,\n },\n };\n\n const { result } = renderHook(() =>\n useLayoutConfig({\n ...props,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n })\n );\n const style = result.current(0); // Test with offset 0\n\n expect(style.transform).toBeDefined();\n expect(style.transform).toContainEqual({ translateX: 0 });\n expect(style.transform).toContainEqual({ scale: 0.9 });\n });\n\n it(\"should handle horizontal-stack mode\", () => {\n const props = {\n ...defaultProps,\n mode: \"horizontal-stack\" as const,\n modeConfig: {\n snapDirection: \"left\" as const,\n showLength: 3,\n },\n };\n\n const { result } = renderHook(() =>\n useLayoutConfig({\n ...props,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n })\n );\n const style = result.current(0); // Test with offset 0\n\n expect(style.transform).toBeDefined();\n expect(style.zIndex).toBeDefined();\n expect(style.opacity).toBeDefined();\n });\n\n it(\"should handle vertical-stack mode\", () => {\n const props = {\n ...defaultProps,\n mode: \"vertical-stack\" as const,\n modeConfig: {\n snapDirection: \"left\" as const,\n showLength: 3,\n },\n };\n\n const { result } = renderHook(() =>\n useLayoutConfig({\n ...props,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n })\n );\n const style = result.current(0); // Test with offset 0\n\n expect(style.transform).toBeDefined();\n expect(style.zIndex).toBeDefined();\n expect(style.opacity).toBeDefined();\n });\n\n it(\"should handle vertical orientation\", () => {\n const props = {\n ...defaultProps,\n vertical: true,\n };\n\n const { result } = renderHook(() =>\n useLayoutConfig({\n ...props,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n })\n );\n const style = result.current(0); // Test with offset 0\n\n expect(style.transform).toBeDefined();\n expect(style.transform).toContainEqual({ translateY: 0 });\n });\n\n it(\"should handle different offsets\", () => {\n const { result } = renderHook(() =>\n useLayoutConfig({\n ...defaultProps,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n })\n );\n\n const style1 = result.current(-1); // Previous item\n const style2 = result.current(0); // Current item\n const style3 = result.current(1); // Next item\n\n expect(style1.transform).toContainEqual({ translateX: -300 });\n expect(style2.transform).toContainEqual({ translateX: 0 });\n expect(style3.transform).toContainEqual({ translateX: 300 });\n });\n\n it(\"should memoize layout function\", () => {\n const { result, rerender } = renderHook(() =>\n useLayoutConfig({\n ...defaultProps,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n })\n );\n const firstResult = result.current;\n\n rerender();\n expect(result.current).toBe(firstResult);\n });\n\n it(\"should update layout when props change\", () => {\n const { result, rerender } = renderHook(\n (props) =>\n useLayoutConfig({\n ...props,\n data: [],\n renderItem: () => <View />,\n loop: false,\n autoFillData: false,\n defaultIndex: 0,\n autoPlayInterval: 0,\n scrollAnimationDuration: 0,\n width: 0,\n height: 0,\n rawData: [],\n dataLength: 0,\n rawDataLength: 0,\n }),\n {\n initialProps: defaultProps,\n }\n );\n const firstResult = result.current;\n\n rerender({ ...defaultProps, size: 400 });\n expect(result.current).not.toBe(firstResult);\n });\n});\n"]}
@@ -1,52 +1,2 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useOffsetX = void 0;
7
-
8
- var _reactNativeReanimated = require("react-native-reanimated");
9
-
10
- const useOffsetX = (opts, visibleRanges) => {
11
- const {
12
- handlerOffset,
13
- index,
14
- size,
15
- loop,
16
- dataLength,
17
- type = "positive",
18
- viewCount: _viewCount
19
- } = opts;
20
- const ITEM_LENGTH = dataLength;
21
- const VALID_LENGTH = ITEM_LENGTH - 1;
22
- const TOTAL_WIDTH = size * ITEM_LENGTH;
23
- const HALF_WIDTH = 0.5 * size;
24
- const viewCount = _viewCount !== null && _viewCount !== void 0 ? _viewCount : Math.round((ITEM_LENGTH - 1) / 2);
25
- const positiveCount = type === "positive" ? viewCount : VALID_LENGTH - viewCount;
26
- let startPos = size * index;
27
- if (index > positiveCount) startPos = (index - ITEM_LENGTH) * size;
28
- const MAX = positiveCount * size;
29
- const MIN = -((VALID_LENGTH - positiveCount) * size);
30
- const x = (0, _reactNativeReanimated.useDerivedValue)(() => {
31
- const {
32
- negativeRange,
33
- positiveRange
34
- } = visibleRanges.value;
35
-
36
- if (index >= negativeRange[0] && index <= negativeRange[1] || index >= positiveRange[0] && index <= positiveRange[1]) {
37
- if (loop) {
38
- const inputRange = [-TOTAL_WIDTH, MIN - HALF_WIDTH - startPos - Number.MIN_VALUE, MIN - HALF_WIDTH - startPos, 0, MAX + HALF_WIDTH - startPos, MAX + HALF_WIDTH - startPos + Number.MIN_VALUE, TOTAL_WIDTH];
39
- const outputRange = [startPos, MAX + HALF_WIDTH - Number.MIN_VALUE, MIN - HALF_WIDTH, startPos, MAX + HALF_WIDTH, MIN - HALF_WIDTH + Number.MIN_VALUE, startPos];
40
- return (0, _reactNativeReanimated.interpolate)(handlerOffset.value, inputRange, outputRange, _reactNativeReanimated.Extrapolation.CLAMP);
41
- }
42
-
43
- return handlerOffset.value + size * index;
44
- }
45
-
46
- return Number.MAX_SAFE_INTEGER;
47
- }, [loop, dataLength, viewCount, type, size, visibleRanges, handlerOffset]);
48
- return x;
49
- };
50
-
51
- exports.useOffsetX = useOffsetX;
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.useOffsetX=void 0;var _reactNativeReanimated=require("react-native-reanimated");var _worklet_16646991936500_init_data={code:"function anonymous(){const{visibleRanges,index,loop,TOTAL_WIDTH,MIN,HALF_WIDTH,startPos,MAX,interpolate,handlerOffset,Extrapolation,size}=this.__closure;const{negativeRange:negativeRange,positiveRange:positiveRange}=visibleRanges.value;if(index>=negativeRange[0]&&index<=negativeRange[1]||index>=positiveRange[0]&&index<=positiveRange[1]){if(loop){const inputRange=[-TOTAL_WIDTH,MIN-HALF_WIDTH-startPos-Number.MIN_VALUE,MIN-HALF_WIDTH-startPos,0,MAX+HALF_WIDTH-startPos,MAX+HALF_WIDTH-startPos+Number.MIN_VALUE,TOTAL_WIDTH];const outputRange=[startPos,MAX+HALF_WIDTH-Number.MIN_VALUE,MIN-HALF_WIDTH,startPos,MAX+HALF_WIDTH,MIN-HALF_WIDTH+Number.MIN_VALUE,startPos];return interpolate(handlerOffset.value,inputRange,outputRange,Extrapolation.CLAMP);}return handlerOffset.value+size*index;}return Number.MAX_SAFE_INTEGER;}",location:"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useOffsetX.ts",sourceMap:"{\"version\":3,\"mappings\":\"AAwC4B,QAAAA,UAAA,EAAM,qIAC9B,KAAM,CAAEC,aAAa,CAAbA,aAAF,CAAiBC,2BAAjB,EAAmCC,aAAa,CAACC,KAAvD,wGAEA,GACGC,IADH,CACQ,CAGN,KAAAC,WAAU,GAAAC,WAAA,CAAAC,GAAA,CAAAC,UAAA,CAAAC,QAAA,CAAAC,MAAA,CAAAC,SAAA,CAAAJ,GAAA,CAAAC,UAAA,CAAAC,QAAA,GAAAG,GAAA,CAAAJ,UAAA,CAAAC,QAAA,CAAAG,GAAA,CAAAJ,UAAA,CAAAC,QAAA,CAAAC,MAAA,CAAAC,SAAA,CAAAL,WAAA,CAAV,CACE,KAAMD,YAAU,CACd,CAACC,QAAD,CAACA,GACDC,CAAGC,UADFF,CACDC,MAAmBE,UADnB,CAC8BC,GAAOC,WADrC,CAEGF,QAFH,CAEMD,GAAND,CAAmBE,UAFnB,CAIAG,GAAG,CAAGJ,UAANI,CAAmBH,gBAJnB,CAKMD,QALN,CADF,CAUA,MAAMK,YAAW,CAAAC,aAEfF,MAFe,CAETJ,UAFS,CAEIE,WAFJ,CAEWC,aACpBH,MAHS,CAAjB,CAUA,CACF,MAAAM,cAAA,CAAAX,KAAA,CAAAY,IAAA,CAAAX,KAAA,EAEA,MAAAM,OAAOI,iBAAP,CACF\",\"names\":[\"anonymous\",\"negativeRange\",\"positiveRange\",\"visibleRanges\",\"value\",\"index\",\"inputRange\",\"TOTAL_WIDTH\",\"MIN\",\"HALF_WIDTH\",\"startPos\",\"Number\",\"MIN_VALUE\",\"MAX\",\"outputRange\",\"handlerOffset\",\"size\"],\"sources\":[\"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useOffsetX.ts\"]}",version:"3.10.1"};var useOffsetX=function useOffsetX(opts,visibleRanges){var handlerOffset=opts.handlerOffset,index=opts.index,size=opts.size,loop=opts.loop,dataLength=opts.dataLength,_opts$type=opts.type,type=_opts$type===void 0?"positive":_opts$type,_viewCount=opts.viewCount;var ITEM_LENGTH=dataLength;var VALID_LENGTH=ITEM_LENGTH-1;var TOTAL_WIDTH=size*ITEM_LENGTH;var HALF_WIDTH=0.5*size;var viewCount=_viewCount!=null?_viewCount:Math.round((ITEM_LENGTH-1)/2);var positiveCount=type==="positive"?viewCount:VALID_LENGTH-viewCount;var startPos=size*index;if(index>positiveCount)startPos=(index-ITEM_LENGTH)*size;var MAX=positiveCount*size;var MIN=-((VALID_LENGTH-positiveCount)*size);var x=(0,_reactNativeReanimated.useDerivedValue)(function(){var _e=[new global.Error(),-13,-27];var anonymous=function anonymous(){var _visibleRanges$value=visibleRanges.value,negativeRange=_visibleRanges$value.negativeRange,positiveRange=_visibleRanges$value.positiveRange;if(index>=negativeRange[0]&&index<=negativeRange[1]||index>=positiveRange[0]&&index<=positiveRange[1]){if(loop){var inputRange=[-TOTAL_WIDTH,MIN-HALF_WIDTH-startPos-Number.MIN_VALUE,MIN-HALF_WIDTH-startPos,0,MAX+HALF_WIDTH-startPos,MAX+HALF_WIDTH-startPos+Number.MIN_VALUE,TOTAL_WIDTH];var outputRange=[startPos,MAX+HALF_WIDTH-Number.MIN_VALUE,MIN-HALF_WIDTH,startPos,MAX+HALF_WIDTH,MIN-HALF_WIDTH+Number.MIN_VALUE,startPos];return(0,_reactNativeReanimated.interpolate)(handlerOffset.value,inputRange,outputRange,_reactNativeReanimated.Extrapolation.CLAMP);}return handlerOffset.value+size*index;}return Number.MAX_SAFE_INTEGER;};anonymous.__closure={visibleRanges:visibleRanges,index:index,loop:loop,TOTAL_WIDTH:TOTAL_WIDTH,MIN:MIN,HALF_WIDTH:HALF_WIDTH,startPos:startPos,MAX:MAX,interpolate:_reactNativeReanimated.interpolate,handlerOffset:handlerOffset,Extrapolation:_reactNativeReanimated.Extrapolation,size:size};anonymous.__workletHash=16646991936500;anonymous.__initData=_worklet_16646991936500_init_data;anonymous.__stackDetails=_e;return anonymous;}(),[loop,dataLength,viewCount,type,size,visibleRanges,handlerOffset]);return x;};exports.useOffsetX=useOffsetX;
52
2
  //# sourceMappingURL=useOffsetX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["useOffsetX.ts"],"names":["useOffsetX","opts","visibleRanges","handlerOffset","index","size","loop","dataLength","type","viewCount","_viewCount","ITEM_LENGTH","VALID_LENGTH","TOTAL_WIDTH","HALF_WIDTH","Math","round","positiveCount","startPos","MAX","MIN","x","negativeRange","positiveRange","value","inputRange","Number","MIN_VALUE","outputRange","Extrapolation","CLAMP","MAX_SAFE_INTEGER"],"mappings":";;;;;;;AACA;;AAcO,MAAMA,UAAU,GAAG,CAACC,IAAD,EAAcC,aAAd,KAAgD;AACxE,QAAM;AACJC,IAAAA,aADI;AAEJC,IAAAA,KAFI;AAGJC,IAAAA,IAHI;AAIJC,IAAAA,IAJI;AAKJC,IAAAA,UALI;AAMJC,IAAAA,IAAI,GAAG,UANH;AAOJC,IAAAA,SAAS,EAAEC;AAPP,MAQFT,IARJ;AAUA,QAAMU,WAAW,GAAGJ,UAApB;AACA,QAAMK,YAAY,GAAGD,WAAW,GAAG,CAAnC;AACA,QAAME,WAAW,GAAGR,IAAI,GAAGM,WAA3B;AACA,QAAMG,UAAU,GAAG,MAAMT,IAAzB;AAEA,QAAMI,SAAS,GAAGC,UAAH,aAAGA,UAAH,cAAGA,UAAH,GAAiBK,IAAI,CAACC,KAAL,CAAW,CAACL,WAAW,GAAG,CAAf,IAAoB,CAA/B,CAAhC;AACA,QAAMM,aAAa,GAAGT,IAAI,KAAK,UAAT,GAAsBC,SAAtB,GAAkCG,YAAY,GAAGH,SAAvE;AAEA,MAAIS,QAAQ,GAAGb,IAAI,GAAGD,KAAtB;AACA,MAAIA,KAAK,GAAGa,aAAZ,EAA2BC,QAAQ,GAAG,CAACd,KAAK,GAAGO,WAAT,IAAwBN,IAAnC;AAE3B,QAAMc,GAAG,GAAGF,aAAa,GAAGZ,IAA5B;AACA,QAAMe,GAAG,GAAG,EAAE,CAACR,YAAY,GAAGK,aAAhB,IAAiCZ,IAAnC,CAAZ;AAEA,QAAMgB,CAAC,GAAG,4CAAgB,MAAM;AAC9B,UAAM;AAAEC,MAAAA,aAAF;AAAiBC,MAAAA;AAAjB,QAAmCrB,aAAa,CAACsB,KAAvD;;AAEA,QACGpB,KAAK,IAAIkB,aAAa,CAAC,CAAD,CAAtB,IAA6BlB,KAAK,IAAIkB,aAAa,CAAC,CAAD,CAApD,IACClB,KAAK,IAAImB,aAAa,CAAC,CAAD,CAAtB,IAA6BnB,KAAK,IAAImB,aAAa,CAAC,CAAD,CAFtD,EAGE;AACA,UAAIjB,IAAJ,EAAU;AACR,cAAMmB,UAAU,GAAG,CACjB,CAACZ,WADgB,EAEjBO,GAAG,GAAGN,UAAN,GAAmBI,QAAnB,GAA8BQ,MAAM,CAACC,SAFpB,EAGjBP,GAAG,GAAGN,UAAN,GAAmBI,QAHF,EAIjB,CAJiB,EAKjBC,GAAG,GAAGL,UAAN,GAAmBI,QALF,EAMjBC,GAAG,GAAGL,UAAN,GAAmBI,QAAnB,GAA8BQ,MAAM,CAACC,SANpB,EAOjBd,WAPiB,CAAnB;AAUA,cAAMe,WAAW,GAAG,CAClBV,QADkB,EAElBC,GAAG,GAAGL,UAAN,GAAmBY,MAAM,CAACC,SAFR,EAGlBP,GAAG,GAAGN,UAHY,EAIlBI,QAJkB,EAKlBC,GAAG,GAAGL,UALY,EAMlBM,GAAG,GAAGN,UAAN,GAAmBY,MAAM,CAACC,SANR,EAOlBT,QAPkB,CAApB;AAUA,eAAO,wCAAYf,aAAa,CAACqB,KAA1B,EAAiCC,UAAjC,EAA6CG,WAA7C,EAA0DC,qCAAcC,KAAxE,CAAP;AACD;;AAED,aAAO3B,aAAa,CAACqB,KAAd,GAAsBnB,IAAI,GAAGD,KAApC;AACD;;AAED,WAAOsB,MAAM,CAACK,gBAAd;AACD,GAnCS,EAmCP,CAACzB,IAAD,EAAOC,UAAP,EAAmBE,SAAnB,EAA8BD,IAA9B,EAAoCH,IAApC,EAA0CH,aAA1C,EAAyDC,aAAzD,CAnCO,CAAV;AAqCA,SAAOkB,CAAP;AACD,CA/DM","sourcesContent":["import type Animated from \"react-native-reanimated\";\nimport { Extrapolation, interpolate, useDerivedValue } from \"react-native-reanimated\";\n\nimport type { IVisibleRanges } from \"./useVisibleRanges\";\n\nexport interface IOpts {\n index: number;\n size: number;\n handlerOffset: Animated.SharedValue<number>;\n dataLength: number;\n type?: \"positive\" | \"negative\";\n viewCount?: number;\n loop?: boolean;\n}\n\nexport const useOffsetX = (opts: IOpts, visibleRanges: IVisibleRanges) => {\n const {\n handlerOffset,\n index,\n size,\n loop,\n dataLength,\n type = \"positive\",\n viewCount: _viewCount,\n } = opts;\n\n const ITEM_LENGTH = dataLength;\n const VALID_LENGTH = ITEM_LENGTH - 1;\n const TOTAL_WIDTH = size * ITEM_LENGTH;\n const HALF_WIDTH = 0.5 * size;\n\n const viewCount = _viewCount ?? Math.round((ITEM_LENGTH - 1) / 2);\n const positiveCount = type === \"positive\" ? viewCount : VALID_LENGTH - viewCount;\n\n let startPos = size * index;\n if (index > positiveCount) startPos = (index - ITEM_LENGTH) * size;\n\n const MAX = positiveCount * size;\n const MIN = -((VALID_LENGTH - positiveCount) * size);\n\n const x = useDerivedValue(() => {\n const { negativeRange, positiveRange } = visibleRanges.value;\n\n if (\n (index >= negativeRange[0] && index <= negativeRange[1]) ||\n (index >= positiveRange[0] && index <= positiveRange[1])\n ) {\n if (loop) {\n const inputRange = [\n -TOTAL_WIDTH,\n MIN - HALF_WIDTH - startPos - Number.MIN_VALUE,\n MIN - HALF_WIDTH - startPos,\n 0,\n MAX + HALF_WIDTH - startPos,\n MAX + HALF_WIDTH - startPos + Number.MIN_VALUE,\n TOTAL_WIDTH,\n ];\n\n const outputRange = [\n startPos,\n MAX + HALF_WIDTH - Number.MIN_VALUE,\n MIN - HALF_WIDTH,\n startPos,\n MAX + HALF_WIDTH,\n MIN - HALF_WIDTH + Number.MIN_VALUE,\n startPos,\n ];\n\n return interpolate(handlerOffset.value, inputRange, outputRange, Extrapolation.CLAMP);\n }\n\n return handlerOffset.value + size * index;\n }\n\n return Number.MAX_SAFE_INTEGER;\n }, [loop, dataLength, viewCount, type, size, visibleRanges, handlerOffset]);\n\n return x;\n};\n"]}
1
+ {"version":3,"sources":["useOffsetX.ts"],"names":["useOffsetX","opts","visibleRanges","handlerOffset","index","size","loop","dataLength","type","_viewCount","viewCount","ITEM_LENGTH","VALID_LENGTH","TOTAL_WIDTH","HALF_WIDTH","Math","round","positiveCount","startPos","MAX","MIN","x","value","negativeRange","positiveRange","inputRange","Number","MIN_VALUE","outputRange","Extrapolation","CLAMP","MAX_SAFE_INTEGER","interpolate"],"mappings":"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","sourcesContent":["import type Animated from \"react-native-reanimated\";\nimport { Extrapolation, interpolate, useDerivedValue } from \"react-native-reanimated\";\n\nimport type { IVisibleRanges } from \"./useVisibleRanges\";\n\nexport interface IOpts {\n index: number;\n size: number;\n handlerOffset: Animated.SharedValue<number>;\n dataLength: number;\n type?: \"positive\" | \"negative\";\n viewCount?: number;\n loop?: boolean;\n}\n\nexport const useOffsetX = (opts: IOpts, visibleRanges: IVisibleRanges) => {\n const {\n handlerOffset,\n index,\n size,\n loop,\n dataLength,\n type = \"positive\",\n viewCount: _viewCount,\n } = opts;\n\n const ITEM_LENGTH = dataLength;\n const VALID_LENGTH = ITEM_LENGTH - 1;\n const TOTAL_WIDTH = size * ITEM_LENGTH;\n const HALF_WIDTH = 0.5 * size;\n\n const viewCount = _viewCount ?? Math.round((ITEM_LENGTH - 1) / 2);\n const positiveCount = type === \"positive\" ? viewCount : VALID_LENGTH - viewCount;\n\n let startPos = size * index;\n if (index > positiveCount) startPos = (index - ITEM_LENGTH) * size;\n\n const MAX = positiveCount * size;\n const MIN = -((VALID_LENGTH - positiveCount) * size);\n\n const x = useDerivedValue(() => {\n const { negativeRange, positiveRange } = visibleRanges.value;\n\n if (\n (index >= negativeRange[0] && index <= negativeRange[1]) ||\n (index >= positiveRange[0] && index <= positiveRange[1])\n ) {\n if (loop) {\n const inputRange = [\n -TOTAL_WIDTH,\n MIN - HALF_WIDTH - startPos - Number.MIN_VALUE,\n MIN - HALF_WIDTH - startPos,\n 0,\n MAX + HALF_WIDTH - startPos,\n MAX + HALF_WIDTH - startPos + Number.MIN_VALUE,\n TOTAL_WIDTH,\n ];\n\n const outputRange = [\n startPos,\n MAX + HALF_WIDTH - Number.MIN_VALUE,\n MIN - HALF_WIDTH,\n startPos,\n MAX + HALF_WIDTH,\n MIN - HALF_WIDTH + Number.MIN_VALUE,\n startPos,\n ];\n\n return interpolate(handlerOffset.value, inputRange, outputRange, Extrapolation.CLAMP);\n }\n\n return handlerOffset.value + size * index;\n }\n\n return Number.MAX_SAFE_INTEGER;\n }, [loop, dataLength, viewCount, type, size, visibleRanges, handlerOffset]);\n\n return x;\n};\n"]}
@@ -1,40 +1,4 @@
1
- "use strict";
2
-
3
- var _reactNativeReanimated = require("react-native-reanimated");
4
-
5
- var _reactHooks = require("@testing-library/react-hooks");
6
-
7
- var _useOffsetX = require("./useOffsetX");
8
-
9
- describe("useSharedValue", () => {
10
- it("should return the correct values", async () => {
11
- const hook = (0, _reactHooks.renderHook)(() => {
12
- const range = (0, _reactNativeReanimated.useSharedValue)({
13
- negativeRange: [7, 9],
14
- positiveRange: [0, 3]
15
- });
16
- const inputs = Array.from({
17
- length: 10
18
- }).map((_, index) => ({
19
- config: {
20
- dataLength: 10,
21
- handlerOffset: (0, _reactNativeReanimated.useSharedValue)(-0),
22
- index,
23
- loop: false,
24
- size: 393
25
- },
26
- range
27
- }));
28
- return inputs.map(input => {
29
- const {
30
- config,
31
- range
32
- } = input;
33
- return (0, _useOffsetX.useOffsetX)(config, range);
34
- });
35
- });
36
- const expected = hook.result.current.map(v => v.value).slice();
37
- expect(expected).toMatchInlineSnapshot(`
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _reactNativeReanimated=require("react-native-reanimated");var _reactHooks=require("@testing-library/react-hooks");var _useOffsetX=require("./useOffsetX");describe("useSharedValue",function(){it("should return the correct values",(0,_asyncToGenerator2.default)(function*(){var hook=(0,_reactHooks.renderHook)(function(){var range=(0,_reactNativeReanimated.useSharedValue)({negativeRange:[7,9],positiveRange:[0,3]});var inputs=Array.from({length:10}).map(function(_,index){return{config:{dataLength:10,handlerOffset:(0,_reactNativeReanimated.useSharedValue)(-0),index:index,loop:false,size:393},range:range};});return inputs.map(function(input){var config=input.config,range=input.range;return(0,_useOffsetX.useOffsetX)(config,range);});});var expected=hook.result.current.map(function(v){return v.value;}).slice();expect(expected).toMatchInlineSnapshot(`
38
2
  [
39
3
  0,
40
4
  393,
@@ -47,7 +11,5 @@ describe("useSharedValue", () => {
47
11
  3144,
48
12
  3537,
49
13
  ]
50
- `);
51
- });
52
- });
14
+ `);}));});
53
15
  //# sourceMappingURL=useOffsetX.test.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["useOffsetX.test.ts"],"names":["describe","it","hook","range","negativeRange","positiveRange","inputs","Array","from","length","map","_","index","config","dataLength","handlerOffset","loop","size","input","expected","result","current","v","value","slice","expect","toMatchInlineSnapshot"],"mappings":";;AAAA;;AAEA;;AAGA;;AAGAA,QAAQ,CAAC,gBAAD,EAAmB,MAAM;AAC/BC,EAAAA,EAAE,CAAC,kCAAD,EAAqC,YAAY;AACjD,UAAMC,IAAI,GAAG,4BAAW,MAAM;AAC5B,YAAMC,KAAK,GAAG,2CAAe;AAC3BC,QAAAA,aAAa,EAAE,CAAC,CAAD,EAAI,CAAJ,CADY;AAE3BC,QAAAA,aAAa,EAAE,CAAC,CAAD,EAAI,CAAJ;AAFY,OAAf,CAAd;AAIA,YAAMC,MAGJ,GAAGC,KAAK,CAACC,IAAN,CAAW;AAAEC,QAAAA,MAAM,EAAE;AAAV,OAAX,EAA2BC,GAA3B,CAA+B,CAACC,CAAD,EAAIC,KAAJ,MAAe;AACjDC,QAAAA,MAAM,EAAE;AACNC,UAAAA,UAAU,EAAE,EADN;AAENC,UAAAA,aAAa,EAAE,2CAAe,CAAC,CAAhB,CAFT;AAGNH,UAAAA,KAHM;AAINI,UAAAA,IAAI,EAAE,KAJA;AAKNC,UAAAA,IAAI,EAAE;AALA,SADyC;AAQjDd,QAAAA;AARiD,OAAf,CAA/B,CAHL;AAcA,aAAOG,MAAM,CAACI,GAAP,CAAYQ,KAAD,IAAW;AAC3B,cAAM;AAAEL,UAAAA,MAAF;AAAUV,UAAAA;AAAV,YAAoBe,KAA1B;AAEA,eAAO,4BAAWL,MAAX,EAAmBV,KAAnB,CAAP;AACD,OAJM,CAAP;AAKD,KAxBY,CAAb;AA0BA,UAAMgB,QAAQ,GAAGjB,IAAI,CAACkB,MAAL,CAAYC,OAAZ,CAAoBX,GAApB,CAAyBY,CAAD,IAAOA,CAAC,CAACC,KAAjC,EAAwCC,KAAxC,EAAjB;AAEAC,IAAAA,MAAM,CAACN,QAAD,CAAN,CAAiBO,qBAAjB,CAAwC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAbI;AAcD,GA3CC,CAAF;AA4CD,CA7CO,CAAR","sourcesContent":["import { useSharedValue } from \"react-native-reanimated\";\n\nimport { renderHook } from \"@testing-library/react-hooks\";\n\nimport type { IOpts } from \"./useOffsetX\";\nimport { useOffsetX } from \"./useOffsetX\";\nimport type { IVisibleRanges } from \"./useVisibleRanges\";\n\ndescribe(\"useSharedValue\", () => {\n it(\"should return the correct values\", async () => {\n const hook = renderHook(() => {\n const range = useSharedValue({\n negativeRange: [7, 9],\n positiveRange: [0, 3],\n }) as IVisibleRanges;\n const inputs: Array<{\n config: IOpts;\n range: IVisibleRanges;\n }> = Array.from({ length: 10 }).map((_, index) => ({\n config: {\n dataLength: 10,\n handlerOffset: useSharedValue(-0),\n index,\n loop: false,\n size: 393,\n },\n range,\n }));\n\n return inputs.map((input) => {\n const { config, range } = input;\n\n return useOffsetX(config, range);\n });\n });\n\n const expected = hook.result.current.map((v) => v.value).slice();\n\n expect(expected).toMatchInlineSnapshot(`\n [\n 0,\n 393,\n 786,\n 1179,\n 9007199254740991,\n 9007199254740991,\n 9007199254740991,\n 2751,\n 3144,\n 3537,\n ]\n `);\n });\n});\n"]}
1
+ {"version":3,"sources":["useOffsetX.test.ts"],"names":["describe","it","hook","range","negativeRange","positiveRange","inputs","Array","from","length","map","_","index","config","dataLength","handlerOffset","loop","size","input","expected","result","current","v","value","slice","expect","toMatchInlineSnapshot"],"mappings":"qLAAA,8DAEA,wDAGA,wCAGAA,QAAQ,CAAC,gBAAD,CAAmB,UAAM,CAC/BC,EAAE,CAAC,kCAAD,gCAAqC,WAAY,CACjD,GAAMC,CAAAA,IAAI,CAAG,2BAAW,UAAM,CAC5B,GAAMC,CAAAA,KAAK,CAAG,0CAAe,CAC3BC,aAAa,CAAE,CAAC,CAAD,CAAI,CAAJ,CADY,CAE3BC,aAAa,CAAE,CAAC,CAAD,CAAI,CAAJ,CAFY,CAAf,CAAd,CAIA,GAAMC,CAAAA,MAGJ,CAAGC,KAAK,CAACC,IAAN,CAAW,CAAEC,MAAM,CAAE,EAAV,CAAX,EAA2BC,GAA3B,CAA+B,SAACC,CAAD,CAAIC,KAAJ,QAAe,CACjDC,MAAM,CAAE,CACNC,UAAU,CAAE,EADN,CAENC,aAAa,CAAE,0CAAe,CAAC,CAAhB,CAFT,CAGNH,KAAK,CAALA,KAHM,CAINI,IAAI,CAAE,KAJA,CAKNC,IAAI,CAAE,GALA,CADyC,CAQjDd,KAAK,CAALA,KARiD,CAAf,EAA/B,CAHL,CAcA,MAAOG,CAAAA,MAAM,CAACI,GAAP,CAAW,SAACQ,KAAD,CAAW,CAC3B,GAAQL,CAAAA,MAAR,CAA0BK,KAA1B,CAAQL,MAAR,CAAgBV,KAAhB,CAA0Be,KAA1B,CAAgBf,KAAhB,CAEA,MAAO,2BAAWU,MAAX,CAAmBV,KAAnB,CAAP,CACD,CAJM,CAAP,CAKD,CAxBY,CAAb,CA0BA,GAAMgB,CAAAA,QAAQ,CAAGjB,IAAI,CAACkB,MAAL,CAAYC,OAAZ,CAAoBX,GAApB,CAAwB,SAACY,CAAD,QAAOA,CAAAA,CAAC,CAACC,KAAT,EAAxB,EAAwCC,KAAxC,EAAjB,CAEAC,MAAM,CAACN,QAAD,CAAN,CAAiBO,qBAAjB,CAAwC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAbI,EAcD,CA3CC,EAAF,CA4CD,CA7CO,CAAR","sourcesContent":["import { useSharedValue } from \"react-native-reanimated\";\n\nimport { renderHook } from \"@testing-library/react-hooks\";\n\nimport type { IOpts } from \"./useOffsetX\";\nimport { useOffsetX } from \"./useOffsetX\";\nimport type { IVisibleRanges } from \"./useVisibleRanges\";\n\ndescribe(\"useSharedValue\", () => {\n it(\"should return the correct values\", async () => {\n const hook = renderHook(() => {\n const range = useSharedValue({\n negativeRange: [7, 9],\n positiveRange: [0, 3],\n }) as IVisibleRanges;\n const inputs: Array<{\n config: IOpts;\n range: IVisibleRanges;\n }> = Array.from({ length: 10 }).map((_, index) => ({\n config: {\n dataLength: 10,\n handlerOffset: useSharedValue(-0),\n index,\n loop: false,\n size: 393,\n },\n range,\n }));\n\n return inputs.map((input) => {\n const { config, range } = input;\n\n return useOffsetX(config, range);\n });\n });\n\n const expected = hook.result.current.map((v) => v.value).slice();\n\n expect(expected).toMatchInlineSnapshot(`\n [\n 0,\n 393,\n 786,\n 1179,\n 9007199254740991,\n 9007199254740991,\n 9007199254740991,\n 2751,\n 3144,\n 3537,\n ]\n `);\n });\n});\n"]}
@@ -1,47 +1,2 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useOnProgressChange = useOnProgressChange;
7
-
8
- var _reactNativeReanimated = require("react-native-reanimated");
9
-
10
- var _computedWithAutoFillData = require("../utils/computed-with-auto-fill-data");
11
-
12
- function useOnProgressChange(opts) {
13
- const {
14
- autoFillData,
15
- loop,
16
- offsetX,
17
- size,
18
- rawDataLength,
19
- onProgressChange
20
- } = opts; // remember `isFunc` here because we can't accurately check typeof
21
- // from within useAnimatedReaction because its code has been workletized;
22
- // the `onProgressChange` value will be typeof "object" from within
23
- // the worklet code even if it's a function.
24
-
25
- const isFunc = typeof onProgressChange === "function";
26
- (0, _reactNativeReanimated.useAnimatedReaction)(() => offsetX.value, _value => {
27
- let value = (0, _computedWithAutoFillData.computedOffsetXValueWithAutoFillData)({
28
- value: _value,
29
- rawDataLength,
30
- size,
31
- autoFillData,
32
- loop
33
- });
34
-
35
- if (!loop) {
36
- value = Math.max(-((rawDataLength - 1) * size), Math.min(value, 0));
37
- }
38
-
39
- let absoluteProgress = Math.abs(value / size);
40
- if (value > 0) absoluteProgress = rawDataLength - absoluteProgress;
41
-
42
- if (onProgressChange) {
43
- if (isFunc) (0, _reactNativeReanimated.runOnJS)(onProgressChange)(value, absoluteProgress);else onProgressChange.value = absoluteProgress;
44
- }
45
- }, [loop, autoFillData, rawDataLength, onProgressChange]);
46
- }
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.useOnProgressChange=useOnProgressChange;var _reactNativeReanimated=require("react-native-reanimated");var _computedWithAutoFillData=require("../utils/computed-with-auto-fill-data");var _worklet_14598947245081_init_data={code:"function anonymous(){const{offsetX}=this.__closure;return offsetX.value;}",location:"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useOnProgressChange.ts",sourceMap:"{\"version\":3,\"mappings\":\"AAwBI,QAAAA,UAAA,uCAAMC,QAAQC,MAAd\",\"names\":[\"anonymous\",\"offsetX\",\"value\"],\"sources\":[\"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useOnProgressChange.ts\"]}",version:"3.10.1"};var _worklet_9525472487100_init_data={code:"function anonymous(_value){const{computedOffsetXValueWithAutoFillData,rawDataLength,size,autoFillData,loop,onProgressChange,isFunc,runOnJS}=this.__closure;let value=computedOffsetXValueWithAutoFillData({value:_value,rawDataLength:rawDataLength,size:size,autoFillData:autoFillData,loop:loop});if(!loop){value=Math.max(-((rawDataLength-1)*size),Math.min(value,0));}let absoluteProgress=Math.abs(value/size);if(value>0)absoluteProgress=rawDataLength-absoluteProgress;if(onProgressChange){if(isFunc)runOnJS(onProgressChange)(value,absoluteProgress);else onProgressChange.value=absoluteProgress;}}",location:"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useOnProgressChange.ts",sourceMap:"{\"version\":3,\"mappings\":\"AAyBKA,mBAAWA,MAAXA,CAAW,iIACV,GAAIC,MAAK,CAAGC,oCAAoC,CAAC,CAC/CD,KAAK,CAAED,MADwC,CAE/CG,aAAa,CAAbA,aAF+C,CAG/CC,IAAI,CAAJA,IAH+C,CAI/CC,YAAY,CAAZA,YAJ+C,CAK/CC,SAL+C,CAAD,CAAhD,WAQAL,KAAKK,CAALC,IAAW,CAAAC,GAAX,CAAW,GAAAL,aAAA,IAAAC,IAAA,CAAX,CAAWG,IAAA,CAAAE,GAAA,CAAAR,KAAA,GAAX,EACEA,CACF,GAAAS,iBAAA,CAAAH,IAAA,CAAAI,GAAA,CAAAV,KAAA,CAAAG,IAAA,6DAEA,GAAIM,gBAAJ,CAAoB,CAEpB,GAAIT,MAAJ,CAAAW,OAAeF,kBAAf,CAAkCP,KAAlC,CAA+CO,gBAA/C,MAAeA,0CAEf\",\"names\":[\"_value\",\"value\",\"computedOffsetXValueWithAutoFillData\",\"rawDataLength\",\"size\",\"autoFillData\",\"loop\",\"Math\",\"max\",\"min\",\"absoluteProgress\",\"abs\",\"runOnJS\"],\"sources\":[\"/home/runner/work/react-native-reanimated-carousel/react-native-reanimated-carousel/src/hooks/useOnProgressChange.ts\"]}",version:"3.10.1"};function useOnProgressChange(opts){var autoFillData=opts.autoFillData,loop=opts.loop,offsetX=opts.offsetX,size=opts.size,rawDataLength=opts.rawDataLength,onProgressChange=opts.onProgressChange;var isFunc=typeof onProgressChange==="function";(0,_reactNativeReanimated.useAnimatedReaction)(function(){var _e=[new global.Error(),-2,-27];var anonymous=function anonymous(){return offsetX.value;};anonymous.__closure={offsetX:offsetX};anonymous.__workletHash=14598947245081;anonymous.__initData=_worklet_14598947245081_init_data;anonymous.__stackDetails=_e;return anonymous;}(),function(){var _e=[new global.Error(),-9,-27];var anonymous=function anonymous(_value){var value=(0,_computedWithAutoFillData.computedOffsetXValueWithAutoFillData)({value:_value,rawDataLength:rawDataLength,size:size,autoFillData:autoFillData,loop:loop});if(!loop){value=Math.max(-((rawDataLength-1)*size),Math.min(value,0));}var absoluteProgress=Math.abs(value/size);if(value>0)absoluteProgress=rawDataLength-absoluteProgress;if(onProgressChange){if(isFunc)(0,_reactNativeReanimated.runOnJS)(onProgressChange)(value,absoluteProgress);else onProgressChange.value=absoluteProgress;}};anonymous.__closure={computedOffsetXValueWithAutoFillData:_computedWithAutoFillData.computedOffsetXValueWithAutoFillData,rawDataLength:rawDataLength,size:size,autoFillData:autoFillData,loop:loop,onProgressChange:onProgressChange,isFunc:isFunc,runOnJS:_reactNativeReanimated.runOnJS};anonymous.__workletHash=9525472487100;anonymous.__initData=_worklet_9525472487100_init_data;anonymous.__stackDetails=_e;return anonymous;}(),[loop,autoFillData,rawDataLength,onProgressChange,size]);}
47
2
  //# sourceMappingURL=useOnProgressChange.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["useOnProgressChange.ts"],"names":["useOnProgressChange","opts","autoFillData","loop","offsetX","size","rawDataLength","onProgressChange","isFunc","value","_value","Math","max","min","absoluteProgress","abs"],"mappings":";;;;;;;AACA;;AAGA;;AAEO,SAASA,mBAAT,CACLC,IADK,EAQL;AACA,QAAM;AAAEC,IAAAA,YAAF;AAAgBC,IAAAA,IAAhB;AAAsBC,IAAAA,OAAtB;AAA+BC,IAAAA,IAA/B;AAAqCC,IAAAA,aAArC;AAAoDC,IAAAA;AAApD,MAAyEN,IAA/E,CADA,CAGA;AACA;AACA;AACA;;AACA,QAAMO,MAAM,GAAG,OAAOD,gBAAP,KAA4B,UAA3C;AAEA,kDACE,MAAMH,OAAO,CAACK,KADhB,EAEGC,MAAD,IAAY;AACV,QAAID,KAAK,GAAG,oEAAqC;AAC/CA,MAAAA,KAAK,EAAEC,MADwC;AAE/CJ,MAAAA,aAF+C;AAG/CD,MAAAA,IAH+C;AAI/CH,MAAAA,YAJ+C;AAK/CC,MAAAA;AAL+C,KAArC,CAAZ;;AAQA,QAAI,CAACA,IAAL,EAAW;AACTM,MAAAA,KAAK,GAAGE,IAAI,CAACC,GAAL,CAAS,EAAE,CAACN,aAAa,GAAG,CAAjB,IAAsBD,IAAxB,CAAT,EAAwCM,IAAI,CAACE,GAAL,CAASJ,KAAT,EAAgB,CAAhB,CAAxC,CAAR;AACD;;AAED,QAAIK,gBAAgB,GAAGH,IAAI,CAACI,GAAL,CAASN,KAAK,GAAGJ,IAAjB,CAAvB;AAEA,QAAII,KAAK,GAAG,CAAZ,EAAeK,gBAAgB,GAAGR,aAAa,GAAGQ,gBAAnC;;AAEf,QAAIP,gBAAJ,EAAsB;AACpB,UAAIC,MAAJ,EAAY,oCAAQD,gBAAR,EAA0BE,KAA1B,EAAiCK,gBAAjC,EAAZ,KACKP,gBAAgB,CAACE,KAAjB,GAAyBK,gBAAzB;AACN;AACF,GAvBH,EAwBE,CAACX,IAAD,EAAOD,YAAP,EAAqBI,aAArB,EAAoCC,gBAApC,CAxBF;AA0BD","sourcesContent":["import type Animated from \"react-native-reanimated\";\nimport { runOnJS, useAnimatedReaction } from \"react-native-reanimated\";\n\nimport type { TCarouselProps } from \"../types\";\nimport { computedOffsetXValueWithAutoFillData } from \"../utils/computed-with-auto-fill-data\";\n\nexport function useOnProgressChange(\n opts: {\n size: number;\n autoFillData: boolean;\n loop: boolean;\n offsetX: Animated.SharedValue<number>;\n rawDataLength: number;\n } & Pick<TCarouselProps, \"onProgressChange\">\n) {\n const { autoFillData, loop, offsetX, size, rawDataLength, onProgressChange } = opts;\n\n // remember `isFunc` here because we can't accurately check typeof\n // from within useAnimatedReaction because its code has been workletized;\n // the `onProgressChange` value will be typeof \"object\" from within\n // the worklet code even if it's a function.\n const isFunc = typeof onProgressChange === \"function\";\n\n useAnimatedReaction(\n () => offsetX.value,\n (_value) => {\n let value = computedOffsetXValueWithAutoFillData({\n value: _value,\n rawDataLength,\n size,\n autoFillData,\n loop,\n });\n\n if (!loop) {\n value = Math.max(-((rawDataLength - 1) * size), Math.min(value, 0));\n }\n\n let absoluteProgress = Math.abs(value / size);\n\n if (value > 0) absoluteProgress = rawDataLength - absoluteProgress;\n\n if (onProgressChange) {\n if (isFunc) runOnJS(onProgressChange)(value, absoluteProgress);\n else onProgressChange.value = absoluteProgress;\n }\n },\n [loop, autoFillData, rawDataLength, onProgressChange]\n );\n}\n"]}
1
+ {"version":3,"sources":["useOnProgressChange.ts"],"names":["useOnProgressChange","opts","autoFillData","loop","offsetX","size","rawDataLength","onProgressChange","isFunc","value","_value","Math","max","min","absoluteProgress","abs","computedOffsetXValueWithAutoFillData","runOnJS"],"mappings":"yGACA,8DAGA,+E,ulEAEO,QAASA,CAAAA,mBAAT,CACLC,IADK,CAQL,CACA,GAAQC,CAAAA,YAAR,CAA+ED,IAA/E,CAAQC,YAAR,CAAsBC,IAAtB,CAA+EF,IAA/E,CAAsBE,IAAtB,CAA4BC,OAA5B,CAA+EH,IAA/E,CAA4BG,OAA5B,CAAqCC,IAArC,CAA+EJ,IAA/E,CAAqCI,IAArC,CAA2CC,aAA3C,CAA+EL,IAA/E,CAA2CK,aAA3C,CAA0DC,gBAA1D,CAA+EN,IAA/E,CAA0DM,gBAA1D,CAMA,GAAMC,CAAAA,MAAM,CAAG,MAAOD,CAAAA,gBAAP,GAA4B,UAA3C,CAEA,+CACE,uFAAMH,CAAAA,OAAO,CAACK,KAAd,gCAAML,OAAN,8IADF,GAEE,+EAACM,MAAD,CAAY,CACV,GAAID,CAAAA,KAAK,CAAG,mEAAqC,CAC/CA,KAAK,CAAEC,MADwC,CAE/CJ,aAAa,CAAbA,aAF+C,CAG/CD,IAAI,CAAJA,IAH+C,CAI/CH,YAAY,CAAZA,YAJ+C,CAK/CC,IAAI,CAAJA,IAL+C,CAArC,CAAZ,CAQA,GAAI,CAACA,IAAL,CAAW,CACTM,KAAK,CAAGE,IAAI,CAACC,GAAL,CAAS,EAAE,CAACN,aAAa,CAAG,CAAjB,EAAsBD,IAAxB,CAAT,CAAwCM,IAAI,CAACE,GAAL,CAASJ,KAAT,CAAgB,CAAhB,CAAxC,CAAR,CACD,CAED,GAAIK,CAAAA,gBAAgB,CAAGH,IAAI,CAACI,GAAL,CAASN,KAAK,CAAGJ,IAAjB,CAAvB,CAEA,GAAII,KAAK,CAAG,CAAZ,CAAeK,gBAAgB,CAAGR,aAAa,CAAGQ,gBAAnC,CAEf,GAAIP,gBAAJ,CAAsB,CACpB,GAAIC,MAAJ,CAAY,mCAAQD,gBAAR,EAA0BE,KAA1B,CAAiCK,gBAAjC,EAAZ,IACKP,CAAAA,gBAAgB,CAACE,KAAjB,CAAyBK,gBAAzB,CACN,CACF,CArBD,2DACcE,8DADd,eAGIV,aAHJ,MAIID,IAJJ,cAKIH,YALJ,MAMIC,IANJ,kBAiBMI,gBAjBN,QAkBQC,MAlBR,SAkBgBS,8BAlBhB,4IAFF,GAwBE,CAACd,IAAD,CAAOD,YAAP,CAAqBI,aAArB,CAAoCC,gBAApC,CAAsDF,IAAtD,CAxBF,EA0BD","sourcesContent":["import type Animated from \"react-native-reanimated\";\nimport { runOnJS, useAnimatedReaction } from \"react-native-reanimated\";\n\nimport type { TCarouselProps } from \"../types\";\nimport { computedOffsetXValueWithAutoFillData } from \"../utils/computed-with-auto-fill-data\";\n\nexport function useOnProgressChange(\n opts: {\n size: number;\n autoFillData: boolean;\n loop: boolean;\n offsetX: Animated.SharedValue<number>;\n rawDataLength: number;\n } & Pick<TCarouselProps, \"onProgressChange\">\n) {\n const { autoFillData, loop, offsetX, size, rawDataLength, onProgressChange } = opts;\n\n // remember `isFunc` here because we can't accurately check typeof\n // from within useAnimatedReaction because its code has been workletized;\n // the `onProgressChange` value will be typeof \"object\" from within\n // the worklet code even if it's a function.\n const isFunc = typeof onProgressChange === \"function\";\n\n useAnimatedReaction(\n () => offsetX.value,\n (_value) => {\n let value = computedOffsetXValueWithAutoFillData({\n value: _value,\n rawDataLength,\n size,\n autoFillData,\n loop,\n });\n\n if (!loop) {\n value = Math.max(-((rawDataLength - 1) * size), Math.min(value, 0));\n }\n\n let absoluteProgress = Math.abs(value / size);\n\n if (value > 0) absoluteProgress = rawDataLength - absoluteProgress;\n\n if (onProgressChange) {\n if (isFunc) runOnJS(onProgressChange)(value, absoluteProgress);\n else onProgressChange.value = absoluteProgress;\n }\n },\n [loop, autoFillData, rawDataLength, onProgressChange, size]\n );\n}\n"]}