@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollAnchor.js","sourceRoot":"","sources":["../../../src/recyclerview/components/ScrollAnchor.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"ScrollAnchor.js","sourceRoot":"","sources":["../../../src/recyclerview/components/ScrollAnchor.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;;AA4BH,oCAgCC;;AA1DD,qDAAsE;AAEtE,2CAA0C;AAmB1C;;;;GAIG;AACH,SAAgB,YAAY,CAAC,EAGT;QAFlB,eAAe,qBAAA,EACf,UAAU,gBAAA;IAEJ,IAAA,KAAA,eAAkC,IAAA,gBAAQ,EAAC,OAAO,CAAC,IAAA,EAAlD,YAAY,QAAA,EAAE,eAAe,QAAqB,CAAC,CAAC,uBAAuB;IAElF,qCAAqC;IACrC,IAAA,2BAAmB,EACjB,eAAe,EACf,cAAM,OAAA,CAAC;QACL,QAAQ,EAAE,UAAC,MAAc;YACvB,eAAe,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,GAAG,MAAM,EAAb,CAAa,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC,EAJI,CAIJ,EACF,EAAE,CACH,CAAC;IAEF,4DAA4D;IAC5D,IAAM,MAAM,GAAG,IAAA,eAAO,EAAC;QACrB,OAAO,CACL,8BAAC,uBAAU,IACT,KAAK,EAAE;gBACL,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,CAAC;gBACT,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;gBAClC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;aACpC,GACD,CACH,CAAC;IACJ,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAE/B,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -15,7 +15,7 @@ export interface StickyHeaderProps<TItem> {
|
|
|
15
15
|
/** Array of indices that should have sticky headers */
|
|
16
16
|
stickyHeaderIndices: number[];
|
|
17
17
|
/** The data array being rendered */
|
|
18
|
-
data:
|
|
18
|
+
data: ReadonlyArray<TItem>;
|
|
19
19
|
/** Animated value tracking scroll position */
|
|
20
20
|
scrollY: Animated.Value;
|
|
21
21
|
/** Function to render each item */
|
|
@@ -34,5 +34,5 @@ export interface StickyHeaderRef {
|
|
|
34
34
|
/** Reports scroll events to update sticky header positions */
|
|
35
35
|
reportScrollEvent: (event: NativeScrollEvent) => void;
|
|
36
36
|
}
|
|
37
|
-
export declare const StickyHeaders: <TItem>({ stickyHeaderIndices, renderItem, stickyHeaderRef, recyclerViewManager, scrollY, data, extraData, }: StickyHeaderProps<TItem>) => React.JSX.Element
|
|
37
|
+
export declare const StickyHeaders: <TItem>({ stickyHeaderIndices, renderItem, stickyHeaderRef, recyclerViewManager, scrollY, data, extraData, }: StickyHeaderProps<TItem>) => React.JSX.Element;
|
|
38
38
|
//# sourceMappingURL=StickyHeaders.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StickyHeaders.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/components/StickyHeaders.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAON,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"StickyHeaders.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/components/StickyHeaders.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAON,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAK7D;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,KAAK;IACtC,uDAAuD;IACvD,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,oCAAoC;IACpC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3B,8CAA8C;IAC9C,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC;IACxB,mCAAmC;IACnC,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC;IAChD,0CAA0C;IAC1C,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAClD,2CAA2C;IAC3C,mBAAmB,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChD,4CAA4C;IAC5C,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,iBAAiB,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACvD;AAOD,eAAO,MAAM,aAAa,GAAI,KAAK,EAAG,sGAQnC,iBAAiB,CAAC,KAAK,CAAC,sBA8H1B,CAAC"}
|
|
@@ -8,38 +8,56 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.StickyHeaders = void 0;
|
|
9
9
|
var tslib_1 = require("tslib");
|
|
10
10
|
var react_1 = tslib_1.__importStar(require("react"));
|
|
11
|
-
var CompatView_1 = require("./CompatView");
|
|
12
11
|
var ViewHolder_1 = require("../ViewHolder");
|
|
12
|
+
var CompatView_1 = require("./CompatView");
|
|
13
13
|
var StickyHeaders = function (_a) {
|
|
14
14
|
var stickyHeaderIndices = _a.stickyHeaderIndices, renderItem = _a.renderItem, stickyHeaderRef = _a.stickyHeaderRef, recyclerViewManager = _a.recyclerViewManager, scrollY = _a.scrollY, data = _a.data, extraData = _a.extraData;
|
|
15
|
-
var _b = tslib_1.__read((0, react_1.useState)({
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
var _b = tslib_1.__read((0, react_1.useState)({
|
|
16
|
+
currentStickyIndex: -1,
|
|
17
|
+
pushStartsAt: Number.MAX_SAFE_INTEGER,
|
|
18
|
+
}), 2), stickyHeaderState = _b[0], setStickyHeaderState = _b[1];
|
|
19
|
+
var currentStickyIndex = stickyHeaderState.currentStickyIndex, pushStartsAt = stickyHeaderState.pushStartsAt;
|
|
20
|
+
// sort indices and memoize compute
|
|
19
21
|
var sortedIndices = (0, react_1.useMemo)(function () {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
return tslib_1.__spreadArray([], tslib_1.__read(stickyHeaderIndices), false).sort(function (first, second) { return first - second; });
|
|
23
|
+
}, [stickyHeaderIndices]);
|
|
24
|
+
var legthInvalid = sortedIndices.length === 0 ||
|
|
25
|
+
recyclerViewManager.getDataLength() <=
|
|
26
|
+
sortedIndices[sortedIndices.length - 1];
|
|
25
27
|
var compute = (0, react_1.useCallback)(function () {
|
|
26
|
-
var _a, _b;
|
|
27
|
-
|
|
28
|
+
var _a, _b, _c, _d, _e, _f;
|
|
29
|
+
if (legthInvalid) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
var adjustedScrollOffset = recyclerViewManager.getLastScrollOffset();
|
|
28
33
|
// Binary search for current sticky index
|
|
29
|
-
var currentIndexInArray = findCurrentStickyIndex(sortedIndices,
|
|
34
|
+
var currentIndexInArray = findCurrentStickyIndex(sortedIndices, adjustedScrollOffset, function (index) { return recyclerViewManager.getLayout(index).y; });
|
|
30
35
|
var newStickyIndex = (_a = sortedIndices[currentIndexInArray]) !== null && _a !== void 0 ? _a : -1;
|
|
31
36
|
var newNextStickyIndex = (_b = sortedIndices[currentIndexInArray + 1]) !== null && _b !== void 0 ? _b : -1;
|
|
32
37
|
if (newNextStickyIndex > recyclerViewManager.getEngagedIndices().endIndex) {
|
|
33
38
|
newNextStickyIndex = -1;
|
|
34
39
|
}
|
|
40
|
+
// To make sure header offset is 0 in the interpolate compute
|
|
41
|
+
var newNextStickyY = newNextStickyIndex === -1
|
|
42
|
+
? Number.MAX_SAFE_INTEGER
|
|
43
|
+
: ((_d = (_c = recyclerViewManager.tryGetLayout(newNextStickyIndex)) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : 0) +
|
|
44
|
+
recyclerViewManager.firstItemOffset;
|
|
45
|
+
var newCurrentStickyHeight = (_f = (_e = recyclerViewManager.tryGetLayout(newStickyIndex)) === null || _e === void 0 ? void 0 : _e.height) !== null && _f !== void 0 ? _f : 0;
|
|
46
|
+
var newPushStartsAt = newNextStickyY - newCurrentStickyHeight;
|
|
35
47
|
if (newStickyIndex !== currentStickyIndex ||
|
|
36
|
-
|
|
37
|
-
|
|
48
|
+
newPushStartsAt !== pushStartsAt) {
|
|
49
|
+
setStickyHeaderState({
|
|
38
50
|
currentStickyIndex: newStickyIndex,
|
|
39
|
-
|
|
51
|
+
pushStartsAt: newPushStartsAt,
|
|
40
52
|
});
|
|
41
53
|
}
|
|
42
|
-
}, [
|
|
54
|
+
}, [
|
|
55
|
+
legthInvalid,
|
|
56
|
+
recyclerViewManager,
|
|
57
|
+
sortedIndices,
|
|
58
|
+
currentStickyIndex,
|
|
59
|
+
pushStartsAt,
|
|
60
|
+
]);
|
|
43
61
|
(0, react_1.useEffect)(function () {
|
|
44
62
|
compute();
|
|
45
63
|
}, [compute]);
|
|
@@ -48,47 +66,28 @@ var StickyHeaders = function (_a) {
|
|
|
48
66
|
reportScrollEvent: function () {
|
|
49
67
|
compute();
|
|
50
68
|
},
|
|
51
|
-
}); }, [
|
|
52
|
-
stickyHeaderIndices,
|
|
53
|
-
recyclerViewManager,
|
|
54
|
-
currentStickyIndex,
|
|
55
|
-
nextStickyIndex,
|
|
56
|
-
]);
|
|
69
|
+
}); }, [compute]);
|
|
57
70
|
var refHolder = (0, react_1.useRef)(new Map()).current;
|
|
58
|
-
// Memoize translateY calculation
|
|
59
71
|
var translateY = (0, react_1.useMemo)(function () {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
inputRange: [0, Infinity],
|
|
63
|
-
outputRange: [0, 0],
|
|
64
|
-
extrapolate: "clamp",
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
var currentLayout = recyclerViewManager.getLayout(currentStickyIndex);
|
|
68
|
-
var nextLayout = recyclerViewManager.getLayout(nextStickyIndex);
|
|
69
|
-
var pushStartsAt = nextLayout.y - currentLayout.height;
|
|
72
|
+
var _a, _b;
|
|
73
|
+
var currentStickyHeight = (_b = (_a = recyclerViewManager.tryGetLayout(currentStickyIndex)) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : 0;
|
|
70
74
|
return scrollY.interpolate({
|
|
71
|
-
inputRange: [
|
|
72
|
-
|
|
73
|
-
nextLayout.y + recyclerViewManager.firstItemOffset,
|
|
74
|
-
],
|
|
75
|
-
outputRange: [0, -currentLayout.height],
|
|
75
|
+
inputRange: [pushStartsAt, pushStartsAt + currentStickyHeight],
|
|
76
|
+
outputRange: [0, -currentStickyHeight],
|
|
76
77
|
extrapolate: "clamp",
|
|
77
78
|
});
|
|
78
|
-
}, [
|
|
79
|
+
}, [recyclerViewManager, currentStickyIndex, scrollY, pushStartsAt]);
|
|
79
80
|
// Memoize header content
|
|
80
81
|
var headerContent = (0, react_1.useMemo)(function () {
|
|
81
|
-
if (currentStickyIndex === -1)
|
|
82
|
-
return null;
|
|
83
82
|
return (react_1.default.createElement(CompatView_1.CompatAnimatedView, { style: {
|
|
84
83
|
position: "absolute",
|
|
85
84
|
top: 0,
|
|
86
85
|
left: 0,
|
|
87
86
|
right: 0,
|
|
87
|
+
zIndex: 1,
|
|
88
88
|
transform: [{ translateY: translateY }],
|
|
89
|
-
} },
|
|
90
|
-
|
|
91
|
-
}, [currentStickyIndex, data, renderItem, extraData, refHolder, translateY]);
|
|
89
|
+
} }, currentStickyIndex !== -1 && currentStickyIndex < data.length ? (react_1.default.createElement(ViewHolder_1.ViewHolder, { index: currentStickyIndex, item: data[currentStickyIndex], renderItem: renderItem, layout: { x: 0, y: 0, width: 0, height: 0 }, refHolder: refHolder, extraData: extraData, trailingItem: null, target: "StickyHeader" })) : null));
|
|
90
|
+
}, [translateY, currentStickyIndex, data, renderItem, refHolder, extraData]);
|
|
92
91
|
return headerContent;
|
|
93
92
|
};
|
|
94
93
|
exports.StickyHeaders = StickyHeaders;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StickyHeaders.js","sourceRoot":"","sources":["../../../src/recyclerview/components/StickyHeaders.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;;;;AAEH,qDAOe;
|
|
1
|
+
{"version":3,"file":"StickyHeaders.js","sourceRoot":"","sources":["../../../src/recyclerview/components/StickyHeaders.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsecutiveNumbers.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/helpers/ConsecutiveNumbers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,kBAAkB;aAEX,UAAU,EAAE,MAAM;aAClB,QAAQ,EAAE,MAAM;gBADhB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;IAGlC,MAAM,CAAC,QAAQ,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"ConsecutiveNumbers.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/helpers/ConsecutiveNumbers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,kBAAkB;aAEX,UAAU,EAAE,MAAM;aAClB,QAAQ,EAAE,MAAM;gBADhB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;IAGlC,MAAM,CAAC,QAAQ,CAAC,KAAK,qBAAkC;IAEvD;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIzB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO;IAM1C;;;OAGG;IACH,OAAO,IAAI,MAAM,EAAE;IAWnB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI9B,SAAS,CACP,SAAS,EAAE,CACT,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,kBAAkB,KACtB,OAAO,GAAG,SAAS,GACvB,MAAM,GAAG,SAAS;IAUrB;;;;OAIG;IACH,KAAK,CACH,SAAS,EAAE,CACT,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,kBAAkB,KACtB,OAAO,GAAG,SAAS,GACvB,OAAO;IAUV;;OAEG;IACH,KAAK,CAAC,KAAK,SAAI,EAAE,GAAG,SAAc,GAAG,kBAAkB;IAOvD;;OAEG;IACF,CAAC,MAAM,CAAC,QAAQ,CAAC;CAKnB"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ConsecutiveNumbers = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
/**
|
|
6
|
-
* A simple wrapper for consecutive integer arrays
|
|
6
|
+
* A simple wrapper for consecutive postive integer arrays
|
|
7
7
|
* Only stores start and end indices for faster computation as numbers are consecutive.
|
|
8
8
|
*/
|
|
9
9
|
var ConsecutiveNumbers = /** @class */ (function () {
|
|
@@ -115,7 +115,7 @@ var ConsecutiveNumbers = /** @class */ (function () {
|
|
|
115
115
|
}
|
|
116
116
|
});
|
|
117
117
|
};
|
|
118
|
-
ConsecutiveNumbers.EMPTY = new ConsecutiveNumbers(
|
|
118
|
+
ConsecutiveNumbers.EMPTY = new ConsecutiveNumbers(-1, -2);
|
|
119
119
|
return ConsecutiveNumbers;
|
|
120
120
|
}());
|
|
121
121
|
exports.ConsecutiveNumbers = ConsecutiveNumbers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsecutiveNumbers.js","sourceRoot":"","sources":["../../../src/recyclerview/helpers/ConsecutiveNumbers.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH;IACE,4BACkB,UAAkB,EAClB,QAAgB;QADhB,eAAU,GAAV,UAAU,CAAQ;QAClB,aAAQ,GAAR,QAAQ,CAAQ;IAC/B,CAAC;IAOJ,sBAAI,sCAAM;QAHV;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC1D,CAAC;;;OAAA;IAED;;OAEG;IACH,+BAAE,GAAF,UAAG,KAAa;QACd,OAAO,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,mCAAM,GAAN,UAAO,KAAyB;QAC9B,OAAO,CACL,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CACzE,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,oCAAO,GAAP;QACE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"ConsecutiveNumbers.js","sourceRoot":"","sources":["../../../src/recyclerview/helpers/ConsecutiveNumbers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { ConsecutiveNumbers } from "./ConsecutiveNumbers";
|
|
2
1
|
import { RVLayoutManager } from "../layout-managers/LayoutManager";
|
|
2
|
+
import { ConsecutiveNumbers } from "./ConsecutiveNumbers";
|
|
3
3
|
export interface RVEngagedIndicesTracker {
|
|
4
4
|
scrollOffset: number;
|
|
5
5
|
drawDistance: number;
|
|
6
|
+
enableOffsetProjection: boolean;
|
|
7
|
+
averageRenderTime: number;
|
|
6
8
|
/**
|
|
7
9
|
* Updates the scroll offset and calculates which items should be rendered (engaged indices).
|
|
8
10
|
* @param offset - The new scroll offset position
|
|
@@ -11,8 +13,27 @@ export interface RVEngagedIndicesTracker {
|
|
|
11
13
|
* @returns New engaged indices if changed, undefined if no change
|
|
12
14
|
*/
|
|
13
15
|
updateScrollOffset: (offset: number, velocity: Velocity | null | undefined, layoutManager: RVLayoutManager) => ConsecutiveNumbers | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Returns the currently engaged (rendered) indices.
|
|
18
|
+
* This includes both visible items and buffer items.
|
|
19
|
+
* @returns The last computed set of engaged indices
|
|
20
|
+
*/
|
|
14
21
|
getEngagedIndices: () => ConsecutiveNumbers;
|
|
22
|
+
/**
|
|
23
|
+
* Computes the visible indices in the viewport.
|
|
24
|
+
* @param layoutManager - Layout manager to fetch item positions and dimensions
|
|
25
|
+
* @returns Indices of items currently visible in the viewport
|
|
26
|
+
*/
|
|
15
27
|
computeVisibleIndices: (layoutManager: RVLayoutManager) => ConsecutiveNumbers;
|
|
28
|
+
/**
|
|
29
|
+
* Sets the scroll direction for velocity history tracking.
|
|
30
|
+
* @param scrollDirection - The direction of scrolling ("forward" or "backward")
|
|
31
|
+
*/
|
|
32
|
+
setScrollDirection: (scrollDirection: "forward" | "backward") => void;
|
|
33
|
+
/**
|
|
34
|
+
* Resets the velocity history based on the current scroll direction.
|
|
35
|
+
*/
|
|
36
|
+
resetVelocityHistory: () => void;
|
|
16
37
|
}
|
|
17
38
|
export interface Velocity {
|
|
18
39
|
x: number;
|
|
@@ -21,6 +42,9 @@ export interface Velocity {
|
|
|
21
42
|
export declare class RVEngagedIndicesTrackerImpl implements RVEngagedIndicesTracker {
|
|
22
43
|
scrollOffset: number;
|
|
23
44
|
drawDistance: number;
|
|
45
|
+
enableOffsetProjection: boolean;
|
|
46
|
+
averageRenderTime: number;
|
|
47
|
+
private forceDisableOffsetProjection;
|
|
24
48
|
private engagedIndices;
|
|
25
49
|
private smallMultiplier;
|
|
26
50
|
private largeMultiplier;
|
|
@@ -35,13 +59,29 @@ export declare class RVEngagedIndicesTrackerImpl implements RVEngagedIndicesTrac
|
|
|
35
59
|
* 4. Returns new indices that need to be rendered
|
|
36
60
|
*/
|
|
37
61
|
updateScrollOffset(offset: number, velocity: Velocity | null | undefined, layoutManager: RVLayoutManager): ConsecutiveNumbers | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Updates the velocity history with a new velocity value.
|
|
64
|
+
* @param velocity - Current scroll velocity component (x or y)
|
|
65
|
+
*/
|
|
66
|
+
private updateVelocityHistory;
|
|
38
67
|
/**
|
|
39
68
|
* Determines scroll direction by analyzing recent velocity history.
|
|
40
69
|
* Uses a majority voting system on the last 5 velocity values.
|
|
41
|
-
* @param velocity - Current scroll velocity component (x or y)
|
|
42
70
|
* @returns true if scrolling backward (negative direction), false otherwise
|
|
43
71
|
*/
|
|
44
72
|
private isScrollingBackward;
|
|
73
|
+
/**
|
|
74
|
+
* Calculates the median velocity based on velocity history
|
|
75
|
+
* Medina works better agains outliers
|
|
76
|
+
* @returns Median velocity over the recent history
|
|
77
|
+
*/
|
|
78
|
+
private getMedianVelocity;
|
|
79
|
+
/**
|
|
80
|
+
* Projects the next scroll offset based on median velocity
|
|
81
|
+
* @param timeMs Time in milliseconds to predict ahead
|
|
82
|
+
* @returns Projected scroll offset
|
|
83
|
+
*/
|
|
84
|
+
private getProjectedScrollOffset;
|
|
45
85
|
/**
|
|
46
86
|
* Calculates which items are currently visible in the viewport.
|
|
47
87
|
* Unlike getEngagedIndices, this doesn't include buffer items.
|
|
@@ -55,5 +95,11 @@ export declare class RVEngagedIndicesTrackerImpl implements RVEngagedIndicesTrac
|
|
|
55
95
|
* @returns The last computed set of engaged indices
|
|
56
96
|
*/
|
|
57
97
|
getEngagedIndices(): ConsecutiveNumbers;
|
|
98
|
+
setScrollDirection(scrollDirection: "forward" | "backward"): void;
|
|
99
|
+
/**
|
|
100
|
+
* Resets the velocity history based on the current scroll direction.
|
|
101
|
+
* This ensures that the velocity history is always in sync with the current scroll direction.
|
|
102
|
+
*/
|
|
103
|
+
resetVelocityHistory(): void;
|
|
58
104
|
}
|
|
59
105
|
//# sourceMappingURL=EngagedIndicesTracker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EngagedIndicesTracker.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/helpers/EngagedIndicesTracker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EngagedIndicesTracker.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/helpers/EngagedIndicesTracker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,uBAAuB;IAEtC,YAAY,EAAE,MAAM,CAAC;IAErB,YAAY,EAAE,MAAM,CAAC;IAErB,sBAAsB,EAAE,OAAO,CAAC;IAEhC,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;;;;;OAMG;IACH,kBAAkB,EAAE,CAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACrC,aAAa,EAAE,eAAe,KAC3B,kBAAkB,GAAG,SAAS,CAAC;IAEpC;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;IAE5C;;;;OAIG;IACH,qBAAqB,EAAE,CAAC,aAAa,EAAE,eAAe,KAAK,kBAAkB,CAAC;IAE9E;;;OAGG;IACH,kBAAkB,EAAE,CAAC,eAAe,EAAE,SAAS,GAAG,UAAU,KAAK,IAAI,CAAC;IAEtE;;OAEG;IACH,oBAAoB,EAAE,MAAM,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,qBAAa,2BAA4B,YAAW,uBAAuB;IAElE,YAAY,SAAK;IAEjB,YAAY,SAAsC;IAGlD,sBAAsB,UAAQ;IAG9B,iBAAiB,SAAM;IAG9B,OAAO,CAAC,4BAA4B,CAAS;IAG7C,OAAO,CAAC,cAAc,CAA4B;IAGlD,OAAO,CAAC,eAAe,CAAO;IAC9B,OAAO,CAAC,eAAe,CAAO;IAG9B,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,aAAa,CAAK;IAE1B;;;;;;;OAOG;IACH,kBAAkB,CAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACrC,aAAa,EAAE,eAAe,GAC7B,kBAAkB,GAAG,SAAS;IAuFjC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAK7B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAOhC;;;;;OAKG;IACH,qBAAqB,CAAC,aAAa,EAAE,eAAe,GAAG,kBAAkB;IAiBzE;;;;OAIG;IACH,iBAAiB,IAAI,kBAAkB;IAIvC,kBAAkB,CAAC,eAAe,EAAE,SAAS,GAAG,UAAU;IAU1D;;;OAGG;IACH,oBAAoB;CAOrB"}
|
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RVEngagedIndicesTrackerImpl = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var PlatformHelper_1 = require("../../native/config/PlatformHelper");
|
|
4
6
|
var ConsecutiveNumbers_1 = require("./ConsecutiveNumbers");
|
|
5
7
|
var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
|
|
6
8
|
function RVEngagedIndicesTrackerImpl() {
|
|
7
9
|
// Current scroll position of the list
|
|
8
10
|
this.scrollOffset = 0;
|
|
9
11
|
// Distance to pre-render items before and after the visible viewport (in pixels)
|
|
10
|
-
this.drawDistance =
|
|
12
|
+
this.drawDistance = PlatformHelper_1.PlatformConfig.defaultDrawDistance;
|
|
13
|
+
// Whether to use offset projection to predict the next scroll offset
|
|
14
|
+
this.enableOffsetProjection = true;
|
|
15
|
+
// Average render time of the list
|
|
16
|
+
this.averageRenderTime = 16;
|
|
17
|
+
// Internal override to disable offset projection
|
|
18
|
+
this.forceDisableOffsetProjection = false;
|
|
11
19
|
// Currently rendered item indices (including buffer items)
|
|
12
20
|
this.engagedIndices = ConsecutiveNumbers_1.ConsecutiveNumbers.EMPTY;
|
|
13
21
|
// Buffer distribution multipliers for scroll direction optimization
|
|
14
|
-
this.smallMultiplier = 0.
|
|
15
|
-
this.largeMultiplier = 0.
|
|
22
|
+
this.smallMultiplier = 0.3; // Used for buffer in the opposite direction of scroll
|
|
23
|
+
this.largeMultiplier = 0.7; // Used for buffer in the direction of scroll
|
|
16
24
|
// Circular buffer to track recent scroll velocities for direction detection
|
|
17
|
-
this.velocityHistory = [
|
|
25
|
+
this.velocityHistory = [0, 0, 0, -0.1, -0.1];
|
|
18
26
|
this.velocityIndex = 0;
|
|
19
27
|
}
|
|
20
28
|
/**
|
|
@@ -31,14 +39,21 @@ var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
|
|
|
31
39
|
// STEP 1: Determine the currently visible viewport
|
|
32
40
|
var windowSize = layoutManager.getWindowsSize();
|
|
33
41
|
var isHorizontal = layoutManager.isHorizontal();
|
|
34
|
-
|
|
42
|
+
// Update velocity history
|
|
43
|
+
if (velocity) {
|
|
44
|
+
this.updateVelocityHistory(isHorizontal ? velocity.x : velocity.y);
|
|
45
|
+
}
|
|
46
|
+
// Determine scroll direction to optimize buffer distribution
|
|
47
|
+
var isScrollingBackward = this.isScrollingBackward();
|
|
48
|
+
var viewportStart = this.enableOffsetProjection && !this.forceDisableOffsetProjection
|
|
49
|
+
? this.getProjectedScrollOffset(offset, this.averageRenderTime)
|
|
50
|
+
: offset;
|
|
51
|
+
// console.log("timeMs", this.averageRenderTime, offset, viewportStart);
|
|
35
52
|
var viewportSize = isHorizontal ? windowSize.width : windowSize.height;
|
|
36
53
|
var viewportEnd = viewportStart + viewportSize;
|
|
37
54
|
// STEP 2: Determine buffer size and distribution
|
|
38
55
|
// The total extra space where items will be pre-rendered
|
|
39
56
|
var totalBuffer = this.drawDistance * 2;
|
|
40
|
-
// Determine scroll direction to optimize buffer distribution
|
|
41
|
-
var isScrollingBackward = this.isScrollingBackward(isHorizontal ? velocity === null || velocity === void 0 ? void 0 : velocity.x : velocity === null || velocity === void 0 ? void 0 : velocity.y);
|
|
42
57
|
// Distribute more buffer in the direction of scrolling
|
|
43
58
|
// When scrolling forward: more buffer after viewport
|
|
44
59
|
// When scrolling backward: more buffer before viewport
|
|
@@ -71,9 +86,12 @@ var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
|
|
|
71
86
|
}
|
|
72
87
|
// STEP 5: Get and return the new engaged indices
|
|
73
88
|
var newEngagedIndices = layoutManager.getVisibleLayouts(extendedStart, extendedEnd);
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
89
|
+
// console.log(
|
|
90
|
+
// "newEngagedIndices",
|
|
91
|
+
// newEngagedIndices,
|
|
92
|
+
// this.scrollOffset,
|
|
93
|
+
// viewportStart
|
|
94
|
+
// );
|
|
77
95
|
// Only return new indices if they've changed
|
|
78
96
|
var oldEngagedIndices = this.engagedIndices;
|
|
79
97
|
this.engagedIndices = newEngagedIndices;
|
|
@@ -81,22 +99,24 @@ var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
|
|
|
81
99
|
? undefined
|
|
82
100
|
: newEngagedIndices;
|
|
83
101
|
};
|
|
102
|
+
/**
|
|
103
|
+
* Updates the velocity history with a new velocity value.
|
|
104
|
+
* @param velocity - Current scroll velocity component (x or y)
|
|
105
|
+
*/
|
|
106
|
+
RVEngagedIndicesTrackerImpl.prototype.updateVelocityHistory = function (velocity) {
|
|
107
|
+
this.velocityHistory[this.velocityIndex] = velocity;
|
|
108
|
+
this.velocityIndex = (this.velocityIndex + 1) % this.velocityHistory.length;
|
|
109
|
+
};
|
|
84
110
|
/**
|
|
85
111
|
* Determines scroll direction by analyzing recent velocity history.
|
|
86
112
|
* Uses a majority voting system on the last 5 velocity values.
|
|
87
|
-
* @param velocity - Current scroll velocity component (x or y)
|
|
88
113
|
* @returns true if scrolling backward (negative direction), false otherwise
|
|
89
114
|
*/
|
|
90
|
-
RVEngagedIndicesTrackerImpl.prototype.isScrollingBackward = function (
|
|
91
|
-
//
|
|
92
|
-
if (velocity) {
|
|
93
|
-
this.velocityHistory[this.velocityIndex] = velocity;
|
|
94
|
-
this.velocityIndex =
|
|
95
|
-
(this.velocityIndex + 1) % this.velocityHistory.length;
|
|
96
|
-
}
|
|
97
|
-
//should decide based on whether we have more positive or negative values, use for loop
|
|
115
|
+
RVEngagedIndicesTrackerImpl.prototype.isScrollingBackward = function () {
|
|
116
|
+
// should decide based on whether we have more positive or negative values, use for loop
|
|
98
117
|
var positiveCount = 0;
|
|
99
118
|
var negativeCount = 0;
|
|
119
|
+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
100
120
|
for (var i = 0; i < this.velocityHistory.length; i++) {
|
|
101
121
|
if (this.velocityHistory[i] > 0) {
|
|
102
122
|
positiveCount++;
|
|
@@ -107,6 +127,34 @@ var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
|
|
|
107
127
|
}
|
|
108
128
|
return positiveCount < negativeCount;
|
|
109
129
|
};
|
|
130
|
+
/**
|
|
131
|
+
* Calculates the median velocity based on velocity history
|
|
132
|
+
* Medina works better agains outliers
|
|
133
|
+
* @returns Median velocity over the recent history
|
|
134
|
+
*/
|
|
135
|
+
RVEngagedIndicesTrackerImpl.prototype.getMedianVelocity = function () {
|
|
136
|
+
// Make a copy of velocity history and sort it
|
|
137
|
+
var sortedVelocities = tslib_1.__spreadArray([], tslib_1.__read(this.velocityHistory), false).sort(function (valueA, valueB) { return valueA - valueB; });
|
|
138
|
+
var length = sortedVelocities.length;
|
|
139
|
+
// If length is odd, return the middle element
|
|
140
|
+
if (length % 2 === 1) {
|
|
141
|
+
return sortedVelocities[Math.floor(length / 2)];
|
|
142
|
+
}
|
|
143
|
+
// If length is even, return the average of the two middle elements
|
|
144
|
+
var midIndex = length / 2;
|
|
145
|
+
return (sortedVelocities[midIndex - 1] + sortedVelocities[midIndex]) / 2;
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Projects the next scroll offset based on median velocity
|
|
149
|
+
* @param timeMs Time in milliseconds to predict ahead
|
|
150
|
+
* @returns Projected scroll offset
|
|
151
|
+
*/
|
|
152
|
+
RVEngagedIndicesTrackerImpl.prototype.getProjectedScrollOffset = function (offset, timeMs) {
|
|
153
|
+
var medianVelocity = this.getMedianVelocity();
|
|
154
|
+
// Convert time from ms to seconds for velocity calculation
|
|
155
|
+
// Predict next position: current position + (velocity * time)
|
|
156
|
+
return offset + medianVelocity * timeMs;
|
|
157
|
+
};
|
|
110
158
|
/**
|
|
111
159
|
* Calculates which items are currently visible in the viewport.
|
|
112
160
|
* Unlike getEngagedIndices, this doesn't include buffer items.
|
|
@@ -132,6 +180,28 @@ var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
|
|
|
132
180
|
RVEngagedIndicesTrackerImpl.prototype.getEngagedIndices = function () {
|
|
133
181
|
return this.engagedIndices;
|
|
134
182
|
};
|
|
183
|
+
RVEngagedIndicesTrackerImpl.prototype.setScrollDirection = function (scrollDirection) {
|
|
184
|
+
if (scrollDirection === "forward") {
|
|
185
|
+
this.velocityHistory = [0, 0, 0, 0.1, 0.1];
|
|
186
|
+
this.velocityIndex = 0;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
this.velocityHistory = [0, 0, 0, -0.1, -0.1];
|
|
190
|
+
this.velocityIndex = 0;
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* Resets the velocity history based on the current scroll direction.
|
|
195
|
+
* This ensures that the velocity history is always in sync with the current scroll direction.
|
|
196
|
+
*/
|
|
197
|
+
RVEngagedIndicesTrackerImpl.prototype.resetVelocityHistory = function () {
|
|
198
|
+
if (this.isScrollingBackward()) {
|
|
199
|
+
this.setScrollDirection("backward");
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
this.setScrollDirection("forward");
|
|
203
|
+
}
|
|
204
|
+
};
|
|
135
205
|
return RVEngagedIndicesTrackerImpl;
|
|
136
206
|
}());
|
|
137
207
|
exports.RVEngagedIndicesTrackerImpl = RVEngagedIndicesTrackerImpl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EngagedIndicesTracker.js","sourceRoot":"","sources":["../../../src/recyclerview/helpers/EngagedIndicesTracker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EngagedIndicesTracker.js","sourceRoot":"","sources":["../../../src/recyclerview/helpers/EngagedIndicesTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class RenderTimeTracker {
|
|
2
|
+
private renderTimeAvgWindow;
|
|
3
|
+
private lastTimerStartedAt;
|
|
4
|
+
private maxRenderTime;
|
|
5
|
+
private defaultRenderTime;
|
|
6
|
+
startTracking(): void;
|
|
7
|
+
markRenderComplete(): void;
|
|
8
|
+
getRawValue(): number;
|
|
9
|
+
getAverageRenderTime(): number;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=RenderTimeTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderTimeTracker.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/helpers/RenderTimeTracker.ts"],"names":[],"mappings":"AAGA,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,mBAAmB,CAAwB;IACnD,OAAO,CAAC,kBAAkB,CAAM;IAChC,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,iBAAiB,CAAM;IAE/B,aAAa;IASb,kBAAkB;IAUlB,WAAW;IAIX,oBAAoB;CASrB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenderTimeTracker = void 0;
|
|
4
|
+
var PlatformHelper_1 = require("../../native/config/PlatformHelper");
|
|
5
|
+
var AverageWindow_1 = require("../../utils/AverageWindow");
|
|
6
|
+
var RenderTimeTracker = /** @class */ (function () {
|
|
7
|
+
function RenderTimeTracker() {
|
|
8
|
+
this.renderTimeAvgWindow = new AverageWindow_1.AverageWindow(5);
|
|
9
|
+
this.lastTimerStartedAt = -1;
|
|
10
|
+
this.maxRenderTime = 32; // TODO: Improve this even more
|
|
11
|
+
this.defaultRenderTime = 16;
|
|
12
|
+
}
|
|
13
|
+
RenderTimeTracker.prototype.startTracking = function () {
|
|
14
|
+
if (!PlatformHelper_1.PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (this.lastTimerStartedAt === -1) {
|
|
18
|
+
this.lastTimerStartedAt = Date.now();
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
RenderTimeTracker.prototype.markRenderComplete = function () {
|
|
22
|
+
if (!PlatformHelper_1.PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (this.lastTimerStartedAt !== -1) {
|
|
26
|
+
this.renderTimeAvgWindow.addValue(Date.now() - this.lastTimerStartedAt);
|
|
27
|
+
this.lastTimerStartedAt = -1;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
RenderTimeTracker.prototype.getRawValue = function () {
|
|
31
|
+
return this.renderTimeAvgWindow.currentValue;
|
|
32
|
+
};
|
|
33
|
+
RenderTimeTracker.prototype.getAverageRenderTime = function () {
|
|
34
|
+
if (!PlatformHelper_1.PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
|
|
35
|
+
return this.defaultRenderTime;
|
|
36
|
+
}
|
|
37
|
+
return Math.min(this.maxRenderTime, Math.max(Math.round(this.renderTimeAvgWindow.currentValue), 16));
|
|
38
|
+
};
|
|
39
|
+
return RenderTimeTracker;
|
|
40
|
+
}());
|
|
41
|
+
exports.RenderTimeTracker = RenderTimeTracker;
|
|
42
|
+
//# sourceMappingURL=RenderTimeTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderTimeTracker.js","sourceRoot":"","sources":["../../../src/recyclerview/helpers/RenderTimeTracker.ts"],"names":[],"mappings":";;;AAAA,qEAAoE;AACpE,2DAA0D;AAE1D;IAAA;QACU,wBAAmB,GAAG,IAAI,6BAAa,CAAC,CAAC,CAAC,CAAC;QAC3C,uBAAkB,GAAG,CAAC,CAAC,CAAC;QACxB,kBAAa,GAAG,EAAE,CAAC,CAAC,+BAA+B;QACnD,sBAAiB,GAAG,EAAE,CAAC;IAkCjC,CAAC;IAhCC,yCAAa,GAAb;QACE,IAAI,CAAC,+BAAc,CAAC,yCAAyC,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IAED,8CAAkB,GAAlB;QACE,IAAI,CAAC,+BAAc,CAAC,yCAAyC,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACxE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,uCAAW,GAAX;QACE,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;IAC/C,CAAC;IAED,gDAAoB,GAApB;QACE,IAAI,CAAC,+BAAc,CAAC,yCAAyC,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAChE,CAAC;IACJ,CAAC;IACH,wBAAC;AAAD,CAAC,AAtCD,IAsCC;AAtCY,8CAAiB"}
|