react-native-windows 0.76.2 → 0.77.0-preview.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.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/NativeAnimatedAllowlist.windows.js +122 -0
- 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 +96 -46
- package/Libraries/Animated/nodes/AnimatedProps.windows.js +281 -0
- package/Libraries/Animated/nodes/AnimatedStyle.js +108 -39
- package/Libraries/Animated/nodes/AnimatedStyle.windows.js +251 -0
- 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 +88 -57
- 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 +370 -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/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/CompositionComponentView.idl +2 -1
- package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +6 -3
- package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +7 -0
- package/Microsoft.ReactNative/Fabric/AbiViewProps.h +2 -0
- package/Microsoft.ReactNative/Fabric/ComponentView.cpp +45 -50
- package/Microsoft.ReactNative/Fabric/ComponentView.h +14 -22
- package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.cpp +943 -0
- package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.h +80 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +223 -21
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +187 -6
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +10 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.cpp +8 -32
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +349 -929
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +32 -29
- package/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp +9 -2
- package/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.h +2 -1
- package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +181 -123
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.h +16 -8
- package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +99 -37
- package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +25 -3
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +64 -3
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +12 -0
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +51 -3
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +3 -0
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +18 -8
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +3 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +56 -7
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +8 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
- package/Microsoft.ReactNative/Fabric/Composition/Theme.cpp +9 -3
- package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +35 -0
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +7 -0
- package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +1 -1
- 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/Fabric/platform/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +1 -5
- package/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +26 -0
- package/Microsoft.ReactNative/IReactViewComponentBuilder.idl +1 -1
- 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/ReactNativeIsland.idl +3 -2
- package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
- package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
- package/Microsoft.ReactNative/ViewProps.idl +2 -0
- 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/ComponentView.Experimental.interop.h +14 -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/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 +188 -39
- 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 +20 -2
- package/Shared/Shared.vcxitems.filters +4 -1
- package/Shared/TurboModuleManager.cpp +29 -4
- package/codegen/NativeAccessibilityInfoSpec.g.h +28 -9
- package/codegen/NativeAccessibilityManagerSpec.g.h +20 -13
- package/codegen/NativeActionSheetManagerSpec.g.h +5 -0
- package/codegen/NativeAlertManagerSpec.g.h +1 -0
- package/codegen/NativeAnimatedModuleSpec.g.h +1 -0
- package/codegen/NativeAnimatedTurboModuleSpec.g.h +1 -0
- package/codegen/NativeAppStateSpec.g.h +1 -0
- package/codegen/NativeAppThemeSpec.g.h +1 -0
- package/codegen/NativeAppearanceSpec.g.h +1 -0
- package/codegen/NativeBlobModuleSpec.g.h +1 -0
- package/codegen/NativeBugReportingSpec.g.h +1 -0
- package/codegen/NativeClipboardSpec.g.h +1 -0
- package/codegen/NativeDOMSpec.g.h +1 -0
- package/codegen/NativeDevLoadingViewSpec.g.h +1 -0
- package/codegen/NativeDevMenuSpec.g.h +1 -0
- package/codegen/NativeDevSettingsSpec.g.h +1 -0
- package/codegen/NativeDeviceEventManagerSpec.g.h +1 -0
- package/codegen/NativeDeviceInfoSpec.g.h +1 -0
- package/codegen/NativeDialogManagerAndroidSpec.g.h +1 -0
- package/codegen/NativeDialogManagerWindowsSpec.g.h +1 -0
- package/codegen/NativeExceptionsManagerSpec.g.h +2 -7
- package/codegen/NativeFileReaderModuleSpec.g.h +1 -0
- package/codegen/NativeFrameRateLoggerSpec.g.h +1 -0
- package/codegen/NativeHeadlessJsTaskSupportSpec.g.h +1 -0
- package/codegen/NativeI18nManagerSpec.g.h +1 -0
- package/codegen/NativeIdleCallbacksSpec.g.h +1 -0
- package/codegen/NativeImageEditorSpec.g.h +1 -0
- package/codegen/NativeImageLoaderAndroidSpec.g.h +1 -0
- package/codegen/NativeImageLoaderIOSSpec.g.h +1 -0
- package/codegen/NativeImageStoreAndroidSpec.g.h +1 -0
- package/codegen/NativeImageStoreIOSSpec.g.h +1 -0
- package/codegen/NativeIntentAndroidSpec.g.h +1 -0
- package/codegen/NativeIntersectionObserverSpec.g.h +3 -0
- package/codegen/NativeJSCHeapCaptureSpec.g.h +1 -0
- package/codegen/NativeJSCSamplingProfilerSpec.g.h +1 -0
- package/codegen/NativeKeyboardObserverSpec.g.h +1 -0
- package/codegen/NativeLinkingManagerSpec.g.h +1 -0
- package/codegen/NativeLogBoxSpec.g.h +1 -0
- package/codegen/NativeMicrotasksSpec.g.h +1 -0
- package/codegen/NativeModalManagerSpec.g.h +1 -0
- package/codegen/NativeMutationObserverSpec.g.h +1 -0
- package/codegen/NativeNetworkingAndroidSpec.g.h +1 -0
- package/codegen/NativeNetworkingIOSSpec.g.h +1 -0
- package/codegen/NativePerformanceSpec.g.h +128 -3
- package/codegen/NativePermissionsAndroidSpec.g.h +1 -0
- package/codegen/NativePlatformConstantsAndroidSpec.g.h +1 -0
- package/codegen/NativePlatformConstantsIOSSpec.g.h +1 -0
- package/codegen/NativePlatformConstantsWindowsSpec.g.h +1 -0
- package/codegen/NativePushNotificationManagerIOSSpec.g.h +1 -0
- package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
- package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +126 -137
- package/codegen/NativeRedBoxSpec.g.h +1 -0
- package/codegen/NativeSampleTurboModuleSpec.g.h +1 -0
- package/codegen/NativeSegmentFetcherSpec.g.h +1 -0
- package/codegen/NativeSettingsManagerSpec.g.h +1 -0
- package/codegen/NativeShareModuleSpec.g.h +1 -0
- package/codegen/NativeSoundManagerSpec.g.h +1 -0
- package/codegen/NativeSourceCodeSpec.g.h +1 -0
- package/codegen/NativeStatusBarManagerAndroidSpec.g.h +1 -0
- package/codegen/NativeStatusBarManagerIOSSpec.g.h +1 -0
- package/codegen/NativeTimingSpec.g.h +1 -0
- package/codegen/NativeToastAndroidSpec.g.h +1 -0
- package/codegen/NativeUIManagerSpec.g.h +1 -0
- package/codegen/NativeVibrationSpec.g.h +1 -0
- package/codegen/NativeWebSocketModuleSpec.g.h +1 -0
- 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 +348 -0
- package/src/private/animated/useAnimatedPropsMemo.windows.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 -52
- package/codegen/NativePerformanceObserverSpec.g.h +0 -130
- 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
|
@@ -59,7 +59,9 @@ function LogBoxInspectorCodeFrame(props: Props): React.Node {
|
|
|
59
59
|
<LogBoxInspectorSection heading="Source" action={<AppInfo />}>
|
|
60
60
|
<View style={styles.box}>
|
|
61
61
|
<View style={styles.frame}>
|
|
62
|
-
<ScrollView
|
|
62
|
+
<ScrollView
|
|
63
|
+
horizontal
|
|
64
|
+
contentContainerStyle={styles.contentContainer}>
|
|
63
65
|
<AnsiHighlight style={styles.content} text={codeFrame.content} />
|
|
64
66
|
</ScrollView>
|
|
65
67
|
</View>
|
|
@@ -138,6 +140,9 @@ const styles = StyleSheet.create({
|
|
|
138
140
|
paddingTop: 10,
|
|
139
141
|
paddingBottom: 10,
|
|
140
142
|
},
|
|
143
|
+
contentContainer: {
|
|
144
|
+
minWidth: '100%',
|
|
145
|
+
},
|
|
141
146
|
content: {
|
|
142
147
|
color: LogBoxStyle.getTextColor(1),
|
|
143
148
|
fontSize: 12,
|
|
@@ -59,7 +59,9 @@ function LogBoxInspectorCodeFrame(props: Props): React.Node {
|
|
|
59
59
|
<LogBoxInspectorSection heading="Source" action={<AppInfo />}>
|
|
60
60
|
<View style={styles.box}>
|
|
61
61
|
<View style={styles.frame}>
|
|
62
|
-
<ScrollView
|
|
62
|
+
<ScrollView
|
|
63
|
+
horizontal
|
|
64
|
+
contentContainerStyle={styles.contentContainer}>
|
|
63
65
|
<AnsiHighlight style={styles.content} text={codeFrame.content} />
|
|
64
66
|
</ScrollView>
|
|
65
67
|
</View>
|
|
@@ -138,6 +140,9 @@ const styles = StyleSheet.create({
|
|
|
138
140
|
paddingTop: 10,
|
|
139
141
|
paddingBottom: 10,
|
|
140
142
|
},
|
|
143
|
+
contentContainer: {
|
|
144
|
+
minWidth: '100%',
|
|
145
|
+
},
|
|
141
146
|
content: {
|
|
142
147
|
color: LogBoxStyle.getTextColor(1),
|
|
143
148
|
fontSize: 12,
|
|
@@ -27,7 +27,7 @@ type Props = $ReadOnly<{
|
|
|
27
27
|
level: LogLevel,
|
|
28
28
|
}>;
|
|
29
29
|
|
|
30
|
-
const LogBoxInspectorHeaderSafeArea: React.
|
|
30
|
+
const LogBoxInspectorHeaderSafeArea: React.ComponentType<ViewProps> =
|
|
31
31
|
Platform.OS === 'android' ? View : SafeAreaView;
|
|
32
32
|
|
|
33
33
|
export default function LogBoxInspectorHeader(props: Props): React.Node {
|
|
@@ -27,7 +27,7 @@ type Props = $ReadOnly<{
|
|
|
27
27
|
level: LogLevel,
|
|
28
28
|
}>;
|
|
29
29
|
|
|
30
|
-
const LogBoxInspectorHeaderSafeArea: React.
|
|
30
|
+
const LogBoxInspectorHeaderSafeArea: React.ComponentType<ViewProps> =
|
|
31
31
|
Platform.OS === 'android' ? View : SafeAreaView;
|
|
32
32
|
|
|
33
33
|
export default function LogBoxInspectorHeader(props: Props): React.Node {
|
|
@@ -138,7 +138,7 @@ function StackFrameList(props: {
|
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
function StackFrameFooter(
|
|
141
|
-
props: $
|
|
141
|
+
props: $ReadOnly<{message: string, onPress: () => void}>,
|
|
142
142
|
) {
|
|
143
143
|
return (
|
|
144
144
|
<View style={stackStyles.collapseContainer}>
|
|
@@ -59,7 +59,7 @@ function TappableLinks(props: {
|
|
|
59
59
|
|
|
60
60
|
// URLs were detected. Construct array of Text nodes.
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
const fragments: Array<React.Node> = [];
|
|
63
63
|
let indexCounter = 0;
|
|
64
64
|
let startIndex = 0;
|
|
65
65
|
|
|
@@ -115,7 +115,7 @@ function LogBoxMessage(props: Props): React.Node {
|
|
|
115
115
|
const elements = [];
|
|
116
116
|
let length = 0;
|
|
117
117
|
const createUnderLength = (
|
|
118
|
-
key: string
|
|
118
|
+
key: string,
|
|
119
119
|
message: string,
|
|
120
120
|
style: void | TextStyleProp,
|
|
121
121
|
) => {
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import type * as React from 'react';
|
|
11
11
|
import {ViewProps} from '../Components/View/ViewPropTypes';
|
|
12
12
|
import {NativeSyntheticEvent} from '../Types/CoreEventTypes';
|
|
13
|
+
import {ColorValue} from '../StyleSheet/StyleSheet';
|
|
13
14
|
|
|
14
15
|
export interface ModalBaseProps {
|
|
15
16
|
/**
|
|
@@ -43,6 +44,12 @@ export interface ModalBaseProps {
|
|
|
43
44
|
* The `onShow` prop allows passing a function that will be called once the modal has been shown.
|
|
44
45
|
*/
|
|
45
46
|
onShow?: ((event: NativeSyntheticEvent<any>) => void) | undefined;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The `backdropColor` props sets the background color of the modal's container.
|
|
50
|
+
* Defaults to `white` if not provided and transparent is `false`. Ignored if `transparent` is `true`.
|
|
51
|
+
*/
|
|
52
|
+
backdropColor?: ColorValue | undefined;
|
|
46
53
|
}
|
|
47
54
|
|
|
48
55
|
export interface ModalPropsIOS {
|
|
@@ -94,6 +101,11 @@ export interface ModalPropsAndroid {
|
|
|
94
101
|
* Determines whether your modal should go under the system statusbar.
|
|
95
102
|
*/
|
|
96
103
|
statusBarTranslucent?: boolean | undefined;
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Determines whether your modal should go under the system navigationbar.
|
|
107
|
+
*/
|
|
108
|
+
navigationBarTranslucent?: boolean | undefined;
|
|
97
109
|
}
|
|
98
110
|
|
|
99
111
|
export type ModalProps = ModalBaseProps &
|
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;
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @format
|
|
8
|
+
* @flow strict-local
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type {ViewProps} from '../Components/View/ViewPropTypes';
|
|
12
|
+
import type {RootTag} from '../ReactNative/RootTag';
|
|
13
|
+
import type {DirectEventHandler} from '../Types/CodegenTypes';
|
|
14
|
+
|
|
15
|
+
import NativeEventEmitter from '../EventEmitter/NativeEventEmitter';
|
|
16
|
+
import {type EventSubscription} from '../vendor/emitter/EventEmitter';
|
|
17
|
+
import ModalInjection from './ModalInjection';
|
|
18
|
+
import NativeModalManager from './NativeModalManager';
|
|
19
|
+
import RCTModalHostView from './RCTModalHostViewNativeComponent';
|
|
20
|
+
import {VirtualizedListContextResetter} from '@react-native/virtualized-lists';
|
|
21
|
+
|
|
22
|
+
const ScrollView = require('../Components/ScrollView/ScrollView');
|
|
23
|
+
const View = require('../Components/View/View');
|
|
24
|
+
const AppContainer = require('../ReactNative/AppContainer');
|
|
25
|
+
const I18nManager = require('../ReactNative/I18nManager');
|
|
26
|
+
const {RootTagContext} = require('../ReactNative/RootTag');
|
|
27
|
+
const StyleSheet = require('../StyleSheet/StyleSheet');
|
|
28
|
+
const Platform = require('../Utilities/Platform');
|
|
29
|
+
const React = require('react');
|
|
30
|
+
|
|
31
|
+
type ModalEventDefinitions = {
|
|
32
|
+
modalDismissed: [{modalID: number}],
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const ModalEventEmitter =
|
|
36
|
+
(Platform.OS === 'ios' || Platform.OS === 'windows') && // [Windows]
|
|
37
|
+
NativeModalManager != null
|
|
38
|
+
? new NativeEventEmitter<ModalEventDefinitions>(
|
|
39
|
+
// T88715063: NativeEventEmitter only used this parameter on iOS. Now it uses it on all platforms, so this code was modified automatically to preserve its behavior
|
|
40
|
+
// If you want to use the native module on other platforms, please remove this condition and test its behavior
|
|
41
|
+
Platform.OS !== 'ios' && Platform.OS !== 'windows' // [Windows]
|
|
42
|
+
? null
|
|
43
|
+
: NativeModalManager,
|
|
44
|
+
)
|
|
45
|
+
: null;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The Modal component is a simple way to present content above an enclosing view.
|
|
49
|
+
*
|
|
50
|
+
* See https://reactnative.dev/docs/modal
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
// In order to route onDismiss callbacks, we need to uniquely identifier each
|
|
54
|
+
// <Modal> on screen. There can be different ones, either nested or as siblings.
|
|
55
|
+
// We cannot pass the onDismiss callback to native as the view will be
|
|
56
|
+
// destroyed before the callback is fired.
|
|
57
|
+
let uniqueModalIdentifier = 0;
|
|
58
|
+
|
|
59
|
+
type OrientationChangeEvent = $ReadOnly<{|
|
|
60
|
+
orientation: 'portrait' | 'landscape',
|
|
61
|
+
|}>;
|
|
62
|
+
|
|
63
|
+
export type Props = $ReadOnly<{|
|
|
64
|
+
...ViewProps,
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* The `animationType` prop controls how the modal animates.
|
|
68
|
+
*
|
|
69
|
+
* See https://reactnative.dev/docs/modal#animationtype
|
|
70
|
+
*/
|
|
71
|
+
animationType?: ?('none' | 'slide' | 'fade'),
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* The `presentationStyle` prop controls how the modal appears.
|
|
75
|
+
*
|
|
76
|
+
* See https://reactnative.dev/docs/modal#presentationstyle
|
|
77
|
+
*/
|
|
78
|
+
presentationStyle?: ?(
|
|
79
|
+
| 'fullScreen'
|
|
80
|
+
| 'pageSheet'
|
|
81
|
+
| 'formSheet'
|
|
82
|
+
| 'overFullScreen'
|
|
83
|
+
),
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* The `transparent` prop determines whether your modal will fill the
|
|
87
|
+
* entire view.
|
|
88
|
+
*
|
|
89
|
+
* See https://reactnative.dev/docs/modal#transparent
|
|
90
|
+
*/
|
|
91
|
+
transparent?: ?boolean,
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* The `statusBarTranslucent` prop determines whether your modal should go under
|
|
95
|
+
* the system statusbar.
|
|
96
|
+
*
|
|
97
|
+
* See https://reactnative.dev/docs/modal.html#statusbartranslucent-android
|
|
98
|
+
*/
|
|
99
|
+
statusBarTranslucent?: ?boolean,
|
|
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
|
+
|
|
109
|
+
/**
|
|
110
|
+
* The `hardwareAccelerated` prop controls whether to force hardware
|
|
111
|
+
* acceleration for the underlying window.
|
|
112
|
+
*
|
|
113
|
+
* This prop works only on Android.
|
|
114
|
+
*
|
|
115
|
+
* See https://reactnative.dev/docs/modal#hardwareaccelerated
|
|
116
|
+
*/
|
|
117
|
+
hardwareAccelerated?: ?boolean,
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* The `visible` prop determines whether your modal is visible.
|
|
121
|
+
*
|
|
122
|
+
* See https://reactnative.dev/docs/modal#visible
|
|
123
|
+
*/
|
|
124
|
+
visible?: ?boolean,
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* The `onRequestClose` callback is called when the user taps the hardware
|
|
128
|
+
* back button on Android or the menu button on Apple TV.
|
|
129
|
+
*
|
|
130
|
+
* This is required on Apple TV and Android.
|
|
131
|
+
*
|
|
132
|
+
* See https://reactnative.dev/docs/modal#onrequestclose
|
|
133
|
+
*/
|
|
134
|
+
onRequestClose?: ?DirectEventHandler<null>,
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* The `onShow` prop allows passing a function that will be called once the
|
|
138
|
+
* modal has been shown.
|
|
139
|
+
*
|
|
140
|
+
* See https://reactnative.dev/docs/modal#onshow
|
|
141
|
+
*/
|
|
142
|
+
onShow?: ?DirectEventHandler<null>,
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* The `onDismiss` prop allows passing a function that will be called once
|
|
146
|
+
* the modal has been dismissed.
|
|
147
|
+
*
|
|
148
|
+
* See https://reactnative.dev/docs/modal#ondismiss
|
|
149
|
+
*/
|
|
150
|
+
onDismiss?: ?() => mixed,
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* The `supportedOrientations` prop allows the modal to be rotated to any of the specified orientations.
|
|
154
|
+
*
|
|
155
|
+
* See https://reactnative.dev/docs/modal#supportedorientations
|
|
156
|
+
*/
|
|
157
|
+
supportedOrientations?: ?$ReadOnlyArray<
|
|
158
|
+
| 'portrait'
|
|
159
|
+
| 'portrait-upside-down'
|
|
160
|
+
| 'landscape'
|
|
161
|
+
| 'landscape-left'
|
|
162
|
+
| 'landscape-right',
|
|
163
|
+
>,
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* The `onOrientationChange` callback is called when the orientation changes while the modal is being displayed.
|
|
167
|
+
*
|
|
168
|
+
* See https://reactnative.dev/docs/modal#onorientationchange
|
|
169
|
+
*/
|
|
170
|
+
onOrientationChange?: ?DirectEventHandler<OrientationChangeEvent>,
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* The `backdropColor` props sets the background color of the modal's container.
|
|
174
|
+
* Defaults to `white` if not provided and transparent is `false`. Ignored if `transparent` is `true`.
|
|
175
|
+
*/
|
|
176
|
+
backdropColor?: ?string,
|
|
177
|
+
|}>;
|
|
178
|
+
|
|
179
|
+
function confirmProps(props: Props) {
|
|
180
|
+
if (__DEV__) {
|
|
181
|
+
if (
|
|
182
|
+
props.presentationStyle &&
|
|
183
|
+
props.presentationStyle !== 'overFullScreen' &&
|
|
184
|
+
props.transparent === true
|
|
185
|
+
) {
|
|
186
|
+
console.warn(
|
|
187
|
+
`Modal with '${props.presentationStyle}' presentation style and 'transparent' value is not supported.`,
|
|
188
|
+
);
|
|
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
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// Create a state to track whether the Modal is rendering or not.
|
|
202
|
+
// This is the only prop that controls whether the modal is rendered or not.
|
|
203
|
+
type State = {
|
|
204
|
+
isRendered: boolean,
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
class Modal extends React.Component<Props, State> {
|
|
208
|
+
static defaultProps: {|hardwareAccelerated: boolean, visible: boolean|} = {
|
|
209
|
+
visible: true,
|
|
210
|
+
hardwareAccelerated: false,
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
static contextType: React.Context<RootTag> = RootTagContext;
|
|
214
|
+
|
|
215
|
+
_identifier: number;
|
|
216
|
+
_eventSubscription: ?EventSubscription;
|
|
217
|
+
|
|
218
|
+
constructor(props: Props) {
|
|
219
|
+
super(props);
|
|
220
|
+
if (__DEV__) {
|
|
221
|
+
confirmProps(props);
|
|
222
|
+
}
|
|
223
|
+
this._identifier = uniqueModalIdentifier++;
|
|
224
|
+
this.state = {
|
|
225
|
+
isRendered: props.visible === true,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
componentDidMount() {
|
|
230
|
+
// 'modalDismissed' is for the old renderer in iOS only
|
|
231
|
+
if (ModalEventEmitter) {
|
|
232
|
+
this._eventSubscription = ModalEventEmitter.addListener(
|
|
233
|
+
'modalDismissed',
|
|
234
|
+
event => {
|
|
235
|
+
this.setState({isRendered: false}, () => {
|
|
236
|
+
if (event.modalID === this._identifier && this.props.onDismiss) {
|
|
237
|
+
this.props.onDismiss();
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
},
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
componentWillUnmount() {
|
|
246
|
+
if (this._eventSubscription) {
|
|
247
|
+
this._eventSubscription.remove();
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
componentDidUpdate(prevProps: Props) {
|
|
252
|
+
if (prevProps.visible === false && this.props.visible === true) {
|
|
253
|
+
this.setState({isRendered: true});
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
if (__DEV__) {
|
|
257
|
+
confirmProps(this.props);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// Helper function to encapsulate platform specific logic to show or not the Modal.
|
|
262
|
+
_shouldShowModal(): boolean {
|
|
263
|
+
if (Platform.OS === 'ios' || Platform.OS === 'windows') {
|
|
264
|
+
// [Windows]
|
|
265
|
+
return this.props.visible === true || this.state.isRendered === true;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return this.props.visible === true;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
render(): React.Node {
|
|
272
|
+
if (!this._shouldShowModal()) {
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
const containerStyles = {
|
|
277
|
+
backgroundColor:
|
|
278
|
+
this.props.transparent === true
|
|
279
|
+
? 'transparent'
|
|
280
|
+
: this.props.backdropColor ?? 'white',
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
let animationType = this.props.animationType || 'none';
|
|
284
|
+
|
|
285
|
+
let presentationStyle = this.props.presentationStyle;
|
|
286
|
+
if (!presentationStyle) {
|
|
287
|
+
presentationStyle = 'fullScreen';
|
|
288
|
+
if (this.props.transparent === true) {
|
|
289
|
+
presentationStyle = 'overFullScreen';
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
const innerChildren = __DEV__ ? (
|
|
294
|
+
<AppContainer rootTag={this.context}>{this.props.children}</AppContainer>
|
|
295
|
+
) : (
|
|
296
|
+
this.props.children
|
|
297
|
+
);
|
|
298
|
+
|
|
299
|
+
const onDismiss = () => {
|
|
300
|
+
// OnDismiss is implemented on iOS/Windows only. // [Windows]
|
|
301
|
+
if (Platform.OS === 'ios' || Platform.OS === 'windows') {
|
|
302
|
+
// [Windows]
|
|
303
|
+
this.setState({isRendered: false}, () => {
|
|
304
|
+
if (this.props.onDismiss) {
|
|
305
|
+
this.props.onDismiss();
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
|
|
311
|
+
return (
|
|
312
|
+
<RCTModalHostView
|
|
313
|
+
animationType={animationType}
|
|
314
|
+
presentationStyle={presentationStyle}
|
|
315
|
+
transparent={this.props.transparent}
|
|
316
|
+
hardwareAccelerated={this.props.hardwareAccelerated}
|
|
317
|
+
onRequestClose={this.props.onRequestClose}
|
|
318
|
+
onShow={this.props.onShow}
|
|
319
|
+
onDismiss={onDismiss}
|
|
320
|
+
visible={this.props.visible}
|
|
321
|
+
statusBarTranslucent={this.props.statusBarTranslucent}
|
|
322
|
+
navigationBarTranslucent={this.props.navigationBarTranslucent}
|
|
323
|
+
identifier={this._identifier}
|
|
324
|
+
style={styles.modal}
|
|
325
|
+
// $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
|
326
|
+
onStartShouldSetResponder={this._shouldSetResponder}
|
|
327
|
+
supportedOrientations={this.props.supportedOrientations}
|
|
328
|
+
onOrientationChange={this.props.onOrientationChange}
|
|
329
|
+
testID={this.props.testID}>
|
|
330
|
+
<VirtualizedListContextResetter>
|
|
331
|
+
<ScrollView.Context.Provider value={null}>
|
|
332
|
+
<View
|
|
333
|
+
style={[styles.container, containerStyles]}
|
|
334
|
+
collapsable={false}>
|
|
335
|
+
{innerChildren}
|
|
336
|
+
</View>
|
|
337
|
+
</ScrollView.Context.Provider>
|
|
338
|
+
</VirtualizedListContextResetter>
|
|
339
|
+
</RCTModalHostView>
|
|
340
|
+
);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
// We don't want any responder events bubbling out of the modal.
|
|
344
|
+
_shouldSetResponder(): boolean {
|
|
345
|
+
return true;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
const side = I18nManager.getConstants().isRTL ? 'right' : 'left';
|
|
350
|
+
const styles = StyleSheet.create({
|
|
351
|
+
modal: {
|
|
352
|
+
position: 'absolute',
|
|
353
|
+
},
|
|
354
|
+
container: {
|
|
355
|
+
/* $FlowFixMe[invalid-computed-prop] (>=0.111.0 site=react_native_fb) This
|
|
356
|
+
* comment suppresses an error found when Flow v0.111 was deployed. To see
|
|
357
|
+
* the error, delete this comment and run Flow. */
|
|
358
|
+
[side]: 0,
|
|
359
|
+
top: 0,
|
|
360
|
+
flex: 1,
|
|
361
|
+
},
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
// $FlowFixMe[prop-missing]
|
|
365
|
+
const ExportedModal: React.AbstractComponent<
|
|
366
|
+
React.ElementConfig<typeof Modal>,
|
|
367
|
+
// $FlowFixMe[incompatible-type-arg]
|
|
368
|
+
> = ModalInjection.unstable_Modal ?? Modal;
|
|
369
|
+
|
|
370
|
+
module.exports = ExportedModal;
|
|
@@ -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,
|