react-native-reanimated-carousel 5.0.0-beta.6 → 5.0.0-beta.8

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 (68) hide show
  1. package/README.md +32 -2
  2. package/lib/commonjs/components/CarouselLayout.js +1 -1
  3. package/lib/commonjs/components/CarouselLayout.js.map +1 -1
  4. package/lib/commonjs/components/ItemRenderer.js +1 -1
  5. package/lib/commonjs/components/ItemRenderer.js.map +1 -1
  6. package/lib/commonjs/components/ScrollViewGesture.js +1 -1
  7. package/lib/commonjs/components/ScrollViewGesture.js.map +1 -1
  8. package/lib/commonjs/hooks/useOnProgressChange.js +1 -1
  9. package/lib/commonjs/hooks/useOnProgressChange.js.map +1 -1
  10. package/lib/commonjs/hooks/usePropsErrorBoundary.js +1 -1
  11. package/lib/commonjs/hooks/usePropsErrorBoundary.js.map +1 -1
  12. package/lib/commonjs/hooks/useVisibleRanges.js +1 -1
  13. package/lib/commonjs/hooks/useVisibleRanges.js.map +1 -1
  14. package/lib/module/components/CarouselLayout.js +1 -1
  15. package/lib/module/components/CarouselLayout.js.map +1 -1
  16. package/lib/module/components/ItemRenderer.js +1 -1
  17. package/lib/module/components/ItemRenderer.js.map +1 -1
  18. package/lib/module/components/ScrollViewGesture.js +1 -1
  19. package/lib/module/components/ScrollViewGesture.js.map +1 -1
  20. package/lib/module/hooks/useOnProgressChange.js +1 -1
  21. package/lib/module/hooks/useOnProgressChange.js.map +1 -1
  22. package/lib/module/hooks/usePropsErrorBoundary.js +1 -1
  23. package/lib/module/hooks/usePropsErrorBoundary.js.map +1 -1
  24. package/lib/module/hooks/useVisibleRanges.js +1 -1
  25. package/lib/module/hooks/useVisibleRanges.js.map +1 -1
  26. package/lib/typescript/components/CarouselLayout.d.ts.map +1 -1
  27. package/lib/typescript/components/ItemRenderer.d.ts +1 -0
  28. package/lib/typescript/components/ItemRenderer.d.ts.map +1 -1
  29. package/lib/typescript/components/ScrollViewGesture.d.ts.map +1 -1
  30. package/lib/typescript/hooks/usePropsErrorBoundary.d.ts.map +1 -1
  31. package/lib/typescript/hooks/useVisibleRanges.d.ts +6 -0
  32. package/lib/typescript/hooks/useVisibleRanges.d.ts.map +1 -1
  33. package/lib/typescript/types.d.ts +1 -1
  34. package/package.json +4 -2
  35. package/src/components/CarouselLayout.tsx +4 -4
  36. package/src/components/ItemRenderer.tsx +11 -6
  37. package/src/components/ScrollViewGesture.tsx +8 -11
  38. package/src/hooks/useOnProgressChange.ts +1 -1
  39. package/src/hooks/usePropsErrorBoundary.ts +4 -3
  40. package/src/hooks/useVisibleRanges.tsx +80 -54
  41. package/src/types.ts +1 -1
  42. package/src/components/Carousel.test.tsx +0 -1215
  43. package/src/components/LazyView.test.tsx +0 -61
  44. package/src/components/Pagination/Pagination.test.tsx +0 -178
  45. package/src/components/rnr-demo.test.tsx +0 -53
  46. package/src/hooks/useAutoPlay.test.ts +0 -194
  47. package/src/hooks/useCarouselController.test.tsx +0 -1158
  48. package/src/hooks/useCheckMounted.test.ts +0 -47
  49. package/src/hooks/useCommonVariables.test.tsx +0 -384
  50. package/src/hooks/useInitProps.test.tsx +0 -134
  51. package/src/hooks/useLayoutConfig.test.tsx +0 -247
  52. package/src/hooks/useOffsetX.test.ts +0 -54
  53. package/src/hooks/useOnProgressChange.test.tsx +0 -207
  54. package/src/hooks/usePanGestureProxy.test.tsx +0 -368
  55. package/src/hooks/useUpdateGestureConfig.test.ts +0 -89
  56. package/src/hooks/useVisibleRanges.test.tsx +0 -347
  57. package/src/layouts/parallax.test.ts +0 -239
  58. package/src/layouts/stack.test.ts +0 -252
  59. package/src/store/index.test.tsx +0 -314
  60. package/src/utils/compute-gesture-translation.test.ts +0 -70
  61. package/src/utils/compute-offset-if-data-changed.test.ts +0 -133
  62. package/src/utils/compute-offset-if-size-changed.test.ts +0 -78
  63. package/src/utils/computed-with-auto-fill-data.test.ts +0 -298
  64. package/src/utils/deal-with-animation.test.ts +0 -181
  65. package/src/utils/handleroffset-direction.test.ts +0 -124
  66. package/src/utils/index.test.ts +0 -90
  67. package/src/utils/log.test.ts +0 -134
  68. package/src/utils/sanitize-animation-style.test.ts +0 -40
@@ -1,124 +0,0 @@
1
- import { useSharedValue } from "react-native-reanimated";
2
-
3
- import { renderHook } from "@testing-library/react-hooks";
4
-
5
- import { handlerOffsetDirection } from "./handleroffset-direction";
6
-
7
- describe("handlerOffsetDirection", () => {
8
- it("should return -1 when default value equals to zero", () => {
9
- const result = renderHook(() => {
10
- const handlerOffsetAnimVal = useSharedValue(0);
11
- return handlerOffsetDirection(handlerOffsetAnimVal);
12
- });
13
-
14
- expect(result.result.current).toBe(-1);
15
- });
16
-
17
- it("should return 1 when default value is greater than zero", () => {
18
- const result = renderHook(() => {
19
- const handlerOffsetAnimVal = useSharedValue(1);
20
- return handlerOffsetDirection(handlerOffsetAnimVal);
21
- });
22
-
23
- expect(result.result.current).toBe(1);
24
- });
25
-
26
- it("should return -1 when default value is less than zero", () => {
27
- const result = renderHook(() => {
28
- const handlerOffsetAnimVal = useSharedValue(-1);
29
- return handlerOffsetDirection(handlerOffsetAnimVal);
30
- });
31
-
32
- expect(result.result.current).toBe(-1);
33
- });
34
-
35
- it("should return 1 when default value equals to zero and fixedDirection is negative", () => {
36
- const result = renderHook(() => {
37
- const handlerOffsetAnimVal = useSharedValue(-1);
38
- return handlerOffsetDirection(handlerOffsetAnimVal, "positive");
39
- });
40
-
41
- expect(result.result.current).toBe(1);
42
- });
43
-
44
- it("should return -1 when default value is greater than zero and fixedDirection is negative", () => {
45
- const result = renderHook(() => {
46
- const handlerOffsetAnimVal = useSharedValue(1);
47
- return handlerOffsetDirection(handlerOffsetAnimVal, "negative");
48
- });
49
-
50
- expect(result.result.current).toBe(-1);
51
- });
52
-
53
- it("should handle fractional positive values", () => {
54
- const result = renderHook(() => {
55
- const handlerOffsetAnimVal = useSharedValue(0.5);
56
- return handlerOffsetDirection(handlerOffsetAnimVal);
57
- });
58
-
59
- expect(result.result.current).toBe(1);
60
- });
61
-
62
- it("should handle fractional negative values", () => {
63
- const result = renderHook(() => {
64
- const handlerOffsetAnimVal = useSharedValue(-0.5);
65
- return handlerOffsetDirection(handlerOffsetAnimVal);
66
- });
67
-
68
- expect(result.result.current).toBe(-1);
69
- });
70
-
71
- it("should handle large positive values", () => {
72
- const result = renderHook(() => {
73
- const handlerOffsetAnimVal = useSharedValue(1000);
74
- return handlerOffsetDirection(handlerOffsetAnimVal);
75
- });
76
-
77
- expect(result.result.current).toBe(1);
78
- });
79
-
80
- it("should handle large negative values", () => {
81
- const result = renderHook(() => {
82
- const handlerOffsetAnimVal = useSharedValue(-1000);
83
- return handlerOffsetDirection(handlerOffsetAnimVal);
84
- });
85
-
86
- expect(result.result.current).toBe(-1);
87
- });
88
-
89
- it("should override with positive fixed direction", () => {
90
- const result = renderHook(() => {
91
- const handlerOffsetAnimVal = useSharedValue(-100);
92
- return handlerOffsetDirection(handlerOffsetAnimVal, "positive");
93
- });
94
-
95
- expect(result.result.current).toBe(1);
96
- });
97
-
98
- it("should override with negative fixed direction", () => {
99
- const result = renderHook(() => {
100
- const handlerOffsetAnimVal = useSharedValue(100);
101
- return handlerOffsetDirection(handlerOffsetAnimVal, "negative");
102
- });
103
-
104
- expect(result.result.current).toBe(-1);
105
- });
106
-
107
- it("should handle very small positive values", () => {
108
- const result = renderHook(() => {
109
- const handlerOffsetAnimVal = useSharedValue(0.001);
110
- return handlerOffsetDirection(handlerOffsetAnimVal);
111
- });
112
-
113
- expect(result.result.current).toBe(1);
114
- });
115
-
116
- it("should handle very small negative values", () => {
117
- const result = renderHook(() => {
118
- const handlerOffsetAnimVal = useSharedValue(-0.001);
119
- return handlerOffsetDirection(handlerOffsetAnimVal);
120
- });
121
-
122
- expect(result.result.current).toBe(-1);
123
- });
124
- });
@@ -1,90 +0,0 @@
1
- import { computeOffsetIfDataChanged } from "./compute-offset-if-data-changed";
2
-
3
- describe("should work as expected", () => {
4
- const size = 375;
5
- const positive = -1;
6
- const negative = 1;
7
-
8
- const params = (params: {
9
- direction: "positive" | "negative";
10
- currentIndex: number;
11
- previousLength: number;
12
- currentLength: number;
13
- }) => {
14
- const { currentIndex, direction: _direction, previousLength, currentLength } = params;
15
- const direction = _direction === "negative" ? negative : positive;
16
- return {
17
- direction,
18
- handlerOffset: size * currentIndex * direction,
19
- size,
20
- previousLength,
21
- currentLength,
22
- };
23
- };
24
-
25
- it("The direction is negative, And changing length of data set from 4 to 3, the new index will to be 2.", async () => {
26
- const currentIndex = 1;
27
- const handlerOffset = computeOffsetIfDataChanged(
28
- params({
29
- currentIndex,
30
- direction: "negative",
31
- previousLength: 4,
32
- currentLength: 3,
33
- })
34
- );
35
-
36
- expect(handlerOffset / size).toBe(2 * positive);
37
- });
38
-
39
- it("The direction is negative, Changing length of data set from 4 to 3, the index remains original.", async () => {
40
- const handlerOffset = computeOffsetIfDataChanged(
41
- params({
42
- currentIndex: 2,
43
- direction: "negative",
44
- previousLength: 4,
45
- currentLength: 3,
46
- })
47
- );
48
-
49
- expect(handlerOffset / size).toBe(1 * negative);
50
- });
51
-
52
- it("The direction is positive, Changing length of data set from 4 to 5, the index remains original.", async () => {
53
- const handlerOffset = computeOffsetIfDataChanged(
54
- params({
55
- currentIndex: 3,
56
- direction: "positive",
57
- previousLength: 4,
58
- currentLength: 5,
59
- })
60
- );
61
-
62
- expect(handlerOffset / size).toBe(3 * positive);
63
- });
64
-
65
- it("The direction is negative, Changing length of data set from 4 to 5, the index remains original.", async () => {
66
- const handlerOffset = computeOffsetIfDataChanged(
67
- params({
68
- currentIndex: 3,
69
- direction: "negative",
70
- previousLength: 4,
71
- currentLength: 5,
72
- })
73
- );
74
-
75
- expect(handlerOffset / size).toBe(4 * negative);
76
- });
77
-
78
- it("Changing length of data set from 0 to 3, the index remains original.", async () => {
79
- const handlerOffset = computeOffsetIfDataChanged(
80
- params({
81
- currentIndex: 0,
82
- direction: "positive",
83
- previousLength: 0,
84
- currentLength: 3,
85
- })
86
- );
87
-
88
- expect(handlerOffset / size).toBe(0 * positive);
89
- });
90
- });
@@ -1,134 +0,0 @@
1
- import { log, round } from "./log";
2
-
3
- describe("log utilities", () => {
4
- describe("log", () => {
5
- const mockConsoleLog = jest.fn();
6
- const originalConsoleLog = console.log;
7
-
8
- beforeEach(() => {
9
- console.log = mockConsoleLog;
10
- });
11
-
12
- afterEach(() => {
13
- mockConsoleLog.mockClear();
14
- console.log = originalConsoleLog;
15
- });
16
-
17
- it("should call console.log with provided arguments", () => {
18
- const args = ["test", 123, { key: "value" }];
19
- log(...args);
20
-
21
- expect(mockConsoleLog).toHaveBeenCalledWith(...args);
22
- });
23
-
24
- it("should handle single argument", () => {
25
- log("test");
26
- expect(mockConsoleLog).toHaveBeenCalledWith("test");
27
- });
28
-
29
- it("should handle multiple arguments", () => {
30
- log("test", 123, true);
31
- expect(mockConsoleLog).toHaveBeenCalledWith("test", 123, true);
32
- });
33
-
34
- it("should handle no arguments", () => {
35
- log();
36
- expect(mockConsoleLog).toHaveBeenCalledWith();
37
- });
38
-
39
- it("should handle null and undefined", () => {
40
- log(null, undefined);
41
- expect(mockConsoleLog).toHaveBeenCalledWith(null, undefined);
42
- });
43
-
44
- it("should handle complex objects", () => {
45
- const complexObj = {
46
- nested: { array: [1, 2, 3] },
47
- func: () => "test",
48
- date: new Date("2023-01-01"),
49
- };
50
- log(complexObj);
51
- expect(mockConsoleLog).toHaveBeenCalledWith(complexObj);
52
- });
53
-
54
- it("should handle arrays", () => {
55
- const arr = [1, "two", { three: 3 }];
56
- log(arr);
57
- expect(mockConsoleLog).toHaveBeenCalledWith(arr);
58
- });
59
-
60
- it("should handle mixed types", () => {
61
- log("string", 42, true, null, undefined, { key: "value" }, [1, 2, 3]);
62
- expect(mockConsoleLog).toHaveBeenCalledWith(
63
- "string",
64
- 42,
65
- true,
66
- null,
67
- undefined,
68
- { key: "value" },
69
- [1, 2, 3]
70
- );
71
- });
72
- });
73
-
74
- describe("round", () => {
75
- it("should round positive numbers correctly", () => {
76
- expect(round(1.4)).toBe(1);
77
- expect(round(1.5)).toBe(2);
78
- expect(round(1.6)).toBe(2);
79
- });
80
-
81
- it("should round negative numbers correctly", () => {
82
- expect(round(-1.4)).toBe(-1);
83
- expect(round(-1.5)).toBe(-1);
84
- expect(round(-1.6)).toBe(-2);
85
- });
86
-
87
- it("should handle zero values", () => {
88
- expect(round(0)).toBe(0);
89
- expect(round(-0)).toBe(-0);
90
- expect(1 / round(-0)).toBe(Number.NEGATIVE_INFINITY);
91
- });
92
-
93
- it("should handle integers", () => {
94
- expect(round(5)).toBe(5);
95
- expect(round(-5)).toBe(-5);
96
- });
97
-
98
- it("should handle decimal places", () => {
99
- expect(round(Math.PI)).toBe(3);
100
- expect(round(-Math.PI)).toBe(-3);
101
- });
102
-
103
- it("should handle edge cases", () => {
104
- expect(round(0.5)).toBe(1);
105
- expect(round(-0.5)).toBe(-0);
106
- expect(round(1.999999)).toBe(2);
107
- expect(round(-1.999999)).toBe(-2);
108
- });
109
-
110
- it("should handle very large numbers", () => {
111
- expect(round(1e10 + 0.4)).toBe(1e10);
112
- expect(round(1e10 + 0.6)).toBe(1e10 + 1);
113
- });
114
-
115
- it("should handle very small numbers", () => {
116
- expect(round(0.00001)).toBe(0);
117
- expect(round(-0.00001)).toBe(-0);
118
- });
119
-
120
- it("should handle Infinity", () => {
121
- expect(round(Number.POSITIVE_INFINITY)).toBe(Number.POSITIVE_INFINITY);
122
- expect(round(Number.NEGATIVE_INFINITY)).toBe(Number.NEGATIVE_INFINITY);
123
- });
124
-
125
- it("should handle NaN", () => {
126
- expect(round(Number.NaN)).toBe(Number.NaN);
127
- });
128
-
129
- it("should handle floating point precision issues", () => {
130
- expect(round(0.1 + 0.2)).toBe(0); // 0.1 + 0.2 = 0.30000000000000004
131
- expect(round(1.1 + 1.2)).toBe(2); // Should round to 2
132
- });
133
- });
134
- });
@@ -1,40 +0,0 @@
1
- import { sanitizeAnimationStyle } from "./sanitize-animation-style";
2
-
3
- describe("sanitizeAnimationStyle", () => {
4
- it("rounds zIndex to an integer", () => {
5
- const style = sanitizeAnimationStyle({
6
- transform: [{ translateX: 12 }],
7
- zIndex: 3.7,
8
- });
9
-
10
- expect(style.zIndex).toBe(4);
11
- });
12
-
13
- it("drops invalid zIndex values", () => {
14
- const style = sanitizeAnimationStyle({
15
- // invalid value from userland worklet should not flow to native styles
16
- zIndex: Number.NaN,
17
- });
18
-
19
- expect(style).not.toHaveProperty("zIndex");
20
- });
21
-
22
- it("returns empty object for null/undefined input", () => {
23
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
- expect(sanitizeAnimationStyle(null as any)).toEqual({});
25
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
- expect(sanitizeAnimationStyle(undefined as any)).toEqual({});
27
- });
28
-
29
- it("strips non-number zIndex (e.g. string)", () => {
30
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
- const style = sanitizeAnimationStyle({ opacity: 1, zIndex: "auto" as any });
32
- expect(style).not.toHaveProperty("zIndex");
33
- expect(style).toHaveProperty("opacity", 1);
34
- });
35
-
36
- it("preserves style without zIndex unchanged", () => {
37
- const style = sanitizeAnimationStyle({ opacity: 0.5 });
38
- expect(style).toEqual({ opacity: 0.5 });
39
- });
40
- });