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
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
#include <Fabric/Composition/CompositionViewComponentView.h>
|
|
7
7
|
#include <Fabric/Composition/ContentIslandComponentView.h>
|
|
8
8
|
#include <strsafe.h>
|
|
9
|
+
#include "CompositionContextHelper.h"
|
|
9
10
|
#include "DynamicWriter.h"
|
|
10
11
|
#include "ReactHost/MsoUtils.h"
|
|
11
12
|
|
|
@@ -21,8 +22,10 @@ void ReactCompositionViewComponentBuilder::SetCreateProps(ViewPropsFactory impl)
|
|
|
21
22
|
m_propsFactory = impl;
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
IComponentProps ReactCompositionViewComponentBuilder::CreateProps(
|
|
25
|
-
|
|
25
|
+
IComponentProps ReactCompositionViewComponentBuilder::CreateProps(
|
|
26
|
+
ViewProps props,
|
|
27
|
+
const IComponentProps &cloneFrom) noexcept {
|
|
28
|
+
return m_propsFactory(props, cloneFrom);
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
void ReactCompositionViewComponentBuilder::CreateShadowNode(ShadowNode shadowNode) noexcept {
|
|
@@ -50,34 +53,20 @@ LayoutHandler ReactCompositionViewComponentBuilder::LayoutHandler() const noexce
|
|
|
50
53
|
void ReactCompositionViewComponentBuilder::InitializeComponentView(
|
|
51
54
|
const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
|
|
52
55
|
auto self = winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(view);
|
|
53
|
-
self->MarkAsCustomComponent();
|
|
54
|
-
if (m_customCommandHandler)
|
|
55
|
-
self->CustomCommandHandler(m_customCommandHandler);
|
|
56
|
-
if (m_finalizeUpdateHandler)
|
|
57
|
-
self->FinalizeUpdateHandler(m_finalizeUpdateHandler);
|
|
58
|
-
if (m_updatePropsHandler)
|
|
59
|
-
self->UpdatePropsHandler(m_updatePropsHandler);
|
|
60
|
-
if (m_updateStateHandler)
|
|
61
|
-
self->UpdateStateHandler(m_updateStateHandler);
|
|
62
|
-
if (m_updateEventEmitterHandler)
|
|
63
|
-
self->UpdateEventEmitterHandler(m_updateEventEmitterHandler);
|
|
64
|
-
if (m_mountChildComponentViewHandler)
|
|
65
|
-
self->MountChildComponentViewHandler(m_mountChildComponentViewHandler);
|
|
66
|
-
if (m_unmountChildComponentViewHandler)
|
|
67
|
-
self->UnmountChildComponentViewHandler(m_unmountChildComponentViewHandler);
|
|
68
|
-
if (m_createVisualHandler)
|
|
69
|
-
view.as<winrt::Microsoft::ReactNative::Composition::implementation::ViewComponentView>()->CreateVisualHandler(
|
|
70
|
-
m_createVisualHandler);
|
|
71
56
|
}
|
|
72
57
|
|
|
73
58
|
void ReactCompositionViewComponentBuilder::SetComponentViewInitializer(
|
|
74
59
|
const ComponentViewInitializer &initializer) noexcept {
|
|
75
|
-
m_fnCreateView =
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
60
|
+
m_fnCreateView = [initializer](
|
|
61
|
+
const IReactContext &reactContext,
|
|
62
|
+
int32_t tag,
|
|
63
|
+
const Experimental::ICompositionContext &context,
|
|
64
|
+
ComponentViewFeatures,
|
|
65
|
+
ReactCompositionViewComponentBuilder &builder) {
|
|
66
|
+
auto view = winrt::make<winrt::Microsoft::ReactNative::implementation::ComponentView>(tag, reactContext, &builder);
|
|
67
|
+
initializer(view);
|
|
68
|
+
return view;
|
|
69
|
+
};
|
|
81
70
|
m_descriptorConstructorFactory = []() {
|
|
82
71
|
return &facebook::react::concreteComponentDescriptorConstructor<::Microsoft::ReactNative::AbiComponentDescriptor>;
|
|
83
72
|
};
|
|
@@ -85,14 +74,17 @@ void ReactCompositionViewComponentBuilder::SetComponentViewInitializer(
|
|
|
85
74
|
|
|
86
75
|
void ReactCompositionViewComponentBuilder::SetViewComponentViewInitializer(
|
|
87
76
|
const ViewComponentViewInitializer &initializer) noexcept {
|
|
88
|
-
m_fnCreateView =
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
77
|
+
m_fnCreateView = [initializer](
|
|
78
|
+
const IReactContext &reactContext,
|
|
79
|
+
int32_t tag,
|
|
80
|
+
const Experimental::ICompositionContext &context,
|
|
81
|
+
ComponentViewFeatures features,
|
|
82
|
+
ReactCompositionViewComponentBuilder &builder) {
|
|
83
|
+
auto view = winrt::make<implementation::ViewComponentView>(
|
|
84
|
+
implementation::ViewComponentView::defaultProps(), context, tag, reactContext, features, &builder);
|
|
85
|
+
initializer(view);
|
|
86
|
+
return view;
|
|
87
|
+
};
|
|
96
88
|
m_descriptorConstructorFactory = []() {
|
|
97
89
|
return &facebook::react::concreteComponentDescriptorConstructor<
|
|
98
90
|
::Microsoft::ReactNative::AbiViewComponentDescriptor>;
|
|
@@ -102,10 +94,14 @@ void ReactCompositionViewComponentBuilder::SetViewComponentViewInitializer(
|
|
|
102
94
|
void ReactCompositionViewComponentBuilder::SetContentIslandComponentViewInitializer(
|
|
103
95
|
const ComponentIslandComponentViewInitializer &initializer) noexcept {
|
|
104
96
|
m_fnCreateView = [initializer](
|
|
105
|
-
const IReactContext &reactContext,
|
|
97
|
+
const IReactContext &reactContext,
|
|
98
|
+
int32_t tag,
|
|
99
|
+
const Experimental::ICompositionContext &context,
|
|
100
|
+
ComponentViewFeatures /*features*/,
|
|
101
|
+
ReactCompositionViewComponentBuilder &builder)
|
|
106
102
|
-> winrt::Microsoft::ReactNative::Composition::ContentIslandComponentView {
|
|
107
103
|
auto view = winrt::make<winrt::Microsoft::ReactNative::Composition::implementation::ContentIslandComponentView>(
|
|
108
|
-
context, tag, reactContext);
|
|
104
|
+
context, tag, reactContext, &builder);
|
|
109
105
|
initializer(view);
|
|
110
106
|
return view;
|
|
111
107
|
};
|
|
@@ -156,42 +152,108 @@ void ReactCompositionViewComponentBuilder::SetCustomCommandHandler(HandleCommand
|
|
|
156
152
|
m_customCommandHandler = impl;
|
|
157
153
|
}
|
|
158
154
|
|
|
155
|
+
const HandleCommandDelegate &ReactCompositionViewComponentBuilder::CustomCommandHandler() const noexcept {
|
|
156
|
+
return m_customCommandHandler;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
159
|
void ReactCompositionViewComponentBuilder::SetFinalizeUpdateHandler(UpdateFinalizerDelegate impl) noexcept {
|
|
160
160
|
m_finalizeUpdateHandler = impl;
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
+
const UpdateFinalizerDelegate &ReactCompositionViewComponentBuilder::FinalizeUpdateHandler() const noexcept {
|
|
164
|
+
return m_finalizeUpdateHandler;
|
|
165
|
+
}
|
|
166
|
+
|
|
163
167
|
void ReactCompositionViewComponentBuilder::SetUpdatePropsHandler(UpdatePropsDelegate impl) noexcept {
|
|
164
168
|
m_updatePropsHandler = impl;
|
|
165
169
|
}
|
|
166
170
|
|
|
171
|
+
const winrt::Microsoft::ReactNative::UpdatePropsDelegate &ReactCompositionViewComponentBuilder::UpdatePropsHandler()
|
|
172
|
+
const noexcept {
|
|
173
|
+
return m_updatePropsHandler;
|
|
174
|
+
}
|
|
175
|
+
|
|
167
176
|
void ReactCompositionViewComponentBuilder::SetUpdateStateHandler(UpdateStateDelegate impl) noexcept {
|
|
168
177
|
m_updateStateHandler = impl;
|
|
169
178
|
}
|
|
170
179
|
|
|
180
|
+
const winrt::Microsoft::ReactNative::UpdateStateDelegate &ReactCompositionViewComponentBuilder::UpdateStateHandler()
|
|
181
|
+
const noexcept {
|
|
182
|
+
return m_updateStateHandler;
|
|
183
|
+
}
|
|
184
|
+
|
|
171
185
|
void ReactCompositionViewComponentBuilder::SetUpdateEventEmitterHandler(UpdateEventEmitterDelegate impl) noexcept {
|
|
172
186
|
m_updateEventEmitterHandler = impl;
|
|
173
187
|
}
|
|
174
188
|
|
|
189
|
+
const UpdateEventEmitterDelegate &ReactCompositionViewComponentBuilder::UpdateEventEmitterHandler() const noexcept {
|
|
190
|
+
return m_updateEventEmitterHandler;
|
|
191
|
+
}
|
|
192
|
+
|
|
175
193
|
void ReactCompositionViewComponentBuilder::SetMountChildComponentViewHandler(
|
|
176
194
|
MountChildComponentViewDelegate impl) noexcept {
|
|
177
195
|
m_mountChildComponentViewHandler = impl;
|
|
178
196
|
}
|
|
179
197
|
|
|
198
|
+
const MountChildComponentViewDelegate &ReactCompositionViewComponentBuilder::MountChildComponentViewHandler()
|
|
199
|
+
const noexcept {
|
|
200
|
+
return m_mountChildComponentViewHandler;
|
|
201
|
+
}
|
|
202
|
+
|
|
180
203
|
void ReactCompositionViewComponentBuilder::SetUnmountChildComponentViewHandler(
|
|
181
204
|
UnmountChildComponentViewDelegate impl) noexcept {
|
|
182
205
|
m_unmountChildComponentViewHandler = impl;
|
|
183
206
|
}
|
|
184
207
|
|
|
208
|
+
const UnmountChildComponentViewDelegate &ReactCompositionViewComponentBuilder::UnmountChildComponentViewHandler()
|
|
209
|
+
const noexcept {
|
|
210
|
+
return m_unmountChildComponentViewHandler;
|
|
211
|
+
}
|
|
212
|
+
|
|
185
213
|
void ReactCompositionViewComponentBuilder::SetCreateVisualHandler(CreateVisualDelegate impl) noexcept {
|
|
186
214
|
m_createVisualHandler = impl;
|
|
187
215
|
}
|
|
188
216
|
|
|
217
|
+
const CreateVisualDelegate &ReactCompositionViewComponentBuilder::CreateVisualHandler() const noexcept {
|
|
218
|
+
return m_createVisualHandler;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
void ReactCompositionViewComponentBuilder::SetViewFeatures(ComponentViewFeatures viewFeatures) noexcept {
|
|
222
|
+
m_features = viewFeatures;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
void ReactCompositionViewComponentBuilder::SetVisualToMountChildrenIntoHandler(
|
|
226
|
+
VisualToMountChildrenIntoDelegate impl) noexcept {
|
|
227
|
+
m_visualToMountChildrenIntoHandler = [impl](const winrt::Microsoft::ReactNative::ComponentView &view) {
|
|
228
|
+
return winrt::Microsoft::ReactNative::Composition::Experimental::implementation::MicrosoftCompositionContextHelper::
|
|
229
|
+
CreateVisual(impl(view));
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
void ReactCompositionViewComponentBuilder::SetIVisualToMountChildrenIntoHandler(
|
|
234
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::IVisualToMountChildrenIntoDelegate impl) noexcept {
|
|
235
|
+
m_visualToMountChildrenIntoHandler = impl;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
const winrt::Microsoft::ReactNative::Composition::Experimental::IVisualToMountChildrenIntoDelegate &
|
|
239
|
+
ReactCompositionViewComponentBuilder::VisualToMountChildrenIntoHandler() const noexcept {
|
|
240
|
+
return m_visualToMountChildrenIntoHandler;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
void ReactCompositionViewComponentBuilder::SetUpdateLayoutMetricsHandler(UpdateLayoutMetricsDelegate impl) noexcept {
|
|
244
|
+
m_updateLayoutMetricsHandler = impl;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
const UpdateLayoutMetricsDelegate &ReactCompositionViewComponentBuilder::UpdateLayoutMetricsHandler() const noexcept {
|
|
248
|
+
return m_updateLayoutMetricsHandler;
|
|
249
|
+
}
|
|
250
|
+
|
|
189
251
|
winrt::Microsoft::ReactNative::ComponentView ReactCompositionViewComponentBuilder::CreateView(
|
|
190
252
|
const IReactContext &reactContext,
|
|
191
253
|
int32_t tag,
|
|
192
254
|
const Experimental::ICompositionContext &context) noexcept {
|
|
193
255
|
assert(m_fnCreateView);
|
|
194
|
-
auto view = m_fnCreateView(reactContext, tag, context);
|
|
256
|
+
auto view = m_fnCreateView(reactContext, tag, context, m_features, *this);
|
|
195
257
|
InitializeComponentView(view);
|
|
196
258
|
return view;
|
|
197
259
|
}
|
|
@@ -42,11 +42,15 @@ struct ReactCompositionViewComponentBuilder : winrt::implements<
|
|
|
42
42
|
public: // Composition::IReactCompositionViewComponentBuilder
|
|
43
43
|
void SetViewComponentViewInitializer(const ViewComponentViewInitializer &initializer) noexcept;
|
|
44
44
|
void SetContentIslandComponentViewInitializer(const ComponentIslandComponentViewInitializer &initializer) noexcept;
|
|
45
|
-
|
|
46
45
|
void SetCreateVisualHandler(CreateVisualDelegate impl) noexcept;
|
|
46
|
+
void SetViewFeatures(ComponentViewFeatures viewFeatures) noexcept;
|
|
47
|
+
void SetVisualToMountChildrenIntoHandler(VisualToMountChildrenIntoDelegate impl) noexcept;
|
|
48
|
+
void SetIVisualToMountChildrenIntoHandler(
|
|
49
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::IVisualToMountChildrenIntoDelegate impl) noexcept;
|
|
50
|
+
void SetUpdateLayoutMetricsHandler(UpdateLayoutMetricsDelegate impl) noexcept;
|
|
47
51
|
|
|
48
52
|
public:
|
|
49
|
-
IComponentProps CreateProps(ViewProps props) noexcept;
|
|
53
|
+
IComponentProps CreateProps(ViewProps props, const IComponentProps &cloneFrom) noexcept;
|
|
50
54
|
void CreateShadowNode(ShadowNode shadowNode) noexcept;
|
|
51
55
|
void CloneShadowNode(ShadowNode shadowNode, ShadowNode sourceShadowNode) noexcept;
|
|
52
56
|
winrt::Windows::Foundation::IInspectable InitialStateData(
|
|
@@ -60,6 +64,18 @@ struct ReactCompositionViewComponentBuilder : winrt::implements<
|
|
|
60
64
|
facebook::react::Tag tag,
|
|
61
65
|
const Experimental::ICompositionContext &context) noexcept;
|
|
62
66
|
|
|
67
|
+
const UpdateFinalizerDelegate &FinalizeUpdateHandler() const noexcept;
|
|
68
|
+
const HandleCommandDelegate &CustomCommandHandler() const noexcept;
|
|
69
|
+
const winrt::Microsoft::ReactNative::UpdatePropsDelegate &UpdatePropsHandler() const noexcept;
|
|
70
|
+
const winrt::Microsoft::ReactNative::UpdateStateDelegate &UpdateStateHandler() const noexcept;
|
|
71
|
+
const UpdateEventEmitterDelegate &UpdateEventEmitterHandler() const noexcept;
|
|
72
|
+
const MountChildComponentViewDelegate &MountChildComponentViewHandler() const noexcept;
|
|
73
|
+
const UnmountChildComponentViewDelegate &UnmountChildComponentViewHandler() const noexcept;
|
|
74
|
+
const UpdateLayoutMetricsDelegate &UpdateLayoutMetricsHandler() const noexcept;
|
|
75
|
+
const CreateVisualDelegate &CreateVisualHandler() const noexcept;
|
|
76
|
+
const winrt::Microsoft::ReactNative::Composition::Experimental::IVisualToMountChildrenIntoDelegate &
|
|
77
|
+
VisualToMountChildrenIntoHandler() const noexcept;
|
|
78
|
+
|
|
63
79
|
private:
|
|
64
80
|
void InitializeComponentView(const winrt::Microsoft::ReactNative::ComponentView &view) noexcept;
|
|
65
81
|
|
|
@@ -69,10 +85,13 @@ struct ReactCompositionViewComponentBuilder : winrt::implements<
|
|
|
69
85
|
InitialStateDataFactory m_initialStateDataFactory;
|
|
70
86
|
winrt::Microsoft::ReactNative::MeasureContentHandler m_measureContent;
|
|
71
87
|
winrt::Microsoft::ReactNative::LayoutHandler m_layoutHandler;
|
|
88
|
+
ComponentViewFeatures m_features{ComponentViewFeatures::Default};
|
|
72
89
|
std::function<winrt::Microsoft::ReactNative::ComponentView(
|
|
73
90
|
const IReactContext &reactContext,
|
|
74
91
|
int32_t tag,
|
|
75
|
-
const Experimental::ICompositionContext &context
|
|
92
|
+
const Experimental::ICompositionContext &context,
|
|
93
|
+
ComponentViewFeatures features,
|
|
94
|
+
ReactCompositionViewComponentBuilder &builder)>
|
|
76
95
|
m_fnCreateView;
|
|
77
96
|
std::function<facebook::react::ComponentDescriptorConstructor *()> m_descriptorConstructorFactory;
|
|
78
97
|
winrt::Microsoft::ReactNative::HandleCommandDelegate m_customCommandHandler;
|
|
@@ -84,6 +103,9 @@ struct ReactCompositionViewComponentBuilder : winrt::implements<
|
|
|
84
103
|
winrt::Microsoft::ReactNative::UnmountChildComponentViewDelegate m_unmountChildComponentViewHandler;
|
|
85
104
|
|
|
86
105
|
winrt::Microsoft::ReactNative::Composition::CreateVisualDelegate m_createVisualHandler;
|
|
106
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::IVisualToMountChildrenIntoDelegate
|
|
107
|
+
m_visualToMountChildrenIntoHandler;
|
|
108
|
+
UpdateLayoutMetricsDelegate m_updateLayoutMetricsHandler;
|
|
87
109
|
};
|
|
88
110
|
|
|
89
111
|
} // namespace winrt::Microsoft::ReactNative::Composition
|
|
@@ -127,6 +127,20 @@ ReactNativeIsland::ReactNativeIsland(const winrt::Microsoft::UI::Composition::Co
|
|
|
127
127
|
InitTextScaleMultiplier();
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
+
// Constructor to initialize ReactNativeIsland with context and componentView
|
|
131
|
+
ReactNativeIsland::ReactNativeIsland(
|
|
132
|
+
const winrt::Microsoft::UI::Composition::Compositor &compositor,
|
|
133
|
+
winrt::Microsoft::ReactNative::IReactContext context,
|
|
134
|
+
winrt::Microsoft::ReactNative::ComponentView componentView) noexcept
|
|
135
|
+
: m_compositor(compositor),
|
|
136
|
+
m_context(context),
|
|
137
|
+
m_layoutConstraints({{0, 0}, {0, 0}, winrt::Microsoft::ReactNative::LayoutDirection::Undefined}),
|
|
138
|
+
m_isFragment(true) {
|
|
139
|
+
m_rootTag = componentView.Tag();
|
|
140
|
+
InitTextScaleMultiplier();
|
|
141
|
+
AddFragmentCompositionEventHandler(context, componentView);
|
|
142
|
+
}
|
|
143
|
+
|
|
130
144
|
ReactNativeIsland::ReactNativeIsland() noexcept : ReactNativeIsland(nullptr) {}
|
|
131
145
|
|
|
132
146
|
ReactNativeIsland::~ReactNativeIsland() noexcept {
|
|
@@ -152,6 +166,7 @@ ReactNative::IReactViewHost ReactNativeIsland::ReactViewHost() noexcept {
|
|
|
152
166
|
}
|
|
153
167
|
|
|
154
168
|
void ReactNativeIsland::ReactViewHost(winrt::Microsoft::ReactNative::IReactViewHost const &value) noexcept {
|
|
169
|
+
assert(!m_isFragment); // make sure this isn't a FragmentIsalnd
|
|
155
170
|
if (m_reactViewHost == value) {
|
|
156
171
|
return;
|
|
157
172
|
}
|
|
@@ -345,6 +360,29 @@ winrt::IInspectable ReactNativeIsland::GetUiaProvider() noexcept {
|
|
|
345
360
|
return m_uiaProvider;
|
|
346
361
|
}
|
|
347
362
|
|
|
363
|
+
winrt::Windows::Foundation::Point ReactNativeIsland::ConvertScreenToLocal(
|
|
364
|
+
winrt::Windows::Foundation::Point pt) noexcept {
|
|
365
|
+
if (m_island) {
|
|
366
|
+
auto pp = m_island.CoordinateConverter().ConvertScreenToLocal(
|
|
367
|
+
winrt::Windows::Graphics::PointInt32{static_cast<int32_t>(pt.X), static_cast<int32_t>(pt.Y)});
|
|
368
|
+
return {static_cast<float>(pp.X), static_cast<float>(pp.Y)};
|
|
369
|
+
}
|
|
370
|
+
POINT p{static_cast<LONG>(pt.X), static_cast<LONG>(pt.Y)};
|
|
371
|
+
ScreenToClient(m_hwnd, &p);
|
|
372
|
+
return {static_cast<float>(p.x) / m_scaleFactor, static_cast<float>(p.y) / m_scaleFactor};
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
winrt::Windows::Foundation::Point ReactNativeIsland::ConvertLocalToScreen(
|
|
376
|
+
winrt::Windows::Foundation::Point pt) noexcept {
|
|
377
|
+
if (m_island) {
|
|
378
|
+
auto pp = m_island.CoordinateConverter().ConvertLocalToScreen(pt);
|
|
379
|
+
return {static_cast<float>(pp.X), static_cast<float>(pp.Y)};
|
|
380
|
+
}
|
|
381
|
+
POINT p{static_cast<LONG>(pt.X * m_scaleFactor), static_cast<LONG>(pt.Y * m_scaleFactor)};
|
|
382
|
+
ClientToScreen(m_hwnd, &p);
|
|
383
|
+
return {static_cast<float>(p.x), static_cast<float>(p.y)};
|
|
384
|
+
}
|
|
385
|
+
|
|
348
386
|
void ReactNativeIsland::SetWindow(uint64_t hwnd) noexcept {
|
|
349
387
|
m_hwnd = reinterpret_cast<HWND>(hwnd);
|
|
350
388
|
}
|
|
@@ -404,7 +442,7 @@ void ReactNativeIsland::InitRootView(
|
|
|
404
442
|
|
|
405
443
|
m_context = winrt::Microsoft::ReactNative::ReactContext(std::move(context));
|
|
406
444
|
m_reactViewOptions = std::move(viewOptions);
|
|
407
|
-
m_CompositionEventHandler = std::make_shared<::Microsoft::ReactNative::CompositionEventHandler>(m_context, *this);
|
|
445
|
+
m_CompositionEventHandler = std::make_shared<::Microsoft::ReactNative::CompositionEventHandler>(m_context, *this, -1);
|
|
408
446
|
m_CompositionEventHandler->Initialize();
|
|
409
447
|
|
|
410
448
|
UpdateRootViewInternal();
|
|
@@ -412,6 +450,27 @@ void ReactNativeIsland::InitRootView(
|
|
|
412
450
|
m_isInitialized = true;
|
|
413
451
|
}
|
|
414
452
|
|
|
453
|
+
void ReactNativeIsland::AddFragmentCompositionEventHandler(
|
|
454
|
+
winrt::Microsoft::ReactNative::IReactContext context,
|
|
455
|
+
winrt::Microsoft::ReactNative::ComponentView componentView) noexcept {
|
|
456
|
+
m_uiDispatcher = context.Properties()
|
|
457
|
+
.Get(winrt::Microsoft::ReactNative::ReactDispatcherHelper::UIDispatcherProperty())
|
|
458
|
+
.try_as<IReactDispatcher>();
|
|
459
|
+
VerifyElseCrash(m_uiDispatcher.HasThreadAccess());
|
|
460
|
+
VerifyElseCrash(m_rootTag != -1);
|
|
461
|
+
auto uiManager = ::Microsoft::ReactNative::FabricUIManager::FromProperties(
|
|
462
|
+
winrt::Microsoft::ReactNative::ReactPropertyBag(context.Properties()));
|
|
463
|
+
|
|
464
|
+
if (!m_CompositionEventHandler) {
|
|
465
|
+
// Create CompositionEventHandler if not already created
|
|
466
|
+
m_context = winrt::Microsoft::ReactNative::ReactContext(context);
|
|
467
|
+
m_CompositionEventHandler =
|
|
468
|
+
std::make_shared<::Microsoft::ReactNative::CompositionEventHandler>(m_context, *this, componentView.Tag());
|
|
469
|
+
m_CompositionEventHandler->Initialize();
|
|
470
|
+
m_isInitialized = true;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
|
|
415
474
|
void ReactNativeIsland::UpdateRootView() noexcept {
|
|
416
475
|
VerifyElseCrash(m_uiDispatcher.HasThreadAccess());
|
|
417
476
|
VerifyElseCrash(m_isInitialized);
|
|
@@ -518,7 +577,7 @@ facebook::react::AttributedStringBox CreateLoadingAttributedString() noexcept {
|
|
|
518
577
|
auto fragment = facebook::react::AttributedString::Fragment{};
|
|
519
578
|
fragment.string = "Loading";
|
|
520
579
|
fragment.textAttributes.fontSize = loadingBarFontSize;
|
|
521
|
-
attributedString.appendFragment(fragment);
|
|
580
|
+
attributedString.appendFragment(std::move(fragment));
|
|
522
581
|
return facebook::react::AttributedStringBox{attributedString};
|
|
523
582
|
}
|
|
524
583
|
|
|
@@ -834,7 +893,9 @@ void ReactNativeIsland::OnMounted() noexcept {
|
|
|
834
893
|
return;
|
|
835
894
|
m_mounted = true;
|
|
836
895
|
if (auto componentView = GetComponentView()) {
|
|
837
|
-
componentView->
|
|
896
|
+
if (!componentView->isMounted()) {
|
|
897
|
+
componentView->onMounted();
|
|
898
|
+
}
|
|
838
899
|
}
|
|
839
900
|
}
|
|
840
901
|
|
|
@@ -48,6 +48,10 @@ struct ReactNativeIsland
|
|
|
48
48
|
~ReactNativeIsland() noexcept;
|
|
49
49
|
|
|
50
50
|
ReactNativeIsland(const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept;
|
|
51
|
+
ReactNativeIsland(
|
|
52
|
+
const winrt::Microsoft::UI::Composition::Compositor &compositor,
|
|
53
|
+
winrt::Microsoft::ReactNative::IReactContext context,
|
|
54
|
+
winrt::Microsoft::ReactNative::ComponentView componentView) noexcept;
|
|
51
55
|
winrt::Microsoft::UI::Content::ContentIsland Island();
|
|
52
56
|
|
|
53
57
|
// property ReactViewHost
|
|
@@ -110,6 +114,9 @@ struct ReactNativeIsland
|
|
|
110
114
|
void SetWindow(uint64_t hwnd) noexcept;
|
|
111
115
|
int64_t SendMessage(uint32_t msg, uint64_t wParam, int64_t lParam) noexcept;
|
|
112
116
|
|
|
117
|
+
winrt::Windows::Foundation::Point ConvertScreenToLocal(winrt::Windows::Foundation::Point pt) noexcept;
|
|
118
|
+
winrt::Windows::Foundation::Point ConvertLocalToScreen(winrt::Windows::Foundation::Point pt) noexcept;
|
|
119
|
+
|
|
113
120
|
bool CapturePointer(
|
|
114
121
|
const winrt::Microsoft::ReactNative::Composition::Input::Pointer &pointer,
|
|
115
122
|
facebook::react::Tag tag) noexcept;
|
|
@@ -117,6 +124,10 @@ struct ReactNativeIsland
|
|
|
117
124
|
const winrt::Microsoft::ReactNative::Composition::Input::Pointer &pointer,
|
|
118
125
|
facebook::react::Tag tag) noexcept;
|
|
119
126
|
|
|
127
|
+
void AddFragmentCompositionEventHandler(
|
|
128
|
+
winrt::Microsoft::ReactNative::IReactContext context,
|
|
129
|
+
winrt::Microsoft::ReactNative::ComponentView componentView) noexcept;
|
|
130
|
+
|
|
120
131
|
public: // IReactViewInstance UI-thread implementation
|
|
121
132
|
void InitRootView(
|
|
122
133
|
winrt::Microsoft::ReactNative::IReactContext &&context,
|
|
@@ -136,6 +147,7 @@ struct ReactNativeIsland
|
|
|
136
147
|
#endif
|
|
137
148
|
|
|
138
149
|
HWND m_hwnd{0};
|
|
150
|
+
bool m_isFragment{false};
|
|
139
151
|
bool m_isInitialized{false};
|
|
140
152
|
bool m_isJSViewAttached{false};
|
|
141
153
|
bool m_hasRenderedVisual{false};
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
#include "RootComponentView.h"
|
|
8
8
|
|
|
9
9
|
#include <Fabric/FabricUIManagerModule.h>
|
|
10
|
+
#include <winrt/Microsoft.UI.Input.h>
|
|
10
11
|
#include "CompositionRootAutomationProvider.h"
|
|
11
12
|
#include "ReactNativeIsland.h"
|
|
12
13
|
#include "Theme.h"
|
|
@@ -24,7 +25,7 @@ RootComponentView::RootComponentView(
|
|
|
24
25
|
reactContext,
|
|
25
26
|
ComponentViewFeatures::Default &
|
|
26
27
|
~(ComponentViewFeatures::Background | ComponentViewFeatures::ShadowProps |
|
|
27
|
-
ComponentViewFeatures::NativeBorder)) {}
|
|
28
|
+
ComponentViewFeatures::NativeBorder | ComponentViewFeatures::FocusVisual)) {}
|
|
28
29
|
|
|
29
30
|
RootComponentView::~RootComponentView() {
|
|
30
31
|
if (auto rootView = m_wkRootView.get()) {
|
|
@@ -106,7 +107,10 @@ bool RootComponentView::TrySetFocusedComponent(
|
|
|
106
107
|
auto target = view;
|
|
107
108
|
auto selfView = winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(target);
|
|
108
109
|
if (selfView && !selfView->focusable()) {
|
|
109
|
-
target =
|
|
110
|
+
target = (direction == winrt::Microsoft::ReactNative::FocusNavigationDirection::Last ||
|
|
111
|
+
direction == winrt::Microsoft::ReactNative::FocusNavigationDirection::Previous)
|
|
112
|
+
? FocusManager::FindLastFocusableElement(target)
|
|
113
|
+
: FocusManager::FindFirstFocusableElement(target);
|
|
110
114
|
if (!target)
|
|
111
115
|
return false;
|
|
112
116
|
selfView = winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(target);
|
|
@@ -147,6 +151,9 @@ bool RootComponentView::TryMoveFocus(bool next) noexcept {
|
|
|
147
151
|
[currentlyFocused = m_focusedComponent, next](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
|
|
148
152
|
if (view == currentlyFocused)
|
|
149
153
|
return false;
|
|
154
|
+
auto selfView = winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(view);
|
|
155
|
+
if (!selfView->focusable())
|
|
156
|
+
return false;
|
|
150
157
|
|
|
151
158
|
return winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(view)
|
|
152
159
|
->rootComponentView()
|
|
@@ -156,7 +163,28 @@ bool RootComponentView::TryMoveFocus(bool next) noexcept {
|
|
|
156
163
|
: winrt::Microsoft::ReactNative::FocusNavigationDirection::Previous);
|
|
157
164
|
};
|
|
158
165
|
|
|
159
|
-
|
|
166
|
+
if (winrt::Microsoft::ReactNative::implementation::walkTree(m_focusedComponent, next, fn)) {
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// We reached the end of the focus loop. Notify the island in case the host wants to move focus somewhere outside the
|
|
171
|
+
// island.
|
|
172
|
+
auto island = parentContentIsland();
|
|
173
|
+
if (island) {
|
|
174
|
+
auto focusController = winrt::Microsoft::UI::Input::InputFocusController::GetForIsland(island);
|
|
175
|
+
auto request = winrt::Microsoft::UI::Input::FocusNavigationRequest::Create(
|
|
176
|
+
next ? winrt::Microsoft::UI::Input::FocusNavigationReason::Last
|
|
177
|
+
: winrt::Microsoft::UI::Input::FocusNavigationReason::First);
|
|
178
|
+
auto result = focusController.DepartFocus(request);
|
|
179
|
+
if (result == winrt::Microsoft::UI::Input::FocusNavigationResult::Moved) {
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Wrap focus around if nothing outside the island takes focus
|
|
185
|
+
return NavigateFocus(winrt::Microsoft::ReactNative::FocusNavigationRequest(
|
|
186
|
+
next ? winrt::Microsoft::ReactNative::FocusNavigationReason::First
|
|
187
|
+
: winrt::Microsoft::ReactNative::FocusNavigationReason::Last));
|
|
160
188
|
}
|
|
161
189
|
|
|
162
190
|
HRESULT RootComponentView::GetFragmentRoot(IRawElementProviderFragmentRoot **pRetVal) noexcept {
|
|
@@ -220,6 +248,26 @@ float RootComponentView::FontSizeMultiplier() const noexcept {
|
|
|
220
248
|
return 1.0f;
|
|
221
249
|
}
|
|
222
250
|
|
|
251
|
+
winrt::Windows::Foundation::Point RootComponentView::ConvertScreenToLocal(
|
|
252
|
+
winrt::Windows::Foundation::Point pt) noexcept {
|
|
253
|
+
if (auto rootView = m_wkRootView.get()) {
|
|
254
|
+
return winrt::get_self<winrt::Microsoft::ReactNative::implementation::ReactNativeIsland>(rootView)
|
|
255
|
+
->ConvertScreenToLocal(pt);
|
|
256
|
+
}
|
|
257
|
+
assert(false);
|
|
258
|
+
return {};
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
winrt::Windows::Foundation::Point RootComponentView::ConvertLocalToScreen(
|
|
262
|
+
winrt::Windows::Foundation::Point pt) noexcept {
|
|
263
|
+
if (auto rootView = m_wkRootView.get()) {
|
|
264
|
+
return winrt::get_self<winrt::Microsoft::ReactNative::implementation::ReactNativeIsland>(rootView)
|
|
265
|
+
->ConvertLocalToScreen(pt);
|
|
266
|
+
}
|
|
267
|
+
assert(false);
|
|
268
|
+
return {};
|
|
269
|
+
}
|
|
270
|
+
|
|
223
271
|
winrt::Microsoft::UI::Content::ContentIsland RootComponentView::parentContentIsland() noexcept {
|
|
224
272
|
if (auto rootView = m_wkRootView.get()) {
|
|
225
273
|
return winrt::get_self<winrt::Microsoft::ReactNative::implementation::ReactNativeIsland>(rootView)->Island();
|
|
@@ -38,6 +38,9 @@ struct RootComponentView : RootComponentViewT<RootComponentView, ViewComponentVi
|
|
|
38
38
|
|
|
39
39
|
RootComponentView *rootComponentView() const noexcept override;
|
|
40
40
|
|
|
41
|
+
winrt::Windows::Foundation::Point ConvertScreenToLocal(winrt::Windows::Foundation::Point pt) noexcept;
|
|
42
|
+
winrt::Windows::Foundation::Point ConvertLocalToScreen(winrt::Windows::Foundation::Point pt) noexcept;
|
|
43
|
+
|
|
41
44
|
winrt::Microsoft::UI::Content::ContentIsland parentContentIsland() noexcept;
|
|
42
45
|
|
|
43
46
|
// Index that visuals can be inserted into OuterVisual for debugging UI
|
|
@@ -1112,9 +1112,9 @@ void ScrollViewComponentView::StartBringIntoView(
|
|
|
1112
1112
|
options.TargetRect->origin.y > m_scrollVisual.ScrollPosition().y) {
|
|
1113
1113
|
needsScroll = true;
|
|
1114
1114
|
if (options.TargetRect->size.height > viewerHeight) {
|
|
1115
|
-
scrollToVertical = options.TargetRect->origin.y + options.VerticalOffset;
|
|
1115
|
+
scrollToVertical = options.TargetRect->origin.y + options.VerticalOffset * m_layoutMetrics.pointScaleFactor;
|
|
1116
1116
|
} else {
|
|
1117
|
-
scrollToVertical = (targetBottom - viewerHeight) + options.VerticalOffset;
|
|
1117
|
+
scrollToVertical = (targetBottom - viewerHeight) + options.VerticalOffset * m_layoutMetrics.pointScaleFactor;
|
|
1118
1118
|
}
|
|
1119
1119
|
// Scroll Up
|
|
1120
1120
|
} else if (
|
|
@@ -1122,9 +1122,9 @@ void ScrollViewComponentView::StartBringIntoView(
|
|
|
1122
1122
|
targetBottom < (m_scrollVisual.ScrollPosition().y + viewerHeight)) {
|
|
1123
1123
|
needsScroll = true;
|
|
1124
1124
|
if (options.TargetRect->size.height > viewerHeight) {
|
|
1125
|
-
scrollToVertical = targetBottom - viewerHeight - options.VerticalOffset;
|
|
1125
|
+
scrollToVertical = targetBottom - viewerHeight - options.VerticalOffset * m_layoutMetrics.pointScaleFactor;
|
|
1126
1126
|
} else {
|
|
1127
|
-
scrollToVertical = options.TargetRect->origin.y - options.VerticalOffset;
|
|
1127
|
+
scrollToVertical = options.TargetRect->origin.y - options.VerticalOffset * m_layoutMetrics.pointScaleFactor;
|
|
1128
1128
|
}
|
|
1129
1129
|
}
|
|
1130
1130
|
} else {
|
|
@@ -1138,9 +1138,9 @@ void ScrollViewComponentView::StartBringIntoView(
|
|
|
1138
1138
|
options.TargetRect->origin.x > m_scrollVisual.ScrollPosition().x) {
|
|
1139
1139
|
needsScroll = true;
|
|
1140
1140
|
if (options.TargetRect->size.width > viewerWidth) {
|
|
1141
|
-
scrollToHorizontal = options.TargetRect->origin.x + options.HorizontalOffset;
|
|
1141
|
+
scrollToHorizontal = options.TargetRect->origin.x + options.HorizontalOffset * m_layoutMetrics.pointScaleFactor;
|
|
1142
1142
|
} else {
|
|
1143
|
-
scrollToHorizontal = (targetRight - viewerWidth) + options.HorizontalOffset;
|
|
1143
|
+
scrollToHorizontal = (targetRight - viewerWidth) + options.HorizontalOffset * m_layoutMetrics.pointScaleFactor;
|
|
1144
1144
|
}
|
|
1145
1145
|
// Scroll Left
|
|
1146
1146
|
} else if (
|
|
@@ -1148,9 +1148,9 @@ void ScrollViewComponentView::StartBringIntoView(
|
|
|
1148
1148
|
targetRight < (m_scrollVisual.ScrollPosition().x + viewerWidth)) {
|
|
1149
1149
|
needsScroll = true;
|
|
1150
1150
|
if (options.TargetRect->size.width > viewerWidth) {
|
|
1151
|
-
scrollToHorizontal = targetRight - viewerWidth - options.HorizontalOffset;
|
|
1151
|
+
scrollToHorizontal = targetRight - viewerWidth - options.HorizontalOffset * m_layoutMetrics.pointScaleFactor;
|
|
1152
1152
|
} else {
|
|
1153
|
-
scrollToHorizontal = options.TargetRect->origin.x - options.HorizontalOffset;
|
|
1153
|
+
scrollToHorizontal = options.TargetRect->origin.x - options.HorizontalOffset * m_layoutMetrics.pointScaleFactor;
|
|
1154
1154
|
}
|
|
1155
1155
|
}
|
|
1156
1156
|
} else {
|
|
@@ -1262,4 +1262,14 @@ std::string ScrollViewComponentView::DefaultControlType() const noexcept {
|
|
|
1262
1262
|
return "scrollbar";
|
|
1263
1263
|
}
|
|
1264
1264
|
|
|
1265
|
+
winrt::com_ptr<ComponentView> ScrollViewComponentView::focusVisualRoot(
|
|
1266
|
+
const facebook::react::Rect &focusRect) noexcept {
|
|
1267
|
+
return get_strong();
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::IVisual
|
|
1271
|
+
ScrollViewComponentView::visualToHostFocus() noexcept {
|
|
1272
|
+
return m_scrollVisual;
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1265
1275
|
} // namespace winrt::Microsoft::ReactNative::Composition::implementation
|
|
@@ -110,6 +110,9 @@ struct ScrollInteractionTrackerOwner : public winrt::implements<
|
|
|
110
110
|
bool lineRight(bool animate) noexcept;
|
|
111
111
|
winrt::Microsoft::ReactNative::Composition::Experimental::IVisual createVisual() noexcept override;
|
|
112
112
|
|
|
113
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::IVisual visualToHostFocus() noexcept override;
|
|
114
|
+
winrt::com_ptr<ComponentView> focusVisualRoot(const facebook::react::Rect &focusRect) noexcept override;
|
|
115
|
+
|
|
113
116
|
private:
|
|
114
117
|
void updateContentVisualSize() noexcept;
|
|
115
118
|
bool scrollToEnd(bool animate) noexcept;
|
package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h
CHANGED
|
@@ -97,26 +97,24 @@ virtual State::Shared createInitialState(
|
|
|
97
97
|
!textInputProps.hasPaddingHorizontal) {
|
|
98
98
|
changedPadding = true;
|
|
99
99
|
style.setPadding(
|
|
100
|
-
|
|
100
|
+
yoga::Edge::Start, yoga::StyleLength::points(theme.start));
|
|
101
101
|
}
|
|
102
102
|
if (!textInputProps.hasPadding && !textInputProps.hasPaddingEnd &&
|
|
103
103
|
!textInputProps.hasPaddingRight &&
|
|
104
104
|
!textInputProps.hasPaddingHorizontal) {
|
|
105
105
|
changedPadding = true;
|
|
106
|
-
style.setPadding(
|
|
107
|
-
YGEdgeEnd, yoga::CompactValue::of<YGUnitPoint>(theme.end));
|
|
106
|
+
style.setPadding(yoga::Edge::End, yoga::StyleLength::points(theme.end));
|
|
108
107
|
}
|
|
109
108
|
if (!textInputProps.hasPadding && !textInputProps.hasPaddingTop &&
|
|
110
109
|
!textInputProps.hasPaddingVertical) {
|
|
111
110
|
changedPadding = true;
|
|
112
|
-
style.setPadding(
|
|
113
|
-
YGEdgeTop, yoga::CompactValue::of<YGUnitPoint>(theme.top));
|
|
111
|
+
style.setPadding(yoga::Edge::Top, yoga::StyleLength::points(theme.top));
|
|
114
112
|
}
|
|
115
113
|
if (!textInputProps.hasPadding && !textInputProps.hasPaddingBottom &&
|
|
116
114
|
!textInputProps.hasPaddingVertical) {
|
|
117
115
|
changedPadding = true;
|
|
118
116
|
style.setPadding(
|
|
119
|
-
|
|
117
|
+
yoga::Edge::Bottom, yoga::StyleLength::points(theme.bottom));
|
|
120
118
|
}
|
|
121
119
|
|
|
122
120
|
// If the TextInput initially does not have paddingLeft or paddingStart, a
|
|
@@ -127,12 +125,12 @@ virtual State::Shared createInitialState(
|
|
|
127
125
|
if ((textInputProps.hasPadding || textInputProps.hasPaddingLeft ||
|
|
128
126
|
textInputProps.hasPaddingHorizontal) &&
|
|
129
127
|
!textInputProps.hasPaddingStart) {
|
|
130
|
-
style.setPadding(
|
|
128
|
+
style.setPadding(yoga::Edge::Start, yoga::StyleLength::undefined());
|
|
131
129
|
}
|
|
132
130
|
if ((textInputProps.hasPadding || textInputProps.hasPaddingRight ||
|
|
133
131
|
textInputProps.hasPaddingHorizontal) &&
|
|
134
132
|
!textInputProps.hasPaddingEnd) {
|
|
135
|
-
style.setPadding(
|
|
133
|
+
style.setPadding(yoga::Edge::End, yoga::StyleLength::undefined());
|
|
136
134
|
}
|
|
137
135
|
|
|
138
136
|
// Note that this is expensive: on every adopt, we need to set the Yoga
|