react-native-windows 0.76.3 → 0.77.0-preview.2
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/.flowconfig +5 -1
- package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +1 -0
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +13 -0
- package/Libraries/Animated/AnimatedEvent.js +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +2 -2
- package/Libraries/Animated/NativeAnimatedAllowlist.js +20 -9
- package/Libraries/Animated/animations/Animation.js +60 -25
- package/Libraries/Animated/animations/DecayAnimation.js +26 -38
- package/Libraries/Animated/animations/SpringAnimation.js +33 -39
- package/Libraries/Animated/animations/TimingAnimation.js +34 -42
- package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
- package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
- package/Libraries/Animated/createAnimatedComponent.js +60 -33
- package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
- package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
- package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
- package/Libraries/Animated/nodes/AnimatedProps.js +104 -46
- package/Libraries/Animated/nodes/AnimatedStyle.js +116 -39
- package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
- package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
- package/Libraries/Animated/useAnimatedProps.js +41 -35
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +82 -5
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
- package/Libraries/Components/Button.js +9 -4
- package/Libraries/Components/Button.windows.js +19 -5
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
- package/Libraries/Components/Glyph/Glyph.js +2 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
- package/Libraries/Components/Popup/PopupNativeComponent.js +0 -1
- package/Libraries/Components/Pressable/Pressable.js +4 -4
- package/Libraries/Components/Pressable/Pressable.windows.js +10 -4
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
- package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
- package/Libraries/Components/ScrollView/ScrollView.js +49 -88
- package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
- package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +0 -5
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
- package/Libraries/Components/Switch/Switch.js +8 -6
- package/Libraries/Components/Switch/Switch.windows.js +8 -6
- package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
- package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
- package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
- package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
- package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
- package/Libraries/Components/TextInput/TextInput.js +37 -13
- package/Libraries/Components/TextInput/TextInput.windows.js +47 -16
- package/Libraries/Components/TextInput/TextInputState.js +11 -13
- package/Libraries/Components/TextInput/TextInputState.windows.js +11 -13
- package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
- package/Libraries/Components/Touchable/Position.js +7 -2
- package/Libraries/Components/Touchable/Touchable.js +4 -0
- package/Libraries/Components/Touchable/Touchable.windows.js +4 -0
- package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
- package/Libraries/Components/Touchable/TouchableBounce.windows.js +227 -0
- package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +5 -5
- package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +371 -0
- package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -3
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
- package/Libraries/Components/View/View.js +4 -4
- package/Libraries/Components/View/View.windows.js +12 -5
- package/Libraries/Components/View/ViewAccessibility.d.ts +10 -0
- package/Libraries/Components/View/ViewAccessibility.windows.js +2 -0
- package/Libraries/Components/View/ViewNativeComponent.js +6 -98
- package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
- package/Libraries/Components/View/ViewPropTypes.js +0 -3
- package/Libraries/Components/View/ViewPropTypes.windows.js +2 -3
- package/Libraries/Core/ExceptionsManager.js +50 -29
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
- package/Libraries/Core/setUpBatchedBridge.js +1 -10
- package/Libraries/Core/setUpDeveloperTools.js +1 -5
- package/Libraries/Core/setUpErrorHandling.js +20 -18
- package/Libraries/Core/setUpReactDevTools.js +107 -8
- package/Libraries/Core/setUpSegmentFetcher.js +1 -0
- package/Libraries/Core/setUpTimers.js +21 -18
- package/Libraries/Debugging/DebuggingOverlay.js +4 -5
- package/Libraries/Image/AssetSourceResolver.js +12 -1
- package/Libraries/Image/AssetSourceResolver.windows.js +12 -1
- package/Libraries/Image/Image.android.js +1 -5
- package/Libraries/Image/Image.d.ts +20 -29
- package/Libraries/Image/Image.ios.js +0 -2
- package/Libraries/Image/Image.windows.js +5 -1
- package/Libraries/Image/ImageBackground.js +2 -5
- package/Libraries/Image/ImageProps.js +7 -6
- package/Libraries/Image/ImageResizeMode.d.ts +8 -1
- package/Libraries/Image/ImageResizeMode.js +4 -1
- package/Libraries/Image/ImageSource.d.ts +0 -2
- package/Libraries/Image/ImageSource.js +0 -2
- package/Libraries/Image/ImageTypes.flow.js +11 -9
- package/Libraries/Image/ImageUtils.js +6 -3
- package/Libraries/Image/ImageViewNativeComponent.js +5 -3
- package/Libraries/Inspector/Inspector.js +1 -0
- package/Libraries/Inspector/NetworkOverlay.js +4 -0
- package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
- package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
- package/Libraries/Interaction/InteractionManager.js +6 -1
- package/Libraries/Interaction/InteractionManagerStub.js +176 -0
- package/Libraries/Interaction/TouchHistoryMath.js +22 -19
- package/Libraries/JSInspector/NetworkAgent.js +1 -1
- package/Libraries/Lists/FlatList.d.ts +1 -2
- package/Libraries/Lists/FlatList.js +2 -2
- package/Libraries/Lists/SectionListModern.js +7 -7
- package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
- package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
- package/Libraries/LogBox/Data/LogBoxData.js +3 -3
- package/Libraries/LogBox/LogBox.js +18 -5
- package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
- package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
- package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
- package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
- package/Libraries/Modal/Modal.d.ts +12 -0
- package/Libraries/Modal/Modal.js +31 -4
- package/Libraries/Modal/Modal.windows.js +18 -0
- package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -11
- package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
- package/Libraries/Network/FormData.js +11 -3
- package/Libraries/Network/XHRInterceptor.js +63 -14
- package/Libraries/Network/XMLHttpRequest.js +26 -1
- package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
- package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
- package/Libraries/Pressability/HoverState.js +2 -0
- package/Libraries/Pressability/Pressability.js +2 -3
- package/Libraries/Pressability/Pressability.windows.js +2 -3
- package/Libraries/Pressability/usePressability.js +4 -1
- package/Libraries/ReactNative/AppContainer.js +1 -1
- package/Libraries/ReactNative/AppRegistry.js +1 -11
- package/Libraries/ReactNative/DisplayMode.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
- package/Libraries/ReactNative/RendererImplementation.js +18 -17
- package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
- package/Libraries/ReactNative/renderApplication.js +9 -8
- package/Libraries/ReactNative/requireNativeComponent.js +5 -2
- package/Libraries/Renderer/shims/ReactFabric.js +3 -3
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
- package/Libraries/Renderer/shims/ReactNative.js +3 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
- package/Libraries/StyleSheet/StyleSheet.js +7 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
- package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
- package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
- package/Libraries/StyleSheet/processTransform.js +3 -34
- package/Libraries/Text/Text.js +248 -249
- package/Libraries/Text/Text.windows.js +298 -292
- package/Libraries/Text/TextNativeComponent.js +0 -1
- package/Libraries/Text/TextProps.windows.js +2 -0
- package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
- package/Libraries/Types/CoreEventTypes.d.ts +3 -10
- package/Libraries/Types/CoreEventTypes.js +4 -6
- package/Libraries/Types/CoreEventTypes.windows.js +4 -6
- package/Libraries/Utilities/Appearance.js +3 -1
- package/Libraries/Utilities/BackHandler.android.js +6 -18
- package/Libraries/Utilities/BackHandler.d.ts +0 -4
- package/Libraries/Utilities/BackHandler.ios.js +0 -7
- package/Libraries/Utilities/BackHandler.windows.js +6 -18
- package/Libraries/Utilities/HMRClient.js +3 -4
- package/Libraries/Utilities/Platform.flow.js +2 -2
- package/Libraries/Utilities/Platform.flow.windows.js +3 -2
- package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
- package/Libraries/Utilities/codegenNativeComponent.js +1 -1
- package/Libraries/Utilities/useMergeRefs.js +26 -7
- package/Libraries/WebSocket/WebSocketEvent.js +4 -1
- package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
- package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
- package/Libraries/promiseRejectionTrackingOptions.js +1 -1
- package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +9 -8
- package/Microsoft.ReactNative/AsynchronousEventBeat.h +5 -5
- package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +2 -2
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +197 -18
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +13 -0
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +2 -2
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
- package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +24 -0
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +5 -0
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -12
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +4 -4
- package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +4 -8
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +16 -15
- package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +15 -0
- package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +9 -0
- package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +20 -1
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -6
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
- package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
- package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
- package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +78 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.h +51 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +48 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.cpp +41 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.h +127 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.inc +125 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +16 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_win.cpp +23 -0
- package/Microsoft.ReactNative.Cxx/JSI/decorator.h +834 -0
- package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +117 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +366 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +560 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi.h +1611 -0
- package/Microsoft.ReactNative.Cxx/JSI/threadsafe.h +79 -0
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +7 -11
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -1
- package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +2878 -0
- package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +36 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +64 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +22 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModule.cpp +63 -63
- package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +165 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +105 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModuleUtils.h +57 -58
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/AString.h +42 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Array.h +151 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Base.h +177 -154
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +25 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +21 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/CallbackWrapper.h +67 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +90 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Convert.h +170 -172
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Error.h +51 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/EventEmitter.h +134 -136
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Function.h +283 -283
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.cpp +63 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.h +61 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Object.h +93 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +104 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Value.h +107 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/flags.h +22 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/react_native_assert.h +72 -0
- package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +553 -0
- package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +167 -0
- package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +186 -0
- package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +82 -0
- package/PropertySheets/Bundle.Common.targets +1 -1
- package/PropertySheets/Bundle.props +3 -0
- package/PropertySheets/Generated/PackageVersion.g.props +4 -4
- package/PropertySheets/ManagedCodeGen/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
- package/PropertySheets/OutputMSBuildProperties.targets +3 -1
- package/PropertySheets/React.Cpp.props +6 -0
- package/ReactCommon/ReactCommon.vcxproj +5 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -3
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +61 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +26 -23
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +150 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +252 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/accessibilityPropsConversions.h +795 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +59 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +227 -74
- package/Scripts/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
- package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +97 -62
- package/Shared/InspectorPackagerConnection.cpp +3 -6
- package/Shared/InspectorPackagerConnection.h +2 -2
- package/Shared/InstanceManager.h +1 -1
- package/Shared/OInstance.h +1 -1
- package/Shared/Shared.vcxitems +17 -2
- package/Shared/Shared.vcxitems.filters +3 -1
- package/Shared/TurboModuleManager.cpp +29 -4
- package/codegen/NativeAccessibilityInfoSpec.g.h +27 -9
- package/codegen/NativeAccessibilityManagerSpec.g.h +19 -13
- package/codegen/NativeActionSheetManagerSpec.g.h +4 -0
- package/codegen/NativeExceptionsManagerSpec.g.h +1 -7
- package/codegen/NativeIntersectionObserverSpec.g.h +2 -0
- package/codegen/NativePerformanceSpec.g.h +127 -3
- package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
- package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +125 -137
- package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
- package/codegen/react/components/rnwcore/Props.cpp +1 -0
- package/codegen/react/components/rnwcore/Props.h +1 -0
- package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
- package/codegen/react/components/rnwcore/ShadowNodes.h +0 -11
- package/codegen/react/components/rnwcore/States.h +0 -12
- package/codegen/rnwcoreJSI-generated.cpp +219 -186
- package/codegen/rnwcoreJSI.h +942 -511
- package/index.js +10 -3
- package/index.windows.js +10 -3
- package/jest/setup.js +36 -1
- package/just-task.js +15 -0
- package/package.json +22 -22
- package/src/private/animated/NativeAnimatedHelper.js +18 -16
- package/src/private/animated/useAnimatedPropsMemo.js +356 -0
- package/src/private/components/HScrollViewNativeComponents.js +1 -27
- package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
- package/src/private/components/VScrollViewNativeComponents.js +2 -25
- package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
- package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
- package/src/private/debugging/ReactDevToolsSettingsManager.windows.js +20 -0
- package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
- package/src/private/devmenu/DevMenu.d.ts +20 -0
- package/src/private/devmenu/DevMenu.js +31 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
- package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
- package/src/private/setup/setUpDOM.js +14 -6
- package/src/private/setup/setUpMutationObserver.js +5 -0
- package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
- package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
- package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
- package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
- package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
- package/src/private/specs/modules/NativeAppearance.js +4 -10
- package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
- package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
- package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
- package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
- package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
- package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
- package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
- package/src/private/webapis/performance/EventTiming.js +13 -8
- package/src/private/webapis/performance/Performance.js +66 -73
- package/src/private/webapis/performance/PerformanceEntry.js +2 -5
- package/src/private/webapis/performance/PerformanceObserver.js +65 -164
- package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
- package/src/private/webapis/performance/UserTiming.js +11 -7
- package/src/private/webapis/performance/Utilities.js +18 -0
- package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
- package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
- package/templates/cpp-lib/template.config.js +13 -7
- package/templates/templateUtils.js +10 -0
- package/types/index.d.ts +1 -1
- package/types/public/ReactNativeTypes.d.ts +4 -8
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +0 -35
- package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
- package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +0 -101
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +0 -569
- package/codegen/NativeDevToolsSettingsManagerSpec.g.h +0 -53
- package/codegen/NativePerformanceObserverSpec.g.h +0 -131
- package/src/private/components/useSyncOnScroll.js +0 -48
- package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
- package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
- package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
- package/types/experimental.d.ts +0 -59
- /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
|
@@ -10,113 +10,21 @@
|
|
|
10
10
|
|
|
11
11
|
import type {
|
|
12
12
|
HostComponent,
|
|
13
|
-
|
|
13
|
+
HostInstance,
|
|
14
14
|
} from '../../Renderer/shims/ReactNativeTypes';
|
|
15
15
|
|
|
16
16
|
import * as NativeComponentRegistry from '../../NativeComponent/NativeComponentRegistry';
|
|
17
17
|
import codegenNativeCommands from '../../Utilities/codegenNativeCommands';
|
|
18
|
-
import Platform from '../../Utilities/Platform';
|
|
19
18
|
import {type ViewProps as Props} from './ViewPropTypes';
|
|
20
|
-
import * as React from 'react';
|
|
21
|
-
|
|
22
|
-
export const __INTERNAL_VIEW_CONFIG: PartialViewConfig =
|
|
23
|
-
Platform.OS === 'android'
|
|
24
|
-
? {
|
|
25
|
-
uiViewClassName: 'RCTView',
|
|
26
|
-
validAttributes: {
|
|
27
|
-
// ReactClippingViewManager @ReactProps
|
|
28
|
-
removeClippedSubviews: true,
|
|
29
|
-
|
|
30
|
-
// ReactViewManager @ReactProps
|
|
31
|
-
accessible: true,
|
|
32
|
-
hasTVPreferredFocus: true,
|
|
33
|
-
nextFocusDown: true,
|
|
34
|
-
nextFocusForward: true,
|
|
35
|
-
nextFocusLeft: true,
|
|
36
|
-
nextFocusRight: true,
|
|
37
|
-
nextFocusUp: true,
|
|
38
|
-
|
|
39
|
-
borderRadius: true,
|
|
40
|
-
borderTopLeftRadius: true,
|
|
41
|
-
borderTopRightRadius: true,
|
|
42
|
-
borderBottomRightRadius: true,
|
|
43
|
-
borderBottomLeftRadius: true,
|
|
44
|
-
borderTopStartRadius: true,
|
|
45
|
-
borderTopEndRadius: true,
|
|
46
|
-
borderBottomStartRadius: true,
|
|
47
|
-
borderBottomEndRadius: true,
|
|
48
|
-
borderEndEndRadius: true,
|
|
49
|
-
borderEndStartRadius: true,
|
|
50
|
-
borderStartEndRadius: true,
|
|
51
|
-
borderStartStartRadius: true,
|
|
52
|
-
borderStyle: true,
|
|
53
|
-
hitSlop: true,
|
|
54
|
-
pointerEvents: true,
|
|
55
|
-
nativeBackgroundAndroid: true,
|
|
56
|
-
nativeForegroundAndroid: true,
|
|
57
|
-
needsOffscreenAlphaCompositing: true,
|
|
58
|
-
|
|
59
|
-
borderWidth: true,
|
|
60
|
-
borderLeftWidth: true,
|
|
61
|
-
borderRightWidth: true,
|
|
62
|
-
borderTopWidth: true,
|
|
63
|
-
borderBottomWidth: true,
|
|
64
|
-
borderStartWidth: true,
|
|
65
|
-
borderEndWidth: true,
|
|
66
|
-
|
|
67
|
-
borderColor: {
|
|
68
|
-
process: require('../../StyleSheet/processColor').default,
|
|
69
|
-
},
|
|
70
|
-
borderLeftColor: {
|
|
71
|
-
process: require('../../StyleSheet/processColor').default,
|
|
72
|
-
},
|
|
73
|
-
borderRightColor: {
|
|
74
|
-
process: require('../../StyleSheet/processColor').default,
|
|
75
|
-
},
|
|
76
|
-
borderTopColor: {
|
|
77
|
-
process: require('../../StyleSheet/processColor').default,
|
|
78
|
-
},
|
|
79
|
-
borderBottomColor: {
|
|
80
|
-
process: require('../../StyleSheet/processColor').default,
|
|
81
|
-
},
|
|
82
|
-
borderStartColor: {
|
|
83
|
-
process: require('../../StyleSheet/processColor').default,
|
|
84
|
-
},
|
|
85
|
-
borderEndColor: {
|
|
86
|
-
process: require('../../StyleSheet/processColor').default,
|
|
87
|
-
},
|
|
88
|
-
borderBlockColor: {
|
|
89
|
-
process: require('../../StyleSheet/processColor').default,
|
|
90
|
-
},
|
|
91
|
-
borderBlockEndColor: {
|
|
92
|
-
process: require('../../StyleSheet/processColor').default,
|
|
93
|
-
},
|
|
94
|
-
borderBlockStartColor: {
|
|
95
|
-
process: require('../../StyleSheet/processColor').default,
|
|
96
|
-
},
|
|
97
|
-
focusable: true,
|
|
98
|
-
overflow: true,
|
|
99
|
-
backfaceVisibility: true,
|
|
100
|
-
experimental_layoutConformance: true,
|
|
101
|
-
},
|
|
102
|
-
}
|
|
103
|
-
: {
|
|
104
|
-
uiViewClassName: 'RCTView',
|
|
105
|
-
};
|
|
106
19
|
|
|
107
20
|
const ViewNativeComponent: HostComponent<Props> =
|
|
108
|
-
NativeComponentRegistry.get<Props>('RCTView', () =>
|
|
21
|
+
NativeComponentRegistry.get<Props>('RCTView', () => ({
|
|
22
|
+
uiViewClassName: 'RCTView',
|
|
23
|
+
}));
|
|
109
24
|
|
|
110
25
|
interface NativeCommands {
|
|
111
|
-
+hotspotUpdate: (
|
|
112
|
-
|
|
113
|
-
x: number,
|
|
114
|
-
y: number,
|
|
115
|
-
) => void;
|
|
116
|
-
+setPressed: (
|
|
117
|
-
viewRef: React.ElementRef<HostComponent<mixed>>,
|
|
118
|
-
pressed: boolean,
|
|
119
|
-
) => void;
|
|
26
|
+
+hotspotUpdate: (viewRef: HostInstance, x: number, y: number) => void;
|
|
27
|
+
+setPressed: (viewRef: HostInstance, pressed: boolean) => void;
|
|
120
28
|
}
|
|
121
29
|
|
|
122
30
|
export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
|
|
@@ -318,4 +318,11 @@ export interface ViewProps
|
|
|
318
318
|
* Used to reference react managed views from native code.
|
|
319
319
|
*/
|
|
320
320
|
nativeID?: string | undefined;
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Contols whether this view, and its transitive children, are laid in a way
|
|
324
|
+
* consistent with web browsers ('strict'), or consistent with existing
|
|
325
|
+
* React Native code which may rely on incorrect behavior ('classic').
|
|
326
|
+
*/
|
|
327
|
+
experimental_layoutConformance?: 'strict' | 'classic' | undefined;
|
|
321
328
|
}
|
|
@@ -567,9 +567,6 @@ export type ViewProps = $ReadOnly<{|
|
|
|
567
567
|
* optimization. Set this property to `false` to disable this optimization and
|
|
568
568
|
* ensure that this `View` exists in the native view hierarchy.
|
|
569
569
|
*
|
|
570
|
-
* @platform android
|
|
571
|
-
* In Fabric, this prop is used in ios as well.
|
|
572
|
-
*
|
|
573
570
|
* See https://reactnative.dev/docs/view#collapsable
|
|
574
571
|
*/
|
|
575
572
|
collapsable?: ?boolean,
|
|
@@ -626,6 +626,8 @@ export type ViewProps = $ReadOnly<{|
|
|
|
626
626
|
* See https://reactnative.dev/docs/view#aria-hidden
|
|
627
627
|
*/
|
|
628
628
|
'aria-hidden'?: ?boolean,
|
|
629
|
+
'aria-multiselectable'?: ?boolean, // Windows
|
|
630
|
+
'aria-required'?: ?boolean, // Windows
|
|
629
631
|
|
|
630
632
|
/**
|
|
631
633
|
* Views that are only used to layout their children or otherwise don't draw
|
|
@@ -633,9 +635,6 @@ export type ViewProps = $ReadOnly<{|
|
|
|
633
635
|
* optimization. Set this property to `false` to disable this optimization and
|
|
634
636
|
* ensure that this `View` exists in the native view hierarchy.
|
|
635
637
|
*
|
|
636
|
-
* @platform android
|
|
637
|
-
* In Fabric, this prop is used in ios as well.
|
|
638
|
-
*
|
|
639
638
|
* See https://reactnative.dev/docs/view#collapsable
|
|
640
639
|
*/
|
|
641
640
|
collapsable?: ?boolean,
|
|
@@ -22,10 +22,11 @@ type ExceptionDecorator = ExceptionData => ExceptionData;
|
|
|
22
22
|
let userExceptionDecorator: ?ExceptionDecorator;
|
|
23
23
|
let inUserExceptionDecorator = false;
|
|
24
24
|
|
|
25
|
-
// This
|
|
25
|
+
// This string is used to decorate an ExtendedError with extra data in select usecases.
|
|
26
26
|
// Note that data passed using this method should be strictly contained,
|
|
27
27
|
// as data that's not serializable/too large may cause issues with passing the error to the native code.
|
|
28
|
-
|
|
28
|
+
// TODO(T204185517): We should use a Symbol for this, but jsi through jsc doesn't support it yet.
|
|
29
|
+
const decoratedExtraDataKey = 'RN$ErrorExtraDataKey';
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
32
|
* Allows the app to add information to the exception report before it is sent
|
|
@@ -120,6 +121,12 @@ function reportException(
|
|
|
120
121
|
const NativeExceptionsManager =
|
|
121
122
|
require('./NativeExceptionsManager').default;
|
|
122
123
|
if (NativeExceptionsManager) {
|
|
124
|
+
if (isFatal) {
|
|
125
|
+
if (global.RN$hasHandledFatalException?.()) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
global.RN$notifyOfFatalException?.();
|
|
129
|
+
}
|
|
123
130
|
NativeExceptionsManager.reportException(data);
|
|
124
131
|
}
|
|
125
132
|
}
|
|
@@ -140,24 +147,31 @@ let inExceptionHandler = false;
|
|
|
140
147
|
* Logs exceptions to the (native) console and displays them
|
|
141
148
|
*/
|
|
142
149
|
function handleException(e: mixed, isFatal: boolean) {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
150
|
+
// TODO(T196834299): We should really use a c++ turbomodule for this
|
|
151
|
+
const reportToConsole = true;
|
|
152
|
+
if (
|
|
153
|
+
!global.RN$handleException ||
|
|
154
|
+
!global.RN$handleException(e, isFatal, reportToConsole)
|
|
155
|
+
) {
|
|
156
|
+
let error: Error;
|
|
157
|
+
if (e instanceof Error) {
|
|
158
|
+
error = e;
|
|
159
|
+
} else {
|
|
160
|
+
// Workaround for reporting errors caused by `throw 'some string'`
|
|
161
|
+
// Unfortunately there is no way to figure out the stacktrace in this
|
|
162
|
+
// case, so if you ended up here trying to trace an error, look for
|
|
163
|
+
// `throw '<error message>'` somewhere in your codebase.
|
|
164
|
+
error = new SyntheticError(e);
|
|
165
|
+
}
|
|
166
|
+
try {
|
|
167
|
+
inExceptionHandler = true;
|
|
168
|
+
/* $FlowFixMe[class-object-subtyping] added when improving typing for this
|
|
169
|
+
* parameters */
|
|
170
|
+
// $FlowFixMe[incompatible-call]
|
|
171
|
+
reportException(error, isFatal, reportToConsole);
|
|
172
|
+
} finally {
|
|
173
|
+
inExceptionHandler = false;
|
|
174
|
+
}
|
|
161
175
|
}
|
|
162
176
|
}
|
|
163
177
|
|
|
@@ -169,7 +183,7 @@ function reactConsoleErrorHandler(...args) {
|
|
|
169
183
|
if (!console.reportErrorsAsExceptions) {
|
|
170
184
|
return;
|
|
171
185
|
}
|
|
172
|
-
if (inExceptionHandler) {
|
|
186
|
+
if (inExceptionHandler || global.RN$inExceptionHandler?.()) {
|
|
173
187
|
// The fundamental trick here is that are multiple entry point to logging errors:
|
|
174
188
|
// (see D19743075 for more background)
|
|
175
189
|
//
|
|
@@ -223,14 +237,21 @@ function reactConsoleErrorHandler(...args) {
|
|
|
223
237
|
error.name = 'console.error';
|
|
224
238
|
}
|
|
225
239
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
error,
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
240
|
+
const isFatal = false;
|
|
241
|
+
const reportToConsole = false;
|
|
242
|
+
if (
|
|
243
|
+
!global.RN$handleException ||
|
|
244
|
+
!global.RN$handleException(error, isFatal, reportToConsole)
|
|
245
|
+
) {
|
|
246
|
+
reportException(
|
|
247
|
+
/* $FlowFixMe[class-object-subtyping] added when improving typing for this
|
|
248
|
+
* parameters */
|
|
249
|
+
// $FlowFixMe[incompatible-call]
|
|
250
|
+
error,
|
|
251
|
+
isFatal,
|
|
252
|
+
reportToConsole,
|
|
253
|
+
);
|
|
254
|
+
}
|
|
234
255
|
}
|
|
235
256
|
|
|
236
257
|
/**
|
|
@@ -14,7 +14,6 @@ import typeof NativeExceptionsManager from '../NativeExceptionsManager';
|
|
|
14
14
|
export default ({
|
|
15
15
|
reportFatalException: jest.fn(),
|
|
16
16
|
reportSoftException: jest.fn(),
|
|
17
|
-
updateExceptionMessage: jest.fn(),
|
|
18
17
|
dismissRedbox: jest.fn(),
|
|
19
18
|
reportException: jest.fn(),
|
|
20
19
|
}: NativeExceptionsManager);
|
|
@@ -16,16 +16,7 @@ if (global.RN$Bridgeless === true && global.RN$registerCallableModule) {
|
|
|
16
16
|
} else {
|
|
17
17
|
const BatchedBridge = require('../BatchedBridge/BatchedBridge');
|
|
18
18
|
registerModule = (
|
|
19
|
-
moduleName:
|
|
20
|
-
| $TEMPORARY$string<'GlobalPerformanceLogger'>
|
|
21
|
-
| $TEMPORARY$string<'HMRClient'>
|
|
22
|
-
| $TEMPORARY$string<'HeapCapture'>
|
|
23
|
-
| $TEMPORARY$string<'JSTimers'>
|
|
24
|
-
| $TEMPORARY$string<'RCTDeviceEventEmitter'>
|
|
25
|
-
| $TEMPORARY$string<'RCTLog'>
|
|
26
|
-
| $TEMPORARY$string<'RCTNativeAppEventEmitter'>
|
|
27
|
-
| $TEMPORARY$string<'SamplingProfiler'>
|
|
28
|
-
| $TEMPORARY$string<'Systrace'>,
|
|
19
|
+
moduleName: string,
|
|
29
20
|
/* $FlowFixMe[missing-local-annot] The type annotation(s) required by
|
|
30
21
|
* Flow's LTI update could not be added via codemod */
|
|
31
22
|
factory,
|
|
@@ -42,13 +42,9 @@ if (__DEV__) {
|
|
|
42
42
|
if (!Platform.isTesting) {
|
|
43
43
|
const HMRClient = require('../Utilities/HMRClient');
|
|
44
44
|
|
|
45
|
-
// [0.76 only] When under React Native DevTools, log "JavaScript logs will
|
|
46
|
-
// be removed from Metro..." warning, and continue to forward logs.
|
|
47
45
|
if (global.__FUSEBOX_HAS_FULL_CONSOLE_SUPPORT__) {
|
|
48
46
|
HMRClient.unstable_notifyFuseboxConsoleEnabled();
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (console._isPolyfilled) {
|
|
47
|
+
} else if (console._isPolyfilled) {
|
|
52
48
|
// We assume full control over the console and send JavaScript logs to Metro.
|
|
53
49
|
[
|
|
54
50
|
'trace',
|
|
@@ -10,24 +10,26 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
ExceptionsManager
|
|
13
|
+
if (global.RN$useAlwaysAvailableJSErrorHandling !== true) {
|
|
14
|
+
/**
|
|
15
|
+
* Sets up the console and exception handling (redbox) for React Native.
|
|
16
|
+
* You can use this module directly, or just require InitializeCore.
|
|
17
|
+
*/
|
|
18
|
+
const ExceptionsManager = require('./ExceptionsManager');
|
|
19
|
+
ExceptionsManager.installConsoleErrorReporter();
|
|
19
20
|
|
|
20
|
-
// Set up error handler
|
|
21
|
-
if (!global.__fbDisableExceptionsManager) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
21
|
+
// Set up error handler
|
|
22
|
+
if (!global.__fbDisableExceptionsManager) {
|
|
23
|
+
const handleError = (e: mixed, isFatal: boolean) => {
|
|
24
|
+
try {
|
|
25
|
+
ExceptionsManager.handleException(e, isFatal);
|
|
26
|
+
} catch (ee) {
|
|
27
|
+
console.log('Failed to print error: ', ee.message);
|
|
28
|
+
throw e;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
const ErrorUtils = require('../vendor/core/ErrorUtils');
|
|
33
|
+
ErrorUtils.setGlobalHandler(handleError);
|
|
34
|
+
}
|
|
33
35
|
}
|
|
@@ -10,14 +10,44 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
import type {Domain} from '../../src/private/
|
|
13
|
+
import type {Domain} from '../../src/private/debugging/setUpFuseboxReactDevToolsDispatcher';
|
|
14
|
+
import type {Spec as NativeReactDevToolsRuntimeSettingsModuleSpec} from '../../src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule';
|
|
14
15
|
|
|
15
16
|
if (__DEV__) {
|
|
16
17
|
// Register dispatcher on global, which can be used later by Chrome DevTools frontend
|
|
17
|
-
require('../../src/private/
|
|
18
|
+
require('../../src/private/debugging/setUpFuseboxReactDevToolsDispatcher');
|
|
19
|
+
const {
|
|
20
|
+
initialize,
|
|
21
|
+
connectToDevTools,
|
|
22
|
+
connectWithCustomMessagingProtocol,
|
|
23
|
+
} = require('react-devtools-core');
|
|
24
|
+
|
|
25
|
+
const reactDevToolsSettingsManager = require('../../src/private/debugging/ReactDevToolsSettingsManager');
|
|
26
|
+
const serializedHookSettings =
|
|
27
|
+
reactDevToolsSettingsManager.getGlobalHookSettings();
|
|
28
|
+
const maybeReactDevToolsRuntimeSettingsModuleModule =
|
|
29
|
+
require('../../src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule').default;
|
|
30
|
+
|
|
31
|
+
let hookSettings = null;
|
|
32
|
+
if (serializedHookSettings != null) {
|
|
33
|
+
try {
|
|
34
|
+
const parsedSettings = JSON.parse(serializedHookSettings);
|
|
35
|
+
hookSettings = parsedSettings;
|
|
36
|
+
} catch {
|
|
37
|
+
console.error(
|
|
38
|
+
'Failed to parse persisted React DevTools hook settings. React DevTools will be initialized with default settings.',
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const {
|
|
44
|
+
isProfiling: shouldStartProfilingNow,
|
|
45
|
+
profilingSettings: initialProfilingSettings,
|
|
46
|
+
} = readReloadAndProfileConfig(maybeReactDevToolsRuntimeSettingsModuleModule);
|
|
18
47
|
|
|
19
48
|
// Install hook before React is loaded.
|
|
20
|
-
|
|
49
|
+
initialize(hookSettings, shouldStartProfilingNow, initialProfilingSettings);
|
|
50
|
+
|
|
21
51
|
// This should be defined in DEV, otherwise error is expected.
|
|
22
52
|
const fuseboxReactDevToolsDispatcher =
|
|
23
53
|
global.__FUSEBOX_REACT_DEVTOOLS_DISPATCHER__;
|
|
@@ -25,9 +55,14 @@ if (__DEV__) {
|
|
|
25
55
|
fuseboxReactDevToolsDispatcher.BINDING_NAME;
|
|
26
56
|
|
|
27
57
|
const ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');
|
|
28
|
-
const devToolsSettingsManager = require('../DevToolsSettings/DevToolsSettingsManager');
|
|
29
58
|
const resolveRNStyle = require('../StyleSheet/flattenStyle');
|
|
30
59
|
|
|
60
|
+
function handleReactDevToolsSettingsUpdate(settings: Object) {
|
|
61
|
+
reactDevToolsSettingsManager.setGlobalHookSettings(
|
|
62
|
+
JSON.stringify(settings),
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
|
|
31
66
|
let disconnect = null;
|
|
32
67
|
function disconnectBackendFromReactDevToolsInFuseboxIfNeeded() {
|
|
33
68
|
if (disconnect != null) {
|
|
@@ -37,7 +72,15 @@ if (__DEV__) {
|
|
|
37
72
|
}
|
|
38
73
|
|
|
39
74
|
function connectToReactDevToolsInFusebox(domain: Domain) {
|
|
40
|
-
|
|
75
|
+
const {
|
|
76
|
+
isReloadAndProfileSupported,
|
|
77
|
+
isProfiling,
|
|
78
|
+
onReloadAndProfile,
|
|
79
|
+
onReloadAndProfileFlagsReset,
|
|
80
|
+
} = readReloadAndProfileConfig(
|
|
81
|
+
maybeReactDevToolsRuntimeSettingsModuleModule,
|
|
82
|
+
);
|
|
83
|
+
disconnect = connectWithCustomMessagingProtocol({
|
|
41
84
|
onSubscribe: listener => {
|
|
42
85
|
domain.onMessage.addEventListener(listener);
|
|
43
86
|
},
|
|
@@ -47,9 +90,13 @@ if (__DEV__) {
|
|
|
47
90
|
onMessage: (event, payload) => {
|
|
48
91
|
domain.sendMessage({event, payload});
|
|
49
92
|
},
|
|
50
|
-
settingsManager: devToolsSettingsManager,
|
|
51
93
|
nativeStyleEditorValidAttributes: Object.keys(ReactNativeStyleAttributes),
|
|
52
94
|
resolveRNStyle,
|
|
95
|
+
onSettingsUpdated: handleReactDevToolsSettingsUpdate,
|
|
96
|
+
isReloadAndProfileSupported,
|
|
97
|
+
isProfiling,
|
|
98
|
+
onReloadAndProfile,
|
|
99
|
+
onReloadAndProfileFlagsReset,
|
|
53
100
|
});
|
|
54
101
|
}
|
|
55
102
|
|
|
@@ -101,14 +148,26 @@ if (__DEV__) {
|
|
|
101
148
|
isWebSocketOpen = true;
|
|
102
149
|
});
|
|
103
150
|
|
|
104
|
-
|
|
151
|
+
const {
|
|
152
|
+
isReloadAndProfileSupported,
|
|
153
|
+
isProfiling,
|
|
154
|
+
onReloadAndProfile,
|
|
155
|
+
onReloadAndProfileFlagsReset,
|
|
156
|
+
} = readReloadAndProfileConfig(
|
|
157
|
+
maybeReactDevToolsRuntimeSettingsModuleModule,
|
|
158
|
+
);
|
|
159
|
+
connectToDevTools({
|
|
105
160
|
isAppActive,
|
|
106
161
|
resolveRNStyle,
|
|
107
162
|
nativeStyleEditorValidAttributes: Object.keys(
|
|
108
163
|
ReactNativeStyleAttributes,
|
|
109
164
|
),
|
|
110
165
|
websocket: ws,
|
|
111
|
-
|
|
166
|
+
onSettingsUpdated: handleReactDevToolsSettingsUpdate,
|
|
167
|
+
isReloadAndProfileSupported,
|
|
168
|
+
isProfiling,
|
|
169
|
+
onReloadAndProfile,
|
|
170
|
+
onReloadAndProfileFlagsReset,
|
|
112
171
|
});
|
|
113
172
|
}
|
|
114
173
|
}
|
|
@@ -140,3 +199,43 @@ if (__DEV__) {
|
|
|
140
199
|
);
|
|
141
200
|
connectToWSBasedReactDevToolsFrontend(); // Try connecting once on load
|
|
142
201
|
}
|
|
202
|
+
|
|
203
|
+
function readReloadAndProfileConfig(
|
|
204
|
+
maybeModule: ?NativeReactDevToolsRuntimeSettingsModuleSpec,
|
|
205
|
+
) {
|
|
206
|
+
const isReloadAndProfileSupported = maybeModule != null;
|
|
207
|
+
const config = maybeModule?.getReloadAndProfileConfig();
|
|
208
|
+
const isProfiling = config?.shouldReloadAndProfile === true;
|
|
209
|
+
const profilingSettings = {
|
|
210
|
+
recordChangeDescriptions: config?.recordChangeDescriptions === true,
|
|
211
|
+
recordTimeline: false,
|
|
212
|
+
};
|
|
213
|
+
const onReloadAndProfile = (recordChangeDescriptions: boolean) => {
|
|
214
|
+
if (maybeModule == null) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
maybeModule.setReloadAndProfileConfig({
|
|
219
|
+
shouldReloadAndProfile: true,
|
|
220
|
+
recordChangeDescriptions,
|
|
221
|
+
});
|
|
222
|
+
};
|
|
223
|
+
const onReloadAndProfileFlagsReset = () => {
|
|
224
|
+
if (maybeModule == null) {
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
maybeModule.setReloadAndProfileConfig({
|
|
229
|
+
shouldReloadAndProfile: false,
|
|
230
|
+
recordChangeDescriptions: false,
|
|
231
|
+
});
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
return {
|
|
235
|
+
isReloadAndProfileSupported,
|
|
236
|
+
isProfiling,
|
|
237
|
+
profilingSettings,
|
|
238
|
+
onReloadAndProfile,
|
|
239
|
+
onReloadAndProfileFlagsReset,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
@@ -21,6 +21,17 @@ if (__DEV__) {
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
const isEventLoopEnabled = (() => {
|
|
25
|
+
if (NativeReactNativeFeatureFlags == null) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
ReactNativeFeatureFlags.enableBridgelessArchitecture() &&
|
|
31
|
+
!ReactNativeFeatureFlags.disableEventLoopOnBridgeless()
|
|
32
|
+
);
|
|
33
|
+
})();
|
|
34
|
+
|
|
24
35
|
// In bridgeless mode, timers are host functions installed from cpp.
|
|
25
36
|
if (global.RN$Bridgeless !== true) {
|
|
26
37
|
/**
|
|
@@ -29,14 +40,14 @@ if (global.RN$Bridgeless !== true) {
|
|
|
29
40
|
*/
|
|
30
41
|
const defineLazyTimer = (
|
|
31
42
|
name:
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
43
|
+
| 'cancelAnimationFrame'
|
|
44
|
+
| 'cancelIdleCallback'
|
|
45
|
+
| 'clearInterval'
|
|
46
|
+
| 'clearTimeout'
|
|
47
|
+
| 'requestAnimationFrame'
|
|
48
|
+
| 'requestIdleCallback'
|
|
49
|
+
| 'setInterval'
|
|
50
|
+
| 'setTimeout',
|
|
40
51
|
) => {
|
|
41
52
|
polyfillGlobal(name, () => require('./Timers/JSTimers')[name]);
|
|
42
53
|
};
|
|
@@ -48,12 +59,7 @@ if (global.RN$Bridgeless !== true) {
|
|
|
48
59
|
defineLazyTimer('cancelAnimationFrame');
|
|
49
60
|
defineLazyTimer('requestIdleCallback');
|
|
50
61
|
defineLazyTimer('cancelIdleCallback');
|
|
51
|
-
} else if (
|
|
52
|
-
// TODO remove this condition when bridgeless == modern scheduler everywhere.
|
|
53
|
-
NativeReactNativeFeatureFlags != null &&
|
|
54
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks -- false positive due to `use` prefix
|
|
55
|
-
ReactNativeFeatureFlags.useModernRuntimeScheduler()
|
|
56
|
-
) {
|
|
62
|
+
} else if (isEventLoopEnabled) {
|
|
57
63
|
polyfillGlobal(
|
|
58
64
|
'requestIdleCallback',
|
|
59
65
|
() =>
|
|
@@ -72,10 +78,7 @@ if (global.RN$Bridgeless !== true) {
|
|
|
72
78
|
// We need to check if the native module is available before accessing the
|
|
73
79
|
// feature flag, because otherwise the API would throw an error in the legacy
|
|
74
80
|
// architecture in OSS, where the native module isn't available.
|
|
75
|
-
if (
|
|
76
|
-
NativeReactNativeFeatureFlags != null &&
|
|
77
|
-
ReactNativeFeatureFlags.enableMicrotasks()
|
|
78
|
-
) {
|
|
81
|
+
if (isEventLoopEnabled) {
|
|
79
82
|
// This is the flag that tells React to use `queueMicrotask` to batch state
|
|
80
83
|
// updates, instead of using the scheduler to schedule a regular task.
|
|
81
84
|
// We use a global variable because we don't currently have any other
|
|
@@ -102,10 +102,9 @@ const styles = StyleSheet.create({
|
|
|
102
102
|
},
|
|
103
103
|
});
|
|
104
104
|
|
|
105
|
-
const DebuggingOverlayWithForwardedRef:
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
> = React.forwardRef(DebuggingOverlay);
|
|
105
|
+
const DebuggingOverlayWithForwardedRef: component(
|
|
106
|
+
ref: React.RefSetter<DebuggingOverlayHandle>,
|
|
107
|
+
...props: {}
|
|
108
|
+
) = React.forwardRef(DebuggingOverlay);
|
|
110
109
|
|
|
111
110
|
export default DebuggingOverlayWithForwardedRef;
|
|
@@ -53,6 +53,13 @@ function getAssetPathInDrawableFolder(asset: PackagerAsset): string {
|
|
|
53
53
|
return drawableFolder + '/' + fileName + '.' + asset.type;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
+
/**
|
|
57
|
+
* Returns true if the asset can be loaded over the network.
|
|
58
|
+
*/
|
|
59
|
+
function assetSupportsNetworkLoads(asset: PackagerAsset): boolean {
|
|
60
|
+
return !(asset.type === 'xml' && Platform.OS === 'android');
|
|
61
|
+
}
|
|
62
|
+
|
|
56
63
|
class AssetSourceResolver {
|
|
57
64
|
serverUrl: ?string;
|
|
58
65
|
// where the jsbundle is being run from
|
|
@@ -67,7 +74,11 @@ class AssetSourceResolver {
|
|
|
67
74
|
}
|
|
68
75
|
|
|
69
76
|
isLoadedFromServer(): boolean {
|
|
70
|
-
return
|
|
77
|
+
return (
|
|
78
|
+
this.serverUrl != null &&
|
|
79
|
+
this.serverUrl !== '' &&
|
|
80
|
+
assetSupportsNetworkLoads(this.asset)
|
|
81
|
+
);
|
|
71
82
|
}
|
|
72
83
|
|
|
73
84
|
isLoadedFromFileSystem(): boolean {
|