@shopify/flash-list 2.0.0-alpha.9 → 2.0.0-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -97
- package/android/src/main/kotlin/com/shopify/reactnative/flash_list/BlankAreaEvent.kt +2 -2
- package/dist/AnimatedFlashList.d.ts.map +1 -1
- package/dist/AnimatedFlashList.js +3 -3
- package/dist/AnimatedFlashList.js.map +1 -1
- package/dist/FlashList.d.ts +9 -0
- package/dist/FlashList.d.ts.map +1 -1
- package/dist/FlashList.js +20 -0
- package/dist/FlashList.js.map +1 -1
- package/dist/FlashListProps.d.ts +30 -10
- package/dist/FlashListProps.d.ts.map +1 -1
- package/dist/FlashListProps.js.map +1 -1
- package/dist/FlashListRef.d.ts +305 -0
- package/dist/FlashListRef.d.ts.map +1 -0
- package/dist/FlashListRef.js +3 -0
- package/dist/FlashListRef.js.map +1 -0
- package/dist/MasonryFlashList.js.map +1 -1
- package/dist/__tests__/RecyclerView.test.js +72 -28
- package/dist/__tests__/RecyclerView.test.js.map +1 -1
- package/dist/__tests__/RenderStackManager.test.d.ts +2 -0
- package/dist/__tests__/RenderStackManager.test.d.ts.map +1 -0
- package/dist/__tests__/RenderStackManager.test.js +485 -0
- package/dist/__tests__/RenderStackManager.test.js.map +1 -0
- package/dist/__tests__/helpers/createLayoutManager.d.ts.map +1 -1
- package/dist/__tests__/helpers/createLayoutManager.js +3 -4
- package/dist/__tests__/helpers/createLayoutManager.js.map +1 -1
- package/dist/__tests__/useUnmountAwareCallbacks.test.js +1 -1
- package/dist/__tests__/useUnmountAwareCallbacks.test.js.map +1 -1
- package/dist/benchmark/useBenchmark.js +0 -25
- package/dist/benchmark/useBenchmark.js.map +1 -1
- package/dist/benchmark/useFlatListBenchmark.js +8 -7
- package/dist/benchmark/useFlatListBenchmark.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/native/config/PlatformHelper.android.d.ts +1 -0
- package/dist/native/config/PlatformHelper.android.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.android.js +1 -0
- package/dist/native/config/PlatformHelper.android.js.map +1 -1
- package/dist/native/config/PlatformHelper.d.ts +1 -0
- package/dist/native/config/PlatformHelper.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.ios.d.ts +1 -0
- package/dist/native/config/PlatformHelper.ios.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.ios.js +1 -0
- package/dist/native/config/PlatformHelper.ios.js.map +1 -1
- package/dist/native/config/PlatformHelper.js +1 -0
- package/dist/native/config/PlatformHelper.js.map +1 -1
- package/dist/native/config/PlatformHelper.web.d.ts +1 -0
- package/dist/native/config/PlatformHelper.web.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.web.js +1 -0
- package/dist/native/config/PlatformHelper.web.js.map +1 -1
- package/dist/recyclerview/RecyclerView.d.ts +2 -1
- package/dist/recyclerview/RecyclerView.d.ts.map +1 -1
- package/dist/recyclerview/RecyclerView.js +104 -57
- package/dist/recyclerview/RecyclerView.js.map +1 -1
- package/dist/recyclerview/RecyclerViewContextProvider.d.ts +41 -6
- package/dist/recyclerview/RecyclerViewContextProvider.d.ts.map +1 -1
- package/dist/recyclerview/RecyclerViewContextProvider.js +4 -0
- package/dist/recyclerview/RecyclerViewContextProvider.js.map +1 -1
- package/dist/recyclerview/RecyclerViewManager.d.ts +24 -7
- package/dist/recyclerview/RecyclerViewManager.d.ts.map +1 -1
- package/dist/recyclerview/RecyclerViewManager.js +119 -113
- package/dist/recyclerview/RecyclerViewManager.js.map +1 -1
- package/dist/recyclerview/RenderStackManager.d.ts +86 -0
- package/dist/recyclerview/RenderStackManager.d.ts.map +1 -0
- package/dist/recyclerview/RenderStackManager.js +343 -0
- package/dist/recyclerview/RenderStackManager.js.map +1 -0
- package/dist/recyclerview/ViewHolder.d.ts.map +1 -1
- package/dist/recyclerview/ViewHolder.js +5 -3
- package/dist/recyclerview/ViewHolder.js.map +1 -1
- package/dist/recyclerview/ViewHolderCollection.d.ts +9 -3
- package/dist/recyclerview/ViewHolderCollection.d.ts.map +1 -1
- package/dist/recyclerview/ViewHolderCollection.js +26 -9
- package/dist/recyclerview/ViewHolderCollection.js.map +1 -1
- package/dist/recyclerview/components/ScrollAnchor.d.ts +2 -2
- package/dist/recyclerview/components/ScrollAnchor.d.ts.map +1 -1
- package/dist/recyclerview/components/ScrollAnchor.js +9 -5
- package/dist/recyclerview/components/ScrollAnchor.js.map +1 -1
- package/dist/recyclerview/components/StickyHeaders.d.ts +1 -1
- package/dist/recyclerview/components/StickyHeaders.d.ts.map +1 -1
- package/dist/recyclerview/components/StickyHeaders.js +40 -33
- package/dist/recyclerview/components/StickyHeaders.js.map +1 -1
- package/dist/recyclerview/helpers/EngagedIndicesTracker.d.ts +45 -1
- package/dist/recyclerview/helpers/EngagedIndicesTracker.d.ts.map +1 -1
- package/dist/recyclerview/helpers/EngagedIndicesTracker.js +77 -20
- package/dist/recyclerview/helpers/EngagedIndicesTracker.js.map +1 -1
- package/dist/recyclerview/helpers/RenderTimeTracker.d.ts +11 -0
- package/dist/recyclerview/helpers/RenderTimeTracker.d.ts.map +1 -0
- package/dist/recyclerview/helpers/RenderTimeTracker.js +42 -0
- package/dist/recyclerview/helpers/RenderTimeTracker.js.map +1 -0
- package/dist/recyclerview/helpers/VelocityTracker.d.ts +29 -0
- package/dist/recyclerview/helpers/VelocityTracker.d.ts.map +1 -0
- package/dist/recyclerview/helpers/VelocityTracker.js +70 -0
- package/dist/recyclerview/helpers/VelocityTracker.js.map +1 -0
- package/dist/recyclerview/hooks/useBoundDetection.d.ts +1 -2
- package/dist/recyclerview/hooks/useBoundDetection.d.ts.map +1 -1
- package/dist/recyclerview/hooks/useBoundDetection.js +56 -22
- package/dist/recyclerview/hooks/useBoundDetection.js.map +1 -1
- package/dist/recyclerview/hooks/useLayoutState.d.ts +3 -1
- package/dist/recyclerview/hooks/useLayoutState.d.ts.map +1 -1
- package/dist/recyclerview/hooks/useLayoutState.js +5 -3
- package/dist/recyclerview/hooks/useLayoutState.js.map +1 -1
- package/dist/recyclerview/hooks/useMappingHelper.d.ts +1 -1
- package/dist/recyclerview/hooks/useMappingHelper.d.ts.map +1 -1
- package/dist/recyclerview/hooks/useMappingHelper.js +1 -1
- 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 +4 -6
- package/dist/recyclerview/hooks/useOnLoad.js.map +1 -1
- package/dist/recyclerview/hooks/useRecyclerViewController.d.ts +5 -49
- package/dist/recyclerview/hooks/useRecyclerViewController.d.ts.map +1 -1
- package/dist/recyclerview/hooks/useRecyclerViewController.js +315 -204
- package/dist/recyclerview/hooks/useRecyclerViewController.js.map +1 -1
- package/dist/recyclerview/hooks/useRecyclerViewManager.d.ts +2 -0
- package/dist/recyclerview/hooks/useRecyclerViewManager.d.ts.map +1 -1
- package/dist/recyclerview/hooks/useRecyclerViewManager.js +11 -1
- package/dist/recyclerview/hooks/useRecyclerViewManager.js.map +1 -1
- package/dist/recyclerview/hooks/useRecyclingState.d.ts +4 -2
- package/dist/recyclerview/hooks/useRecyclingState.d.ts.map +1 -1
- package/dist/recyclerview/hooks/useRecyclingState.js +2 -2
- package/dist/recyclerview/hooks/useRecyclingState.js.map +1 -1
- package/dist/recyclerview/hooks/useSecondaryProps.js +1 -1
- package/dist/recyclerview/hooks/useUnmountAwareCallbacks.d.ts +10 -3
- package/dist/recyclerview/hooks/useUnmountAwareCallbacks.d.ts.map +1 -1
- package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js +33 -4
- package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js.map +1 -1
- package/dist/recyclerview/hooks/useUnmountFlag.d.ts.map +1 -1
- package/dist/recyclerview/hooks/useUnmountFlag.js +1 -0
- package/dist/recyclerview/hooks/useUnmountFlag.js.map +1 -1
- package/dist/recyclerview/layout-managers/GridLayoutManager.d.ts +18 -4
- package/dist/recyclerview/layout-managers/GridLayoutManager.d.ts.map +1 -1
- package/dist/recyclerview/layout-managers/GridLayoutManager.js +60 -21
- package/dist/recyclerview/layout-managers/GridLayoutManager.js.map +1 -1
- package/dist/recyclerview/layout-managers/LayoutManager.d.ts +35 -21
- package/dist/recyclerview/layout-managers/LayoutManager.d.ts.map +1 -1
- package/dist/recyclerview/layout-managers/LayoutManager.js +92 -28
- package/dist/recyclerview/layout-managers/LayoutManager.js.map +1 -1
- package/dist/recyclerview/layout-managers/MasonryLayoutManager.d.ts +9 -1
- package/dist/recyclerview/layout-managers/MasonryLayoutManager.d.ts.map +1 -1
- package/dist/recyclerview/layout-managers/MasonryLayoutManager.js +28 -12
- package/dist/recyclerview/layout-managers/MasonryLayoutManager.js.map +1 -1
- package/dist/recyclerview/utils/measureLayout.web.d.ts.map +1 -1
- package/dist/recyclerview/utils/measureLayout.web.js +1 -3
- package/dist/recyclerview/utils/measureLayout.web.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/viewability/ViewToken.d.ts +2 -2
- package/dist/viewability/ViewToken.d.ts.map +1 -1
- package/dist/viewability/ViewabilityHelper.js +1 -1
- package/dist/viewability/ViewabilityHelper.js.map +1 -1
- package/dist/viewability/ViewabilityManager.d.ts.map +1 -1
- package/dist/viewability/ViewabilityManager.js +11 -5
- package/dist/viewability/ViewabilityManager.js.map +1 -1
- package/jestSetup.js +30 -11
- package/package.json +2 -1
- package/src/AnimatedFlashList.ts +3 -2
- package/src/FlashList.tsx +24 -0
- package/src/FlashListProps.ts +41 -10
- package/src/FlashListRef.ts +320 -0
- package/src/MasonryFlashList.tsx +2 -2
- package/src/__tests__/RecyclerView.test.tsx +106 -31
- package/src/__tests__/RenderStackManager.test.ts +574 -0
- package/src/__tests__/helpers/createLayoutManager.ts +2 -3
- package/src/__tests__/useUnmountAwareCallbacks.test.tsx +12 -12
- package/src/benchmark/useBenchmark.ts +0 -37
- package/src/benchmark/useFlatListBenchmark.ts +2 -2
- package/src/index.ts +2 -1
- package/src/native/config/PlatformHelper.android.ts +1 -0
- package/src/native/config/PlatformHelper.ios.ts +1 -0
- package/src/native/config/PlatformHelper.ts +1 -0
- package/src/native/config/PlatformHelper.web.ts +1 -0
- package/src/recyclerview/RecyclerView.tsx +139 -75
- package/src/recyclerview/RecyclerViewContextProvider.ts +52 -7
- package/src/recyclerview/RecyclerViewManager.ts +135 -98
- package/src/recyclerview/RenderStackManager.ts +317 -0
- package/src/recyclerview/ViewHolder.tsx +5 -3
- package/src/recyclerview/ViewHolderCollection.tsx +42 -14
- package/src/recyclerview/components/ScrollAnchor.tsx +21 -9
- package/src/recyclerview/components/StickyHeaders.tsx +63 -45
- package/src/recyclerview/helpers/EngagedIndicesTracker.ts +118 -23
- package/src/recyclerview/helpers/RenderTimeTracker.ts +42 -0
- package/src/recyclerview/helpers/VelocityTracker.ts +77 -0
- package/src/recyclerview/hooks/useBoundDetection.ts +72 -23
- package/src/recyclerview/hooks/useLayoutState.ts +15 -6
- package/src/recyclerview/hooks/useMappingHelper.ts +1 -1
- package/src/recyclerview/hooks/useOnLoad.ts +4 -6
- package/src/recyclerview/hooks/useRecyclerViewController.tsx +364 -254
- package/src/recyclerview/hooks/useRecyclerViewManager.ts +13 -1
- package/src/recyclerview/hooks/useRecyclingState.ts +11 -7
- package/src/recyclerview/hooks/useSecondaryProps.tsx +1 -1
- package/src/recyclerview/hooks/useUnmountAwareCallbacks.ts +39 -3
- package/src/recyclerview/hooks/useUnmountFlag.ts +1 -0
- package/src/recyclerview/layout-managers/GridLayoutManager.ts +67 -23
- package/src/recyclerview/layout-managers/LayoutManager.ts +110 -41
- package/src/recyclerview/layout-managers/MasonryLayoutManager.ts +30 -8
- package/src/recyclerview/utils/measureLayout.web.ts +1 -3
- package/src/viewability/ViewToken.ts +2 -2
- package/src/viewability/ViewabilityHelper.ts +1 -1
- package/src/viewability/ViewabilityManager.ts +16 -9
- package/dist/__tests__/RecycleKeyManager.test.d.ts +0 -2
- package/dist/__tests__/RecycleKeyManager.test.d.ts.map +0 -1
- package/dist/__tests__/RecycleKeyManager.test.js +0 -210
- package/dist/__tests__/RecycleKeyManager.test.js.map +0 -1
- package/dist/recyclerview/RecycleKeyManager.d.ts +0 -82
- package/dist/recyclerview/RecycleKeyManager.d.ts.map +0 -1
- package/dist/recyclerview/RecycleKeyManager.js +0 -135
- package/dist/recyclerview/RecycleKeyManager.js.map +0 -1
- package/src/__tests__/RecycleKeyManager.test.ts +0 -254
- package/src/recyclerview/RecycleKeyManager.ts +0 -185
|
@@ -11,31 +11,34 @@ export declare abstract class RVLayoutManager {
|
|
|
11
11
|
protected layouts: RVLayout[];
|
|
12
12
|
/** Dimensions of the visible window/viewport */
|
|
13
13
|
protected windowSize: RVDimension;
|
|
14
|
-
/** Information about item spans and sizes */
|
|
15
|
-
protected spanSizeInfo: SpanSizeInfo;
|
|
16
14
|
/** Maximum number of columns in the layout */
|
|
17
15
|
protected maxColumns: number;
|
|
18
|
-
/** Optional callback to override default item layout */
|
|
19
|
-
protected overrideItemLayout?: (index: number, layout: SpanSizeInfo) => void;
|
|
20
16
|
/** Whether to optimize item placement for better space utilization */
|
|
21
17
|
protected optimizeItemArrangement: boolean;
|
|
22
18
|
/** Flag indicating if the layout requires repainting */
|
|
23
19
|
requiresRepaint: boolean;
|
|
20
|
+
/** Optional callback to override default item layout */
|
|
21
|
+
private overrideItemLayout;
|
|
24
22
|
/** Optional function to determine item type */
|
|
25
|
-
private
|
|
23
|
+
private getItemType;
|
|
26
24
|
/** Window for tracking average heights by item type */
|
|
27
25
|
private heightAverageWindow;
|
|
28
26
|
/** Window for tracking average widths by item type */
|
|
29
27
|
private widthAverageWindow;
|
|
30
28
|
/** Maximum number of items to process in a single layout pass */
|
|
31
29
|
private maxItemsToProcess;
|
|
32
|
-
|
|
30
|
+
/** Information about item spans and sizes */
|
|
31
|
+
private spanSizeInfo;
|
|
32
|
+
/** Span tracker for each item */
|
|
33
|
+
private spanTracker;
|
|
34
|
+
/** Current max index with changed layout */
|
|
35
|
+
private currentMaxIndexWithChangedLayout;
|
|
33
36
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* @returns Item type or "default" if not specified
|
|
37
|
+
* Last index that was skipped during layout computation.
|
|
38
|
+
* Used to determine if a layout needs to be recomputed.
|
|
37
39
|
*/
|
|
38
|
-
private
|
|
40
|
+
private lastSkippedLayoutIndex;
|
|
41
|
+
constructor(params: LayoutParams, previousLayoutManager?: RVLayoutManager);
|
|
39
42
|
/**
|
|
40
43
|
* Gets the estimated width for an item based on its type.
|
|
41
44
|
* @param index Index of the item
|
|
@@ -68,8 +71,8 @@ export declare abstract class RVLayoutManager {
|
|
|
68
71
|
/**
|
|
69
72
|
* Gets indices of items currently visible in the viewport.
|
|
70
73
|
* Uses binary search for efficient lookup.
|
|
71
|
-
* @param unboundDimensionStart Start position of viewport
|
|
72
|
-
* @param unboundDimensionEnd End position of viewport
|
|
74
|
+
* @param unboundDimensionStart Start position of viewport (start X or start Y)
|
|
75
|
+
* @param unboundDimensionEnd End position of viewport (end X or end Y)
|
|
73
76
|
* @returns ConsecutiveNumbers containing visible indices
|
|
74
77
|
*/
|
|
75
78
|
getVisibleLayouts(unboundDimensionStart: number, unboundDimensionEnd: number): ConsecutiveNumbers;
|
|
@@ -114,11 +117,20 @@ export declare abstract class RVLayoutManager {
|
|
|
114
117
|
*/
|
|
115
118
|
protected abstract estimateLayout(index: number): void;
|
|
116
119
|
/**
|
|
117
|
-
* Gets span
|
|
120
|
+
* Gets span for an item, applying any overrides.
|
|
121
|
+
* This is intended to be called during a relayout call. The value is tracked and used to determine if a span change has occurred.
|
|
122
|
+
* If skipTracking is true, the operation is not tracked. Can be useful if span is required outside of a relayout call.
|
|
123
|
+
* The tracker is used to call handleSpanChange if a span change has occurred before relayout call.
|
|
124
|
+
* // TODO: improve this contract.
|
|
125
|
+
* @param index Index of the item
|
|
126
|
+
* @returns Span for the item
|
|
127
|
+
*/
|
|
128
|
+
protected getSpan(index: number, skipTracking?: boolean): number;
|
|
129
|
+
/**
|
|
130
|
+
* Method to handle span change for an item. Can be overridden by subclasses.
|
|
118
131
|
* @param index Index of the item
|
|
119
|
-
* @returns SpanSizeInfo for the item
|
|
120
132
|
*/
|
|
121
|
-
protected
|
|
133
|
+
protected handleSpanChange(index: number): void;
|
|
122
134
|
/**
|
|
123
135
|
* Gets the maximum index to process in a single layout pass.
|
|
124
136
|
* @param startIndex Starting index
|
|
@@ -131,12 +143,14 @@ export declare abstract class RVLayoutManager {
|
|
|
131
143
|
* @returns Minimum index to process
|
|
132
144
|
*/
|
|
133
145
|
private getMinRecomputeIndex;
|
|
146
|
+
private _recomputeLayouts;
|
|
134
147
|
/**
|
|
135
148
|
* Computes size estimates and finds the minimum recompute index.
|
|
136
149
|
* @param layoutInfo Array of layout information for items
|
|
137
150
|
* @returns Minimum index that needs recomputation
|
|
138
151
|
*/
|
|
139
|
-
private
|
|
152
|
+
private computeEstimatesAndMinMaxChangedLayout;
|
|
153
|
+
private computeMinIndexWithChangedSpan;
|
|
140
154
|
}
|
|
141
155
|
/**
|
|
142
156
|
* Configuration parameters for the layout manager
|
|
@@ -151,27 +165,27 @@ export interface LayoutParams {
|
|
|
151
165
|
* Determines if the list scrolls horizontally (true) or vertically (false)
|
|
152
166
|
* Affects how items are positioned and which dimension is used for scrolling
|
|
153
167
|
*/
|
|
154
|
-
horizontal
|
|
168
|
+
horizontal: boolean;
|
|
155
169
|
/**
|
|
156
170
|
* Maximum number of columns in a grid layout
|
|
157
171
|
* Controls how many items can be placed side by side
|
|
158
172
|
*/
|
|
159
|
-
maxColumns
|
|
173
|
+
maxColumns: number;
|
|
160
174
|
/**
|
|
161
175
|
* When true, attempts to optimize item placement for better space utilization
|
|
162
176
|
* May affect the ordering of items to minimize empty space
|
|
163
177
|
*/
|
|
164
|
-
optimizeItemArrangement
|
|
178
|
+
optimizeItemArrangement: boolean;
|
|
165
179
|
/**
|
|
166
180
|
* Callback to manually override layout properties for specific items
|
|
167
181
|
* Allows custom control over span and size for individual items
|
|
168
182
|
*/
|
|
169
|
-
overrideItemLayout
|
|
183
|
+
overrideItemLayout: (index: number, layout: SpanSizeInfo) => void;
|
|
170
184
|
/**
|
|
171
185
|
* Function to determine the type of an item at a specific index
|
|
172
186
|
* Used for size estimation and optimization based on item types
|
|
173
187
|
*/
|
|
174
|
-
getItemType
|
|
188
|
+
getItemType: (index: number) => string;
|
|
175
189
|
}
|
|
176
190
|
/**
|
|
177
191
|
* Information about an item's layout including its index and dimensions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LayoutManager.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/layout-managers/LayoutManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAOnE;;;;GAIG;AACH,8BAAsB,eAAe;IACnC,kEAAkE;IAClE,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;IAC9B,gDAAgD;IAChD,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC9B,gDAAgD;IAChD,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC;IAClC,
|
|
1
|
+
{"version":3,"file":"LayoutManager.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/layout-managers/LayoutManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,15 +15,24 @@ var measureLayout_1 = require("../utils/measureLayout");
|
|
|
15
15
|
var RVLayoutManager = /** @class */ (function () {
|
|
16
16
|
function RVLayoutManager(params, previousLayoutManager) {
|
|
17
17
|
var _a, _b;
|
|
18
|
-
/** Information about item spans and sizes */
|
|
19
|
-
this.spanSizeInfo = {};
|
|
20
18
|
/** Flag indicating if the layout requires repainting */
|
|
21
19
|
this.requiresRepaint = false;
|
|
22
20
|
/** Maximum number of items to process in a single layout pass */
|
|
23
|
-
this.maxItemsToProcess = 250;
|
|
21
|
+
this.maxItemsToProcess = 250;
|
|
22
|
+
/** Information about item spans and sizes */
|
|
23
|
+
this.spanSizeInfo = {};
|
|
24
|
+
/** Span tracker for each item */
|
|
25
|
+
this.spanTracker = [];
|
|
26
|
+
/** Current max index with changed layout */
|
|
27
|
+
this.currentMaxIndexWithChangedLayout = -1;
|
|
28
|
+
/**
|
|
29
|
+
* Last index that was skipped during layout computation.
|
|
30
|
+
* Used to determine if a layout needs to be recomputed.
|
|
31
|
+
*/
|
|
32
|
+
this.lastSkippedLayoutIndex = Number.MAX_VALUE;
|
|
24
33
|
this.heightAverageWindow = new AverageWindow_1.MultiTypeAverageWindow(5, 200);
|
|
25
34
|
this.widthAverageWindow = new AverageWindow_1.MultiTypeAverageWindow(5, 200);
|
|
26
|
-
this.
|
|
35
|
+
this.getItemType = params.getItemType;
|
|
27
36
|
this.overrideItemLayout = params.overrideItemLayout;
|
|
28
37
|
this.layouts = (_a = previousLayoutManager === null || previousLayoutManager === void 0 ? void 0 : previousLayoutManager.layouts) !== null && _a !== void 0 ? _a : [];
|
|
29
38
|
if (previousLayoutManager) {
|
|
@@ -35,15 +44,6 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
35
44
|
this.maxColumns = (_b = params.maxColumns) !== null && _b !== void 0 ? _b : 1;
|
|
36
45
|
}
|
|
37
46
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Gets the type of an item at the given index.
|
|
40
|
-
* @param index Index of the item
|
|
41
|
-
* @returns Item type or "default" if not specified
|
|
42
|
-
*/
|
|
43
|
-
RVLayoutManager.prototype.getItemType = function (index) {
|
|
44
|
-
var _a, _b;
|
|
45
|
-
return (_b = (_a = this._getItemType) === null || _a === void 0 ? void 0 : _a.call(this, index)) !== null && _b !== void 0 ? _b : "default";
|
|
46
|
-
};
|
|
47
47
|
/**
|
|
48
48
|
* Gets the estimated width for an item based on its type.
|
|
49
49
|
* @param index Index of the item
|
|
@@ -77,8 +77,8 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
77
77
|
/**
|
|
78
78
|
* Gets indices of items currently visible in the viewport.
|
|
79
79
|
* Uses binary search for efficient lookup.
|
|
80
|
-
* @param unboundDimensionStart Start position of viewport
|
|
81
|
-
* @param unboundDimensionEnd End position of viewport
|
|
80
|
+
* @param unboundDimensionStart Start position of viewport (start X or start Y)
|
|
81
|
+
* @param unboundDimensionEnd End position of viewport (end X or end Y)
|
|
82
82
|
* @returns ConsecutiveNumbers containing visible indices
|
|
83
83
|
*/
|
|
84
84
|
RVLayoutManager.prototype.getVisibleLayouts = function (unboundDimensionStart, unboundDimensionEnd) {
|
|
@@ -116,7 +116,7 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
116
116
|
}
|
|
117
117
|
var startIndex = Math.min.apply(Math, tslib_1.__spreadArray([], tslib_1.__read(indices), false));
|
|
118
118
|
// Recompute layouts starting from the smallest index in the original indices array
|
|
119
|
-
this.
|
|
119
|
+
this._recomputeLayouts(this.getMinRecomputeIndex(startIndex), this.getMaxRecomputeIndex(startIndex));
|
|
120
120
|
};
|
|
121
121
|
/**
|
|
122
122
|
* Updates layout information for items and recomputes layout if necessary.
|
|
@@ -125,27 +125,32 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
125
125
|
*/
|
|
126
126
|
RVLayoutManager.prototype.modifyLayout = function (layoutInfo, totalItemCount) {
|
|
127
127
|
var _a;
|
|
128
|
+
this.maxItemsToProcess = Math.max(this.maxItemsToProcess, layoutInfo.length * 10);
|
|
128
129
|
var minRecomputeIndex = Number.MAX_VALUE;
|
|
129
130
|
if (this.layouts.length > totalItemCount) {
|
|
130
131
|
this.layouts.length = totalItemCount;
|
|
132
|
+
this.spanTracker.length = totalItemCount;
|
|
131
133
|
minRecomputeIndex = totalItemCount - 1; // <0 gets skipped so it's safe to set to totalItemCount - 1
|
|
132
134
|
}
|
|
133
135
|
// update average windows
|
|
134
|
-
minRecomputeIndex = Math.min(minRecomputeIndex, this.
|
|
136
|
+
minRecomputeIndex = Math.min(minRecomputeIndex, this.computeEstimatesAndMinMaxChangedLayout(layoutInfo));
|
|
135
137
|
if (this.layouts.length < totalItemCount && totalItemCount > 0) {
|
|
136
138
|
var startIndex = this.layouts.length;
|
|
137
139
|
this.layouts.length = totalItemCount;
|
|
140
|
+
this.spanTracker.length = totalItemCount;
|
|
138
141
|
for (var i = startIndex; i < totalItemCount; i++) {
|
|
139
142
|
this.getLayout(i);
|
|
143
|
+
this.getSpan(i);
|
|
140
144
|
}
|
|
141
145
|
this.recomputeLayouts(startIndex, totalItemCount - 1);
|
|
142
146
|
}
|
|
143
|
-
minRecomputeIndex = Math.min(minRecomputeIndex, (_a = this.processLayoutInfo(layoutInfo, totalItemCount)) !== null && _a !== void 0 ? _a : minRecomputeIndex);
|
|
144
147
|
// compute minRecomputeIndex
|
|
145
|
-
minRecomputeIndex = Math.min(minRecomputeIndex, this.
|
|
148
|
+
minRecomputeIndex = Math.min(minRecomputeIndex, this.lastSkippedLayoutIndex, this.computeMinIndexWithChangedSpan(layoutInfo), (_a = this.processLayoutInfo(layoutInfo, totalItemCount)) !== null && _a !== void 0 ? _a : minRecomputeIndex, this.computeEstimatesAndMinMaxChangedLayout(layoutInfo));
|
|
146
149
|
if (minRecomputeIndex >= 0 && minRecomputeIndex < totalItemCount) {
|
|
147
|
-
|
|
150
|
+
var maxRecomputeIndex = this.getMaxRecomputeIndex(minRecomputeIndex);
|
|
151
|
+
this._recomputeLayouts(minRecomputeIndex, maxRecomputeIndex);
|
|
148
152
|
}
|
|
153
|
+
this.currentMaxIndexWithChangedLayout = -1;
|
|
149
154
|
};
|
|
150
155
|
/**
|
|
151
156
|
* Gets layout information for an item at the given index.
|
|
@@ -189,23 +194,38 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
189
194
|
return this.layouts.length;
|
|
190
195
|
};
|
|
191
196
|
/**
|
|
192
|
-
* Gets span
|
|
197
|
+
* Gets span for an item, applying any overrides.
|
|
198
|
+
* This is intended to be called during a relayout call. The value is tracked and used to determine if a span change has occurred.
|
|
199
|
+
* If skipTracking is true, the operation is not tracked. Can be useful if span is required outside of a relayout call.
|
|
200
|
+
* The tracker is used to call handleSpanChange if a span change has occurred before relayout call.
|
|
201
|
+
* // TODO: improve this contract.
|
|
193
202
|
* @param index Index of the item
|
|
194
|
-
* @returns
|
|
203
|
+
* @returns Span for the item
|
|
195
204
|
*/
|
|
196
|
-
RVLayoutManager.prototype.
|
|
205
|
+
RVLayoutManager.prototype.getSpan = function (index, skipTracking) {
|
|
197
206
|
var _a;
|
|
207
|
+
if (skipTracking === void 0) { skipTracking = false; }
|
|
198
208
|
this.spanSizeInfo.span = undefined;
|
|
199
|
-
|
|
200
|
-
|
|
209
|
+
this.overrideItemLayout(index, this.spanSizeInfo);
|
|
210
|
+
var span = Math.min((_a = this.spanSizeInfo.span) !== null && _a !== void 0 ? _a : 1, this.maxColumns);
|
|
211
|
+
if (!skipTracking) {
|
|
212
|
+
this.spanTracker[index] = span;
|
|
213
|
+
}
|
|
214
|
+
return span;
|
|
201
215
|
};
|
|
216
|
+
/**
|
|
217
|
+
* Method to handle span change for an item. Can be overridden by subclasses.
|
|
218
|
+
* @param index Index of the item
|
|
219
|
+
*/
|
|
220
|
+
RVLayoutManager.prototype.handleSpanChange = function (index) { };
|
|
202
221
|
/**
|
|
203
222
|
* Gets the maximum index to process in a single layout pass.
|
|
204
223
|
* @param startIndex Starting index
|
|
205
224
|
* @returns Maximum index to process
|
|
206
225
|
*/
|
|
207
226
|
RVLayoutManager.prototype.getMaxRecomputeIndex = function (startIndex) {
|
|
208
|
-
return Math.min(startIndex
|
|
227
|
+
return Math.min(Math.max(startIndex, this.currentMaxIndexWithChangedLayout) +
|
|
228
|
+
this.maxItemsToProcess, this.layouts.length - 1);
|
|
209
229
|
};
|
|
210
230
|
/**
|
|
211
231
|
* Gets the minimum index to process in a single layout pass.
|
|
@@ -215,12 +235,29 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
215
235
|
RVLayoutManager.prototype.getMinRecomputeIndex = function (startIndex) {
|
|
216
236
|
return startIndex;
|
|
217
237
|
};
|
|
238
|
+
RVLayoutManager.prototype._recomputeLayouts = function (startIndex, endIndex) {
|
|
239
|
+
this.recomputeLayouts(startIndex, endIndex);
|
|
240
|
+
if (this.lastSkippedLayoutIndex >= startIndex &&
|
|
241
|
+
this.lastSkippedLayoutIndex <= endIndex) {
|
|
242
|
+
this.lastSkippedLayoutIndex = Number.MAX_VALUE;
|
|
243
|
+
}
|
|
244
|
+
if (endIndex + 1 < this.layouts.length) {
|
|
245
|
+
this.lastSkippedLayoutIndex = Math.min(endIndex + 1, this.lastSkippedLayoutIndex);
|
|
246
|
+
var lastIndex = this.layouts.length - 1;
|
|
247
|
+
// Since layout managers derive height from last indices we need to make
|
|
248
|
+
// sure they're not too much out of sync.
|
|
249
|
+
if (this.layouts[lastIndex].y < this.layouts[endIndex].y) {
|
|
250
|
+
this.recomputeLayouts(this.lastSkippedLayoutIndex, lastIndex);
|
|
251
|
+
this.lastSkippedLayoutIndex = Number.MAX_VALUE;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
};
|
|
218
255
|
/**
|
|
219
256
|
* Computes size estimates and finds the minimum recompute index.
|
|
220
257
|
* @param layoutInfo Array of layout information for items
|
|
221
258
|
* @returns Minimum index that needs recomputation
|
|
222
259
|
*/
|
|
223
|
-
RVLayoutManager.prototype.
|
|
260
|
+
RVLayoutManager.prototype.computeEstimatesAndMinMaxChangedLayout = function (layoutInfo) {
|
|
224
261
|
var e_2, _a;
|
|
225
262
|
var minRecomputeIndex = Number.MAX_VALUE;
|
|
226
263
|
try {
|
|
@@ -228,12 +265,14 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
228
265
|
var info = layoutInfo_1_1.value;
|
|
229
266
|
var index = info.index, dimensions = info.dimensions;
|
|
230
267
|
var storedLayout = this.layouts[index];
|
|
231
|
-
if (
|
|
268
|
+
if (index >= this.lastSkippedLayoutIndex ||
|
|
269
|
+
!storedLayout ||
|
|
232
270
|
!storedLayout.isHeightMeasured ||
|
|
233
271
|
!storedLayout.isWidthMeasured ||
|
|
234
272
|
(0, measureLayout_1.areDimensionsNotEqual)(storedLayout.height, dimensions.height) ||
|
|
235
273
|
(0, measureLayout_1.areDimensionsNotEqual)(storedLayout.width, dimensions.width)) {
|
|
236
274
|
minRecomputeIndex = Math.min(minRecomputeIndex, index);
|
|
275
|
+
this.currentMaxIndexWithChangedLayout = Math.max(this.currentMaxIndexWithChangedLayout, index);
|
|
237
276
|
}
|
|
238
277
|
this.heightAverageWindow.addValue(dimensions.height, this.getItemType(index));
|
|
239
278
|
this.widthAverageWindow.addValue(dimensions.width, this.getItemType(index));
|
|
@@ -248,6 +287,31 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
248
287
|
}
|
|
249
288
|
return minRecomputeIndex;
|
|
250
289
|
};
|
|
290
|
+
RVLayoutManager.prototype.computeMinIndexWithChangedSpan = function (layoutInfo) {
|
|
291
|
+
var e_3, _a;
|
|
292
|
+
var minIndexWithChangedSpan = Number.MAX_VALUE;
|
|
293
|
+
try {
|
|
294
|
+
for (var layoutInfo_2 = tslib_1.__values(layoutInfo), layoutInfo_2_1 = layoutInfo_2.next(); !layoutInfo_2_1.done; layoutInfo_2_1 = layoutInfo_2.next()) {
|
|
295
|
+
var info = layoutInfo_2_1.value;
|
|
296
|
+
var index = info.index;
|
|
297
|
+
var span = this.getSpan(index, true);
|
|
298
|
+
var storedSpan = this.spanTracker[index];
|
|
299
|
+
if (span !== storedSpan) {
|
|
300
|
+
this.spanTracker[index] = span;
|
|
301
|
+
this.handleSpanChange(index);
|
|
302
|
+
minIndexWithChangedSpan = Math.min(minIndexWithChangedSpan, index);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
307
|
+
finally {
|
|
308
|
+
try {
|
|
309
|
+
if (layoutInfo_2_1 && !layoutInfo_2_1.done && (_a = layoutInfo_2.return)) _a.call(layoutInfo_2);
|
|
310
|
+
}
|
|
311
|
+
finally { if (e_3) throw e_3.error; }
|
|
312
|
+
}
|
|
313
|
+
return minIndexWithChangedSpan;
|
|
314
|
+
};
|
|
251
315
|
return RVLayoutManager;
|
|
252
316
|
}());
|
|
253
317
|
exports.RVLayoutManager = RVLayoutManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LayoutManager.js","sourceRoot":"","sources":["../../../src/recyclerview/layout-managers/LayoutManager.ts"],"names":[],"mappings":";AAAA,kDAAkD;;;;AAElD,2DAAmE;AACnE,oEAAmE;AACnE,8DAGmC;AACnC,wDAA+D;AAE/D;;;;GAIG;AACH;
|
|
1
|
+
{"version":3,"file":"LayoutManager.js","sourceRoot":"","sources":["../../../src/recyclerview/layout-managers/LayoutManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ export declare class RVMasonryLayoutManagerImpl extends RVLayoutManager {
|
|
|
11
11
|
private columnHeights;
|
|
12
12
|
/** Current column index for sequential placement */
|
|
13
13
|
private currentColumn;
|
|
14
|
+
/** If there's a span change for masonry layout, we need to recompute all the widths */
|
|
15
|
+
private fullRelayoutRequired;
|
|
14
16
|
constructor(params: LayoutParams, previousLayoutManager?: RVLayoutManager);
|
|
15
17
|
/**
|
|
16
18
|
* Updates layout parameters and triggers recomputation if necessary.
|
|
@@ -22,13 +24,18 @@ export declare class RVMasonryLayoutManagerImpl extends RVLayoutManager {
|
|
|
22
24
|
* @param layoutInfo Array of layout information for items (real measurements)
|
|
23
25
|
* @param itemCount Total number of items in the list
|
|
24
26
|
*/
|
|
25
|
-
processLayoutInfo(layoutInfo: RVLayoutInfo[], itemCount: number):
|
|
27
|
+
processLayoutInfo(layoutInfo: RVLayoutInfo[], itemCount: number): 0 | undefined;
|
|
26
28
|
/**
|
|
27
29
|
* Estimates layout dimensions for an item at the given index.
|
|
28
30
|
* Can be called by base class if estimate is required.
|
|
29
31
|
* @param index Index of the item to estimate layout for
|
|
30
32
|
*/
|
|
31
33
|
estimateLayout(index: number): void;
|
|
34
|
+
/**
|
|
35
|
+
* Handles span change for an item.
|
|
36
|
+
* @param index Index of the item
|
|
37
|
+
*/
|
|
38
|
+
handleSpanChange(index: number): void;
|
|
32
39
|
/**
|
|
33
40
|
* Returns the total size of the layout area.
|
|
34
41
|
* @returns RVDimension containing width and height of the layout
|
|
@@ -47,6 +54,7 @@ export declare class RVMasonryLayoutManagerImpl extends RVLayoutManager {
|
|
|
47
54
|
* @returns Width of the item
|
|
48
55
|
*/
|
|
49
56
|
private getWidth;
|
|
57
|
+
private updateAllWidths;
|
|
50
58
|
/**
|
|
51
59
|
* Places an item sequentially in the next available position.
|
|
52
60
|
* @param layout Layout information for the item
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MasonryLayoutManager.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/layout-managers/MasonryLayoutManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EAEX,YAAY,EACZ,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAEzB;;;;GAIG;AACH,qBAAa,0BAA2B,SAAQ,eAAe;IAC7D,2DAA2D;IAC3D,OAAO,CAAC,WAAW,CAAS;IAC5B,uDAAuD;IACvD,OAAO,CAAC,aAAa,CAAW;IAChC,oDAAoD;IACpD,OAAO,CAAC,aAAa,CAAK;
|
|
1
|
+
{"version":3,"file":"MasonryLayoutManager.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/layout-managers/MasonryLayoutManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EAEX,YAAY,EACZ,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAEzB;;;;GAIG;AACH,qBAAa,0BAA2B,SAAQ,eAAe;IAC7D,2DAA2D;IAC3D,OAAO,CAAC,WAAW,CAAS;IAC5B,uDAAuD;IACvD,OAAO,CAAC,aAAa,CAAW;IAChC,oDAAoD;IACpD,OAAO,CAAC,aAAa,CAAK;IAE1B,uFAAuF;IACvF,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,MAAM,EAAE,YAAY,EAAE,qBAAqB,CAAC,EAAE,eAAe;IAOzE;;;OAGG;IACH,kBAAkB,CAAC,MAAM,EAAE,YAAY;IAqBvC;;;;OAIG;IACH,iBAAiB,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,MAAM;IAmB/D;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM;IAW5B;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM;IAI9B;;;OAGG;IACH,aAAa,IAAI,WAAW;IAY5B;;;;;OAKG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAiC5D;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,eAAe;IAOvB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAqC7B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;;;OAIG;IACH,OAAO,CAAC,6BAA6B;IA0CrC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;CA8BnC"}
|
|
@@ -11,13 +11,15 @@ var LayoutManager_1 = require("./LayoutManager");
|
|
|
11
11
|
var RVMasonryLayoutManagerImpl = /** @class */ (function (_super) {
|
|
12
12
|
tslib_1.__extends(RVMasonryLayoutManagerImpl, _super);
|
|
13
13
|
function RVMasonryLayoutManagerImpl(params, previousLayoutManager) {
|
|
14
|
-
var _a
|
|
14
|
+
var _a;
|
|
15
15
|
var _this = _super.call(this, params, previousLayoutManager) || this;
|
|
16
16
|
/** Current column index for sequential placement */
|
|
17
17
|
_this.currentColumn = 0;
|
|
18
|
+
/** If there's a span change for masonry layout, we need to recompute all the widths */
|
|
19
|
+
_this.fullRelayoutRequired = false;
|
|
18
20
|
_this.boundedSize = params.windowSize.width;
|
|
19
|
-
_this.optimizeItemArrangement =
|
|
20
|
-
_this.columnHeights = (
|
|
21
|
+
_this.optimizeItemArrangement = params.optimizeItemArrangement;
|
|
22
|
+
_this.columnHeights = (_a = _this.columnHeights) !== null && _a !== void 0 ? _a : Array(_this.maxColumns).fill(0);
|
|
21
23
|
return _this;
|
|
22
24
|
}
|
|
23
25
|
/**
|
|
@@ -35,10 +37,7 @@ var RVMasonryLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
35
37
|
if (this.layouts.length > 0) {
|
|
36
38
|
// console.log("-----> recomputeLayouts");
|
|
37
39
|
// update all widths
|
|
38
|
-
|
|
39
|
-
this.layouts[i].width = this.getWidth(i);
|
|
40
|
-
this.layouts[i].minHeight = undefined;
|
|
41
|
-
}
|
|
40
|
+
this.updateAllWidths();
|
|
42
41
|
this.recomputeLayouts(0, this.layouts.length - 1);
|
|
43
42
|
this.requiresRepaint = true;
|
|
44
43
|
}
|
|
@@ -70,6 +69,12 @@ var RVMasonryLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
70
69
|
}
|
|
71
70
|
finally { if (e_1) throw e_1.error; }
|
|
72
71
|
}
|
|
72
|
+
// TODO: Can be optimized
|
|
73
|
+
if (this.fullRelayoutRequired) {
|
|
74
|
+
this.updateAllWidths();
|
|
75
|
+
this.fullRelayoutRequired = false;
|
|
76
|
+
return 0;
|
|
77
|
+
}
|
|
73
78
|
};
|
|
74
79
|
/**
|
|
75
80
|
* Estimates layout dimensions for an item at the given index.
|
|
@@ -84,6 +89,13 @@ var RVMasonryLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
84
89
|
layout.isWidthMeasured = true;
|
|
85
90
|
layout.enforcedWidth = true;
|
|
86
91
|
};
|
|
92
|
+
/**
|
|
93
|
+
* Handles span change for an item.
|
|
94
|
+
* @param index Index of the item
|
|
95
|
+
*/
|
|
96
|
+
RVMasonryLayoutManagerImpl.prototype.handleSpanChange = function (index) {
|
|
97
|
+
this.fullRelayoutRequired = true;
|
|
98
|
+
};
|
|
87
99
|
/**
|
|
88
100
|
* Returns the total size of the layout area.
|
|
89
101
|
* @returns RVDimension containing width and height of the layout
|
|
@@ -105,7 +117,6 @@ var RVMasonryLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
105
117
|
* @param endIndex Ending index of items to recompute
|
|
106
118
|
*/
|
|
107
119
|
RVMasonryLayoutManagerImpl.prototype.recomputeLayouts = function (startIndex, endIndex) {
|
|
108
|
-
var _a;
|
|
109
120
|
// Reset column heights if starting from the beginning
|
|
110
121
|
if (startIndex === 0) {
|
|
111
122
|
this.columnHeights = Array(this.maxColumns).fill(0);
|
|
@@ -119,7 +130,8 @@ var RVMasonryLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
119
130
|
var itemCount = this.layouts.length;
|
|
120
131
|
for (var i = startIndex; i < itemCount; i++) {
|
|
121
132
|
var layout = this.getLayout(i);
|
|
122
|
-
|
|
133
|
+
// Skip tracking span because we're not changing widths
|
|
134
|
+
var span = this.getSpan(i, true);
|
|
123
135
|
if (this.optimizeItemArrangement) {
|
|
124
136
|
if (span === 1) {
|
|
125
137
|
// For single column items, place in the shortest column
|
|
@@ -142,9 +154,13 @@ var RVMasonryLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
142
154
|
* @returns Width of the item
|
|
143
155
|
*/
|
|
144
156
|
RVMasonryLayoutManagerImpl.prototype.getWidth = function (index) {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
157
|
+
return (this.boundedSize / this.maxColumns) * this.getSpan(index);
|
|
158
|
+
};
|
|
159
|
+
RVMasonryLayoutManagerImpl.prototype.updateAllWidths = function () {
|
|
160
|
+
for (var i = 0; i < this.layouts.length; i++) {
|
|
161
|
+
this.layouts[i].width = this.getWidth(i);
|
|
162
|
+
this.layouts[i].minHeight = undefined;
|
|
163
|
+
}
|
|
148
164
|
};
|
|
149
165
|
/**
|
|
150
166
|
* Places an item sequentially in the next available position.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MasonryLayoutManager.js","sourceRoot":"","sources":["../../../src/recyclerview/layout-managers/MasonryLayoutManager.ts"],"names":[],"mappings":";;;;AAAA,iDAMyB;AAEzB;;;;GAIG;AACH;IAAgD,sDAAe;
|
|
1
|
+
{"version":3,"file":"MasonryLayoutManager.js","sourceRoot":"","sources":["../../../src/recyclerview/layout-managers/MasonryLayoutManager.ts"],"names":[],"mappings":";;;;AAAA,iDAMyB;AAEzB;;;;GAIG;AACH;IAAgD,sDAAe;IAW7D,oCAAY,MAAoB,EAAE,qBAAuC;;QACvE,YAAA,MAAK,YAAC,MAAM,EAAE,qBAAqB,CAAC,SAAC;QAPvC,oDAAoD;QAC5C,mBAAa,GAAG,CAAC,CAAC;QAE1B,uFAAuF;QAC/E,0BAAoB,GAAG,KAAK,CAAC;QAInC,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;QAC3C,KAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;QAC9D,KAAI,CAAC,aAAa,GAAG,MAAA,KAAI,CAAC,aAAa,mCAAI,KAAK,CAAC,KAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;IAC5E,CAAC;IAED;;;OAGG;IACH,uDAAkB,GAAlB,UAAmB,MAAoB;QACrC,IAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;QACvC,IAAM,2BAA2B,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACjE,gBAAK,CAAC,kBAAkB,YAAC,MAAM,CAAC,CAAC;QACjC,IACE,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,UAAU,CAAC,KAAK;YAC5C,cAAc,KAAK,MAAM,CAAC,UAAU;YACpC,2BAA2B,KAAK,MAAM,CAAC,uBAAuB,EAC9D,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;YAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,0CAA0C;gBAE1C,oBAAoB;gBACpB,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,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,sDAAiB,GAAjB,UAAkB,UAA0B,EAAE,SAAiB;;;YAC7D,4BAA4B;YAC5B,KAAmB,IAAA,eAAA,iBAAA,UAAU,CAAA,sCAAA,8DAAE,CAAC;gBAA3B,IAAM,IAAI,uBAAA;gBACL,IAAA,KAAK,GAAiB,IAAI,MAArB,EAAE,UAAU,GAAK,IAAI,WAAT,CAAU;gBACnC,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACnC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;gBAClC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC/B,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;YAC/B,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;;;;OAIG;IACH,mDAAc,GAAd,UAAe,KAAa;QAC1B,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,sCAAsC;QACtC,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,qDAAgB,GAAhB,UAAiB,KAAa;QAC5B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,kDAAa,GAAb;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAE9D,0BAA0B;QAC1B,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,OAAR,IAAI,2CAAQ,IAAI,CAAC,aAAa,UAAC,CAAC;QAElD,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,WAAW;YACvB,MAAM,EAAE,SAAS;SAClB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,qDAAgB,GAAhB,UAAiB,UAAkB,EAAE,QAAgB;QACnD,sDAAsD;QACtD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,qDAAqD;YACrD,wCAAwC;YACxC,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QAED,IAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAEtC,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACjC,uDAAuD;YACvD,IAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAEnC,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBACjC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,wDAAwD;oBACxD,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,iDAAiD;oBACjD,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,6CAA6C;gBAC7C,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,6CAAQ,GAAhB,UAAiB,KAAa;QAC5B,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IAEO,oDAAe,GAAvB;QACE,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;YACzC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,0DAAqB,GAA7B,UAA8B,MAAgB,EAAE,IAAY;QAC1D,+CAA+C;QAC/C,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAChD,uBAAuB;YACvB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,6DAA6D;QAC7D,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvD,KACE,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,EAChC,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,EAC/B,GAAG,EAAE,EACL,CAAC;YACD,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC1B,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QACrE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;QAErB,wBAAwB;QACxB,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YAC1E,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;YACtD,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC;QAC3B,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,0DAAqB,GAA7B,UAA8B,MAAgB;QAC5C,2BAA2B;QAC3B,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC;gBACtC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBAClC,mBAAmB,GAAG,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,mBAAmB,CAAC;QACtE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAEnD,2BAA2B;QAC3B,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACK,kEAA6B,GAArC,UAAsC,MAAgB,EAAE,IAAY;QAClE,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC;QAEtC,6BAA6B;QAC7B,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;YACtE,iEAAiE;YACjE,IAAI,WAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC7C,KAAK,IAAI,GAAG,GAAG,QAAQ,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;gBAC1D,WAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAS,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3D,CAAC;YAED,oDAAoD;YACpD,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC;gBAC/C,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC;oBAC7C,WAAW,IAAI,WAAS,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YAED,yCAAyC;YACzC,IAAI,WAAW,GAAG,cAAc,EAAE,CAAC;gBACjC,cAAc,GAAG,WAAW,CAAC;gBAC7B,eAAe,GAAG,QAAQ,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,OAAR,IAAI,2CACjB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC,UACrE,CAAC;QACF,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC;QAClE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;QAErB,wBAAwB;QACxB,KAAK,IAAI,GAAG,GAAG,eAAe,EAAE,GAAG,GAAG,eAAe,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YACpE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QACtD,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,+DAA0B,GAAlC,UAAmC,KAAa;QAC9C,uBAAuB;QACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QAEvB,mDAAmD;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;YAC/B,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;YACvD,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;YAEjD,qCAAqC;YACrC,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;YACvD,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAEhE,wBAAwB;YACxB,KAAK,IAAI,GAAG,GAAG,WAAW,EAAE,GAAG,GAAG,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC;gBACnD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAChC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EACvB,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CACzB,CAAC;YACJ,CAAC;YAED,iDAAiD;YACjD,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAClC,IAAI,CAAC,aAAa,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IACH,iCAAC;AAAD,CAAC,AArTD,CAAgD,+BAAe,GAqT9D;AArTY,gEAA0B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"measureLayout.web.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/utils/measureLayout.web.ts"],"names":[],"mappings":"AAAA,UAAU,MAAM;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"measureLayout.web.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/utils/measureLayout.web.ts"],"names":[],"mappings":"AAAA,UAAU,MAAM;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAqBD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAOvD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,kBAAkB,EAAE,OAAO,EAC3B,UAAU,EAAE,OAAO,GAClB,MAAM,CAaR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,MAAM,CAkBR"}
|
|
@@ -14,14 +14,12 @@ function getScrollOffsets(element, stopAt) {
|
|
|
14
14
|
var scrollX = 0;
|
|
15
15
|
var scrollY = 0;
|
|
16
16
|
var currentElement = element;
|
|
17
|
-
var depth = 0;
|
|
18
17
|
// Only check up to 3 parent elements
|
|
19
|
-
while (currentElement && currentElement !== stopAt
|
|
18
|
+
while (currentElement && currentElement !== stopAt) {
|
|
20
19
|
var htmlElement = currentElement;
|
|
21
20
|
scrollX += (_a = htmlElement.scrollLeft) !== null && _a !== void 0 ? _a : 0;
|
|
22
21
|
scrollY += (_b = htmlElement.scrollTop) !== null && _b !== void 0 ? _b : 0;
|
|
23
22
|
currentElement = currentElement.parentElement;
|
|
24
|
-
depth++;
|
|
25
23
|
}
|
|
26
24
|
return { scrollX: scrollX, scrollY: scrollY };
|
|
27
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"measureLayout.web.js","sourceRoot":"","sources":["../../../src/recyclerview/utils/measureLayout.web.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"measureLayout.web.js","sourceRoot":"","sources":["../../../src/recyclerview/utils/measureLayout.web.ts"],"names":[],"mappings":";;AA6BA,sDAEC;AAKD,gDAEC;AAED,sCAEC;AAKD,8CAOC;AAKD,0DAgBC;AAKD,8CAqBC;AA9FD;;GAEG;AACH,SAAS,gBAAgB,CAAC,OAAgB,EAAE,MAAe;;IACzD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,cAAc,GAAmB,OAAO,CAAC;IAE7C,qCAAqC;IACrC,OAAO,cAAc,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QACnD,IAAM,WAAW,GAAG,cAA6B,CAAC;QAClD,OAAO,IAAI,MAAA,WAAW,CAAC,UAAU,mCAAI,CAAC,CAAC;QACvC,OAAO,IAAI,MAAA,WAAW,CAAC,SAAS,mCAAI,CAAC,CAAC;QACtC,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC;IAChD,CAAC;IAED,OAAO,EAAE,OAAO,SAAA,EAAE,OAAO,SAAA,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,MAAc,EAAE,MAAc;IAClE,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,MAAc,EAAE,MAAc;IAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,aAAa,CAAC,KAAa;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAa;IAC7C,OAAO;QACL,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,IAAI,CAAC,WAAW;QACvB,MAAM,EAAE,IAAI,CAAC,YAAY;KAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CACrC,kBAA2B,EAC3B,UAAmB;IAEnB,IAAM,SAAS,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;IAC7D,IAAM,UAAU,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC;IAEtD,yDAAyD;IACzD,IAAM,aAAa,GAAG,gBAAgB,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IAEvE,OAAO;QACL,CAAC,EAAE,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,aAAa,CAAC,OAAO;QAC3D,CAAC,EAAE,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,aAAa,CAAC,OAAO;QACzD,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC;QACrC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC;KACxC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,IAAa,EACb,SAA6B;IAE7B,IAAM,MAAM,GAAG;QACb,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,IAAI,CAAC,WAAW;QACvB,MAAM,EAAE,IAAI,CAAC,YAAY;KAC1B,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACjC,CAAC;QACD,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|