@react-native-ohos/flash-list 1.8.3-rc.3 → 1.8.3-rc.5
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/LICENSE +6 -6
- package/README.OpenSource +10 -10
- package/README.md +9 -9
- package/dist/AnimatedFlashList.d.ts +28 -25
- package/dist/AnimatedFlashList.d.ts.map +1 -1
- package/dist/AnimatedFlashList.js +30 -30
- package/dist/FlashList.d.ts +179 -179
- package/dist/FlashList.d.ts.map +1 -1
- package/dist/FlashList.js +599 -598
- package/dist/FlashList.js.map +1 -1
- package/dist/FlashListProps.d.ts +278 -278
- package/dist/FlashListProps.js +31 -31
- package/dist/GridLayoutProviderWithProps.d.ts +64 -64
- package/dist/GridLayoutProviderWithProps.js +137 -136
- package/dist/GridLayoutProviderWithProps.js.map +1 -1
- package/dist/MasonryFlashList.d.ts +73 -73
- package/dist/MasonryFlashList.d.ts.map +1 -1
- package/dist/MasonryFlashList.js +274 -274
- package/dist/MasonryFlashList.js.map +1 -1
- package/dist/PureComponentWrapper.d.ts +44 -44
- package/dist/PureComponentWrapper.js +59 -59
- package/dist/PureComponentWrapper.js.map +1 -1
- package/dist/__tests__/AverageWindow.test.d.ts +2 -0
- package/dist/__tests__/AverageWindow.test.d.ts.map +1 -0
- package/dist/__tests__/AverageWindow.test.js +69 -0
- package/dist/__tests__/AverageWindow.test.js.map +1 -0
- package/dist/__tests__/ContentContainerUtils.test.d.ts +2 -0
- package/dist/__tests__/ContentContainerUtils.test.d.ts.map +1 -0
- package/dist/__tests__/ContentContainerUtils.test.js +85 -0
- package/dist/__tests__/ContentContainerUtils.test.js.map +1 -0
- package/dist/__tests__/FlashList.test.d.ts +2 -0
- package/dist/__tests__/FlashList.test.d.ts.map +1 -0
- package/dist/__tests__/FlashList.test.js +792 -0
- package/dist/__tests__/FlashList.test.js.map +1 -0
- package/dist/__tests__/GridLayoutProviderWithProps.test.d.ts +2 -0
- package/dist/__tests__/GridLayoutProviderWithProps.test.d.ts.map +1 -0
- package/dist/__tests__/GridLayoutProviderWithProps.test.js +143 -0
- package/dist/__tests__/GridLayoutProviderWithProps.test.js.map +1 -0
- package/dist/__tests__/MasonryFlashList.test.d.ts +2 -0
- package/dist/__tests__/MasonryFlashList.test.d.ts.map +1 -0
- package/dist/__tests__/MasonryFlashList.test.js +254 -0
- package/dist/__tests__/MasonryFlashList.test.js.map +1 -0
- package/dist/__tests__/PlatformHelper.web.test.d.ts +2 -0
- package/dist/__tests__/PlatformHelper.web.test.d.ts.map +1 -0
- package/dist/__tests__/PlatformHelper.web.test.js +33 -0
- package/dist/__tests__/PlatformHelper.web.test.js.map +1 -0
- package/dist/__tests__/ViewabilityHelper.test.d.ts +2 -0
- package/dist/__tests__/ViewabilityHelper.test.d.ts.map +1 -0
- package/dist/__tests__/ViewabilityHelper.test.js +187 -0
- package/dist/__tests__/ViewabilityHelper.test.js.map +1 -0
- package/dist/__tests__/helpers/mountFlashList.d.ts +19 -0
- package/dist/__tests__/helpers/mountFlashList.d.ts.map +1 -0
- package/dist/__tests__/helpers/mountFlashList.js +44 -0
- package/dist/__tests__/helpers/mountFlashList.js.map +1 -0
- package/dist/__tests__/helpers/mountMasonryFlashList.d.ts +18 -0
- package/dist/__tests__/helpers/mountMasonryFlashList.d.ts.map +1 -0
- package/dist/__tests__/helpers/mountMasonryFlashList.js +49 -0
- package/dist/__tests__/helpers/mountMasonryFlashList.js.map +1 -0
- package/dist/__tests__/useBlankAreaTracker.test.d.ts +2 -0
- package/dist/__tests__/useBlankAreaTracker.test.d.ts.map +1 -0
- package/dist/__tests__/useBlankAreaTracker.test.js +177 -0
- package/dist/__tests__/useBlankAreaTracker.test.js.map +1 -0
- package/dist/benchmark/AutoScrollHelper.d.ts +40 -40
- package/dist/benchmark/AutoScrollHelper.js +90 -90
- package/dist/benchmark/AutoScrollHelper.js.map +1 -1
- package/dist/benchmark/JSFPSMonitor.d.ts +45 -45
- package/dist/benchmark/JSFPSMonitor.js +87 -87
- package/dist/benchmark/JSFPSMonitor.js.map +1 -1
- package/dist/benchmark/roundToDecimalPlaces.d.ts +24 -24
- package/dist/benchmark/roundToDecimalPlaces.js +31 -30
- package/dist/benchmark/roundToDecimalPlaces.js.map +1 -1
- package/dist/benchmark/useBenchmark.d.ts +57 -57
- package/dist/benchmark/useBenchmark.js +189 -188
- package/dist/benchmark/useBenchmark.js.map +1 -1
- package/dist/benchmark/useBlankAreaTracker.d.ts +56 -56
- package/dist/benchmark/useBlankAreaTracker.js +89 -88
- package/dist/benchmark/useBlankAreaTracker.js.map +1 -1
- package/dist/benchmark/useDataMultiplier.d.ts +31 -31
- package/dist/benchmark/useDataMultiplier.js +47 -46
- package/dist/benchmark/useDataMultiplier.js.map +1 -1
- package/dist/benchmark/useFlatListBenchmark.d.ts +35 -34
- package/dist/benchmark/useFlatListBenchmark.d.ts.map +1 -1
- package/dist/benchmark/useFlatListBenchmark.js +122 -121
- package/dist/benchmark/useFlatListBenchmark.js.map +1 -1
- package/dist/errors/CustomError.d.ts +30 -30
- package/dist/errors/CustomError.js +36 -36
- package/dist/errors/CustomError.js.map +1 -1
- package/dist/errors/ExceptionList.d.ts +46 -46
- package/dist/errors/ExceptionList.js +48 -48
- package/dist/errors/Warnings.d.ts +31 -31
- package/dist/errors/Warnings.js +35 -35
- package/dist/fabric/AutoLayoutNativeComponent.d.ts +41 -41
- package/dist/fabric/AutoLayoutNativeComponent.d.ts.map +1 -1
- package/dist/fabric/AutoLayoutNativeComponent.js +28 -28
- package/dist/fabric/CellContainerNativeComponent.d.ts +30 -30
- package/dist/fabric/CellContainerNativeComponent.d.ts.map +1 -1
- package/dist/fabric/CellContainerNativeComponent.js +28 -28
- package/dist/index.d.ts +36 -36
- package/dist/index.js +54 -52
- package/dist/index.js.map +1 -1
- package/dist/native/auto-layout/AutoLayoutView.d.ts +44 -44
- package/dist/native/auto-layout/AutoLayoutView.d.ts.map +1 -1
- package/dist/native/auto-layout/AutoLayoutView.js +70 -70
- package/dist/native/auto-layout/AutoLayoutView.js.map +1 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.android.d.ts +26 -25
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.android.d.ts.map +1 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.android.js +28 -28
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.d.ts +27 -27
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.d.ts.map +1 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.harmony.d.ts +26 -25
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.harmony.d.ts.map +1 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.harmony.js +28 -28
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.ios.d.ts +26 -25
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.ios.d.ts.map +1 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.ios.js +28 -28
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.js +28 -28
- package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.d.ts +38 -38
- package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.js +25 -25
- package/dist/native/cell-container/CellContainer.android.d.ts +28 -28
- package/dist/native/cell-container/CellContainer.android.d.ts.map +1 -1
- package/dist/native/cell-container/CellContainer.android.js +31 -31
- package/dist/native/cell-container/CellContainer.d.ts +30 -29
- package/dist/native/cell-container/CellContainer.d.ts.map +1 -1
- package/dist/native/cell-container/CellContainer.harmony.d.ts +28 -28
- package/dist/native/cell-container/CellContainer.harmony.d.ts.map +1 -1
- package/dist/native/cell-container/CellContainer.harmony.js +31 -31
- package/dist/native/cell-container/CellContainer.ios.d.ts +28 -28
- package/dist/native/cell-container/CellContainer.ios.d.ts.map +1 -1
- package/dist/native/cell-container/CellContainer.ios.js +31 -31
- package/dist/native/cell-container/CellContainer.js +33 -33
- package/dist/native/cell-container/CellContainer.web.d.ts +29 -28
- package/dist/native/cell-container/CellContainer.web.d.ts.map +1 -1
- package/dist/native/cell-container/CellContainer.web.js +35 -35
- package/dist/native/config/PlatformHelper.android.d.ts +48 -48
- package/dist/native/config/PlatformHelper.android.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.android.js +45 -45
- package/dist/native/config/PlatformHelper.d.ts +48 -48
- package/dist/native/config/PlatformHelper.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.harmony.d.ts +48 -48
- package/dist/native/config/PlatformHelper.harmony.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.harmony.js +44 -44
- package/dist/native/config/PlatformHelper.ios.d.ts +48 -48
- package/dist/native/config/PlatformHelper.ios.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.ios.js +44 -44
- package/dist/native/config/PlatformHelper.js +45 -45
- package/dist/native/config/PlatformHelper.web.d.ts +49 -49
- package/dist/native/config/PlatformHelper.web.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.web.js +47 -47
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/AverageWindow.d.ts +43 -43
- package/dist/utils/AverageWindow.js +71 -71
- package/dist/utils/ContentContainerUtils.d.ts +49 -49
- package/dist/utils/ContentContainerUtils.d.ts.map +1 -1
- package/dist/utils/ContentContainerUtils.js +70 -70
- package/dist/utils/ContentContainerUtils.js.map +1 -1
- package/dist/viewability/ViewToken.d.ts +30 -30
- package/dist/viewability/ViewToken.js +25 -25
- package/dist/viewability/ViewabilityHelper.d.ts +48 -48
- package/dist/viewability/ViewabilityHelper.js +129 -129
- package/dist/viewability/ViewabilityHelper.js.map +1 -1
- package/dist/viewability/ViewabilityManager.d.ts +47 -47
- package/dist/viewability/ViewabilityManager.d.ts.map +1 -1
- package/dist/viewability/ViewabilityManager.js +130 -130
- package/dist/viewability/ViewabilityManager.js.map +1 -1
- package/harmony/flash_list/BuildProfile.ets +16 -16
- package/harmony/flash_list/LICENSE +7 -7
- package/harmony/flash_list/build-profile.json5 +7 -7
- package/harmony/flash_list/hvigorfile.ts +1 -1
- package/harmony/flash_list/index.ets +27 -27
- package/harmony/flash_list/obfuscation-rules.txt +17 -17
- package/harmony/flash_list/oh-package.json5 +23 -23
- package/harmony/flash_list/src/main/cpp/AutoLayoutNode.cpp +63 -140
- package/harmony/flash_list/src/main/cpp/AutoLayoutNode.h +53 -53
- package/harmony/flash_list/src/main/cpp/AutoLayoutShadow.cpp +31 -24
- package/harmony/flash_list/src/main/cpp/AutoLayoutShadow.h +66 -66
- package/harmony/flash_list/src/main/cpp/AutoLayoutViewComponentInstance.cpp +208 -208
- package/harmony/flash_list/src/main/cpp/AutoLayoutViewComponentInstance.h +78 -78
- package/harmony/flash_list/src/main/cpp/AutoLayoutViewEventEmitRequestHandler.h +53 -53
- package/harmony/flash_list/src/main/cpp/AutoLayoutViewJSIBinder.h +50 -50
- package/harmony/flash_list/src/main/cpp/CMakeLists.txt +12 -7
- package/harmony/flash_list/src/main/cpp/CellContainerComponentInstance.cpp +79 -79
- package/harmony/flash_list/src/main/cpp/CellContainerComponentInstance.h +63 -63
- package/harmony/flash_list/src/main/cpp/CellContainerJSIBinder.h +38 -38
- package/harmony/flash_list/src/main/cpp/ComponentDescriptors.h +40 -40
- package/harmony/flash_list/src/main/cpp/EventEmitters.cpp +39 -39
- package/harmony/flash_list/src/main/cpp/EventEmitters.h +48 -48
- package/harmony/flash_list/src/main/cpp/FlashListPackage.h +85 -77
- package/harmony/flash_list/src/main/cpp/FlashListStackNode.cpp +87 -87
- package/harmony/flash_list/src/main/cpp/FlashListStackNode.h +56 -56
- package/harmony/flash_list/src/main/cpp/Props.cpp +51 -51
- package/harmony/flash_list/src/main/cpp/Props.h +64 -64
- package/harmony/flash_list/src/main/cpp/ShadowNodes.cpp +33 -33
- package/harmony/flash_list/src/main/cpp/ShadowNodes.h +48 -48
- package/harmony/flash_list/src/main/ets/Logger.ets +63 -63
- package/harmony/flash_list/src/main/ets/RNAutoLayoutShadow.ets +153 -153
- package/harmony/flash_list/src/main/ets/RNAutoLayoutView.ets +276 -276
- package/harmony/flash_list/src/main/ets/RNCellContainer.ets +113 -113
- package/harmony/flash_list/src/main/module.json5 +9 -9
- package/harmony/flash_list/src/main/resources/base/element/color.json +7 -7
- package/harmony/flash_list/src/main/resources/base/element/string.json +15 -15
- package/harmony/flash_list/src/main/resources/base/profile/main_pages.json +5 -5
- package/harmony/flash_list/src/main/resources/en_US/element/string.json +15 -15
- package/harmony/flash_list/src/main/resources/zh_CN/element/string.json +15 -15
- package/harmony/flash_list.har +0 -0
- package/jestSetup.js +40 -40
- package/package.json +82 -82
- package/src/AnimatedFlashList.ts +35 -35
- package/src/FlashList.tsx +949 -949
- package/src/FlashListProps.ts +359 -359
- package/src/GridLayoutProviderWithProps.ts +204 -204
- package/src/MasonryFlashList.tsx +499 -499
- package/src/PureComponentWrapper.tsx +65 -65
- package/src/benchmark/AutoScrollHelper.ts +94 -94
- package/src/benchmark/JSFPSMonitor.ts +98 -98
- package/src/benchmark/roundToDecimalPlaces.ts +28 -28
- package/src/benchmark/useBenchmark.ts +264 -264
- package/src/benchmark/useBlankAreaTracker.ts +141 -141
- package/src/benchmark/useDataMultiplier.ts +43 -43
- package/src/benchmark/useFlatListBenchmark.ts +131 -131
- package/src/errors/CustomError.ts +34 -34
- package/src/errors/ExceptionList.ts +52 -52
- package/src/errors/Warnings.ts +39 -39
- package/src/fabric/AutoLayoutNativeComponent.ts +52 -52
- package/src/fabric/CellContainerNativeComponent.ts +35 -35
- package/src/index.ts +67 -67
- package/src/native/auto-layout/AutoLayoutView.tsx +97 -97
- package/src/native/auto-layout/AutoLayoutViewNativeComponent.android.ts +31 -31
- package/src/native/auto-layout/AutoLayoutViewNativeComponent.harmony.ts +31 -31
- package/src/native/auto-layout/AutoLayoutViewNativeComponent.ios.ts +31 -31
- package/src/native/auto-layout/AutoLayoutViewNativeComponent.ts +31 -31
- package/src/native/auto-layout/AutoLayoutViewNativeComponentProps.ts +41 -41
- package/src/native/cell-container/CellContainer.android.ts +31 -31
- package/src/native/cell-container/CellContainer.harmony.ts +31 -31
- package/src/native/cell-container/CellContainer.ios.ts +31 -31
- package/src/native/cell-container/CellContainer.tsx +38 -38
- package/src/native/cell-container/CellContainer.web.tsx +33 -33
- package/src/native/config/PlatformHelper.android.ts +53 -53
- package/src/native/config/PlatformHelper.harmony.ts +52 -52
- package/src/native/config/PlatformHelper.ios.ts +52 -52
- package/src/native/config/PlatformHelper.ts +53 -53
- package/src/native/config/PlatformHelper.web.ts +58 -58
- package/src/utils/AverageWindow.ts +73 -73
- package/src/utils/ContentContainerUtils.ts +116 -116
- package/src/viewability/ViewToken.ts +31 -31
- package/src/viewability/ViewabilityHelper.ts +190 -190
- package/src/viewability/ViewabilityManager.ts +169 -169
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var CustomError_1 = tslib_1.__importDefault(require("../errors/CustomError"));
|
|
5
|
+
var ExceptionList_1 = tslib_1.__importDefault(require("../errors/ExceptionList"));
|
|
6
|
+
var ViewabilityHelper_1 = tslib_1.__importDefault(require("../viewability/ViewabilityHelper"));
|
|
7
|
+
describe("ViewabilityHelper", function () {
|
|
8
|
+
var viewableIndicesChanged = jest.fn();
|
|
9
|
+
beforeEach(function () {
|
|
10
|
+
jest.resetAllMocks();
|
|
11
|
+
jest.useFakeTimers();
|
|
12
|
+
});
|
|
13
|
+
it("does not report any changes when indices have not changed", function () {
|
|
14
|
+
var viewabilityHelper = new ViewabilityHelper_1.default(null, viewableIndicesChanged);
|
|
15
|
+
viewabilityHelper.possiblyViewableIndices = [0, 1, 2];
|
|
16
|
+
updateViewableItems({ viewabilityHelper: viewabilityHelper });
|
|
17
|
+
// Initial call
|
|
18
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([0, 1, 2], [0, 1, 2], []);
|
|
19
|
+
// No changes
|
|
20
|
+
viewableIndicesChanged.mockReset();
|
|
21
|
+
updateViewableItems({ viewabilityHelper: viewabilityHelper });
|
|
22
|
+
expect(viewableIndicesChanged).not.toHaveBeenCalled();
|
|
23
|
+
});
|
|
24
|
+
it("reports only viewable indices", function () {
|
|
25
|
+
var viewabilityHelper = new ViewabilityHelper_1.default(null, viewableIndicesChanged);
|
|
26
|
+
viewabilityHelper.possiblyViewableIndices = [0, 1, 2, 3];
|
|
27
|
+
updateViewableItems({ viewabilityHelper: viewabilityHelper });
|
|
28
|
+
// Items 0, 1, 2 are initially viewable
|
|
29
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([0, 1, 2], [0, 1, 2], []);
|
|
30
|
+
// After scroll, item 3 becomes viewable, too
|
|
31
|
+
updateViewableItems({ viewabilityHelper: viewabilityHelper, scrollOffset: 50 });
|
|
32
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([0, 1, 2, 3], [3], []);
|
|
33
|
+
// After additional scroll, the first item is no longer viewable
|
|
34
|
+
updateViewableItems({ viewabilityHelper: viewabilityHelper, scrollOffset: 100 });
|
|
35
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([1, 2, 3], [], [0]);
|
|
36
|
+
});
|
|
37
|
+
it("reports only viewable indices when horizontal", function () {
|
|
38
|
+
var viewabilityHelper = new ViewabilityHelper_1.default(null, viewableIndicesChanged);
|
|
39
|
+
viewabilityHelper.possiblyViewableIndices = [0, 1, 2, 3];
|
|
40
|
+
var getLayout = function (index) {
|
|
41
|
+
return { x: index * 100, y: 0, height: 300, width: 100 };
|
|
42
|
+
};
|
|
43
|
+
updateViewableItems({ viewabilityHelper: viewabilityHelper, horizontal: true, getLayout: getLayout });
|
|
44
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([0, 1, 2], [0, 1, 2], []);
|
|
45
|
+
updateViewableItems({
|
|
46
|
+
viewabilityHelper: viewabilityHelper,
|
|
47
|
+
horizontal: true,
|
|
48
|
+
scrollOffset: 50,
|
|
49
|
+
getLayout: getLayout,
|
|
50
|
+
});
|
|
51
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([0, 1, 2, 3], [3], []);
|
|
52
|
+
updateViewableItems({
|
|
53
|
+
viewabilityHelper: viewabilityHelper,
|
|
54
|
+
horizontal: true,
|
|
55
|
+
scrollOffset: 100,
|
|
56
|
+
getLayout: getLayout,
|
|
57
|
+
});
|
|
58
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([1, 2, 3], [], [0]);
|
|
59
|
+
});
|
|
60
|
+
it("reports items only after minimumViewTime has elapsed", function () {
|
|
61
|
+
var viewabilityHelper = new ViewabilityHelper_1.default({ minimumViewTime: 500 }, viewableIndicesChanged);
|
|
62
|
+
viewabilityHelper.possiblyViewableIndices = [0, 1, 2, 3];
|
|
63
|
+
updateViewableItems({ viewabilityHelper: viewabilityHelper, runAllTimers: false });
|
|
64
|
+
expect(viewableIndicesChanged).not.toHaveBeenCalled();
|
|
65
|
+
jest.advanceTimersByTime(400);
|
|
66
|
+
expect(viewableIndicesChanged).not.toHaveBeenCalled();
|
|
67
|
+
jest.advanceTimersByTime(100);
|
|
68
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([0, 1, 2], [0, 1, 2], []);
|
|
69
|
+
viewableIndicesChanged.mockReset();
|
|
70
|
+
updateViewableItems({
|
|
71
|
+
viewabilityHelper: viewabilityHelper,
|
|
72
|
+
scrollOffset: 50,
|
|
73
|
+
runAllTimers: false,
|
|
74
|
+
});
|
|
75
|
+
expect(viewableIndicesChanged).not.toHaveBeenCalled();
|
|
76
|
+
jest.advanceTimersByTime(500);
|
|
77
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([0, 1, 2, 3], [3], []);
|
|
78
|
+
viewableIndicesChanged.mockReset();
|
|
79
|
+
updateViewableItems({
|
|
80
|
+
viewabilityHelper: viewabilityHelper,
|
|
81
|
+
scrollOffset: 100,
|
|
82
|
+
runAllTimers: false,
|
|
83
|
+
});
|
|
84
|
+
expect(viewableIndicesChanged).not.toHaveBeenCalled();
|
|
85
|
+
jest.advanceTimersByTime(500);
|
|
86
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([1, 2, 3], [], [0]);
|
|
87
|
+
});
|
|
88
|
+
it("reports items that only satisfy itemVisiblePercentThreshold", function () {
|
|
89
|
+
var viewabilityHelper = new ViewabilityHelper_1.default({ itemVisiblePercentThreshold: 50 }, viewableIndicesChanged);
|
|
90
|
+
viewabilityHelper.possiblyViewableIndices = [0, 1, 2, 3];
|
|
91
|
+
updateViewableItems({
|
|
92
|
+
viewabilityHelper: viewabilityHelper,
|
|
93
|
+
});
|
|
94
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([0, 1, 2], [0, 1, 2], []);
|
|
95
|
+
viewableIndicesChanged.mockReset();
|
|
96
|
+
// User scrolled by 50 pixels, making both first and last item visible from 50 %
|
|
97
|
+
updateViewableItems({
|
|
98
|
+
viewabilityHelper: viewabilityHelper,
|
|
99
|
+
scrollOffset: 50,
|
|
100
|
+
});
|
|
101
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([0, 1, 2, 3], [3], []);
|
|
102
|
+
viewableIndicesChanged.mockReset();
|
|
103
|
+
// User scrolled by 55 pixels, first item no longer satisfies threshold
|
|
104
|
+
updateViewableItems({
|
|
105
|
+
viewabilityHelper: viewabilityHelper,
|
|
106
|
+
scrollOffset: 55,
|
|
107
|
+
});
|
|
108
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([1, 2, 3], [], [0]);
|
|
109
|
+
});
|
|
110
|
+
it("reports items that only satisfy viewAreaCoveragePercentThreshold", function () {
|
|
111
|
+
var getLayout = function (index) {
|
|
112
|
+
if (index === 4) {
|
|
113
|
+
return { x: 0, y: index * 100, width: 100, height: 25 };
|
|
114
|
+
}
|
|
115
|
+
return { x: 0, y: index * 100, height: 100, width: 300 };
|
|
116
|
+
};
|
|
117
|
+
var viewabilityHelper = new ViewabilityHelper_1.default({ viewAreaCoveragePercentThreshold: 25 }, viewableIndicesChanged);
|
|
118
|
+
viewabilityHelper.possiblyViewableIndices = [0, 1, 2, 3];
|
|
119
|
+
updateViewableItems({
|
|
120
|
+
viewabilityHelper: viewabilityHelper,
|
|
121
|
+
getLayout: getLayout,
|
|
122
|
+
});
|
|
123
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([0, 1, 2], [0, 1, 2], []);
|
|
124
|
+
viewableIndicesChanged.mockReset();
|
|
125
|
+
// User scrolled by 75 pixels.
|
|
126
|
+
// First item is visible only from 25 pixels, not meeting the threshold.
|
|
127
|
+
// The last item is visible from 75 pixels, which is exactly the threshold (300 / 4 = 75 where 300 is height of the list)
|
|
128
|
+
updateViewableItems({
|
|
129
|
+
viewabilityHelper: viewabilityHelper,
|
|
130
|
+
scrollOffset: 75,
|
|
131
|
+
getLayout: getLayout,
|
|
132
|
+
});
|
|
133
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([1, 2, 3], [3], [0]);
|
|
134
|
+
viewableIndicesChanged.mockReset();
|
|
135
|
+
// User scrolled by 110 pixels, making the last small item only partially visible, not meeting the threshold.
|
|
136
|
+
viewabilityHelper.possiblyViewableIndices = [1, 2, 3, 4];
|
|
137
|
+
updateViewableItems({
|
|
138
|
+
viewabilityHelper: viewabilityHelper,
|
|
139
|
+
scrollOffset: 110,
|
|
140
|
+
getLayout: getLayout,
|
|
141
|
+
});
|
|
142
|
+
expect(viewableIndicesChanged).not.toHaveBeenCalled();
|
|
143
|
+
// User scrolled by 125 pixels, making the last small item completely visible, even when it is not meeting the threshold.
|
|
144
|
+
viewabilityHelper.possiblyViewableIndices = [1, 2, 3, 4];
|
|
145
|
+
updateViewableItems({
|
|
146
|
+
viewabilityHelper: viewabilityHelper,
|
|
147
|
+
scrollOffset: 125,
|
|
148
|
+
getLayout: getLayout,
|
|
149
|
+
});
|
|
150
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([1, 2, 3, 4], [4], []);
|
|
151
|
+
});
|
|
152
|
+
it("reports viewable items only after interaction if waitForInteraction is set to true", function () {
|
|
153
|
+
var viewabilityHelper = new ViewabilityHelper_1.default({ waitForInteraction: true }, viewableIndicesChanged);
|
|
154
|
+
// Even when elements are visible, viewableIndicesChanged will not be called since interaction has not been recorded, yet
|
|
155
|
+
viewabilityHelper.possiblyViewableIndices = [0, 1, 2, 3];
|
|
156
|
+
updateViewableItems({
|
|
157
|
+
viewabilityHelper: viewabilityHelper,
|
|
158
|
+
});
|
|
159
|
+
// View is scrolled but programatically - not resulting in an interaction
|
|
160
|
+
updateViewableItems({
|
|
161
|
+
viewabilityHelper: viewabilityHelper,
|
|
162
|
+
scrollOffset: 50,
|
|
163
|
+
});
|
|
164
|
+
expect(viewableIndicesChanged).not.toHaveBeenCalled();
|
|
165
|
+
// Interaction is recorded, leading to trigger of viewableIndicesChanged
|
|
166
|
+
viewabilityHelper.hasInteracted = true;
|
|
167
|
+
updateViewableItems({
|
|
168
|
+
viewabilityHelper: viewabilityHelper,
|
|
169
|
+
scrollOffset: 50,
|
|
170
|
+
});
|
|
171
|
+
expect(viewableIndicesChanged).toHaveBeenCalledWith([0, 1, 2, 3], [0, 1, 2, 3], []);
|
|
172
|
+
});
|
|
173
|
+
it("throws multipleViewabilityThresholdTypesNotSupported exception when both viewAreaCoveragePercentThreshold and itemVisiblePercentThreshold are defined", function () {
|
|
174
|
+
var viewabilityHelper = new ViewabilityHelper_1.default({ viewAreaCoveragePercentThreshold: 1, itemVisiblePercentThreshold: 1 }, viewableIndicesChanged);
|
|
175
|
+
expect(function () { return updateViewableItems({ viewabilityHelper: viewabilityHelper }); }).toThrow(new CustomError_1.default(ExceptionList_1.default.multipleViewabilityThresholdTypesNotSupported));
|
|
176
|
+
});
|
|
177
|
+
var updateViewableItems = function (_a) {
|
|
178
|
+
var viewabilityHelper = _a.viewabilityHelper, horizontal = _a.horizontal, scrollOffset = _a.scrollOffset, listSize = _a.listSize, getLayout = _a.getLayout, runAllTimers = _a.runAllTimers;
|
|
179
|
+
viewabilityHelper.updateViewableItems(horizontal !== null && horizontal !== void 0 ? horizontal : false, scrollOffset !== null && scrollOffset !== void 0 ? scrollOffset : 0, listSize !== null && listSize !== void 0 ? listSize : { height: 300, width: 300 }, getLayout !== null && getLayout !== void 0 ? getLayout : (function (index) {
|
|
180
|
+
return { x: 0, y: index * 100, height: 100, width: 300 };
|
|
181
|
+
}));
|
|
182
|
+
if (runAllTimers !== null && runAllTimers !== void 0 ? runAllTimers : true) {
|
|
183
|
+
jest.runAllTimers();
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
});
|
|
187
|
+
//# sourceMappingURL=ViewabilityHelper.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewabilityHelper.test.js","sourceRoot":"","sources":["../../src/__tests__/ViewabilityHelper.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import "@quilted/react-testing/matchers";
|
|
3
|
+
import { Root } from "@quilted/react-testing";
|
|
4
|
+
import FlashList from "../../FlashList";
|
|
5
|
+
import { FlashListProps, ListRenderItem } from "../../FlashListProps";
|
|
6
|
+
export declare type MockFlashListProps = Omit<FlashListProps<string>, "estimatedItemSize" | "data" | "renderItem"> & {
|
|
7
|
+
estimatedItemSize?: number;
|
|
8
|
+
data?: string[];
|
|
9
|
+
renderItem?: ListRenderItem<string>;
|
|
10
|
+
disableDefaultEstimatedItemSize?: boolean;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Helper to mount FlashList for testing.
|
|
14
|
+
*/
|
|
15
|
+
export declare const mountFlashList: (props?: MockFlashListProps, ref?: React.RefObject<FlashList<string>>) => Omit<Root<FlashListProps<string>, import("@quilted/react-testing").EmptyObject, import("@quilted/react-testing").EmptyObject, import("@quilted/react-testing").EmptyObject>, "instance"> & {
|
|
16
|
+
instance: FlashList<string>;
|
|
17
|
+
};
|
|
18
|
+
export declare function renderFlashList(props?: MockFlashListProps, ref?: React.RefObject<FlashList<string> | null> | any): React.JSX.Element;
|
|
19
|
+
//# sourceMappingURL=mountFlashList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mountFlashList.d.ts","sourceRoot":"","sources":["../../../src/__tests__/helpers/mountFlashList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,iCAAiC,CAAC;AACzC,OAAO,EAAS,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AActE,oBAAY,kBAAkB,GAAG,IAAI,CACnC,cAAc,CAAC,MAAM,CAAC,EACtB,mBAAmB,GAAG,MAAM,GAAG,YAAY,CAC5C,GAAG;IACF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACpC,+BAA+B,CAAC,EAAE,OAAO,CAAC;CAC3C,CAAC;AACF;;GAEG;AACH,eAAO,MAAM,cAAc,WACjB,kBAAkB,QACpB,MAAM,SAAS,CAAC,UAAU,MAAM,CAAC,CAAC;cAM5B,UAAU,MAAM,CAAC;CAG9B,CAAC;AAEF,wBAAgB,eAAe,CAC7B,KAAK,CAAC,EAAE,kBAAkB,EAC1B,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAC,GAAG,qBAcpD"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderFlashList = exports.mountFlashList = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
var react_native_1 = require("react-native");
|
|
7
|
+
require("@quilted/react-testing/matchers");
|
|
8
|
+
var react_testing_1 = require("@quilted/react-testing");
|
|
9
|
+
var FlashList_1 = tslib_1.__importDefault(require("../../FlashList"));
|
|
10
|
+
jest.mock("../../FlashList", function () {
|
|
11
|
+
var ActualFlashList = jest.requireActual("../../FlashList").default;
|
|
12
|
+
var MockFlashList = /** @class */ (function (_super) {
|
|
13
|
+
tslib_1.__extends(MockFlashList, _super);
|
|
14
|
+
function MockFlashList() {
|
|
15
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
16
|
+
}
|
|
17
|
+
MockFlashList.prototype.componentDidMount = function () {
|
|
18
|
+
var _a, _b, _c;
|
|
19
|
+
_super.prototype.componentDidMount.call(this);
|
|
20
|
+
(_c = (_b = (_a = this.rlvRef) === null || _a === void 0 ? void 0 : _a._scrollComponent) === null || _b === void 0 ? void 0 : _b._scrollViewRef) === null || _c === void 0 ? void 0 : _c.props.onLayout({
|
|
21
|
+
nativeEvent: { layout: { height: 900, width: 400 } },
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
return MockFlashList;
|
|
25
|
+
}(ActualFlashList));
|
|
26
|
+
return MockFlashList;
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Helper to mount FlashList for testing.
|
|
30
|
+
*/
|
|
31
|
+
var mountFlashList = function (props, ref) {
|
|
32
|
+
var flashList = (0, react_testing_1.mount)(renderFlashList(props, ref));
|
|
33
|
+
return flashList;
|
|
34
|
+
};
|
|
35
|
+
exports.mountFlashList = mountFlashList;
|
|
36
|
+
function renderFlashList(props, ref) {
|
|
37
|
+
var _a;
|
|
38
|
+
return (react_1.default.createElement(FlashList_1.default, tslib_1.__assign({}, props, { ref: ref, renderItem: (props === null || props === void 0 ? void 0 : props.renderItem) || (function (_a) {
|
|
39
|
+
var item = _a.item;
|
|
40
|
+
return react_1.default.createElement(react_native_1.Text, null, item);
|
|
41
|
+
}), estimatedItemSize: (_a = props === null || props === void 0 ? void 0 : props.estimatedItemSize) !== null && _a !== void 0 ? _a : ((props === null || props === void 0 ? void 0 : props.disableDefaultEstimatedItemSize) ? undefined : 200), data: (props === null || props === void 0 ? void 0 : props.data) || ["One", "Two", "Three", "Four"] })));
|
|
42
|
+
}
|
|
43
|
+
exports.renderFlashList = renderFlashList;
|
|
44
|
+
//# sourceMappingURL=mountFlashList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mountFlashList.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/mountFlashList.tsx"],"names":[],"mappings":";;;;AAAA,wDAA0B;AAC1B,6CAAoC;AACpC,2CAAyC;AACzC,wDAAqD;AAErD,sEAAwC;AAGxC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;IAC3B,IAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;IACtE;QAA4B,yCAAe;QAA3C;;QAOA,CAAC;QANC,yCAAiB,GAAjB;;YACE,iBAAM,iBAAiB,WAAE,CAAC;YAC1B,MAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,gBAAgB,0CAAE,cAAc,0CAAE,KAAK,CAAC,QAAQ,CAAC;gBAC5D,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;aACrD,CAAC,CAAC;QACL,CAAC;QACH,oBAAC;IAAD,CAAC,AAPD,CAA4B,eAAe,GAO1C;IACD,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC,CAAC;AAUH;;GAEG;AACI,IAAM,cAAc,GAAG,UAC5B,KAA0B,EAC1B,GAAwC;IAExC,IAAM,SAAS,GAAG,IAAA,qBAAK,EAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAKlD,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAXW,QAAA,cAAc,kBAWzB;AAEF,SAAgB,eAAe,CAC7B,KAA0B,EAC1B,GAAmD;;IAEnD,OAAO,CACL,8BAAC,mBAAS,uBACJ,KAAK,IACT,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,KAAI,CAAC,UAAC,EAAQ;gBAAN,IAAI,UAAA;YAAO,OAAA,8BAAC,mBAAI,QAAE,IAAI,CAAQ;QAAnB,CAAmB,CAAC,EACpE,iBAAiB,EACf,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,iBAAiB,mCACxB,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,+BAA+B,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAE5D,IAAI,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,KAAI,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,IACpD,CACH,CAAC;AACJ,CAAC;AAhBD,0CAgBC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import "@quilted/react-testing/matchers";
|
|
3
|
+
import { Root } from "@quilted/react-testing";
|
|
4
|
+
import { ListRenderItem } from "../../FlashListProps";
|
|
5
|
+
import { MasonryFlashListProps, MasonryFlashListRef } from "../../MasonryFlashList";
|
|
6
|
+
export declare type MockMasonryFlashListProps = Omit<MasonryFlashListProps<string>, "estimatedItemSize" | "data" | "renderItem"> & {
|
|
7
|
+
estimatedItemSize?: number;
|
|
8
|
+
data?: string[];
|
|
9
|
+
renderItem?: ListRenderItem<string>;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Helper to mount MasonryFlashList for testing.
|
|
13
|
+
*/
|
|
14
|
+
export declare const mountMasonryFlashList: (props?: MockMasonryFlashListProps, ref?: React.RefObject<MasonryFlashListRef<string> | null>) => Omit<Root<MasonryFlashListProps<string>, import("@quilted/react-testing").EmptyObject, import("@quilted/react-testing").EmptyObject, import("@quilted/react-testing").EmptyObject>, "instance"> & {
|
|
15
|
+
instance: MasonryFlashListRef<string>;
|
|
16
|
+
};
|
|
17
|
+
export declare function renderMasonryFlashList(props?: MockMasonryFlashListProps, ref?: React.RefObject<MasonryFlashListRef<string> | null>): React.JSX.Element;
|
|
18
|
+
//# sourceMappingURL=mountMasonryFlashList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mountMasonryFlashList.d.ts","sourceRoot":"","sources":["../../../src/__tests__/helpers/mountMasonryFlashList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,iCAAiC,CAAC;AACzC,OAAO,EAAS,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAEL,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAoBhC,oBAAY,yBAAyB,GAAG,IAAI,CAC1C,qBAAqB,CAAC,MAAM,CAAC,EAC7B,mBAAmB,GAAG,MAAM,GAAG,YAAY,CAC5C,GAAG;IACF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,WACxB,yBAAyB,QAC3B,MAAM,SAAS,CAAC,oBAAoB,MAAM,CAAC,GAAG,IAAI,CAAC;cAM7C,oBAAoB,MAAM,CAAC;CAGxC,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,KAAK,CAAC,EAAE,yBAAyB,EACjC,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,qBAY1D"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderMasonryFlashList = exports.mountMasonryFlashList = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
var react_native_1 = require("react-native");
|
|
7
|
+
require("@quilted/react-testing/matchers");
|
|
8
|
+
var react_testing_1 = require("@quilted/react-testing");
|
|
9
|
+
var MasonryFlashList_1 = require("../../MasonryFlashList");
|
|
10
|
+
jest.mock("../../FlashList", function () {
|
|
11
|
+
var ActualFlashList = jest.requireActual("../../FlashList").default;
|
|
12
|
+
var MockFlashList = /** @class */ (function (_super) {
|
|
13
|
+
tslib_1.__extends(MockFlashList, _super);
|
|
14
|
+
function MockFlashList() {
|
|
15
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
16
|
+
}
|
|
17
|
+
MockFlashList.prototype.componentDidMount = function () {
|
|
18
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
19
|
+
_super.prototype.componentDidMount.call(this);
|
|
20
|
+
(_c = (_b = (_a = this.rlvRef) === null || _a === void 0 ? void 0 : _a._scrollComponent) === null || _b === void 0 ? void 0 : _b._scrollViewRef) === null || _c === void 0 ? void 0 : _c.props.onLayout({
|
|
21
|
+
nativeEvent: {
|
|
22
|
+
layout: {
|
|
23
|
+
height: (_e = (_d = this.props.estimatedListSize) === null || _d === void 0 ? void 0 : _d.height) !== null && _e !== void 0 ? _e : 900,
|
|
24
|
+
width: (_g = (_f = this.props.estimatedListSize) === null || _f === void 0 ? void 0 : _f.width) !== null && _g !== void 0 ? _g : 400,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
return MockFlashList;
|
|
30
|
+
}(ActualFlashList));
|
|
31
|
+
return MockFlashList;
|
|
32
|
+
});
|
|
33
|
+
/**
|
|
34
|
+
* Helper to mount MasonryFlashList for testing.
|
|
35
|
+
*/
|
|
36
|
+
var mountMasonryFlashList = function (props, ref) {
|
|
37
|
+
var flashList = (0, react_testing_1.mount)(renderMasonryFlashList(props, ref));
|
|
38
|
+
return flashList;
|
|
39
|
+
};
|
|
40
|
+
exports.mountMasonryFlashList = mountMasonryFlashList;
|
|
41
|
+
function renderMasonryFlashList(props, ref) {
|
|
42
|
+
var _a, _b;
|
|
43
|
+
return (react_1.default.createElement(MasonryFlashList_1.MasonryFlashList, tslib_1.__assign({}, props, { ref: ref, numColumns: (_a = props === null || props === void 0 ? void 0 : props.numColumns) !== null && _a !== void 0 ? _a : 2, renderItem: (props === null || props === void 0 ? void 0 : props.renderItem) || (function (_a) {
|
|
44
|
+
var item = _a.item;
|
|
45
|
+
return react_1.default.createElement(react_native_1.Text, null, item);
|
|
46
|
+
}), estimatedItemSize: (_b = props === null || props === void 0 ? void 0 : props.estimatedItemSize) !== null && _b !== void 0 ? _b : 200, data: (props === null || props === void 0 ? void 0 : props.data) || ["One", "Two", "Three", "Four"] })));
|
|
47
|
+
}
|
|
48
|
+
exports.renderMasonryFlashList = renderMasonryFlashList;
|
|
49
|
+
//# sourceMappingURL=mountMasonryFlashList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mountMasonryFlashList.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/mountMasonryFlashList.tsx"],"names":[],"mappings":";;;;AAAA,wDAA0B;AAC1B,6CAAoC;AACpC,2CAAyC;AACzC,wDAAqD;AAGrD,2DAIgC;AAEhC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;IAC3B,IAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;IACtE;QAA4B,yCAAe;QAA3C;;QAYA,CAAC;QAXC,yCAAiB,GAAjB;;YACE,iBAAM,iBAAiB,WAAE,CAAC;YAC1B,MAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,gBAAgB,0CAAE,cAAc,0CAAE,KAAK,CAAC,QAAQ,CAAC;gBAC5D,WAAW,EAAE;oBACX,MAAM,EAAE;wBACN,MAAM,EAAE,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,0CAAE,MAAM,mCAAI,GAAG;wBACnD,KAAK,EAAE,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,0CAAE,KAAK,mCAAI,GAAG;qBAClD;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QACH,oBAAC;IAAD,CAAC,AAZD,CAA4B,eAAe,GAY1C;IACD,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC,CAAC;AAWH;;GAEG;AACI,IAAM,qBAAqB,GAAG,UACnC,KAAiC,EACjC,GAAyD;IAEzD,IAAM,SAAS,GAAG,IAAA,qBAAK,EAAC,sBAAsB,CAAC,KAAK,EAAE,GAAG,CAAC,CAKzD,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAXW,QAAA,qBAAqB,yBAWhC;AAEF,SAAgB,sBAAsB,CACpC,KAAiC,EACjC,GAAyD;;IAEzD,OAAO,CACL,8BAAC,mCAAgB,uBACX,KAAK,IACT,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,mCAAI,CAAC,EAClC,UAAU,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,KAAI,CAAC,UAAC,EAAQ;gBAAN,IAAI,UAAA;YAAO,OAAA,8BAAC,mBAAI,QAAE,IAAI,CAAQ;QAAnB,CAAmB,CAAC,EACpE,iBAAiB,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,iBAAiB,mCAAI,GAAG,EAClD,IAAI,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,KAAI,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,IACpD,CACH,CAAC;AACJ,CAAC;AAdD,wDAcC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBlankAreaTracker.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/useBlankAreaTracker.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
5
|
+
var react_testing_1 = require("@quilted/react-testing");
|
|
6
|
+
var useBlankAreaTracker_1 = require("../benchmark/useBlankAreaTracker");
|
|
7
|
+
var mountFlashList_1 = require("./helpers/mountFlashList");
|
|
8
|
+
var BlankTrackingFlashList = function (props) {
|
|
9
|
+
var _a, _b, _c, _d;
|
|
10
|
+
var ref = props === null || props === void 0 ? void 0 : props.instance;
|
|
11
|
+
var _e = tslib_1.__read((0, useBlankAreaTracker_1.useBlankAreaTracker)(ref, props === null || props === void 0 ? void 0 : props.onCumulativeBlankAreaChange, {
|
|
12
|
+
startDelayInMs: (_b = (_a = props === null || props === void 0 ? void 0 : props.blankAreaTrackerConfig) === null || _a === void 0 ? void 0 : _a.startDelayInMs) !== null && _b !== void 0 ? _b : 500,
|
|
13
|
+
sumNegativeValues: (_d = (_c = props === null || props === void 0 ? void 0 : props.blankAreaTrackerConfig) === null || _c === void 0 ? void 0 : _c.sumNegativeValues) !== null && _d !== void 0 ? _d : false,
|
|
14
|
+
}), 2), blankAreaTrackerResult = _e[0], onBlankArea = _e[1];
|
|
15
|
+
(0, react_1.useEffect)(function () {
|
|
16
|
+
return function () {
|
|
17
|
+
var _a;
|
|
18
|
+
(_a = props === null || props === void 0 ? void 0 : props.onCumulativeBlankAreaResult) === null || _a === void 0 ? void 0 : _a.call(props, blankAreaTrackerResult);
|
|
19
|
+
};
|
|
20
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
21
|
+
}, []);
|
|
22
|
+
return (0, mountFlashList_1.renderFlashList)(tslib_1.__assign(tslib_1.__assign({}, props), { onBlankArea: onBlankArea, estimatedItemSize: 400 }), ref);
|
|
23
|
+
};
|
|
24
|
+
var mountBlankTrackingFlashList = function (props) {
|
|
25
|
+
var flashListRef = react_1.default.createRef();
|
|
26
|
+
var blankTrackingFlashList = (0, react_testing_1.mount)(react_1.default.createElement(BlankTrackingFlashList, tslib_1.__assign({}, props, { instance: flashListRef })));
|
|
27
|
+
return {
|
|
28
|
+
root: blankTrackingFlashList,
|
|
29
|
+
instance: flashListRef.current,
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
describe("useBlankAreaTracker Hook", function () {
|
|
33
|
+
beforeEach(function () {
|
|
34
|
+
jest.clearAllMocks();
|
|
35
|
+
jest.useFakeTimers();
|
|
36
|
+
});
|
|
37
|
+
it("ignores blank events for 500ms on mount and if content is not enough to fill the list", function () {
|
|
38
|
+
var onCumulativeBlankAreaChange = jest.fn();
|
|
39
|
+
var flashList = mountBlankTrackingFlashList({
|
|
40
|
+
onCumulativeBlankAreaChange: onCumulativeBlankAreaChange,
|
|
41
|
+
});
|
|
42
|
+
flashList.instance.props.onBlankArea({
|
|
43
|
+
blankArea: 100,
|
|
44
|
+
offsetEnd: 100,
|
|
45
|
+
offsetStart: 0,
|
|
46
|
+
});
|
|
47
|
+
flashList.instance.props.onBlankArea({
|
|
48
|
+
blankArea: 100,
|
|
49
|
+
offsetEnd: 100,
|
|
50
|
+
offsetStart: 0,
|
|
51
|
+
});
|
|
52
|
+
jest.advanceTimersByTime(400);
|
|
53
|
+
flashList.instance.props.onBlankArea({
|
|
54
|
+
blankArea: 100,
|
|
55
|
+
offsetEnd: 100,
|
|
56
|
+
offsetStart: 0,
|
|
57
|
+
});
|
|
58
|
+
expect(onCumulativeBlankAreaChange).toHaveBeenCalledTimes(0);
|
|
59
|
+
jest.advanceTimersByTime(100);
|
|
60
|
+
flashList.instance.props.onBlankArea({
|
|
61
|
+
blankArea: 100,
|
|
62
|
+
offsetEnd: 100,
|
|
63
|
+
offsetStart: 0,
|
|
64
|
+
});
|
|
65
|
+
expect(onCumulativeBlankAreaChange).toHaveBeenCalledTimes(1);
|
|
66
|
+
onCumulativeBlankAreaChange.mockClear();
|
|
67
|
+
flashList.root.setProps({ data: ["1"] });
|
|
68
|
+
flashList.instance.props.onBlankArea({
|
|
69
|
+
blankArea: 100,
|
|
70
|
+
offsetEnd: 100,
|
|
71
|
+
offsetStart: 0,
|
|
72
|
+
});
|
|
73
|
+
expect(onCumulativeBlankAreaChange).toHaveBeenCalledTimes(0);
|
|
74
|
+
flashList.root.unmount();
|
|
75
|
+
});
|
|
76
|
+
it("keeps result object updated with correct values on unmount", function () {
|
|
77
|
+
var resultObjectCopy;
|
|
78
|
+
var onCumulativeBlankAreaChange = jest.fn(function (result) {
|
|
79
|
+
if (!resultObjectCopy) {
|
|
80
|
+
resultObjectCopy = result;
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
var onCumulativeBlankAreaResult = jest.fn();
|
|
84
|
+
var flashList = mountBlankTrackingFlashList({
|
|
85
|
+
onCumulativeBlankAreaResult: onCumulativeBlankAreaResult,
|
|
86
|
+
onCumulativeBlankAreaChange: onCumulativeBlankAreaChange,
|
|
87
|
+
blankAreaTrackerConfig: { startDelayInMs: 300 },
|
|
88
|
+
});
|
|
89
|
+
flashList.instance.props.onBlankArea({
|
|
90
|
+
blankArea: 100,
|
|
91
|
+
offsetEnd: 100,
|
|
92
|
+
offsetStart: 0,
|
|
93
|
+
});
|
|
94
|
+
jest.advanceTimersByTime(300);
|
|
95
|
+
flashList.instance.props.onBlankArea({
|
|
96
|
+
blankArea: 100,
|
|
97
|
+
offsetEnd: 100,
|
|
98
|
+
offsetStart: 0,
|
|
99
|
+
});
|
|
100
|
+
expect(resultObjectCopy.cumulativeBlankArea).toBe(100);
|
|
101
|
+
expect(resultObjectCopy.maxBlankArea).toBe(100);
|
|
102
|
+
flashList.instance.props.onBlankArea({
|
|
103
|
+
blankArea: 200,
|
|
104
|
+
offsetEnd: 200,
|
|
105
|
+
offsetStart: 0,
|
|
106
|
+
});
|
|
107
|
+
flashList.instance.props.onBlankArea({
|
|
108
|
+
blankArea: -200,
|
|
109
|
+
offsetEnd: -200,
|
|
110
|
+
offsetStart: 0,
|
|
111
|
+
});
|
|
112
|
+
expect(resultObjectCopy.cumulativeBlankArea).toBe(300);
|
|
113
|
+
expect(resultObjectCopy.maxBlankArea).toBe(200);
|
|
114
|
+
flashList.root.unmount();
|
|
115
|
+
expect(onCumulativeBlankAreaResult).toHaveBeenCalledWith(resultObjectCopy);
|
|
116
|
+
});
|
|
117
|
+
it("can track negative values on demand", function () {
|
|
118
|
+
var onCumulativeBlankAreaResult = jest.fn();
|
|
119
|
+
var flashList = mountBlankTrackingFlashList({
|
|
120
|
+
onCumulativeBlankAreaResult: onCumulativeBlankAreaResult,
|
|
121
|
+
blankAreaTrackerConfig: { sumNegativeValues: true },
|
|
122
|
+
});
|
|
123
|
+
flashList.instance.props.onBlankArea({
|
|
124
|
+
blankArea: -200,
|
|
125
|
+
offsetEnd: -200,
|
|
126
|
+
offsetStart: 0,
|
|
127
|
+
});
|
|
128
|
+
jest.advanceTimersByTime(500);
|
|
129
|
+
flashList.instance.props.onBlankArea({
|
|
130
|
+
blankArea: -200,
|
|
131
|
+
offsetEnd: -200,
|
|
132
|
+
offsetStart: 0,
|
|
133
|
+
});
|
|
134
|
+
flashList.instance.props.onBlankArea({
|
|
135
|
+
blankArea: -200,
|
|
136
|
+
offsetEnd: -200,
|
|
137
|
+
offsetStart: 0,
|
|
138
|
+
});
|
|
139
|
+
flashList.root.unmount();
|
|
140
|
+
expect(onCumulativeBlankAreaResult).toHaveBeenCalledWith({
|
|
141
|
+
cumulativeBlankArea: -400,
|
|
142
|
+
maxBlankArea: 0,
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
it("only calls onCumulativeBlankAreaChange when values have a change", function () {
|
|
146
|
+
var onCumulativeBlankAreaChange = jest.fn();
|
|
147
|
+
var flashList = mountBlankTrackingFlashList({
|
|
148
|
+
onCumulativeBlankAreaChange: onCumulativeBlankAreaChange,
|
|
149
|
+
});
|
|
150
|
+
flashList.instance.props.onBlankArea({
|
|
151
|
+
blankArea: -200,
|
|
152
|
+
offsetEnd: -200,
|
|
153
|
+
offsetStart: 0,
|
|
154
|
+
});
|
|
155
|
+
jest.advanceTimersByTime(500);
|
|
156
|
+
flashList.instance.props.onBlankArea({
|
|
157
|
+
blankArea: -200,
|
|
158
|
+
offsetEnd: -200,
|
|
159
|
+
offsetStart: 0,
|
|
160
|
+
});
|
|
161
|
+
expect(onCumulativeBlankAreaChange).toHaveBeenCalledTimes(0);
|
|
162
|
+
flashList.instance.props.onBlankArea({
|
|
163
|
+
blankArea: -100,
|
|
164
|
+
offsetEnd: -100,
|
|
165
|
+
offsetStart: 0,
|
|
166
|
+
});
|
|
167
|
+
expect(onCumulativeBlankAreaChange).toHaveBeenCalledTimes(0);
|
|
168
|
+
flashList.instance.props.onBlankArea({
|
|
169
|
+
blankArea: 100,
|
|
170
|
+
offsetEnd: 100,
|
|
171
|
+
offsetStart: 0,
|
|
172
|
+
});
|
|
173
|
+
expect(onCumulativeBlankAreaChange).toHaveBeenCalledTimes(1);
|
|
174
|
+
flashList.root.unmount();
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
//# sourceMappingURL=useBlankAreaTracker.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBlankAreaTracker.test.js","sourceRoot":"","sources":["../../src/__tests__/useBlankAreaTracker.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MIT License
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2024 Huawei Device Co., Ltd.
|
|
5
|
-
*
|
|
6
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
* in the Software without restriction, including without limitation the rights
|
|
9
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
* furnished to do so, subject to the following conditions:
|
|
12
|
-
*
|
|
13
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
* copies or substantial portions of the Software.
|
|
15
|
-
*
|
|
16
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
* SOFTWARE.
|
|
23
|
-
*/
|
|
24
|
-
/**
|
|
25
|
-
* This method can be used to trigger scroll events that can be forwarded to an element. Anything that implements scrollable can leverage this.
|
|
26
|
-
* @param scroll The scrollable element
|
|
27
|
-
* @param fromX The x offset to start from
|
|
28
|
-
* @param fromY The y offset to start from
|
|
29
|
-
* @param toX the x offset to end scroll at
|
|
30
|
-
* @param toY the y offset to end scroll at
|
|
31
|
-
* @param speedMultiplier the speed multiplier to use
|
|
32
|
-
* @param cancellable can be used to cancel the scroll
|
|
33
|
-
* @returns Promise that resolves when the scroll is complete
|
|
34
|
-
*/
|
|
35
|
-
export declare function autoScroll(scroll: (x: number, y: number, animated: boolean) => void, fromX: number, fromY: number, toX: number, toY: number, speedMultiplier?: number, cancellable?: Cancellable): Promise<boolean>;
|
|
36
|
-
export declare class Cancellable {
|
|
37
|
-
cancel(): void;
|
|
38
|
-
isCancelled(): boolean;
|
|
39
|
-
_isCancelled: boolean;
|
|
40
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* MIT License
|
|
3
|
+
*
|
|
4
|
+
* Copyright (C) 2024 Huawei Device Co., Ltd.
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
* in the Software without restriction, including without limitation the rights
|
|
9
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
* furnished to do so, subject to the following conditions:
|
|
12
|
+
*
|
|
13
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
* copies or substantial portions of the Software.
|
|
15
|
+
*
|
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
* SOFTWARE.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* This method can be used to trigger scroll events that can be forwarded to an element. Anything that implements scrollable can leverage this.
|
|
26
|
+
* @param scroll The scrollable element
|
|
27
|
+
* @param fromX The x offset to start from
|
|
28
|
+
* @param fromY The y offset to start from
|
|
29
|
+
* @param toX the x offset to end scroll at
|
|
30
|
+
* @param toY the y offset to end scroll at
|
|
31
|
+
* @param speedMultiplier the speed multiplier to use
|
|
32
|
+
* @param cancellable can be used to cancel the scroll
|
|
33
|
+
* @returns Promise that resolves when the scroll is complete
|
|
34
|
+
*/
|
|
35
|
+
export declare function autoScroll(scroll: (x: number, y: number, animated: boolean) => void, fromX: number, fromY: number, toX: number, toY: number, speedMultiplier?: number, cancellable?: Cancellable): Promise<boolean>;
|
|
36
|
+
export declare class Cancellable {
|
|
37
|
+
cancel(): void;
|
|
38
|
+
isCancelled(): boolean;
|
|
39
|
+
_isCancelled: boolean;
|
|
40
|
+
}
|
|
41
41
|
//# sourceMappingURL=AutoScrollHelper.d.ts.map
|