@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
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
+
import type {FrameMetricProps} from './VirtualizedListProps';
|
|
14
|
+
|
|
13
15
|
export type FillRateInfo = Info;
|
|
14
16
|
|
|
15
17
|
class Info {
|
|
@@ -47,12 +49,12 @@ let _sampleRate = DEBUG ? 1 : null;
|
|
|
47
49
|
* `SceneTracker.getActiveScene` to determine the context of the events.
|
|
48
50
|
*/
|
|
49
51
|
class FillRateHelper {
|
|
50
|
-
_anyBlankStartTime =
|
|
52
|
+
_anyBlankStartTime: ?number = null;
|
|
51
53
|
_enabled = false;
|
|
52
|
-
_getFrameMetrics: (index: number) => ?FrameMetrics;
|
|
53
|
-
_info = new Info();
|
|
54
|
-
_mostlyBlankStartTime =
|
|
55
|
-
_samplesStartTime =
|
|
54
|
+
_getFrameMetrics: (index: number, props: FrameMetricProps) => ?FrameMetrics;
|
|
55
|
+
_info: Info = new Info();
|
|
56
|
+
_mostlyBlankStartTime: ?number = null;
|
|
57
|
+
_samplesStartTime: ?number = null;
|
|
56
58
|
|
|
57
59
|
static addListener(callback: FillRateInfo => void): {
|
|
58
60
|
remove: () => void,
|
|
@@ -77,7 +79,9 @@ class FillRateHelper {
|
|
|
77
79
|
_minSampleCount = minSampleCount;
|
|
78
80
|
}
|
|
79
81
|
|
|
80
|
-
constructor(
|
|
82
|
+
constructor(
|
|
83
|
+
getFrameMetrics: (index: number, props: FrameMetricProps) => ?FrameMetrics,
|
|
84
|
+
) {
|
|
81
85
|
this._getFrameMetrics = getFrameMetrics;
|
|
82
86
|
this._enabled = (_sampleRate || 0) > Math.random();
|
|
83
87
|
this._resetData();
|
|
@@ -124,6 +128,7 @@ class FillRateHelper {
|
|
|
124
128
|
mostly_blank_time_frac: this._info.mostly_blank_ms / total_time_spent,
|
|
125
129
|
};
|
|
126
130
|
for (const key in derived) {
|
|
131
|
+
// $FlowFixMe[prop-missing]
|
|
127
132
|
derived[key] = Math.round(1000 * derived[key]) / 1000;
|
|
128
133
|
}
|
|
129
134
|
console.debug('FillRateHelper deactivateAndFlush: ', {derived, info});
|
|
@@ -134,12 +139,11 @@ class FillRateHelper {
|
|
|
134
139
|
|
|
135
140
|
computeBlankness(
|
|
136
141
|
props: {
|
|
137
|
-
|
|
138
|
-
getItemCount: (data: any) => number,
|
|
142
|
+
...FrameMetricProps,
|
|
139
143
|
initialNumToRender?: ?number,
|
|
140
144
|
...
|
|
141
145
|
},
|
|
142
|
-
|
|
146
|
+
cellsAroundViewport: {
|
|
143
147
|
first: number,
|
|
144
148
|
last: number,
|
|
145
149
|
...
|
|
@@ -155,6 +159,7 @@ class FillRateHelper {
|
|
|
155
159
|
if (
|
|
156
160
|
!this._enabled ||
|
|
157
161
|
props.getItemCount(props.data) === 0 ||
|
|
162
|
+
cellsAroundViewport.last < cellsAroundViewport.first ||
|
|
158
163
|
this._samplesStartTime == null
|
|
159
164
|
) {
|
|
160
165
|
return 0;
|
|
@@ -180,10 +185,13 @@ class FillRateHelper {
|
|
|
180
185
|
this._mostlyBlankStartTime = null;
|
|
181
186
|
|
|
182
187
|
let blankTop = 0;
|
|
183
|
-
let first =
|
|
184
|
-
let firstFrame = this._getFrameMetrics(first);
|
|
185
|
-
while (
|
|
186
|
-
|
|
188
|
+
let first = cellsAroundViewport.first;
|
|
189
|
+
let firstFrame = this._getFrameMetrics(first, props);
|
|
190
|
+
while (
|
|
191
|
+
first <= cellsAroundViewport.last &&
|
|
192
|
+
(!firstFrame || !firstFrame.inLayout)
|
|
193
|
+
) {
|
|
194
|
+
firstFrame = this._getFrameMetrics(first, props);
|
|
187
195
|
first++;
|
|
188
196
|
}
|
|
189
197
|
// Only count blankTop if we aren't rendering the first item, otherwise we will count the header
|
|
@@ -195,10 +203,13 @@ class FillRateHelper {
|
|
|
195
203
|
);
|
|
196
204
|
}
|
|
197
205
|
let blankBottom = 0;
|
|
198
|
-
let last =
|
|
199
|
-
let lastFrame = this._getFrameMetrics(last);
|
|
200
|
-
while (
|
|
201
|
-
|
|
206
|
+
let last = cellsAroundViewport.last;
|
|
207
|
+
let lastFrame = this._getFrameMetrics(last, props);
|
|
208
|
+
while (
|
|
209
|
+
last >= cellsAroundViewport.first &&
|
|
210
|
+
(!lastFrame || !lastFrame.inLayout)
|
|
211
|
+
) {
|
|
212
|
+
lastFrame = this._getFrameMetrics(last, props);
|
|
202
213
|
last--;
|
|
203
214
|
}
|
|
204
215
|
// Only count blankBottom if we aren't rendering the last item, otherwise we will count the
|
|
@@ -0,0 +1,292 @@
|
|
|
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
|
+
ListRenderItem,
|
|
13
|
+
ViewToken,
|
|
14
|
+
VirtualizedListProps,
|
|
15
|
+
} from './VirtualizedList';
|
|
16
|
+
import type {ScrollViewComponent} from '../Components/ScrollView/ScrollView';
|
|
17
|
+
import {StyleProp} from '../StyleSheet/StyleSheet';
|
|
18
|
+
import {ViewStyle} from '../StyleSheet/StyleSheetTypes';
|
|
19
|
+
import {View} from '../Components/View/View';
|
|
20
|
+
|
|
21
|
+
export interface FlatListProps<ItemT> extends VirtualizedListProps<ItemT> {
|
|
22
|
+
/**
|
|
23
|
+
* Rendered in between each item, but not at the top or bottom
|
|
24
|
+
*/
|
|
25
|
+
ItemSeparatorComponent?: React.ComponentType<any> | null | undefined;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Rendered when the list is empty.
|
|
29
|
+
*/
|
|
30
|
+
ListEmptyComponent?:
|
|
31
|
+
| React.ComponentType<any>
|
|
32
|
+
| React.ReactElement
|
|
33
|
+
| null
|
|
34
|
+
| undefined;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Rendered at the very end of the list.
|
|
38
|
+
*/
|
|
39
|
+
ListFooterComponent?:
|
|
40
|
+
| React.ComponentType<any>
|
|
41
|
+
| React.ReactElement
|
|
42
|
+
| null
|
|
43
|
+
| undefined;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Styling for internal View for ListFooterComponent
|
|
47
|
+
*/
|
|
48
|
+
ListFooterComponentStyle?: StyleProp<ViewStyle> | undefined;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Rendered at the very beginning of the list.
|
|
52
|
+
*/
|
|
53
|
+
ListHeaderComponent?:
|
|
54
|
+
| React.ComponentType<any>
|
|
55
|
+
| React.ReactElement
|
|
56
|
+
| null
|
|
57
|
+
| undefined;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Styling for internal View for ListHeaderComponent
|
|
61
|
+
*/
|
|
62
|
+
ListHeaderComponentStyle?: StyleProp<ViewStyle> | undefined;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Optional custom style for multi-item rows generated when numColumns > 1
|
|
66
|
+
*/
|
|
67
|
+
columnWrapperStyle?: StyleProp<ViewStyle> | undefined;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Determines when the keyboard should stay visible after a tap.
|
|
71
|
+
* - 'never' (the default), tapping outside of the focused text input when the keyboard is up dismisses the keyboard. When this happens, children won't receive the tap.
|
|
72
|
+
* - 'always', the keyboard will not dismiss automatically, and the scroll view will not catch taps, but children of the scroll view can catch taps.
|
|
73
|
+
* - 'handled', the keyboard will not dismiss automatically when the tap was handled by a children, (or captured by an ancestor).
|
|
74
|
+
* - false, deprecated, use 'never' instead
|
|
75
|
+
* - true, deprecated, use 'always' instead
|
|
76
|
+
*/
|
|
77
|
+
keyboardShouldPersistTaps?:
|
|
78
|
+
| boolean
|
|
79
|
+
| 'always'
|
|
80
|
+
| 'never'
|
|
81
|
+
| 'handled'
|
|
82
|
+
| undefined;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* For simplicity, data is just a plain array. If you want to use something else,
|
|
86
|
+
* like an immutable list, use the underlying VirtualizedList directly.
|
|
87
|
+
*/
|
|
88
|
+
data: ReadonlyArray<ItemT> | null | undefined;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* A marker property for telling the list to re-render (since it implements PureComponent).
|
|
92
|
+
* If any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the `data` prop,
|
|
93
|
+
* stick it here and treat it immutably.
|
|
94
|
+
*/
|
|
95
|
+
extraData?: any;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* `getItemLayout` is an optional optimization that lets us skip measurement of dynamic
|
|
99
|
+
* content if you know the height of items a priori. getItemLayout is the most efficient,
|
|
100
|
+
* and is easy to use if you have fixed height items, for example:
|
|
101
|
+
* ```
|
|
102
|
+
* getItemLayout={(data, index) => (
|
|
103
|
+
* {length: ITEM_HEIGHT, offset: ITEM_HEIGHT * index, index}
|
|
104
|
+
* )}
|
|
105
|
+
* ```
|
|
106
|
+
* Remember to include separator length (height or width) in your offset calculation if you specify
|
|
107
|
+
* `ItemSeparatorComponent`.
|
|
108
|
+
*/
|
|
109
|
+
getItemLayout?:
|
|
110
|
+
| ((
|
|
111
|
+
data: Array<ItemT> | null | undefined,
|
|
112
|
+
index: number,
|
|
113
|
+
) => {length: number; offset: number; index: number})
|
|
114
|
+
| undefined;
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* If true, renders items next to each other horizontally instead of stacked vertically.
|
|
118
|
+
*/
|
|
119
|
+
horizontal?: boolean | null | undefined;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* How many items to render in the initial batch
|
|
123
|
+
*/
|
|
124
|
+
initialNumToRender?: number | undefined;
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Instead of starting at the top with the first item, start at initialScrollIndex
|
|
128
|
+
*/
|
|
129
|
+
initialScrollIndex?: number | null | undefined;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Used to extract a unique key for a given item at the specified index. Key is used for caching
|
|
133
|
+
* and as the react key to track item re-ordering. The default extractor checks `item.key`, then
|
|
134
|
+
* falls back to using the index, like React does.
|
|
135
|
+
*/
|
|
136
|
+
keyExtractor?: ((item: ItemT, index: number) => string) | undefined;
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Uses legacy MetroListView instead of default VirtualizedSectionList
|
|
140
|
+
*/
|
|
141
|
+
legacyImplementation?: boolean | undefined;
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Multiple columns can only be rendered with `horizontal={false}` and will zig-zag like a `flexWrap` layout.
|
|
145
|
+
* Items should all be the same height - masonry layouts are not supported.
|
|
146
|
+
*/
|
|
147
|
+
numColumns?: number | undefined;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Called once when the scroll position gets within onEndReachedThreshold of the rendered content.
|
|
151
|
+
*/
|
|
152
|
+
onEndReached?: ((info: {distanceFromEnd: number}) => void) | null | undefined;
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* How far from the end (in units of visible length of the list) the bottom edge of the
|
|
156
|
+
* list must be from the end of the content to trigger the `onEndReached` callback.
|
|
157
|
+
* Thus a value of 0.5 will trigger `onEndReached` when the end of the content is
|
|
158
|
+
* within half the visible length of the list.
|
|
159
|
+
*/
|
|
160
|
+
onEndReachedThreshold?: number | null | undefined;
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* If provided, a standard RefreshControl will be added for "Pull to Refresh" functionality.
|
|
164
|
+
* Make sure to also set the refreshing prop correctly.
|
|
165
|
+
*/
|
|
166
|
+
onRefresh?: (() => void) | null | undefined;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Called when the viewability of rows changes, as defined by the `viewablePercentThreshold` prop.
|
|
170
|
+
*/
|
|
171
|
+
onViewableItemsChanged?:
|
|
172
|
+
| ((info: {
|
|
173
|
+
viewableItems: Array<ViewToken>;
|
|
174
|
+
changed: Array<ViewToken>;
|
|
175
|
+
}) => void)
|
|
176
|
+
| null
|
|
177
|
+
| undefined;
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Set this true while waiting for new data from a refresh.
|
|
181
|
+
*/
|
|
182
|
+
refreshing?: boolean | null | undefined;
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Takes an item from data and renders it into the list. Typical usage:
|
|
186
|
+
* ```
|
|
187
|
+
* _renderItem = ({item}) => (
|
|
188
|
+
* <TouchableOpacity onPress={() => this._onPress(item)}>
|
|
189
|
+
* <Text>{item.title}</Text>
|
|
190
|
+
* <TouchableOpacity/>
|
|
191
|
+
* );
|
|
192
|
+
* ...
|
|
193
|
+
* <FlatList data={[{title: 'Title Text', key: 'item1'}]} renderItem={this._renderItem} />
|
|
194
|
+
* ```
|
|
195
|
+
* Provides additional metadata like `index` if you need it.
|
|
196
|
+
*/
|
|
197
|
+
renderItem: ListRenderItem<ItemT> | null | undefined;
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* See `ViewabilityHelper` for flow type and further documentation.
|
|
201
|
+
*/
|
|
202
|
+
viewabilityConfig?: any;
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Note: may have bugs (missing content) in some circumstances - use at your own risk.
|
|
206
|
+
*
|
|
207
|
+
* This may improve scroll performance for large lists.
|
|
208
|
+
*/
|
|
209
|
+
removeClippedSubviews?: boolean | undefined;
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Fades out the edges of the scroll content.
|
|
213
|
+
*
|
|
214
|
+
* If the value is greater than 0, the fading edges will be set accordingly
|
|
215
|
+
* to the current scroll direction and position,
|
|
216
|
+
* indicating if there is more content to show.
|
|
217
|
+
*
|
|
218
|
+
* The default value is 0.
|
|
219
|
+
* @platform android
|
|
220
|
+
*/
|
|
221
|
+
fadingEdgeLength?: number | undefined;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
export class FlatList<ItemT = any> extends React.Component<
|
|
225
|
+
FlatListProps<ItemT>
|
|
226
|
+
> {
|
|
227
|
+
/**
|
|
228
|
+
* Scrolls to the end of the content. May be janky without `getItemLayout` prop.
|
|
229
|
+
*/
|
|
230
|
+
scrollToEnd: (params?: {animated?: boolean | null | undefined}) => void;
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Scrolls to the item at the specified index such that it is positioned in the viewable area
|
|
234
|
+
* such that viewPosition 0 places it at the top, 1 at the bottom, and 0.5 centered in the middle.
|
|
235
|
+
* Cannot scroll to locations outside the render window without specifying the getItemLayout prop.
|
|
236
|
+
*/
|
|
237
|
+
scrollToIndex: (params: {
|
|
238
|
+
animated?: boolean | null | undefined;
|
|
239
|
+
index: number;
|
|
240
|
+
viewOffset?: number | undefined;
|
|
241
|
+
viewPosition?: number | undefined;
|
|
242
|
+
}) => void;
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Requires linear scan through data - use `scrollToIndex` instead if possible.
|
|
246
|
+
* May be janky without `getItemLayout` prop.
|
|
247
|
+
*/
|
|
248
|
+
scrollToItem: (params: {
|
|
249
|
+
animated?: boolean | null | undefined;
|
|
250
|
+
item: ItemT;
|
|
251
|
+
viewPosition?: number | undefined;
|
|
252
|
+
}) => void;
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Scroll to a specific content pixel offset, like a normal `ScrollView`.
|
|
256
|
+
*/
|
|
257
|
+
scrollToOffset: (params: {
|
|
258
|
+
animated?: boolean | null | undefined;
|
|
259
|
+
offset: number;
|
|
260
|
+
}) => void;
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Tells the list an interaction has occurred, which should trigger viewability calculations,
|
|
264
|
+
* e.g. if waitForInteractions is true and the user has not scrolled. This is typically called
|
|
265
|
+
* by taps on items or by navigation actions.
|
|
266
|
+
*/
|
|
267
|
+
recordInteraction: () => void;
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Displays the scroll indicators momentarily.
|
|
271
|
+
*/
|
|
272
|
+
flashScrollIndicators: () => void;
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Provides a handle to the underlying scroll responder.
|
|
276
|
+
*/
|
|
277
|
+
getScrollResponder: () => JSX.Element | null | undefined;
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Provides a reference to the underlying host component
|
|
281
|
+
*/
|
|
282
|
+
getNativeScrollRef: () =>
|
|
283
|
+
| React.ElementRef<typeof View>
|
|
284
|
+
| React.ElementRef<typeof ScrollViewComponent>
|
|
285
|
+
| null
|
|
286
|
+
| undefined;
|
|
287
|
+
|
|
288
|
+
getScrollableNode: () => any;
|
|
289
|
+
|
|
290
|
+
// TODO: use `unknown` instead of `any` for Typescript >= 3.0
|
|
291
|
+
setNativeProps: (props: {[key: string]: any}) => void;
|
|
292
|
+
}
|
|
@@ -8,26 +8,26 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
const Platform = require('../Utilities/Platform');
|
|
12
|
-
const deepDiffer = require('../Utilities/differ/deepDiffer');
|
|
13
|
-
const React = require('react');
|
|
14
|
-
const View = require('../Components/View/View');
|
|
15
|
-
const VirtualizedList = require('./VirtualizedList');
|
|
16
|
-
const StyleSheet = require('../StyleSheet/StyleSheet');
|
|
17
|
-
|
|
18
|
-
const invariant = require('invariant');
|
|
19
|
-
|
|
20
11
|
import typeof ScrollViewNativeComponent from '../Components/ScrollView/ScrollViewNativeComponent';
|
|
21
|
-
import {type ScrollResponderType} from '../Components/ScrollView/ScrollView';
|
|
22
12
|
import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
|
|
23
13
|
import type {
|
|
24
|
-
ViewToken,
|
|
25
14
|
ViewabilityConfigCallbackPair,
|
|
15
|
+
ViewToken,
|
|
26
16
|
} from './ViewabilityHelper';
|
|
27
|
-
import type {
|
|
17
|
+
import type {RenderItemProps, RenderItemType} from './VirtualizedList';
|
|
18
|
+
|
|
19
|
+
import {type ScrollResponderType} from '../Components/ScrollView/ScrollView';
|
|
20
|
+
import VirtualizedList from './VirtualizedList';
|
|
28
21
|
import {keyExtractor as defaultKeyExtractor} from './VirtualizeUtils';
|
|
29
22
|
import memoizeOne from 'memoize-one';
|
|
30
23
|
|
|
24
|
+
const View = require('../Components/View/View');
|
|
25
|
+
const StyleSheet = require('../StyleSheet/StyleSheet');
|
|
26
|
+
const deepDiffer = require('../Utilities/differ/deepDiffer');
|
|
27
|
+
const Platform = require('../Utilities/Platform');
|
|
28
|
+
const invariant = require('invariant');
|
|
29
|
+
const React = require('react');
|
|
30
|
+
|
|
31
31
|
type RequiredProps<ItemT> = {|
|
|
32
32
|
/**
|
|
33
33
|
* For simplicity, data is just a plain array. If you want to use something else, like an
|
|
@@ -433,6 +433,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
|
|
433
433
|
}
|
|
434
434
|
}
|
|
435
435
|
|
|
436
|
+
// $FlowFixMe[missing-local-annot]
|
|
436
437
|
componentDidUpdate(prevProps: Props<ItemT>) {
|
|
437
438
|
invariant(
|
|
438
439
|
prevProps.numColumns === this.props.numColumns,
|
|
@@ -463,6 +464,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
|
|
463
464
|
this._listRef = ref;
|
|
464
465
|
};
|
|
465
466
|
|
|
467
|
+
// $FlowFixMe[missing-local-annot]
|
|
466
468
|
_checkProps(props: Props<ItemT>) {
|
|
467
469
|
const {
|
|
468
470
|
// $FlowFixMe[prop-missing] this prop doesn't exist, is only used for an invariant
|
|
@@ -494,13 +496,15 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
|
|
494
496
|
);
|
|
495
497
|
}
|
|
496
498
|
|
|
499
|
+
// $FlowFixMe[missing-local-annot]
|
|
497
500
|
_getItem = (data: Array<ItemT>, index: number) => {
|
|
498
501
|
const numColumns = numColumnsOrDefault(this.props.numColumns);
|
|
499
502
|
if (numColumns > 1) {
|
|
500
503
|
const ret = [];
|
|
501
504
|
for (let kk = 0; kk < numColumns; kk++) {
|
|
502
|
-
const
|
|
503
|
-
if (
|
|
505
|
+
const itemIndex = index * numColumns + kk;
|
|
506
|
+
if (itemIndex < data.length) {
|
|
507
|
+
const item = data[itemIndex];
|
|
504
508
|
ret.push(item);
|
|
505
509
|
}
|
|
506
510
|
}
|
|
@@ -511,7 +515,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
|
|
511
515
|
};
|
|
512
516
|
|
|
513
517
|
_getItemCount = (data: ?Array<ItemT>): number => {
|
|
514
|
-
if (data) {
|
|
518
|
+
if (Array.isArray(data)) {
|
|
515
519
|
const numColumns = numColumnsOrDefault(this.props.numColumns);
|
|
516
520
|
return numColumns > 1 ? Math.ceil(data.length / numColumns) : data.length;
|
|
517
521
|
} else {
|
|
@@ -519,29 +523,26 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
|
|
519
523
|
}
|
|
520
524
|
};
|
|
521
525
|
|
|
522
|
-
_keyExtractor = (items: ItemT | Array<ItemT>, index: number) => {
|
|
526
|
+
_keyExtractor = (items: ItemT | Array<ItemT>, index: number): string => {
|
|
523
527
|
const numColumns = numColumnsOrDefault(this.props.numColumns);
|
|
524
528
|
const keyExtractor = this.props.keyExtractor ?? defaultKeyExtractor;
|
|
525
529
|
|
|
526
530
|
if (numColumns > 1) {
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
numColumns,
|
|
539
|
-
);
|
|
540
|
-
}
|
|
541
|
-
} else {
|
|
542
|
-
// $FlowFixMe[incompatible-call] Can't call keyExtractor with an array
|
|
543
|
-
return keyExtractor(items, index);
|
|
531
|
+
invariant(
|
|
532
|
+
Array.isArray(items),
|
|
533
|
+
'FlatList: Encountered internal consistency error, expected each item to consist of an ' +
|
|
534
|
+
'array with 1-%s columns; instead, received a single item.',
|
|
535
|
+
numColumns,
|
|
536
|
+
);
|
|
537
|
+
return items
|
|
538
|
+
.map((item, kk) =>
|
|
539
|
+
keyExtractor(((item: $FlowFixMe): ItemT), index * numColumns + kk),
|
|
540
|
+
)
|
|
541
|
+
.join(':');
|
|
544
542
|
}
|
|
543
|
+
|
|
544
|
+
// $FlowFixMe[incompatible-call] Can't call keyExtractor with an array
|
|
545
|
+
return keyExtractor(items, index);
|
|
545
546
|
};
|
|
546
547
|
|
|
547
548
|
_pushMultiColumnViewable(arr: Array<ViewToken>, v: ViewToken): void {
|
|
@@ -560,6 +561,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
|
|
560
561
|
changed: Array<ViewToken>,
|
|
561
562
|
...
|
|
562
563
|
}) => void,
|
|
564
|
+
// $FlowFixMe[missing-local-annot]
|
|
563
565
|
) {
|
|
564
566
|
return (info: {
|
|
565
567
|
viewableItems: Array<ViewToken>,
|
|
@@ -569,8 +571,8 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
|
|
569
571
|
const numColumns = numColumnsOrDefault(this.props.numColumns);
|
|
570
572
|
if (onViewableItemsChanged) {
|
|
571
573
|
if (numColumns > 1) {
|
|
572
|
-
const changed = [];
|
|
573
|
-
const viewableItems = [];
|
|
574
|
+
const changed: Array<ViewToken> = [];
|
|
575
|
+
const viewableItems: Array<ViewToken> = [];
|
|
574
576
|
info.viewableItems.forEach(v =>
|
|
575
577
|
this._pushMultiColumnViewable(viewableItems, v),
|
|
576
578
|
);
|
|
@@ -589,14 +591,11 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
|
|
589
591
|
columnWrapperStyle: ?ViewStyleProp,
|
|
590
592
|
numColumns: ?number,
|
|
591
593
|
extraData: ?any,
|
|
594
|
+
// $FlowFixMe[missing-local-annot]
|
|
592
595
|
) => {
|
|
593
596
|
const cols = numColumnsOrDefault(numColumns);
|
|
594
597
|
|
|
595
|
-
|
|
596
|
-
? 'ListItemComponent'
|
|
597
|
-
: 'renderItem';
|
|
598
|
-
|
|
599
|
-
const renderer = (props: RenderItemProps<ItemT>): React.Node => {
|
|
598
|
+
const render = (props: RenderItemProps<ItemT>): React.Node => {
|
|
600
599
|
if (ListItemComponent) {
|
|
601
600
|
// $FlowFixMe[not-a-component] Component isn't valid
|
|
602
601
|
// $FlowFixMe[incompatible-type-arg] Component isn't valid
|
|
@@ -610,39 +609,39 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
|
|
610
609
|
}
|
|
611
610
|
};
|
|
612
611
|
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
);
|
|
639
|
-
} else {
|
|
640
|
-
return renderer(info);
|
|
641
|
-
}
|
|
642
|
-
},
|
|
612
|
+
const renderProp = (info: RenderItemProps<ItemT>) => {
|
|
613
|
+
if (cols > 1) {
|
|
614
|
+
const {item, index} = info;
|
|
615
|
+
invariant(
|
|
616
|
+
Array.isArray(item),
|
|
617
|
+
'Expected array of items with numColumns > 1',
|
|
618
|
+
);
|
|
619
|
+
return (
|
|
620
|
+
<View style={StyleSheet.compose(styles.row, columnWrapperStyle)}>
|
|
621
|
+
{item.map((it, kk) => {
|
|
622
|
+
const element = render({
|
|
623
|
+
// $FlowFixMe[incompatible-call]
|
|
624
|
+
item: it,
|
|
625
|
+
index: index * cols + kk,
|
|
626
|
+
separators: info.separators,
|
|
627
|
+
});
|
|
628
|
+
return element != null ? (
|
|
629
|
+
<React.Fragment key={kk}>{element}</React.Fragment>
|
|
630
|
+
) : null;
|
|
631
|
+
})}
|
|
632
|
+
</View>
|
|
633
|
+
);
|
|
634
|
+
} else {
|
|
635
|
+
return render(info);
|
|
636
|
+
}
|
|
643
637
|
};
|
|
638
|
+
|
|
639
|
+
return ListItemComponent
|
|
640
|
+
? {ListItemComponent: renderProp}
|
|
641
|
+
: {renderItem: renderProp};
|
|
644
642
|
};
|
|
645
643
|
|
|
644
|
+
// $FlowFixMe[missing-local-annot]
|
|
646
645
|
_memoizedRenderer = memoizeOne(this._renderer);
|
|
647
646
|
|
|
648
647
|
render(): React.Node {
|
|
@@ -657,6 +656,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
|
|
657
656
|
const renderer = strictMode ? this._memoizedRenderer : this._renderer;
|
|
658
657
|
|
|
659
658
|
return (
|
|
659
|
+
// $FlowFixMe[incompatible-exact] - `restProps` (`Props`) is inexact.
|
|
660
660
|
<VirtualizedList
|
|
661
661
|
{...restProps}
|
|
662
662
|
getItem={this._getItem}
|