@react-native-ohos/flash-list 1.8.3-rc.5 → 2.1.1-rc.1
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/LICENSE +1 -1
- package/README.OpenSource +1 -1
- package/dist/AnimatedFlashList.d.ts +4 -28
- package/dist/AnimatedFlashList.d.ts.map +1 -1
- package/dist/AnimatedFlashList.js +5 -30
- package/dist/AnimatedFlashList.js.map +1 -1
- package/dist/FlashList.d.ts +1 -179
- package/dist/FlashList.d.ts.map +1 -1
- package/dist/FlashList.js +1 -599
- package/dist/FlashList.js.map +1 -1
- package/dist/FlashListProps.d.ts +285 -278
- package/dist/FlashListProps.d.ts.map +1 -1
- package/dist/FlashListProps.js +5 -31
- 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 +2 -0
- package/dist/FlashListRef.js.map +1 -0
- package/dist/benchmark/AutoScrollHelper.d.ts +17 -40
- package/dist/benchmark/AutoScrollHelper.d.ts.map +1 -1
- package/dist/benchmark/AutoScrollHelper.js +59 -90
- package/dist/benchmark/AutoScrollHelper.js.map +1 -1
- package/dist/benchmark/JSFPSMonitor.d.ts +22 -45
- package/dist/benchmark/JSFPSMonitor.d.ts.map +1 -1
- package/dist/benchmark/JSFPSMonitor.js +59 -87
- package/dist/benchmark/JSFPSMonitor.js.map +1 -1
- package/dist/benchmark/roundToDecimalPlaces.d.ts +1 -24
- package/dist/benchmark/roundToDecimalPlaces.d.ts.map +1 -1
- package/dist/benchmark/roundToDecimalPlaces.js +4 -31
- package/dist/benchmark/roundToDecimalPlaces.js.map +1 -1
- package/dist/benchmark/useBenchmark.d.ts +40 -57
- package/dist/benchmark/useBenchmark.d.ts.map +1 -1
- package/dist/benchmark/useBenchmark.js +119 -189
- package/dist/benchmark/useBenchmark.js.map +1 -1
- package/dist/benchmark/useDataMultiplier.d.ts +8 -31
- package/dist/benchmark/useDataMultiplier.d.ts.map +1 -1
- package/dist/benchmark/useDataMultiplier.js +19 -47
- package/dist/benchmark/useDataMultiplier.js.map +1 -1
- package/dist/benchmark/useFlatListBenchmark.d.ts +14 -35
- package/dist/benchmark/useFlatListBenchmark.d.ts.map +1 -1
- package/dist/benchmark/useFlatListBenchmark.js +92 -122
- package/dist/benchmark/useFlatListBenchmark.js.map +1 -1
- package/dist/errors/ErrorMessages.d.ts +16 -0
- package/dist/errors/ErrorMessages.d.ts.map +1 -0
- package/dist/errors/ErrorMessages.js +16 -0
- package/dist/errors/ErrorMessages.js.map +1 -0
- package/dist/errors/WarningMessages.d.ts +6 -0
- package/dist/errors/WarningMessages.d.ts.map +1 -0
- package/dist/errors/WarningMessages.js +7 -0
- package/dist/errors/WarningMessages.js.map +1 -0
- package/dist/index.d.ts +15 -36
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -54
- package/dist/index.js.map +1 -1
- package/dist/isNewArch.d.ts +2 -0
- package/dist/isNewArch.d.ts.map +1 -0
- package/dist/isNewArch.js +22 -0
- package/dist/isNewArch.js.map +1 -0
- package/dist/native/config/PlatformHelper.android.d.ts +6 -48
- package/dist/native/config/PlatformHelper.android.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.android.js +6 -45
- package/dist/native/config/PlatformHelper.android.js.map +1 -1
- package/dist/native/config/PlatformHelper.d.ts +6 -48
- package/dist/native/config/PlatformHelper.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.harmony.d.ts +29 -48
- package/dist/native/config/PlatformHelper.harmony.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.harmony.js +29 -44
- package/dist/native/config/PlatformHelper.harmony.js.map +1 -1
- package/dist/native/config/PlatformHelper.ios.d.ts +6 -48
- package/dist/native/config/PlatformHelper.ios.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.ios.js +6 -44
- package/dist/native/config/PlatformHelper.ios.js.map +1 -1
- package/dist/native/config/PlatformHelper.js +6 -45
- package/dist/native/config/PlatformHelper.js.map +1 -1
- package/dist/native/config/PlatformHelper.web.d.ts +6 -49
- package/dist/native/config/PlatformHelper.web.d.ts.map +1 -1
- package/dist/native/config/PlatformHelper.web.js +6 -47
- 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 +58 -0
- package/dist/recyclerview/LayoutCommitObserver.js.map +1 -0
- package/dist/recyclerview/RecyclerView.d.ts +13 -0
- package/dist/recyclerview/RecyclerView.d.ts.map +1 -0
- package/dist/recyclerview/RecyclerView.js +368 -0
- package/dist/recyclerview/RecyclerView.js.map +1 -0
- package/dist/recyclerview/RecyclerViewContextProvider.d.ts +46 -0
- package/dist/recyclerview/RecyclerViewContextProvider.d.ts.map +1 -0
- package/dist/recyclerview/RecyclerViewContextProvider.js +10 -0
- package/dist/recyclerview/RecyclerViewContextProvider.js.map +1 -0
- package/dist/recyclerview/RecyclerViewManager.d.ts +78 -0
- package/dist/recyclerview/RecyclerViewManager.d.ts.map +1 -0
- package/dist/recyclerview/RecyclerViewManager.js +343 -0
- package/dist/recyclerview/RecyclerViewManager.js.map +1 -0
- package/dist/recyclerview/RecyclerViewProps.d.ts +2 -0
- package/dist/recyclerview/RecyclerViewProps.d.ts.map +1 -0
- package/dist/recyclerview/RecyclerViewProps.js +2 -0
- package/dist/recyclerview/RecyclerViewProps.js.map +1 -0
- package/dist/recyclerview/RenderStackManager.d.ts +86 -0
- package/dist/recyclerview/RenderStackManager.d.ts.map +1 -0
- package/dist/recyclerview/RenderStackManager.js +252 -0
- package/dist/recyclerview/RenderStackManager.js.map +1 -0
- package/dist/recyclerview/ViewHolder.d.ts +45 -0
- package/dist/recyclerview/ViewHolder.d.ts.map +1 -0
- package/dist/recyclerview/ViewHolder.js +94 -0
- package/dist/recyclerview/ViewHolder.js.map +1 -0
- package/dist/recyclerview/ViewHolderCollection.d.ts +63 -0
- package/dist/recyclerview/ViewHolderCollection.d.ts.map +1 -0
- package/dist/recyclerview/ViewHolderCollection.js +87 -0
- package/dist/recyclerview/ViewHolderCollection.js.map +1 -0
- package/dist/recyclerview/components/CompatScroller.d.ts +7 -0
- package/dist/recyclerview/components/CompatScroller.d.ts.map +1 -0
- package/dist/recyclerview/components/CompatScroller.js +7 -0
- package/dist/recyclerview/components/CompatScroller.js.map +1 -0
- package/dist/recyclerview/components/CompatView.d.ts +7 -0
- package/dist/recyclerview/components/CompatView.d.ts.map +1 -0
- package/dist/recyclerview/components/CompatView.js +7 -0
- package/dist/recyclerview/components/CompatView.js.map +1 -0
- package/dist/recyclerview/components/ScrollAnchor.d.ts +29 -0
- package/dist/recyclerview/components/ScrollAnchor.d.ts.map +1 -0
- package/dist/recyclerview/components/ScrollAnchor.js +33 -0
- package/dist/recyclerview/components/ScrollAnchor.js.map +1 -0
- package/dist/recyclerview/components/StickyHeaders.d.ts +38 -0
- package/dist/recyclerview/components/StickyHeaders.d.ts.map +1 -0
- package/dist/recyclerview/components/StickyHeaders.js +112 -0
- package/dist/recyclerview/components/StickyHeaders.js.map +1 -0
- package/dist/recyclerview/helpers/ConsecutiveNumbers.d.ts +51 -0
- package/dist/recyclerview/helpers/ConsecutiveNumbers.d.ts.map +1 -0
- package/dist/recyclerview/helpers/ConsecutiveNumbers.js +95 -0
- package/dist/recyclerview/helpers/ConsecutiveNumbers.js.map +1 -0
- package/dist/recyclerview/helpers/EngagedIndicesTracker.d.ts +105 -0
- package/dist/recyclerview/helpers/EngagedIndicesTracker.d.ts.map +1 -0
- package/dist/recyclerview/helpers/EngagedIndicesTracker.js +202 -0
- package/dist/recyclerview/helpers/EngagedIndicesTracker.js.map +1 -0
- package/dist/recyclerview/helpers/RenderTimeTracker.d.ts +14 -0
- package/dist/recyclerview/helpers/RenderTimeTracker.d.ts.map +1 -0
- package/dist/recyclerview/helpers/RenderTimeTracker.js +44 -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 +64 -0
- package/dist/recyclerview/helpers/VelocityTracker.js.map +1 -0
- package/dist/recyclerview/hooks/useBoundDetection.d.ts +17 -0
- package/dist/recyclerview/hooks/useBoundDetection.d.ts.map +1 -0
- package/dist/recyclerview/hooks/useBoundDetection.js +132 -0
- package/dist/recyclerview/hooks/useBoundDetection.js.map +1 -0
- package/dist/recyclerview/hooks/useLayoutState.d.ts +14 -0
- package/dist/recyclerview/hooks/useLayoutState.d.ts.map +1 -0
- package/dist/recyclerview/hooks/useLayoutState.js +38 -0
- package/dist/recyclerview/hooks/useLayoutState.js.map +1 -0
- 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 +15 -0
- package/dist/recyclerview/hooks/useMappingHelper.js.map +1 -0
- package/dist/recyclerview/hooks/useOnLoad.d.ts +25 -0
- package/dist/recyclerview/hooks/useOnLoad.d.ts.map +1 -0
- package/dist/recyclerview/hooks/useOnLoad.js +67 -0
- package/dist/recyclerview/hooks/useOnLoad.js.map +1 -0
- package/dist/recyclerview/hooks/useRecyclerViewController.d.ts +28 -0
- package/dist/recyclerview/hooks/useRecyclerViewController.d.ts.map +1 -0
- package/dist/recyclerview/hooks/useRecyclerViewController.js +507 -0
- package/dist/recyclerview/hooks/useRecyclerViewController.js.map +1 -0
- package/dist/recyclerview/hooks/useRecyclerViewManager.d.ts +8 -0
- package/dist/recyclerview/hooks/useRecyclerViewManager.d.ts.map +1 -0
- package/dist/recyclerview/hooks/useRecyclerViewManager.js +32 -0
- package/dist/recyclerview/hooks/useRecyclerViewManager.js.map +1 -0
- package/dist/recyclerview/hooks/useRecyclingState.d.ts +18 -0
- package/dist/recyclerview/hooks/useRecyclingState.d.ts.map +1 -0
- package/dist/recyclerview/hooks/useRecyclingState.js +49 -0
- package/dist/recyclerview/hooks/useRecyclingState.js.map +1 -0
- package/dist/recyclerview/hooks/useSecondaryProps.d.ts +27 -0
- package/dist/recyclerview/hooks/useSecondaryProps.d.ts.map +1 -0
- package/dist/recyclerview/hooks/useSecondaryProps.js +90 -0
- package/dist/recyclerview/hooks/useSecondaryProps.js.map +1 -0
- 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 +58 -0
- package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js.map +1 -0
- package/dist/recyclerview/hooks/useUnmountFlag.d.ts +10 -0
- package/dist/recyclerview/hooks/useUnmountFlag.d.ts.map +1 -0
- package/dist/recyclerview/hooks/useUnmountFlag.js +25 -0
- package/dist/recyclerview/hooks/useUnmountFlag.js.map +1 -0
- package/dist/recyclerview/layout-managers/GridLayoutManager.d.ts +79 -0
- package/dist/recyclerview/layout-managers/GridLayoutManager.d.ts.map +1 -0
- package/dist/recyclerview/layout-managers/GridLayoutManager.js +221 -0
- package/dist/recyclerview/layout-managers/GridLayoutManager.js.map +1 -0
- package/dist/recyclerview/layout-managers/LayoutManager.d.ts +296 -0
- package/dist/recyclerview/layout-managers/LayoutManager.d.ts.map +1 -0
- package/dist/recyclerview/layout-managers/LayoutManager.js +279 -0
- package/dist/recyclerview/layout-managers/LayoutManager.js.map +1 -0
- package/dist/recyclerview/layout-managers/LinearLayoutManager.d.ts +51 -0
- package/dist/recyclerview/layout-managers/LinearLayoutManager.d.ts.map +1 -0
- package/dist/recyclerview/layout-managers/LinearLayoutManager.js +151 -0
- package/dist/recyclerview/layout-managers/LinearLayoutManager.js.map +1 -0
- package/dist/recyclerview/layout-managers/MasonryLayoutManager.d.ts +81 -0
- package/dist/recyclerview/layout-managers/MasonryLayoutManager.d.ts.map +1 -0
- package/dist/recyclerview/layout-managers/MasonryLayoutManager.js +269 -0
- package/dist/recyclerview/layout-managers/MasonryLayoutManager.js.map +1 -0
- package/dist/recyclerview/utils/adjustOffsetForRTL.d.ts +12 -0
- package/dist/recyclerview/utils/adjustOffsetForRTL.d.ts.map +1 -0
- package/dist/recyclerview/utils/adjustOffsetForRTL.js +14 -0
- package/dist/recyclerview/utils/adjustOffsetForRTL.js.map +1 -0
- package/dist/recyclerview/utils/componentUtils.d.ts +19 -0
- package/dist/recyclerview/utils/componentUtils.d.ts.map +1 -0
- package/dist/recyclerview/utils/componentUtils.js +27 -0
- package/dist/recyclerview/utils/componentUtils.js.map +1 -0
- package/dist/recyclerview/utils/findVisibleIndex.d.ts +24 -0
- package/dist/recyclerview/utils/findVisibleIndex.d.ts.map +1 -0
- package/dist/recyclerview/utils/findVisibleIndex.js +76 -0
- package/dist/recyclerview/utils/findVisibleIndex.js.map +1 -0
- package/dist/recyclerview/utils/measureLayout.d.ts +52 -0
- package/dist/recyclerview/utils/measureLayout.d.ts.map +1 -0
- package/dist/recyclerview/utils/measureLayout.js +99 -0
- package/dist/recyclerview/utils/measureLayout.js.map +1 -0
- 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 +79 -0
- package/dist/recyclerview/utils/measureLayout.web.js.map +1 -0
- package/dist/recyclerview/viewability/ViewToken.d.ts +8 -0
- package/dist/recyclerview/viewability/ViewToken.d.ts.map +1 -0
- package/dist/recyclerview/viewability/ViewToken.js +2 -0
- package/dist/recyclerview/viewability/ViewToken.js.map +1 -0
- package/dist/recyclerview/viewability/ViewabilityHelper.d.ts +26 -0
- package/dist/recyclerview/viewability/ViewabilityHelper.d.ts.map +1 -0
- package/dist/recyclerview/viewability/ViewabilityHelper.js +98 -0
- package/dist/recyclerview/viewability/ViewabilityHelper.js.map +1 -0
- package/dist/recyclerview/viewability/ViewabilityManager.d.ts +25 -0
- package/dist/recyclerview/viewability/ViewabilityManager.d.ts.map +1 -0
- package/dist/recyclerview/viewability/ViewabilityManager.js +94 -0
- package/dist/recyclerview/viewability/ViewabilityManager.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/AverageWindow.d.ts +33 -43
- package/dist/utils/AverageWindow.d.ts.map +1 -1
- package/dist/utils/AverageWindow.js +66 -71
- package/dist/utils/AverageWindow.js.map +1 -1
- package/jestSetup.js +23 -37
- package/package.json +15 -24
- package/src/AnimatedFlashList.ts +2 -25
- package/src/FlashList.ts +1 -0
- package/src/FlashListProps.ts +109 -100
- package/src/FlashListRef.ts +320 -0
- package/src/benchmark/AutoScrollHelper.ts +0 -24
- package/src/benchmark/JSFPSMonitor.ts +2 -26
- package/src/benchmark/roundToDecimalPlaces.ts +0 -24
- package/src/benchmark/useBenchmark.ts +59 -105
- package/src/benchmark/useDataMultiplier.ts +0 -24
- package/src/benchmark/useFlatListBenchmark.ts +43 -32
- package/src/errors/ErrorMessages.ts +26 -0
- package/src/errors/WarningMessages.ts +9 -0
- package/src/index.ts +18 -46
- package/src/isNewArch.ts +25 -0
- package/src/native/config/PlatformHelper.android.ts +3 -49
- package/src/native/config/PlatformHelper.harmony.ts +3 -24
- package/src/native/config/PlatformHelper.ios.ts +3 -48
- package/src/native/config/PlatformHelper.ts +3 -49
- package/src/native/config/PlatformHelper.web.ts +4 -55
- package/src/recyclerview/LayoutCommitObserver.tsx +74 -0
- package/src/recyclerview/RecyclerView.tsx +616 -0
- package/src/recyclerview/RecyclerViewContextProvider.ts +65 -0
- package/src/recyclerview/RecyclerViewManager.ts +461 -0
- package/src/recyclerview/RecyclerViewProps.ts +1 -0
- package/src/recyclerview/RenderStackManager.ts +317 -0
- package/src/recyclerview/ViewHolder.tsx +180 -0
- package/src/recyclerview/ViewHolderCollection.tsx +193 -0
- package/src/recyclerview/components/CompatScroller.ts +9 -0
- package/src/recyclerview/components/CompatView.ts +9 -0
- package/src/recyclerview/components/ScrollAnchor.tsx +66 -0
- package/src/recyclerview/components/StickyHeaders.tsx +222 -0
- package/src/recyclerview/helpers/ConsecutiveNumbers.ts +120 -0
- package/src/recyclerview/helpers/EngagedIndicesTracker.ts +301 -0
- package/src/recyclerview/helpers/RenderTimeTracker.ts +50 -0
- package/src/recyclerview/helpers/VelocityTracker.ts +77 -0
- package/src/recyclerview/hooks/useBoundDetection.ts +176 -0
- package/src/recyclerview/hooks/useLayoutState.ts +55 -0
- package/src/recyclerview/hooks/useMappingHelper.ts +20 -0
- package/src/recyclerview/hooks/useOnLoad.ts +80 -0
- package/src/recyclerview/hooks/useRecyclerViewController.tsx +633 -0
- package/src/recyclerview/hooks/useRecyclerViewManager.ts +42 -0
- package/src/recyclerview/hooks/useRecyclingState.ts +67 -0
- package/src/recyclerview/hooks/useSecondaryProps.tsx +124 -0
- package/src/recyclerview/hooks/useUnmountAwareCallbacks.ts +73 -0
- package/src/recyclerview/hooks/useUnmountFlag.ts +27 -0
- package/src/recyclerview/layout-managers/GridLayoutManager.ts +256 -0
- package/src/recyclerview/layout-managers/LayoutManager.ts +568 -0
- package/src/recyclerview/layout-managers/LinearLayoutManager.ts +171 -0
- package/src/recyclerview/layout-managers/MasonryLayoutManager.ts +323 -0
- package/src/recyclerview/utils/adjustOffsetForRTL.ts +17 -0
- package/src/recyclerview/utils/componentUtils.ts +28 -0
- package/src/recyclerview/utils/findVisibleIndex.ts +93 -0
- package/src/recyclerview/utils/measureLayout.ts +128 -0
- package/src/recyclerview/utils/measureLayout.web.ts +102 -0
- package/src/recyclerview/viewability/ViewToken.ts +7 -0
- package/src/{viewability → recyclerview/viewability}/ViewabilityHelper.ts +8 -33
- package/src/{viewability → recyclerview/viewability}/ViewabilityManager.ts +23 -46
- package/src/utils/AverageWindow.ts +33 -24
- package/dist/GridLayoutProviderWithProps.d.ts +0 -65
- package/dist/GridLayoutProviderWithProps.d.ts.map +0 -1
- package/dist/GridLayoutProviderWithProps.js +0 -138
- package/dist/GridLayoutProviderWithProps.js.map +0 -1
- package/dist/MasonryFlashList.d.ts +0 -74
- package/dist/MasonryFlashList.d.ts.map +0 -1
- package/dist/MasonryFlashList.js +0 -275
- package/dist/MasonryFlashList.js.map +0 -1
- package/dist/PureComponentWrapper.d.ts +0 -45
- package/dist/PureComponentWrapper.d.ts.map +0 -1
- package/dist/PureComponentWrapper.js +0 -60
- package/dist/PureComponentWrapper.js.map +0 -1
- package/dist/__tests__/AverageWindow.test.d.ts +0 -2
- package/dist/__tests__/AverageWindow.test.d.ts.map +0 -1
- package/dist/__tests__/AverageWindow.test.js +0 -69
- package/dist/__tests__/AverageWindow.test.js.map +0 -1
- package/dist/__tests__/ContentContainerUtils.test.d.ts +0 -2
- package/dist/__tests__/ContentContainerUtils.test.d.ts.map +0 -1
- package/dist/__tests__/ContentContainerUtils.test.js +0 -85
- package/dist/__tests__/ContentContainerUtils.test.js.map +0 -1
- package/dist/__tests__/FlashList.test.d.ts +0 -2
- package/dist/__tests__/FlashList.test.d.ts.map +0 -1
- package/dist/__tests__/FlashList.test.js +0 -792
- package/dist/__tests__/FlashList.test.js.map +0 -1
- package/dist/__tests__/GridLayoutProviderWithProps.test.d.ts +0 -2
- package/dist/__tests__/GridLayoutProviderWithProps.test.d.ts.map +0 -1
- package/dist/__tests__/GridLayoutProviderWithProps.test.js +0 -143
- package/dist/__tests__/GridLayoutProviderWithProps.test.js.map +0 -1
- package/dist/__tests__/MasonryFlashList.test.d.ts +0 -2
- package/dist/__tests__/MasonryFlashList.test.d.ts.map +0 -1
- package/dist/__tests__/MasonryFlashList.test.js +0 -254
- package/dist/__tests__/MasonryFlashList.test.js.map +0 -1
- package/dist/__tests__/PlatformHelper.web.test.d.ts +0 -2
- package/dist/__tests__/PlatformHelper.web.test.d.ts.map +0 -1
- package/dist/__tests__/PlatformHelper.web.test.js +0 -33
- package/dist/__tests__/PlatformHelper.web.test.js.map +0 -1
- package/dist/__tests__/ViewabilityHelper.test.d.ts +0 -2
- package/dist/__tests__/ViewabilityHelper.test.d.ts.map +0 -1
- package/dist/__tests__/ViewabilityHelper.test.js +0 -187
- package/dist/__tests__/ViewabilityHelper.test.js.map +0 -1
- package/dist/__tests__/helpers/mountFlashList.d.ts +0 -19
- package/dist/__tests__/helpers/mountFlashList.d.ts.map +0 -1
- package/dist/__tests__/helpers/mountFlashList.js +0 -44
- package/dist/__tests__/helpers/mountFlashList.js.map +0 -1
- package/dist/__tests__/helpers/mountMasonryFlashList.d.ts +0 -18
- package/dist/__tests__/helpers/mountMasonryFlashList.d.ts.map +0 -1
- package/dist/__tests__/helpers/mountMasonryFlashList.js +0 -49
- package/dist/__tests__/helpers/mountMasonryFlashList.js.map +0 -1
- package/dist/__tests__/useBlankAreaTracker.test.d.ts +0 -2
- package/dist/__tests__/useBlankAreaTracker.test.d.ts.map +0 -1
- package/dist/__tests__/useBlankAreaTracker.test.js +0 -177
- package/dist/__tests__/useBlankAreaTracker.test.js.map +0 -1
- package/dist/benchmark/useBlankAreaTracker.d.ts +0 -57
- package/dist/benchmark/useBlankAreaTracker.d.ts.map +0 -1
- package/dist/benchmark/useBlankAreaTracker.js +0 -90
- package/dist/benchmark/useBlankAreaTracker.js.map +0 -1
- package/dist/errors/CustomError.d.ts +0 -31
- package/dist/errors/CustomError.d.ts.map +0 -1
- package/dist/errors/CustomError.js +0 -37
- package/dist/errors/CustomError.js.map +0 -1
- package/dist/errors/ExceptionList.d.ts +0 -47
- package/dist/errors/ExceptionList.d.ts.map +0 -1
- package/dist/errors/ExceptionList.js +0 -49
- package/dist/errors/ExceptionList.js.map +0 -1
- package/dist/errors/Warnings.d.ts +0 -32
- package/dist/errors/Warnings.d.ts.map +0 -1
- package/dist/errors/Warnings.js +0 -36
- package/dist/errors/Warnings.js.map +0 -1
- package/dist/fabric/AutoLayoutNativeComponent.d.ts +0 -42
- package/dist/fabric/AutoLayoutNativeComponent.d.ts.map +0 -1
- package/dist/fabric/AutoLayoutNativeComponent.js +0 -29
- package/dist/fabric/AutoLayoutNativeComponent.js.map +0 -1
- package/dist/fabric/CellContainerNativeComponent.d.ts +0 -31
- package/dist/fabric/CellContainerNativeComponent.d.ts.map +0 -1
- package/dist/fabric/CellContainerNativeComponent.js +0 -29
- package/dist/fabric/CellContainerNativeComponent.js.map +0 -1
- package/dist/native/auto-layout/AutoLayoutView.d.ts +0 -45
- package/dist/native/auto-layout/AutoLayoutView.d.ts.map +0 -1
- package/dist/native/auto-layout/AutoLayoutView.js +0 -71
- package/dist/native/auto-layout/AutoLayoutView.js.map +0 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.android.d.ts +0 -27
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.android.d.ts.map +0 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.android.js +0 -29
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.android.js.map +0 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.d.ts +0 -28
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.d.ts.map +0 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.harmony.d.ts +0 -27
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.harmony.d.ts.map +0 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.harmony.js +0 -29
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.harmony.js.map +0 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.ios.d.ts +0 -27
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.ios.d.ts.map +0 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.ios.js +0 -29
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.ios.js.map +0 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.js +0 -29
- package/dist/native/auto-layout/AutoLayoutViewNativeComponent.js.map +0 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.d.ts +0 -39
- package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.d.ts.map +0 -1
- package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.js +0 -26
- package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.js.map +0 -1
- package/dist/native/cell-container/CellContainer.android.d.ts +0 -29
- package/dist/native/cell-container/CellContainer.android.d.ts.map +0 -1
- package/dist/native/cell-container/CellContainer.android.js +0 -32
- package/dist/native/cell-container/CellContainer.android.js.map +0 -1
- package/dist/native/cell-container/CellContainer.d.ts +0 -31
- package/dist/native/cell-container/CellContainer.d.ts.map +0 -1
- package/dist/native/cell-container/CellContainer.harmony.d.ts +0 -29
- package/dist/native/cell-container/CellContainer.harmony.d.ts.map +0 -1
- package/dist/native/cell-container/CellContainer.harmony.js +0 -32
- package/dist/native/cell-container/CellContainer.harmony.js.map +0 -1
- package/dist/native/cell-container/CellContainer.ios.d.ts +0 -29
- package/dist/native/cell-container/CellContainer.ios.d.ts.map +0 -1
- package/dist/native/cell-container/CellContainer.ios.js +0 -32
- package/dist/native/cell-container/CellContainer.ios.js.map +0 -1
- package/dist/native/cell-container/CellContainer.js +0 -34
- package/dist/native/cell-container/CellContainer.js.map +0 -1
- package/dist/native/cell-container/CellContainer.web.d.ts +0 -30
- package/dist/native/cell-container/CellContainer.web.d.ts.map +0 -1
- package/dist/native/cell-container/CellContainer.web.js +0 -36
- package/dist/native/cell-container/CellContainer.web.js.map +0 -1
- package/dist/utils/ContentContainerUtils.d.ts +0 -50
- package/dist/utils/ContentContainerUtils.d.ts.map +0 -1
- package/dist/utils/ContentContainerUtils.js +0 -71
- package/dist/utils/ContentContainerUtils.js.map +0 -1
- package/dist/viewability/ViewToken.d.ts +0 -31
- package/dist/viewability/ViewToken.d.ts.map +0 -1
- package/dist/viewability/ViewToken.js +0 -26
- package/dist/viewability/ViewToken.js.map +0 -1
- package/dist/viewability/ViewabilityHelper.d.ts +0 -49
- package/dist/viewability/ViewabilityHelper.d.ts.map +0 -1
- package/dist/viewability/ViewabilityHelper.js +0 -130
- package/dist/viewability/ViewabilityHelper.js.map +0 -1
- package/dist/viewability/ViewabilityManager.d.ts +0 -48
- package/dist/viewability/ViewabilityManager.d.ts.map +0 -1
- package/dist/viewability/ViewabilityManager.js +0 -131
- package/dist/viewability/ViewabilityManager.js.map +0 -1
- package/harmony/flash_list/BuildProfile.ets +0 -17
- package/harmony/flash_list/LICENSE +0 -7
- package/harmony/flash_list/build-profile.json5 +0 -8
- package/harmony/flash_list/hvigorfile.ts +0 -1
- package/harmony/flash_list/index.ets +0 -27
- package/harmony/flash_list/obfuscation-rules.txt +0 -18
- package/harmony/flash_list/oh-package.json5 +0 -24
- package/harmony/flash_list/src/main/cpp/AutoLayoutNode.cpp +0 -63
- package/harmony/flash_list/src/main/cpp/AutoLayoutNode.h +0 -54
- package/harmony/flash_list/src/main/cpp/AutoLayoutShadow.cpp +0 -140
- package/harmony/flash_list/src/main/cpp/AutoLayoutShadow.h +0 -66
- package/harmony/flash_list/src/main/cpp/AutoLayoutViewComponentInstance.cpp +0 -208
- package/harmony/flash_list/src/main/cpp/AutoLayoutViewComponentInstance.h +0 -78
- package/harmony/flash_list/src/main/cpp/AutoLayoutViewEventEmitRequestHandler.h +0 -53
- package/harmony/flash_list/src/main/cpp/AutoLayoutViewJSIBinder.h +0 -50
- package/harmony/flash_list/src/main/cpp/CMakeLists.txt +0 -12
- package/harmony/flash_list/src/main/cpp/CellContainerComponentInstance.cpp +0 -80
- package/harmony/flash_list/src/main/cpp/CellContainerComponentInstance.h +0 -64
- package/harmony/flash_list/src/main/cpp/CellContainerJSIBinder.h +0 -39
- package/harmony/flash_list/src/main/cpp/ComponentDescriptors.h +0 -40
- package/harmony/flash_list/src/main/cpp/EventEmitters.cpp +0 -40
- package/harmony/flash_list/src/main/cpp/EventEmitters.h +0 -48
- package/harmony/flash_list/src/main/cpp/FlashListPackage.h +0 -85
- package/harmony/flash_list/src/main/cpp/FlashListStackNode.cpp +0 -87
- package/harmony/flash_list/src/main/cpp/FlashListStackNode.h +0 -57
- package/harmony/flash_list/src/main/cpp/Props.cpp +0 -52
- package/harmony/flash_list/src/main/cpp/Props.h +0 -64
- package/harmony/flash_list/src/main/cpp/ShadowNodes.cpp +0 -34
- package/harmony/flash_list/src/main/cpp/ShadowNodes.h +0 -48
- package/harmony/flash_list/src/main/ets/Logger.ets +0 -64
- package/harmony/flash_list/src/main/ets/RNAutoLayoutShadow.ets +0 -154
- package/harmony/flash_list/src/main/ets/RNAutoLayoutView.ets +0 -277
- package/harmony/flash_list/src/main/ets/RNCellContainer.ets +0 -113
- package/harmony/flash_list/src/main/module.json5 +0 -9
- package/harmony/flash_list/src/main/resources/base/element/color.json +0 -8
- package/harmony/flash_list/src/main/resources/base/element/string.json +0 -16
- package/harmony/flash_list/src/main/resources/base/media/icon.png +0 -0
- package/harmony/flash_list/src/main/resources/base/profile/main_pages.json +0 -5
- package/harmony/flash_list/src/main/resources/en_US/element/string.json +0 -16
- package/harmony/flash_list/src/main/resources/zh_CN/element/string.json +0 -16
- package/harmony/flash_list.har +0 -0
- package/src/FlashList.tsx +0 -949
- package/src/GridLayoutProviderWithProps.ts +0 -204
- package/src/MasonryFlashList.tsx +0 -499
- package/src/PureComponentWrapper.tsx +0 -65
- package/src/benchmark/useBlankAreaTracker.ts +0 -141
- package/src/errors/CustomError.ts +0 -34
- package/src/errors/ExceptionList.ts +0 -52
- package/src/errors/Warnings.ts +0 -39
- package/src/fabric/AutoLayoutNativeComponent.ts +0 -52
- package/src/fabric/CellContainerNativeComponent.ts +0 -35
- package/src/native/auto-layout/AutoLayoutView.tsx +0 -97
- package/src/native/auto-layout/AutoLayoutViewNativeComponent.android.ts +0 -31
- package/src/native/auto-layout/AutoLayoutViewNativeComponent.harmony.ts +0 -31
- package/src/native/auto-layout/AutoLayoutViewNativeComponent.ios.ts +0 -31
- package/src/native/auto-layout/AutoLayoutViewNativeComponent.ts +0 -31
- package/src/native/auto-layout/AutoLayoutViewNativeComponentProps.ts +0 -41
- package/src/native/cell-container/CellContainer.android.ts +0 -31
- package/src/native/cell-container/CellContainer.harmony.ts +0 -31
- package/src/native/cell-container/CellContainer.ios.ts +0 -31
- package/src/native/cell-container/CellContainer.tsx +0 -38
- package/src/native/cell-container/CellContainer.web.tsx +0 -33
- package/src/utils/ContentContainerUtils.ts +0 -116
- package/src/viewability/ViewToken.ts +0 -31
|
@@ -1,26 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* MIT License
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2024 Huawei Device Co., Ltd.
|
|
5
|
-
*
|
|
6
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
* in the Software without restriction, including without limitation the rights
|
|
9
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
* furnished to do so, subject to the following conditions:
|
|
12
|
-
*
|
|
13
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
* copies or substantial portions of the Software.
|
|
15
|
-
*
|
|
16
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
* SOFTWARE.
|
|
23
|
-
*/
|
|
1
|
+
import { ErrorMessages } from "../errors/ErrorMessages";
|
|
24
2
|
|
|
25
3
|
import { roundToDecimalPlaces } from "./roundToDecimalPlaces";
|
|
26
4
|
|
|
@@ -68,9 +46,7 @@ export class JSFPSMonitor {
|
|
|
68
46
|
|
|
69
47
|
public startTracking() {
|
|
70
48
|
if (this.startTime !== 0) {
|
|
71
|
-
throw new Error(
|
|
72
|
-
"This FPS Monitor has already been run, please create a new instance"
|
|
73
|
-
);
|
|
49
|
+
throw new Error(ErrorMessages.fpsMonitorAlreadyRunning);
|
|
74
50
|
}
|
|
75
51
|
this.startTime = Date.now();
|
|
76
52
|
this.timeWindow.startTime = Date.now();
|
|
@@ -1,27 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MIT License
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2024 Huawei Device Co., Ltd.
|
|
5
|
-
*
|
|
6
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
* in the Software without restriction, including without limitation the rights
|
|
9
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
* furnished to do so, subject to the following conditions:
|
|
12
|
-
*
|
|
13
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
* copies or substantial portions of the Software.
|
|
15
|
-
*
|
|
16
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
* SOFTWARE.
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
1
|
export function roundToDecimalPlaces(value: number, decimalPlaces: number) {
|
|
26
2
|
const multiplier = 10 ** decimalPlaces;
|
|
27
3
|
return Math.round(value * multiplier) / multiplier;
|
|
@@ -1,38 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
* MIT License
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2024 Huawei Device Co., Ltd.
|
|
5
|
-
*
|
|
6
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
* in the Software without restriction, including without limitation the rights
|
|
9
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
* furnished to do so, subject to the following conditions:
|
|
12
|
-
*
|
|
13
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
* copies or substantial portions of the Software.
|
|
15
|
-
*
|
|
16
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
* SOFTWARE.
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
import React, { useEffect } from "react";
|
|
1
|
+
import React, { useEffect, useState, useCallback, useRef } from "react";
|
|
26
2
|
|
|
27
|
-
import
|
|
3
|
+
import { FlashListRef } from "../FlashListRef";
|
|
4
|
+
import { ErrorMessages } from "../errors/ErrorMessages";
|
|
28
5
|
|
|
29
6
|
import { autoScroll, Cancellable } from "./AutoScrollHelper";
|
|
30
7
|
import { JSFPSMonitor, JSFPSResult } from "./JSFPSMonitor";
|
|
31
|
-
import { roundToDecimalPlaces } from "./roundToDecimalPlaces";
|
|
32
|
-
import {
|
|
33
|
-
BlankAreaTrackerResult,
|
|
34
|
-
useBlankAreaTracker,
|
|
35
|
-
} from "./useBlankAreaTracker";
|
|
36
8
|
|
|
37
9
|
export interface BenchmarkParams {
|
|
38
10
|
startDelayInMs?: number;
|
|
@@ -52,13 +24,18 @@ export interface BenchmarkParams {
|
|
|
52
24
|
* Blank area is negative when list is able to draw faster than the scroll speed.
|
|
53
25
|
*/
|
|
54
26
|
sumNegativeBlankAreaValues?: boolean;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* When set to true, the benchmark will not start automatically.
|
|
30
|
+
* Use the returned startBenchmark function to trigger it manually.
|
|
31
|
+
*/
|
|
32
|
+
startManually?: boolean;
|
|
55
33
|
}
|
|
56
34
|
|
|
57
35
|
export interface BenchmarkResult {
|
|
58
36
|
js?: JSFPSResult;
|
|
59
37
|
interrupted: boolean;
|
|
60
38
|
suggestions: string[];
|
|
61
|
-
blankArea?: BlankAreaTrackerResult;
|
|
62
39
|
formattedString?: string;
|
|
63
40
|
}
|
|
64
41
|
|
|
@@ -69,24 +46,31 @@ export interface BenchmarkResult {
|
|
|
69
46
|
*/
|
|
70
47
|
|
|
71
48
|
export function useBenchmark(
|
|
72
|
-
flashListRef: React.RefObject<
|
|
49
|
+
flashListRef: React.RefObject<FlashListRef<any>>,
|
|
73
50
|
callback: (benchmarkResult: BenchmarkResult) => void,
|
|
74
51
|
params: BenchmarkParams = {}
|
|
75
52
|
) {
|
|
76
|
-
const [
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
53
|
+
const [isBenchmarkRunning, setIsBenchmarkRunning] = useState(false);
|
|
54
|
+
const cancellableRef = useRef<Cancellable | null>(null);
|
|
55
|
+
|
|
56
|
+
const startBenchmark = useCallback(() => {
|
|
57
|
+
if (isBenchmarkRunning) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
82
61
|
const cancellable = new Cancellable();
|
|
62
|
+
cancellableRef.current = cancellable;
|
|
83
63
|
const suggestions: string[] = [];
|
|
64
|
+
|
|
84
65
|
if (flashListRef.current) {
|
|
85
66
|
if (!(Number(flashListRef.current.props.data?.length) > 0)) {
|
|
86
|
-
throw new Error(
|
|
67
|
+
throw new Error(ErrorMessages.dataEmptyCannotRunBenchmark);
|
|
87
68
|
}
|
|
88
69
|
}
|
|
89
|
-
|
|
70
|
+
|
|
71
|
+
setIsBenchmarkRunning(true);
|
|
72
|
+
|
|
73
|
+
const runBenchmark = async () => {
|
|
90
74
|
const jsFPSMonitor = new JSFPSMonitor();
|
|
91
75
|
jsFPSMonitor.startTracking();
|
|
92
76
|
for (let i = 0; i < (params.repeatCount || 1); i++) {
|
|
@@ -105,7 +89,6 @@ export function useBenchmark(
|
|
|
105
89
|
computeSuggestions(flashListRef, suggestions);
|
|
106
90
|
const result: BenchmarkResult = generateResult(
|
|
107
91
|
jsProfilerResponse,
|
|
108
|
-
blankAreaResult,
|
|
109
92
|
suggestions,
|
|
110
93
|
cancellable
|
|
111
94
|
);
|
|
@@ -113,25 +96,43 @@ export function useBenchmark(
|
|
|
113
96
|
result.formattedString = getFormattedString(result);
|
|
114
97
|
}
|
|
115
98
|
callback(result);
|
|
99
|
+
setIsBenchmarkRunning(false);
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
runBenchmark();
|
|
103
|
+
}, [
|
|
104
|
+
callback,
|
|
105
|
+
flashListRef,
|
|
106
|
+
isBenchmarkRunning,
|
|
107
|
+
params.repeatCount,
|
|
108
|
+
params.speedMultiplier,
|
|
109
|
+
]);
|
|
110
|
+
|
|
111
|
+
useEffect(() => {
|
|
112
|
+
if (params.startManually) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const cancelTimeout = setTimeout(() => {
|
|
117
|
+
startBenchmark();
|
|
116
118
|
}, params.startDelayInMs || 3000);
|
|
119
|
+
|
|
117
120
|
return () => {
|
|
118
121
|
clearTimeout(cancelTimeout);
|
|
119
|
-
|
|
122
|
+
if (cancellableRef.current) {
|
|
123
|
+
cancellableRef.current.cancel();
|
|
124
|
+
}
|
|
120
125
|
};
|
|
121
126
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
122
127
|
}, []);
|
|
123
|
-
|
|
128
|
+
|
|
129
|
+
return { startBenchmark, isBenchmarkRunning } as const;
|
|
124
130
|
}
|
|
125
131
|
|
|
126
132
|
export function getFormattedString(res: BenchmarkResult) {
|
|
127
133
|
return (
|
|
128
134
|
`Results:\n\n` +
|
|
129
135
|
`JS FPS: Avg: ${res.js?.averageFPS} | Min: ${res.js?.minFPS} | Max: ${res.js?.maxFPS}\n\n` +
|
|
130
|
-
`${
|
|
131
|
-
res.blankArea
|
|
132
|
-
? `Blank Area: Max: ${res.blankArea?.maxBlankArea} Cumulative: ${res.blankArea?.cumulativeBlankArea}\n\n`
|
|
133
|
-
: ``
|
|
134
|
-
}` +
|
|
135
136
|
`${
|
|
136
137
|
res.suggestions.length > 0
|
|
137
138
|
? `Suggestions:\n\n${res.suggestions
|
|
@@ -144,22 +145,11 @@ export function getFormattedString(res: BenchmarkResult) {
|
|
|
144
145
|
|
|
145
146
|
function generateResult(
|
|
146
147
|
jsProfilerResponse: JSFPSResult,
|
|
147
|
-
blankAreaResult: BlankAreaTrackerResult,
|
|
148
148
|
suggestions: string[],
|
|
149
149
|
cancellable: Cancellable
|
|
150
150
|
) {
|
|
151
151
|
return {
|
|
152
152
|
js: jsProfilerResponse,
|
|
153
|
-
blankArea:
|
|
154
|
-
blankAreaResult.maxBlankArea >= 0
|
|
155
|
-
? {
|
|
156
|
-
maxBlankArea: roundToDecimalPlaces(blankAreaResult.maxBlankArea, 0),
|
|
157
|
-
cumulativeBlankArea: roundToDecimalPlaces(
|
|
158
|
-
blankAreaResult.cumulativeBlankArea,
|
|
159
|
-
0
|
|
160
|
-
),
|
|
161
|
-
}
|
|
162
|
-
: undefined,
|
|
163
153
|
suggestions,
|
|
164
154
|
interrupted: cancellable.isCancelled(),
|
|
165
155
|
};
|
|
@@ -169,21 +159,21 @@ function generateResult(
|
|
|
169
159
|
* Scrolls to the end of the list and then back to the top
|
|
170
160
|
*/
|
|
171
161
|
async function runScrollBenchmark(
|
|
172
|
-
flashListRef: React.RefObject<
|
|
162
|
+
flashListRef: React.RefObject<FlashListRef<any> | null | undefined>,
|
|
173
163
|
cancellable: Cancellable,
|
|
174
164
|
scrollSpeedMultiplier: number
|
|
175
165
|
): Promise<void> {
|
|
176
166
|
if (flashListRef.current) {
|
|
177
167
|
const horizontal = flashListRef.current.props.horizontal;
|
|
178
|
-
const
|
|
179
|
-
if (
|
|
180
|
-
const
|
|
181
|
-
const
|
|
168
|
+
const rv = flashListRef.current;
|
|
169
|
+
if (rv) {
|
|
170
|
+
const rvSize = rv.getWindowSize();
|
|
171
|
+
const rvContentSize = rv.getChildContainerDimensions();
|
|
182
172
|
|
|
183
173
|
const fromX = 0;
|
|
184
174
|
const fromY = 0;
|
|
185
|
-
const toX =
|
|
186
|
-
const toY =
|
|
175
|
+
const toX = rvContentSize.width - rvSize.width;
|
|
176
|
+
const toY = rvContentSize.height - rvSize.height;
|
|
187
177
|
|
|
188
178
|
const scrollNow = (x: number, y: number) => {
|
|
189
179
|
flashListRef.current?.scrollToOffset({
|
|
@@ -213,8 +203,9 @@ async function runScrollBenchmark(
|
|
|
213
203
|
}
|
|
214
204
|
}
|
|
215
205
|
}
|
|
206
|
+
|
|
216
207
|
function computeSuggestions(
|
|
217
|
-
flashListRef: React.RefObject<
|
|
208
|
+
flashListRef: React.RefObject<FlashListRef<any> | null | undefined>,
|
|
218
209
|
suggestions: string[]
|
|
219
210
|
) {
|
|
220
211
|
if (flashListRef.current) {
|
|
@@ -223,42 +214,5 @@ function computeSuggestions(
|
|
|
223
214
|
`Data count is low. Try to increase it to a large number (e.g 200) using the 'useDataMultiplier' hook.`
|
|
224
215
|
);
|
|
225
216
|
}
|
|
226
|
-
const distanceFromWindow = roundToDecimalPlaces(
|
|
227
|
-
flashListRef.current.firstItemOffset,
|
|
228
|
-
0
|
|
229
|
-
);
|
|
230
|
-
if (
|
|
231
|
-
(flashListRef.current.props.estimatedFirstItemOffset || 0) !==
|
|
232
|
-
distanceFromWindow
|
|
233
|
-
) {
|
|
234
|
-
suggestions.push(
|
|
235
|
-
`estimatedFirstItemOffset can be set to ${distanceFromWindow}`
|
|
236
|
-
);
|
|
237
|
-
}
|
|
238
|
-
const rlv = flashListRef.current.recyclerlistview_unsafe;
|
|
239
|
-
const horizontal = flashListRef.current.props.horizontal;
|
|
240
|
-
if (rlv) {
|
|
241
|
-
const sizeArray = rlv.props.dataProvider
|
|
242
|
-
.getAllData()
|
|
243
|
-
.map((_, index) =>
|
|
244
|
-
horizontal
|
|
245
|
-
? rlv.getLayout?.(index)?.width || 0
|
|
246
|
-
: rlv.getLayout?.(index)?.height || 0
|
|
247
|
-
);
|
|
248
|
-
const averageSize = Math.round(
|
|
249
|
-
sizeArray.reduce((prev, current) => prev + current, 0) /
|
|
250
|
-
sizeArray.length
|
|
251
|
-
);
|
|
252
|
-
if (
|
|
253
|
-
Math.abs(
|
|
254
|
-
averageSize -
|
|
255
|
-
(flashListRef.current.props.estimatedItemSize ??
|
|
256
|
-
flashListRef.current.state.layoutProvider
|
|
257
|
-
.defaultEstimatedItemSize)
|
|
258
|
-
) > 5
|
|
259
|
-
) {
|
|
260
|
-
suggestions.push(`estimatedItemSize can be set to ${averageSize}`);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
217
|
}
|
|
264
218
|
}
|
|
@@ -1,27 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MIT License
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2024 Huawei Device Co., Ltd.
|
|
5
|
-
*
|
|
6
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
* in the Software without restriction, including without limitation the rights
|
|
9
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
* furnished to do so, subject to the following conditions:
|
|
12
|
-
*
|
|
13
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
* copies or substantial portions of the Software.
|
|
15
|
-
*
|
|
16
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
* SOFTWARE.
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
1
|
/**
|
|
26
2
|
* Increases the data size by duplicating it, it's kept in hook format so that in future we can add auto pagination support.
|
|
27
3
|
* If you're using this with FlatList then make sure you remove `keyExtractor` because this method might duplicate ids that might be in the data.
|
|
@@ -1,30 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
* MIT License
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2024 Huawei Device Co., Ltd.
|
|
5
|
-
*
|
|
6
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
* in the Software without restriction, including without limitation the rights
|
|
9
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
* furnished to do so, subject to the following conditions:
|
|
12
|
-
*
|
|
13
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
* copies or substantial portions of the Software.
|
|
15
|
-
*
|
|
16
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
* SOFTWARE.
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
import { useEffect } from "react";
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
26
2
|
import { FlatList } from "react-native";
|
|
27
3
|
|
|
4
|
+
import { ErrorMessages } from "../errors/ErrorMessages";
|
|
5
|
+
|
|
28
6
|
import { autoScroll, Cancellable } from "./AutoScrollHelper";
|
|
29
7
|
import { JSFPSMonitor } from "./JSFPSMonitor";
|
|
30
8
|
import {
|
|
@@ -47,14 +25,24 @@ export function useFlatListBenchmark(
|
|
|
47
25
|
callback: (benchmarkResult: BenchmarkResult) => void,
|
|
48
26
|
params: FlatListBenchmarkParams
|
|
49
27
|
) {
|
|
50
|
-
|
|
28
|
+
const [isBenchmarkRunning, setIsBenchmarkRunning] = useState(false);
|
|
29
|
+
const cancellableRef = useRef<Cancellable | null>(null);
|
|
30
|
+
|
|
31
|
+
const startBenchmark = useCallback(() => {
|
|
32
|
+
if (isBenchmarkRunning) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
51
35
|
const cancellable = new Cancellable();
|
|
52
|
-
|
|
36
|
+
cancellableRef.current = cancellable;
|
|
37
|
+
if (flatListRef.current && flatListRef.current.props) {
|
|
53
38
|
if (!(Number(flatListRef.current.props.data?.length) > 0)) {
|
|
54
|
-
throw new Error(
|
|
39
|
+
throw new Error(ErrorMessages.dataEmptyCannotRunBenchmark);
|
|
55
40
|
}
|
|
56
41
|
}
|
|
57
|
-
|
|
42
|
+
|
|
43
|
+
setIsBenchmarkRunning(true);
|
|
44
|
+
|
|
45
|
+
const runBenchmark = async () => {
|
|
58
46
|
const jsFPSMonitor = new JSFPSMonitor();
|
|
59
47
|
jsFPSMonitor.startTracking();
|
|
60
48
|
for (let i = 0; i < (params.repeatCount || 1); i++) {
|
|
@@ -75,14 +63,37 @@ export function useFlatListBenchmark(
|
|
|
75
63
|
result.formattedString = getFormattedString(result);
|
|
76
64
|
}
|
|
77
65
|
callback(result);
|
|
66
|
+
setIsBenchmarkRunning(false);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
runBenchmark();
|
|
70
|
+
}, [
|
|
71
|
+
callback,
|
|
72
|
+
flatListRef,
|
|
73
|
+
isBenchmarkRunning,
|
|
74
|
+
params.repeatCount,
|
|
75
|
+
params.speedMultiplier,
|
|
76
|
+
params.targetOffset,
|
|
77
|
+
]);
|
|
78
|
+
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
if (params.startManually) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const cancelTimeout = setTimeout(() => {
|
|
85
|
+
startBenchmark();
|
|
78
86
|
}, params.startDelayInMs || 3000);
|
|
87
|
+
|
|
79
88
|
return () => {
|
|
80
89
|
clearTimeout(cancelTimeout);
|
|
81
|
-
|
|
90
|
+
if (cancellableRef.current) {
|
|
91
|
+
cancellableRef.current.cancel();
|
|
92
|
+
}
|
|
82
93
|
};
|
|
83
94
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
84
95
|
}, []);
|
|
85
|
-
return
|
|
96
|
+
return { startBenchmark, isBenchmarkRunning };
|
|
86
97
|
}
|
|
87
98
|
|
|
88
99
|
/**
|
|
@@ -95,7 +106,7 @@ async function runScrollBenchmark(
|
|
|
95
106
|
scrollSpeedMultiplier: number
|
|
96
107
|
): Promise<void> {
|
|
97
108
|
if (flatListRef.current) {
|
|
98
|
-
const horizontal = flatListRef.current.props
|
|
109
|
+
const horizontal = Boolean(flatListRef.current.props?.horizontal);
|
|
99
110
|
|
|
100
111
|
const fromX = 0;
|
|
101
112
|
const fromY = 0;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export const ErrorMessages = {
|
|
2
|
+
multipleViewabilityThresholdTypesNotSupported:
|
|
3
|
+
"You can set exactly one of itemVisiblePercentThreshold or viewAreaCoveragePercentThreshold. Specifying both is not supported.",
|
|
4
|
+
flashListV2OnlySupportsNewArchitecture:
|
|
5
|
+
"FlashList v2 is only supported on new architecture",
|
|
6
|
+
layoutManagerNotInitializedLayoutInfo:
|
|
7
|
+
"LayoutManager is not initialized, layout info is unavailable",
|
|
8
|
+
layoutManagerNotInitializedChildContainer:
|
|
9
|
+
"LayoutManager is not initialized, child container layout is unavailable",
|
|
10
|
+
layoutManagerNotInitializedWindowSize:
|
|
11
|
+
"LayoutManager is not initialized, window size is unavailable",
|
|
12
|
+
horizontalPropCannotBeToggled:
|
|
13
|
+
"Horizontal prop cannot be toggled, you can use a key on FlashList to recreate it.",
|
|
14
|
+
layoutManagerNotInitializedVisibleIndices:
|
|
15
|
+
"LayoutManager is not initialized, visible indices are not unavailable",
|
|
16
|
+
masonryAndHorizontalIncompatible:
|
|
17
|
+
"Masonry and horizontal props are incompatible",
|
|
18
|
+
numColumnsAndHorizontalIncompatible:
|
|
19
|
+
"numColumns and horizontal props are incompatible",
|
|
20
|
+
indexOutOfBounds: "index out of bounds, not enough layouts",
|
|
21
|
+
fpsMonitorAlreadyRunning:
|
|
22
|
+
"This FPS Monitor has already been run, please create a new instance",
|
|
23
|
+
dataEmptyCannotRunBenchmark: "Data is empty, cannot run benchmark",
|
|
24
|
+
stickyHeadersNotSupportedForHorizontal:
|
|
25
|
+
"Sticky headers are not supported when list is horizontal",
|
|
26
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const WarningMessages = {
|
|
2
|
+
keyExtractorNotDefinedForAnimation:
|
|
3
|
+
"keyExtractor is not defined. This might cause the animations to not work as expected.",
|
|
4
|
+
keyExtractorNotDefinedForMVCP:
|
|
5
|
+
"keyExtractor is not defined, maintainVisibleContentPosition may not work as expected.",
|
|
6
|
+
exceededMaxRendersWithoutCommit:
|
|
7
|
+
"Exceeded max renders without commit. This might mean that you have duplicate keys in your keyExtractor output or your list is nested in a ScrollView causing a lot of items to render at once. " +
|
|
8
|
+
"If it's none of those and is causing a real issue or error, consider reporing this on FlashList Github",
|
|
9
|
+
};
|
package/src/index.ts
CHANGED
|
@@ -1,42 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* Copyright (C) 2024 Huawei Device Co., Ltd.
|
|
5
|
-
*
|
|
6
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
* in the Software without restriction, including without limitation the rights
|
|
9
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
* furnished to do so, subject to the following conditions:
|
|
12
|
-
*
|
|
13
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
* copies or substantial portions of the Software.
|
|
15
|
-
*
|
|
16
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
* SOFTWARE.
|
|
23
|
-
*/
|
|
1
|
+
// Keep this unmodified for TS type checking
|
|
2
|
+
import { isNewArch } from "./isNewArch";
|
|
3
|
+
import { ErrorMessages } from "./errors/ErrorMessages";
|
|
24
4
|
|
|
25
|
-
export {
|
|
5
|
+
export { FlashList } from "./FlashList";
|
|
6
|
+
export { FlashListRef } from "./FlashListRef";
|
|
26
7
|
export {
|
|
27
8
|
FlashListProps,
|
|
28
|
-
ContentStyle,
|
|
29
9
|
ListRenderItem,
|
|
30
10
|
ListRenderItemInfo,
|
|
31
11
|
RenderTarget,
|
|
32
12
|
RenderTargetOptions,
|
|
33
13
|
} from "./FlashListProps";
|
|
34
14
|
export { default as AnimatedFlashList } from "./AnimatedFlashList";
|
|
35
|
-
export {
|
|
36
|
-
useOnNativeBlankAreaEvents,
|
|
37
|
-
BlankAreaEventHandler,
|
|
38
|
-
BlankAreaEvent,
|
|
39
|
-
} from "./native/auto-layout/AutoLayoutView";
|
|
40
15
|
export {
|
|
41
16
|
useBenchmark,
|
|
42
17
|
BenchmarkParams,
|
|
@@ -47,21 +22,18 @@ export {
|
|
|
47
22
|
useFlatListBenchmark,
|
|
48
23
|
FlatListBenchmarkParams,
|
|
49
24
|
} from "./benchmark/useFlatListBenchmark";
|
|
50
|
-
export {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
BlankAreaTrackerConfig,
|
|
54
|
-
} from "./benchmark/useBlankAreaTracker";
|
|
55
|
-
export {
|
|
56
|
-
MasonryFlashList,
|
|
57
|
-
MasonryFlashListProps,
|
|
58
|
-
MasonryFlashListScrollEvent,
|
|
59
|
-
MasonryFlashListRef,
|
|
60
|
-
MasonryListItem,
|
|
61
|
-
MasonryListRenderItem,
|
|
62
|
-
MasonryListRenderItemInfo,
|
|
63
|
-
} from "./MasonryFlashList";
|
|
25
|
+
export { useLayoutState } from "./recyclerview/hooks/useLayoutState";
|
|
26
|
+
export { useRecyclingState } from "./recyclerview/hooks/useRecyclingState";
|
|
27
|
+
export { useMappingHelper } from "./recyclerview/hooks/useMappingHelper";
|
|
64
28
|
export { JSFPSMonitor, JSFPSResult } from "./benchmark/JSFPSMonitor";
|
|
65
29
|
export { autoScroll, Cancellable } from "./benchmark/AutoScrollHelper";
|
|
66
|
-
export { default as ViewToken } from "./viewability/ViewToken";
|
|
67
|
-
export {
|
|
30
|
+
export { default as ViewToken } from "./recyclerview/viewability/ViewToken";
|
|
31
|
+
export { useFlashListContext } from "./recyclerview/RecyclerViewContextProvider";
|
|
32
|
+
export {
|
|
33
|
+
LayoutCommitObserver,
|
|
34
|
+
LayoutCommitObserverProps,
|
|
35
|
+
} from "./recyclerview/LayoutCommitObserver";
|
|
36
|
+
|
|
37
|
+
if (!isNewArch()) {
|
|
38
|
+
throw new Error(ErrorMessages.flashListV2OnlySupportsNewArchitecture);
|
|
39
|
+
}
|
package/src/isNewArch.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Platform } from "react-native";
|
|
2
|
+
|
|
3
|
+
let _isNewArch: boolean | undefined;
|
|
4
|
+
|
|
5
|
+
export function isNewArch(): boolean {
|
|
6
|
+
if (_isNewArch !== undefined) {
|
|
7
|
+
return _isNewArch;
|
|
8
|
+
} else {
|
|
9
|
+
try {
|
|
10
|
+
// Check for Fabric UI Manager
|
|
11
|
+
const hasFabricUIManager = Boolean(
|
|
12
|
+
(global as any)?.nativeFabricUIManager
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
// Check for TurboModule system
|
|
16
|
+
const hasTurboModule = Boolean((global as any)?.__turboModuleProxy);
|
|
17
|
+
|
|
18
|
+
_isNewArch =
|
|
19
|
+
hasFabricUIManager || hasTurboModule || Platform.OS === "web";
|
|
20
|
+
} catch {
|
|
21
|
+
_isNewArch = true;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return _isNewArch;
|
|
25
|
+
}
|
|
@@ -1,53 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MIT License
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2024 Huawei Device Co., Ltd.
|
|
5
|
-
*
|
|
6
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
* in the Software without restriction, including without limitation the rights
|
|
9
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
* furnished to do so, subject to the following conditions:
|
|
12
|
-
*
|
|
13
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
* copies or substantial portions of the Software.
|
|
15
|
-
*
|
|
16
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
* SOFTWARE.
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
import { BaseItemAnimator } from "recyclerlistview";
|
|
26
|
-
|
|
27
1
|
const PlatformConfig = {
|
|
28
2
|
defaultDrawDistance: 250,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
invertedTransformStyleHorizontal: { transform: [{ rotate: "180deg" }] },
|
|
32
|
-
};
|
|
33
|
-
const getCellContainerPlatformStyles = (
|
|
34
|
-
inverted: boolean,
|
|
35
|
-
parentProps: { x: number; y: number; isHorizontal?: boolean }
|
|
36
|
-
): { transform: string; WebkitTransform: string } | undefined => {
|
|
37
|
-
return undefined;
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
const getItemAnimator = (): BaseItemAnimator | undefined => {
|
|
41
|
-
return undefined;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
const getFooterContainer = (): React.ComponentClass | undefined => {
|
|
45
|
-
return undefined;
|
|
3
|
+
supportsOffsetCorrection: true,
|
|
4
|
+
trackAverageRenderTimeForOffsetProjection: true,
|
|
46
5
|
};
|
|
47
6
|
|
|
48
|
-
export {
|
|
49
|
-
PlatformConfig,
|
|
50
|
-
getCellContainerPlatformStyles,
|
|
51
|
-
getItemAnimator,
|
|
52
|
-
getFooterContainer,
|
|
53
|
-
};
|
|
7
|
+
export { PlatformConfig };
|