@office-iss/react-native-win32 0.70.3 → 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 +268 -51
- package/CHANGELOG.md +101 -29
- 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 +1 -0
- 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 -49
- 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 +4 -0
- 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
|
@@ -4,29 +4,24 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @flow
|
|
7
|
+
* @flow strict-local
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import
|
|
12
|
-
import AnimatedAddition from '../../Animated/nodes/AnimatedAddition';
|
|
13
|
-
import AnimatedDiffClamp from '../../Animated/nodes/AnimatedDiffClamp';
|
|
14
|
-
import AnimatedNode from '../../Animated/nodes/AnimatedNode';
|
|
11
|
+
import type {LayoutEvent} from '../../Types/CoreEventTypes';
|
|
15
12
|
|
|
16
|
-
import
|
|
13
|
+
import Animated from '../../Animated/Animated';
|
|
17
14
|
import StyleSheet from '../../StyleSheet/StyleSheet';
|
|
18
|
-
import View from '../View/View';
|
|
19
15
|
import Platform from '../../Utilities/Platform';
|
|
20
|
-
|
|
21
|
-
import
|
|
22
|
-
|
|
23
|
-
const AnimatedView = AnimatedImplementation.createAnimatedComponent(View);
|
|
16
|
+
import useMergeRefs from '../../Utilities/useMergeRefs';
|
|
17
|
+
import * as React from 'react';
|
|
18
|
+
import {useCallback, useEffect, useMemo, useRef, useState} from 'react';
|
|
24
19
|
|
|
25
20
|
export type Props = $ReadOnly<{
|
|
26
|
-
children?: React.Element
|
|
21
|
+
children?: React.Element<$FlowFixMe>,
|
|
27
22
|
nextHeaderLayoutY: ?number,
|
|
28
23
|
onLayout: (event: LayoutEvent) => void,
|
|
29
|
-
scrollAnimatedValue:
|
|
24
|
+
scrollAnimatedValue: Animated.Value,
|
|
30
25
|
// Will cause sticky headers to stick at the bottom of the ScrollView instead
|
|
31
26
|
// of the top.
|
|
32
27
|
inverted: ?boolean,
|
|
@@ -36,291 +31,270 @@ export type Props = $ReadOnly<{
|
|
|
36
31
|
hiddenOnScroll?: ?boolean,
|
|
37
32
|
}>;
|
|
38
33
|
|
|
39
|
-
type
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
layoutHeight: number,
|
|
43
|
-
nextHeaderLayoutY: ?number,
|
|
44
|
-
translateY: ?number,
|
|
34
|
+
type Instance = {
|
|
35
|
+
...React.ElementRef<typeof Animated.View>,
|
|
36
|
+
setNextHeaderY: number => void,
|
|
45
37
|
...
|
|
46
38
|
};
|
|
47
39
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
_haveReceivedInitialZeroTranslateY: boolean = true;
|
|
60
|
-
_ref: any; // TODO T53738161: flow type this, and the whole file
|
|
40
|
+
const ScrollViewStickyHeaderWithForwardedRef: React.AbstractComponent<
|
|
41
|
+
Props,
|
|
42
|
+
Instance,
|
|
43
|
+
> = React.forwardRef(function ScrollViewStickyHeader(props, forwardedRef) {
|
|
44
|
+
const {
|
|
45
|
+
inverted,
|
|
46
|
+
scrollViewHeight,
|
|
47
|
+
hiddenOnScroll,
|
|
48
|
+
scrollAnimatedValue,
|
|
49
|
+
nextHeaderLayoutY: _nextHeaderLayoutY,
|
|
50
|
+
} = props;
|
|
61
51
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
52
|
+
const [measured, setMeasured] = useState<boolean>(false);
|
|
53
|
+
const [layoutY, setLayoutY] = useState<number>(0);
|
|
54
|
+
const [layoutHeight, setLayoutHeight] = useState<number>(0);
|
|
55
|
+
const [translateY, setTranslateY] = useState<?number>(null);
|
|
56
|
+
const [nextHeaderLayoutY, setNextHeaderLayoutY] =
|
|
57
|
+
useState<?number>(_nextHeaderLayoutY);
|
|
58
|
+
const [isFabric, setIsFabric] = useState<boolean>(false);
|
|
67
59
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
60
|
+
const callbackRef = (ref: Instance | null): void => {
|
|
61
|
+
if (ref == null) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
ref.setNextHeaderY = value => {
|
|
65
|
+
setNextHeaderLayoutY(value);
|
|
66
|
+
};
|
|
67
|
+
// Avoid dot notation because at Meta, private properties are obfuscated.
|
|
68
|
+
// $FlowFixMe[prop-missing]
|
|
69
|
+
const _internalInstanceHandler = ref['_internalInstanceHandle']; // eslint-disable-line dot-notation
|
|
70
|
+
setIsFabric(Boolean(_internalInstanceHandler?.stateNode?.canonical));
|
|
71
71
|
};
|
|
72
|
+
const ref: (React.ElementRef<typeof Animated.View> | null) => void =
|
|
73
|
+
// $FlowFixMe[incompatible-type] - Ref is mutated by `callbackRef`.
|
|
74
|
+
useMergeRefs<Instance | null>(callbackRef, forwardedRef);
|
|
72
75
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
const offset = useMemo(
|
|
77
|
+
() =>
|
|
78
|
+
hiddenOnScroll === true
|
|
79
|
+
? Animated.diffClamp(
|
|
80
|
+
scrollAnimatedValue
|
|
81
|
+
.interpolate({
|
|
82
|
+
extrapolateLeft: 'clamp',
|
|
83
|
+
inputRange: [layoutY, layoutY + 1],
|
|
84
|
+
outputRange: ([0, 1]: Array<number>),
|
|
85
|
+
})
|
|
86
|
+
.interpolate({
|
|
87
|
+
inputRange: [0, 1],
|
|
88
|
+
outputRange: ([0, -1]: Array<number>),
|
|
89
|
+
}),
|
|
90
|
+
-layoutHeight,
|
|
91
|
+
0,
|
|
92
|
+
)
|
|
93
|
+
: null,
|
|
94
|
+
[scrollAnimatedValue, layoutHeight, layoutY, hiddenOnScroll],
|
|
95
|
+
);
|
|
81
96
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
97
|
+
const [animatedTranslateY, setAnimatedTranslateY] = useState<Animated.Node>(
|
|
98
|
+
() => {
|
|
99
|
+
const inputRange: Array<number> = [-1, 0];
|
|
100
|
+
const outputRange: Array<number> = [0, 0];
|
|
101
|
+
const initialTranslateY = scrollAnimatedValue.interpolate({
|
|
102
|
+
inputRange,
|
|
103
|
+
outputRange,
|
|
104
|
+
});
|
|
91
105
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
this._translateY.removeListener(this._animatedValueListenerId);
|
|
99
|
-
}
|
|
100
|
-
offset
|
|
101
|
-
? (this._translateY = new AnimatedAddition(translateY, offset))
|
|
102
|
-
: (this._translateY = translateY);
|
|
106
|
+
if (offset != null) {
|
|
107
|
+
return Animated.add(initialTranslateY, offset);
|
|
108
|
+
}
|
|
109
|
+
return initialTranslateY;
|
|
110
|
+
},
|
|
111
|
+
);
|
|
103
112
|
|
|
104
|
-
|
|
113
|
+
const _haveReceivedInitialZeroTranslateY = useRef<boolean>(true);
|
|
114
|
+
const _timer = useRef<?TimeoutID>(null);
|
|
105
115
|
|
|
106
|
-
|
|
107
|
-
|
|
116
|
+
useEffect(() => {
|
|
117
|
+
if (translateY !== 0 && translateY != null) {
|
|
118
|
+
_haveReceivedInitialZeroTranslateY.current = false;
|
|
108
119
|
}
|
|
120
|
+
}, [translateY]);
|
|
109
121
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
122
|
+
// This is called whenever the (Interpolated) Animated Value
|
|
123
|
+
// updates, which is several times per frame during scrolling.
|
|
124
|
+
// To ensure that the Fabric ShadowTree has the most recent
|
|
125
|
+
// translate style of this node, we debounce the value and then
|
|
126
|
+
// pass it through to the underlying node during render.
|
|
127
|
+
// This is:
|
|
128
|
+
// 1. Only an issue in Fabric.
|
|
129
|
+
// 2. Worse in Android than iOS. In Android, but not iOS, you
|
|
130
|
+
// can touch and move your finger slightly and still trigger
|
|
131
|
+
// a "tap" event. In iOS, moving will cancel the tap in
|
|
132
|
+
// both Fabric and non-Fabric. On Android when you move
|
|
133
|
+
// your finger, the hit-detection moves from the Android
|
|
134
|
+
// platform to JS, so we need the ShadowTree to have knowledge
|
|
135
|
+
// of the current position.
|
|
136
|
+
const animatedValueListener = useCallback(
|
|
137
|
+
({value}) => {
|
|
138
|
+
const _debounceTimeout: number = Platform.OS === 'android' ? 15 : 64;
|
|
139
|
+
// When the AnimatedInterpolation is recreated, it always initializes
|
|
140
|
+
// to a value of zero and emits a value change of 0 to its listeners.
|
|
141
|
+
if (value === 0 && !_haveReceivedInitialZeroTranslateY.current) {
|
|
142
|
+
_haveReceivedInitialZeroTranslateY.current = true;
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (_timer.current != null) {
|
|
146
|
+
clearTimeout(_timer.current);
|
|
147
|
+
}
|
|
148
|
+
_timer.current = setTimeout(() => {
|
|
149
|
+
if (value !== translateY) {
|
|
150
|
+
setTranslateY(value);
|
|
134
151
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
}, this._debounceTimeout);
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
if (this.state.translateY !== 0 && this.state.translateY != null) {
|
|
145
|
-
this._haveReceivedInitialZeroTranslateY = false;
|
|
146
|
-
}
|
|
147
|
-
this._animatedValueListenerId = translateY.addListener(
|
|
148
|
-
this._animatedValueListener,
|
|
149
|
-
);
|
|
150
|
-
}
|
|
152
|
+
}, _debounceTimeout);
|
|
153
|
+
},
|
|
154
|
+
[translateY],
|
|
155
|
+
);
|
|
151
156
|
|
|
152
|
-
|
|
153
|
-
const
|
|
154
|
-
const
|
|
155
|
-
const measured = true;
|
|
157
|
+
useEffect(() => {
|
|
158
|
+
const inputRange: Array<number> = [-1, 0];
|
|
159
|
+
const outputRange: Array<number> = [0, 0];
|
|
156
160
|
|
|
157
|
-
if (
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
161
|
+
if (measured) {
|
|
162
|
+
if (inverted === true) {
|
|
163
|
+
// The interpolation looks like:
|
|
164
|
+
// - Negative scroll: no translation
|
|
165
|
+
// - `stickStartPoint` is the point at which the header will start sticking.
|
|
166
|
+
// It is calculated using the ScrollView viewport height so it is a the bottom.
|
|
167
|
+
// - Headers that are in the initial viewport will never stick, `stickStartPoint`
|
|
168
|
+
// will be negative.
|
|
169
|
+
// - From 0 to `stickStartPoint` no translation. This will cause the header
|
|
170
|
+
// to scroll normally until it reaches the top of the scroll view.
|
|
171
|
+
// - From `stickStartPoint` to when the next header y hits the bottom edge of the header: translate
|
|
172
|
+
// equally to scroll. This will cause the header to stay at the top of the scroll view.
|
|
173
|
+
// - Past the collision with the next header y: no more translation. This will cause the
|
|
174
|
+
// header to continue scrolling up and make room for the next sticky header.
|
|
175
|
+
// In the case that there is no next header just translate equally to
|
|
176
|
+
// scroll indefinitely.
|
|
177
|
+
if (scrollViewHeight != null) {
|
|
178
|
+
const stickStartPoint = layoutY + layoutHeight - scrollViewHeight;
|
|
179
|
+
if (stickStartPoint > 0) {
|
|
180
|
+
inputRange.push(stickStartPoint);
|
|
181
|
+
outputRange.push(0);
|
|
182
|
+
inputRange.push(stickStartPoint + 1);
|
|
183
|
+
outputRange.push(1);
|
|
184
|
+
// If the next sticky header has not loaded yet (probably windowing) or is the last
|
|
185
|
+
// we can just keep it sticked forever.
|
|
186
|
+
const collisionPoint =
|
|
187
|
+
(nextHeaderLayoutY || 0) - layoutHeight - scrollViewHeight;
|
|
188
|
+
if (collisionPoint > stickStartPoint) {
|
|
189
|
+
inputRange.push(collisionPoint, collisionPoint + 1);
|
|
190
|
+
outputRange.push(
|
|
191
|
+
collisionPoint - stickStartPoint,
|
|
192
|
+
collisionPoint - stickStartPoint,
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
} else {
|
|
198
|
+
// The interpolation looks like:
|
|
199
|
+
// - Negative scroll: no translation
|
|
200
|
+
// - From 0 to the y of the header: no translation. This will cause the header
|
|
201
|
+
// to scroll normally until it reaches the top of the scroll view.
|
|
202
|
+
// - From header y to when the next header y hits the bottom edge of the header: translate
|
|
203
|
+
// equally to scroll. This will cause the header to stay at the top of the scroll view.
|
|
204
|
+
// - Past the collision with the next header y: no more translation. This will cause the
|
|
205
|
+
// header to continue scrolling up and make room for the next sticky header.
|
|
206
|
+
// In the case that there is no next header just translate equally to
|
|
207
|
+
// scroll indefinitely.
|
|
208
|
+
inputRange.push(layoutY);
|
|
209
|
+
outputRange.push(0);
|
|
210
|
+
// If the next sticky header has not loaded yet (probably windowing) or is the last
|
|
211
|
+
// we can just keep it sticked forever.
|
|
212
|
+
const collisionPoint = (nextHeaderLayoutY || 0) - layoutHeight;
|
|
213
|
+
if (collisionPoint >= layoutY) {
|
|
214
|
+
inputRange.push(collisionPoint, collisionPoint + 1);
|
|
215
|
+
outputRange.push(collisionPoint - layoutY, collisionPoint - layoutY);
|
|
216
|
+
} else {
|
|
217
|
+
inputRange.push(layoutY + 1);
|
|
218
|
+
outputRange.push(1);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
163
221
|
}
|
|
164
222
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
layoutHeight,
|
|
223
|
+
let newAnimatedTranslateY: Animated.Node = scrollAnimatedValue.interpolate({
|
|
224
|
+
inputRange,
|
|
225
|
+
outputRange,
|
|
169
226
|
});
|
|
170
227
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
if (child.props.onCellLayout) {
|
|
174
|
-
child.props.onCellLayout(event, child.props.cellKey, child.props.index);
|
|
175
|
-
} else if (child.props.onLayout) {
|
|
176
|
-
child.props.onLayout(event);
|
|
228
|
+
if (offset != null) {
|
|
229
|
+
newAnimatedTranslateY = Animated.add(newAnimatedTranslateY, offset);
|
|
177
230
|
}
|
|
178
|
-
};
|
|
179
231
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
232
|
+
// add the event listener
|
|
233
|
+
let animatedListenerId;
|
|
234
|
+
if (isFabric) {
|
|
235
|
+
animatedListenerId = newAnimatedTranslateY.addListener(
|
|
236
|
+
animatedValueListener,
|
|
237
|
+
);
|
|
238
|
+
}
|
|
185
239
|
|
|
186
|
-
|
|
187
|
-
// Fabric Detection
|
|
188
|
-
const isFabric = !!(
|
|
189
|
-
// An internal transform mangles variables with leading "_" as private.
|
|
190
|
-
// eslint-disable-next-line dot-notation
|
|
191
|
-
(this._ref && this._ref['_internalInstanceHandle']?.stateNode?.canonical)
|
|
192
|
-
);
|
|
193
|
-
// Initially and in the case of updated props or layout, we
|
|
194
|
-
// recreate this interpolated value. Otherwise, we do not recreate
|
|
195
|
-
// when there are state changes.
|
|
196
|
-
if (this._shouldRecreateTranslateY) {
|
|
197
|
-
const {inverted, scrollViewHeight} = this.props;
|
|
198
|
-
const {measured, layoutHeight, layoutY, nextHeaderLayoutY} = this.state;
|
|
199
|
-
const inputRange: Array<number> = [-1, 0];
|
|
200
|
-
const outputRange: Array<number> = [0, 0];
|
|
240
|
+
setAnimatedTranslateY(newAnimatedTranslateY);
|
|
201
241
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
// will be negative.
|
|
210
|
-
// - From 0 to `stickStartPoint` no translation. This will cause the header
|
|
211
|
-
// to scroll normally until it reaches the top of the scroll view.
|
|
212
|
-
// - From `stickStartPoint` to when the next header y hits the bottom edge of the header: translate
|
|
213
|
-
// equally to scroll. This will cause the header to stay at the top of the scroll view.
|
|
214
|
-
// - Past the collision with the next header y: no more translation. This will cause the
|
|
215
|
-
// header to continue scrolling up and make room for the next sticky header.
|
|
216
|
-
// In the case that there is no next header just translate equally to
|
|
217
|
-
// scroll indefinitely.
|
|
218
|
-
if (scrollViewHeight != null) {
|
|
219
|
-
const stickStartPoint = layoutY + layoutHeight - scrollViewHeight;
|
|
220
|
-
if (stickStartPoint > 0) {
|
|
221
|
-
inputRange.push(stickStartPoint);
|
|
222
|
-
outputRange.push(0);
|
|
223
|
-
inputRange.push(stickStartPoint + 1);
|
|
224
|
-
outputRange.push(1);
|
|
225
|
-
// If the next sticky header has not loaded yet (probably windowing) or is the last
|
|
226
|
-
// we can just keep it sticked forever.
|
|
227
|
-
const collisionPoint =
|
|
228
|
-
(nextHeaderLayoutY || 0) - layoutHeight - scrollViewHeight;
|
|
229
|
-
if (collisionPoint > stickStartPoint) {
|
|
230
|
-
inputRange.push(collisionPoint, collisionPoint + 1);
|
|
231
|
-
outputRange.push(
|
|
232
|
-
collisionPoint - stickStartPoint,
|
|
233
|
-
collisionPoint - stickStartPoint,
|
|
234
|
-
);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
} else {
|
|
239
|
-
// The interpolation looks like:
|
|
240
|
-
// - Negative scroll: no translation
|
|
241
|
-
// - From 0 to the y of the header: no translation. This will cause the header
|
|
242
|
-
// to scroll normally until it reaches the top of the scroll view.
|
|
243
|
-
// - From header y to when the next header y hits the bottom edge of the header: translate
|
|
244
|
-
// equally to scroll. This will cause the header to stay at the top of the scroll view.
|
|
245
|
-
// - Past the collision with the next header y: no more translation. This will cause the
|
|
246
|
-
// header to continue scrolling up and make room for the next sticky header.
|
|
247
|
-
// In the case that there is no next header just translate equally to
|
|
248
|
-
// scroll indefinitely.
|
|
249
|
-
inputRange.push(layoutY);
|
|
250
|
-
outputRange.push(0);
|
|
251
|
-
// If the next sticky header has not loaded yet (probably windowing) or is the last
|
|
252
|
-
// we can just keep it sticked forever.
|
|
253
|
-
const collisionPoint = (nextHeaderLayoutY || 0) - layoutHeight;
|
|
254
|
-
if (collisionPoint >= layoutY) {
|
|
255
|
-
inputRange.push(collisionPoint, collisionPoint + 1);
|
|
256
|
-
outputRange.push(
|
|
257
|
-
collisionPoint - layoutY,
|
|
258
|
-
collisionPoint - layoutY,
|
|
259
|
-
);
|
|
260
|
-
} else {
|
|
261
|
-
inputRange.push(layoutY + 1);
|
|
262
|
-
outputRange.push(1);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
242
|
+
// clean up the event listener and timer
|
|
243
|
+
return () => {
|
|
244
|
+
if (animatedListenerId) {
|
|
245
|
+
newAnimatedTranslateY.removeListener(animatedListenerId);
|
|
246
|
+
}
|
|
247
|
+
if (_timer.current != null) {
|
|
248
|
+
clearTimeout(_timer.current);
|
|
265
249
|
}
|
|
250
|
+
};
|
|
251
|
+
}, [nextHeaderLayoutY, measured, layoutHeight, layoutY, scrollViewHeight, scrollAnimatedValue, inverted, offset, animatedValueListener, isFabric]);
|
|
266
252
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
.interpolate({
|
|
277
|
-
extrapolateLeft: 'clamp',
|
|
278
|
-
inputRange: [layoutY, layoutY + 1],
|
|
279
|
-
outputRange: [0, 1],
|
|
280
|
-
})
|
|
281
|
-
.interpolate({
|
|
282
|
-
inputRange: [0, 1],
|
|
283
|
-
outputRange: [0, -1],
|
|
284
|
-
}),
|
|
285
|
-
-this.state.layoutHeight,
|
|
286
|
-
0,
|
|
287
|
-
)
|
|
288
|
-
: null,
|
|
289
|
-
);
|
|
253
|
+
const _onLayout = (event: LayoutEvent) => {
|
|
254
|
+
setLayoutY(event.nativeEvent.layout.y);
|
|
255
|
+
setLayoutHeight(event.nativeEvent.layout.height);
|
|
256
|
+
setMeasured(true);
|
|
257
|
+
|
|
258
|
+
props.onLayout(event);
|
|
259
|
+
const child = React.Children.only(props.children);
|
|
260
|
+
if (child.props.onLayout) {
|
|
261
|
+
child.props.onLayout(event);
|
|
290
262
|
}
|
|
263
|
+
};
|
|
291
264
|
|
|
292
|
-
|
|
265
|
+
const child = React.Children.only(props.children);
|
|
293
266
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
267
|
+
// TODO T68319535: remove this if NativeAnimated is rewritten for Fabric
|
|
268
|
+
const passthroughAnimatedPropExplicitValues =
|
|
269
|
+
isFabric && translateY != null
|
|
270
|
+
? {
|
|
271
|
+
style: {transform: [{translateY: translateY}]},
|
|
272
|
+
}
|
|
273
|
+
: null;
|
|
301
274
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
275
|
+
return (
|
|
276
|
+
/* $FlowFixMe[prop-missing] passthroughAnimatedPropExplicitValues isn't properly
|
|
277
|
+
included in the Animated.View flow type. */
|
|
278
|
+
<Animated.View
|
|
279
|
+
collapsable={false}
|
|
280
|
+
nativeID={props.nativeID}
|
|
281
|
+
onLayout={_onLayout}
|
|
282
|
+
ref={ref}
|
|
283
|
+
style={[
|
|
284
|
+
child.props.style,
|
|
285
|
+
styles.header,
|
|
286
|
+
{transform: [{translateY: animatedTranslateY}]},
|
|
287
|
+
]}
|
|
288
|
+
passthroughAnimatedPropExplicitValues={
|
|
289
|
+
passthroughAnimatedPropExplicitValues
|
|
290
|
+
}>
|
|
291
|
+
{React.cloneElement(child, {
|
|
292
|
+
style: styles.fill, // We transfer the child style to the wrapper.
|
|
293
|
+
onLayout: undefined, // we call this manually through our this._onLayout
|
|
294
|
+
})}
|
|
295
|
+
</Animated.View>
|
|
296
|
+
);
|
|
297
|
+
});
|
|
324
298
|
|
|
325
299
|
const styles = StyleSheet.create({
|
|
326
300
|
header: {
|
|
@@ -332,4 +306,4 @@ const styles = StyleSheet.create({
|
|
|
332
306
|
},
|
|
333
307
|
});
|
|
334
308
|
|
|
335
|
-
|
|
309
|
+
export default ScrollViewStickyHeaderWithForwardedRef;
|