@shopify/flash-list 2.0.0-alpha.2 → 2.0.0-alpha.21
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 +67 -96
- package/android/src/main/kotlin/com/shopify/reactnative/flash_list/BlankAreaEvent.kt +2 -2
- package/dist/AnimatedFlashList.d.ts +0 -1
- 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 +22 -3
- package/dist/FlashList.js.map +1 -1
- package/dist/FlashListProps.d.ts +33 -13
- 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/GridLayoutProviderWithProps.js +1 -2
- package/dist/GridLayoutProviderWithProps.js.map +1 -1
- package/dist/MasonryFlashList.d.ts +2 -2
- package/dist/MasonryFlashList.d.ts.map +1 -1
- package/dist/MasonryFlashList.js.map +1 -1
- package/dist/PureComponentWrapper.js +1 -1
- package/dist/PureComponentWrapper.js.map +1 -1
- package/dist/__tests__/AverageWindow.test.js.map +1 -1
- package/dist/__tests__/ConsecutiveNumbers.test.d.ts +2 -0
- package/dist/__tests__/ConsecutiveNumbers.test.d.ts.map +1 -0
- package/dist/__tests__/ConsecutiveNumbers.test.js +224 -0
- package/dist/__tests__/ConsecutiveNumbers.test.js.map +1 -0
- package/dist/__tests__/FlashList.test.js.map +1 -1
- package/dist/__tests__/GridLayoutManager.test.d.ts +2 -0
- package/dist/__tests__/GridLayoutManager.test.d.ts.map +1 -0
- package/dist/__tests__/GridLayoutManager.test.js +69 -0
- package/dist/__tests__/GridLayoutManager.test.js.map +1 -0
- package/dist/__tests__/GridLayoutProviderWithProps.test.js.map +1 -1
- package/dist/__tests__/LayoutCommitObserver.test.d.ts +2 -0
- package/dist/__tests__/LayoutCommitObserver.test.d.ts.map +1 -0
- package/dist/__tests__/LayoutCommitObserver.test.js +35 -0
- package/dist/__tests__/LayoutCommitObserver.test.js.map +1 -0
- package/dist/__tests__/LinearLayoutManager.test.d.ts +2 -0
- package/dist/__tests__/LinearLayoutManager.test.d.ts.map +1 -0
- package/dist/__tests__/LinearLayoutManager.test.js +140 -0
- package/dist/__tests__/LinearLayoutManager.test.js.map +1 -0
- package/dist/__tests__/MasonryFlashList.test.js.map +1 -1
- package/dist/__tests__/MasonryLayoutManager.test.d.ts +2 -0
- package/dist/__tests__/MasonryLayoutManager.test.d.ts.map +1 -0
- package/dist/__tests__/MasonryLayoutManager.test.js +148 -0
- package/dist/__tests__/MasonryLayoutManager.test.js.map +1 -0
- package/dist/__tests__/RecyclerView.test.d.ts +2 -0
- package/dist/__tests__/RecyclerView.test.d.ts.map +1 -0
- package/dist/__tests__/RecyclerView.test.js +103 -0
- package/dist/__tests__/RecyclerView.test.js.map +1 -0
- 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__/ViewabilityHelper.test.js.map +1 -1
- package/dist/__tests__/findVisibleIndex.test.d.ts +2 -0
- package/dist/__tests__/findVisibleIndex.test.d.ts.map +1 -0
- package/dist/__tests__/findVisibleIndex.test.js +259 -0
- package/dist/__tests__/findVisibleIndex.test.js.map +1 -0
- package/dist/__tests__/helpers/createLayoutManager.d.ts +34 -0
- package/dist/__tests__/helpers/createLayoutManager.d.ts.map +1 -0
- package/dist/__tests__/helpers/createLayoutManager.js +110 -0
- package/dist/__tests__/helpers/createLayoutManager.js.map +1 -0
- package/dist/__tests__/helpers/mountFlashList.d.ts +2 -2
- package/dist/__tests__/helpers/mountFlashList.d.ts.map +1 -1
- package/dist/__tests__/helpers/mountFlashList.js +2 -2
- package/dist/__tests__/helpers/mountFlashList.js.map +1 -1
- package/dist/__tests__/helpers/mountMasonryFlashList.d.ts +2 -2
- package/dist/__tests__/helpers/mountMasonryFlashList.d.ts.map +1 -1
- package/dist/__tests__/helpers/mountMasonryFlashList.js +2 -2
- package/dist/__tests__/helpers/mountMasonryFlashList.js.map +1 -1
- package/dist/__tests__/useBlankAreaTracker.test.js.map +1 -1
- package/dist/__tests__/useUnmountAwareCallbacks.test.d.ts +2 -0
- package/dist/__tests__/useUnmountAwareCallbacks.test.d.ts.map +1 -0
- package/dist/__tests__/useUnmountAwareCallbacks.test.js +185 -0
- package/dist/__tests__/useUnmountAwareCallbacks.test.js.map +1 -0
- package/dist/benchmark/AutoScrollHelper.js +2 -2
- package/dist/benchmark/AutoScrollHelper.js.map +1 -1
- package/dist/benchmark/JSFPSMonitor.js.map +1 -1
- package/dist/benchmark/roundToDecimalPlaces.js +1 -2
- package/dist/benchmark/roundToDecimalPlaces.js.map +1 -1
- package/dist/benchmark/useBenchmark.js +2 -28
- package/dist/benchmark/useBenchmark.js.map +1 -1
- package/dist/benchmark/useBlankAreaTracker.js +1 -2
- package/dist/benchmark/useBlankAreaTracker.js.map +1 -1
- package/dist/benchmark/useDataMultiplier.js +1 -2
- package/dist/benchmark/useDataMultiplier.js.map +1 -1
- package/dist/benchmark/useFlatListBenchmark.d.ts +0 -1
- package/dist/benchmark/useFlatListBenchmark.d.ts.map +1 -1
- package/dist/benchmark/useFlatListBenchmark.js +9 -9
- package/dist/benchmark/useFlatListBenchmark.js.map +1 -1
- package/dist/enableNewCore.d.ts.map +1 -1
- package/dist/enableNewCore.js +4 -4
- package/dist/enableNewCore.js.map +1 -1
- package/dist/errors/CustomError.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -3
- package/dist/index.js.map +1 -1
- package/dist/native/auto-layout/AutoLayoutView.d.ts +1 -1
- package/dist/native/auto-layout/AutoLayoutView.d.ts.map +1 -1
- package/dist/native/auto-layout/AutoLayoutView.js +1 -1
- package/dist/native/auto-layout/AutoLayoutView.js.map +1 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.d.ts.map +1 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.d.ts +1 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.android.d.ts +2 -0
- package/dist/native/config/PlatformHelper.android.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.android.js +2 -0
- package/dist/native/config/PlatformHelper.android.js.map +1 -1
- package/dist/native/config/PlatformHelper.d.ts +2 -0
- package/dist/native/config/PlatformHelper.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.ios.d.ts +2 -0
- package/dist/native/config/PlatformHelper.ios.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.ios.js +2 -0
- package/dist/native/config/PlatformHelper.ios.js.map +1 -1
- package/dist/native/config/PlatformHelper.js +2 -0
- package/dist/native/config/PlatformHelper.js.map +1 -1
- package/dist/native/config/PlatformHelper.web.d.ts +2 -0
- package/dist/native/config/PlatformHelper.web.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.web.js +3 -1
- package/dist/native/config/PlatformHelper.web.js.map +1 -1
- package/dist/recyclerview/LayoutCommitObserver.d.ts +12 -0
- package/dist/recyclerview/LayoutCommitObserver.d.ts.map +1 -0
- package/dist/recyclerview/LayoutCommitObserver.js +62 -0
- package/dist/recyclerview/LayoutCommitObserver.js.map +1 -0
- package/dist/recyclerview/RecyclerView.d.ts +3 -2
- package/dist/recyclerview/RecyclerView.d.ts.map +1 -1
- package/dist/recyclerview/RecyclerView.js +133 -69
- package/dist/recyclerview/RecyclerView.js.map +1 -1
- package/dist/recyclerview/RecyclerViewContextProvider.d.ts +41 -7
- package/dist/recyclerview/RecyclerViewContextProvider.d.ts.map +1 -1
- package/dist/recyclerview/RecyclerViewContextProvider.js +6 -2
- package/dist/recyclerview/RecyclerViewContextProvider.js.map +1 -1
- package/dist/recyclerview/RecyclerViewManager.d.ts +31 -7
- package/dist/recyclerview/RecyclerViewManager.d.ts.map +1 -1
- package/dist/recyclerview/RecyclerViewManager.js +154 -117
- package/dist/recyclerview/RecyclerViewManager.js.map +1 -1
- package/dist/recyclerview/RecyclerViewProps.d.ts +1 -1
- package/dist/recyclerview/RecyclerViewProps.d.ts.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 +8 -6
- package/dist/recyclerview/ViewHolder.js.map +1 -1
- package/dist/recyclerview/ViewHolderCollection.d.ts +10 -4
- package/dist/recyclerview/ViewHolderCollection.d.ts.map +1 -1
- package/dist/recyclerview/ViewHolderCollection.js +26 -10
- package/dist/recyclerview/ViewHolderCollection.js.map +1 -1
- package/dist/recyclerview/components/ScrollAnchor.d.ts +2 -1
- package/dist/recyclerview/components/ScrollAnchor.d.ts.map +1 -1
- package/dist/recyclerview/components/ScrollAnchor.js +12 -9
- package/dist/recyclerview/components/ScrollAnchor.js.map +1 -1
- package/dist/recyclerview/components/StickyHeaders.d.ts +2 -2
- package/dist/recyclerview/components/StickyHeaders.d.ts.map +1 -1
- package/dist/recyclerview/components/StickyHeaders.js +44 -45
- package/dist/recyclerview/components/StickyHeaders.js.map +1 -1
- package/dist/recyclerview/helpers/ConsecutiveNumbers.d.ts +1 -1
- package/dist/recyclerview/helpers/ConsecutiveNumbers.d.ts.map +1 -1
- package/dist/recyclerview/helpers/ConsecutiveNumbers.js +2 -2
- package/dist/recyclerview/helpers/ConsecutiveNumbers.js.map +1 -1
- package/dist/recyclerview/helpers/EngagedIndicesTracker.d.ts +48 -2
- package/dist/recyclerview/helpers/EngagedIndicesTracker.d.ts.map +1 -1
- package/dist/recyclerview/helpers/EngagedIndicesTracker.js +89 -19
- 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 -3
- package/dist/recyclerview/hooks/useBoundDetection.d.ts.map +1 -1
- package/dist/recyclerview/hooks/useBoundDetection.js +60 -28
- 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 +6 -5
- package/dist/recyclerview/hooks/useLayoutState.js.map +1 -1
- package/dist/recyclerview/hooks/useMappingHelper.d.ts +9 -0
- package/dist/recyclerview/hooks/useMappingHelper.d.ts.map +1 -0
- package/dist/recyclerview/hooks/useMappingHelper.js +19 -0
- package/dist/recyclerview/hooks/useMappingHelper.js.map +1 -0
- package/dist/recyclerview/hooks/useOnLoad.d.ts +2 -2
- package/dist/recyclerview/hooks/useOnLoad.d.ts.map +1 -1
- package/dist/recyclerview/hooks/useOnLoad.js +9 -10
- 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 +343 -191
- 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 +3 -4
- package/dist/recyclerview/hooks/useRecyclingState.js.map +1 -1
- package/dist/recyclerview/hooks/useSecondaryProps.d.ts +1 -1
- package/dist/recyclerview/hooks/useSecondaryProps.d.ts.map +1 -1
- package/dist/recyclerview/hooks/useSecondaryProps.js +15 -12
- package/dist/recyclerview/hooks/useSecondaryProps.js.map +1 -1
- package/dist/recyclerview/hooks/useUnmountAwareCallbacks.d.ts +15 -0
- package/dist/recyclerview/hooks/useUnmountAwareCallbacks.d.ts.map +1 -0
- package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js +63 -0
- package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js.map +1 -0
- package/dist/recyclerview/hooks/useUnmountFlag.d.ts +0 -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 +61 -25
- package/dist/recyclerview/layout-managers/GridLayoutManager.js.map +1 -1
- package/dist/recyclerview/layout-managers/LayoutManager.d.ts +36 -21
- package/dist/recyclerview/layout-managers/LayoutManager.d.ts.map +1 -1
- package/dist/recyclerview/layout-managers/LayoutManager.js +96 -28
- package/dist/recyclerview/layout-managers/LayoutManager.js.map +1 -1
- package/dist/recyclerview/layout-managers/LinearLayoutManager.d.ts +1 -2
- package/dist/recyclerview/layout-managers/LinearLayoutManager.d.ts.map +1 -1
- package/dist/recyclerview/layout-managers/LinearLayoutManager.js +3 -3
- package/dist/recyclerview/layout-managers/LinearLayoutManager.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 +30 -16
- package/dist/recyclerview/layout-managers/MasonryLayoutManager.js.map +1 -1
- package/dist/recyclerview/utils/adjustOffsetForRTL.js +1 -2
- package/dist/recyclerview/utils/adjustOffsetForRTL.js.map +1 -1
- package/dist/recyclerview/utils/componentUtils.d.ts +1 -1
- package/dist/recyclerview/utils/componentUtils.d.ts.map +1 -1
- package/dist/recyclerview/utils/componentUtils.js.map +1 -1
- package/dist/recyclerview/utils/findVisibleIndex.d.ts.map +1 -1
- package/dist/recyclerview/utils/findVisibleIndex.js +3 -5
- package/dist/recyclerview/utils/findVisibleIndex.js.map +1 -1
- package/dist/recyclerview/utils/measureLayout.d.ts +24 -28
- package/dist/recyclerview/utils/measureLayout.d.ts.map +1 -1
- package/dist/recyclerview/utils/measureLayout.js +36 -6
- package/dist/recyclerview/utils/measureLayout.js.map +1 -1
- package/dist/recyclerview/utils/measureLayout.web.d.ts +29 -0
- package/dist/recyclerview/utils/measureLayout.web.d.ts.map +1 -0
- package/dist/recyclerview/utils/measureLayout.web.js +87 -0
- package/dist/recyclerview/utils/measureLayout.web.js.map +1 -0
- package/dist/specs/AutoLayoutNativeComponent.d.ts +1 -2
- package/dist/specs/AutoLayoutNativeComponent.d.ts.map +1 -1
- package/dist/specs/CellContainerNativeComponent.d.ts +0 -1
- package/dist/specs/CellContainerNativeComponent.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/AverageWindow.js.map +1 -1
- package/dist/utils/ContentContainerUtils.d.ts.map +1 -1
- package/dist/utils/ContentContainerUtils.js.map +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 +4 -3
- package/src/AnimatedFlashList.ts +3 -2
- package/src/FlashList.tsx +25 -1
- package/src/FlashListProps.ts +42 -11
- package/src/FlashListRef.ts +320 -0
- package/src/MasonryFlashList.tsx +2 -2
- package/src/__tests__/ConsecutiveNumbers.test.ts +232 -0
- package/src/__tests__/GridLayoutManager.test.ts +113 -0
- package/src/__tests__/LayoutCommitObserver.test.tsx +60 -0
- package/src/__tests__/LinearLayoutManager.test.ts +227 -0
- package/src/__tests__/MasonryLayoutManager.test.ts +202 -0
- package/src/__tests__/RecyclerView.test.tsx +144 -0
- package/src/__tests__/RenderStackManager.test.ts +574 -0
- package/src/__tests__/findVisibleIndex.test.ts +369 -0
- package/src/__tests__/helpers/createLayoutManager.ts +141 -0
- package/src/__tests__/useUnmountAwareCallbacks.test.tsx +285 -0
- package/src/benchmark/useBenchmark.ts +0 -37
- package/src/benchmark/useFlatListBenchmark.ts +2 -2
- package/src/enableNewCore.ts +3 -1
- package/src/index.ts +14 -3
- package/src/native/config/PlatformHelper.android.ts +2 -0
- package/src/native/config/PlatformHelper.ios.ts +2 -0
- package/src/native/config/PlatformHelper.ts +2 -0
- package/src/native/config/PlatformHelper.web.ts +3 -1
- package/src/recyclerview/LayoutCommitObserver.tsx +74 -0
- package/src/recyclerview/RecyclerView.tsx +178 -89
- package/src/recyclerview/RecyclerViewContextProvider.ts +53 -7
- package/src/recyclerview/RecyclerViewManager.ts +176 -97
- package/src/recyclerview/RecyclerViewProps.ts +2 -1
- package/src/recyclerview/RenderStackManager.ts +317 -0
- package/src/recyclerview/ViewHolder.tsx +13 -6
- package/src/recyclerview/ViewHolderCollection.tsx +45 -16
- package/src/recyclerview/components/ScrollAnchor.tsx +24 -11
- package/src/recyclerview/components/StickyHeaders.tsx +70 -58
- package/src/recyclerview/helpers/ConsecutiveNumbers.ts +2 -2
- package/src/recyclerview/helpers/EngagedIndicesTracker.ts +135 -25
- package/src/recyclerview/helpers/RenderTimeTracker.ts +42 -0
- package/src/recyclerview/helpers/VelocityTracker.ts +77 -0
- package/src/recyclerview/hooks/useBoundDetection.ts +74 -25
- package/src/recyclerview/hooks/useLayoutState.ts +15 -6
- package/src/recyclerview/hooks/useMappingHelper.ts +20 -0
- package/src/recyclerview/hooks/useOnLoad.ts +11 -10
- package/src/recyclerview/hooks/useRecyclerViewController.tsx +380 -241
- package/src/recyclerview/hooks/useRecyclerViewManager.ts +13 -1
- package/src/recyclerview/hooks/useRecyclingState.ts +11 -7
- package/src/recyclerview/hooks/useSecondaryProps.tsx +12 -7
- package/src/recyclerview/hooks/useUnmountAwareCallbacks.ts +73 -0
- package/src/recyclerview/hooks/useUnmountFlag.ts +1 -0
- package/src/recyclerview/layout-managers/GridLayoutManager.ts +68 -27
- package/src/recyclerview/layout-managers/LayoutManager.ts +116 -42
- package/src/recyclerview/layout-managers/LinearLayoutManager.ts +12 -8
- package/src/recyclerview/layout-managers/MasonryLayoutManager.ts +34 -13
- package/src/recyclerview/utils/componentUtils.ts +1 -1
- package/src/recyclerview/utils/findVisibleIndex.ts +1 -2
- package/src/recyclerview/utils/measureLayout.ts +41 -2
- package/src/recyclerview/utils/measureLayout.web.ts +102 -0
- package/src/viewability/ViewToken.ts +2 -2
- package/src/viewability/ViewabilityHelper.ts +1 -1
- package/src/viewability/ViewabilityManager.ts +16 -9
- 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/recyclerview/RecycleKeyManager.ts +0 -185
|
@@ -11,6 +11,8 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
11
11
|
tslib_1.__extends(RVGridLayoutManagerImpl, _super);
|
|
12
12
|
function RVGridLayoutManagerImpl(params, previousLayoutManager) {
|
|
13
13
|
var _this = _super.call(this, params, previousLayoutManager) || this;
|
|
14
|
+
/** If there's a span change for grid layout, we need to recompute all the widths */
|
|
15
|
+
_this.fullRelayoutRequired = false;
|
|
14
16
|
_this.boundedSize = params.windowSize.width;
|
|
15
17
|
return _this;
|
|
16
18
|
}
|
|
@@ -25,11 +27,8 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
25
27
|
prevNumColumns !== params.maxColumns) {
|
|
26
28
|
this.boundedSize = params.windowSize.width;
|
|
27
29
|
if (this.layouts.length > 0) {
|
|
28
|
-
//update all widths
|
|
29
|
-
|
|
30
|
-
this.layouts[i].width = this.getWidth(i);
|
|
31
|
-
}
|
|
32
|
-
//console.log("-----> recomputeLayouts");
|
|
30
|
+
// update all widths
|
|
31
|
+
this.updateAllWidths();
|
|
33
32
|
this.recomputeLayouts(0, this.layouts.length - 1);
|
|
34
33
|
this.requiresRepaint = true;
|
|
35
34
|
}
|
|
@@ -59,6 +58,12 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
59
58
|
}
|
|
60
59
|
finally { if (e_1) throw e_1.error; }
|
|
61
60
|
}
|
|
61
|
+
// TODO: Can be optimized
|
|
62
|
+
if (this.fullRelayoutRequired) {
|
|
63
|
+
this.updateAllWidths();
|
|
64
|
+
this.fullRelayoutRequired = false;
|
|
65
|
+
return 0;
|
|
66
|
+
}
|
|
62
67
|
};
|
|
63
68
|
/**
|
|
64
69
|
* Estimates layout dimensions for an item at the given index.
|
|
@@ -71,6 +76,13 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
71
76
|
layout.isWidthMeasured = true;
|
|
72
77
|
layout.enforcedWidth = true;
|
|
73
78
|
};
|
|
79
|
+
/**
|
|
80
|
+
* Handles span change for an item.
|
|
81
|
+
* @param index Index of the item
|
|
82
|
+
*/
|
|
83
|
+
RVGridLayoutManagerImpl.prototype.handleSpanChange = function (index) {
|
|
84
|
+
this.fullRelayoutRequired = true;
|
|
85
|
+
};
|
|
74
86
|
/**
|
|
75
87
|
* Returns the total size of the layout area.
|
|
76
88
|
* @returns RVDimension containing width and height of the layout
|
|
@@ -78,10 +90,10 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
78
90
|
RVGridLayoutManagerImpl.prototype.getLayoutSize = function () {
|
|
79
91
|
if (this.layouts.length === 0)
|
|
80
92
|
return { width: 0, height: 0 };
|
|
81
|
-
var
|
|
93
|
+
var totalHeight = this.computeTotalHeightTillRow(this.layouts.length - 1);
|
|
82
94
|
return {
|
|
83
95
|
width: this.boundedSize,
|
|
84
|
-
height:
|
|
96
|
+
height: totalHeight,
|
|
85
97
|
};
|
|
86
98
|
};
|
|
87
99
|
/**
|
|
@@ -90,14 +102,14 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
90
102
|
* @param endIndex Ending index of items to recompute
|
|
91
103
|
*/
|
|
92
104
|
RVGridLayoutManagerImpl.prototype.recomputeLayouts = function (startIndex, endIndex) {
|
|
93
|
-
var newStartIndex = this.
|
|
105
|
+
var newStartIndex = this.locateFirstIndexInRow(Math.max(0, startIndex - 1));
|
|
94
106
|
var startVal = this.getLayout(newStartIndex);
|
|
95
107
|
var startX = startVal.x;
|
|
96
108
|
var startY = startVal.y;
|
|
97
109
|
for (var i = newStartIndex; i <= endIndex; i++) {
|
|
98
110
|
var layout = this.getLayout(i);
|
|
99
111
|
if (!this.checkBounds(startX, layout.width)) {
|
|
100
|
-
var tallestItem = this.processAndReturnTallestItemInRow(i);
|
|
112
|
+
var tallestItem = this.processAndReturnTallestItemInRow(i - 1);
|
|
101
113
|
startY = tallestItem.y + tallestItem.height;
|
|
102
114
|
startX = 0;
|
|
103
115
|
}
|
|
@@ -105,6 +117,9 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
105
117
|
layout.y = startY;
|
|
106
118
|
startX += layout.width;
|
|
107
119
|
}
|
|
120
|
+
if (endIndex === this.layouts.length - 1) {
|
|
121
|
+
this.processAndReturnTallestItemInRow(endIndex);
|
|
122
|
+
}
|
|
108
123
|
};
|
|
109
124
|
/**
|
|
110
125
|
* Calculates the width of an item based on its span.
|
|
@@ -112,27 +127,23 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
112
127
|
* @returns Width of the item
|
|
113
128
|
*/
|
|
114
129
|
RVGridLayoutManagerImpl.prototype.getWidth = function (index) {
|
|
115
|
-
|
|
116
|
-
var span = (_a = this.getSpanSizeInfo(index).span) !== null && _a !== void 0 ? _a : 1;
|
|
117
|
-
return (this.boundedSize / this.maxColumns) * span;
|
|
130
|
+
return (this.boundedSize / this.maxColumns) * this.getSpan(index);
|
|
118
131
|
};
|
|
119
132
|
/**
|
|
120
133
|
* Processes items in a row and returns the tallest item.
|
|
121
134
|
* Also handles height normalization for items in the same row.
|
|
122
135
|
* Tallest item per row helps in forcing tallest items height on neighbouring items.
|
|
123
|
-
* @param
|
|
136
|
+
* @param endIndex Index of the last item in the row
|
|
124
137
|
* @returns The tallest item in the row
|
|
125
138
|
*/
|
|
126
|
-
RVGridLayoutManagerImpl.prototype.processAndReturnTallestItemInRow = function (
|
|
139
|
+
RVGridLayoutManagerImpl.prototype.processAndReturnTallestItemInRow = function (endIndex) {
|
|
127
140
|
var _a, _b;
|
|
128
|
-
var startIndex = this.
|
|
129
|
-
var y = this.layouts[startIndex].y;
|
|
141
|
+
var startIndex = this.locateFirstIndexInRow(endIndex);
|
|
130
142
|
var tallestItem;
|
|
131
143
|
var maxHeight = 0;
|
|
132
144
|
var i = startIndex;
|
|
133
145
|
var isMeasured = false;
|
|
134
|
-
|
|
135
|
-
while (Math.ceil(this.layouts[i].y) === Math.ceil(y)) {
|
|
146
|
+
while (i <= endIndex) {
|
|
136
147
|
var layout = this.layouts[i];
|
|
137
148
|
isMeasured = isMeasured || Boolean(layout.isHeightMeasured);
|
|
138
149
|
maxHeight = Math.max(maxHeight, layout.height);
|
|
@@ -145,6 +156,9 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
145
156
|
break;
|
|
146
157
|
}
|
|
147
158
|
}
|
|
159
|
+
if (!tallestItem && maxHeight > 0) {
|
|
160
|
+
maxHeight = Number.MAX_SAFE_INTEGER;
|
|
161
|
+
}
|
|
148
162
|
tallestItem = tallestItem !== null && tallestItem !== void 0 ? tallestItem : this.layouts[startIndex];
|
|
149
163
|
if (!isMeasured) {
|
|
150
164
|
return tallestItem;
|
|
@@ -156,8 +170,7 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
156
170
|
this.requiresRepaint = true;
|
|
157
171
|
}
|
|
158
172
|
i = startIndex;
|
|
159
|
-
|
|
160
|
-
while (Math.ceil(this.layouts[i].y) === Math.ceil(y)) {
|
|
173
|
+
while (i <= endIndex) {
|
|
161
174
|
this.layouts[i].minHeight = targetHeight;
|
|
162
175
|
if (targetHeight > 0) {
|
|
163
176
|
this.layouts[i].height = targetHeight;
|
|
@@ -171,6 +184,30 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
171
184
|
}
|
|
172
185
|
return tallestItem;
|
|
173
186
|
};
|
|
187
|
+
/**
|
|
188
|
+
* Computes the total height of the layout.
|
|
189
|
+
* @param endIndex Index of the last item in the row
|
|
190
|
+
* @returns Total height of the layout
|
|
191
|
+
*/
|
|
192
|
+
RVGridLayoutManagerImpl.prototype.computeTotalHeightTillRow = function (endIndex) {
|
|
193
|
+
var startIndex = this.locateFirstIndexInRow(endIndex);
|
|
194
|
+
var y = this.layouts[startIndex].y;
|
|
195
|
+
var maxHeight = 0;
|
|
196
|
+
var i = startIndex;
|
|
197
|
+
while (i <= endIndex) {
|
|
198
|
+
maxHeight = Math.max(maxHeight, this.layouts[i].height);
|
|
199
|
+
i++;
|
|
200
|
+
if (i >= this.layouts.length) {
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return y + maxHeight;
|
|
205
|
+
};
|
|
206
|
+
RVGridLayoutManagerImpl.prototype.updateAllWidths = function () {
|
|
207
|
+
for (var i = 0; i < this.layouts.length; i++) {
|
|
208
|
+
this.layouts[i].width = this.getWidth(i);
|
|
209
|
+
}
|
|
210
|
+
};
|
|
174
211
|
/**
|
|
175
212
|
* Checks if an item can fit within the bounded width.
|
|
176
213
|
* @param itemX Starting X position of the item
|
|
@@ -178,19 +215,18 @@ var RVGridLayoutManagerImpl = /** @class */ (function (_super) {
|
|
|
178
215
|
* @returns True if the item fits within bounds
|
|
179
216
|
*/
|
|
180
217
|
RVGridLayoutManagerImpl.prototype.checkBounds = function (itemX, width) {
|
|
181
|
-
// TODO: Manage precision problems
|
|
182
218
|
return itemX + width <= this.boundedSize + 0.9;
|
|
183
219
|
};
|
|
184
220
|
/**
|
|
185
221
|
* Locates the index of the first item in the current row.
|
|
186
|
-
* @param
|
|
222
|
+
* @param itemIndex Index to start searching from
|
|
187
223
|
* @returns Index of the first item in the row
|
|
188
224
|
*/
|
|
189
|
-
RVGridLayoutManagerImpl.prototype.
|
|
190
|
-
if (
|
|
225
|
+
RVGridLayoutManagerImpl.prototype.locateFirstIndexInRow = function (itemIndex) {
|
|
226
|
+
if (itemIndex === 0) {
|
|
191
227
|
return 0;
|
|
192
228
|
}
|
|
193
|
-
var i =
|
|
229
|
+
var i = itemIndex;
|
|
194
230
|
for (; i >= 0; i--) {
|
|
195
231
|
if (this.layouts[i].x === 0) {
|
|
196
232
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridLayoutManager.js","sourceRoot":"","sources":["../../../src/recyclerview/layout-managers/GridLayoutManager.ts"],"names":[],"mappings":";;;;AAAA,iDAMyB;AAEzB;;;GAGG;AACH;IAA6C,mDAAe;
|
|
1
|
+
{"version":3,"file":"GridLayoutManager.js","sourceRoot":"","sources":["../../../src/recyclerview/layout-managers/GridLayoutManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
@@ -96,6 +99,7 @@ export declare abstract class RVLayoutManager {
|
|
|
96
99
|
* @param params New layout parameters
|
|
97
100
|
*/
|
|
98
101
|
updateLayoutParams(params: LayoutParams): void;
|
|
102
|
+
getLayoutCount(): number;
|
|
99
103
|
/**
|
|
100
104
|
* Abstract method to recompute layouts for items in the given range.
|
|
101
105
|
* @param startIndex Starting index of items to recompute
|
|
@@ -113,11 +117,20 @@ export declare abstract class RVLayoutManager {
|
|
|
113
117
|
*/
|
|
114
118
|
protected abstract estimateLayout(index: number): void;
|
|
115
119
|
/**
|
|
116
|
-
* 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.
|
|
117
131
|
* @param index Index of the item
|
|
118
|
-
* @returns SpanSizeInfo for the item
|
|
119
132
|
*/
|
|
120
|
-
protected
|
|
133
|
+
protected handleSpanChange(index: number): void;
|
|
121
134
|
/**
|
|
122
135
|
* Gets the maximum index to process in a single layout pass.
|
|
123
136
|
* @param startIndex Starting index
|
|
@@ -130,12 +143,14 @@ export declare abstract class RVLayoutManager {
|
|
|
130
143
|
* @returns Minimum index to process
|
|
131
144
|
*/
|
|
132
145
|
private getMinRecomputeIndex;
|
|
146
|
+
private _recomputeLayouts;
|
|
133
147
|
/**
|
|
134
148
|
* Computes size estimates and finds the minimum recompute index.
|
|
135
149
|
* @param layoutInfo Array of layout information for items
|
|
136
150
|
* @returns Minimum index that needs recomputation
|
|
137
151
|
*/
|
|
138
|
-
private
|
|
152
|
+
private computeEstimatesAndMinMaxChangedLayout;
|
|
153
|
+
private computeMinIndexWithChangedSpan;
|
|
139
154
|
}
|
|
140
155
|
/**
|
|
141
156
|
* Configuration parameters for the layout manager
|
|
@@ -150,27 +165,27 @@ export interface LayoutParams {
|
|
|
150
165
|
* Determines if the list scrolls horizontally (true) or vertically (false)
|
|
151
166
|
* Affects how items are positioned and which dimension is used for scrolling
|
|
152
167
|
*/
|
|
153
|
-
horizontal
|
|
168
|
+
horizontal: boolean;
|
|
154
169
|
/**
|
|
155
170
|
* Maximum number of columns in a grid layout
|
|
156
171
|
* Controls how many items can be placed side by side
|
|
157
172
|
*/
|
|
158
|
-
maxColumns
|
|
173
|
+
maxColumns: number;
|
|
159
174
|
/**
|
|
160
175
|
* When true, attempts to optimize item placement for better space utilization
|
|
161
176
|
* May affect the ordering of items to minimize empty space
|
|
162
177
|
*/
|
|
163
|
-
optimizeItemArrangement
|
|
178
|
+
optimizeItemArrangement: boolean;
|
|
164
179
|
/**
|
|
165
180
|
* Callback to manually override layout properties for specific items
|
|
166
181
|
* Allows custom control over span and size for individual items
|
|
167
182
|
*/
|
|
168
|
-
overrideItemLayout
|
|
183
|
+
overrideItemLayout: (index: number, layout: SpanSizeInfo) => void;
|
|
169
184
|
/**
|
|
170
185
|
* Function to determine the type of an item at a specific index
|
|
171
186
|
* Used for size estimation and optimization based on item types
|
|
172
187
|
*/
|
|
173
|
-
getItemType
|
|
188
|
+
getItemType: (index: number) => string;
|
|
174
189
|
}
|
|
175
190
|
/**
|
|
176
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.
|
|
@@ -185,24 +190,42 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
185
190
|
this.optimizeItemArrangement =
|
|
186
191
|
(_c = params.optimizeItemArrangement) !== null && _c !== void 0 ? _c : this.optimizeItemArrangement;
|
|
187
192
|
};
|
|
193
|
+
RVLayoutManager.prototype.getLayoutCount = function () {
|
|
194
|
+
return this.layouts.length;
|
|
195
|
+
};
|
|
188
196
|
/**
|
|
189
|
-
* 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.
|
|
190
202
|
* @param index Index of the item
|
|
191
|
-
* @returns
|
|
203
|
+
* @returns Span for the item
|
|
192
204
|
*/
|
|
193
|
-
RVLayoutManager.prototype.
|
|
205
|
+
RVLayoutManager.prototype.getSpan = function (index, skipTracking) {
|
|
194
206
|
var _a;
|
|
207
|
+
if (skipTracking === void 0) { skipTracking = false; }
|
|
195
208
|
this.spanSizeInfo.span = undefined;
|
|
196
|
-
|
|
197
|
-
|
|
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;
|
|
198
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) { };
|
|
199
221
|
/**
|
|
200
222
|
* Gets the maximum index to process in a single layout pass.
|
|
201
223
|
* @param startIndex Starting index
|
|
202
224
|
* @returns Maximum index to process
|
|
203
225
|
*/
|
|
204
226
|
RVLayoutManager.prototype.getMaxRecomputeIndex = function (startIndex) {
|
|
205
|
-
return Math.min(startIndex
|
|
227
|
+
return Math.min(Math.max(startIndex, this.currentMaxIndexWithChangedLayout) +
|
|
228
|
+
this.maxItemsToProcess, this.layouts.length - 1);
|
|
206
229
|
};
|
|
207
230
|
/**
|
|
208
231
|
* Gets the minimum index to process in a single layout pass.
|
|
@@ -212,12 +235,29 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
212
235
|
RVLayoutManager.prototype.getMinRecomputeIndex = function (startIndex) {
|
|
213
236
|
return startIndex;
|
|
214
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
|
+
};
|
|
215
255
|
/**
|
|
216
256
|
* Computes size estimates and finds the minimum recompute index.
|
|
217
257
|
* @param layoutInfo Array of layout information for items
|
|
218
258
|
* @returns Minimum index that needs recomputation
|
|
219
259
|
*/
|
|
220
|
-
RVLayoutManager.prototype.
|
|
260
|
+
RVLayoutManager.prototype.computeEstimatesAndMinMaxChangedLayout = function (layoutInfo) {
|
|
221
261
|
var e_2, _a;
|
|
222
262
|
var minRecomputeIndex = Number.MAX_VALUE;
|
|
223
263
|
try {
|
|
@@ -225,11 +265,14 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
225
265
|
var info = layoutInfo_1_1.value;
|
|
226
266
|
var index = info.index, dimensions = info.dimensions;
|
|
227
267
|
var storedLayout = this.layouts[index];
|
|
228
|
-
if (
|
|
268
|
+
if (index >= this.lastSkippedLayoutIndex ||
|
|
269
|
+
!storedLayout ||
|
|
270
|
+
!storedLayout.isHeightMeasured ||
|
|
229
271
|
!storedLayout.isWidthMeasured ||
|
|
230
272
|
(0, measureLayout_1.areDimensionsNotEqual)(storedLayout.height, dimensions.height) ||
|
|
231
273
|
(0, measureLayout_1.areDimensionsNotEqual)(storedLayout.width, dimensions.width)) {
|
|
232
274
|
minRecomputeIndex = Math.min(minRecomputeIndex, index);
|
|
275
|
+
this.currentMaxIndexWithChangedLayout = Math.max(this.currentMaxIndexWithChangedLayout, index);
|
|
233
276
|
}
|
|
234
277
|
this.heightAverageWindow.addValue(dimensions.height, this.getItemType(index));
|
|
235
278
|
this.widthAverageWindow.addValue(dimensions.width, this.getItemType(index));
|
|
@@ -244,6 +287,31 @@ var RVLayoutManager = /** @class */ (function () {
|
|
|
244
287
|
}
|
|
245
288
|
return minRecomputeIndex;
|
|
246
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
|
+
};
|
|
247
315
|
return RVLayoutManager;
|
|
248
316
|
}());
|
|
249
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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"}
|