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
package/Libraries/Modal/Modal.js
CHANGED
|
@@ -95,6 +95,14 @@ export type Props = $ReadOnly<{|
|
|
|
95
95
|
*/
|
|
96
96
|
statusBarTranslucent?: ?boolean,
|
|
97
97
|
|
|
98
|
+
/**
|
|
99
|
+
* The `navigationBarTranslucent` prop determines whether your modal should go under
|
|
100
|
+
* the system navigationbar.
|
|
101
|
+
*
|
|
102
|
+
* See https://reactnative.dev/docs/modal.html#navigationbartranslucent-android
|
|
103
|
+
*/
|
|
104
|
+
navigationBarTranslucent?: ?boolean,
|
|
105
|
+
|
|
98
106
|
/**
|
|
99
107
|
* The `hardwareAccelerated` prop controls whether to force hardware
|
|
100
108
|
* acceleration for the underlying window.
|
|
@@ -157,6 +165,12 @@ export type Props = $ReadOnly<{|
|
|
|
157
165
|
* See https://reactnative.dev/docs/modal#onorientationchange
|
|
158
166
|
*/
|
|
159
167
|
onOrientationChange?: ?DirectEventHandler<OrientationChangeEvent>,
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* The `backdropColor` props sets the background color of the modal's container.
|
|
171
|
+
* Defaults to `white` if not provided and transparent is `false`. Ignored if `transparent` is `true`.
|
|
172
|
+
*/
|
|
173
|
+
backdropColor?: ?string,
|
|
160
174
|
|}>;
|
|
161
175
|
|
|
162
176
|
function confirmProps(props: Props) {
|
|
@@ -170,6 +184,14 @@ function confirmProps(props: Props) {
|
|
|
170
184
|
`Modal with '${props.presentationStyle}' presentation style and 'transparent' value is not supported.`,
|
|
171
185
|
);
|
|
172
186
|
}
|
|
187
|
+
if (
|
|
188
|
+
props.navigationBarTranslucent === true &&
|
|
189
|
+
props.statusBarTranslucent !== true
|
|
190
|
+
) {
|
|
191
|
+
console.warn(
|
|
192
|
+
'Modal with translucent navigation bar and without translucent status bar is not supported.',
|
|
193
|
+
);
|
|
194
|
+
}
|
|
173
195
|
}
|
|
174
196
|
}
|
|
175
197
|
|
|
@@ -218,6 +240,9 @@ class Modal extends React.Component<Props, State> {
|
|
|
218
240
|
}
|
|
219
241
|
|
|
220
242
|
componentWillUnmount() {
|
|
243
|
+
if (Platform.OS === 'ios') {
|
|
244
|
+
this.setState({isRendered: false});
|
|
245
|
+
}
|
|
221
246
|
if (this._eventSubscription) {
|
|
222
247
|
this._eventSubscription.remove();
|
|
223
248
|
}
|
|
@@ -249,7 +274,9 @@ class Modal extends React.Component<Props, State> {
|
|
|
249
274
|
|
|
250
275
|
const containerStyles = {
|
|
251
276
|
backgroundColor:
|
|
252
|
-
this.props.transparent === true
|
|
277
|
+
this.props.transparent === true
|
|
278
|
+
? 'transparent'
|
|
279
|
+
: this.props.backdropColor ?? 'white',
|
|
253
280
|
};
|
|
254
281
|
|
|
255
282
|
let animationType = this.props.animationType || 'none';
|
|
@@ -290,6 +317,7 @@ class Modal extends React.Component<Props, State> {
|
|
|
290
317
|
onDismiss={onDismiss}
|
|
291
318
|
visible={this.props.visible}
|
|
292
319
|
statusBarTranslucent={this.props.statusBarTranslucent}
|
|
320
|
+
navigationBarTranslucent={this.props.navigationBarTranslucent}
|
|
293
321
|
identifier={this._identifier}
|
|
294
322
|
style={styles.modal}
|
|
295
323
|
// $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
|
@@ -331,8 +359,7 @@ const styles = StyleSheet.create({
|
|
|
331
359
|
},
|
|
332
360
|
});
|
|
333
361
|
|
|
334
|
-
const ExportedModal: React.
|
|
335
|
-
|
|
336
|
-
> = ModalInjection.unstable_Modal ?? Modal;
|
|
362
|
+
const ExportedModal: React.ComponentType<React.ElementConfig<typeof Modal>> =
|
|
363
|
+
ModalInjection.unstable_Modal ?? Modal;
|
|
337
364
|
|
|
338
365
|
module.exports = ExportedModal;
|
|
@@ -98,6 +98,14 @@ export type Props = $ReadOnly<{|
|
|
|
98
98
|
*/
|
|
99
99
|
statusBarTranslucent?: ?boolean,
|
|
100
100
|
|
|
101
|
+
/**
|
|
102
|
+
* The `navigationBarTranslucent` prop determines whether your modal should go under
|
|
103
|
+
* the system navigationbar.
|
|
104
|
+
*
|
|
105
|
+
* See https://reactnative.dev/docs/modal.html#navigationbartranslucent-android
|
|
106
|
+
*/
|
|
107
|
+
navigationBarTranslucent?: ?boolean,
|
|
108
|
+
|
|
101
109
|
/**
|
|
102
110
|
* The `hardwareAccelerated` prop controls whether to force hardware
|
|
103
111
|
* acceleration for the underlying window.
|
|
@@ -179,6 +187,14 @@ function confirmProps(props: Props) {
|
|
|
179
187
|
`Modal with '${props.presentationStyle}' presentation style and 'transparent' value is not supported.`,
|
|
180
188
|
);
|
|
181
189
|
}
|
|
190
|
+
if (
|
|
191
|
+
props.navigationBarTranslucent === true &&
|
|
192
|
+
props.statusBarTranslucent !== true
|
|
193
|
+
) {
|
|
194
|
+
console.warn(
|
|
195
|
+
'Modal with translucent navigation bar and without translucent status bar is not supported.',
|
|
196
|
+
);
|
|
197
|
+
}
|
|
182
198
|
}
|
|
183
199
|
}
|
|
184
200
|
|
|
@@ -303,6 +319,7 @@ class Modal extends React.Component<Props, State> {
|
|
|
303
319
|
onDismiss={onDismiss}
|
|
304
320
|
visible={this.props.visible}
|
|
305
321
|
statusBarTranslucent={this.props.statusBarTranslucent}
|
|
322
|
+
navigationBarTranslucent={this.props.navigationBarTranslucent}
|
|
306
323
|
identifier={this._identifier}
|
|
307
324
|
style={styles.modal}
|
|
308
325
|
// $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
|
@@ -344,6 +361,7 @@ const styles = StyleSheet.create({
|
|
|
344
361
|
},
|
|
345
362
|
});
|
|
346
363
|
|
|
364
|
+
// $FlowFixMe[prop-missing]
|
|
347
365
|
const ExportedModal: React.AbstractComponent<
|
|
348
366
|
React.ElementConfig<typeof Modal>,
|
|
349
367
|
// $FlowFixMe[incompatible-type-arg]
|
|
@@ -175,7 +175,7 @@ const validAttributesForNonEventProps = {
|
|
|
175
175
|
filter: {
|
|
176
176
|
process: require('../StyleSheet/processFilter').default,
|
|
177
177
|
},
|
|
178
|
-
|
|
178
|
+
mixBlendMode: true,
|
|
179
179
|
isolation: true,
|
|
180
180
|
opacity: true,
|
|
181
181
|
elevation: true,
|
|
@@ -227,6 +227,7 @@ const validAttributesForNonEventProps = {
|
|
|
227
227
|
justifyContent: true,
|
|
228
228
|
overflow: true,
|
|
229
229
|
display: true,
|
|
230
|
+
boxSizing: true,
|
|
230
231
|
|
|
231
232
|
margin: true,
|
|
232
233
|
marginBlock: true,
|
|
@@ -268,6 +269,11 @@ const validAttributesForNonEventProps = {
|
|
|
268
269
|
borderLeftWidth: true,
|
|
269
270
|
borderRightWidth: true,
|
|
270
271
|
|
|
272
|
+
outlineColor: {process: require('../StyleSheet/processColor').default},
|
|
273
|
+
outlineOffset: true,
|
|
274
|
+
outlineStyle: true,
|
|
275
|
+
outlineWidth: true,
|
|
276
|
+
|
|
271
277
|
start: true,
|
|
272
278
|
end: true,
|
|
273
279
|
left: true,
|
|
@@ -288,6 +294,71 @@ const validAttributesForNonEventProps = {
|
|
|
288
294
|
style: ReactNativeStyleAttributes,
|
|
289
295
|
|
|
290
296
|
experimental_layoutConformance: true,
|
|
297
|
+
|
|
298
|
+
// ReactClippingViewManager @ReactProps
|
|
299
|
+
removeClippedSubviews: true,
|
|
300
|
+
|
|
301
|
+
// ReactViewManager @ReactProps
|
|
302
|
+
accessible: true,
|
|
303
|
+
hasTVPreferredFocus: true,
|
|
304
|
+
nextFocusDown: true,
|
|
305
|
+
nextFocusForward: true,
|
|
306
|
+
nextFocusLeft: true,
|
|
307
|
+
nextFocusRight: true,
|
|
308
|
+
nextFocusUp: true,
|
|
309
|
+
|
|
310
|
+
borderRadius: true,
|
|
311
|
+
borderTopLeftRadius: true,
|
|
312
|
+
borderTopRightRadius: true,
|
|
313
|
+
borderBottomRightRadius: true,
|
|
314
|
+
borderBottomLeftRadius: true,
|
|
315
|
+
borderTopStartRadius: true,
|
|
316
|
+
borderTopEndRadius: true,
|
|
317
|
+
borderBottomStartRadius: true,
|
|
318
|
+
borderBottomEndRadius: true,
|
|
319
|
+
borderEndEndRadius: true,
|
|
320
|
+
borderEndStartRadius: true,
|
|
321
|
+
borderStartEndRadius: true,
|
|
322
|
+
borderStartStartRadius: true,
|
|
323
|
+
borderStyle: true,
|
|
324
|
+
hitSlop: true,
|
|
325
|
+
pointerEvents: true,
|
|
326
|
+
nativeBackgroundAndroid: true,
|
|
327
|
+
nativeForegroundAndroid: true,
|
|
328
|
+
needsOffscreenAlphaCompositing: true,
|
|
329
|
+
|
|
330
|
+
borderColor: {
|
|
331
|
+
process: require('../StyleSheet/processColor').default,
|
|
332
|
+
},
|
|
333
|
+
borderLeftColor: {
|
|
334
|
+
process: require('../StyleSheet/processColor').default,
|
|
335
|
+
},
|
|
336
|
+
borderRightColor: {
|
|
337
|
+
process: require('../StyleSheet/processColor').default,
|
|
338
|
+
},
|
|
339
|
+
borderTopColor: {
|
|
340
|
+
process: require('../StyleSheet/processColor').default,
|
|
341
|
+
},
|
|
342
|
+
borderBottomColor: {
|
|
343
|
+
process: require('../StyleSheet/processColor').default,
|
|
344
|
+
},
|
|
345
|
+
borderStartColor: {
|
|
346
|
+
process: require('../StyleSheet/processColor').default,
|
|
347
|
+
},
|
|
348
|
+
borderEndColor: {
|
|
349
|
+
process: require('../StyleSheet/processColor').default,
|
|
350
|
+
},
|
|
351
|
+
borderBlockColor: {
|
|
352
|
+
process: require('../StyleSheet/processColor').default,
|
|
353
|
+
},
|
|
354
|
+
borderBlockEndColor: {
|
|
355
|
+
process: require('../StyleSheet/processColor').default,
|
|
356
|
+
},
|
|
357
|
+
borderBlockStartColor: {
|
|
358
|
+
process: require('../StyleSheet/processColor').default,
|
|
359
|
+
},
|
|
360
|
+
focusable: true,
|
|
361
|
+
backfaceVisibility: true,
|
|
291
362
|
};
|
|
292
363
|
|
|
293
364
|
// Props for bubbling and direct events
|
|
@@ -231,7 +231,7 @@ const validAttributesForNonEventProps = {
|
|
|
231
231
|
boxShadow: {
|
|
232
232
|
process: require('../StyleSheet/processBoxShadow').default,
|
|
233
233
|
},
|
|
234
|
-
|
|
234
|
+
mixBlendMode: true,
|
|
235
235
|
isolation: true,
|
|
236
236
|
|
|
237
237
|
borderTopWidth: true,
|
|
@@ -348,6 +348,7 @@ const validAttributesForNonEventProps = {
|
|
|
348
348
|
alignContent: true,
|
|
349
349
|
position: true,
|
|
350
350
|
aspectRatio: true,
|
|
351
|
+
boxSizing: true,
|
|
351
352
|
|
|
352
353
|
// Also declared as ViewProps
|
|
353
354
|
// overflow: true,
|
|
@@ -218,7 +218,6 @@ const validAttributesForNonEventProps = {
|
|
|
218
218
|
testID: true,
|
|
219
219
|
backgroundColor: {process: require('../StyleSheet/processColor').default},
|
|
220
220
|
backfaceVisibility: true,
|
|
221
|
-
cursor: true,
|
|
222
221
|
opacity: true,
|
|
223
222
|
shadowColor: {process: require('../StyleSheet/processColor').default},
|
|
224
223
|
shadowOffset: {diff: require('../Utilities/differ/sizesDiffer')},
|
|
@@ -237,21 +236,19 @@ const validAttributesForNonEventProps = {
|
|
|
237
236
|
role: true,
|
|
238
237
|
borderRadius: true,
|
|
239
238
|
borderColor: {process: require('../StyleSheet/processColor').default},
|
|
240
|
-
borderBlockColor: {process: require('../StyleSheet/processColor').default},
|
|
241
239
|
borderCurve: true,
|
|
242
240
|
borderWidth: true,
|
|
243
|
-
borderBlockWidth: true,
|
|
244
241
|
borderStyle: true,
|
|
245
242
|
hitSlop: {diff: require('../Utilities/differ/insetsDiffer')},
|
|
246
243
|
collapsable: true,
|
|
247
244
|
collapsableChildren: true,
|
|
248
|
-
|
|
245
|
+
experimental_filter: {
|
|
249
246
|
process: require('../StyleSheet/processFilter').default,
|
|
250
247
|
},
|
|
251
248
|
boxShadow: {
|
|
252
249
|
process: require('../StyleSheet/processBoxShadow').default,
|
|
253
250
|
},
|
|
254
|
-
|
|
251
|
+
mixBlendMode: true,
|
|
255
252
|
isolation: true,
|
|
256
253
|
|
|
257
254
|
borderTopWidth: true,
|
|
@@ -263,15 +260,9 @@ const validAttributesForNonEventProps = {
|
|
|
263
260
|
borderLeftWidth: true,
|
|
264
261
|
borderLeftColor: {process: require('../StyleSheet/processColor').default},
|
|
265
262
|
borderStartWidth: true,
|
|
266
|
-
borderBlockStartWidth: true,
|
|
267
263
|
borderStartColor: {process: require('../StyleSheet/processColor').default},
|
|
268
|
-
borderBlockStartColor: {
|
|
269
|
-
process: require('../StyleSheet/processColor').default,
|
|
270
|
-
},
|
|
271
264
|
borderEndWidth: true,
|
|
272
|
-
borderBlockEndWidth: true,
|
|
273
265
|
borderEndColor: {process: require('../StyleSheet/processColor').default},
|
|
274
|
-
borderBlockEndColor: {process: require('../StyleSheet/processColor').default},
|
|
275
266
|
|
|
276
267
|
borderTopLeftRadius: true,
|
|
277
268
|
borderTopRightRadius: true,
|
|
@@ -368,6 +359,7 @@ const validAttributesForNonEventProps = {
|
|
|
368
359
|
alignContent: true,
|
|
369
360
|
position: true,
|
|
370
361
|
aspectRatio: true,
|
|
362
|
+
boxSizing: true,
|
|
371
363
|
|
|
372
364
|
// Also declared as ViewProps
|
|
373
365
|
// overflow: true,
|
|
@@ -48,7 +48,7 @@ export function setRuntimeConfigProvider(
|
|
|
48
48
|
* The supplied `viewConfigProvider` may or may not be invoked and utilized,
|
|
49
49
|
* depending on how `setRuntimeConfigProvider` is configured.
|
|
50
50
|
*/
|
|
51
|
-
export function get<Config>(
|
|
51
|
+
export function get<Config: {...}>(
|
|
52
52
|
name: string,
|
|
53
53
|
viewConfigProvider: () => PartialViewConfig,
|
|
54
54
|
): HostComponent<Config> {
|
|
@@ -121,10 +121,10 @@ export function get<Config>(
|
|
|
121
121
|
* that the return value of this is not `HostComponent` because the returned
|
|
122
122
|
* component instance is not guaranteed to have native methods.
|
|
123
123
|
*/
|
|
124
|
-
export function getWithFallback_DEPRECATED<Config>(
|
|
124
|
+
export function getWithFallback_DEPRECATED<Config: {...}>(
|
|
125
125
|
name: string,
|
|
126
126
|
viewConfigProvider: () => PartialViewConfig,
|
|
127
|
-
): React.
|
|
127
|
+
): React.ComponentType<Config> {
|
|
128
128
|
if (getRuntimeConfig == null) {
|
|
129
129
|
// `getRuntimeConfig == null` when static view configs are disabled
|
|
130
130
|
// If `setRuntimeConfigProvider` is not configured, use native reflection.
|
|
@@ -28,6 +28,15 @@ type FormDataPart =
|
|
|
28
28
|
...
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Encode a FormData filename compliant with RFC 2183
|
|
33
|
+
*
|
|
34
|
+
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition#directives
|
|
35
|
+
*/
|
|
36
|
+
function encodeFilename(filename: string): string {
|
|
37
|
+
return encodeURIComponent(filename.replace(/\//g, '_'));
|
|
38
|
+
}
|
|
39
|
+
|
|
31
40
|
/**
|
|
32
41
|
* Polyfill for XMLHttpRequest2 FormData API, allowing multipart POST requests
|
|
33
42
|
* with mixed data (string, native files) to be submitted via XMLHttpRequest.
|
|
@@ -82,9 +91,8 @@ class FormData {
|
|
|
82
91
|
// content type (cf. web Blob interface.)
|
|
83
92
|
if (typeof value === 'object' && !Array.isArray(value) && value) {
|
|
84
93
|
if (typeof value.name === 'string') {
|
|
85
|
-
headers['content-disposition'] +=
|
|
86
|
-
value.name
|
|
87
|
-
}"; filename*=utf-8''${encodeURI(value.name)}`;
|
|
94
|
+
headers['content-disposition'] +=
|
|
95
|
+
`; filename="${encodeFilename(value.name)}"`;
|
|
88
96
|
}
|
|
89
97
|
if (typeof value.type === 'string') {
|
|
90
98
|
headers['content-type'] = value.type;
|
|
@@ -5,20 +5,57 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
7
|
* @format
|
|
8
|
+
* @flow strict-local
|
|
8
9
|
*/
|
|
9
10
|
|
|
10
11
|
'use strict';
|
|
11
12
|
|
|
12
13
|
const XMLHttpRequest = require('./XMLHttpRequest');
|
|
14
|
+
// $FlowFixMe[method-unbinding]
|
|
13
15
|
const originalXHROpen = XMLHttpRequest.prototype.open;
|
|
16
|
+
// $FlowFixMe[method-unbinding]
|
|
14
17
|
const originalXHRSend = XMLHttpRequest.prototype.send;
|
|
18
|
+
// $FlowFixMe[method-unbinding]
|
|
15
19
|
const originalXHRSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader;
|
|
16
20
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
type XHRInterceptorOpenCallback = (
|
|
22
|
+
method: string,
|
|
23
|
+
url: string,
|
|
24
|
+
request: XMLHttpRequest,
|
|
25
|
+
) => void;
|
|
26
|
+
|
|
27
|
+
type XHRInterceptorSendCallback = (
|
|
28
|
+
data: string,
|
|
29
|
+
request: XMLHttpRequest,
|
|
30
|
+
) => void;
|
|
31
|
+
|
|
32
|
+
type XHRInterceptorRequestHeaderCallback = (
|
|
33
|
+
header: string,
|
|
34
|
+
value: string,
|
|
35
|
+
request: XMLHttpRequest,
|
|
36
|
+
) => void;
|
|
37
|
+
|
|
38
|
+
type XHRInterceptorHeaderReceivedCallback = (
|
|
39
|
+
responseContentType: string | void,
|
|
40
|
+
responseSize: number | void,
|
|
41
|
+
allHeaders: string,
|
|
42
|
+
request: XMLHttpRequest,
|
|
43
|
+
) => void;
|
|
44
|
+
|
|
45
|
+
type XHRInterceptorResponseCallback = (
|
|
46
|
+
status: number,
|
|
47
|
+
timeout: number,
|
|
48
|
+
response: string,
|
|
49
|
+
responseURL: string,
|
|
50
|
+
responseType: string,
|
|
51
|
+
request: XMLHttpRequest,
|
|
52
|
+
) => void;
|
|
53
|
+
|
|
54
|
+
let openCallback: XHRInterceptorOpenCallback | null;
|
|
55
|
+
let sendCallback: XHRInterceptorSendCallback | null;
|
|
56
|
+
let requestHeaderCallback: XHRInterceptorRequestHeaderCallback | null;
|
|
57
|
+
let headerReceivedCallback: XHRInterceptorHeaderReceivedCallback | null;
|
|
58
|
+
let responseCallback: XHRInterceptorResponseCallback | null;
|
|
22
59
|
|
|
23
60
|
let isInterceptorEnabled = false;
|
|
24
61
|
|
|
@@ -33,39 +70,39 @@ const XHRInterceptor = {
|
|
|
33
70
|
/**
|
|
34
71
|
* Invoked before XMLHttpRequest.open(...) is called.
|
|
35
72
|
*/
|
|
36
|
-
setOpenCallback(callback) {
|
|
73
|
+
setOpenCallback(callback: XHRInterceptorOpenCallback) {
|
|
37
74
|
openCallback = callback;
|
|
38
75
|
},
|
|
39
76
|
|
|
40
77
|
/**
|
|
41
78
|
* Invoked before XMLHttpRequest.send(...) is called.
|
|
42
79
|
*/
|
|
43
|
-
setSendCallback(callback) {
|
|
80
|
+
setSendCallback(callback: XHRInterceptorSendCallback) {
|
|
44
81
|
sendCallback = callback;
|
|
45
82
|
},
|
|
46
83
|
|
|
47
84
|
/**
|
|
48
85
|
* Invoked after xhr's readyState becomes xhr.HEADERS_RECEIVED.
|
|
49
86
|
*/
|
|
50
|
-
setHeaderReceivedCallback(callback) {
|
|
87
|
+
setHeaderReceivedCallback(callback: XHRInterceptorHeaderReceivedCallback) {
|
|
51
88
|
headerReceivedCallback = callback;
|
|
52
89
|
},
|
|
53
90
|
|
|
54
91
|
/**
|
|
55
92
|
* Invoked after xhr's readyState becomes xhr.DONE.
|
|
56
93
|
*/
|
|
57
|
-
setResponseCallback(callback) {
|
|
94
|
+
setResponseCallback(callback: XHRInterceptorResponseCallback) {
|
|
58
95
|
responseCallback = callback;
|
|
59
96
|
},
|
|
60
97
|
|
|
61
98
|
/**
|
|
62
99
|
* Invoked before XMLHttpRequest.setRequestHeader(...) is called.
|
|
63
100
|
*/
|
|
64
|
-
setRequestHeaderCallback(callback) {
|
|
101
|
+
setRequestHeaderCallback(callback: XHRInterceptorRequestHeaderCallback) {
|
|
65
102
|
requestHeaderCallback = callback;
|
|
66
103
|
},
|
|
67
104
|
|
|
68
|
-
isInterceptorEnabled() {
|
|
105
|
+
isInterceptorEnabled(): boolean {
|
|
69
106
|
return isInterceptorEnabled;
|
|
70
107
|
},
|
|
71
108
|
|
|
@@ -75,7 +112,9 @@ const XHRInterceptor = {
|
|
|
75
112
|
}
|
|
76
113
|
// Override `open` method for all XHR requests to intercept the request
|
|
77
114
|
// method and url, then pass them through the `openCallback`.
|
|
78
|
-
|
|
115
|
+
// $FlowFixMe[cannot-write]
|
|
116
|
+
// $FlowFixMe[missing-this-annot]
|
|
117
|
+
XMLHttpRequest.prototype.open = function (method: string, url: string) {
|
|
79
118
|
if (openCallback) {
|
|
80
119
|
openCallback(method, url, this);
|
|
81
120
|
}
|
|
@@ -84,7 +123,12 @@ const XHRInterceptor = {
|
|
|
84
123
|
|
|
85
124
|
// Override `setRequestHeader` method for all XHR requests to intercept
|
|
86
125
|
// the request headers, then pass them through the `requestHeaderCallback`.
|
|
87
|
-
|
|
126
|
+
// $FlowFixMe[cannot-write]
|
|
127
|
+
// $FlowFixMe[missing-this-annot]
|
|
128
|
+
XMLHttpRequest.prototype.setRequestHeader = function (
|
|
129
|
+
header: string,
|
|
130
|
+
value: string,
|
|
131
|
+
) {
|
|
88
132
|
if (requestHeaderCallback) {
|
|
89
133
|
requestHeaderCallback(header, value, this);
|
|
90
134
|
}
|
|
@@ -93,7 +137,9 @@ const XHRInterceptor = {
|
|
|
93
137
|
|
|
94
138
|
// Override `send` method of all XHR requests to intercept the data sent,
|
|
95
139
|
// register listeners to intercept the response, and invoke the callbacks.
|
|
96
|
-
|
|
140
|
+
// $FlowFixMe[cannot-write]
|
|
141
|
+
// $FlowFixMe[missing-this-annot]
|
|
142
|
+
XMLHttpRequest.prototype.send = function (data: string) {
|
|
97
143
|
if (sendCallback) {
|
|
98
144
|
sendCallback(data, this);
|
|
99
145
|
}
|
|
@@ -151,8 +197,11 @@ const XHRInterceptor = {
|
|
|
151
197
|
return;
|
|
152
198
|
}
|
|
153
199
|
isInterceptorEnabled = false;
|
|
200
|
+
// $FlowFixMe[cannot-write]
|
|
154
201
|
XMLHttpRequest.prototype.send = originalXHRSend;
|
|
202
|
+
// $FlowFixMe[cannot-write]
|
|
155
203
|
XMLHttpRequest.prototype.open = originalXHROpen;
|
|
204
|
+
// $FlowFixMe[cannot-write]
|
|
156
205
|
XMLHttpRequest.prototype.setRequestHeader = originalXHRSetRequestHeader;
|
|
157
206
|
responseCallback = null;
|
|
158
207
|
openCallback = null;
|
|
@@ -22,6 +22,7 @@ const base64 = require('base64-js');
|
|
|
22
22
|
const invariant = require('invariant');
|
|
23
23
|
|
|
24
24
|
const DEBUG_NETWORK_SEND_DELAY: false = false; // Set to a number of milliseconds when debugging
|
|
25
|
+
const LABEL_FOR_MISSING_URL_FOR_PROFILING = 'Unknown URL';
|
|
25
26
|
|
|
26
27
|
export type NativeResponseType = 'base64' | 'blob' | 'text';
|
|
27
28
|
export type ResponseType =
|
|
@@ -101,6 +102,7 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) {
|
|
|
101
102
|
static DONE: number = DONE;
|
|
102
103
|
|
|
103
104
|
static _interceptor: ?XHRInterceptor = null;
|
|
105
|
+
static _profiling: boolean = false;
|
|
104
106
|
|
|
105
107
|
UNSENT: number = UNSENT;
|
|
106
108
|
OPENED: number = OPENED;
|
|
@@ -144,12 +146,17 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) {
|
|
|
144
146
|
_timedOut: boolean = false;
|
|
145
147
|
_trackingName: string = 'unknown';
|
|
146
148
|
_incrementalEvents: boolean = false;
|
|
149
|
+
_startTime: ?number = null;
|
|
147
150
|
_performanceLogger: IPerformanceLogger = GlobalPerformanceLogger;
|
|
148
151
|
|
|
149
152
|
static setInterceptor(interceptor: ?XHRInterceptor) {
|
|
150
153
|
XMLHttpRequest._interceptor = interceptor;
|
|
151
154
|
}
|
|
152
155
|
|
|
156
|
+
static enableProfiling(enableProfiling: boolean): void {
|
|
157
|
+
XMLHttpRequest._profiling = enableProfiling;
|
|
158
|
+
}
|
|
159
|
+
|
|
153
160
|
constructor() {
|
|
154
161
|
super();
|
|
155
162
|
this._reset();
|
|
@@ -356,6 +363,11 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) {
|
|
|
356
363
|
this._response += responseText;
|
|
357
364
|
}
|
|
358
365
|
|
|
366
|
+
if (XMLHttpRequest._profiling) {
|
|
367
|
+
performance.mark(
|
|
368
|
+
'Track:XMLHttpRequest:Incremental Data: ' + this._getMeasureURL(),
|
|
369
|
+
);
|
|
370
|
+
}
|
|
359
371
|
XMLHttpRequest._interceptor &&
|
|
360
372
|
XMLHttpRequest._interceptor.dataReceived(requestId, responseText);
|
|
361
373
|
|
|
@@ -398,7 +410,13 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) {
|
|
|
398
410
|
this._clearSubscriptions();
|
|
399
411
|
this._requestId = null;
|
|
400
412
|
this.setReadyState(this.DONE);
|
|
401
|
-
|
|
413
|
+
if (XMLHttpRequest._profiling && this._startTime != null) {
|
|
414
|
+
const start = this._startTime;
|
|
415
|
+
performance.measure('Track:XMLHttpRequest:' + this._getMeasureURL(), {
|
|
416
|
+
start,
|
|
417
|
+
end: performance.now(),
|
|
418
|
+
});
|
|
419
|
+
}
|
|
402
420
|
if (error) {
|
|
403
421
|
XMLHttpRequest._interceptor &&
|
|
404
422
|
XMLHttpRequest._interceptor.loadingFailed(requestId, error);
|
|
@@ -572,6 +590,7 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) {
|
|
|
572
590
|
this._trackingName !== 'unknown' ? this._trackingName : this._url;
|
|
573
591
|
this._perfKey = 'network_XMLHttpRequest_' + String(friendlyName);
|
|
574
592
|
this._performanceLogger.startTimespan(this._perfKey);
|
|
593
|
+
this._startTime = performance.now();
|
|
575
594
|
invariant(
|
|
576
595
|
this._method,
|
|
577
596
|
'XMLHttpRequest method needs to be defined (%s).',
|
|
@@ -668,6 +687,12 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) {
|
|
|
668
687
|
}
|
|
669
688
|
super.addEventListener(type, listener);
|
|
670
689
|
}
|
|
690
|
+
|
|
691
|
+
_getMeasureURL(): string {
|
|
692
|
+
return (
|
|
693
|
+
this._trackingName ?? this._url ?? LABEL_FOR_MISSING_URL_FOR_PROFILING
|
|
694
|
+
);
|
|
695
|
+
}
|
|
671
696
|
}
|
|
672
697
|
|
|
673
698
|
module.exports = XMLHttpRequest;
|
|
@@ -66,11 +66,58 @@ export interface PermissionsAndroidStatic {
|
|
|
66
66
|
/**
|
|
67
67
|
* A list of permission results that are returned
|
|
68
68
|
*/
|
|
69
|
-
RESULTS: {
|
|
69
|
+
RESULTS: {
|
|
70
|
+
[key in 'GRANTED' | 'DENIED' | 'NEVER_ASK_AGAIN']: PermissionStatus;
|
|
71
|
+
};
|
|
70
72
|
/**
|
|
71
73
|
* A list of specified "dangerous" permissions that require prompting the user
|
|
72
74
|
*/
|
|
73
|
-
PERMISSIONS: {
|
|
75
|
+
PERMISSIONS: {
|
|
76
|
+
[key in
|
|
77
|
+
| 'READ_CALENDAR'
|
|
78
|
+
| 'WRITE_CALENDAR'
|
|
79
|
+
| 'CAMERA'
|
|
80
|
+
| 'READ_CONTACTS'
|
|
81
|
+
| 'WRITE_CONTACTS'
|
|
82
|
+
| 'GET_ACCOUNTS'
|
|
83
|
+
| 'ACCESS_FINE_LOCATION'
|
|
84
|
+
| 'ACCESS_COARSE_LOCATION'
|
|
85
|
+
| 'ACCESS_BACKGROUND_LOCATION'
|
|
86
|
+
| 'RECORD_AUDIO'
|
|
87
|
+
| 'READ_PHONE_STATE'
|
|
88
|
+
| 'CALL_PHONE'
|
|
89
|
+
| 'READ_CALL_LOG'
|
|
90
|
+
| 'WRITE_CALL_LOG'
|
|
91
|
+
| 'ADD_VOICEMAIL'
|
|
92
|
+
| 'READ_VOICEMAIL'
|
|
93
|
+
| 'WRITE_VOICEMAIL'
|
|
94
|
+
| 'USE_SIP'
|
|
95
|
+
| 'PROCESS_OUTGOING_CALLS'
|
|
96
|
+
| 'BODY_SENSORS'
|
|
97
|
+
| 'BODY_SENSORS_BACKGROUND'
|
|
98
|
+
| 'SEND_SMS'
|
|
99
|
+
| 'RECEIVE_SMS'
|
|
100
|
+
| 'READ_SMS'
|
|
101
|
+
| 'RECEIVE_WAP_PUSH'
|
|
102
|
+
| 'RECEIVE_MMS'
|
|
103
|
+
| 'READ_EXTERNAL_STORAGE'
|
|
104
|
+
| 'READ_MEDIA_IMAGES'
|
|
105
|
+
| 'READ_MEDIA_VIDEO'
|
|
106
|
+
| 'READ_MEDIA_AUDIO'
|
|
107
|
+
| 'READ_MEDIA_VISUAL_USER_SELECTED'
|
|
108
|
+
| 'WRITE_EXTERNAL_STORAGE'
|
|
109
|
+
| 'BLUETOOTH_CONNECT'
|
|
110
|
+
| 'BLUETOOTH_SCAN'
|
|
111
|
+
| 'BLUETOOTH_ADVERTISE'
|
|
112
|
+
| 'ACCESS_MEDIA_LOCATION'
|
|
113
|
+
| 'ACCEPT_HANDOVER'
|
|
114
|
+
| 'ACTIVITY_RECOGNITION'
|
|
115
|
+
| 'ANSWER_PHONE_CALLS'
|
|
116
|
+
| 'READ_PHONE_NUMBERS'
|
|
117
|
+
| 'UWB_RANGING'
|
|
118
|
+
| 'POST_NOTIFICATIONS'
|
|
119
|
+
| 'NEARBY_WIFI_DEVICES']: Permission;
|
|
120
|
+
};
|
|
74
121
|
new (): PermissionsAndroidStatic;
|
|
75
122
|
/**
|
|
76
123
|
* @deprecated Use check instead
|