@office-iss/react-native-win32 0.70.2 → 0.71.0-preview.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/.eslintignore +1 -0
- package/.eslintrc.js +2 -0
- package/.flowconfig +3 -6
- package/CHANGELOG.json +281 -43
- package/CHANGELOG.md +105 -24
- package/IntegrationTests/AccessibilityManagerTest.js +1 -1
- package/IntegrationTests/AppEventsTest.js +0 -1
- package/IntegrationTests/BUCK +0 -1
- package/IntegrationTests/GlobalEvalWithSourceUrlTest.js +1 -1
- package/IntegrationTests/ImageSnapshotTest.js +1 -1
- package/IntegrationTests/IntegrationTestsApp.js +2 -3
- package/IntegrationTests/SimpleSnapshotTest.js +1 -1
- package/IntegrationTests/SyncMethodTest.js +1 -1
- package/IntegrationTests/TimersTest.js +4 -4
- package/IntegrationTests/WebSocketTest.js +3 -3
- package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +80 -0
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +4 -3
- package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
- package/Libraries/Alert/Alert.d.ts +90 -0
- package/Libraries/Alert/Alert.js +7 -1
- package/Libraries/Alert/Alert.win32.js +1 -0
- package/Libraries/Alert/NativeAlertManager.js +2 -0
- package/Libraries/Alert/RCTAlertManager.ios.js +2 -1
- package/Libraries/Animated/Animated.d.ts +587 -0
- package/Libraries/Animated/Animated.js +13 -11
- package/Libraries/Animated/AnimatedEvent.js +12 -17
- package/Libraries/Animated/AnimatedImplementation.js +21 -23
- package/Libraries/Animated/AnimatedMock.js +11 -13
- package/Libraries/Animated/AnimatedWeb.js +2 -2
- package/Libraries/Animated/Easing.d.ts +37 -0
- package/Libraries/Animated/Easing.js +2 -2
- package/Libraries/Animated/NativeAnimatedHelper.js +32 -22
- package/Libraries/Animated/NativeAnimatedModule.js +1 -0
- package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
- package/Libraries/Animated/SpringConfig.js +2 -7
- package/Libraries/Animated/animations/Animation.js +3 -4
- package/Libraries/Animated/animations/DecayAnimation.js +5 -8
- package/Libraries/Animated/animations/SpringAnimation.js +9 -14
- package/Libraries/Animated/animations/TimingAnimation.js +9 -13
- package/Libraries/Animated/bezier.js +2 -2
- package/Libraries/Animated/components/AnimatedFlatList.js +5 -6
- package/Libraries/Animated/components/AnimatedImage.js +5 -6
- package/Libraries/Animated/components/AnimatedScrollView.js +110 -14
- package/Libraries/Animated/components/AnimatedSectionList.js +4 -5
- package/Libraries/Animated/components/AnimatedText.js +5 -6
- package/Libraries/Animated/components/AnimatedView.js +5 -6
- package/Libraries/Animated/createAnimatedComponent.js +13 -20
- package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +2 -2
- package/Libraries/Animated/nodes/AnimatedAddition.js +6 -8
- package/Libraries/Animated/nodes/AnimatedColor.js +7 -7
- package/Libraries/Animated/nodes/AnimatedDiffClamp.js +6 -8
- package/Libraries/Animated/nodes/AnimatedDivision.js +7 -9
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +7 -10
- package/Libraries/Animated/nodes/AnimatedModulo.js +6 -8
- package/Libraries/Animated/nodes/AnimatedMultiplication.js +7 -9
- package/Libraries/Animated/nodes/AnimatedNode.js +10 -8
- package/Libraries/Animated/nodes/AnimatedProps.js +12 -30
- package/Libraries/Animated/nodes/AnimatedStyle.js +12 -22
- package/Libraries/Animated/nodes/AnimatedSubtraction.js +7 -9
- package/Libraries/Animated/nodes/AnimatedTracking.js +8 -12
- package/Libraries/Animated/nodes/AnimatedTransform.js +38 -31
- package/Libraries/Animated/nodes/AnimatedValue.js +9 -10
- package/Libraries/Animated/nodes/AnimatedValueXY.js +4 -7
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +4 -5
- package/Libraries/Animated/useAnimatedProps.js +8 -16
- package/Libraries/Animated/useAnimatedValue.d.ts +15 -0
- package/Libraries/Animated/useAnimatedValue.js +25 -0
- package/Libraries/AppState/AppState.d.ts +58 -0
- package/Libraries/AppState/AppState.js +3 -7
- package/Libraries/AppState/NativeAppState.js +1 -0
- package/Libraries/BatchedBridge/MessageQueue.js +9 -5
- package/Libraries/BatchedBridge/NativeModules.d.ts +25 -0
- package/Libraries/BatchedBridge/NativeModules.js +1 -0
- package/Libraries/Blob/BlobManager.js +5 -3
- package/Libraries/Blob/File.js +2 -3
- package/Libraries/Blob/FileReader.js +6 -5
- package/Libraries/Blob/NativeBlobModule.js +1 -0
- package/Libraries/Blob/NativeFileReaderModule.js +1 -0
- package/Libraries/Blob/URL.js +11 -9
- package/Libraries/BugReporting/NativeBugReporting.js +1 -0
- package/Libraries/BugReporting/getReactData.js +1 -1
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +128 -0
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.flow.js +208 -0
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +40 -8
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +40 -8
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +1 -0
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +5 -0
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts +86 -0
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.flow.js +58 -0
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +7 -8
- package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -3
- package/Libraries/Components/Button.d.ts +42 -0
- package/Libraries/Components/Button.flow.js +265 -0
- package/Libraries/Components/Button.js +62 -18
- package/Libraries/Components/Clipboard/Clipboard.d.ts +28 -0
- package/Libraries/Components/Clipboard/NativeClipboard.js +1 -0
- package/Libraries/Components/DatePicker/DatePickerIOS.android.js +4 -2
- package/Libraries/Components/DatePicker/DatePickerIOS.d.ts +92 -0
- package/Libraries/Components/{MaskedView/MaskedViewIOS.android.js → DatePicker/DatePickerIOS.flow.android.js} +3 -2
- package/Libraries/Components/DatePicker/DatePickerIOS.flow.ios.js +113 -0
- package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +8 -7
- package/Libraries/Components/DatePicker/DatePickerIOS.win32.js +4 -2
- package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +7 -6
- package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +1 -0
- package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +9 -8
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +13 -14
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +141 -0
- package/Libraries/Components/Keyboard/Keyboard.d.ts +109 -0
- package/Libraries/Components/Keyboard/Keyboard.js +35 -8
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts +46 -0
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +35 -15
- package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +1 -0
- package/Libraries/Components/Pressable/Pressable.d.ts +167 -0
- package/Libraries/Components/Pressable/Pressable.js +73 -15
- package/Libraries/Components/Pressable/Pressable.win32.js +77 -19
- package/Libraries/Components/Pressable/useAndroidRippleForView.js +6 -3
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +3 -3
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts +83 -0
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +2 -2
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +1 -1
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.d.ts +62 -0
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +4 -4
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.win32.js +1 -1
- package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +2 -2
- package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +5 -6
- package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +4 -4
- package/Libraries/Components/RefreshControl/RefreshControl.d.ts +87 -0
- package/Libraries/Components/RefreshControl/RefreshControl.js +4 -3
- package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +2 -3
- package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +1 -1
- package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +24 -0
- package/Libraries/Components/SafeAreaView/SafeAreaView.flow.js +19 -0
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +5 -4
- package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +5 -4
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +2 -1
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +2 -1
- package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +2 -1
- package/Libraries/Components/ScrollView/ScrollView.d.ts +911 -0
- package/Libraries/Components/ScrollView/ScrollView.js +87 -52
- package/Libraries/Components/ScrollView/ScrollViewCommands.js +3 -3
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +2 -1
- package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +3 -3
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +243 -269
- package/Libraries/Components/Slider/Slider.d.ts +132 -0
- package/Libraries/Components/Slider/Slider.js +9 -9
- package/Libraries/Components/Slider/SliderNativeComponent.js +4 -5
- package/Libraries/Components/Sound/NativeSoundManager.js +1 -0
- package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +1 -0
- package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +1 -0
- package/Libraries/Components/StatusBar/StatusBar.d.ts +138 -0
- package/Libraries/Components/StatusBar/StatusBar.js +7 -7
- package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +10 -10
- package/Libraries/Components/Switch/Switch.d.ts +115 -0
- package/Libraries/Components/Switch/Switch.js +7 -7
- package/Libraries/Components/Switch/SwitchNativeComponent.js +9 -4
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +40 -12
- package/Libraries/Components/TextInput/InputAccessoryView.d.ts +34 -0
- package/Libraries/Components/TextInput/InputAccessoryView.js +3 -4
- package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +1 -1
- package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +3 -2
- package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +3 -2
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +3 -1
- package/Libraries/Components/TextInput/TextInput.d.ts +840 -0
- package/Libraries/Components/TextInput/TextInput.flow.js +1057 -0
- package/Libraries/Components/TextInput/TextInput.js +344 -38
- package/Libraries/Components/TextInput/TextInput.win32.d.ts +1 -1
- package/Libraries/Components/TextInput/TextInput.win32.js +1 -1
- package/Libraries/Components/TextInput/TextInput.win32.js.map +1 -1
- package/Libraries/Components/TextInput/TextInputNativeCommands.js +2 -2
- package/Libraries/Components/TextInput/TextInputState.js +22 -5
- package/Libraries/Components/TextInput/TextInputState.win32.js +24 -5
- package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +1 -0
- package/Libraries/Components/ToastAndroid/ToastAndroid.d.ts +47 -0
- package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
- package/Libraries/Components/Touchable/Touchable.d.ts +90 -0
- package/Libraries/Components/Touchable/Touchable.flow.js +258 -0
- package/Libraries/Components/Touchable/Touchable.js +12 -12
- package/Libraries/Components/Touchable/Touchable.win32.js +12 -12
- package/Libraries/Components/Touchable/TouchableBounce.js +44 -10
- package/Libraries/Components/Touchable/TouchableHighlight.d.ts +68 -0
- package/Libraries/Components/Touchable/TouchableHighlight.js +32 -9
- package/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +114 -0
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +54 -20
- package/Libraries/Components/Touchable/TouchableOpacity.d.ts +109 -0
- package/Libraries/Components/Touchable/TouchableOpacity.js +54 -16
- package/Libraries/Components/Touchable/TouchableWin32.Props.d.ts +2 -1
- package/Libraries/Components/Touchable/TouchableWin32.Props.js.map +1 -1
- package/Libraries/Components/Touchable/TouchableWin32.js +0 -1
- package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +143 -0
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +64 -10
- package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +1 -1
- package/Libraries/Components/UnimplementedViews/UnimplementedView.js +1 -1
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +13 -2
- package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +1 -0
- package/Libraries/Components/View/View.d.ts +29 -0
- package/Libraries/Components/View/View.js +91 -8
- package/Libraries/Components/View/View.win32.js +176 -89
- package/Libraries/Components/View/ViewAccessibility.d.ts +360 -0
- package/Libraries/Components/View/ViewAccessibility.js +70 -1
- package/Libraries/Components/View/ViewNativeComponent.js +3 -3
- package/Libraries/Components/View/ViewPropTypes.d.ts +245 -0
- package/Libraries/Components/View/ViewPropTypes.js +105 -13
- package/Libraries/Components/View/ViewPropTypes.win32.js +105 -13
- package/Libraries/Components/View/ViewWin32.Props.d.ts +6 -1
- package/Libraries/Components/View/ViewWin32.Props.js.map +1 -1
- package/Libraries/Core/Devtools/openFileInEditor.js +3 -0
- package/Libraries/Core/Devtools/parseErrorStack.js +1 -1
- package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -2
- package/Libraries/Core/ExceptionsManager.js +8 -0
- package/Libraries/Core/ExtendedError.js +11 -8
- package/Libraries/Core/InitializeCore.js +2 -1
- package/Libraries/Core/NativeExceptionsManager.js +3 -4
- package/Libraries/Core/RawEventEmitter.js +2 -1
- package/Libraries/Core/ReactFiberErrorDialog.js +2 -2
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Core/ReactNativeVersionCheck.js +1 -0
- package/Libraries/Core/ReactNativeVersionCheck.win32.js +1 -0
- package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +1 -0
- package/Libraries/Core/Timers/JSTimers.js +13 -11
- package/Libraries/Core/Timers/NativeTiming.js +1 -0
- package/Libraries/Core/setUpBatchedBridge.js +1 -5
- package/Libraries/Core/setUpDeveloperTools.js +4 -6
- package/Libraries/Core/setUpReactDevTools.js +4 -1
- package/Libraries/Core/setUpRegeneratorRuntime.js +1 -1
- package/Libraries/Core/setUpTimers.js +1 -1
- package/Libraries/EventEmitter/NativeEventEmitter.d.ts +70 -0
- package/Libraries/EventEmitter/NativeEventEmitter.js +1 -0
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +30 -0
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -1
- package/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts +32 -0
- package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +1 -0
- package/Libraries/Events/EventPolyfill.js +1 -1
- package/Libraries/HeapCapture/NativeJSCHeapCapture.js +1 -0
- package/Libraries/Image/AssetSourceResolver.js +4 -6
- package/Libraries/Image/Image.android.js +63 -45
- package/Libraries/Image/Image.d.ts +322 -0
- package/Libraries/Image/Image.flow.js +64 -0
- package/Libraries/Image/Image.ios.js +55 -28
- package/Libraries/Image/Image.win32.js +54 -25
- package/Libraries/Image/ImageBackground.js +18 -7
- package/Libraries/Image/ImageInjection.js +2 -1
- package/Libraries/Image/ImageProps.js +88 -5
- package/Libraries/Image/ImageResizeMode.d.ts +49 -0
- package/Libraries/Image/ImageSource.d.ts +76 -0
- package/Libraries/Image/ImageSourceUtils.js +80 -0
- package/Libraries/Image/ImageUtils.js +21 -0
- package/Libraries/Image/ImageViewNativeComponent.js +8 -5
- package/Libraries/Image/NativeImageEditor.js +1 -0
- package/Libraries/Image/NativeImageLoaderAndroid.js +1 -0
- package/Libraries/Image/NativeImageLoaderIOS.js +1 -0
- package/Libraries/Image/NativeImageLoaderWin32.js +1 -0
- package/Libraries/Image/NativeImageStoreAndroid.js +1 -0
- package/Libraries/Image/NativeImageStoreIOS.js +1 -0
- package/Libraries/Image/TextInlineImageNativeComponent.js +4 -3
- package/Libraries/Image/nativeImageSource.js +2 -2
- package/Libraries/Image/resolveAssetSource.js +5 -5
- package/Libraries/Inspector/BorderBox.js +1 -1
- package/Libraries/Inspector/BoxInspector.js +3 -4
- package/Libraries/Inspector/DevtoolsOverlay.js +213 -0
- package/Libraries/Inspector/ElementBox.js +4 -5
- package/Libraries/Inspector/ElementProperties.js +10 -11
- package/Libraries/Inspector/Inspector.js +22 -108
- package/Libraries/Inspector/Inspector.win32.js +23 -109
- package/Libraries/Inspector/InspectorOverlay.js +5 -5
- package/Libraries/Inspector/InspectorOverlay.win32.js +5 -5
- package/Libraries/Inspector/InspectorPanel.js +12 -10
- package/Libraries/Inspector/NetworkOverlay.js +7 -3
- package/Libraries/Inspector/PerformanceOverlay.js +3 -3
- package/Libraries/Inspector/StyleInspector.js +2 -2
- package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +71 -0
- package/Libraries/Interaction/BridgeSpyStallHandler.js +1 -1
- package/Libraries/Interaction/InteractionManager.d.ts +74 -0
- package/Libraries/Interaction/InteractionManager.js +8 -8
- package/Libraries/Interaction/NativeFrameRateLogger.js +1 -0
- package/Libraries/Interaction/PanResponder.d.ts +202 -0
- package/Libraries/Interaction/PanResponder.flow.js +257 -0
- package/Libraries/Interaction/PanResponder.js +4 -3
- package/Libraries/JSInspector/JSInspector.js +0 -3
- package/Libraries/JSInspector/NetworkAgent.js +3 -3
- package/Libraries/LayoutAnimation/LayoutAnimation.d.ts +84 -0
- package/Libraries/LayoutAnimation/LayoutAnimation.js +4 -3
- package/Libraries/Linking/Linking.d.ts +61 -0
- package/Libraries/Linking/Linking.js +3 -2
- package/Libraries/Linking/NativeIntentAndroid.js +1 -0
- package/Libraries/Linking/NativeLinkingManager.js +1 -0
- package/Libraries/Lists/CellRenderMask.js +13 -3
- package/Libraries/Lists/ChildListCollection.js +72 -0
- package/Libraries/Lists/FillRateHelper.js +28 -17
- package/Libraries/Lists/FlatList.d.ts +292 -0
- package/Libraries/Lists/FlatList.js +70 -70
- package/Libraries/Lists/SectionList.d.ts +300 -0
- package/Libraries/Lists/SectionList.js +5 -5
- package/Libraries/Lists/SectionListModern.js +6 -6
- package/Libraries/Lists/StateSafePureComponent.js +85 -0
- package/Libraries/Lists/ViewabilityHelper.js +33 -12
- package/Libraries/Lists/VirtualizeUtils.js +17 -13
- package/Libraries/Lists/VirtualizedList.d.ts +317 -0
- package/Libraries/Lists/VirtualizedList.js +548 -890
- package/Libraries/Lists/VirtualizedListCellRenderer.js +259 -0
- package/Libraries/Lists/VirtualizedListContext.js +7 -48
- package/Libraries/Lists/VirtualizedListProps.js +279 -0
- package/Libraries/Lists/VirtualizedSectionList.js +6 -3
- package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
- package/Libraries/LogBox/Data/LogBoxData.js +9 -8
- package/Libraries/LogBox/Data/LogBoxLog.js +5 -5
- package/Libraries/LogBox/Data/LogBoxSymbolication.js +4 -4
- package/Libraries/LogBox/Data/parseLogBoxLog.js +5 -3
- package/Libraries/LogBox/LogBox.d.ts +28 -0
- package/Libraries/LogBox/LogBox.js +11 -11
- package/Libraries/LogBox/LogBoxInspectorContainer.js +5 -3
- package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
- package/Libraries/LogBox/UI/AnsiHighlight.js +5 -3
- package/Libraries/LogBox/UI/LogBoxButton.js +6 -5
- package/Libraries/LogBox/UI/LogBoxInspector.js +6 -6
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +9 -8
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +3 -3
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +7 -6
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +6 -5
- package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +6 -5
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +7 -6
- package/Libraries/LogBox/UI/LogBoxInspectorSection.js +2 -2
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -3
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +5 -5
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +5 -5
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +5 -5
- package/Libraries/LogBox/UI/LogBoxMessage.js +3 -3
- package/Libraries/LogBox/UI/LogBoxNotification.js +6 -5
- package/Libraries/Modal/Modal.d.ts +104 -0
- package/Libraries/Modal/Modal.js +14 -14
- package/Libraries/Modal/NativeModalManager.js +1 -0
- package/Libraries/Modal/RCTModalHostViewNativeComponent.js +3 -3
- package/Libraries/NativeComponent/BaseViewConfig.android.js +27 -2
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +8 -3
- package/Libraries/NativeComponent/BaseViewConfig.win32.js +8 -3
- package/Libraries/NativeComponent/NativeComponentRegistry.js +5 -4
- package/Libraries/NativeComponent/PlatformBaseViewConfig.js +1 -0
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +1 -1
- package/Libraries/NativeComponent/ViewConfig.js +1 -0
- package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +1 -0
- package/Libraries/NativeModules/specs/NativeDevMenu.js +1 -0
- package/Libraries/NativeModules/specs/NativeDevSettings.js +1 -0
- package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +1 -0
- package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +1 -0
- package/Libraries/NativeModules/specs/NativeLogBox.js +3 -2
- package/Libraries/NativeModules/specs/NativeRedBox.js +1 -0
- package/Libraries/NativeModules/specs/NativeSourceCode.js +1 -0
- package/Libraries/Network/NativeNetworkingAndroid.js +1 -0
- package/Libraries/Network/NativeNetworkingIOS.js +1 -0
- package/Libraries/Network/RCTNetworking.android.js +4 -3
- package/Libraries/Network/RCTNetworking.ios.js +3 -2
- package/Libraries/Network/RCTNetworking.win32.js +1 -0
- package/Libraries/Network/convertRequestBody.js +1 -2
- package/Libraries/NewAppScreen/components/DebugInstructions.js +4 -1
- package/Libraries/NewAppScreen/components/Header.js +6 -2
- package/Libraries/NewAppScreen/components/HermesBadge.js +6 -2
- package/Libraries/NewAppScreen/components/LearnMoreLinks.js +8 -9
- package/Libraries/NewAppScreen/components/ReloadInstructions.js +4 -1
- package/Libraries/NewAppScreen/index.js +1 -1
- package/Libraries/Performance/NativeJSCSamplingProfiler.js +1 -0
- package/Libraries/Performance/QuickPerformanceLogger.js +34 -10
- package/Libraries/Performance/Systrace.d.ts +66 -0
- package/Libraries/Performance/Systrace.js +110 -195
- package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
- package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +115 -0
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +5 -4
- package/Libraries/Pressability/Pressability.js +12 -10
- package/Libraries/Pressability/Pressability.win32.js +9 -7
- package/Libraries/Pressability/PressabilityDebug.js +2 -2
- package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
- package/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts +275 -0
- package/Libraries/PushNotificationIOS/PushNotificationIOS.js +19 -14
- package/Libraries/ReactNative/AppContainer.js +17 -7
- package/Libraries/ReactNative/AppRegistry.d.ts +68 -0
- package/Libraries/ReactNative/AppRegistry.js +11 -14
- package/Libraries/ReactNative/BridgelessUIManager.js +4 -3
- package/Libraries/ReactNative/FabricUIManager.js +3 -3
- package/Libraries/ReactNative/I18nManager.d.ts +25 -0
- package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +1 -0
- package/Libraries/ReactNative/NativeI18nManager.js +1 -0
- package/Libraries/ReactNative/NativeUIManager.js +1 -0
- package/Libraries/ReactNative/PaperUIManager.js +2 -2
- package/Libraries/ReactNative/PaperUIManager.win32.js +1 -1
- package/Libraries/ReactNative/ReactNativeFeatureFlags.js +9 -0
- package/Libraries/ReactNative/RendererImplementation.js +112 -0
- package/Libraries/ReactNative/RendererProxy.d.ts +20 -0
- package/Libraries/ReactNative/RendererProxy.js +26 -0
- package/Libraries/ReactNative/RootTag.js +0 -1
- package/Libraries/ReactNative/UIManager.d.ts +157 -0
- package/Libraries/ReactNative/UIManager.js +1 -1
- package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -0
- package/Libraries/ReactNative/renderApplication.js +38 -20
- package/Libraries/ReactNative/requireNativeComponent.d.ts +23 -0
- package/Libraries/ReactNative/requireNativeComponent.js +2 -2
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +10 -9
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +312 -217
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +212 -177
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +248 -213
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +311 -218
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +226 -196
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +262 -232
- package/Libraries/Renderer/implementations/ReactNativeRenderer.d.ts +149 -0
- package/Libraries/Renderer/shims/ReactFabric.js +2 -2
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
- package/Libraries/Renderer/shims/ReactNative.js +2 -2
- package/Libraries/Renderer/shims/ReactNativeTypes.d.ts +141 -0
- package/Libraries/Renderer/shims/ReactNativeTypes.js +23 -22
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +8 -8
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
- package/Libraries/Settings/NativeSettingsManager.js +1 -0
- package/Libraries/Settings/Settings.d.ts +18 -0
- package/Libraries/Share/NativeShareModule.js +1 -0
- package/Libraries/Share/Share.d.ts +80 -0
- package/Libraries/Share/Share.js +7 -5
- package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.d.ts +18 -0
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts +25 -0
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -0
- package/Libraries/StyleSheet/StyleSheet.d.ts +156 -0
- package/Libraries/StyleSheet/StyleSheet.js +15 -11
- package/Libraries/StyleSheet/StyleSheet.win32.js +16 -12
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +332 -0
- package/Libraries/StyleSheet/StyleSheetTypes.js +101 -24
- package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +2 -2
- package/Libraries/StyleSheet/normalizeColor.js +3 -3
- package/Libraries/StyleSheet/private/_TransformStyle.js +26 -24
- package/Libraries/StyleSheet/processAspectRatio.js +53 -0
- package/Libraries/StyleSheet/processColor.d.ts +16 -0
- package/Libraries/StyleSheet/processColor.js +3 -4
- package/Libraries/StyleSheet/processColorArray.js +1 -0
- package/Libraries/StyleSheet/processFontVariant.js +30 -0
- package/Libraries/StyleSheet/processTransform.js +114 -105
- package/Libraries/StyleSheet/splitLayoutProps.js +5 -0
- package/Libraries/Text/Text.d.ts +209 -0
- package/Libraries/Text/Text.js +94 -12
- package/Libraries/Text/TextNativeComponent.js +49 -41
- package/Libraries/Text/TextNativeComponent.win32.js +67 -48
- package/Libraries/Text/TextProps.js +64 -7
- package/Libraries/{Components/MaskedView/MaskedViewIOS.win32.js → TurboModule/RCTExport.d.ts} +3 -4
- package/Libraries/TurboModule/TurboModuleRegistry.d.ts +15 -0
- package/Libraries/TurboModule/TurboModuleRegistry.js +3 -1
- package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +1 -0
- package/Libraries/Types/CoreEventTypes.d.ts +263 -0
- package/Libraries/Types/CoreEventTypes.js +2 -1
- package/Libraries/Types/CoreEventTypes.win32.js +2 -1
- package/Libraries/Utilities/AcessibilityMapping.js +154 -0
- package/Libraries/Utilities/Appearance.d.ts +43 -0
- package/Libraries/Utilities/Appearance.js +3 -3
- package/Libraries/Utilities/BackHandler.android.js +3 -5
- package/Libraries/Utilities/BackHandler.d.ts +38 -0
- package/Libraries/Utilities/BackHandler.win32.js +3 -5
- package/Libraries/Utilities/DevSettings.d.ts +32 -0
- package/Libraries/Utilities/DevSettings.js +4 -2
- package/Libraries/Utilities/Dimensions.d.ts +79 -0
- package/Libraries/Utilities/Dimensions.js +2 -2
- package/Libraries/Utilities/Dimensions.win32.js +2 -2
- package/Libraries/Utilities/GlobalPerformanceLogger.js +2 -1
- package/Libraries/Utilities/HMRClient.js +23 -8
- package/Libraries/Utilities/LoadingView.ios.js +1 -1
- package/Libraries/Utilities/NativeAppearance.js +1 -0
- package/Libraries/Utilities/NativeDevLoadingView.js +1 -0
- package/Libraries/Utilities/NativeDevSplitBundleLoader.js +1 -0
- package/Libraries/Utilities/NativeDeviceInfo.js +1 -0
- package/Libraries/Utilities/NativePlatformConstantsAndroid.js +1 -0
- package/Libraries/Utilities/NativePlatformConstantsIOS.js +1 -0
- package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -0
- package/Libraries/Utilities/PerformanceLoggerContext.js +3 -2
- package/Libraries/Utilities/PixelRatio.d.ts +64 -0
- package/Libraries/Utilities/Platform.android.js +11 -5
- package/Libraries/Utilities/Platform.d.ts +102 -0
- package/Libraries/Utilities/Platform.ios.js +12 -5
- package/Libraries/Utilities/Platform.win32.js +11 -5
- package/Libraries/Utilities/PolyfillFunctions.js +1 -1
- package/Libraries/Utilities/ReactNativeTestTools.js +9 -15
- package/Libraries/Utilities/codegenNativeCommands.js +1 -10
- package/Libraries/Utilities/codegenNativeComponent.js +4 -1
- package/Libraries/Utilities/createPerformanceLogger.js +7 -8
- package/Libraries/Utilities/differ/deepDiffer.js +1 -1
- package/Libraries/Utilities/groupByEveryN.js +1 -1
- package/Libraries/Utilities/stringifySafe.js +3 -1
- package/Libraries/Utilities/useColorScheme.js +3 -2
- package/Libraries/Utilities/useRefEffect.js +1 -1
- package/Libraries/Vibration/NativeVibration.js +1 -0
- package/Libraries/Vibration/Vibration.d.ts +43 -0
- package/Libraries/Vibration/Vibration.js +1 -0
- package/Libraries/WebPerformance/NativePerformanceObserver.js +41 -0
- package/Libraries/WebPerformance/PerformanceObserver.js +223 -0
- package/Libraries/WebSocket/NativeWebSocketModule.js +1 -0
- package/Libraries/WebSocket/WebSocket.js +11 -3
- package/Libraries/WebSocket/WebSocketInterceptor.js +1 -1
- package/Libraries/YellowBox/YellowBoxDeprecated.d.ts +19 -0
- package/Libraries/YellowBox/YellowBoxDeprecated.js +2 -3
- package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +2 -1
- package/Libraries/__tests__/ButtonWin32-test.js +16 -0
- package/Libraries/platform-types.d.ts +25 -0
- package/Libraries/vendor/core/ErrorUtils.d.ts +15 -0
- package/Libraries/vendor/emitter/EventEmitter.d.ts +164 -0
- package/babel.config.js +3 -0
- package/flow/jest.js +2 -2
- package/flow-typed/npm/{react-dom_v16.x.x.js → react-dom_v17.x.x.js} +58 -31
- package/flow-typed/npm/yargs_v17.x.x.js +341 -0
- package/index.js +89 -55
- package/index.win32.js +89 -55
- package/interface.js +8 -0
- package/jest/react-native-env.js +18 -0
- package/jest/renderer.js +2 -2
- package/jest/setup.js +7 -9
- package/jest.config.js +9 -2
- package/overrides.json +40 -101
- package/package.json +34 -33
- package/src/Libraries/Components/TextInput/TextInput.win32.tsx +2 -1
- package/src/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +2 -2
- package/src/Libraries/Components/Touchable/TouchableWin32.Props.tsx +2 -1
- package/src/Libraries/Components/Touchable/TouchableWin32.tsx +1 -1
- package/src/Libraries/Components/View/ViewWin32.Props.ts +10 -1
- package/src/Libraries/__tests__/__snapshots__/ButtonWin32-test.js.snap +22 -0
- package/src/Libraries/platform-types.d.ts +25 -0
- package/types/index.d.ts +215 -0
- package/IntegrationTests/AsyncStorageTest.js +0 -261
- package/Libraries/Components/MaskedView/MaskedViewIOS.ios.js +0 -93
- package/Libraries/Components/MaskedView/RCTMaskedViewNativeComponent.js +0 -21
- package/Libraries/Core/setUpSystrace.js +0 -21
- package/Libraries/Image/ImagePickerIOS.js +0 -103
- package/Libraries/Image/NativeImagePickerIOS.js +0 -38
- package/Libraries/Lists/VirtualizedList.win32.js +0 -9
- package/Libraries/Lists/__tests__/CellRenderMask-test.js +0 -179
- package/Libraries/Lists/__tests__/FillRateHelper-test.js +0 -120
- package/Libraries/Lists/__tests__/FlatList-test.js +0 -155
- package/Libraries/Lists/__tests__/SectionList-test.js +0 -109
- package/Libraries/Lists/__tests__/ViewabilityHelper-test.js +0 -440
- package/Libraries/Lists/__tests__/VirtualizeUtils-test.js +0 -91
- package/Libraries/Lists/__tests__/VirtualizedList-test.js +0 -1587
- package/Libraries/Lists/__tests__/VirtualizedSectionList-test.js +0 -269
- package/Libraries/Storage/AsyncStorage.js +0 -385
- package/Libraries/Storage/NativeAsyncLocalStorage.js +0 -44
- package/Libraries/Storage/NativeAsyncSQLiteDBStorage.js +0 -44
- package/Libraries/Utilities/JSDevSupportModule.js +0 -37
- package/Libraries/Utilities/NativeJSDevSupport.js +0 -23
- package/rntypes/BatchedBridge.d.ts +0 -23
- package/rntypes/Devtools.d.ts +0 -20
- package/rntypes/LaunchScreen.d.ts +0 -9
- package/rntypes/globals.d.ts +0 -497
- package/rntypes/index.d.ts +0 -9754
- package/rntypes/legacy-properties.d.ts +0 -238
- package/src/Libraries/Lists/__tests__/__snapshots__/FlatList-test.js.snap +0 -427
- package/src/Libraries/Lists/__tests__/__snapshots__/SectionList-test.js.snap +0 -391
- package/src/Libraries/Lists/__tests__/__snapshots__/VirtualizedList-test.js.snap +0 -4565
- package/src/Libraries/Lists/__tests__/__snapshots__/VirtualizedSectionList-test.js.snap +0 -1153
- package/src/rntypes/BatchedBridge.d.ts +0 -23
- package/src/rntypes/Devtools.d.ts +0 -20
- package/src/rntypes/LaunchScreen.d.ts +0 -9
- package/src/rntypes/globals.d.ts +0 -497
- package/src/rntypes/index.d.ts +0 -9754
- package/src/rntypes/legacy-properties.d.ts +0 -238
- package/src/typings-index.ts +0 -37
- package/typings-index.d.ts +0 -23
- package/typings-index.js +0 -47
- package/typings-index.js.map +0 -1
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @format
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type * as React from 'react';
|
|
11
|
+
import type {
|
|
12
|
+
ListRenderItemInfo,
|
|
13
|
+
VirtualizedListWithoutRenderItemProps,
|
|
14
|
+
} from './VirtualizedList';
|
|
15
|
+
import type {
|
|
16
|
+
ScrollView,
|
|
17
|
+
ScrollViewProps,
|
|
18
|
+
} from '../Components/ScrollView/ScrollView';
|
|
19
|
+
import {NodeHandle} from '../ReactNative/RendererProxy';
|
|
20
|
+
import {StyleProp} from '../StyleSheet/StyleSheet';
|
|
21
|
+
import {ViewStyle} from '../StyleSheet/StyleSheetTypes';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @see https://reactnative.dev/docs/sectionlist
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
type DefaultSectionT = {
|
|
28
|
+
[key: string]: any;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export interface SectionBase<ItemT, SectionT = DefaultSectionT> {
|
|
32
|
+
data: ReadonlyArray<ItemT>;
|
|
33
|
+
|
|
34
|
+
key?: string | undefined;
|
|
35
|
+
|
|
36
|
+
renderItem?: SectionListRenderItem<ItemT, SectionT> | undefined;
|
|
37
|
+
|
|
38
|
+
ItemSeparatorComponent?: React.ComponentType<any> | null | undefined;
|
|
39
|
+
|
|
40
|
+
keyExtractor?: ((item: ItemT, index: number) => string) | undefined;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export type SectionListData<ItemT, SectionT = DefaultSectionT> = SectionBase<
|
|
44
|
+
ItemT,
|
|
45
|
+
SectionT
|
|
46
|
+
> &
|
|
47
|
+
SectionT;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @see https://reactnative.dev/docs/sectionlist.html#props
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
export interface SectionListRenderItemInfo<ItemT, SectionT = DefaultSectionT>
|
|
54
|
+
extends ListRenderItemInfo<ItemT> {
|
|
55
|
+
section: SectionListData<ItemT, SectionT>;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export type SectionListRenderItem<ItemT, SectionT = DefaultSectionT> = (
|
|
59
|
+
info: SectionListRenderItemInfo<ItemT, SectionT>,
|
|
60
|
+
) => React.ReactElement | null;
|
|
61
|
+
|
|
62
|
+
export interface SectionListProps<ItemT, SectionT = DefaultSectionT>
|
|
63
|
+
extends VirtualizedListWithoutRenderItemProps<ItemT> {
|
|
64
|
+
/**
|
|
65
|
+
* Rendered in between adjacent Items within each section.
|
|
66
|
+
*/
|
|
67
|
+
ItemSeparatorComponent?: React.ComponentType<any> | null | undefined;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Rendered when the list is empty.
|
|
71
|
+
*/
|
|
72
|
+
ListEmptyComponent?:
|
|
73
|
+
| React.ComponentType<any>
|
|
74
|
+
| React.ReactElement
|
|
75
|
+
| null
|
|
76
|
+
| undefined;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Rendered at the very end of the list.
|
|
80
|
+
*/
|
|
81
|
+
ListFooterComponent?:
|
|
82
|
+
| React.ComponentType<any>
|
|
83
|
+
| React.ReactElement
|
|
84
|
+
| null
|
|
85
|
+
| undefined;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Styling for internal View for ListFooterComponent
|
|
89
|
+
*/
|
|
90
|
+
ListFooterComponentStyle?: StyleProp<ViewStyle> | undefined | null;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Rendered at the very beginning of the list.
|
|
94
|
+
*/
|
|
95
|
+
ListHeaderComponent?:
|
|
96
|
+
| React.ComponentType<any>
|
|
97
|
+
| React.ReactElement
|
|
98
|
+
| null
|
|
99
|
+
| undefined;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Styling for internal View for ListHeaderComponent
|
|
103
|
+
*/
|
|
104
|
+
ListHeaderComponentStyle?: StyleProp<ViewStyle> | undefined | null;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Rendered in between each section.
|
|
108
|
+
*/
|
|
109
|
+
SectionSeparatorComponent?:
|
|
110
|
+
| React.ComponentType<any>
|
|
111
|
+
| React.ReactElement
|
|
112
|
+
| null
|
|
113
|
+
| undefined;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* A marker property for telling the list to re-render (since it implements PureComponent).
|
|
117
|
+
* If any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the `data` prop,
|
|
118
|
+
* stick it here and treat it immutably.
|
|
119
|
+
*/
|
|
120
|
+
extraData?: any;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* `getItemLayout` is an optional optimization that lets us skip measurement of dynamic
|
|
124
|
+
* content if you know the height of items a priori. getItemLayout is the most efficient,
|
|
125
|
+
* and is easy to use if you have fixed height items, for example:
|
|
126
|
+
* ```
|
|
127
|
+
* getItemLayout={(data, index) => (
|
|
128
|
+
* {length: ITEM_HEIGHT, offset: ITEM_HEIGHT * index, index}
|
|
129
|
+
* )}
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
getItemLayout?:
|
|
133
|
+
| ((
|
|
134
|
+
data: SectionListData<ItemT, SectionT>[] | null,
|
|
135
|
+
index: number,
|
|
136
|
+
) => {length: number; offset: number; index: number})
|
|
137
|
+
| undefined;
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* How many items to render in the initial batch
|
|
141
|
+
*/
|
|
142
|
+
initialNumToRender?: number | undefined;
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Reverses the direction of scroll. Uses scale transforms of -1.
|
|
146
|
+
*/
|
|
147
|
+
inverted?: boolean | null | undefined;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Used to extract a unique key for a given item at the specified index. Key is used for caching
|
|
151
|
+
* and as the react key to track item re-ordering. The default extractor checks `item.key`, then
|
|
152
|
+
* falls back to using the index, like React does.
|
|
153
|
+
*/
|
|
154
|
+
keyExtractor?: ((item: ItemT, index: number) => string) | undefined;
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Called once when the scroll position gets within onEndReachedThreshold of the rendered content.
|
|
158
|
+
*/
|
|
159
|
+
onEndReached?: ((info: {distanceFromEnd: number}) => void) | null | undefined;
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* How far from the end (in units of visible length of the list) the bottom edge of the
|
|
163
|
+
* list must be from the end of the content to trigger the `onEndReached` callback.
|
|
164
|
+
* Thus a value of 0.5 will trigger `onEndReached` when the end of the content is
|
|
165
|
+
* within half the visible length of the list.
|
|
166
|
+
*/
|
|
167
|
+
onEndReachedThreshold?: number | null | undefined;
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* If provided, a standard RefreshControl will be added for "Pull to Refresh" functionality.
|
|
171
|
+
* Make sure to also set the refreshing prop correctly.
|
|
172
|
+
*/
|
|
173
|
+
onRefresh?: (() => void) | null | undefined;
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Used to handle failures when scrolling to an index that has not been measured yet.
|
|
177
|
+
* Recommended action is to either compute your own offset and `scrollTo` it, or scroll as far
|
|
178
|
+
* as possible and then try again after more items have been rendered.
|
|
179
|
+
*/
|
|
180
|
+
onScrollToIndexFailed?:
|
|
181
|
+
| ((info: {
|
|
182
|
+
index: number;
|
|
183
|
+
highestMeasuredFrameIndex: number;
|
|
184
|
+
averageItemLength: number;
|
|
185
|
+
}) => void)
|
|
186
|
+
| undefined;
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Set this true while waiting for new data from a refresh.
|
|
190
|
+
*/
|
|
191
|
+
refreshing?: boolean | null | undefined;
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Default renderer for every item in every section. Can be over-ridden on a per-section basis.
|
|
195
|
+
*/
|
|
196
|
+
renderItem?: SectionListRenderItem<ItemT, SectionT> | undefined;
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Rendered at the top of each section. Sticky headers are not yet supported.
|
|
200
|
+
*/
|
|
201
|
+
renderSectionHeader?:
|
|
202
|
+
| ((info: {
|
|
203
|
+
section: SectionListData<ItemT, SectionT>;
|
|
204
|
+
}) => React.ReactElement | null)
|
|
205
|
+
| undefined;
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Rendered at the bottom of each section.
|
|
209
|
+
*/
|
|
210
|
+
renderSectionFooter?:
|
|
211
|
+
| ((info: {
|
|
212
|
+
section: SectionListData<ItemT, SectionT>;
|
|
213
|
+
}) => React.ReactElement | null)
|
|
214
|
+
| undefined;
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* An array of objects with data for each section.
|
|
218
|
+
*/
|
|
219
|
+
sections: ReadonlyArray<SectionListData<ItemT, SectionT>>;
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Render a custom scroll component, e.g. with a differently styled `RefreshControl`.
|
|
223
|
+
*/
|
|
224
|
+
renderScrollComponent?:
|
|
225
|
+
| ((props: ScrollViewProps) => React.ReactElement<ScrollViewProps>)
|
|
226
|
+
| undefined;
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Note: may have bugs (missing content) in some circumstances - use at your own risk.
|
|
230
|
+
*
|
|
231
|
+
* This may improve scroll performance for large lists.
|
|
232
|
+
*/
|
|
233
|
+
removeClippedSubviews?: boolean | undefined;
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Makes section headers stick to the top of the screen until the next one pushes it off.
|
|
237
|
+
* Only enabled by default on iOS because that is the platform standard there.
|
|
238
|
+
*/
|
|
239
|
+
stickySectionHeadersEnabled?: boolean | undefined;
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Uses legacy MetroListView instead of default VirtualizedSectionList
|
|
243
|
+
*/
|
|
244
|
+
legacyImplementation?: boolean | undefined;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
export interface SectionListScrollParams {
|
|
248
|
+
animated?: boolean | undefined;
|
|
249
|
+
itemIndex: number;
|
|
250
|
+
sectionIndex: number;
|
|
251
|
+
viewOffset?: number | undefined;
|
|
252
|
+
viewPosition?: number | undefined;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
export class SectionList<
|
|
256
|
+
ItemT = any,
|
|
257
|
+
SectionT = DefaultSectionT,
|
|
258
|
+
> extends React.Component<SectionListProps<ItemT, SectionT>> {
|
|
259
|
+
/**
|
|
260
|
+
* Scrolls to the item at the specified sectionIndex and itemIndex (within the section)
|
|
261
|
+
* positioned in the viewable area such that viewPosition 0 places it at the top
|
|
262
|
+
* (and may be covered by a sticky header), 1 at the bottom, and 0.5 centered in the middle.
|
|
263
|
+
*/
|
|
264
|
+
scrollToLocation(params: SectionListScrollParams): void;
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Tells the list an interaction has occurred, which should trigger viewability calculations, e.g.
|
|
268
|
+
* if `waitForInteractions` is true and the user has not scrolled. This is typically called by
|
|
269
|
+
* taps on items or by navigation actions.
|
|
270
|
+
*/
|
|
271
|
+
recordInteraction(): void;
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Displays the scroll indicators momentarily.
|
|
275
|
+
*
|
|
276
|
+
* @platform ios
|
|
277
|
+
*/
|
|
278
|
+
flashScrollIndicators(): void;
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Provides a handle to the underlying scroll responder.
|
|
282
|
+
*/
|
|
283
|
+
getScrollResponder(): ScrollView | undefined;
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Provides a handle to the underlying scroll node.
|
|
287
|
+
*/
|
|
288
|
+
getScrollableNode(): NodeHandle | undefined;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/* This definition is deprecated because it extends the wrong base type */
|
|
292
|
+
export interface SectionListStatic<ItemT, SectionT = DefaultSectionT>
|
|
293
|
+
extends React.ComponentClass<SectionListProps<ItemT, SectionT>> {
|
|
294
|
+
/**
|
|
295
|
+
* Scrolls to the item at the specified sectionIndex and itemIndex (within the section)
|
|
296
|
+
* positioned in the viewable area such that viewPosition 0 places it at the top
|
|
297
|
+
* (and may be covered by a sticky header), 1 at the bottom, and 0.5 centered in the middle.
|
|
298
|
+
*/
|
|
299
|
+
scrollToLocation?(params: SectionListScrollParams): void;
|
|
300
|
+
}
|
|
@@ -10,17 +10,17 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
import Platform from '../Utilities/Platform';
|
|
14
|
-
import * as React from 'react';
|
|
15
|
-
import VirtualizedSectionList from './VirtualizedSectionList';
|
|
16
|
-
|
|
17
13
|
import type {ScrollResponderType} from '../Components/ScrollView/ScrollView';
|
|
18
14
|
import type {
|
|
19
|
-
SectionBase as _SectionBase,
|
|
20
15
|
Props as VirtualizedSectionListProps,
|
|
21
16
|
ScrollToLocationParamsType,
|
|
17
|
+
SectionBase as _SectionBase,
|
|
22
18
|
} from './VirtualizedSectionList';
|
|
23
19
|
|
|
20
|
+
import Platform from '../Utilities/Platform';
|
|
21
|
+
import VirtualizedSectionList from './VirtualizedSectionList';
|
|
22
|
+
import * as React from 'react';
|
|
23
|
+
|
|
24
24
|
type Item = any;
|
|
25
25
|
|
|
26
26
|
export type SectionBase<SectionItemT> = _SectionBase<SectionItemT>;
|
|
@@ -10,17 +10,17 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
import Platform from '../Utilities/Platform';
|
|
14
|
-
import React, {useRef, forwardRef, useImperativeHandle} from 'react';
|
|
15
|
-
import VirtualizedSectionList from './VirtualizedSectionList';
|
|
16
|
-
|
|
17
13
|
import type {ScrollResponderType} from '../Components/ScrollView/ScrollView';
|
|
18
14
|
import type {
|
|
19
|
-
SectionBase as _SectionBase,
|
|
20
15
|
Props as VirtualizedSectionListProps,
|
|
21
16
|
ScrollToLocationParamsType,
|
|
17
|
+
SectionBase as _SectionBase,
|
|
22
18
|
} from './VirtualizedSectionList';
|
|
23
|
-
import type {Element, ElementRef
|
|
19
|
+
import type {AbstractComponent, Element, ElementRef} from 'react';
|
|
20
|
+
|
|
21
|
+
import Platform from '../Utilities/Platform';
|
|
22
|
+
import VirtualizedSectionList from './VirtualizedSectionList';
|
|
23
|
+
import React, {forwardRef, useImperativeHandle, useRef} from 'react';
|
|
24
24
|
|
|
25
25
|
type Item = any;
|
|
26
26
|
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @flow strict
|
|
8
|
+
* @format
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import invariant from 'invariant';
|
|
12
|
+
import * as React from 'react';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* `setState` is called asynchronously, and should not rely on the value of
|
|
16
|
+
* `this.props` or `this.state`:
|
|
17
|
+
* https://reactjs.org/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous
|
|
18
|
+
*
|
|
19
|
+
* SafePureComponent adds runtime enforcement, to catch cases where these
|
|
20
|
+
* variables are read in a state updater function, instead of the ones passed
|
|
21
|
+
* in.
|
|
22
|
+
*/
|
|
23
|
+
export default class StateSafePureComponent<
|
|
24
|
+
Props,
|
|
25
|
+
State: interface {},
|
|
26
|
+
> extends React.PureComponent<Props, State> {
|
|
27
|
+
_inAsyncStateUpdate = false;
|
|
28
|
+
|
|
29
|
+
constructor(props: Props) {
|
|
30
|
+
super(props);
|
|
31
|
+
this._installSetStateHooks();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
setState(
|
|
35
|
+
partialState: ?($Shape<State> | ((State, Props) => ?$Shape<State>)),
|
|
36
|
+
callback?: () => mixed,
|
|
37
|
+
): void {
|
|
38
|
+
if (typeof partialState === 'function') {
|
|
39
|
+
super.setState((state, props) => {
|
|
40
|
+
this._inAsyncStateUpdate = true;
|
|
41
|
+
let ret;
|
|
42
|
+
try {
|
|
43
|
+
ret = partialState(state, props);
|
|
44
|
+
} catch (err) {
|
|
45
|
+
throw err;
|
|
46
|
+
} finally {
|
|
47
|
+
this._inAsyncStateUpdate = false;
|
|
48
|
+
}
|
|
49
|
+
return ret;
|
|
50
|
+
}, callback);
|
|
51
|
+
} else {
|
|
52
|
+
super.setState(partialState, callback);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
_installSetStateHooks() {
|
|
57
|
+
const that = this;
|
|
58
|
+
let {props, state} = this;
|
|
59
|
+
|
|
60
|
+
Object.defineProperty(this, 'props', {
|
|
61
|
+
get() {
|
|
62
|
+
invariant(
|
|
63
|
+
!that._inAsyncStateUpdate,
|
|
64
|
+
'"this.props" should not be accessed during state updates',
|
|
65
|
+
);
|
|
66
|
+
return props;
|
|
67
|
+
},
|
|
68
|
+
set(newProps: Props) {
|
|
69
|
+
props = newProps;
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
Object.defineProperty(this, 'state', {
|
|
73
|
+
get() {
|
|
74
|
+
invariant(
|
|
75
|
+
!that._inAsyncStateUpdate,
|
|
76
|
+
'"this.state" should not be acceessed during state updates',
|
|
77
|
+
);
|
|
78
|
+
return state;
|
|
79
|
+
},
|
|
80
|
+
set(newState: State) {
|
|
81
|
+
state = newState;
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
+
import type {FrameMetricProps} from './VirtualizedListProps';
|
|
14
|
+
|
|
13
15
|
const invariant = require('invariant');
|
|
14
16
|
|
|
15
17
|
export type ViewToken = {
|
|
@@ -99,10 +101,13 @@ class ViewabilityHelper {
|
|
|
99
101
|
* Determines which items are viewable based on the current metrics and config.
|
|
100
102
|
*/
|
|
101
103
|
computeViewableItems(
|
|
102
|
-
|
|
104
|
+
props: FrameMetricProps,
|
|
103
105
|
scrollOffset: number,
|
|
104
106
|
viewportHeight: number,
|
|
105
|
-
getFrameMetrics: (
|
|
107
|
+
getFrameMetrics: (
|
|
108
|
+
index: number,
|
|
109
|
+
props: FrameMetricProps,
|
|
110
|
+
) => ?{
|
|
106
111
|
length: number,
|
|
107
112
|
offset: number,
|
|
108
113
|
...
|
|
@@ -114,6 +119,7 @@ class ViewabilityHelper {
|
|
|
114
119
|
...
|
|
115
120
|
},
|
|
116
121
|
): Array<number> {
|
|
122
|
+
const itemCount = props.getItemCount(props.data);
|
|
117
123
|
const {itemVisiblePercentThreshold, viewAreaCoveragePercentThreshold} =
|
|
118
124
|
this._config;
|
|
119
125
|
const viewAreaMode = viewAreaCoveragePercentThreshold != null;
|
|
@@ -140,7 +146,7 @@ class ViewabilityHelper {
|
|
|
140
146
|
return [];
|
|
141
147
|
}
|
|
142
148
|
for (let idx = first; idx <= last; idx++) {
|
|
143
|
-
const metrics = getFrameMetrics(idx);
|
|
149
|
+
const metrics = getFrameMetrics(idx, props);
|
|
144
150
|
if (!metrics) {
|
|
145
151
|
continue;
|
|
146
152
|
}
|
|
@@ -172,15 +178,22 @@ class ViewabilityHelper {
|
|
|
172
178
|
* `onViewableItemsChanged` as appropriate.
|
|
173
179
|
*/
|
|
174
180
|
onUpdate(
|
|
175
|
-
|
|
181
|
+
props: FrameMetricProps,
|
|
176
182
|
scrollOffset: number,
|
|
177
183
|
viewportHeight: number,
|
|
178
|
-
getFrameMetrics: (
|
|
184
|
+
getFrameMetrics: (
|
|
185
|
+
index: number,
|
|
186
|
+
props: FrameMetricProps,
|
|
187
|
+
) => ?{
|
|
179
188
|
length: number,
|
|
180
189
|
offset: number,
|
|
181
190
|
...
|
|
182
191
|
},
|
|
183
|
-
createViewToken: (
|
|
192
|
+
createViewToken: (
|
|
193
|
+
index: number,
|
|
194
|
+
isViewable: boolean,
|
|
195
|
+
props: FrameMetricProps,
|
|
196
|
+
) => ViewToken,
|
|
184
197
|
onViewableItemsChanged: ({
|
|
185
198
|
viewableItems: Array<ViewToken>,
|
|
186
199
|
changed: Array<ViewToken>,
|
|
@@ -193,17 +206,18 @@ class ViewabilityHelper {
|
|
|
193
206
|
...
|
|
194
207
|
},
|
|
195
208
|
): void {
|
|
209
|
+
const itemCount = props.getItemCount(props.data);
|
|
196
210
|
if (
|
|
197
211
|
(this._config.waitForInteraction && !this._hasInteracted) ||
|
|
198
212
|
itemCount === 0 ||
|
|
199
|
-
!getFrameMetrics(0)
|
|
213
|
+
!getFrameMetrics(0, props)
|
|
200
214
|
) {
|
|
201
215
|
return;
|
|
202
216
|
}
|
|
203
|
-
let viewableIndices = [];
|
|
217
|
+
let viewableIndices: Array<number> = [];
|
|
204
218
|
if (itemCount) {
|
|
205
219
|
viewableIndices = this.computeViewableItems(
|
|
206
|
-
|
|
220
|
+
props,
|
|
207
221
|
scrollOffset,
|
|
208
222
|
viewportHeight,
|
|
209
223
|
getFrameMetrics,
|
|
@@ -220,12 +234,13 @@ class ViewabilityHelper {
|
|
|
220
234
|
}
|
|
221
235
|
this._viewableIndices = viewableIndices;
|
|
222
236
|
if (this._config.minimumViewTime) {
|
|
223
|
-
const handle = setTimeout(() => {
|
|
237
|
+
const handle: TimeoutID = setTimeout(() => {
|
|
224
238
|
/* $FlowFixMe[incompatible-call] (>=0.63.0 site=react_native_fb) This
|
|
225
239
|
* comment suppresses an error found when Flow v0.63 was deployed. To
|
|
226
240
|
* see the error delete this comment and run Flow. */
|
|
227
241
|
this._timers.delete(handle);
|
|
228
242
|
this._onUpdateSync(
|
|
243
|
+
props,
|
|
229
244
|
viewableIndices,
|
|
230
245
|
onViewableItemsChanged,
|
|
231
246
|
createViewToken,
|
|
@@ -237,6 +252,7 @@ class ViewabilityHelper {
|
|
|
237
252
|
this._timers.add(handle);
|
|
238
253
|
} else {
|
|
239
254
|
this._onUpdateSync(
|
|
255
|
+
props,
|
|
240
256
|
viewableIndices,
|
|
241
257
|
onViewableItemsChanged,
|
|
242
258
|
createViewToken,
|
|
@@ -259,13 +275,18 @@ class ViewabilityHelper {
|
|
|
259
275
|
}
|
|
260
276
|
|
|
261
277
|
_onUpdateSync(
|
|
278
|
+
props: FrameMetricProps,
|
|
262
279
|
viewableIndicesToCheck: Array<number>,
|
|
263
280
|
onViewableItemsChanged: ({
|
|
264
281
|
changed: Array<ViewToken>,
|
|
265
282
|
viewableItems: Array<ViewToken>,
|
|
266
283
|
...
|
|
267
284
|
}) => void,
|
|
268
|
-
createViewToken: (
|
|
285
|
+
createViewToken: (
|
|
286
|
+
index: number,
|
|
287
|
+
isViewable: boolean,
|
|
288
|
+
props: FrameMetricProps,
|
|
289
|
+
) => ViewToken,
|
|
269
290
|
) {
|
|
270
291
|
// Filter out indices that have gone out of view since this call was scheduled.
|
|
271
292
|
viewableIndicesToCheck = viewableIndicesToCheck.filter(ii =>
|
|
@@ -274,7 +295,7 @@ class ViewabilityHelper {
|
|
|
274
295
|
const prevItems = this._viewableItems;
|
|
275
296
|
const nextItems = new Map(
|
|
276
297
|
viewableIndicesToCheck.map(ii => {
|
|
277
|
-
const viewable = createViewToken(ii, true);
|
|
298
|
+
const viewable = createViewToken(ii, true, props);
|
|
278
299
|
return [viewable.key, viewable];
|
|
279
300
|
}),
|
|
280
301
|
);
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
import
|
|
13
|
+
import type {FrameMetricProps} from './VirtualizedListProps';
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Used to find the indices of the frames that overlap the given offsets. Useful for finding the
|
|
@@ -19,14 +19,18 @@ import invariant from 'invariant';
|
|
|
19
19
|
*/
|
|
20
20
|
export function elementsThatOverlapOffsets(
|
|
21
21
|
offsets: Array<number>,
|
|
22
|
-
|
|
23
|
-
getFrameMetrics: (
|
|
22
|
+
props: FrameMetricProps,
|
|
23
|
+
getFrameMetrics: (
|
|
24
|
+
index: number,
|
|
25
|
+
props: FrameMetricProps,
|
|
26
|
+
) => {
|
|
24
27
|
length: number,
|
|
25
28
|
offset: number,
|
|
26
29
|
...
|
|
27
30
|
},
|
|
28
31
|
zoomScale: number = 1,
|
|
29
32
|
): Array<number> {
|
|
33
|
+
const itemCount = props.getItemCount(props.data);
|
|
30
34
|
const result = [];
|
|
31
35
|
for (let offsetIndex = 0; offsetIndex < offsets.length; offsetIndex++) {
|
|
32
36
|
const currentOffset = offsets[offsetIndex];
|
|
@@ -36,7 +40,7 @@ export function elementsThatOverlapOffsets(
|
|
|
36
40
|
while (left <= right) {
|
|
37
41
|
// eslint-disable-next-line no-bitwise
|
|
38
42
|
const mid = left + ((right - left) >>> 1);
|
|
39
|
-
const frame = getFrameMetrics(mid);
|
|
43
|
+
const frame = getFrameMetrics(mid, props);
|
|
40
44
|
const scaledOffsetStart = frame.offset * zoomScale;
|
|
41
45
|
const scaledOffsetEnd = (frame.offset + frame.length) * zoomScale;
|
|
42
46
|
|
|
@@ -95,16 +99,17 @@ export function newRangeCount(
|
|
|
95
99
|
* biased in the direction of scroll.
|
|
96
100
|
*/
|
|
97
101
|
export function computeWindowedRenderLimits(
|
|
98
|
-
|
|
99
|
-
getItemCount: (data: any) => number,
|
|
102
|
+
props: FrameMetricProps,
|
|
100
103
|
maxToRenderPerBatch: number,
|
|
101
104
|
windowSize: number,
|
|
102
105
|
prev: {
|
|
103
106
|
first: number,
|
|
104
107
|
last: number,
|
|
105
|
-
...
|
|
106
108
|
},
|
|
107
|
-
getFrameMetricsApprox: (
|
|
109
|
+
getFrameMetricsApprox: (
|
|
110
|
+
index: number,
|
|
111
|
+
props: FrameMetricProps,
|
|
112
|
+
) => {
|
|
108
113
|
length: number,
|
|
109
114
|
offset: number,
|
|
110
115
|
...
|
|
@@ -120,11 +125,10 @@ export function computeWindowedRenderLimits(
|
|
|
120
125
|
): {
|
|
121
126
|
first: number,
|
|
122
127
|
last: number,
|
|
123
|
-
...
|
|
124
128
|
} {
|
|
125
|
-
const itemCount = getItemCount(data);
|
|
129
|
+
const itemCount = props.getItemCount(props.data);
|
|
126
130
|
if (itemCount === 0) {
|
|
127
|
-
return
|
|
131
|
+
return {first: 0, last: -1};
|
|
128
132
|
}
|
|
129
133
|
const {offset, velocity, visibleLength, zoomScale = 1} = scrollMetrics;
|
|
130
134
|
|
|
@@ -148,7 +152,7 @@ export function computeWindowedRenderLimits(
|
|
|
148
152
|
const overscanEnd = Math.max(0, visibleEnd + leadFactor * overscanLength);
|
|
149
153
|
|
|
150
154
|
const lastItemOffset =
|
|
151
|
-
getFrameMetricsApprox(itemCount - 1).offset * zoomScale;
|
|
155
|
+
getFrameMetricsApprox(itemCount - 1, props).offset * zoomScale;
|
|
152
156
|
if (lastItemOffset < overscanBegin) {
|
|
153
157
|
// Entire list is before our overscan window
|
|
154
158
|
return {
|
|
@@ -160,7 +164,7 @@ export function computeWindowedRenderLimits(
|
|
|
160
164
|
// Find the indices that correspond to the items at the render boundaries we're targeting.
|
|
161
165
|
let [overscanFirst, first, last, overscanLast] = elementsThatOverlapOffsets(
|
|
162
166
|
[overscanBegin, visibleBegin, visibleEnd, overscanEnd],
|
|
163
|
-
|
|
167
|
+
props,
|
|
164
168
|
getFrameMetricsApprox,
|
|
165
169
|
zoomScale,
|
|
166
170
|
);
|