react-native-reanimated-carousel 5.0.0-beta.7 → 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.
- package/README.md +32 -2
- package/lib/commonjs/components/CarouselLayout.js +1 -1
- package/lib/commonjs/components/CarouselLayout.js.map +1 -1
- package/lib/module/components/CarouselLayout.js +1 -1
- package/lib/module/components/CarouselLayout.js.map +1 -1
- package/lib/typescript/components/CarouselLayout.d.ts.map +1 -1
- package/package.json +4 -2
- package/src/components/CarouselLayout.tsx +3 -4
- package/src/components/Carousel.test.tsx +0 -1215
- package/src/components/LazyView.test.tsx +0 -61
- package/src/components/Pagination/Pagination.test.tsx +0 -178
- package/src/components/ScrollViewGesture.test.tsx +0 -155
- package/src/components/issue-899-parallax-reverse-loop.test.tsx +0 -131
- package/src/components/rnr-demo.test.tsx +0 -53
- package/src/hooks/useAutoPlay.test.ts +0 -194
- package/src/hooks/useCarouselController.test.tsx +0 -1158
- package/src/hooks/useCheckMounted.test.ts +0 -47
- package/src/hooks/useCommonVariables.test.tsx +0 -384
- package/src/hooks/useInitProps.test.tsx +0 -134
- package/src/hooks/useLayoutConfig.test.tsx +0 -247
- package/src/hooks/useOffsetX.test.ts +0 -54
- package/src/hooks/useOnProgressChange.test.tsx +0 -270
- package/src/hooks/usePanGestureProxy.test.tsx +0 -368
- package/src/hooks/usePropsErrorBoundary.test.tsx +0 -57
- package/src/hooks/useUpdateGestureConfig.test.ts +0 -89
- package/src/hooks/useVisibleRanges.test.tsx +0 -347
- package/src/layouts/parallax.test.ts +0 -239
- package/src/layouts/stack.test.ts +0 -252
- package/src/store/index.test.tsx +0 -314
- package/src/utils/compute-gesture-translation.test.ts +0 -70
- package/src/utils/compute-offset-if-data-changed.test.ts +0 -133
- package/src/utils/compute-offset-if-size-changed.test.ts +0 -78
- package/src/utils/computed-with-auto-fill-data.test.ts +0 -298
- package/src/utils/deal-with-animation.test.ts +0 -181
- package/src/utils/handleroffset-direction.test.ts +0 -124
- package/src/utils/index.test.ts +0 -90
- package/src/utils/log.test.ts +0 -134
- 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
|
-
});
|
package/src/utils/index.test.ts
DELETED
|
@@ -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
|
-
});
|
package/src/utils/log.test.ts
DELETED
|
@@ -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
|
-
});
|