@shopify/flash-list 2.0.3 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AnimatedFlashList.js +4 -6
- package/dist/AnimatedFlashList.js.map +1 -1
- package/dist/FlashList.js +1 -5
- package/dist/FlashList.js.map +1 -1
- package/dist/FlashListProps.d.ts +9 -1
- package/dist/FlashListProps.d.ts.map +1 -1
- package/dist/FlashListProps.js +1 -4
- package/dist/FlashListProps.js.map +1 -1
- package/dist/FlashListRef.js +1 -2
- package/dist/benchmark/AutoScrollHelper.js +22 -30
- package/dist/benchmark/AutoScrollHelper.js.map +1 -1
- package/dist/benchmark/JSFPSMonitor.js +27 -33
- package/dist/benchmark/JSFPSMonitor.js.map +1 -1
- package/dist/benchmark/roundToDecimalPlaces.js +2 -5
- package/dist/benchmark/roundToDecimalPlaces.js.map +1 -1
- package/dist/benchmark/useBenchmark.d.ts +9 -1
- package/dist/benchmark/useBenchmark.d.ts.map +1 -1
- package/dist/benchmark/useBenchmark.js +86 -95
- package/dist/benchmark/useBenchmark.js.map +1 -1
- package/dist/benchmark/useDataMultiplier.js +6 -10
- package/dist/benchmark/useDataMultiplier.js.map +1 -1
- package/dist/benchmark/useFlatListBenchmark.d.ts +4 -1
- package/dist/benchmark/useFlatListBenchmark.d.ts.map +1 -1
- package/dist/benchmark/useFlatListBenchmark.js +73 -81
- package/dist/benchmark/useFlatListBenchmark.js.map +1 -1
- package/dist/errors/ErrorMessages.js +1 -4
- package/dist/errors/ErrorMessages.js.map +1 -1
- package/dist/errors/WarningMessages.d.ts +1 -0
- package/dist/errors/WarningMessages.d.ts.map +1 -1
- package/dist/errors/WarningMessages.js +2 -4
- package/dist/errors/WarningMessages.js.map +1 -1
- package/dist/index.js +17 -35
- package/dist/index.js.map +1 -1
- package/dist/isNewArch.js +6 -9
- package/dist/isNewArch.js.map +1 -1
- package/dist/native/config/PlatformHelper.android.js +2 -5
- package/dist/native/config/PlatformHelper.android.js.map +1 -1
- package/dist/native/config/PlatformHelper.ios.js +2 -5
- package/dist/native/config/PlatformHelper.ios.js.map +1 -1
- package/dist/native/config/PlatformHelper.js +2 -5
- package/dist/native/config/PlatformHelper.js.map +1 -1
- package/dist/native/config/PlatformHelper.web.js +2 -5
- package/dist/native/config/PlatformHelper.web.js.map +1 -1
- package/dist/recyclerview/LayoutCommitObserver.js +20 -24
- package/dist/recyclerview/LayoutCommitObserver.js.map +1 -1
- package/dist/recyclerview/RecyclerView.d.ts.map +1 -1
- package/dist/recyclerview/RecyclerView.js +117 -107
- package/dist/recyclerview/RecyclerView.js.map +1 -1
- package/dist/recyclerview/RecyclerViewContextProvider.js +7 -12
- package/dist/recyclerview/RecyclerViewContextProvider.js.map +1 -1
- package/dist/recyclerview/RecyclerViewManager.d.ts +2 -0
- package/dist/recyclerview/RecyclerViewManager.d.ts.map +1 -1
- package/dist/recyclerview/RecyclerViewManager.js +146 -164
- package/dist/recyclerview/RecyclerViewManager.js.map +1 -1
- package/dist/recyclerview/RecyclerViewProps.js +1 -2
- package/dist/recyclerview/RenderStackManager.js +97 -188
- package/dist/recyclerview/RenderStackManager.js.map +1 -1
- package/dist/recyclerview/ViewHolder.js +16 -20
- package/dist/recyclerview/ViewHolder.js.map +1 -1
- package/dist/recyclerview/ViewHolderCollection.js +26 -30
- package/dist/recyclerview/ViewHolderCollection.js.map +1 -1
- package/dist/recyclerview/components/CompatScroller.js +6 -7
- package/dist/recyclerview/components/CompatScroller.js.map +1 -1
- package/dist/recyclerview/components/CompatView.js +6 -7
- package/dist/recyclerview/components/CompatView.js.map +1 -1
- package/dist/recyclerview/components/ScrollAnchor.js +10 -15
- package/dist/recyclerview/components/ScrollAnchor.js.map +1 -1
- package/dist/recyclerview/components/StickyHeaders.js +34 -40
- package/dist/recyclerview/components/StickyHeaders.js.map +1 -1
- package/dist/recyclerview/helpers/ConsecutiveNumbers.js +39 -66
- package/dist/recyclerview/helpers/ConsecutiveNumbers.js.map +1 -1
- package/dist/recyclerview/helpers/EngagedIndicesTracker.js +57 -63
- package/dist/recyclerview/helpers/EngagedIndicesTracker.js.map +1 -1
- package/dist/recyclerview/helpers/RenderTimeTracker.js +19 -24
- package/dist/recyclerview/helpers/RenderTimeTracker.js.map +1 -1
- package/dist/recyclerview/helpers/VelocityTracker.js +16 -22
- package/dist/recyclerview/helpers/VelocityTracker.js.map +1 -1
- package/dist/recyclerview/hooks/useBoundDetection.js +37 -40
- package/dist/recyclerview/hooks/useBoundDetection.js.map +1 -1
- package/dist/recyclerview/hooks/useLayoutState.js +9 -15
- package/dist/recyclerview/hooks/useLayoutState.js.map +1 -1
- package/dist/recyclerview/hooks/useMappingHelper.js +6 -10
- package/dist/recyclerview/hooks/useMappingHelper.js.map +1 -1
- package/dist/recyclerview/hooks/useOnLoad.d.ts.map +1 -1
- package/dist/recyclerview/hooks/useOnLoad.js +17 -22
- package/dist/recyclerview/hooks/useOnLoad.js.map +1 -1
- package/dist/recyclerview/hooks/useRecyclerViewController.d.ts.map +1 -1
- package/dist/recyclerview/hooks/useRecyclerViewController.js +169 -188
- package/dist/recyclerview/hooks/useRecyclerViewController.js.map +1 -1
- package/dist/recyclerview/hooks/useRecyclerViewManager.js +12 -17
- package/dist/recyclerview/hooks/useRecyclerViewManager.js.map +1 -1
- package/dist/recyclerview/hooks/useRecyclingState.js +10 -14
- package/dist/recyclerview/hooks/useRecyclingState.js.map +1 -1
- package/dist/recyclerview/hooks/useSecondaryProps.js +24 -30
- package/dist/recyclerview/hooks/useSecondaryProps.js.map +1 -1
- package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js +17 -22
- package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js.map +1 -1
- package/dist/recyclerview/hooks/useUnmountFlag.js +5 -9
- package/dist/recyclerview/hooks/useUnmountFlag.js.map +1 -1
- package/dist/recyclerview/layout-managers/GridLayoutManager.js +61 -80
- package/dist/recyclerview/layout-managers/GridLayoutManager.js.map +1 -1
- package/dist/recyclerview/layout-managers/LayoutManager.js +83 -123
- package/dist/recyclerview/layout-managers/LayoutManager.js.map +1 -1
- package/dist/recyclerview/layout-managers/LinearLayoutManager.js +51 -91
- package/dist/recyclerview/layout-managers/LinearLayoutManager.js.map +1 -1
- package/dist/recyclerview/layout-managers/MasonryLayoutManager.js +77 -96
- package/dist/recyclerview/layout-managers/MasonryLayoutManager.js.map +1 -1
- package/dist/recyclerview/utils/adjustOffsetForRTL.js +1 -4
- package/dist/recyclerview/utils/adjustOffsetForRTL.js.map +1 -1
- package/dist/recyclerview/utils/componentUtils.js +4 -9
- package/dist/recyclerview/utils/componentUtils.js.map +1 -1
- package/dist/recyclerview/utils/findVisibleIndex.js +9 -13
- package/dist/recyclerview/utils/findVisibleIndex.js.map +1 -1
- package/dist/recyclerview/utils/measureLayout.js +12 -20
- package/dist/recyclerview/utils/measureLayout.js.map +1 -1
- package/dist/recyclerview/utils/measureLayout.web.js +15 -23
- package/dist/recyclerview/utils/measureLayout.web.js.map +1 -1
- package/dist/recyclerview/viewability/ViewToken.js +1 -2
- package/dist/recyclerview/viewability/ViewabilityHelper.js +34 -41
- package/dist/recyclerview/viewability/ViewabilityHelper.js.map +1 -1
- package/dist/recyclerview/viewability/ViewabilityManager.js +48 -61
- package/dist/recyclerview/viewability/ViewabilityManager.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/AverageWindow.js +28 -39
- package/dist/utils/AverageWindow.js.map +1 -1
- package/package.json +4 -6
- package/src/FlashListProps.ts +8 -1
- package/src/benchmark/useBenchmark.ts +47 -4
- package/src/benchmark/useFlatListBenchmark.ts +38 -5
- package/src/errors/WarningMessages.ts +2 -0
- package/src/recyclerview/RecyclerView.tsx +18 -5
- package/src/recyclerview/RecyclerViewManager.ts +12 -0
- package/src/recyclerview/hooks/useOnLoad.ts +1 -0
- package/src/recyclerview/hooks/useRecyclerViewController.tsx +7 -4
- package/dist/__tests__/AverageWindow.test.d.ts +0 -2
- package/dist/__tests__/AverageWindow.test.d.ts.map +0 -1
- package/dist/__tests__/AverageWindow.test.js +0 -104
- package/dist/__tests__/AverageWindow.test.js.map +0 -1
- package/dist/__tests__/ConsecutiveNumbers.test.d.ts +0 -2
- package/dist/__tests__/ConsecutiveNumbers.test.d.ts.map +0 -1
- package/dist/__tests__/ConsecutiveNumbers.test.js +0 -224
- package/dist/__tests__/ConsecutiveNumbers.test.js.map +0 -1
- package/dist/__tests__/GridLayoutManager.test.d.ts +0 -2
- package/dist/__tests__/GridLayoutManager.test.d.ts.map +0 -1
- package/dist/__tests__/GridLayoutManager.test.js +0 -69
- package/dist/__tests__/GridLayoutManager.test.js.map +0 -1
- package/dist/__tests__/LayoutCommitObserver.test.d.ts +0 -2
- package/dist/__tests__/LayoutCommitObserver.test.d.ts.map +0 -1
- package/dist/__tests__/LayoutCommitObserver.test.js +0 -37
- package/dist/__tests__/LayoutCommitObserver.test.js.map +0 -1
- package/dist/__tests__/LinearLayoutManager.test.d.ts +0 -2
- package/dist/__tests__/LinearLayoutManager.test.d.ts.map +0 -1
- package/dist/__tests__/LinearLayoutManager.test.js +0 -140
- package/dist/__tests__/LinearLayoutManager.test.js.map +0 -1
- package/dist/__tests__/MasonryLayoutManager.test.d.ts +0 -2
- package/dist/__tests__/MasonryLayoutManager.test.d.ts.map +0 -1
- package/dist/__tests__/MasonryLayoutManager.test.js +0 -148
- package/dist/__tests__/MasonryLayoutManager.test.js.map +0 -1
- package/dist/__tests__/RecyclerView.test.d.ts +0 -2
- package/dist/__tests__/RecyclerView.test.d.ts.map +0 -1
- package/dist/__tests__/RecyclerView.test.js +0 -103
- package/dist/__tests__/RecyclerView.test.js.map +0 -1
- package/dist/__tests__/RenderStackManager.test.d.ts +0 -2
- package/dist/__tests__/RenderStackManager.test.d.ts.map +0 -1
- package/dist/__tests__/RenderStackManager.test.js +0 -485
- package/dist/__tests__/RenderStackManager.test.js.map +0 -1
- package/dist/__tests__/ViewabilityHelper.test.d.ts +0 -2
- package/dist/__tests__/ViewabilityHelper.test.d.ts.map +0 -1
- package/dist/__tests__/ViewabilityHelper.test.js +0 -186
- package/dist/__tests__/ViewabilityHelper.test.js.map +0 -1
- package/dist/__tests__/findVisibleIndex.test.d.ts +0 -2
- package/dist/__tests__/findVisibleIndex.test.d.ts.map +0 -1
- package/dist/__tests__/findVisibleIndex.test.js +0 -259
- package/dist/__tests__/findVisibleIndex.test.js.map +0 -1
- package/dist/__tests__/helpers/createLayoutManager.d.ts +0 -34
- package/dist/__tests__/helpers/createLayoutManager.d.ts.map +0 -1
- package/dist/__tests__/helpers/createLayoutManager.js +0 -110
- package/dist/__tests__/helpers/createLayoutManager.js.map +0 -1
- package/dist/__tests__/useUnmountAwareCallbacks.test.d.ts +0 -2
- package/dist/__tests__/useUnmountAwareCallbacks.test.d.ts.map +0 -1
- package/dist/__tests__/useUnmountAwareCallbacks.test.js +0 -185
- package/dist/__tests__/useUnmountAwareCallbacks.test.js.map +0 -1
- package/src/__tests__/AverageWindow.test.ts +0 -128
- package/src/__tests__/ConsecutiveNumbers.test.ts +0 -232
- package/src/__tests__/GridLayoutManager.test.ts +0 -113
- package/src/__tests__/LayoutCommitObserver.test.tsx +0 -63
- package/src/__tests__/LinearLayoutManager.test.ts +0 -227
- package/src/__tests__/MasonryLayoutManager.test.ts +0 -202
- package/src/__tests__/RecyclerView.test.tsx +0 -144
- package/src/__tests__/RenderStackManager.test.ts +0 -574
- package/src/__tests__/ViewabilityHelper.test.ts +0 -282
- package/src/__tests__/findVisibleIndex.test.ts +0 -369
- package/src/__tests__/helpers/createLayoutManager.ts +0 -141
- package/src/__tests__/useUnmountAwareCallbacks.test.tsx +0 -285
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var react_native_1 = require("react-native");
|
|
4
|
-
var FlashList_1 = require("./FlashList");
|
|
1
|
+
import { Animated } from "react-native";
|
|
2
|
+
import { FlashList } from "./FlashList";
|
|
5
3
|
// Typecast as required
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
const AnimatedFlashList = Animated.createAnimatedComponent(FlashList);
|
|
5
|
+
export default AnimatedFlashList;
|
|
8
6
|
//# sourceMappingURL=AnimatedFlashList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimatedFlashList.js","sourceRoot":"","sources":["../src/AnimatedFlashList.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AnimatedFlashList.js","sourceRoot":"","sources":["../src/AnimatedFlashList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,uBAAuB;AACvB,MAAM,iBAAiB,GACrB,QAAQ,CAAC,uBAAuB,CAC9B,SAAS,CACV,CAAC;AAEJ,eAAe,iBAAiB,CAAC"}
|
package/dist/FlashList.js
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FlashList = void 0;
|
|
4
|
-
var RecyclerView_1 = require("./recyclerview/RecyclerView");
|
|
5
|
-
Object.defineProperty(exports, "FlashList", { enumerable: true, get: function () { return RecyclerView_1.RecyclerView; } });
|
|
1
|
+
export { RecyclerView as FlashList } from "./recyclerview/RecyclerView";
|
|
6
2
|
//# sourceMappingURL=FlashList.js.map
|
package/dist/FlashList.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlashList.js","sourceRoot":"","sources":["../src/FlashList.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FlashList.js","sourceRoot":"","sources":["../src/FlashList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,6BAA6B,CAAC"}
|
package/dist/FlashListProps.d.ts
CHANGED
|
@@ -113,6 +113,14 @@ export interface FlashListProps<TItem> extends Omit<ScrollViewProps, "maintainVi
|
|
|
113
113
|
* Instead of starting at the top with the first item, start at initialScrollIndex.
|
|
114
114
|
*/
|
|
115
115
|
initialScrollIndex?: number | null | undefined;
|
|
116
|
+
/**
|
|
117
|
+
* Additional configuration for initialScrollIndex.
|
|
118
|
+
* Use viewOffset to apply an offset to the initial scroll position as defined by initialScrollIndex.
|
|
119
|
+
* Ignored if initialScrollIndex is not set.
|
|
120
|
+
*/
|
|
121
|
+
initialScrollIndexParams?: {
|
|
122
|
+
viewOffset?: number;
|
|
123
|
+
} | null | undefined;
|
|
116
124
|
/**
|
|
117
125
|
* Used to extract a unique key for a given item at the specified index.
|
|
118
126
|
* Key is used for optimizing performance. Defining `keyExtractor` is also necessary
|
|
@@ -239,7 +247,7 @@ export interface FlashListProps<TItem> extends Omit<ScrollViewProps, "maintainVi
|
|
|
239
247
|
* Style for the RecyclerView's parent container.
|
|
240
248
|
* Please avoid anything which can mess size of children in this view. For example, margin is okay but padding is not.
|
|
241
249
|
*/
|
|
242
|
-
style?: ViewStyle
|
|
250
|
+
style?: StyleProp<ViewStyle>;
|
|
243
251
|
/**
|
|
244
252
|
* New arch only
|
|
245
253
|
* Configuration for maintaining scroll position when content changes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlashListProps.d.ts","sourceRoot":"","sources":["../src/FlashListProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAO,SAAS,MAAM,sCAAsC,CAAC;AAE7D,MAAM,WAAW,kBAAkB,CAAC,KAAK;IACvC,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;AAEnE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAI5D,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,KAAK,IAAI,CAClC,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,KAC5B,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAE/B,MAAM,WAAW,6BAA6B,CAAC,KAAK;IAClD,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,sBAAsB,EAClB,CAAC,CAAC,IAAI,EAAE;QACN,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;KAC7B,KAAK,IAAI,CAAC,GACX,IAAI,CAAC;CACV;AAED,MAAM,MAAM,8BAA8B,CAAC,KAAK,IAC9C,6BAA6B,CAAC,KAAK,CAAC,EAAE,CAAC;AAEzC,MAAM,WAAW,cAAc,CAAC,KAAK,CACnC,SAAQ,IAAI,CAAC,eAAe,EAAE,gCAAgC,CAAC;IAC/D;;;;;;;;;;;;;;OAcG;IACH,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAErD;;OAEG;IACH,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAE9C;;;;;;;;;;;;;;;;OAgBG;IACH,qBAAqB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAE7D;;OAEG;IACH,sBAAsB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAErE;;OAEG;IACH,kBAAkB,CAAC,EACf,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GACxB,KAAK,CAAC,YAAY,GAClB,IAAI,GACJ,SAAS,CAAC;IAEd;;OAEG;IACH,mBAAmB,CAAC,EAChB,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GACxB,KAAK,CAAC,YAAY,GAClB,IAAI,GACJ,SAAS,CAAC;IAEd;;OAEG;IACH,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAE5D;;OAEG;IACH,mBAAmB,CAAC,EAChB,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GACxB,KAAK,CAAC,YAAY,GAClB,IAAI,GACJ,SAAS,CAAC;IAEd;;OAEG;IACH,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAE5D;;OAEG;IACH,qBAAqB,CAAC,EAClB,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,GACpC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IAE9B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,GAAG,CAAC;IAEhB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAExC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAE/C;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAEpE;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAE/C;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAElD;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAErD;;;;;;;OAOG;IACH,sBAAsB,CAAC,EACnB,CAAC,CAAC,IAAI,EAAE;QACN,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;KAC7B,KAAK,IAAI,CAAC,GACX,IAAI,GACJ,SAAS,CAAC;IAEd;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAE5C;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CACZ,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,GAAG,KACZ,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAEjC;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,CACnB,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EACzB,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,GAAG,KACZ,IAAI,CAAC;IAEV;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAExC;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAExC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAEzD;;;OAGG;IACH,8BAA8B,CAAC,EAC3B,8BAA8B,CAAC,KAAK,CAAC,GACrC,SAAS,CAAC;IAEd;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC;IAEvD;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC,CAAC;IAEzE;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"FlashListProps.d.ts","sourceRoot":"","sources":["../src/FlashListProps.ts"],"names":[],"mappings":"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"}
|
package/dist/FlashListProps.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RenderTargetOptions = void 0;
|
|
4
|
-
exports.RenderTargetOptions = {
|
|
1
|
+
export const RenderTargetOptions = {
|
|
5
2
|
Cell: "Cell",
|
|
6
3
|
StickyHeader: "StickyHeader",
|
|
7
4
|
Measurement: "Measurement",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlashListProps.js","sourceRoot":"","sources":["../src/FlashListProps.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FlashListProps.js","sourceRoot":"","sources":["../src/FlashListProps.ts"],"names":[],"mappings":"AA+BA,MAAM,CAAC,MAAM,mBAAmB,GAAiC;IAC/D,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;CAC3B,CAAC"}
|
package/dist/FlashListRef.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Cancellable = void 0;
|
|
4
|
-
exports.autoScroll = autoScroll;
|
|
5
1
|
/**
|
|
6
2
|
* This method can be used to trigger scroll events that can be forwarded to an element. Anything that implements scrollable can leverage this.
|
|
7
3
|
* @param scroll The scrollable element
|
|
@@ -13,31 +9,29 @@ exports.autoScroll = autoScroll;
|
|
|
13
9
|
* @param cancellable can be used to cancel the scroll
|
|
14
10
|
* @returns Promise that resolves when the scroll is complete
|
|
15
11
|
*/
|
|
16
|
-
function autoScroll(scroll, fromX, fromY, toX, toY, speedMultiplier, cancellable) {
|
|
17
|
-
|
|
18
|
-
if (cancellable === void 0) { cancellable = new Cancellable(); }
|
|
19
|
-
return new Promise(function (resolve) {
|
|
12
|
+
export function autoScroll(scroll, fromX, fromY, toX, toY, speedMultiplier = 1, cancellable = new Cancellable()) {
|
|
13
|
+
return new Promise((resolve) => {
|
|
20
14
|
scroll(fromX, fromY, false);
|
|
21
15
|
// Very fast scrolls on Android/iOS typically move content 7px every millisecond.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
16
|
+
const incrementPerMs = 7 * speedMultiplier;
|
|
17
|
+
const directionMultiplierX = toX > fromX ? 1 : -1;
|
|
18
|
+
const directionMultiplierY = toY > fromY ? 1 : -1;
|
|
19
|
+
const comparatorX = toX > fromX ? Math.min : Math.max;
|
|
20
|
+
const comparatorY = toY > fromY ? Math.min : Math.max;
|
|
21
|
+
let startTime = Date.now();
|
|
22
|
+
let startX = fromX;
|
|
23
|
+
let startY = fromY;
|
|
30
24
|
// Computes the number of pixels to scroll in the given time
|
|
31
25
|
// Also invokes the scrollable to update the scroll position
|
|
32
|
-
|
|
33
|
-
requestAnimationFrame(
|
|
26
|
+
const animationLoop = () => {
|
|
27
|
+
requestAnimationFrame(() => {
|
|
34
28
|
if (cancellable.isCancelled()) {
|
|
35
29
|
resolve(false);
|
|
36
30
|
return;
|
|
37
31
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
32
|
+
const currentTime = Date.now();
|
|
33
|
+
const timeElapsed = currentTime - startTime;
|
|
34
|
+
const distanceToCover = incrementPerMs * timeElapsed;
|
|
41
35
|
startX += distanceToCover * directionMultiplierX;
|
|
42
36
|
startY += distanceToCover * directionMultiplierY;
|
|
43
37
|
scroll(comparatorX(toX, startX), comparatorY(toY, startY), false);
|
|
@@ -52,17 +46,15 @@ function autoScroll(scroll, fromX, fromY, toX, toY, speedMultiplier, cancellable
|
|
|
52
46
|
animationLoop();
|
|
53
47
|
});
|
|
54
48
|
}
|
|
55
|
-
|
|
56
|
-
|
|
49
|
+
export class Cancellable {
|
|
50
|
+
constructor() {
|
|
57
51
|
this._isCancelled = false;
|
|
58
52
|
}
|
|
59
|
-
|
|
53
|
+
cancel() {
|
|
60
54
|
this._isCancelled = true;
|
|
61
|
-
}
|
|
62
|
-
|
|
55
|
+
}
|
|
56
|
+
isCancelled() {
|
|
63
57
|
return this._isCancelled;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
}());
|
|
67
|
-
exports.Cancellable = Cancellable;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
68
60
|
//# sourceMappingURL=AutoScrollHelper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoScrollHelper.js","sourceRoot":"","sources":["../../src/benchmark/AutoScrollHelper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AutoScrollHelper.js","sourceRoot":"","sources":["../../src/benchmark/AutoScrollHelper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CACxB,MAAyD,EACzD,KAAa,EACb,KAAa,EACb,GAAW,EACX,GAAW,EACX,eAAe,GAAG,CAAC,EACnB,cAA2B,IAAI,WAAW,EAAE;IAE5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5B,iFAAiF;QACjF,MAAM,cAAc,GAAG,CAAC,GAAG,eAAe,CAAC;QAC3C,MAAM,oBAAoB,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,oBAAoB,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACtD,MAAM,WAAW,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACtD,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,4DAA4D;QAC5D,4DAA4D;QAC5D,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,qBAAqB,CAAC,GAAG,EAAE;gBACzB,IAAI,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;oBAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;oBACf,OAAO;gBACT,CAAC;gBACD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC/B,MAAM,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;gBAC5C,MAAM,eAAe,GAAG,cAAc,GAAG,WAAW,CAAC;gBACrD,MAAM,IAAI,eAAe,GAAG,oBAAoB,CAAC;gBACjD,MAAM,IAAI,eAAe,GAAG,oBAAoB,CAAC;gBACjD,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;gBAClE,SAAS,GAAG,WAAW,CAAC;gBACxB,IACE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,GAAG;oBAChC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,GAAG,EAChC,CAAC;oBACD,OAAO,aAAa,EAAE,CAAC;gBACzB,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,aAAa,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,WAAW;IAAxB;QASS,iBAAY,GAAG,KAAK,CAAC;IAC9B,CAAC;IATQ,MAAM;QACX,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CAGF"}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.JSFPSMonitor = void 0;
|
|
4
|
-
var ErrorMessages_1 = require("../errors/ErrorMessages");
|
|
5
|
-
var roundToDecimalPlaces_1 = require("./roundToDecimalPlaces");
|
|
1
|
+
import { ErrorMessages } from "../errors/ErrorMessages";
|
|
2
|
+
import { roundToDecimalPlaces } from "./roundToDecimalPlaces";
|
|
6
3
|
/**
|
|
7
4
|
* Can be used to monitor JS thread performance
|
|
8
5
|
* Use startTracking() and stopAndGetData() to start and stop tracking
|
|
9
6
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var _this = this;
|
|
7
|
+
export class JSFPSMonitor {
|
|
8
|
+
constructor() {
|
|
13
9
|
this.startTime = 0;
|
|
14
10
|
this.frameCount = 0;
|
|
15
11
|
this.timeWindow = {
|
|
@@ -20,47 +16,45 @@ var JSFPSMonitor = /** @class */ (function () {
|
|
|
20
16
|
this.maxFPS = 0;
|
|
21
17
|
this.averageFPS = 0;
|
|
22
18
|
this.clearAnimationNumber = 0;
|
|
23
|
-
this.updateLoopCompute =
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
this.updateLoopCompute = () => {
|
|
20
|
+
this.frameCount++;
|
|
21
|
+
const elapsedTime = (Date.now() - this.startTime) / 1000;
|
|
22
|
+
this.averageFPS = elapsedTime > 0 ? this.frameCount / elapsedTime : 0;
|
|
23
|
+
this.timeWindow.frameCount++;
|
|
24
|
+
const timeWindowElapsedTime = (Date.now() - this.timeWindow.startTime) / 1000;
|
|
29
25
|
if (timeWindowElapsedTime >= 1) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
26
|
+
const timeWindowAverageFPS = this.timeWindow.frameCount / timeWindowElapsedTime;
|
|
27
|
+
this.minFPS = Math.min(this.minFPS, timeWindowAverageFPS);
|
|
28
|
+
this.maxFPS = Math.max(this.maxFPS, timeWindowAverageFPS);
|
|
29
|
+
this.timeWindow.frameCount = 0;
|
|
30
|
+
this.timeWindow.startTime = Date.now();
|
|
35
31
|
}
|
|
36
|
-
|
|
32
|
+
this.measureLoop();
|
|
37
33
|
};
|
|
38
34
|
}
|
|
39
|
-
|
|
35
|
+
measureLoop() {
|
|
40
36
|
// This looks weird but I'm avoiding a new closure
|
|
41
37
|
this.clearAnimationNumber = requestAnimationFrame(this.updateLoopCompute);
|
|
42
|
-
}
|
|
43
|
-
|
|
38
|
+
}
|
|
39
|
+
startTracking() {
|
|
44
40
|
if (this.startTime !== 0) {
|
|
45
|
-
throw new Error(
|
|
41
|
+
throw new Error(ErrorMessages.fpsMonitorAlreadyRunning);
|
|
46
42
|
}
|
|
47
43
|
this.startTime = Date.now();
|
|
48
44
|
this.timeWindow.startTime = Date.now();
|
|
49
45
|
this.measureLoop();
|
|
50
|
-
}
|
|
51
|
-
|
|
46
|
+
}
|
|
47
|
+
stopAndGetData() {
|
|
52
48
|
cancelAnimationFrame(this.clearAnimationNumber);
|
|
53
49
|
if (this.minFPS === Number.MAX_SAFE_INTEGER) {
|
|
54
50
|
this.minFPS = this.averageFPS;
|
|
55
51
|
this.maxFPS = this.averageFPS;
|
|
56
52
|
}
|
|
57
53
|
return {
|
|
58
|
-
minFPS:
|
|
59
|
-
maxFPS:
|
|
60
|
-
averageFPS:
|
|
54
|
+
minFPS: roundToDecimalPlaces(this.minFPS, 1),
|
|
55
|
+
maxFPS: roundToDecimalPlaces(this.maxFPS, 1),
|
|
56
|
+
averageFPS: roundToDecimalPlaces(this.averageFPS, 1),
|
|
61
57
|
};
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
}());
|
|
65
|
-
exports.JSFPSMonitor = JSFPSMonitor;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
66
60
|
//# sourceMappingURL=JSFPSMonitor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JSFPSMonitor.js","sourceRoot":"","sources":["../../src/benchmark/JSFPSMonitor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"JSFPSMonitor.js","sourceRoot":"","sources":["../../src/benchmark/JSFPSMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;GAGG;AACH,MAAM,OAAO,YAAY;IAAzB;QACU,cAAS,GAAG,CAAC,CAAC;QACd,eAAU,GAAG,CAAC,CAAC;QACf,eAAU,GAAG;YACnB,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,CAAC;SACb,CAAC;QAEM,WAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACjC,WAAM,GAAG,CAAC,CAAC;QACX,eAAU,GAAG,CAAC,CAAC;QAEf,yBAAoB,GAAG,CAAC,CAAC;QAOzB,sBAAiB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;YACzD,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAEtE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC7B,MAAM,qBAAqB,GACzB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;YAClD,IAAI,qBAAqB,IAAI,CAAC,EAAE,CAAC;gBAC/B,MAAM,oBAAoB,GACxB,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,qBAAqB,CAAC;gBACrD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;gBAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;gBAC1D,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC;gBAC/B,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,CAAC;IAuBJ,CAAC;IA7CS,WAAW;QACjB,kDAAkD;QAClD,IAAI,CAAC,oBAAoB,GAAG,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5E,CAAC;IAqBM,aAAa;QAClB,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEM,cAAc;QACnB,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAChC,CAAC;QACD,OAAO;YACL,MAAM,EAAE,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5C,MAAM,EAAE,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5C,UAAU,EAAE,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACrD,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.roundToDecimalPlaces = roundToDecimalPlaces;
|
|
4
|
-
function roundToDecimalPlaces(value, decimalPlaces) {
|
|
5
|
-
var multiplier = Math.pow(10, decimalPlaces);
|
|
1
|
+
export function roundToDecimalPlaces(value, decimalPlaces) {
|
|
2
|
+
const multiplier = 10 ** decimalPlaces;
|
|
6
3
|
return Math.round(value * multiplier) / multiplier;
|
|
7
4
|
}
|
|
8
5
|
//# sourceMappingURL=roundToDecimalPlaces.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roundToDecimalPlaces.js","sourceRoot":"","sources":["../../src/benchmark/roundToDecimalPlaces.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"roundToDecimalPlaces.js","sourceRoot":"","sources":["../../src/benchmark/roundToDecimalPlaces.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,aAAqB;IACvE,MAAM,UAAU,GAAG,EAAE,IAAI,aAAa,CAAC;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC;AACrD,CAAC"}
|
|
@@ -16,6 +16,11 @@ export interface BenchmarkParams {
|
|
|
16
16
|
* Blank area is negative when list is able to draw faster than the scroll speed.
|
|
17
17
|
*/
|
|
18
18
|
sumNegativeBlankAreaValues?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* When set to true, the benchmark will not start automatically.
|
|
21
|
+
* Use the returned startBenchmark function to trigger it manually.
|
|
22
|
+
*/
|
|
23
|
+
startManually?: boolean;
|
|
19
24
|
}
|
|
20
25
|
export interface BenchmarkResult {
|
|
21
26
|
js?: JSFPSResult;
|
|
@@ -28,6 +33,9 @@ export interface BenchmarkResult {
|
|
|
28
33
|
* Response object has a formatted string that can be printed to the console or shown as an alert.
|
|
29
34
|
* Result is posted to the callback method passed to the hook.
|
|
30
35
|
*/
|
|
31
|
-
export declare function useBenchmark(flashListRef: React.RefObject<FlashListRef<any>>, callback: (benchmarkResult: BenchmarkResult) => void, params?: BenchmarkParams):
|
|
36
|
+
export declare function useBenchmark(flashListRef: React.RefObject<FlashListRef<any>>, callback: (benchmarkResult: BenchmarkResult) => void, params?: BenchmarkParams): {
|
|
37
|
+
readonly startBenchmark: () => void;
|
|
38
|
+
readonly isBenchmarkRunning: boolean;
|
|
39
|
+
};
|
|
32
40
|
export declare function getFormattedString(res: BenchmarkResult): string;
|
|
33
41
|
//# sourceMappingURL=useBenchmark.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBenchmark.d.ts","sourceRoot":"","sources":["../../src/benchmark/useBenchmark.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"useBenchmark.d.ts","sourceRoot":"","sources":["../../src/benchmark/useBenchmark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C,OAAO,EAAgB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AAEH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAChD,QAAQ,EAAE,CAAC,eAAe,EAAE,eAAe,KAAK,IAAI,EACpD,MAAM,GAAE,eAAoB;;;EA+E7B;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,UAYtD"}
|
|
@@ -1,128 +1,119 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var tslib_1 = require("tslib");
|
|
6
|
-
var react_1 = require("react");
|
|
7
|
-
var ErrorMessages_1 = require("../errors/ErrorMessages");
|
|
8
|
-
var AutoScrollHelper_1 = require("./AutoScrollHelper");
|
|
9
|
-
var JSFPSMonitor_1 = require("./JSFPSMonitor");
|
|
1
|
+
import { useEffect, useState, useCallback, useRef } from "react";
|
|
2
|
+
import { ErrorMessages } from "../errors/ErrorMessages";
|
|
3
|
+
import { autoScroll, Cancellable } from "./AutoScrollHelper";
|
|
4
|
+
import { JSFPSMonitor } from "./JSFPSMonitor";
|
|
10
5
|
/**
|
|
11
6
|
* Runs the benchmark on FlashList.
|
|
12
7
|
* Response object has a formatted string that can be printed to the console or shown as an alert.
|
|
13
8
|
* Result is posted to the callback method passed to the hook.
|
|
14
9
|
*/
|
|
15
|
-
function useBenchmark(flashListRef, callback, params) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
export function useBenchmark(flashListRef, callback, params = {}) {
|
|
11
|
+
const [isBenchmarkRunning, setIsBenchmarkRunning] = useState(false);
|
|
12
|
+
const cancellableRef = useRef(null);
|
|
13
|
+
const startBenchmark = useCallback(() => {
|
|
19
14
|
var _a;
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
if (isBenchmarkRunning) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const cancellable = new Cancellable();
|
|
19
|
+
cancellableRef.current = cancellable;
|
|
20
|
+
const suggestions = [];
|
|
22
21
|
if (flashListRef.current) {
|
|
23
22
|
if (!(Number((_a = flashListRef.current.props.data) === null || _a === void 0 ? void 0 : _a.length) > 0)) {
|
|
24
|
-
throw new Error(
|
|
23
|
+
throw new Error(ErrorMessages.dataEmptyCannotRunBenchmark);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
setIsBenchmarkRunning(true);
|
|
27
|
+
const runBenchmark = async () => {
|
|
28
|
+
const jsFPSMonitor = new JSFPSMonitor();
|
|
29
|
+
jsFPSMonitor.startTracking();
|
|
30
|
+
for (let i = 0; i < (params.repeatCount || 1); i++) {
|
|
31
|
+
await runScrollBenchmark(flashListRef, cancellable, params.speedMultiplier || 1);
|
|
25
32
|
}
|
|
33
|
+
const jsProfilerResponse = jsFPSMonitor.stopAndGetData();
|
|
34
|
+
if (jsProfilerResponse.averageFPS < 35) {
|
|
35
|
+
suggestions.push(`Your average JS FPS is low. This can indicate that your components are doing too much work. Try to optimize your components and reduce re-renders if any`);
|
|
36
|
+
}
|
|
37
|
+
computeSuggestions(flashListRef, suggestions);
|
|
38
|
+
const result = generateResult(jsProfilerResponse, suggestions, cancellable);
|
|
39
|
+
if (!cancellable.isCancelled()) {
|
|
40
|
+
result.formattedString = getFormattedString(result);
|
|
41
|
+
}
|
|
42
|
+
callback(result);
|
|
43
|
+
setIsBenchmarkRunning(false);
|
|
44
|
+
};
|
|
45
|
+
runBenchmark();
|
|
46
|
+
}, [
|
|
47
|
+
callback,
|
|
48
|
+
flashListRef,
|
|
49
|
+
isBenchmarkRunning,
|
|
50
|
+
params.repeatCount,
|
|
51
|
+
params.speedMultiplier,
|
|
52
|
+
]);
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
if (params.startManually) {
|
|
55
|
+
return;
|
|
26
56
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
case 0:
|
|
32
|
-
jsFPSMonitor = new JSFPSMonitor_1.JSFPSMonitor();
|
|
33
|
-
jsFPSMonitor.startTracking();
|
|
34
|
-
i = 0;
|
|
35
|
-
_a.label = 1;
|
|
36
|
-
case 1:
|
|
37
|
-
if (!(i < (params.repeatCount || 1))) return [3 /*break*/, 4];
|
|
38
|
-
return [4 /*yield*/, runScrollBenchmark(flashListRef, cancellable, params.speedMultiplier || 1)];
|
|
39
|
-
case 2:
|
|
40
|
-
_a.sent();
|
|
41
|
-
_a.label = 3;
|
|
42
|
-
case 3:
|
|
43
|
-
i++;
|
|
44
|
-
return [3 /*break*/, 1];
|
|
45
|
-
case 4:
|
|
46
|
-
jsProfilerResponse = jsFPSMonitor.stopAndGetData();
|
|
47
|
-
if (jsProfilerResponse.averageFPS < 35) {
|
|
48
|
-
suggestions.push("Your average JS FPS is low. This can indicate that your components are doing too much work. Try to optimize your components and reduce re-renders if any");
|
|
49
|
-
}
|
|
50
|
-
computeSuggestions(flashListRef, suggestions);
|
|
51
|
-
result = generateResult(jsProfilerResponse, suggestions, cancellable);
|
|
52
|
-
if (!cancellable.isCancelled()) {
|
|
53
|
-
result.formattedString = getFormattedString(result);
|
|
54
|
-
}
|
|
55
|
-
callback(result);
|
|
56
|
-
return [2 /*return*/];
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
}); }, params.startDelayInMs || 3000);
|
|
60
|
-
return function () {
|
|
57
|
+
const cancelTimeout = setTimeout(() => {
|
|
58
|
+
startBenchmark();
|
|
59
|
+
}, params.startDelayInMs || 3000);
|
|
60
|
+
return () => {
|
|
61
61
|
clearTimeout(cancelTimeout);
|
|
62
|
-
|
|
62
|
+
if (cancellableRef.current) {
|
|
63
|
+
cancellableRef.current.cancel();
|
|
64
|
+
}
|
|
63
65
|
};
|
|
64
66
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
65
67
|
}, []);
|
|
68
|
+
return { startBenchmark, isBenchmarkRunning };
|
|
66
69
|
}
|
|
67
|
-
function getFormattedString(res) {
|
|
70
|
+
export function getFormattedString(res) {
|
|
68
71
|
var _a, _b, _c;
|
|
69
|
-
return (
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
?
|
|
73
|
-
.map(
|
|
74
|
-
.join("\n")
|
|
75
|
-
:
|
|
72
|
+
return (`Results:\n\n` +
|
|
73
|
+
`JS FPS: Avg: ${(_a = res.js) === null || _a === void 0 ? void 0 : _a.averageFPS} | Min: ${(_b = res.js) === null || _b === void 0 ? void 0 : _b.minFPS} | Max: ${(_c = res.js) === null || _c === void 0 ? void 0 : _c.maxFPS}\n\n` +
|
|
74
|
+
`${res.suggestions.length > 0
|
|
75
|
+
? `Suggestions:\n\n${res.suggestions
|
|
76
|
+
.map((value, index) => `${index + 1}. ${value}`)
|
|
77
|
+
.join("\n")}`
|
|
78
|
+
: ``}`);
|
|
76
79
|
}
|
|
77
80
|
function generateResult(jsProfilerResponse, suggestions, cancellable) {
|
|
78
81
|
return {
|
|
79
82
|
js: jsProfilerResponse,
|
|
80
|
-
suggestions
|
|
83
|
+
suggestions,
|
|
81
84
|
interrupted: cancellable.isCancelled(),
|
|
82
85
|
};
|
|
83
86
|
}
|
|
84
87
|
/**
|
|
85
88
|
* Scrolls to the end of the list and then back to the top
|
|
86
89
|
*/
|
|
87
|
-
function runScrollBenchmark(flashListRef, cancellable, scrollSpeedMultiplier) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
};
|
|
110
|
-
return [4 /*yield*/, (0, AutoScrollHelper_1.autoScroll)(scrollNow, fromX, fromY, toX, toY, scrollSpeedMultiplier, cancellable)];
|
|
111
|
-
case 1:
|
|
112
|
-
_a.sent();
|
|
113
|
-
return [4 /*yield*/, (0, AutoScrollHelper_1.autoScroll)(scrollNow, toX, toY, fromX, fromY, scrollSpeedMultiplier, cancellable)];
|
|
114
|
-
case 2:
|
|
115
|
-
_a.sent();
|
|
116
|
-
_a.label = 3;
|
|
117
|
-
case 3: return [2 /*return*/];
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
});
|
|
90
|
+
async function runScrollBenchmark(flashListRef, cancellable, scrollSpeedMultiplier) {
|
|
91
|
+
if (flashListRef.current) {
|
|
92
|
+
const horizontal = flashListRef.current.props.horizontal;
|
|
93
|
+
const rv = flashListRef.current;
|
|
94
|
+
if (rv) {
|
|
95
|
+
const rvSize = rv.getWindowSize();
|
|
96
|
+
const rvContentSize = rv.getChildContainerDimensions();
|
|
97
|
+
const fromX = 0;
|
|
98
|
+
const fromY = 0;
|
|
99
|
+
const toX = rvContentSize.width - rvSize.width;
|
|
100
|
+
const toY = rvContentSize.height - rvSize.height;
|
|
101
|
+
const scrollNow = (x, y) => {
|
|
102
|
+
var _a;
|
|
103
|
+
(_a = flashListRef.current) === null || _a === void 0 ? void 0 : _a.scrollToOffset({
|
|
104
|
+
offset: horizontal ? x : y,
|
|
105
|
+
animated: false,
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
await autoScroll(scrollNow, fromX, fromY, toX, toY, scrollSpeedMultiplier, cancellable);
|
|
109
|
+
await autoScroll(scrollNow, toX, toY, fromX, fromY, scrollSpeedMultiplier, cancellable);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
121
112
|
}
|
|
122
113
|
function computeSuggestions(flashListRef, suggestions) {
|
|
123
114
|
if (flashListRef.current) {
|
|
124
115
|
if (flashListRef.current.props.data.length < 200) {
|
|
125
|
-
suggestions.push(
|
|
116
|
+
suggestions.push(`Data count is low. Try to increase it to a large number (e.g 200) using the 'useDataMultiplier' hook.`);
|
|
126
117
|
}
|
|
127
118
|
}
|
|
128
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBenchmark.js","sourceRoot":"","sources":["../../src/benchmark/useBenchmark.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useBenchmark.js","sourceRoot":"","sources":["../../src/benchmark/useBenchmark.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAe,MAAM,gBAAgB,CAAC;AAmC3D;;;;GAIG;AAEH,MAAM,UAAU,YAAY,CAC1B,YAAgD,EAChD,QAAoD,EACpD,SAA0B,EAAE;IAE5B,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAExD,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;;QACtC,IAAI,kBAAkB,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACtC,cAAc,CAAC,OAAO,GAAG,WAAW,CAAC;QACrC,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,CAAC,MAAM,CAAC,MAAA,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,0CAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAE5B,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;YAC9B,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;YACxC,YAAY,CAAC,aAAa,EAAE,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,MAAM,kBAAkB,CACtB,YAAY,EACZ,WAAW,EACX,MAAM,CAAC,eAAe,IAAI,CAAC,CAC5B,CAAC;YACJ,CAAC;YACD,MAAM,kBAAkB,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;YACzD,IAAI,kBAAkB,CAAC,UAAU,GAAG,EAAE,EAAE,CAAC;gBACvC,WAAW,CAAC,IAAI,CACd,0JAA0J,CAC3J,CAAC;YACJ,CAAC;YACD,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAoB,cAAc,CAC5C,kBAAkB,EAClB,WAAW,EACX,WAAW,CACZ,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC/B,MAAM,CAAC,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACtD,CAAC;YACD,QAAQ,CAAC,MAAM,CAAC,CAAC;YACjB,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,YAAY,EAAE,CAAC;IACjB,CAAC,EAAE;QACD,QAAQ;QACR,YAAY;QACZ,kBAAkB;QAClB,MAAM,CAAC,WAAW;QAClB,MAAM,CAAC,eAAe;KACvB,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,cAAc,EAAE,CAAC;QACnB,CAAC,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC;QAElC,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC3B,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAClC,CAAC;QACH,CAAC,CAAC;QACF,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAW,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAoB;;IACrD,OAAO,CACL,cAAc;QACd,gBAAgB,MAAA,GAAG,CAAC,EAAE,0CAAE,UAAU,WAAW,MAAA,GAAG,CAAC,EAAE,0CAAE,MAAM,WAAW,MAAA,GAAG,CAAC,EAAE,0CAAE,MAAM,MAAM;QAC1F,GACE,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACxB,CAAC,CAAC,mBAAmB,GAAG,CAAC,WAAW;iBAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;iBAC/C,IAAI,CAAC,IAAI,CAAC,EAAE;YACjB,CAAC,CAAC,EACN,EAAE,CACH,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,kBAA+B,EAC/B,WAAqB,EACrB,WAAwB;IAExB,OAAO;QACL,EAAE,EAAE,kBAAkB;QACtB,WAAW;QACX,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE;KACvC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,YAAmE,EACnE,WAAwB,EACxB,qBAA6B;IAE7B,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;QACzD,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC;QAChC,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;YAClC,MAAM,aAAa,GAAG,EAAE,CAAC,2BAA2B,EAAE,CAAC;YAEvD,MAAM,KAAK,GAAG,CAAC,CAAC;YAChB,MAAM,KAAK,GAAG,CAAC,CAAC;YAChB,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC/C,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAEjD,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;;gBACzC,MAAA,YAAY,CAAC,OAAO,0CAAE,cAAc,CAAC;oBACnC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1B,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAC;YACL,CAAC,CAAC;YAEF,MAAM,UAAU,CACd,SAAS,EACT,KAAK,EACL,KAAK,EACL,GAAG,EACH,GAAG,EACH,qBAAqB,EACrB,WAAW,CACZ,CAAC;YACF,MAAM,UAAU,CACd,SAAS,EACT,GAAG,EACH,GAAG,EACH,KAAK,EACL,KAAK,EACL,qBAAqB,EACrB,WAAW,CACZ,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,YAAmE,EACnE,WAAqB;IAErB,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QACzB,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACnD,WAAW,CAAC,IAAI,CACd,uGAAuG,CACxG,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useDataMultiplier = useDataMultiplier;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
1
|
/**
|
|
6
2
|
* Increases the data size by duplicating it, it's kept in hook format so that in future we can add auto pagination support.
|
|
7
3
|
* If you're using this with FlatList then make sure you remove `keyExtractor` because this method might duplicate ids that might be in the data.
|
|
@@ -9,15 +5,15 @@ var tslib_1 = require("tslib");
|
|
|
9
5
|
* @param count Final count of data to be returned from this hook
|
|
10
6
|
* @returns Multiplied data.
|
|
11
7
|
*/
|
|
12
|
-
function useDataMultiplier(data, count) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
export function useDataMultiplier(data, count) {
|
|
9
|
+
const len = data.length;
|
|
10
|
+
const arr = new Array(count);
|
|
11
|
+
let isObject = false;
|
|
16
12
|
if (typeof data[0] === "object") {
|
|
17
13
|
isObject = true;
|
|
18
14
|
}
|
|
19
|
-
for (
|
|
20
|
-
arr[i] = isObject ?
|
|
15
|
+
for (let i = 0; i < count; i++) {
|
|
16
|
+
arr[i] = isObject ? { ...data[i % len] } : data[i % len];
|
|
21
17
|
}
|
|
22
18
|
return [arr];
|
|
23
19
|
}
|