react-native-windows 0.72.13 → 0.73.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 +16 -5
- package/Chakra/ChakraHelpers.cpp +1 -1
- package/Chakra/ChakraUtils.cpp +1 -1
- package/Chakra/ChakraValue.h +1 -1
- package/Common/packages.lock.json +13 -0
- package/Directory.Build.props +6 -2
- package/Folly/TEMP_UntilFollyUpdate/dynamic-inl.h +1 -10
- package/Folly/TEMP_UntilFollyUpdate/hash/Hash.h +1016 -0
- package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.h +1 -1
- package/Folly/cgmanifest.json +1 -1
- package/Folly/packages.lock.json +23 -0
- package/Libraries/Animated/Animated.js +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +1 -1
- package/Libraries/Animated/NativeAnimatedHelper.js +14 -10
- package/Libraries/Animated/NativeAnimatedModule.js +6 -2
- package/Libraries/Animated/NativeAnimatedTurboModule.js +7 -4
- package/Libraries/Animated/animations/Animation.js +57 -3
- package/Libraries/Animated/animations/DecayAnimation.js +9 -0
- package/Libraries/Animated/animations/SpringAnimation.js +8 -0
- package/Libraries/Animated/animations/TimingAnimation.js +8 -0
- package/Libraries/Animated/components/AnimatedFlatList.js +2 -1
- package/Libraries/Animated/components/AnimatedScrollView.js +2 -0
- package/Libraries/Animated/components/AnimatedSectionList.js +2 -1
- package/Libraries/Animated/createAnimatedComponent.js +1 -0
- package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
- package/Libraries/Animated/nodes/AnimatedObject.js +146 -0
- package/Libraries/Animated/nodes/AnimatedProps.js +19 -7
- package/Libraries/Animated/nodes/AnimatedStyle.js +29 -55
- package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -17
- package/Libraries/Animated/shouldUseTurboAnimatedModule.js +17 -0
- package/Libraries/Animated/useAnimatedProps.js +9 -10
- package/Libraries/AppState/AppState.d.ts +1 -1
- package/Libraries/AppState/NativeAppState.js +8 -4
- package/Libraries/AppTheme/AppTheme.js +5 -5
- package/Libraries/BatchedBridge/MessageQueue.js +45 -36
- package/Libraries/Blob/Blob.js +6 -2
- package/Libraries/Blob/BlobManager.js +9 -10
- package/Libraries/Blob/BlobRegistry.js +14 -9
- package/Libraries/Blob/File.js +1 -1
- package/Libraries/Blob/FileReader.js +1 -2
- package/Libraries/Components/Clipboard/Clipboard.d.ts +4 -4
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +3 -1
- package/Libraries/Components/Glyph/Glyph.js +1 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +26 -6
- package/Libraries/Components/Keyboard/KeyboardExt.d.ts +4 -1
- package/Libraries/Components/Keyboard/KeyboardExt.js +3 -0
- package/Libraries/Components/Keyboard/KeyboardExt.js.map +1 -1
- package/Libraries/Components/Keyboard/KeyboardExtProps.d.ts +4 -29
- package/Libraries/Components/Keyboard/KeyboardExtProps.js +0 -17
- package/Libraries/Components/Keyboard/KeyboardExtProps.js.map +1 -1
- package/Libraries/Components/Pressable/Pressable.js +3 -2
- package/Libraries/Components/Pressable/Pressable.windows.js +4 -3
- package/Libraries/Components/Pressable/useAndroidRippleForView.js +1 -1
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +20 -0
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.windows.js +7 -1
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +7 -7
- package/Libraries/Components/SafeAreaView/SafeAreaView.windows.js +7 -10
- package/Libraries/Components/ScrollView/ScrollView.js +3 -1
- package/Libraries/Components/ScrollView/ScrollView.windows.js +3 -1
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +39 -46
- package/Libraries/Components/Switch/Switch.js +1 -0
- package/Libraries/Components/Switch/Switch.windows.js +259 -0
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -0
- package/Libraries/Components/TextInput/TextInput.d.ts +49 -7
- package/Libraries/Components/TextInput/TextInput.flow.js +43 -10
- package/Libraries/Components/TextInput/TextInput.js +62 -10
- package/Libraries/Components/TextInput/TextInput.windows.js +100 -14
- package/Libraries/Components/ToastAndroid/{ToastAndroid.ios.js → ToastAndroid.js} +9 -1
- package/Libraries/Components/ToastAndroid/ToastAndroid.windows.js +9 -1
- package/Libraries/Components/Touchable/TouchableBounce.js +1 -1
- package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +1 -1
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
- package/Libraries/Components/Touchable/TouchableOpacity.js +4 -1
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +4 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -0
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +1 -0
- package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +16 -6
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +9 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
- package/Libraries/Components/View/View.js +46 -32
- package/Libraries/Components/View/View.windows.js +23 -7
- package/Libraries/Components/View/ViewAccessibility.d.ts +27 -1
- package/Libraries/Components/View/ViewAccessibility.windows.js +3 -0
- package/Libraries/Components/View/ViewNativeComponent.js +1 -0
- package/Libraries/Components/View/ViewPropTypes.d.ts +104 -1
- package/Libraries/Components/View/ViewPropTypes.js +18 -3
- package/Libraries/Components/View/ViewPropTypes.windows.js +33 -3
- package/Libraries/Core/Devtools/loadBundleFromServer.js +152 -0
- package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -1
- package/Libraries/Core/ExceptionsManager.js +16 -7
- package/Libraries/Core/ExtendedError.js +12 -0
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/ReactNativeVersionCheck.js +0 -2
- package/Libraries/Core/__mocks__/NativeExceptionsManager.js +20 -0
- package/Libraries/Core/setUpDeveloperTools.js +5 -1
- package/Libraries/Core/setUpIntersectionObserver.js +16 -0
- package/Libraries/Core/setUpMutationObserver.js +16 -0
- package/Libraries/Core/setUpPerformance.js +6 -13
- package/Libraries/Core/setUpPerformanceObserver.js +16 -0
- package/Libraries/Core/setUpRegeneratorRuntime.js +4 -2
- package/Libraries/DOM/Nodes/ReactNativeElement.js +135 -18
- package/Libraries/DOM/Nodes/ReadOnlyCharacterData.js +72 -0
- package/Libraries/DOM/Nodes/ReadOnlyElement.js +209 -21
- package/Libraries/DOM/Nodes/ReadOnlyNode.js +206 -17
- package/Libraries/DOM/Nodes/ReadOnlyText.js +30 -0
- package/Libraries/DOM/Nodes/Utilities/Traversal.js +54 -0
- package/Libraries/EventEmitter/NativeEventEmitter.d.ts +0 -6
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +15 -4
- package/Libraries/Image/Image.android.js +8 -2
- package/Libraries/Image/Image.d.ts +1 -1
- package/Libraries/Image/Image.ios.js +4 -1
- package/Libraries/Image/Image.windows.js +6 -3
- package/Libraries/Image/ImageBackground.js +3 -0
- package/Libraries/Inspector/DevtoolsOverlay.js +6 -3
- package/Libraries/Inspector/NetworkOverlay.js +2 -2
- package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -5
- package/Libraries/Interaction/PanResponder.js +1 -4
- package/Libraries/IntersectionObserver/IntersectionObserver.js +252 -0
- package/Libraries/IntersectionObserver/IntersectionObserverEntry.js +140 -0
- package/Libraries/IntersectionObserver/IntersectionObserverManager.js +221 -0
- package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +41 -0
- package/Libraries/IntersectionObserver/__mocks__/NativeIntersectionObserver.js +162 -0
- package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -1
- package/Libraries/Lists/FlatList.d.ts +2 -1
- package/Libraries/Lists/FlatList.js +15 -5
- package/Libraries/Lists/SectionList.js +4 -0
- package/Libraries/LogBox/Data/LogBoxLog.js +4 -1
- package/Libraries/LogBox/Data/LogBoxSymbolication.js +5 -2
- package/Libraries/LogBox/Data/parseLogBoxLog.js +57 -20
- package/Libraries/LogBox/UI/AnsiHighlight.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +24 -31
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
- package/Libraries/LogBox/UI/LogBoxMessage.js +4 -7
- package/Libraries/MutationObserver/MutationObserver.js +184 -0
- package/Libraries/MutationObserver/MutationObserverManager.js +218 -0
- package/Libraries/MutationObserver/MutationRecord.js +82 -0
- package/Libraries/MutationObserver/NativeMutationObserver.js +58 -0
- package/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +327 -0
- package/Libraries/NativeComponent/BaseViewConfig.android.js +18 -3
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +33 -0
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +34 -4
- package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -5
- package/Libraries/NativeModules/specs/NativeSourceCode.js +6 -6
- package/Libraries/Network/RCTNetworking.android.js +2 -1
- package/Libraries/Network/XMLHttpRequest.js +1 -1
- package/Libraries/NewAppScreen/components/DebugInstructions.js +4 -4
- package/Libraries/NewAppScreen/components/DebugInstructions.windows.js +2 -2
- package/Libraries/NewAppScreen/components/LearnMoreLinks.js +9 -2
- package/Libraries/Performance/QuickPerformanceLogger.js +1 -1
- package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
- package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +1 -0
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -1
- package/Libraries/Pressability/Pressability.js +28 -3
- package/Libraries/Pressability/Pressability.windows.js +30 -5
- package/Libraries/ReactNative/AppContainer.js +2 -3
- package/Libraries/ReactNative/AppRegistry.d.ts +0 -5
- package/Libraries/ReactNative/AppRegistry.js +66 -53
- package/Libraries/ReactNative/BridgelessUIManager.js +38 -9
- package/Libraries/ReactNative/FabricUIManager.js +143 -34
- package/Libraries/ReactNative/I18nManager.js +5 -11
- package/Libraries/ReactNative/NativeI18nManager.js +7 -5
- package/Libraries/ReactNative/PaperUIManager.windows.js +2 -2
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +151 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +81 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +492 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +32 -0
- package/Libraries/ReactNative/ReactNativeFeatureFlags.js +19 -3
- package/Libraries/ReactNative/UIManager.js +8 -0
- package/Libraries/ReactNative/__mocks__/FabricUIManager.js +648 -0
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +38 -2
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +27 -27
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -3
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -3
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +27 -27
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3 -3
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3 -3
- package/Libraries/Renderer/shims/ReactFabric.js +5 -6
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -3
- package/Libraries/Renderer/shims/ReactNative.js +2 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.js +35 -17
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -3
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -3
- package/Libraries/Settings/{Settings.android.js → Settings.js} +4 -4
- package/Libraries/Share/Share.d.ts +3 -9
- package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +9 -4
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +28 -13
- package/Libraries/StyleSheet/PlatformColorValueTypes.windows.js +10 -6
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.d.ts +10 -1
- package/Libraries/StyleSheet/StyleSheet.js +3 -0
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +31 -17
- package/Libraries/StyleSheet/StyleSheetTypes.js +90 -6
- package/Libraries/StyleSheet/flattenStyle.js +4 -0
- package/Libraries/StyleSheet/private/_TransformStyle.js +16 -2
- package/Libraries/StyleSheet/processColor.js +1 -2
- package/Libraries/StyleSheet/processTransformOrigin.js +136 -0
- package/Libraries/StyleSheet/splitLayoutProps.js +1 -0
- package/Libraries/Text/Text.d.ts +5 -5
- package/Libraries/Text/Text.js +17 -10
- package/Libraries/Text/Text.windows.js +53 -20
- package/Libraries/Text/TextProps.windows.js +275 -0
- package/Libraries/TurboModule/TurboModuleRegistry.js +47 -7
- package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
- package/Libraries/Types/CoreEventTypes.d.ts +5 -2
- package/Libraries/Utilities/GlobalPerformanceLogger.js +2 -12
- package/Libraries/Utilities/NativeDeviceInfo.js +8 -9
- package/Libraries/Utilities/NativePlatformConstantsAndroid.js +23 -18
- package/Libraries/Utilities/NativePlatformConstantsIOS.js +16 -13
- package/Libraries/Utilities/NativePlatformConstantsWin.js +13 -10
- package/Libraries/Utilities/PerformanceLoggerContext.js +1 -1
- package/Libraries/Utilities/Platform.android.js +12 -8
- package/Libraries/Utilities/Platform.d.ts +1 -0
- package/Libraries/Utilities/Platform.flow.js +84 -0
- package/Libraries/Utilities/Platform.flow.windows.js +111 -0
- package/Libraries/Utilities/Platform.ios.js +12 -8
- package/Libraries/Utilities/Platform.windows.js +12 -8
- package/Libraries/Utilities/PolyfillFunctions.js +1 -1
- package/Libraries/Utilities/ReactNativeTestTools.js +1 -2
- package/Libraries/Utilities/SceneTracker.js +1 -1
- package/Libraries/Utilities/createPerformanceLogger.js +63 -32
- package/Libraries/Utilities/useColorScheme.js +7 -8
- package/Libraries/WebPerformance/MemoryInfo.js +1 -1
- package/Libraries/WebPerformance/NativePerformance.js +3 -8
- package/Libraries/WebPerformance/NativePerformanceObserver.js +4 -0
- package/Libraries/WebPerformance/Performance.js +42 -15
- package/Libraries/WebPerformance/PerformanceEntry.js +14 -6
- package/Libraries/WebPerformance/PerformanceEventTiming.js +18 -1
- package/Libraries/WebPerformance/ReactNativeStartupTiming.js +40 -14
- package/Libraries/WebPerformance/__mocks__/NativePerformance.js +4 -2
- package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +21 -3
- package/Libraries/__tests__/ViewWindows-test.js +3 -3
- package/Libraries/platform-types.d.ts +6 -2
- package/Libraries/promiseRejectionTrackingOptions.js +1 -3
- package/Libraries/vendor/emitter/EventEmitter.js +20 -18
- package/Microsoft.ReactNative/Composition.Input.idl +103 -0
- package/Microsoft.ReactNative/CompositionContext.idl +31 -8
- package/Microsoft.ReactNative/CompositionRootView.idl +8 -4
- package/Microsoft.ReactNative/CompositionSwitcher.idl +28 -17
- package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.cpp +15 -28
- package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +7 -10
- package/Microsoft.ReactNative/Fabric/ComponentView.h +42 -4
- package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.cpp +57 -4
- package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.h +22 -1
- package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.cpp +137 -0
- package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.h +59 -0
- package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +8 -2
- package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp +575 -0
- package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h +170 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +890 -226
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.h +38 -6
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +79 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +130 -27
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +6 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +382 -228
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +35 -8
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHelpers.h +46 -8
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +5 -21
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.h +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.cpp +232 -4
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.h +36 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.cpp +51 -14
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.h +15 -6
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView_emptyimpl.cpp +123 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService_emptyimpl.cpp +18 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +333 -137
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +52 -8
- package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +32 -26
- package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +5 -3
- package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +183 -175
- package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +7 -4
- package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +101 -2
- package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +46 -2
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +36 -9
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +8 -2
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +247 -42
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +25 -8
- package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +78 -50
- package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.h +12 -4
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +26 -28
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +429 -89
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +24 -3
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.cpp +1 -0
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.h +3 -2
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +5 -7
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +4 -6
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +1 -7
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.h +1 -17
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +74 -3
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +12 -0
- package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +53 -59
- package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.h +3 -2
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +5 -4
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -1
- package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/ReactTaggedView.h +1 -1
- package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.cpp +3 -4
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformTouch.h +10 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +59 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.h +31 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +69 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h +25 -2
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +23 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/KeyEvent.h +113 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/WindowsViewEvents.h +75 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/core/graphicsConversions.h +18 -21
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.cpp +158 -7
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.h +15 -17
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +1 -1
- package/Microsoft.ReactNative/GlyphViewManager.cpp +1 -1
- package/Microsoft.ReactNative/IJSValueReader.idl +2 -2
- package/Microsoft.ReactNative/IJSValueWriter.idl +2 -2
- package/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +23 -1
- package/Microsoft.ReactNative/IReactContext.cpp +1 -1
- package/Microsoft.ReactNative/IReactNotificationService.cpp +4 -3
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -4
- package/Microsoft.ReactNative/Modules/AlertModule.cpp +2 -2
- package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.cpp +1 -2
- package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.h +1 -1
- package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.cpp +3 -4
- package/Microsoft.ReactNative/Modules/AppStateModule.cpp +1 -1
- package/Microsoft.ReactNative/Modules/AppStateModule.h +2 -2
- package/Microsoft.ReactNative/Modules/AppearanceModule.h +1 -1
- package/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp +4 -2
- package/Microsoft.ReactNative/Modules/DeviceInfoModule.h +1 -1
- package/Microsoft.ReactNative/Modules/I18nManagerModule.cpp +2 -2
- package/Microsoft.ReactNative/Modules/I18nManagerModule.h +1 -1
- package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +21 -15
- package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +10 -6
- package/Microsoft.ReactNative/Modules/PaperUIManagerModule.h +4 -1
- package/Microsoft.ReactNative/QuirkSettings.idl +1 -1
- package/Microsoft.ReactNative/ReactApplication.cpp +13 -11
- package/Microsoft.ReactNative/ReactApplication.h +4 -4
- package/Microsoft.ReactNative/ReactCoreInjection.h +6 -5
- package/Microsoft.ReactNative/ReactHost/JSCallInvokerScheduler.cpp +2 -2
- package/Microsoft.ReactNative/ReactHost/MsoUtils.cpp +1 -1
- package/Microsoft.ReactNative/ReactHost/React.h +3 -6
- package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +0 -16
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +8 -16
- package/Microsoft.ReactNative/ReactInstanceSettings.cpp +6 -5
- package/Microsoft.ReactNative/ReactInstanceSettings.h +7 -7
- package/Microsoft.ReactNative/ReactNativeHost.h +4 -4
- package/Microsoft.ReactNative/ReactRootView.cpp +5 -4
- package/Microsoft.ReactNative/ReactRootView.h +2 -2
- package/Microsoft.ReactNative/ReactSupport.h +1 -1
- package/Microsoft.ReactNative/RedBox.cpp +1 -1
- package/Microsoft.ReactNative/RedBoxHandler.idl +1 -1
- package/Microsoft.ReactNative/Utils/UwpPreparedScriptStore.h +1 -1
- package/Microsoft.ReactNative/Utils/ValueUtils.cpp +49 -21
- package/Microsoft.ReactNative/Utils/ValueUtils.h +2 -1
- package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +31 -59
- package/Microsoft.ReactNative/Views/DynamicAutomationPeer.h +3 -4
- package/Microsoft.ReactNative/Views/DynamicAutomationProperties.cpp +15 -46
- package/Microsoft.ReactNative/Views/DynamicAutomationProperties.h +5 -13
- package/Microsoft.ReactNative/Views/FlyoutViewManager.cpp +4 -4
- package/Microsoft.ReactNative/Views/FrameworkElementTransferProperties.cpp +2 -8
- package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +127 -86
- package/Microsoft.ReactNative/Views/ICompositionRootView.h +1 -1
- package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +1 -1
- package/Microsoft.ReactNative/Views/Image/Microsoft.UI.Composition.Effects_Impl.h +2 -2
- package/Microsoft.ReactNative/Views/Image/ReactImage.cpp +1 -1
- package/Microsoft.ReactNative/Views/SIPEventHandler.cpp +5 -5
- package/Microsoft.ReactNative/Views/SIPEventHandler.h +1 -1
- package/Microsoft.ReactNative/Views/ShadowNodeBase.h +8 -5
- package/Microsoft.ReactNative/Views/SwitchViewManager.cpp +2 -2
- package/Microsoft.ReactNative/Views/Text/TextTransformVisitor.cpp +1 -1
- package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +32 -14
- package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +1 -1
- package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +14 -2
- package/Microsoft.ReactNative/Views/ViewManagerBase.h +1 -1
- package/Microsoft.ReactNative/Views/ViewPanel.cpp +20 -219
- package/Microsoft.ReactNative/Views/ViewPanel.h +0 -30
- package/Microsoft.ReactNative/Views/ViewViewManager.cpp +17 -158
- package/Microsoft.ReactNative/Views/cppwinrt/DynamicAutomationPeer.idl +9 -12
- package/Microsoft.ReactNative/Views/cppwinrt/ViewPanel.idl +1 -9
- package/Microsoft.ReactNative/XamlHelper.cpp +1 -1
- package/Microsoft.ReactNative/XamlHelper.h +1 -1
- package/Microsoft.ReactNative/packages.lock.json +128 -0
- package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +1 -1
- package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +1 -1
- package/Microsoft.ReactNative.Cxx/JSI/JsiApiContext.cpp +2 -2
- package/Microsoft.ReactNative.Cxx/JSValue.h +2 -2
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +0 -1
- package/Microsoft.ReactNative.Cxx/NativeModules.h +4 -4
- package/Microsoft.ReactNative.Cxx/ReactHandleHelper.h +1 -1
- package/Microsoft.ReactNative.Cxx/ReactNonAbiValue.h +2 -2
- package/Microsoft.ReactNative.Cxx/ReactNotificationService.h +10 -9
- package/Microsoft.ReactNative.Cxx/ReactPropertyBag.h +13 -12
- package/Microsoft.ReactNative.Managed/JSValueReaderGenerator.cs +5 -5
- package/Microsoft.ReactNative.Managed/JSValueWriterGenerator.cs +5 -5
- package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +8 -2
- package/Microsoft.ReactNative.Managed/ReactPackageBuilderExtensions.cs +1 -1
- package/Microsoft.ReactNative.Managed/ReflectionReactPackageProvider.cs +1 -1
- package/Microsoft.ReactNative.Managed/packages.lock.json +9 -9
- package/Microsoft.ReactNative.Managed.CodeGen/CodeAnalyzer.cs +2 -0
- package/Microsoft.ReactNative.Managed.CodeGen/CodeGenerator.Module.cs +4 -2
- package/Microsoft.ReactNative.Managed.CodeGen/CodeGenerator.ViewManager.cs +1 -1
- package/Microsoft.ReactNative.Managed.CodeGen/DiagnosticDescriptors.cs +1 -1
- package/Microsoft.ReactNative.Managed.CodeGen/packages.lock.json +3197 -0
- package/Mso/compilerAdapters/compilerFeatures.h +1 -1
- package/Mso/compilerAdapters/functionDecorations.h +6 -6
- package/Mso/debugAssertApi/debugAssertDetails.h +1 -1
- package/Mso/dispatchQueue/dispatchQueue.h +3 -3
- package/Mso/motifCpp/motifCppTest.h +1 -1
- package/Mso/motifCpp/testCheck.h +1 -1
- package/Mso/oacr/oacr.h +1 -1
- package/Mso/smartPtr/smartPointerBase.h +1 -1
- package/Mso/src/dispatchQueue/looperScheduler.cpp +2 -2
- package/Mso/src/dispatchQueue/queueService.cpp +1 -1
- package/Mso/src/dispatchQueue/taskQueue.h +1 -1
- package/Mso/src/dispatchQueue/threadPoolScheduler_win.cpp +2 -2
- package/Mso/src/dispatchQueue/uiScheduler_winrt.cpp +122 -45
- package/Mso/src/eventWaitHandle/eventWaitHandleImpl_win.cpp +2 -2
- package/Mso/src/future/futureImpl.cpp +5 -5
- package/Mso/src/future/futureImpl.h +1 -1
- package/PropertySheets/External/Microsoft.ReactNative.Common.props +3 -0
- package/PropertySheets/External/{Microsoft.ReactNative.WinAppSDK.Common.props → Microsoft.ReactNative.Composition.Common.props} +2 -2
- package/PropertySheets/External/{Microsoft.ReactNative.WinAppSDK.CSharpApp.props → Microsoft.ReactNative.Composition.CppApp.props} +7 -10
- package/PropertySheets/External/Microsoft.ReactNative.Composition.CppApp.targets +19 -0
- package/PropertySheets/External/Microsoft.ReactNative.Composition.Package.props +14 -0
- package/PropertySheets/External/Microsoft.ReactNative.Composition.Package.targets +18 -0
- package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +1 -1
- package/PropertySheets/Generated/PackageVersion.g.props +4 -4
- package/PropertySheets/HybridCRT.props +34 -0
- package/PropertySheets/JSEngine.props +1 -2
- package/PropertySheets/React.Cpp.props +0 -1
- package/PropertySheets/Warnings.props +1 -1
- package/PropertySheets/WinUI.props +1 -1
- package/ReactCommon/ReactCommon.vcxproj +15 -9
- package/ReactCommon/ReactCommon.vcxproj.filters +0 -3
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +32 -5
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +20 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaLayoutableShadowNode.cpp +1038 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaStylableProps.cpp +228 -38
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/conversions.h +895 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mounting/ShadowTree.cpp +543 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/uimanager/UIManagerBinding.cpp +1509 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/bits/NumericBitfield.h +67 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.h +93 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.h +88 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.cpp +606 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.h +344 -0
- package/ReactCommon/Yoga.cpp +497 -3895
- package/ReactCommon/packages.lock.json +30 -0
- package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +22 -0
- package/Scripts/OfficeReact.Win32.nuspec +1 -0
- package/Scripts/rnw-dependencies.ps1 +79 -26
- package/Shared/BaseScriptStoreImpl.cpp +42 -13
- package/Shared/BaseScriptStoreImpl.h +1 -1
- package/Shared/Composition/AutoDraw.h +36 -0
- package/Shared/CxxMessageQueue.cpp +1 -1
- package/Shared/DevSettings.h +3 -0
- package/Shared/DevSupportManager.h +1 -1
- package/Shared/Hasher.cpp +64 -0
- package/Shared/Hasher.h +24 -0
- package/Shared/HermesRuntimeHolder.cpp +6 -6
- package/Shared/IDevSupportManager.h +1 -1
- package/Shared/JSI/ChakraApi.cpp +1 -1
- package/Shared/JSI/ChakraRuntime.cpp +10 -10
- package/Shared/JSI/ChakraRuntime.h +6 -6
- package/Shared/JSI/V8RuntimeHolder.cpp +1 -1
- package/Shared/Modules/IRequestBodyHandler.h +1 -1
- package/Shared/Modules/IUriHandler.h +1 -1
- package/Shared/Modules/PlatformConstantsModule.cpp +1 -1
- package/Shared/Modules/WebSocketModule.cpp +1 -1
- package/Shared/Networking/DefaultBlobResource.cpp +2 -2
- package/Shared/Networking/OriginPolicyHttpFilter.cpp +22 -16
- package/Shared/Networking/OriginPolicyHttpFilter.h +12 -11
- package/Shared/OInstance.cpp +9 -23
- package/Shared/OInstance.h +1 -1
- package/Shared/PackagerConnection.h +1 -1
- package/Shared/SafeLoadLibrary.cpp +8 -44
- package/Shared/SafeLoadLibrary.h +1 -5
- package/Shared/Shared.vcxitems +50 -20
- package/Shared/Shared.vcxitems.filters +26 -17
- package/Shared/Threading/BatchingQueueThread.cpp +5 -5
- package/Shared/Threading/BatchingQueueThread.h +4 -4
- package/Shared/TurboModuleManager.cpp +1 -1
- package/Shared/Utils.cpp +1 -1
- package/Shared/tracing/fbsystrace.h +1 -1
- package/codegen/NativeAnimatedModuleSpec.g.h +2 -0
- package/codegen/NativeAnimatedTurboModuleSpec.g.h +2 -0
- package/codegen/NativeAppStateSpec.g.h +11 -21
- package/codegen/NativeDeviceInfoSpec.g.h +4 -14
- package/codegen/NativeI18nManagerSpec.g.h +6 -16
- package/codegen/NativeIntersectionObserverSpec.g.h +96 -0
- package/codegen/NativeMutationObserverSpec.g.h +90 -0
- package/codegen/NativePerformanceObserverSpec.g.h +19 -13
- package/codegen/NativePerformanceSpec.g.h +6 -23
- package/codegen/NativePlatformConstantsAndroidSpec.g.h +22 -30
- package/codegen/NativePlatformConstantsIOSSpec.g.h +17 -25
- package/codegen/NativePlatformConstantsWinSpec.g.h +14 -22
- package/codegen/NativeSampleTurboModuleSpec.g.h +36 -0
- package/codegen/NativeSourceCodeSpec.g.h +3 -13
- package/codegen/react/components/rnwcore/EventEmitters.cpp +85 -58
- package/codegen/react/components/rnwcore/EventEmitters.h +17 -35
- package/codegen/react/components/rnwcore/Props.h +16 -17
- package/codegen/rnwcoreJSI-generated.cpp +1462 -319
- package/codegen/rnwcoreJSI.h +1609 -462
- package/fmt/packages.lock.json +13 -0
- package/index.windows.js +3 -3
- package/{Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.ios.js → jest/ReactNativeInternalFeatureFlagsMock.js} +2 -1
- package/jest/__tests__/setup-test.js +18 -0
- package/jest/mockModal.js +6 -4
- package/jest/setup.js +61 -30
- package/just-task.js +1 -0
- package/package.json +37 -42
- package/template/cs-app/proj/MyApp.csproj +0 -1
- package/template/cs-lib/proj/MyLib.csproj +0 -1
- package/templates/.clang-format +4 -0
- package/templates/cpp-app/metro.config.js +51 -0
- package/templates/cpp-app/template.config.js +119 -0
- package/templates/cpp-app/windows/ExperimentalFeatures.props +12 -0
- package/templates/cpp-app/windows/MyApp/MyApp.cpp +284 -0
- package/templates/cpp-app/windows/MyApp/MyApp.h +3 -0
- package/templates/cpp-app/windows/MyApp/MyApp.ico +0 -0
- package/templates/cpp-app/windows/MyApp/MyApp.rc +0 -0
- package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +142 -0
- package/templates/cpp-app/windows/MyApp/MyApp.vcxproj.filters +55 -0
- package/templates/cpp-app/windows/MyApp/_gitignore +1 -0
- package/templates/cpp-app/windows/MyApp/pch.cpp +1 -0
- package/templates/cpp-app/windows/MyApp/pch.h +35 -0
- package/templates/cpp-app/windows/MyApp/resource.h +18 -0
- package/templates/cpp-app/windows/MyApp/small.ico +0 -0
- package/templates/cpp-app/windows/MyApp/targetver.h +8 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/LockScreenLogo.scale-200.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/SplashScreen.scale-200.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/Square150x150Logo.scale-200.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/Square44x44Logo.scale-200.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/Square44x44Logo.targetsize-24_altform-unplated.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/StoreLogo.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/Wide310x150Logo.scale-200.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/MyApp.Package.wapproj +78 -0
- package/{template/cs-app-WinAppSDK/MyApp → templates/cpp-app/windows/MyApp.Package}/Package.appxmanifest +9 -8
- package/templates/cpp-app/windows/MyApp.sln +176 -0
- package/templates/cpp-app/windows/_gitignore +41 -0
- package/templates/old/generateWrapper.js +67 -0
- package/templates/old/uwp-cpp-app/template.config.js +15 -0
- package/templates/old/uwp-cpp-lib/template.config.js +15 -0
- package/templates/old/uwp-cs-app/template.config.js +15 -0
- package/templates/old/uwp-cs-lib/template.config.js +15 -0
- package/types/experimental.d.ts +44 -0
- package/types/index.d.ts +2 -1
- package/types/modules/Devtools.d.ts +1 -0
- package/types/modules/globals.d.ts +16 -1
- package/Libraries/Components/View/ViewWindows.d.ts +0 -19
- package/Libraries/Components/View/ViewWindows.js +0 -22
- package/Libraries/Components/View/ViewWindows.js.map +0 -1
- package/Libraries/Components/View/ViewWindowsProps.d.ts +0 -69
- package/Libraries/Components/View/ViewWindowsProps.js +0 -8
- package/Libraries/Components/View/ViewWindowsProps.js.map +0 -1
- package/Libraries/Utilities/AcessibilityMapping.js +0 -154
- package/Libraries/Utilities/NativeDevSplitBundleLoader.js +0 -19
- package/Libraries/Utilities/useColorScheme.windows.js +0 -26
- package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/WindowsViewProps.cpp +0 -61
- package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/WindowsViewProps.h +0 -34
- package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/primitives.h +0 -42
- package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharp.PackageReferences.props +0 -11
- package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharpApp.targets +0 -51
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.cpp +0 -237
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.h +0 -59
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewEventEmitter.cpp +0 -159
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewEventEmitter.h +0 -94
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewProps.cpp +0 -465
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewProps.h +0 -116
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewShadowNode.cpp +0 -98
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/primitives.h +0 -326
- package/Scripts/Microsoft.ReactNative.WindowsAppSDK.nuspec +0 -30
- package/Shared/V8JSIRuntimeHolder.cpp +0 -71
- package/Shared/V8JSIRuntimeHolder.h +0 -56
- package/codegen/NativeDevSplitBundleLoaderSpec.g.h +0 -34
- package/template/cs-app-WinAppSDK/MyApp/App.xaml +0 -16
- package/template/cs-app-WinAppSDK/MyApp/App.xaml.cs +0 -70
- package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml +0 -14
- package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml.cs +0 -38
- package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-arm64.pubxml +0 -19
- package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x64.pubxml +0 -19
- package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x86.pubxml +0 -19
- package/template/cs-app-WinAppSDK/MyApp/Properties/launchSettings.json +0 -10
- package/template/cs-app-WinAppSDK/MyApp/app.manifest +0 -15
- package/template/cs-app-WinAppSDK/proj/ExperimentalFeatures.props +0 -24
- package/template/cs-app-WinAppSDK/proj/MyApp.csproj +0 -53
- package/template/cs-app-WinAppSDK/proj/MyApp.sln +0 -43
- package/template/cs-app-WinAppSDK/proj/NuGet_Config +0 -19
- /package/Libraries/Components/DrawerAndroid/{DrawerLayoutAndroid.ios.js → DrawerLayoutAndroid.js} +0 -0
- /package/Libraries/{Renderer/public → ReactNative/ReactFabricPublicInstance}/ReactFabricPublicInstanceUtils.js +0 -0
|
@@ -28,22 +28,34 @@ typedef int PointerId;
|
|
|
28
28
|
|
|
29
29
|
class CompositionEventHandler {
|
|
30
30
|
public:
|
|
31
|
-
CompositionEventHandler(const winrt::Microsoft::ReactNative::ReactContext &context);
|
|
32
31
|
CompositionEventHandler(
|
|
33
32
|
const winrt::Microsoft::ReactNative::ReactContext &context,
|
|
34
33
|
const winrt::Microsoft::ReactNative::CompositionRootView &CompositionRootView);
|
|
35
34
|
virtual ~CompositionEventHandler();
|
|
36
35
|
|
|
37
36
|
int64_t SendMessage(uint32_t msg, uint64_t wParam, int64_t lParam) noexcept;
|
|
38
|
-
void ScrollWheel(facebook::react::Point pt, uint32_t delta);
|
|
39
37
|
void RemoveTouchHandlers();
|
|
38
|
+
winrt::Windows::UI::Core::CoreVirtualKeyStates GetKeyState(winrt::Windows::System::VirtualKey key) noexcept;
|
|
40
39
|
|
|
41
40
|
private:
|
|
42
|
-
void
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
void
|
|
46
|
-
|
|
41
|
+
void onPointerPressed(
|
|
42
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
|
|
43
|
+
winrt::Windows::System::VirtualKeyModifiers keyModifiers) noexcept;
|
|
44
|
+
void onPointerReleased(
|
|
45
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
|
|
46
|
+
winrt::Windows::System::VirtualKeyModifiers keyModifiers) noexcept;
|
|
47
|
+
void onPointerMoved(
|
|
48
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
|
|
49
|
+
winrt::Windows::System::VirtualKeyModifiers keyModifiers) noexcept;
|
|
50
|
+
void onPointerWheelChanged(
|
|
51
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
|
|
52
|
+
winrt::Windows::System::VirtualKeyModifiers keyModifiers) noexcept;
|
|
53
|
+
void onKeyDown(
|
|
54
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
|
|
55
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept;
|
|
56
|
+
void onKeyUp(
|
|
57
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource &source,
|
|
58
|
+
const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept;
|
|
47
59
|
|
|
48
60
|
facebook::react::SurfaceId SurfaceId() noexcept;
|
|
49
61
|
RootComponentView &RootComponentView() noexcept;
|
|
@@ -54,10 +66,16 @@ class CompositionEventHandler {
|
|
|
54
66
|
Touch,
|
|
55
67
|
};
|
|
56
68
|
enum class TouchEventType { Start = 0, End, Move, Cancel, CaptureLost, PointerEntered, PointerExited, PointerMove };
|
|
57
|
-
void DispatchTouchEvent(
|
|
69
|
+
void DispatchTouchEvent(
|
|
70
|
+
TouchEventType eventType,
|
|
71
|
+
PointerId pointerId,
|
|
72
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
|
|
73
|
+
winrt::Windows::System::VirtualKeyModifiers keyModifiers);
|
|
58
74
|
void HandleIncomingPointerEvent(
|
|
59
75
|
facebook::react::PointerEvent &pe,
|
|
60
76
|
IComponentView *targetView,
|
|
77
|
+
const winrt::Microsoft::ReactNative::Composition::Input::PointerPoint &pointerPoint,
|
|
78
|
+
winrt::Windows::System::VirtualKeyModifiers keyModifiers,
|
|
61
79
|
std::function<void(std::vector<IComponentView *> &)> handler);
|
|
62
80
|
|
|
63
81
|
struct ActiveTouch {
|
|
@@ -115,6 +133,15 @@ class CompositionEventHandler {
|
|
|
115
133
|
std::map<PointerId, std::vector<ReactTaggedView>> m_currentlyHoveredViewsPerPointer;
|
|
116
134
|
winrt::Microsoft::ReactNative::CompositionRootView m_compRootView{nullptr};
|
|
117
135
|
winrt::Microsoft::ReactNative::ReactContext m_context;
|
|
136
|
+
|
|
137
|
+
#ifdef USE_WINUI3
|
|
138
|
+
winrt::event_token m_pointerPressedToken;
|
|
139
|
+
winrt::event_token m_pointerReleasedToken;
|
|
140
|
+
winrt::event_token m_pointerMovedToken;
|
|
141
|
+
winrt::event_token m_pointerWheelChangedToken;
|
|
142
|
+
winrt::event_token m_keyDownToken;
|
|
143
|
+
winrt::event_token m_keyUpToken;
|
|
144
|
+
#endif
|
|
118
145
|
};
|
|
119
146
|
|
|
120
147
|
} // namespace Microsoft::ReactNative
|
|
@@ -11,30 +11,68 @@ namespace Microsoft::ReactNative {
|
|
|
11
11
|
|
|
12
12
|
namespace Composition {
|
|
13
13
|
|
|
14
|
+
// Windows composition specific interface to extract the inner compositor object
|
|
15
|
+
MSO_STRUCT_GUID(IWindowsCompositionCompositor, "4FA84446-B662-440F-AE53-43A223D2068E")
|
|
16
|
+
struct IWindowsCompositionCompositor : public IUnknown {
|
|
17
|
+
virtual winrt::Windows::UI::Composition::Compositor InnerCompositor() const noexcept = 0;
|
|
18
|
+
};
|
|
19
|
+
|
|
14
20
|
// Windows composition specific interface to extract the inner composition object
|
|
15
|
-
MSO_STRUCT_GUID(
|
|
16
|
-
struct
|
|
21
|
+
MSO_STRUCT_GUID(IWindowsCompositionVisual, "2F7F7E82-0BEA-4Cf8-9531-E81338754187")
|
|
22
|
+
struct IWindowsCompositionVisual : public IUnknown {
|
|
17
23
|
virtual winrt::Windows::UI::Composition::Visual InnerVisual() const noexcept = 0;
|
|
18
24
|
};
|
|
19
25
|
|
|
20
26
|
// Windows composition specific interface to extract the inner composition shadow object
|
|
21
|
-
MSO_STRUCT_GUID(
|
|
22
|
-
struct
|
|
27
|
+
MSO_STRUCT_GUID(IWindowsCompositionDropShadow, "C6474C79-B99A-4312-8FE6-7BC0C9594E5C")
|
|
28
|
+
struct IWindowsCompositionDropShadow : public IUnknown {
|
|
23
29
|
virtual winrt::Windows::UI::Composition::DropShadow InnerShadow() const noexcept = 0;
|
|
24
30
|
};
|
|
25
31
|
|
|
26
32
|
// Windows composition specific interface to extract the inner composition brush object
|
|
27
|
-
MSO_STRUCT_GUID(
|
|
28
|
-
struct
|
|
33
|
+
MSO_STRUCT_GUID(IWindowsCompositionBrush, "CFD63CA2-856E-4D5D-B2E2-68B982407051")
|
|
34
|
+
struct IWindowsCompositionBrush : public IUnknown {
|
|
29
35
|
virtual winrt::Windows::UI::Composition::CompositionBrush InnerBrush() const noexcept = 0;
|
|
30
36
|
};
|
|
31
37
|
|
|
32
38
|
// Windows composition specific interface to extract the drawing surface object
|
|
33
|
-
MSO_STRUCT_GUID(
|
|
34
|
-
struct
|
|
39
|
+
MSO_STRUCT_GUID(IWindowsCompositionDrawingSurfaceInner, "985963C3-1133-43CA-BAD2-AC4C893C3A1F")
|
|
40
|
+
struct IWindowsCompositionDrawingSurfaceInner : public IUnknown {
|
|
35
41
|
virtual winrt::Windows::UI::Composition::ICompositionSurface Inner() const noexcept = 0;
|
|
36
42
|
};
|
|
37
43
|
|
|
44
|
+
#ifdef USE_WINUI3
|
|
45
|
+
// Windows composition specific interface to extract the inner compositor object
|
|
46
|
+
MSO_STRUCT_GUID(IMicrosoftCompositionCompositor, "B7B3E027-6A87-4946-B397-247AAB8634C6")
|
|
47
|
+
struct IMicrosoftCompositionCompositor : public IUnknown {
|
|
48
|
+
virtual winrt::Microsoft::UI::Composition::Compositor InnerCompositor() const noexcept = 0;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// Microsoft composition specific interface to extract the inner composition object
|
|
52
|
+
MSO_STRUCT_GUID(IMicrosoftCompositionVisual, "FF8731D8-8AFA-4F6F-9E76-7F538F3C1157")
|
|
53
|
+
struct IMicrosoftCompositionVisual : public IUnknown {
|
|
54
|
+
virtual winrt::Microsoft::UI::Composition::Visual InnerVisual() const noexcept = 0;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// Microsoft composition specific interface to extract the inner composition shadow object
|
|
58
|
+
MSO_STRUCT_GUID(IMicrosoftCompositionDropShadow, "78E94CC1-8E8A-4CF7-9301-23305FFC97A2")
|
|
59
|
+
struct IMicrosoftCompositionDropShadow : public IUnknown {
|
|
60
|
+
virtual winrt::Microsoft::UI::Composition::DropShadow InnerShadow() const noexcept = 0;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
// Microsoft composition specific interface to extract the inner composition brush object
|
|
64
|
+
MSO_STRUCT_GUID(IMicrosoftCompositionBrush, "831CA206-B777-4660-88BC-19EB78045E40")
|
|
65
|
+
struct IMicrosoftCompositionBrush : public IUnknown {
|
|
66
|
+
virtual winrt::Microsoft::UI::Composition::CompositionBrush InnerBrush() const noexcept = 0;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
// Microsoft composition specific interface to extract the drawing surface object
|
|
70
|
+
MSO_STRUCT_GUID(IMicrosoftCompositionDrawingSurfaceInner, "4ADDC62F-51D0-4C71-8BE4-3256E628D07A")
|
|
71
|
+
struct IMicrosoftCompositionDrawingSurfaceInner : public IUnknown {
|
|
72
|
+
virtual winrt::Microsoft::UI::Composition::ICompositionSurface Inner() const noexcept = 0;
|
|
73
|
+
};
|
|
74
|
+
#endif
|
|
75
|
+
|
|
38
76
|
} // namespace Composition
|
|
39
77
|
|
|
40
78
|
bool CheckForDeviceRemoved(HRESULT hr);
|
|
@@ -61,13 +61,14 @@ void CompositionHwndHost::Initialize(uint64_t hwnd) noexcept {
|
|
|
61
61
|
|
|
62
62
|
m_compRootView.ScaleFactor(ScaleFactor());
|
|
63
63
|
m_compRootView.RootVisual(
|
|
64
|
-
winrt::Microsoft::ReactNative::Composition::implementation::
|
|
64
|
+
winrt::Microsoft::ReactNative::Composition::implementation::WindowsCompositionContextHelper::CreateVisual(
|
|
65
|
+
RootVisual()));
|
|
65
66
|
|
|
66
67
|
UpdateSize();
|
|
67
68
|
}
|
|
68
69
|
|
|
69
|
-
|
|
70
|
-
return GetDpiForWindow(m_hwnd) / 96.
|
|
70
|
+
float CompositionHwndHost::ScaleFactor() noexcept {
|
|
71
|
+
return GetDpiForWindow(m_hwnd) / 96.0f;
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
void CompositionHwndHost::UpdateSize() noexcept {
|
|
@@ -90,23 +91,6 @@ LRESULT CompositionHwndHost::TranslateMessage(int msg, uint64_t wParam, int64_t
|
|
|
90
91
|
return 0;
|
|
91
92
|
|
|
92
93
|
switch (msg) {
|
|
93
|
-
case WM_MOUSEWHEEL: {
|
|
94
|
-
POINT pt = {GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)};
|
|
95
|
-
::ScreenToClient(m_hwnd, &pt);
|
|
96
|
-
int32_t delta = GET_WHEEL_DELTA_WPARAM(wParam);
|
|
97
|
-
m_compRootView.OnScrollWheel({static_cast<float>(pt.x), static_cast<float>(pt.y)}, delta);
|
|
98
|
-
return 0;
|
|
99
|
-
}
|
|
100
|
-
/*
|
|
101
|
-
case WM_POINTERDOWN: {
|
|
102
|
-
m_compRootView.OnPointerPressed({GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)});
|
|
103
|
-
return 0;
|
|
104
|
-
}
|
|
105
|
-
case WM_LBUTTONUP: {
|
|
106
|
-
m_compRootView.OnMouseUp({static_cast<float>(GET_X_LPARAM(lParam)), static_cast<float>(GET_Y_LPARAM(lParam))});
|
|
107
|
-
return 0;
|
|
108
|
-
}
|
|
109
|
-
*/
|
|
110
94
|
case WM_WINDOWPOSCHANGED: {
|
|
111
95
|
UpdateSize();
|
|
112
96
|
/*
|
|
@@ -149,7 +133,7 @@ winrt::Windows::UI::Composition::Compositor CompositionHwndHost::Compositor() co
|
|
|
149
133
|
winrt::Microsoft::ReactNative::Composition::implementation::CompositionUIService::GetCompositionContext(
|
|
150
134
|
m_reactViewHost.ReactNativeHost().InstanceSettings().Properties());
|
|
151
135
|
|
|
152
|
-
return winrt::Microsoft::ReactNative::Composition::implementation::
|
|
136
|
+
return winrt::Microsoft::ReactNative::Composition::implementation::WindowsCompositionContextHelper::InnerCompositor(
|
|
153
137
|
compositionContext);
|
|
154
138
|
}
|
|
155
139
|
|
|
@@ -38,7 +38,7 @@ struct CompositionHwndHost : CompositionHwndHostT<CompositionHwndHost> {
|
|
|
38
38
|
void CreateDesktopWindowTarget(HWND window);
|
|
39
39
|
void CreateCompositionRoot();
|
|
40
40
|
void UpdateSize() noexcept;
|
|
41
|
-
|
|
41
|
+
float ScaleFactor() noexcept;
|
|
42
42
|
|
|
43
43
|
HWND m_hwnd;
|
|
44
44
|
winrt::Microsoft::ReactNative::CompositionRootView m_compRootView{nullptr};
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
#include "pch.h"
|
|
2
2
|
#include "CompositionRootAutomationProvider.h"
|
|
3
|
+
#include <algorithm>
|
|
3
4
|
#include "UiaHelpers.h"
|
|
4
5
|
|
|
6
|
+
#ifdef USE_WINUI3
|
|
7
|
+
#include <winrt/Microsoft.UI.Content.h>
|
|
8
|
+
#endif
|
|
9
|
+
|
|
5
10
|
namespace winrt::Microsoft::ReactNative::implementation {
|
|
6
11
|
|
|
7
12
|
CompositionRootAutomationProvider::CompositionRootAutomationProvider(
|
|
@@ -32,7 +37,7 @@ HRESULT __stdcall CompositionRootAutomationProvider::GetEmbeddedFragmentRoots(SA
|
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
HRESULT __stdcall CompositionRootAutomationProvider::SetFocus(void) {
|
|
35
|
-
return
|
|
40
|
+
return UiaSetFocusHelper(m_view);
|
|
36
41
|
}
|
|
37
42
|
|
|
38
43
|
HRESULT __stdcall CompositionRootAutomationProvider::GetPatternProvider(PATTERNID patternId, IUnknown **pRetVal) {
|
|
@@ -55,6 +60,15 @@ HRESULT __stdcall CompositionRootAutomationProvider::get_HostRawElementProvider(
|
|
|
55
60
|
if (pRetVal == nullptr)
|
|
56
61
|
return E_POINTER;
|
|
57
62
|
|
|
63
|
+
#ifdef USE_WINUI3
|
|
64
|
+
if (m_island) {
|
|
65
|
+
winrt::Windows::Foundation::IInspectable host = m_island.GetAutomationHostProvider();
|
|
66
|
+
*pRetVal = host.as<IRawElementProviderSimple>().detach();
|
|
67
|
+
return S_OK;
|
|
68
|
+
}
|
|
69
|
+
#endif
|
|
70
|
+
|
|
71
|
+
// TODO: assumes windowed
|
|
58
72
|
if (!IsWindow(m_hwnd))
|
|
59
73
|
return UIA_E_ELEMENTNOTAVAILABLE;
|
|
60
74
|
|
|
@@ -67,6 +81,39 @@ HRESULT __stdcall CompositionRootAutomationProvider::get_BoundingRectangle(UiaRe
|
|
|
67
81
|
if (pRetVal == nullptr)
|
|
68
82
|
return E_POINTER;
|
|
69
83
|
|
|
84
|
+
#ifdef USE_WINUI3
|
|
85
|
+
if (m_island) {
|
|
86
|
+
auto cc = m_island.CoordinateConverter();
|
|
87
|
+
auto origin = cc.ConvertLocalToScreen(winrt::Windows::Foundation::Point{0, 0});
|
|
88
|
+
pRetVal->left = origin.X;
|
|
89
|
+
pRetVal->top = origin.Y;
|
|
90
|
+
|
|
91
|
+
auto size = m_island.ActualSize();
|
|
92
|
+
pRetVal->width = size.x;
|
|
93
|
+
pRetVal->height = size.y;
|
|
94
|
+
|
|
95
|
+
return S_OK;
|
|
96
|
+
}
|
|
97
|
+
#endif
|
|
98
|
+
|
|
99
|
+
// TODO: Need host site offsets
|
|
100
|
+
// Assume we're hosted in some other visual-based hosting site
|
|
101
|
+
if (m_hwnd == nullptr || !IsWindow(m_hwnd)) {
|
|
102
|
+
return UiaGetBoundingRectangleHelper(m_view, *pRetVal);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
POINT point{0, 0};
|
|
106
|
+
ClientToScreen(m_hwnd, &point);
|
|
107
|
+
pRetVal->left = point.x;
|
|
108
|
+
pRetVal->top = point.y;
|
|
109
|
+
RECT rect;
|
|
110
|
+
GetClientRect(m_hwnd, &rect);
|
|
111
|
+
point.x = rect.right;
|
|
112
|
+
point.y = rect.bottom;
|
|
113
|
+
ClientToScreen(m_hwnd, &point);
|
|
114
|
+
pRetVal->width = point.x - pRetVal->left;
|
|
115
|
+
pRetVal->height = point.y - pRetVal->top;
|
|
116
|
+
|
|
70
117
|
return S_OK;
|
|
71
118
|
}
|
|
72
119
|
|
|
@@ -97,6 +144,28 @@ HRESULT __stdcall CompositionRootAutomationProvider::ElementProviderFromPoint(
|
|
|
97
144
|
|
|
98
145
|
*pRetVal = nullptr;
|
|
99
146
|
|
|
147
|
+
auto strongView = m_view.view();
|
|
148
|
+
|
|
149
|
+
if (strongView == nullptr) {
|
|
150
|
+
return UIA_E_ELEMENTNOTAVAILABLE;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
auto spRootView = std::static_pointer_cast<::Microsoft::ReactNative::RootComponentView>(strongView);
|
|
154
|
+
|
|
155
|
+
if (m_hwnd == nullptr || !IsWindow(m_hwnd)) {
|
|
156
|
+
// TODO: Add support for non-HWND based hosting
|
|
157
|
+
return E_FAIL;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
POINT clientPoint{static_cast<LONG>(x), static_cast<LONG>(y)};
|
|
161
|
+
ScreenToClient(m_hwnd, &clientPoint);
|
|
162
|
+
|
|
163
|
+
auto provider = spRootView->UiaProviderFromPoint(clientPoint);
|
|
164
|
+
auto spFragment = provider.try_as<IRawElementProviderFragment>();
|
|
165
|
+
if (spFragment) {
|
|
166
|
+
*pRetVal = spFragment.detach();
|
|
167
|
+
}
|
|
168
|
+
|
|
100
169
|
return S_OK;
|
|
101
170
|
}
|
|
102
171
|
|
|
@@ -117,9 +186,10 @@ HRESULT __stdcall CompositionRootAutomationProvider::GetFocus(IRawElementProvide
|
|
|
117
186
|
|
|
118
187
|
if (focusedComponent) {
|
|
119
188
|
auto focusedUiaProvider = focusedComponent->EnsureUiaProvider();
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
189
|
+
auto spFragment = focusedUiaProvider.try_as<IRawElementProviderFragment>();
|
|
190
|
+
if (spFragment) {
|
|
191
|
+
*pRetVal = spFragment.detach();
|
|
192
|
+
}
|
|
123
193
|
}
|
|
124
194
|
|
|
125
195
|
return S_OK;
|
|
@@ -129,6 +199,12 @@ void CompositionRootAutomationProvider::SetHwnd(HWND hwnd) noexcept {
|
|
|
129
199
|
m_hwnd = hwnd;
|
|
130
200
|
}
|
|
131
201
|
|
|
202
|
+
#ifdef USE_WINUI3
|
|
203
|
+
void CompositionRootAutomationProvider::SetIsland(winrt::Microsoft::UI::Content::ContentIsland &island) noexcept {
|
|
204
|
+
m_island = island;
|
|
205
|
+
}
|
|
206
|
+
#endif
|
|
207
|
+
|
|
132
208
|
HRESULT __stdcall CompositionRootAutomationProvider::Navigate(
|
|
133
209
|
NavigateDirection direction,
|
|
134
210
|
IRawElementProviderFragment **pRetVal) {
|
|
@@ -144,4 +220,156 @@ HRESULT __stdcall CompositionRootAutomationProvider::Navigate(
|
|
|
144
220
|
return S_OK;
|
|
145
221
|
}
|
|
146
222
|
|
|
223
|
+
// RAII wrapper to unaccess SafeArray data so I can early return in the relevant functions
|
|
224
|
+
class SafeArrayAccessScope {
|
|
225
|
+
SAFEARRAY *m_pArray = nullptr;
|
|
226
|
+
|
|
227
|
+
public:
|
|
228
|
+
SafeArrayAccessScope(SAFEARRAY *psa) noexcept : m_pArray(psa) {}
|
|
229
|
+
~SafeArrayAccessScope() noexcept {
|
|
230
|
+
if (m_pArray != nullptr)
|
|
231
|
+
SafeArrayUnaccessData(m_pArray);
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
void AdviseEventAddedImpl(
|
|
236
|
+
std::vector<CompositionRootAutomationProvider::AdvisedEvent> &advisedEvents,
|
|
237
|
+
EVENTID idEvent) noexcept {
|
|
238
|
+
auto it = std::find_if(
|
|
239
|
+
advisedEvents.begin(),
|
|
240
|
+
advisedEvents.end(),
|
|
241
|
+
[idEvent](const CompositionRootAutomationProvider::AdvisedEvent &ae) noexcept { return ae.Event == idEvent; });
|
|
242
|
+
|
|
243
|
+
if (it == advisedEvents.end()) {
|
|
244
|
+
advisedEvents.emplace_back(CompositionRootAutomationProvider::AdvisedEvent{idEvent, 1 /*Count*/});
|
|
245
|
+
} else {
|
|
246
|
+
it->Count++;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
HRESULT CompositionRootAutomationProvider::AdvisePropertiesAdded(SAFEARRAY *psaProperties) noexcept {
|
|
251
|
+
if (psaProperties == nullptr)
|
|
252
|
+
return E_POINTER;
|
|
253
|
+
|
|
254
|
+
long *pValues = nullptr;
|
|
255
|
+
auto hr = SafeArrayAccessData(psaProperties, reinterpret_cast<void **>(&pValues));
|
|
256
|
+
if (FAILED(hr))
|
|
257
|
+
return hr;
|
|
258
|
+
|
|
259
|
+
SafeArrayAccessScope accessScope(psaProperties);
|
|
260
|
+
|
|
261
|
+
if (SafeArrayGetDim(psaProperties) != 1)
|
|
262
|
+
return E_INVALIDARG;
|
|
263
|
+
|
|
264
|
+
VARTYPE vt;
|
|
265
|
+
hr = SafeArrayGetVartype(psaProperties, &vt);
|
|
266
|
+
if (FAILED(hr) || vt != VT_I4)
|
|
267
|
+
return E_INVALIDARG;
|
|
268
|
+
|
|
269
|
+
long lower;
|
|
270
|
+
hr = SafeArrayGetLBound(psaProperties, 1, &lower);
|
|
271
|
+
if (FAILED(hr))
|
|
272
|
+
return hr;
|
|
273
|
+
|
|
274
|
+
long upper;
|
|
275
|
+
hr = SafeArrayGetUBound(psaProperties, 1, &upper);
|
|
276
|
+
if (FAILED(hr))
|
|
277
|
+
return hr;
|
|
278
|
+
|
|
279
|
+
long count = upper - lower + 1;
|
|
280
|
+
|
|
281
|
+
for (int i = 0; i < count; i++) {
|
|
282
|
+
AdviseEventAddedImpl(m_advisedProperties, pValues[i]);
|
|
283
|
+
}
|
|
284
|
+
return S_OK;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
HRESULT CompositionRootAutomationProvider::AdviseEventAdded(EVENTID idEvent, SAFEARRAY *psaProperties) {
|
|
288
|
+
if (idEvent == UIA_AutomationPropertyChangedEventId) {
|
|
289
|
+
return AdvisePropertiesAdded(psaProperties);
|
|
290
|
+
}
|
|
291
|
+
AdviseEventAddedImpl(m_advisedEvents, idEvent);
|
|
292
|
+
return S_OK;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
HRESULT AdviseEventRemovedImpl(
|
|
296
|
+
std::vector<CompositionRootAutomationProvider::AdvisedEvent> &advisedEvents,
|
|
297
|
+
EVENTID idEvent) noexcept {
|
|
298
|
+
auto it = std::find_if(
|
|
299
|
+
advisedEvents.begin(),
|
|
300
|
+
advisedEvents.end(),
|
|
301
|
+
[idEvent](const CompositionRootAutomationProvider::AdvisedEvent &ae) noexcept { return ae.Event == idEvent; });
|
|
302
|
+
|
|
303
|
+
if (it == advisedEvents.end()) {
|
|
304
|
+
assert(false);
|
|
305
|
+
return UIA_E_INVALIDOPERATION;
|
|
306
|
+
} else if (it->Count == 1) {
|
|
307
|
+
advisedEvents.erase(it);
|
|
308
|
+
} else {
|
|
309
|
+
it->Count--;
|
|
310
|
+
}
|
|
311
|
+
return S_OK;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
HRESULT CompositionRootAutomationProvider::AdvisePropertiesRemoved(SAFEARRAY *psaProperties) noexcept {
|
|
315
|
+
if (psaProperties == nullptr)
|
|
316
|
+
return E_POINTER;
|
|
317
|
+
|
|
318
|
+
long *pValues = nullptr;
|
|
319
|
+
auto hr = SafeArrayAccessData(psaProperties, reinterpret_cast<void **>(&pValues));
|
|
320
|
+
if (FAILED(hr))
|
|
321
|
+
return hr;
|
|
322
|
+
|
|
323
|
+
SafeArrayAccessScope accessScope(psaProperties);
|
|
324
|
+
|
|
325
|
+
if (SafeArrayGetDim(psaProperties) != 1)
|
|
326
|
+
return E_INVALIDARG;
|
|
327
|
+
|
|
328
|
+
VARTYPE vt;
|
|
329
|
+
hr = SafeArrayGetVartype(psaProperties, &vt);
|
|
330
|
+
if (FAILED(hr) || vt != VT_I4)
|
|
331
|
+
return E_INVALIDARG;
|
|
332
|
+
|
|
333
|
+
long lower;
|
|
334
|
+
hr = SafeArrayGetLBound(psaProperties, 1, &lower);
|
|
335
|
+
if (FAILED(hr))
|
|
336
|
+
return hr;
|
|
337
|
+
|
|
338
|
+
long upper;
|
|
339
|
+
hr = SafeArrayGetUBound(psaProperties, 1, &upper);
|
|
340
|
+
if (FAILED(hr))
|
|
341
|
+
return hr;
|
|
342
|
+
|
|
343
|
+
long count = upper - lower + 1;
|
|
344
|
+
auto returnHr = S_OK;
|
|
345
|
+
for (int i = 0; i < count; i++) {
|
|
346
|
+
auto hr = AdviseEventRemovedImpl(m_advisedProperties, pValues[i]);
|
|
347
|
+
if (FAILED(hr)) {
|
|
348
|
+
returnHr = hr;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
return returnHr;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
HRESULT
|
|
355
|
+
CompositionRootAutomationProvider::AdviseEventRemoved(EVENTID idEvent, SAFEARRAY *psaProperties) {
|
|
356
|
+
if (idEvent == UIA_AutomationPropertyChangedEventId) {
|
|
357
|
+
return AdvisePropertiesRemoved(psaProperties);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
return AdviseEventRemovedImpl(m_advisedEvents, idEvent);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
bool CompositionRootAutomationProvider::WasEventAdvised(EVENTID event) noexcept {
|
|
364
|
+
return std::any_of(m_advisedEvents.begin(), m_advisedEvents.end(), [event](const AdvisedEvent &ae) {
|
|
365
|
+
return ae.Event == event && ae.Count > 0;
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
bool CompositionRootAutomationProvider::WasPropertyAdvised(PROPERTYID prop) noexcept {
|
|
370
|
+
return std::any_of(m_advisedProperties.begin(), m_advisedProperties.end(), [prop](const AdvisedEvent &ae) {
|
|
371
|
+
return ae.Property == prop && ae.Count > 0;
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
|
|
147
375
|
} // namespace winrt::Microsoft::ReactNative::implementation
|
|
@@ -13,7 +13,8 @@ class CompositionRootAutomationProvider : public winrt::implements<
|
|
|
13
13
|
IInspectable,
|
|
14
14
|
IRawElementProviderFragmentRoot,
|
|
15
15
|
IRawElementProviderFragment,
|
|
16
|
-
IRawElementProviderSimple
|
|
16
|
+
IRawElementProviderSimple,
|
|
17
|
+
IRawElementProviderAdviseEvents> {
|
|
17
18
|
public:
|
|
18
19
|
// inherited via IRawElementProviderFragmentRoot
|
|
19
20
|
virtual HRESULT __stdcall ElementProviderFromPoint(double x, double y, IRawElementProviderFragment **pRetVal)
|
|
@@ -34,13 +35,47 @@ class CompositionRootAutomationProvider : public winrt::implements<
|
|
|
34
35
|
virtual HRESULT __stdcall GetPropertyValue(PROPERTYID propertyId, VARIANT *pRetVal) override;
|
|
35
36
|
virtual HRESULT __stdcall get_HostRawElementProvider(IRawElementProviderSimple **pRetVal) override;
|
|
36
37
|
|
|
38
|
+
// IRawElementProviderAdviseEvents
|
|
39
|
+
virtual HRESULT __stdcall AdviseEventAdded(EVENTID idEvent, SAFEARRAY *psaProperties) override;
|
|
40
|
+
virtual HRESULT __stdcall AdviseEventRemoved(EVENTID idEvent, SAFEARRAY *psaProperties) override;
|
|
41
|
+
|
|
37
42
|
CompositionRootAutomationProvider(
|
|
38
43
|
const std::shared_ptr<::Microsoft::ReactNative::RootComponentView> &componentView) noexcept;
|
|
44
|
+
|
|
39
45
|
void SetHwnd(HWND hwnd) noexcept;
|
|
46
|
+
#ifdef USE_WINUI3
|
|
47
|
+
void SetIsland(winrt::Microsoft::UI::Content::ContentIsland &island) noexcept;
|
|
48
|
+
#endif
|
|
49
|
+
bool WasPropertyAdvised(PROPERTYID prop) noexcept;
|
|
50
|
+
bool WasEventAdvised(EVENTID event) noexcept;
|
|
51
|
+
|
|
52
|
+
// It's unlikely for the underlying primitive types for EVENTID and PROPERTYID to ever change, but let's make sure
|
|
53
|
+
static_assert(std::is_same<EVENTID, PROPERTYID>::value);
|
|
54
|
+
// Helper class for AdviseEventAdded/Removed. I could've simply used a std::pair, but I find using structs with named
|
|
55
|
+
// members easier to read and more self-documenting than pair.first and pair.last. Since this is simply syntactic
|
|
56
|
+
// sugar, I'm leveraging the fact that both EVENTID and PROPERTYID are ints under the hood to share
|
|
57
|
+
// AdviseEventAddedImpl
|
|
58
|
+
struct AdvisedEvent {
|
|
59
|
+
union {
|
|
60
|
+
EVENTID Event;
|
|
61
|
+
PROPERTYID Property;
|
|
62
|
+
};
|
|
63
|
+
uint32_t Count;
|
|
64
|
+
};
|
|
40
65
|
|
|
41
66
|
private:
|
|
67
|
+
HRESULT AdvisePropertiesAdded(SAFEARRAY *psaProperties) noexcept;
|
|
68
|
+
HRESULT AdvisePropertiesRemoved(SAFEARRAY *psaProperties) noexcept;
|
|
69
|
+
|
|
70
|
+
// Linear search on unsorted vectors is typically faster than more sophisticated data structures when N is small. In
|
|
71
|
+
// practice ATs tend to only listen to a dozen or so props and events, so std::vector is likely better than maps.
|
|
72
|
+
std::vector<AdvisedEvent> m_advisedEvents{};
|
|
73
|
+
std::vector<AdvisedEvent> m_advisedProperties{};
|
|
42
74
|
::Microsoft::ReactNative::ReactTaggedView m_view;
|
|
43
75
|
HWND m_hwnd{nullptr};
|
|
76
|
+
#ifdef USE_WINUI3
|
|
77
|
+
winrt::Microsoft::UI::Content::ContentIsland m_island{nullptr};
|
|
78
|
+
#endif
|
|
44
79
|
};
|
|
45
80
|
|
|
46
81
|
} // namespace winrt::Microsoft::ReactNative::implementation
|
|
@@ -21,6 +21,11 @@
|
|
|
21
21
|
#include "ReactNativeHost.h"
|
|
22
22
|
#include "RootComponentView.h"
|
|
23
23
|
|
|
24
|
+
#ifdef USE_WINUI3
|
|
25
|
+
#include <winrt/Microsoft.UI.Content.h>
|
|
26
|
+
#include "CompositionRootAutomationProvider.h"
|
|
27
|
+
#endif
|
|
28
|
+
|
|
24
29
|
namespace winrt::Microsoft::ReactNative::implementation {
|
|
25
30
|
|
|
26
31
|
//! This class ensures that we access ReactRootView from UI thread.
|
|
@@ -98,6 +103,11 @@ inline Mso::Future<void> CompositionReactViewInstance::PostInUIQueue(TAction &&a
|
|
|
98
103
|
|
|
99
104
|
CompositionRootView::CompositionRootView() noexcept {}
|
|
100
105
|
|
|
106
|
+
#ifdef USE_WINUI3
|
|
107
|
+
CompositionRootView::CompositionRootView(winrt::Microsoft::UI::Composition::Compositor compositor) noexcept
|
|
108
|
+
: m_compositor(compositor) {}
|
|
109
|
+
#endif
|
|
110
|
+
|
|
101
111
|
ReactNative::IReactViewHost CompositionRootView::ReactViewHost() noexcept {
|
|
102
112
|
return m_reactViewHost;
|
|
103
113
|
}
|
|
@@ -138,11 +148,11 @@ void CompositionRootView::Size(winrt::Windows::Foundation::Size value) noexcept
|
|
|
138
148
|
m_size = value;
|
|
139
149
|
}
|
|
140
150
|
|
|
141
|
-
|
|
151
|
+
float CompositionRootView::ScaleFactor() noexcept {
|
|
142
152
|
return m_scaleFactor;
|
|
143
153
|
}
|
|
144
154
|
|
|
145
|
-
void CompositionRootView::ScaleFactor(
|
|
155
|
+
void CompositionRootView::ScaleFactor(float value) noexcept {
|
|
146
156
|
m_scaleFactor = value;
|
|
147
157
|
}
|
|
148
158
|
|
|
@@ -191,15 +201,6 @@ int64_t CompositionRootView::SendMessage(uint32_t msg, uint64_t wParam, int64_t
|
|
|
191
201
|
return 0;
|
|
192
202
|
}
|
|
193
203
|
|
|
194
|
-
void CompositionRootView::OnScrollWheel(Windows::Foundation::Point point, int32_t delta) noexcept {
|
|
195
|
-
if (m_rootTag == -1)
|
|
196
|
-
return;
|
|
197
|
-
|
|
198
|
-
if (m_CompositionEventHandler) {
|
|
199
|
-
m_CompositionEventHandler->ScrollWheel({point.X, point.Y}, delta);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
204
|
void CompositionRootView::InitRootView(
|
|
204
205
|
winrt::Microsoft::ReactNative::IReactContext &&context,
|
|
205
206
|
winrt::Microsoft::ReactNative::ReactViewOptions &&viewOptions) noexcept {
|
|
@@ -303,8 +304,9 @@ void CompositionRootView::ShowInstanceLoading() noexcept {
|
|
|
303
304
|
// TODO: Show loading UI here
|
|
304
305
|
}
|
|
305
306
|
|
|
306
|
-
Windows::Foundation::Size CompositionRootView::Measure(
|
|
307
|
-
|
|
307
|
+
winrt::Windows::Foundation::Size CompositionRootView::Measure(
|
|
308
|
+
winrt::Windows::Foundation::Size const &availableSize) const {
|
|
309
|
+
winrt::Windows::Foundation::Size size{0.0f, 0.0f};
|
|
308
310
|
|
|
309
311
|
if (m_isInitialized && m_rootTag != -1) {
|
|
310
312
|
if (auto fabricuiManager = ::Microsoft::ReactNative::FabricUIManager::FromProperties(
|
|
@@ -336,7 +338,7 @@ Windows::Foundation::Size CompositionRootView::Measure(Windows::Foundation::Size
|
|
|
336
338
|
return size;
|
|
337
339
|
}
|
|
338
340
|
|
|
339
|
-
Windows::Foundation::Size CompositionRootView::Arrange(Windows::Foundation::Size finalSize) const {
|
|
341
|
+
winrt::Windows::Foundation::Size CompositionRootView::Arrange(winrt::Windows::Foundation::Size finalSize) const {
|
|
340
342
|
if (m_isInitialized && m_rootTag != -1) {
|
|
341
343
|
if (auto fabricuiManager = ::Microsoft::ReactNative::FabricUIManager::FromProperties(
|
|
342
344
|
winrt::Microsoft::ReactNative::ReactPropertyBag(m_context.Properties()))) {
|
|
@@ -364,7 +366,42 @@ Windows::Foundation::Size CompositionRootView::Arrange(Windows::Foundation::Size
|
|
|
364
366
|
return finalSize;
|
|
365
367
|
}
|
|
366
368
|
|
|
369
|
+
#ifdef USE_WINUI3
|
|
370
|
+
winrt::Microsoft::UI::Content::ContentIsland CompositionRootView::Island() noexcept {
|
|
371
|
+
if (!m_compositor) {
|
|
372
|
+
return nullptr;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
if (!m_island) {
|
|
376
|
+
auto rootVisual = m_compositor.CreateSpriteVisual();
|
|
377
|
+
rootVisual.RelativeSizeAdjustment({1, 1});
|
|
378
|
+
|
|
379
|
+
RootVisual(winrt::Microsoft::ReactNative::Composition::MicrosoftCompositionContextHelper::CreateVisual(rootVisual));
|
|
380
|
+
m_island = winrt::Microsoft::UI::Content::ContentIsland::Create(rootVisual);
|
|
381
|
+
|
|
382
|
+
m_island.AutomationProviderRequested(
|
|
383
|
+
[this](
|
|
384
|
+
winrt::Microsoft::UI::Content::ContentIsland const &,
|
|
385
|
+
winrt::Microsoft::UI::Content::ContentIslandAutomationProviderRequestedEventArgs const &args) {
|
|
386
|
+
auto provider = GetUiaProvider();
|
|
387
|
+
auto pRootProvider =
|
|
388
|
+
static_cast<winrt::Microsoft::ReactNative::implementation::CompositionRootAutomationProvider *>(
|
|
389
|
+
provider.as<IRawElementProviderSimple>().get());
|
|
390
|
+
if (pRootProvider != nullptr) {
|
|
391
|
+
pRootProvider->SetIsland(m_island);
|
|
392
|
+
}
|
|
393
|
+
args.AutomationProvider(std::move(provider));
|
|
394
|
+
args.Handled(true);
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
return m_island;
|
|
398
|
+
}
|
|
399
|
+
#endif
|
|
400
|
+
|
|
367
401
|
::Microsoft::ReactNative::RootComponentView *CompositionRootView::GetComponentView() noexcept {
|
|
402
|
+
if (!m_context || m_context.Handle().LoadingState() != winrt::Microsoft::ReactNative::LoadingState::Loaded)
|
|
403
|
+
return nullptr;
|
|
404
|
+
|
|
368
405
|
if (auto fabricuiManager = ::Microsoft::ReactNative::FabricUIManager::FromProperties(
|
|
369
406
|
winrt::Microsoft::ReactNative::ReactPropertyBag(m_context.Properties()))) {
|
|
370
407
|
auto rootComponentViewDescriptor = fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(
|