@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,28 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RVGridLayoutManagerImpl = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
|
-
var LayoutManager_1 = require("./LayoutManager");
|
|
1
|
+
import { RVLayoutManager, } from "./LayoutManager";
|
|
6
2
|
/**
|
|
7
3
|
* GridLayoutManager implementation that arranges items in a grid pattern.
|
|
8
4
|
* Items are placed in rows and columns, with support for items spanning multiple columns.
|
|
9
5
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var _this = _super.call(this, params, previousLayoutManager) || this;
|
|
6
|
+
export class RVGridLayoutManagerImpl extends RVLayoutManager {
|
|
7
|
+
constructor(params, previousLayoutManager) {
|
|
8
|
+
super(params, previousLayoutManager);
|
|
14
9
|
/** If there's a span change for grid layout, we need to recompute all the widths */
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return _this;
|
|
10
|
+
this.fullRelayoutRequired = false;
|
|
11
|
+
this.boundedSize = params.windowSize.width;
|
|
18
12
|
}
|
|
19
13
|
/**
|
|
20
14
|
* Updates layout parameters and triggers recomputation if necessary.
|
|
21
15
|
* @param params New layout parameters
|
|
22
16
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
updateLayoutParams(params) {
|
|
18
|
+
const prevNumColumns = this.maxColumns;
|
|
19
|
+
super.updateLayoutParams(params);
|
|
26
20
|
if (this.boundedSize !== params.windowSize.width ||
|
|
27
21
|
prevNumColumns !== params.maxColumns) {
|
|
28
22
|
this.boundedSize = params.windowSize.width;
|
|
@@ -33,30 +27,19 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
33
27
|
this.requiresRepaint = true;
|
|
34
28
|
}
|
|
35
29
|
}
|
|
36
|
-
}
|
|
30
|
+
}
|
|
37
31
|
/**
|
|
38
32
|
* Processes layout information for items, updating their dimensions.
|
|
39
33
|
* @param layoutInfo Array of layout information for items
|
|
40
34
|
* @param itemCount Total number of items in the list
|
|
41
35
|
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
layout.height = dimensions.height;
|
|
50
|
-
layout.isHeightMeasured = true;
|
|
51
|
-
layout.isWidthMeasured = true;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
55
|
-
finally {
|
|
56
|
-
try {
|
|
57
|
-
if (layoutInfo_1_1 && !layoutInfo_1_1.done && (_a = layoutInfo_1.return)) _a.call(layoutInfo_1);
|
|
58
|
-
}
|
|
59
|
-
finally { if (e_1) throw e_1.error; }
|
|
36
|
+
processLayoutInfo(layoutInfo, itemCount) {
|
|
37
|
+
for (const info of layoutInfo) {
|
|
38
|
+
const { index, dimensions } = info;
|
|
39
|
+
const layout = this.layouts[index];
|
|
40
|
+
layout.height = dimensions.height;
|
|
41
|
+
layout.isHeightMeasured = true;
|
|
42
|
+
layout.isWidthMeasured = true;
|
|
60
43
|
}
|
|
61
44
|
// TODO: Can be optimized
|
|
62
45
|
if (this.fullRelayoutRequired) {
|
|
@@ -64,52 +47,52 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
64
47
|
this.fullRelayoutRequired = false;
|
|
65
48
|
return 0;
|
|
66
49
|
}
|
|
67
|
-
}
|
|
50
|
+
}
|
|
68
51
|
/**
|
|
69
52
|
* Estimates layout dimensions for an item at the given index.
|
|
70
53
|
* @param index Index of the item to estimate layout for
|
|
71
54
|
*/
|
|
72
|
-
|
|
73
|
-
|
|
55
|
+
estimateLayout(index) {
|
|
56
|
+
const layout = this.layouts[index];
|
|
74
57
|
layout.width = this.getWidth(index);
|
|
75
58
|
layout.height = this.getEstimatedHeight(index);
|
|
76
59
|
layout.isWidthMeasured = true;
|
|
77
60
|
layout.enforcedWidth = true;
|
|
78
|
-
}
|
|
61
|
+
}
|
|
79
62
|
/**
|
|
80
63
|
* Handles span change for an item.
|
|
81
64
|
* @param index Index of the item
|
|
82
65
|
*/
|
|
83
|
-
|
|
66
|
+
handleSpanChange(index) {
|
|
84
67
|
this.fullRelayoutRequired = true;
|
|
85
|
-
}
|
|
68
|
+
}
|
|
86
69
|
/**
|
|
87
70
|
* Returns the total size of the layout area.
|
|
88
71
|
* @returns RVDimension containing width and height of the layout
|
|
89
72
|
*/
|
|
90
|
-
|
|
73
|
+
getLayoutSize() {
|
|
91
74
|
if (this.layouts.length === 0)
|
|
92
75
|
return { width: 0, height: 0 };
|
|
93
|
-
|
|
76
|
+
const totalHeight = this.computeTotalHeightTillRow(this.layouts.length - 1);
|
|
94
77
|
return {
|
|
95
78
|
width: this.boundedSize,
|
|
96
79
|
height: totalHeight,
|
|
97
80
|
};
|
|
98
|
-
}
|
|
81
|
+
}
|
|
99
82
|
/**
|
|
100
83
|
* Recomputes layouts for items in the given range.
|
|
101
84
|
* @param startIndex Starting index of items to recompute
|
|
102
85
|
* @param endIndex Ending index of items to recompute
|
|
103
86
|
*/
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
for (
|
|
110
|
-
|
|
87
|
+
recomputeLayouts(startIndex, endIndex) {
|
|
88
|
+
const newStartIndex = this.locateFirstIndexInRow(Math.max(0, startIndex - 1));
|
|
89
|
+
const startVal = this.getLayout(newStartIndex);
|
|
90
|
+
let startX = startVal.x;
|
|
91
|
+
let startY = startVal.y;
|
|
92
|
+
for (let i = newStartIndex; i <= endIndex; i++) {
|
|
93
|
+
const layout = this.getLayout(i);
|
|
111
94
|
if (!this.checkBounds(startX, layout.width)) {
|
|
112
|
-
|
|
95
|
+
const tallestItem = this.processAndReturnTallestItemInRow(i - 1);
|
|
113
96
|
startY = tallestItem.y + tallestItem.height;
|
|
114
97
|
startX = 0;
|
|
115
98
|
}
|
|
@@ -120,15 +103,15 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
120
103
|
if (endIndex === this.layouts.length - 1) {
|
|
121
104
|
this.processAndReturnTallestItemInRow(endIndex);
|
|
122
105
|
}
|
|
123
|
-
}
|
|
106
|
+
}
|
|
124
107
|
/**
|
|
125
108
|
* Calculates the width of an item based on its span.
|
|
126
109
|
* @param index Index of the item
|
|
127
110
|
* @returns Width of the item
|
|
128
111
|
*/
|
|
129
|
-
|
|
112
|
+
getWidth(index) {
|
|
130
113
|
return (this.boundedSize / this.maxColumns) * this.getSpan(index);
|
|
131
|
-
}
|
|
114
|
+
}
|
|
132
115
|
/**
|
|
133
116
|
* Processes items in a row and returns the tallest item.
|
|
134
117
|
* Also handles height normalization for items in the same row.
|
|
@@ -136,15 +119,15 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
136
119
|
* @param endIndex Index of the last item in the row
|
|
137
120
|
* @returns The tallest item in the row
|
|
138
121
|
*/
|
|
139
|
-
|
|
122
|
+
processAndReturnTallestItemInRow(endIndex) {
|
|
140
123
|
var _a, _b;
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
124
|
+
const startIndex = this.locateFirstIndexInRow(endIndex);
|
|
125
|
+
let tallestItem;
|
|
126
|
+
let maxHeight = 0;
|
|
127
|
+
let i = startIndex;
|
|
128
|
+
let isMeasured = false;
|
|
146
129
|
while (i <= endIndex) {
|
|
147
|
-
|
|
130
|
+
const layout = this.layouts[i];
|
|
148
131
|
isMeasured = isMeasured || Boolean(layout.isHeightMeasured);
|
|
149
132
|
maxHeight = Math.max(maxHeight, layout.height);
|
|
150
133
|
if (layout.height > ((_a = layout.minHeight) !== null && _a !== void 0 ? _a : 0) &&
|
|
@@ -164,7 +147,7 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
164
147
|
return tallestItem;
|
|
165
148
|
}
|
|
166
149
|
if (tallestItem) {
|
|
167
|
-
|
|
150
|
+
let targetHeight = tallestItem.height;
|
|
168
151
|
if (maxHeight - tallestItem.height > 1) {
|
|
169
152
|
targetHeight = 0;
|
|
170
153
|
this.requiresRepaint = true;
|
|
@@ -183,17 +166,17 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
183
166
|
tallestItem.minHeight = 0;
|
|
184
167
|
}
|
|
185
168
|
return tallestItem;
|
|
186
|
-
}
|
|
169
|
+
}
|
|
187
170
|
/**
|
|
188
171
|
* Computes the total height of the layout.
|
|
189
172
|
* @param endIndex Index of the last item in the row
|
|
190
173
|
* @returns Total height of the layout
|
|
191
174
|
*/
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
175
|
+
computeTotalHeightTillRow(endIndex) {
|
|
176
|
+
const startIndex = this.locateFirstIndexInRow(endIndex);
|
|
177
|
+
const y = this.layouts[startIndex].y;
|
|
178
|
+
let maxHeight = 0;
|
|
179
|
+
let i = startIndex;
|
|
197
180
|
while (i <= endIndex) {
|
|
198
181
|
maxHeight = Math.max(maxHeight, this.layouts[i].height);
|
|
199
182
|
i++;
|
|
@@ -202,39 +185,37 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
202
185
|
}
|
|
203
186
|
}
|
|
204
187
|
return y + maxHeight;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
for (
|
|
188
|
+
}
|
|
189
|
+
updateAllWidths() {
|
|
190
|
+
for (let i = 0; i < this.layouts.length; i++) {
|
|
208
191
|
this.layouts[i].width = this.getWidth(i);
|
|
209
192
|
}
|
|
210
|
-
}
|
|
193
|
+
}
|
|
211
194
|
/**
|
|
212
195
|
* Checks if an item can fit within the bounded width.
|
|
213
196
|
* @param itemX Starting X position of the item
|
|
214
197
|
* @param width Width of the item
|
|
215
198
|
* @returns True if the item fits within bounds
|
|
216
199
|
*/
|
|
217
|
-
|
|
200
|
+
checkBounds(itemX, width) {
|
|
218
201
|
return itemX + width <= this.boundedSize + 0.9;
|
|
219
|
-
}
|
|
202
|
+
}
|
|
220
203
|
/**
|
|
221
204
|
* Locates the index of the first item in the current row.
|
|
222
205
|
* @param itemIndex Index to start searching from
|
|
223
206
|
* @returns Index of the first item in the row
|
|
224
207
|
*/
|
|
225
|
-
|
|
208
|
+
locateFirstIndexInRow(itemIndex) {
|
|
226
209
|
if (itemIndex === 0) {
|
|
227
210
|
return 0;
|
|
228
211
|
}
|
|
229
|
-
|
|
212
|
+
let i = itemIndex;
|
|
230
213
|
for (; i >= 0; i--) {
|
|
231
214
|
if (this.layouts[i].x === 0) {
|
|
232
215
|
break;
|
|
233
216
|
}
|
|
234
217
|
}
|
|
235
218
|
return Math.max(i, 0);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
}(LayoutManager_1.RVLayoutManager));
|
|
239
|
-
exports.RVGridLayoutManagerImpl = RVGridLayoutManagerImpl;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
240
221
|
//# sourceMappingURL=GridLayoutManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridLayoutManager.js","sourceRoot":"","sources":["../../../src/recyclerview/layout-managers/GridLayoutManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GridLayoutManager.js","sourceRoot":"","sources":["../../../src/recyclerview/layout-managers/GridLayoutManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,MAAM,OAAO,uBAAwB,SAAQ,eAAe;IAO1D,YAAY,MAAoB,EAAE,qBAAuC;QACvE,KAAK,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QAJvC,oFAAoF;QAC5E,yBAAoB,GAAG,KAAK,CAAC;QAInC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,MAAoB;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;QACvC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACjC,IACE,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,UAAU,CAAC,KAAK;YAC5C,cAAc,KAAK,MAAM,CAAC,UAAU,EACpC,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;YAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,oBAAoB;gBACpB,IAAI,CAAC,eAAe,EAAE,CAAC;gBAEvB,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAClD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,UAA0B,EAAE,SAAiB;QAC7D,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YAClC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC/B,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;QAChC,CAAC;QAED,yBAAyB;QACzB,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,KAAa;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE/C,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,KAAa;QAC5B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5E,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,WAAW;YACvB,MAAM,EAAE,WAAW;SACpB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,UAAkB,EAAE,QAAgB;QACnD,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAC9C,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAC5B,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAE/C,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;QACxB,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;QAExB,KAAK,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,gCAAgC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjE,MAAM,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;gBAC5C,MAAM,GAAG,CAAC,CAAC;YACb,CAAC;YAED,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;YAClB,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;YAClB,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC;QACzB,CAAC;QACD,IAAI,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,QAAQ,CAAC,KAAa;QAC5B,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;OAMG;IACK,gCAAgC,CAAC,QAAgB;;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,WAAiC,CAAC;QACtC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,GAAG,UAAU,CAAC;QACnB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,UAAU,GAAG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC5D,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/C,IACE,MAAM,CAAC,MAAM,GAAG,CAAC,MAAA,MAAM,CAAC,SAAS,mCAAI,CAAC,CAAC;gBACvC,MAAM,CAAC,MAAM,GAAG,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,mCAAI,CAAC,CAAC,EAC1C,CAAC;gBACD,WAAW,GAAG,MAAM,CAAC;YACvB,CAAC;YAED,CAAC,EAAE,CAAC;YACJ,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,WAAW,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClC,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACtC,CAAC;QACD,WAAW,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC;YACtC,IAAI,SAAS,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvC,YAAY,GAAG,CAAC,CAAC;gBACjB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC9B,CAAC;YACD,CAAC,GAAG,UAAU,CAAC;YACf,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACrB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,YAAY,CAAC;gBACzC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;oBACrB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC;gBACxC,CAAC;gBACD,CAAC,EAAE,CAAC;gBACJ,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBAC7B,MAAM;gBACR,CAAC;YACH,CAAC;YACD,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACK,yBAAyB,CAAC,QAAgB;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,GAAG,UAAU,CAAC;QACnB,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YACrB,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACxD,CAAC,EAAE,CAAC;YACJ,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,SAAS,CAAC;IACvB,CAAC;IAEO,eAAe;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,WAAW,CAAC,KAAa,EAAE,KAAa;QAC9C,OAAO,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACK,qBAAqB,CAAC,SAAiB;QAC7C,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC,GAAG,SAAS,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;CACF"}
|