@shopify/flash-list 2.0.4-alpha.1 → 2.2.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 +41 -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.js +1 -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 +134 -111
- 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.js +138 -167
- 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.d.ts +2 -0
- package/dist/recyclerview/ViewHolder.d.ts.map +1 -1
- package/dist/recyclerview/ViewHolder.js +19 -21
- package/dist/recyclerview/ViewHolder.js.map +1 -1
- package/dist/recyclerview/ViewHolderCollection.d.ts +4 -0
- package/dist/recyclerview/ViewHolderCollection.d.ts.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.d.ts +5 -1
- package/dist/recyclerview/components/StickyHeaders.d.ts.map +1 -1
- package/dist/recyclerview/components/StickyHeaders.js +77 -51
- 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.js +16 -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.d.ts +2 -0
- package/dist/recyclerview/hooks/useSecondaryProps.d.ts.map +1 -1
- package/dist/recyclerview/hooks/useSecondaryProps.js +39 -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 +51 -1
- package/src/benchmark/useBenchmark.ts +47 -4
- package/src/benchmark/useFlatListBenchmark.ts +38 -5
- package/src/recyclerview/RecyclerView.tsx +42 -8
- package/src/recyclerview/ViewHolder.tsx +6 -1
- package/src/recyclerview/ViewHolderCollection.tsx +10 -0
- package/src/recyclerview/components/StickyHeaders.tsx +54 -13
- package/src/recyclerview/hooks/useRecyclerViewController.tsx +7 -4
- package/src/recyclerview/hooks/useSecondaryProps.tsx +23 -0
- 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__/RecyclerViewManager.test.d.ts +0 -2
- package/dist/__tests__/RecyclerViewManager.test.d.ts.map +0 -1
- package/dist/__tests__/RecyclerViewManager.test.js +0 -56
- package/dist/__tests__/RecyclerViewManager.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__/RecyclerViewManager.test.ts +0 -74
- 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,20 +1,16 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Interface of layout manager for app's listviews
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var findVisibleIndex_1 = require("../utils/findVisibleIndex");
|
|
9
|
-
var measureLayout_1 = require("../utils/measureLayout");
|
|
10
|
-
var ErrorMessages_1 = require("../../errors/ErrorMessages");
|
|
2
|
+
import { MultiTypeAverageWindow } from "../../utils/AverageWindow";
|
|
3
|
+
import { ConsecutiveNumbers } from "../helpers/ConsecutiveNumbers";
|
|
4
|
+
import { findFirstVisibleIndex, findLastVisibleIndex, } from "../utils/findVisibleIndex";
|
|
5
|
+
import { areDimensionsNotEqual } from "../utils/measureLayout";
|
|
6
|
+
import { ErrorMessages } from "../../errors/ErrorMessages";
|
|
11
7
|
/**
|
|
12
8
|
* Base abstract class for layout managers in the recycler view system.
|
|
13
9
|
* Provides common functionality for managing item layouts and dimensions.
|
|
14
10
|
* Supports both horizontal and vertical layouts with dynamic item sizing.
|
|
15
11
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
export class RVLayoutManager {
|
|
13
|
+
constructor(params, previousLayoutManager) {
|
|
18
14
|
var _a, _b;
|
|
19
15
|
/** Flag indicating if the layout requires repainting */
|
|
20
16
|
this.requiresRepaint = false;
|
|
@@ -31,8 +27,8 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
31
27
|
* Used to determine if a layout needs to be recomputed.
|
|
32
28
|
*/
|
|
33
29
|
this.lastSkippedLayoutIndex = Number.MAX_VALUE;
|
|
34
|
-
this.heightAverageWindow = new
|
|
35
|
-
this.widthAverageWindow = new
|
|
30
|
+
this.heightAverageWindow = new MultiTypeAverageWindow(5, 200);
|
|
31
|
+
this.widthAverageWindow = new MultiTypeAverageWindow(5, 200);
|
|
36
32
|
this.getItemType = params.getItemType;
|
|
37
33
|
this.overrideItemLayout = params.overrideItemLayout;
|
|
38
34
|
this.layouts = (_a = previousLayoutManager === null || previousLayoutManager === void 0 ? void 0 : previousLayoutManager.layouts) !== null && _a !== void 0 ? _a : [];
|
|
@@ -50,31 +46,31 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
50
46
|
* @param index Index of the item
|
|
51
47
|
* @returns Estimated width
|
|
52
48
|
*/
|
|
53
|
-
|
|
49
|
+
getEstimatedWidth(index) {
|
|
54
50
|
return this.widthAverageWindow.getCurrentValue(this.getItemType(index));
|
|
55
|
-
}
|
|
51
|
+
}
|
|
56
52
|
/**
|
|
57
53
|
* Gets the estimated height for an item based on its type.
|
|
58
54
|
* @param index Index of the item
|
|
59
55
|
* @returns Estimated height
|
|
60
56
|
*/
|
|
61
|
-
|
|
57
|
+
getEstimatedHeight(index) {
|
|
62
58
|
return this.heightAverageWindow.getCurrentValue(this.getItemType(index));
|
|
63
|
-
}
|
|
59
|
+
}
|
|
64
60
|
/**
|
|
65
61
|
* Checks if the layout is horizontal.
|
|
66
62
|
* @returns True if horizontal, false if vertical
|
|
67
63
|
*/
|
|
68
|
-
|
|
64
|
+
isHorizontal() {
|
|
69
65
|
return this.horizontal;
|
|
70
|
-
}
|
|
66
|
+
}
|
|
71
67
|
/**
|
|
72
68
|
* Gets the dimensions of the visible window.
|
|
73
69
|
* @returns Window dimensions
|
|
74
70
|
*/
|
|
75
|
-
|
|
71
|
+
getWindowsSize() {
|
|
76
72
|
return this.windowSize;
|
|
77
|
-
}
|
|
73
|
+
}
|
|
78
74
|
/**
|
|
79
75
|
* Gets indices of items currently visible in the viewport.
|
|
80
76
|
* Uses binary search for efficient lookup.
|
|
@@ -82,52 +78,41 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
82
78
|
* @param unboundDimensionEnd End position of viewport (end X or end Y)
|
|
83
79
|
* @returns ConsecutiveNumbers containing visible indices
|
|
84
80
|
*/
|
|
85
|
-
|
|
81
|
+
getVisibleLayouts(unboundDimensionStart, unboundDimensionEnd) {
|
|
86
82
|
// Find the first visible index
|
|
87
|
-
|
|
83
|
+
const firstVisibleIndex = findFirstVisibleIndex(this.layouts, unboundDimensionStart, this.horizontal);
|
|
88
84
|
// Find the last visible index
|
|
89
|
-
|
|
85
|
+
const lastVisibleIndex = findLastVisibleIndex(this.layouts, unboundDimensionEnd, this.horizontal);
|
|
90
86
|
// Collect the indices in the range
|
|
91
87
|
if (firstVisibleIndex !== -1 && lastVisibleIndex !== -1) {
|
|
92
|
-
return new
|
|
88
|
+
return new ConsecutiveNumbers(firstVisibleIndex, lastVisibleIndex);
|
|
93
89
|
}
|
|
94
|
-
return
|
|
95
|
-
}
|
|
90
|
+
return ConsecutiveNumbers.EMPTY;
|
|
91
|
+
}
|
|
96
92
|
/**
|
|
97
93
|
* Removes layout information for specified indices and recomputes layout.
|
|
98
94
|
* @param indices Array of indices to remove
|
|
99
95
|
*/
|
|
100
|
-
|
|
101
|
-
var e_1, _a;
|
|
96
|
+
deleteLayout(indices) {
|
|
102
97
|
// Sort indices in descending order
|
|
103
|
-
indices.sort(
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
var index = indices_1_1.value;
|
|
108
|
-
this.layouts.splice(index, 1);
|
|
109
|
-
}
|
|
98
|
+
indices.sort((num1, num2) => num2 - num1);
|
|
99
|
+
// Remove elements from the array
|
|
100
|
+
for (const index of indices) {
|
|
101
|
+
this.layouts.splice(index, 1);
|
|
110
102
|
}
|
|
111
|
-
|
|
112
|
-
finally {
|
|
113
|
-
try {
|
|
114
|
-
if (indices_1_1 && !indices_1_1.done && (_a = indices_1.return)) _a.call(indices_1);
|
|
115
|
-
}
|
|
116
|
-
finally { if (e_1) throw e_1.error; }
|
|
117
|
-
}
|
|
118
|
-
var startIndex = Math.min.apply(Math, tslib_1.__spreadArray([], tslib_1.__read(indices), false));
|
|
103
|
+
const startIndex = Math.min(...indices);
|
|
119
104
|
// Recompute layouts starting from the smallest index in the original indices array
|
|
120
105
|
this._recomputeLayouts(this.getMinRecomputeIndex(startIndex), this.getMaxRecomputeIndex(startIndex));
|
|
121
|
-
}
|
|
106
|
+
}
|
|
122
107
|
/**
|
|
123
108
|
* Updates layout information for items and recomputes layout if necessary.
|
|
124
109
|
* @param layoutInfo Array of layout information for items (real measurements)
|
|
125
110
|
* @param totalItemCount Total number of items in the list
|
|
126
111
|
*/
|
|
127
|
-
|
|
112
|
+
modifyLayout(layoutInfo, totalItemCount) {
|
|
128
113
|
var _a;
|
|
129
114
|
this.maxItemsToProcess = Math.max(this.maxItemsToProcess, layoutInfo.length * 10);
|
|
130
|
-
|
|
115
|
+
let minRecomputeIndex = Number.MAX_VALUE;
|
|
131
116
|
if (this.layouts.length > totalItemCount) {
|
|
132
117
|
this.layouts.length = totalItemCount;
|
|
133
118
|
this.spanTracker.length = totalItemCount;
|
|
@@ -136,10 +121,10 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
136
121
|
// update average windows
|
|
137
122
|
minRecomputeIndex = Math.min(minRecomputeIndex, this.computeEstimatesAndMinMaxChangedLayout(layoutInfo));
|
|
138
123
|
if (this.layouts.length < totalItemCount && totalItemCount > 0) {
|
|
139
|
-
|
|
124
|
+
const startIndex = this.layouts.length;
|
|
140
125
|
this.layouts.length = totalItemCount;
|
|
141
126
|
this.spanTracker.length = totalItemCount;
|
|
142
|
-
for (
|
|
127
|
+
for (let i = startIndex; i < totalItemCount; i++) {
|
|
143
128
|
this.getLayout(i);
|
|
144
129
|
this.getSpan(i);
|
|
145
130
|
}
|
|
@@ -148,22 +133,22 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
148
133
|
// compute minRecomputeIndex
|
|
149
134
|
minRecomputeIndex = Math.min(minRecomputeIndex, this.lastSkippedLayoutIndex, this.computeMinIndexWithChangedSpan(layoutInfo), (_a = this.processLayoutInfo(layoutInfo, totalItemCount)) !== null && _a !== void 0 ? _a : minRecomputeIndex, this.computeEstimatesAndMinMaxChangedLayout(layoutInfo));
|
|
150
135
|
if (minRecomputeIndex >= 0 && minRecomputeIndex < totalItemCount) {
|
|
151
|
-
|
|
136
|
+
const maxRecomputeIndex = this.getMaxRecomputeIndex(minRecomputeIndex);
|
|
152
137
|
this._recomputeLayouts(minRecomputeIndex, maxRecomputeIndex);
|
|
153
138
|
}
|
|
154
139
|
this.currentMaxIndexWithChangedLayout = -1;
|
|
155
|
-
}
|
|
140
|
+
}
|
|
156
141
|
/**
|
|
157
142
|
* Gets layout information for an item at the given index.
|
|
158
143
|
* Creates and initializes a new layout if one doesn't exist.
|
|
159
144
|
* @param index Index of the item
|
|
160
145
|
* @returns Layout information for the item
|
|
161
146
|
*/
|
|
162
|
-
|
|
147
|
+
getLayout(index) {
|
|
163
148
|
if (index >= this.layouts.length) {
|
|
164
|
-
throw new Error(
|
|
149
|
+
throw new Error(ErrorMessages.indexOutOfBounds);
|
|
165
150
|
}
|
|
166
|
-
|
|
151
|
+
let layout = this.layouts[index];
|
|
167
152
|
if (!layout) {
|
|
168
153
|
// Create new layout with estimated dimensions
|
|
169
154
|
layout = {
|
|
@@ -178,22 +163,22 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
178
163
|
this.estimateLayout(index);
|
|
179
164
|
}
|
|
180
165
|
return layout;
|
|
181
|
-
}
|
|
166
|
+
}
|
|
182
167
|
/**
|
|
183
168
|
* Updates layout parameters and triggers recomputation if necessary.
|
|
184
169
|
* @param params New layout parameters
|
|
185
170
|
*/
|
|
186
|
-
|
|
171
|
+
updateLayoutParams(params) {
|
|
187
172
|
var _a, _b, _c;
|
|
188
173
|
this.windowSize = params.windowSize;
|
|
189
174
|
this.horizontal = (_a = params.horizontal) !== null && _a !== void 0 ? _a : this.horizontal;
|
|
190
175
|
this.maxColumns = (_b = params.maxColumns) !== null && _b !== void 0 ? _b : this.maxColumns;
|
|
191
176
|
this.optimizeItemArrangement =
|
|
192
177
|
(_c = params.optimizeItemArrangement) !== null && _c !== void 0 ? _c : this.optimizeItemArrangement;
|
|
193
|
-
}
|
|
194
|
-
|
|
178
|
+
}
|
|
179
|
+
getLayoutCount() {
|
|
195
180
|
return this.layouts.length;
|
|
196
|
-
}
|
|
181
|
+
}
|
|
197
182
|
/**
|
|
198
183
|
* Gets span for an item, applying any overrides.
|
|
199
184
|
* This is intended to be called during a relayout call. The value is tracked and used to determine if a span change has occurred.
|
|
@@ -203,40 +188,39 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
203
188
|
* @param index Index of the item
|
|
204
189
|
* @returns Span for the item
|
|
205
190
|
*/
|
|
206
|
-
|
|
191
|
+
getSpan(index, skipTracking = false) {
|
|
207
192
|
var _a;
|
|
208
|
-
if (skipTracking === void 0) { skipTracking = false; }
|
|
209
193
|
this.spanSizeInfo.span = undefined;
|
|
210
194
|
this.overrideItemLayout(index, this.spanSizeInfo);
|
|
211
|
-
|
|
195
|
+
const span = Math.min((_a = this.spanSizeInfo.span) !== null && _a !== void 0 ? _a : 1, this.maxColumns);
|
|
212
196
|
if (!skipTracking) {
|
|
213
197
|
this.spanTracker[index] = span;
|
|
214
198
|
}
|
|
215
199
|
return span;
|
|
216
|
-
}
|
|
200
|
+
}
|
|
217
201
|
/**
|
|
218
202
|
* Method to handle span change for an item. Can be overridden by subclasses.
|
|
219
203
|
* @param index Index of the item
|
|
220
204
|
*/
|
|
221
|
-
|
|
205
|
+
handleSpanChange(index) { }
|
|
222
206
|
/**
|
|
223
207
|
* Gets the maximum index to process in a single layout pass.
|
|
224
208
|
* @param startIndex Starting index
|
|
225
209
|
* @returns Maximum index to process
|
|
226
210
|
*/
|
|
227
|
-
|
|
211
|
+
getMaxRecomputeIndex(startIndex) {
|
|
228
212
|
return Math.min(Math.max(startIndex, this.currentMaxIndexWithChangedLayout) +
|
|
229
213
|
this.maxItemsToProcess, this.layouts.length - 1);
|
|
230
|
-
}
|
|
214
|
+
}
|
|
231
215
|
/**
|
|
232
216
|
* Gets the minimum index to process in a single layout pass.
|
|
233
217
|
* @param startIndex Starting index
|
|
234
218
|
* @returns Minimum index to process
|
|
235
219
|
*/
|
|
236
|
-
|
|
220
|
+
getMinRecomputeIndex(startIndex) {
|
|
237
221
|
return startIndex;
|
|
238
|
-
}
|
|
239
|
-
|
|
222
|
+
}
|
|
223
|
+
_recomputeLayouts(startIndex, endIndex) {
|
|
240
224
|
this.recomputeLayouts(startIndex, endIndex);
|
|
241
225
|
if (this.lastSkippedLayoutIndex >= startIndex &&
|
|
242
226
|
this.lastSkippedLayoutIndex <= endIndex) {
|
|
@@ -244,7 +228,7 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
244
228
|
}
|
|
245
229
|
if (endIndex + 1 < this.layouts.length) {
|
|
246
230
|
this.lastSkippedLayoutIndex = Math.min(endIndex + 1, this.lastSkippedLayoutIndex);
|
|
247
|
-
|
|
231
|
+
const lastIndex = this.layouts.length - 1;
|
|
248
232
|
// Since layout managers derive height from last indices we need to make
|
|
249
233
|
// sure they're not too much out of sync.
|
|
250
234
|
if (this.layouts[lastIndex].y < this.layouts[endIndex].y) {
|
|
@@ -252,68 +236,44 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
252
236
|
this.lastSkippedLayoutIndex = Number.MAX_VALUE;
|
|
253
237
|
}
|
|
254
238
|
}
|
|
255
|
-
}
|
|
239
|
+
}
|
|
256
240
|
/**
|
|
257
241
|
* Computes size estimates and finds the minimum recompute index.
|
|
258
242
|
* @param layoutInfo Array of layout information for items
|
|
259
243
|
* @returns Minimum index that needs recomputation
|
|
260
244
|
*/
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
(0, measureLayout_1.areDimensionsNotEqual)(storedLayout.width, dimensions.width)) {
|
|
275
|
-
minRecomputeIndex = Math.min(minRecomputeIndex, index);
|
|
276
|
-
this.currentMaxIndexWithChangedLayout = Math.max(this.currentMaxIndexWithChangedLayout, index);
|
|
277
|
-
}
|
|
278
|
-
this.heightAverageWindow.addValue(dimensions.height, this.getItemType(index));
|
|
279
|
-
this.widthAverageWindow.addValue(dimensions.width, this.getItemType(index));
|
|
245
|
+
computeEstimatesAndMinMaxChangedLayout(layoutInfo) {
|
|
246
|
+
let minRecomputeIndex = Number.MAX_VALUE;
|
|
247
|
+
for (const info of layoutInfo) {
|
|
248
|
+
const { index, dimensions } = info;
|
|
249
|
+
const storedLayout = this.layouts[index];
|
|
250
|
+
if (index >= this.lastSkippedLayoutIndex ||
|
|
251
|
+
!storedLayout ||
|
|
252
|
+
!storedLayout.isHeightMeasured ||
|
|
253
|
+
!storedLayout.isWidthMeasured ||
|
|
254
|
+
areDimensionsNotEqual(storedLayout.height, dimensions.height) ||
|
|
255
|
+
areDimensionsNotEqual(storedLayout.width, dimensions.width)) {
|
|
256
|
+
minRecomputeIndex = Math.min(minRecomputeIndex, index);
|
|
257
|
+
this.currentMaxIndexWithChangedLayout = Math.max(this.currentMaxIndexWithChangedLayout, index);
|
|
280
258
|
}
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
finally {
|
|
284
|
-
try {
|
|
285
|
-
if (layoutInfo_1_1 && !layoutInfo_1_1.done && (_a = layoutInfo_1.return)) _a.call(layoutInfo_1);
|
|
286
|
-
}
|
|
287
|
-
finally { if (e_2) throw e_2.error; }
|
|
259
|
+
this.heightAverageWindow.addValue(dimensions.height, this.getItemType(index));
|
|
260
|
+
this.widthAverageWindow.addValue(dimensions.width, this.getItemType(index));
|
|
288
261
|
}
|
|
289
262
|
return minRecomputeIndex;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
this.spanTracker[index] = span;
|
|
302
|
-
this.handleSpanChange(index);
|
|
303
|
-
minIndexWithChangedSpan = Math.min(minIndexWithChangedSpan, index);
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
308
|
-
finally {
|
|
309
|
-
try {
|
|
310
|
-
if (layoutInfo_2_1 && !layoutInfo_2_1.done && (_a = layoutInfo_2.return)) _a.call(layoutInfo_2);
|
|
263
|
+
}
|
|
264
|
+
computeMinIndexWithChangedSpan(layoutInfo) {
|
|
265
|
+
let minIndexWithChangedSpan = Number.MAX_VALUE;
|
|
266
|
+
for (const info of layoutInfo) {
|
|
267
|
+
const { index } = info;
|
|
268
|
+
const span = this.getSpan(index, true);
|
|
269
|
+
const storedSpan = this.spanTracker[index];
|
|
270
|
+
if (span !== storedSpan) {
|
|
271
|
+
this.spanTracker[index] = span;
|
|
272
|
+
this.handleSpanChange(index);
|
|
273
|
+
minIndexWithChangedSpan = Math.min(minIndexWithChangedSpan, index);
|
|
311
274
|
}
|
|
312
|
-
finally { if (e_3) throw e_3.error; }
|
|
313
275
|
}
|
|
314
276
|
return minIndexWithChangedSpan;
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
}());
|
|
318
|
-
exports.RVLayoutManager = RVLayoutManager;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
319
279
|
//# sourceMappingURL=LayoutManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LayoutManager.js","sourceRoot":"","sources":["../../../src/recyclerview/layout-managers/LayoutManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LayoutManager.js","sourceRoot":"","sources":["../../../src/recyclerview/layout-managers/LayoutManager.ts"],"names":[],"mappings":"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"}
|