react-native-windows 0.72.14 → 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.
Files changed (587) hide show
  1. package/.flowconfig +16 -5
  2. package/Chakra/ChakraHelpers.cpp +1 -1
  3. package/Chakra/ChakraUtils.cpp +1 -1
  4. package/Chakra/ChakraValue.h +1 -1
  5. package/Common/packages.lock.json +13 -0
  6. package/Directory.Build.props +6 -2
  7. package/Folly/TEMP_UntilFollyUpdate/dynamic-inl.h +1 -10
  8. package/Folly/TEMP_UntilFollyUpdate/hash/Hash.h +1016 -0
  9. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.h +1 -1
  10. package/Folly/cgmanifest.json +1 -1
  11. package/Folly/packages.lock.json +23 -0
  12. package/Libraries/Animated/Animated.js +1 -1
  13. package/Libraries/Animated/AnimatedImplementation.js +1 -1
  14. package/Libraries/Animated/NativeAnimatedHelper.js +14 -10
  15. package/Libraries/Animated/NativeAnimatedModule.js +6 -2
  16. package/Libraries/Animated/NativeAnimatedTurboModule.js +7 -4
  17. package/Libraries/Animated/animations/Animation.js +57 -3
  18. package/Libraries/Animated/animations/DecayAnimation.js +9 -0
  19. package/Libraries/Animated/animations/SpringAnimation.js +8 -0
  20. package/Libraries/Animated/animations/TimingAnimation.js +8 -0
  21. package/Libraries/Animated/components/AnimatedFlatList.js +2 -1
  22. package/Libraries/Animated/components/AnimatedScrollView.js +2 -0
  23. package/Libraries/Animated/components/AnimatedSectionList.js +2 -1
  24. package/Libraries/Animated/createAnimatedComponent.js +1 -0
  25. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  26. package/Libraries/Animated/nodes/AnimatedObject.js +146 -0
  27. package/Libraries/Animated/nodes/AnimatedProps.js +19 -7
  28. package/Libraries/Animated/nodes/AnimatedStyle.js +29 -55
  29. package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -17
  30. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +17 -0
  31. package/Libraries/Animated/useAnimatedProps.js +9 -10
  32. package/Libraries/AppState/AppState.d.ts +1 -1
  33. package/Libraries/AppState/NativeAppState.js +8 -4
  34. package/Libraries/AppTheme/AppTheme.js +5 -5
  35. package/Libraries/BatchedBridge/MessageQueue.js +45 -36
  36. package/Libraries/Blob/Blob.js +6 -2
  37. package/Libraries/Blob/BlobManager.js +9 -10
  38. package/Libraries/Blob/BlobRegistry.js +14 -9
  39. package/Libraries/Blob/File.js +1 -1
  40. package/Libraries/Blob/FileReader.js +1 -2
  41. package/Libraries/Components/Clipboard/Clipboard.d.ts +4 -4
  42. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +3 -1
  43. package/Libraries/Components/Glyph/Glyph.js +1 -1
  44. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +26 -6
  45. package/Libraries/Components/Keyboard/KeyboardExt.d.ts +4 -1
  46. package/Libraries/Components/Keyboard/KeyboardExt.js +3 -0
  47. package/Libraries/Components/Keyboard/KeyboardExt.js.map +1 -1
  48. package/Libraries/Components/Keyboard/KeyboardExtProps.d.ts +4 -29
  49. package/Libraries/Components/Keyboard/KeyboardExtProps.js +0 -17
  50. package/Libraries/Components/Keyboard/KeyboardExtProps.js.map +1 -1
  51. package/Libraries/Components/Pressable/Pressable.js +3 -2
  52. package/Libraries/Components/Pressable/Pressable.windows.js +4 -3
  53. package/Libraries/Components/Pressable/useAndroidRippleForView.js +1 -1
  54. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +20 -0
  55. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.windows.js +7 -1
  56. package/Libraries/Components/SafeAreaView/SafeAreaView.js +7 -7
  57. package/Libraries/Components/SafeAreaView/SafeAreaView.windows.js +7 -10
  58. package/Libraries/Components/ScrollView/ScrollView.js +3 -1
  59. package/Libraries/Components/ScrollView/ScrollView.windows.js +3 -1
  60. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +39 -46
  61. package/Libraries/Components/Switch/Switch.js +1 -0
  62. package/Libraries/Components/Switch/Switch.windows.js +259 -0
  63. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -0
  64. package/Libraries/Components/TextInput/TextInput.d.ts +49 -7
  65. package/Libraries/Components/TextInput/TextInput.flow.js +43 -10
  66. package/Libraries/Components/TextInput/TextInput.js +62 -10
  67. package/Libraries/Components/TextInput/TextInput.windows.js +100 -14
  68. package/Libraries/Components/ToastAndroid/{ToastAndroid.ios.js → ToastAndroid.js} +9 -1
  69. package/Libraries/Components/ToastAndroid/ToastAndroid.windows.js +9 -1
  70. package/Libraries/Components/Touchable/TouchableBounce.js +1 -1
  71. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  72. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +1 -1
  73. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
  74. package/Libraries/Components/Touchable/TouchableOpacity.js +4 -1
  75. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +4 -1
  76. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -0
  77. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +1 -0
  78. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +16 -6
  79. package/Libraries/Components/View/ReactNativeStyleAttributes.js +9 -0
  80. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  81. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
  82. package/Libraries/Components/View/View.js +46 -32
  83. package/Libraries/Components/View/View.windows.js +23 -7
  84. package/Libraries/Components/View/ViewAccessibility.d.ts +27 -1
  85. package/Libraries/Components/View/ViewAccessibility.windows.js +3 -0
  86. package/Libraries/Components/View/ViewNativeComponent.js +1 -0
  87. package/Libraries/Components/View/ViewPropTypes.d.ts +104 -1
  88. package/Libraries/Components/View/ViewPropTypes.js +18 -3
  89. package/Libraries/Components/View/ViewPropTypes.windows.js +33 -3
  90. package/Libraries/Core/Devtools/loadBundleFromServer.js +152 -0
  91. package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -1
  92. package/Libraries/Core/ExceptionsManager.js +16 -7
  93. package/Libraries/Core/ExtendedError.js +12 -0
  94. package/Libraries/Core/ReactNativeVersion.js +3 -3
  95. package/Libraries/Core/ReactNativeVersionCheck.js +0 -2
  96. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +20 -0
  97. package/Libraries/Core/setUpDeveloperTools.js +5 -1
  98. package/Libraries/Core/setUpIntersectionObserver.js +16 -0
  99. package/Libraries/Core/setUpMutationObserver.js +16 -0
  100. package/Libraries/Core/setUpPerformance.js +6 -13
  101. package/Libraries/Core/setUpPerformanceObserver.js +16 -0
  102. package/Libraries/Core/setUpRegeneratorRuntime.js +4 -2
  103. package/Libraries/DOM/Nodes/ReactNativeElement.js +135 -18
  104. package/Libraries/DOM/Nodes/ReadOnlyCharacterData.js +72 -0
  105. package/Libraries/DOM/Nodes/ReadOnlyElement.js +209 -21
  106. package/Libraries/DOM/Nodes/ReadOnlyNode.js +206 -17
  107. package/Libraries/DOM/Nodes/ReadOnlyText.js +30 -0
  108. package/Libraries/DOM/Nodes/Utilities/Traversal.js +54 -0
  109. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +0 -6
  110. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +15 -4
  111. package/Libraries/Image/Image.android.js +8 -2
  112. package/Libraries/Image/Image.d.ts +1 -1
  113. package/Libraries/Image/Image.ios.js +4 -1
  114. package/Libraries/Image/Image.windows.js +6 -3
  115. package/Libraries/Image/ImageBackground.js +3 -0
  116. package/Libraries/Inspector/DevtoolsOverlay.js +6 -3
  117. package/Libraries/Inspector/NetworkOverlay.js +2 -2
  118. package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -5
  119. package/Libraries/Interaction/PanResponder.js +1 -4
  120. package/Libraries/IntersectionObserver/IntersectionObserver.js +252 -0
  121. package/Libraries/IntersectionObserver/IntersectionObserverEntry.js +140 -0
  122. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +221 -0
  123. package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +41 -0
  124. package/Libraries/IntersectionObserver/__mocks__/NativeIntersectionObserver.js +162 -0
  125. package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -1
  126. package/Libraries/Lists/FlatList.d.ts +2 -1
  127. package/Libraries/Lists/FlatList.js +15 -5
  128. package/Libraries/Lists/SectionList.js +4 -0
  129. package/Libraries/LogBox/Data/LogBoxLog.js +4 -1
  130. package/Libraries/LogBox/Data/LogBoxSymbolication.js +5 -2
  131. package/Libraries/LogBox/Data/parseLogBoxLog.js +57 -20
  132. package/Libraries/LogBox/UI/AnsiHighlight.js +1 -1
  133. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +24 -31
  134. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  135. package/Libraries/LogBox/UI/LogBoxMessage.js +4 -7
  136. package/Libraries/MutationObserver/MutationObserver.js +184 -0
  137. package/Libraries/MutationObserver/MutationObserverManager.js +218 -0
  138. package/Libraries/MutationObserver/MutationRecord.js +82 -0
  139. package/Libraries/MutationObserver/NativeMutationObserver.js +58 -0
  140. package/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +327 -0
  141. package/Libraries/NativeComponent/BaseViewConfig.android.js +18 -3
  142. package/Libraries/NativeComponent/BaseViewConfig.ios.js +33 -0
  143. package/Libraries/NativeComponent/BaseViewConfig.windows.js +34 -4
  144. package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -5
  145. package/Libraries/NativeModules/specs/NativeSourceCode.js +6 -6
  146. package/Libraries/Network/RCTNetworking.android.js +2 -1
  147. package/Libraries/Network/XMLHttpRequest.js +1 -1
  148. package/Libraries/NewAppScreen/components/DebugInstructions.js +4 -4
  149. package/Libraries/NewAppScreen/components/DebugInstructions.windows.js +2 -2
  150. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +9 -2
  151. package/Libraries/Performance/QuickPerformanceLogger.js +1 -1
  152. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
  153. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +1 -0
  154. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -1
  155. package/Libraries/Pressability/Pressability.js +28 -3
  156. package/Libraries/Pressability/Pressability.windows.js +30 -5
  157. package/Libraries/ReactNative/AppContainer.js +2 -3
  158. package/Libraries/ReactNative/AppRegistry.d.ts +0 -5
  159. package/Libraries/ReactNative/AppRegistry.js +66 -53
  160. package/Libraries/ReactNative/BridgelessUIManager.js +38 -9
  161. package/Libraries/ReactNative/FabricUIManager.js +143 -34
  162. package/Libraries/ReactNative/I18nManager.js +5 -11
  163. package/Libraries/ReactNative/NativeI18nManager.js +7 -5
  164. package/Libraries/ReactNative/PaperUIManager.windows.js +2 -2
  165. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +151 -0
  166. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +81 -0
  167. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +492 -0
  168. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +32 -0
  169. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +19 -3
  170. package/Libraries/ReactNative/UIManager.js +8 -0
  171. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +648 -0
  172. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +38 -2
  173. package/Libraries/Renderer/implementations/ReactFabric-dev.js +27 -27
  174. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -3
  175. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -3
  176. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +27 -27
  177. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3 -3
  178. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3 -3
  179. package/Libraries/Renderer/shims/ReactFabric.js +5 -6
  180. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -3
  181. package/Libraries/Renderer/shims/ReactNative.js +2 -3
  182. package/Libraries/Renderer/shims/ReactNativeTypes.js +35 -17
  183. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -3
  184. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -3
  185. package/Libraries/Settings/{Settings.android.js → Settings.js} +4 -4
  186. package/Libraries/Share/Share.d.ts +3 -9
  187. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +9 -4
  188. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +28 -13
  189. package/Libraries/StyleSheet/PlatformColorValueTypes.windows.js +10 -6
  190. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -1
  191. package/Libraries/StyleSheet/StyleSheet.d.ts +10 -1
  192. package/Libraries/StyleSheet/StyleSheet.js +3 -0
  193. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +31 -17
  194. package/Libraries/StyleSheet/StyleSheetTypes.js +90 -6
  195. package/Libraries/StyleSheet/flattenStyle.js +4 -0
  196. package/Libraries/StyleSheet/private/_TransformStyle.js +16 -2
  197. package/Libraries/StyleSheet/processColor.js +1 -2
  198. package/Libraries/StyleSheet/processTransformOrigin.js +136 -0
  199. package/Libraries/StyleSheet/splitLayoutProps.js +1 -0
  200. package/Libraries/Text/Text.d.ts +5 -5
  201. package/Libraries/Text/Text.js +17 -10
  202. package/Libraries/Text/Text.windows.js +53 -20
  203. package/Libraries/Text/TextProps.windows.js +275 -0
  204. package/Libraries/TurboModule/TurboModuleRegistry.js +47 -7
  205. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
  206. package/Libraries/Types/CoreEventTypes.d.ts +5 -2
  207. package/Libraries/Utilities/GlobalPerformanceLogger.js +2 -12
  208. package/Libraries/Utilities/NativeDeviceInfo.js +8 -9
  209. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +23 -18
  210. package/Libraries/Utilities/NativePlatformConstantsIOS.js +16 -13
  211. package/Libraries/Utilities/NativePlatformConstantsWin.js +13 -10
  212. package/Libraries/Utilities/PerformanceLoggerContext.js +1 -1
  213. package/Libraries/Utilities/Platform.android.js +12 -8
  214. package/Libraries/Utilities/Platform.d.ts +1 -0
  215. package/Libraries/Utilities/Platform.flow.js +84 -0
  216. package/Libraries/Utilities/Platform.flow.windows.js +111 -0
  217. package/Libraries/Utilities/Platform.ios.js +12 -8
  218. package/Libraries/Utilities/Platform.windows.js +12 -8
  219. package/Libraries/Utilities/PolyfillFunctions.js +1 -1
  220. package/Libraries/Utilities/ReactNativeTestTools.js +1 -2
  221. package/Libraries/Utilities/SceneTracker.js +1 -1
  222. package/Libraries/Utilities/createPerformanceLogger.js +63 -32
  223. package/Libraries/Utilities/useColorScheme.js +7 -8
  224. package/Libraries/WebPerformance/MemoryInfo.js +1 -1
  225. package/Libraries/WebPerformance/NativePerformance.js +3 -8
  226. package/Libraries/WebPerformance/NativePerformanceObserver.js +4 -0
  227. package/Libraries/WebPerformance/Performance.js +42 -15
  228. package/Libraries/WebPerformance/PerformanceEntry.js +14 -6
  229. package/Libraries/WebPerformance/PerformanceEventTiming.js +18 -1
  230. package/Libraries/WebPerformance/ReactNativeStartupTiming.js +40 -14
  231. package/Libraries/WebPerformance/__mocks__/NativePerformance.js +4 -2
  232. package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +21 -3
  233. package/Libraries/__tests__/ViewWindows-test.js +3 -3
  234. package/Libraries/platform-types.d.ts +6 -2
  235. package/Libraries/promiseRejectionTrackingOptions.js +1 -3
  236. package/Libraries/vendor/emitter/EventEmitter.js +17 -17
  237. package/Microsoft.ReactNative/Composition.Input.idl +103 -0
  238. package/Microsoft.ReactNative/CompositionContext.idl +31 -8
  239. package/Microsoft.ReactNative/CompositionRootView.idl +8 -4
  240. package/Microsoft.ReactNative/CompositionSwitcher.idl +28 -17
  241. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.cpp +15 -28
  242. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +7 -10
  243. package/Microsoft.ReactNative/Fabric/ComponentView.h +42 -4
  244. package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.cpp +57 -4
  245. package/Microsoft.ReactNative/Fabric/Composition/AbiCompositionViewComponentView.h +22 -1
  246. package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.cpp +137 -0
  247. package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.h +59 -0
  248. package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +8 -2
  249. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp +575 -0
  250. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h +170 -0
  251. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +890 -226
  252. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.h +38 -6
  253. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +79 -0
  254. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +130 -27
  255. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +6 -1
  256. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +382 -228
  257. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +35 -8
  258. package/Microsoft.ReactNative/Fabric/Composition/CompositionHelpers.h +46 -8
  259. package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +5 -21
  260. package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.h +1 -1
  261. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.cpp +232 -4
  262. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.h +36 -1
  263. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.cpp +51 -14
  264. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.h +15 -6
  265. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView_emptyimpl.cpp +123 -0
  266. package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService_emptyimpl.cpp +18 -0
  267. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +333 -137
  268. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +52 -8
  269. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +32 -26
  270. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +5 -3
  271. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +183 -175
  272. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +7 -4
  273. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +101 -2
  274. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +46 -2
  275. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +36 -9
  276. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +8 -2
  277. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +247 -42
  278. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +25 -8
  279. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +78 -50
  280. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.h +12 -4
  281. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +26 -28
  282. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +429 -89
  283. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +24 -3
  284. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.cpp +1 -0
  285. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.h +3 -2
  286. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +5 -7
  287. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +4 -6
  288. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +1 -7
  289. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.h +1 -17
  290. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +74 -3
  291. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +12 -0
  292. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +53 -59
  293. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.h +3 -2
  294. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +5 -4
  295. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -1
  296. package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +1 -1
  297. package/Microsoft.ReactNative/Fabric/ReactTaggedView.h +1 -1
  298. package/Microsoft.ReactNative/Fabric/WindowsComponentDescriptorRegistry.cpp +3 -4
  299. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformTouch.h +10 -0
  300. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +59 -0
  301. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.h +31 -0
  302. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +69 -0
  303. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h +25 -2
  304. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +23 -0
  305. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/KeyEvent.h +113 -0
  306. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/WindowsViewEvents.h +75 -0
  307. package/Microsoft.ReactNative/Fabric/platform/react/renderer/core/graphicsConversions.h +18 -21
  308. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.cpp +158 -7
  309. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.h +15 -17
  310. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +1 -1
  311. package/Microsoft.ReactNative/GlyphViewManager.cpp +1 -1
  312. package/Microsoft.ReactNative/IJSValueReader.idl +2 -2
  313. package/Microsoft.ReactNative/IJSValueWriter.idl +2 -2
  314. package/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +23 -1
  315. package/Microsoft.ReactNative/IReactContext.cpp +1 -1
  316. package/Microsoft.ReactNative/IReactNotificationService.cpp +4 -3
  317. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -4
  318. package/Microsoft.ReactNative/Modules/AlertModule.cpp +2 -2
  319. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.cpp +1 -2
  320. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.h +1 -1
  321. package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.cpp +3 -4
  322. package/Microsoft.ReactNative/Modules/AppStateModule.cpp +1 -1
  323. package/Microsoft.ReactNative/Modules/AppStateModule.h +2 -2
  324. package/Microsoft.ReactNative/Modules/AppearanceModule.h +1 -1
  325. package/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp +4 -2
  326. package/Microsoft.ReactNative/Modules/DeviceInfoModule.h +1 -1
  327. package/Microsoft.ReactNative/Modules/I18nManagerModule.cpp +2 -2
  328. package/Microsoft.ReactNative/Modules/I18nManagerModule.h +1 -1
  329. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +21 -15
  330. package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +10 -6
  331. package/Microsoft.ReactNative/Modules/PaperUIManagerModule.h +4 -1
  332. package/Microsoft.ReactNative/QuirkSettings.idl +1 -1
  333. package/Microsoft.ReactNative/ReactApplication.cpp +13 -11
  334. package/Microsoft.ReactNative/ReactApplication.h +4 -4
  335. package/Microsoft.ReactNative/ReactCoreInjection.h +6 -5
  336. package/Microsoft.ReactNative/ReactHost/JSCallInvokerScheduler.cpp +2 -2
  337. package/Microsoft.ReactNative/ReactHost/MsoUtils.cpp +1 -1
  338. package/Microsoft.ReactNative/ReactHost/React.h +3 -6
  339. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +0 -16
  340. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +8 -16
  341. package/Microsoft.ReactNative/ReactInstanceSettings.cpp +6 -5
  342. package/Microsoft.ReactNative/ReactInstanceSettings.h +7 -7
  343. package/Microsoft.ReactNative/ReactNativeHost.h +4 -4
  344. package/Microsoft.ReactNative/ReactRootView.cpp +5 -4
  345. package/Microsoft.ReactNative/ReactRootView.h +2 -2
  346. package/Microsoft.ReactNative/ReactSupport.h +1 -1
  347. package/Microsoft.ReactNative/RedBox.cpp +1 -1
  348. package/Microsoft.ReactNative/RedBoxHandler.idl +1 -1
  349. package/Microsoft.ReactNative/Utils/UwpPreparedScriptStore.h +1 -1
  350. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +49 -21
  351. package/Microsoft.ReactNative/Utils/ValueUtils.h +2 -1
  352. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +31 -59
  353. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.h +3 -4
  354. package/Microsoft.ReactNative/Views/DynamicAutomationProperties.cpp +15 -46
  355. package/Microsoft.ReactNative/Views/DynamicAutomationProperties.h +5 -13
  356. package/Microsoft.ReactNative/Views/FlyoutViewManager.cpp +4 -4
  357. package/Microsoft.ReactNative/Views/FrameworkElementTransferProperties.cpp +2 -8
  358. package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +127 -86
  359. package/Microsoft.ReactNative/Views/ICompositionRootView.h +1 -1
  360. package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +1 -1
  361. package/Microsoft.ReactNative/Views/Image/Microsoft.UI.Composition.Effects_Impl.h +2 -2
  362. package/Microsoft.ReactNative/Views/Image/ReactImage.cpp +1 -1
  363. package/Microsoft.ReactNative/Views/SIPEventHandler.cpp +5 -5
  364. package/Microsoft.ReactNative/Views/SIPEventHandler.h +1 -1
  365. package/Microsoft.ReactNative/Views/ShadowNodeBase.h +8 -5
  366. package/Microsoft.ReactNative/Views/SwitchViewManager.cpp +2 -2
  367. package/Microsoft.ReactNative/Views/Text/TextTransformVisitor.cpp +1 -1
  368. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +32 -14
  369. package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +1 -1
  370. package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +14 -2
  371. package/Microsoft.ReactNative/Views/ViewManagerBase.h +1 -1
  372. package/Microsoft.ReactNative/Views/ViewPanel.cpp +20 -219
  373. package/Microsoft.ReactNative/Views/ViewPanel.h +0 -30
  374. package/Microsoft.ReactNative/Views/ViewViewManager.cpp +17 -158
  375. package/Microsoft.ReactNative/Views/cppwinrt/DynamicAutomationPeer.idl +9 -12
  376. package/Microsoft.ReactNative/Views/cppwinrt/ViewPanel.idl +1 -9
  377. package/Microsoft.ReactNative/XamlHelper.cpp +1 -1
  378. package/Microsoft.ReactNative/XamlHelper.h +1 -1
  379. package/Microsoft.ReactNative/packages.lock.json +128 -0
  380. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +1 -1
  381. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +1 -1
  382. package/Microsoft.ReactNative.Cxx/JSI/JsiApiContext.cpp +2 -2
  383. package/Microsoft.ReactNative.Cxx/JSValue.h +2 -2
  384. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +0 -1
  385. package/Microsoft.ReactNative.Cxx/NativeModules.h +4 -4
  386. package/Microsoft.ReactNative.Cxx/ReactHandleHelper.h +1 -1
  387. package/Microsoft.ReactNative.Cxx/ReactNonAbiValue.h +2 -2
  388. package/Microsoft.ReactNative.Cxx/ReactNotificationService.h +10 -9
  389. package/Microsoft.ReactNative.Cxx/ReactPropertyBag.h +13 -12
  390. package/Microsoft.ReactNative.Managed/JSValueReaderGenerator.cs +5 -5
  391. package/Microsoft.ReactNative.Managed/JSValueWriterGenerator.cs +5 -5
  392. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +8 -2
  393. package/Microsoft.ReactNative.Managed/ReactPackageBuilderExtensions.cs +1 -1
  394. package/Microsoft.ReactNative.Managed/ReflectionReactPackageProvider.cs +1 -1
  395. package/Microsoft.ReactNative.Managed/packages.lock.json +9 -9
  396. package/Microsoft.ReactNative.Managed.CodeGen/CodeAnalyzer.cs +2 -0
  397. package/Microsoft.ReactNative.Managed.CodeGen/CodeGenerator.Module.cs +4 -2
  398. package/Microsoft.ReactNative.Managed.CodeGen/CodeGenerator.ViewManager.cs +1 -1
  399. package/Microsoft.ReactNative.Managed.CodeGen/DiagnosticDescriptors.cs +1 -1
  400. package/Microsoft.ReactNative.Managed.CodeGen/packages.lock.json +3197 -0
  401. package/Mso/compilerAdapters/compilerFeatures.h +1 -1
  402. package/Mso/compilerAdapters/functionDecorations.h +6 -6
  403. package/Mso/debugAssertApi/debugAssertDetails.h +1 -1
  404. package/Mso/dispatchQueue/dispatchQueue.h +3 -3
  405. package/Mso/motifCpp/motifCppTest.h +1 -1
  406. package/Mso/motifCpp/testCheck.h +1 -1
  407. package/Mso/oacr/oacr.h +1 -1
  408. package/Mso/smartPtr/smartPointerBase.h +1 -1
  409. package/Mso/src/dispatchQueue/looperScheduler.cpp +2 -2
  410. package/Mso/src/dispatchQueue/queueService.cpp +1 -1
  411. package/Mso/src/dispatchQueue/taskQueue.h +1 -1
  412. package/Mso/src/dispatchQueue/threadPoolScheduler_win.cpp +2 -2
  413. package/Mso/src/dispatchQueue/uiScheduler_winrt.cpp +122 -45
  414. package/Mso/src/eventWaitHandle/eventWaitHandleImpl_win.cpp +2 -2
  415. package/Mso/src/future/futureImpl.cpp +5 -5
  416. package/Mso/src/future/futureImpl.h +1 -1
  417. package/PropertySheets/External/Microsoft.ReactNative.Common.props +3 -0
  418. package/PropertySheets/External/{Microsoft.ReactNative.WinAppSDK.Common.props → Microsoft.ReactNative.Composition.Common.props} +2 -2
  419. package/PropertySheets/External/{Microsoft.ReactNative.WinAppSDK.CSharpApp.props → Microsoft.ReactNative.Composition.CppApp.props} +7 -10
  420. package/PropertySheets/External/Microsoft.ReactNative.Composition.CppApp.targets +19 -0
  421. package/PropertySheets/External/Microsoft.ReactNative.Composition.Package.props +14 -0
  422. package/PropertySheets/External/Microsoft.ReactNative.Composition.Package.targets +18 -0
  423. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +1 -1
  424. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  425. package/PropertySheets/HybridCRT.props +34 -0
  426. package/PropertySheets/JSEngine.props +1 -2
  427. package/PropertySheets/React.Cpp.props +0 -1
  428. package/PropertySheets/Warnings.props +1 -1
  429. package/PropertySheets/WinUI.props +1 -1
  430. package/ReactCommon/ReactCommon.vcxproj +15 -9
  431. package/ReactCommon/ReactCommon.vcxproj.filters +0 -3
  432. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +32 -5
  433. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +20 -0
  434. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaLayoutableShadowNode.cpp +1038 -0
  435. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/YogaStylableProps.cpp +228 -38
  436. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/conversions.h +895 -0
  437. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mounting/ShadowTree.cpp +543 -0
  438. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/uimanager/UIManagerBinding.cpp +1509 -0
  439. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/bits/NumericBitfield.h +67 -0
  440. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.h +93 -0
  441. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.h +88 -0
  442. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.cpp +606 -0
  443. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.h +344 -0
  444. package/ReactCommon/Yoga.cpp +497 -3895
  445. package/ReactCommon/packages.lock.json +30 -0
  446. package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +22 -0
  447. package/Scripts/OfficeReact.Win32.nuspec +1 -0
  448. package/Scripts/rnw-dependencies.ps1 +79 -26
  449. package/Shared/BaseScriptStoreImpl.cpp +42 -13
  450. package/Shared/BaseScriptStoreImpl.h +1 -1
  451. package/Shared/Composition/AutoDraw.h +36 -0
  452. package/Shared/CxxMessageQueue.cpp +1 -1
  453. package/Shared/DevSettings.h +3 -0
  454. package/Shared/DevSupportManager.h +1 -1
  455. package/Shared/Hasher.cpp +64 -0
  456. package/Shared/Hasher.h +24 -0
  457. package/Shared/HermesRuntimeHolder.cpp +6 -6
  458. package/Shared/IDevSupportManager.h +1 -1
  459. package/Shared/JSI/ChakraApi.cpp +1 -1
  460. package/Shared/JSI/ChakraRuntime.cpp +10 -10
  461. package/Shared/JSI/ChakraRuntime.h +6 -6
  462. package/Shared/JSI/V8RuntimeHolder.cpp +1 -1
  463. package/Shared/Modules/IRequestBodyHandler.h +1 -1
  464. package/Shared/Modules/IUriHandler.h +1 -1
  465. package/Shared/Modules/PlatformConstantsModule.cpp +1 -1
  466. package/Shared/Modules/WebSocketModule.cpp +1 -1
  467. package/Shared/Networking/DefaultBlobResource.cpp +2 -2
  468. package/Shared/Networking/OriginPolicyHttpFilter.cpp +22 -16
  469. package/Shared/Networking/OriginPolicyHttpFilter.h +12 -11
  470. package/Shared/OInstance.cpp +9 -23
  471. package/Shared/OInstance.h +1 -1
  472. package/Shared/PackagerConnection.h +1 -1
  473. package/Shared/SafeLoadLibrary.cpp +8 -44
  474. package/Shared/SafeLoadLibrary.h +1 -5
  475. package/Shared/Shared.vcxitems +50 -20
  476. package/Shared/Shared.vcxitems.filters +26 -17
  477. package/Shared/Threading/BatchingQueueThread.cpp +5 -5
  478. package/Shared/Threading/BatchingQueueThread.h +4 -4
  479. package/Shared/TurboModuleManager.cpp +1 -1
  480. package/Shared/Utils.cpp +1 -1
  481. package/Shared/tracing/fbsystrace.h +1 -1
  482. package/codegen/NativeAnimatedModuleSpec.g.h +2 -0
  483. package/codegen/NativeAnimatedTurboModuleSpec.g.h +2 -0
  484. package/codegen/NativeAppStateSpec.g.h +11 -21
  485. package/codegen/NativeDeviceInfoSpec.g.h +4 -14
  486. package/codegen/NativeI18nManagerSpec.g.h +6 -16
  487. package/codegen/NativeIntersectionObserverSpec.g.h +96 -0
  488. package/codegen/NativeMutationObserverSpec.g.h +90 -0
  489. package/codegen/NativePerformanceObserverSpec.g.h +19 -13
  490. package/codegen/NativePerformanceSpec.g.h +6 -23
  491. package/codegen/NativePlatformConstantsAndroidSpec.g.h +22 -30
  492. package/codegen/NativePlatformConstantsIOSSpec.g.h +17 -25
  493. package/codegen/NativePlatformConstantsWinSpec.g.h +14 -22
  494. package/codegen/NativeSampleTurboModuleSpec.g.h +36 -0
  495. package/codegen/NativeSourceCodeSpec.g.h +3 -13
  496. package/codegen/react/components/rnwcore/EventEmitters.cpp +85 -58
  497. package/codegen/react/components/rnwcore/EventEmitters.h +17 -35
  498. package/codegen/react/components/rnwcore/Props.h +16 -17
  499. package/codegen/rnwcoreJSI-generated.cpp +1462 -319
  500. package/codegen/rnwcoreJSI.h +1609 -462
  501. package/fmt/packages.lock.json +13 -0
  502. package/index.windows.js +3 -3
  503. package/{Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.ios.js → jest/ReactNativeInternalFeatureFlagsMock.js} +2 -1
  504. package/jest/__tests__/setup-test.js +18 -0
  505. package/jest/mockModal.js +6 -4
  506. package/jest/setup.js +61 -30
  507. package/just-task.js +1 -0
  508. package/package.json +37 -42
  509. package/template/cs-app/proj/MyApp.csproj +0 -1
  510. package/template/cs-lib/proj/MyLib.csproj +0 -1
  511. package/templates/.clang-format +4 -0
  512. package/templates/cpp-app/metro.config.js +51 -0
  513. package/templates/cpp-app/template.config.js +119 -0
  514. package/templates/cpp-app/windows/ExperimentalFeatures.props +12 -0
  515. package/templates/cpp-app/windows/MyApp/MyApp.cpp +284 -0
  516. package/templates/cpp-app/windows/MyApp/MyApp.h +3 -0
  517. package/templates/cpp-app/windows/MyApp/MyApp.ico +0 -0
  518. package/templates/cpp-app/windows/MyApp/MyApp.rc +0 -0
  519. package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +142 -0
  520. package/templates/cpp-app/windows/MyApp/MyApp.vcxproj.filters +55 -0
  521. package/templates/cpp-app/windows/MyApp/_gitignore +1 -0
  522. package/templates/cpp-app/windows/MyApp/pch.cpp +1 -0
  523. package/templates/cpp-app/windows/MyApp/pch.h +35 -0
  524. package/templates/cpp-app/windows/MyApp/resource.h +18 -0
  525. package/templates/cpp-app/windows/MyApp/small.ico +0 -0
  526. package/templates/cpp-app/windows/MyApp/targetver.h +8 -0
  527. package/templates/cpp-app/windows/MyApp.Package/Images/LockScreenLogo.scale-200.png +0 -0
  528. package/templates/cpp-app/windows/MyApp.Package/Images/SplashScreen.scale-200.png +0 -0
  529. package/templates/cpp-app/windows/MyApp.Package/Images/Square150x150Logo.scale-200.png +0 -0
  530. package/templates/cpp-app/windows/MyApp.Package/Images/Square44x44Logo.scale-200.png +0 -0
  531. package/templates/cpp-app/windows/MyApp.Package/Images/Square44x44Logo.targetsize-24_altform-unplated.png +0 -0
  532. package/templates/cpp-app/windows/MyApp.Package/Images/StoreLogo.png +0 -0
  533. package/templates/cpp-app/windows/MyApp.Package/Images/Wide310x150Logo.scale-200.png +0 -0
  534. package/templates/cpp-app/windows/MyApp.Package/MyApp.Package.wapproj +78 -0
  535. package/{template/cs-app-WinAppSDK/MyApp → templates/cpp-app/windows/MyApp.Package}/Package.appxmanifest +9 -8
  536. package/templates/cpp-app/windows/MyApp.sln +176 -0
  537. package/templates/cpp-app/windows/_gitignore +41 -0
  538. package/templates/old/generateWrapper.js +67 -0
  539. package/templates/old/uwp-cpp-app/template.config.js +15 -0
  540. package/templates/old/uwp-cpp-lib/template.config.js +15 -0
  541. package/templates/old/uwp-cs-app/template.config.js +15 -0
  542. package/templates/old/uwp-cs-lib/template.config.js +15 -0
  543. package/types/experimental.d.ts +44 -0
  544. package/types/index.d.ts +2 -1
  545. package/types/modules/Devtools.d.ts +1 -0
  546. package/types/modules/globals.d.ts +16 -1
  547. package/Libraries/Components/View/ViewWindows.d.ts +0 -19
  548. package/Libraries/Components/View/ViewWindows.js +0 -22
  549. package/Libraries/Components/View/ViewWindows.js.map +0 -1
  550. package/Libraries/Components/View/ViewWindowsProps.d.ts +0 -69
  551. package/Libraries/Components/View/ViewWindowsProps.js +0 -8
  552. package/Libraries/Components/View/ViewWindowsProps.js.map +0 -1
  553. package/Libraries/Utilities/AcessibilityMapping.js +0 -154
  554. package/Libraries/Utilities/NativeDevSplitBundleLoader.js +0 -19
  555. package/Libraries/Utilities/useColorScheme.windows.js +0 -26
  556. package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/WindowsViewProps.cpp +0 -61
  557. package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/WindowsViewProps.h +0 -34
  558. package/Microsoft.ReactNative/Fabric/platform/react/components/view/windows/primitives.h +0 -42
  559. package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharp.PackageReferences.props +0 -11
  560. package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharpApp.targets +0 -51
  561. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.cpp +0 -237
  562. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.h +0 -59
  563. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewEventEmitter.cpp +0 -159
  564. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewEventEmitter.h +0 -94
  565. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewProps.cpp +0 -465
  566. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewProps.h +0 -116
  567. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/ViewShadowNode.cpp +0 -98
  568. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/primitives.h +0 -326
  569. package/Scripts/Microsoft.ReactNative.WindowsAppSDK.nuspec +0 -30
  570. package/Shared/V8JSIRuntimeHolder.cpp +0 -71
  571. package/Shared/V8JSIRuntimeHolder.h +0 -56
  572. package/codegen/NativeDevSplitBundleLoaderSpec.g.h +0 -34
  573. package/template/cs-app-WinAppSDK/MyApp/App.xaml +0 -16
  574. package/template/cs-app-WinAppSDK/MyApp/App.xaml.cs +0 -70
  575. package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml +0 -14
  576. package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml.cs +0 -38
  577. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-arm64.pubxml +0 -19
  578. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x64.pubxml +0 -19
  579. package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x86.pubxml +0 -19
  580. package/template/cs-app-WinAppSDK/MyApp/Properties/launchSettings.json +0 -10
  581. package/template/cs-app-WinAppSDK/MyApp/app.manifest +0 -15
  582. package/template/cs-app-WinAppSDK/proj/ExperimentalFeatures.props +0 -24
  583. package/template/cs-app-WinAppSDK/proj/MyApp.csproj +0 -53
  584. package/template/cs-app-WinAppSDK/proj/MyApp.sln +0 -43
  585. package/template/cs-app-WinAppSDK/proj/NuGet_Config +0 -19
  586. /package/Libraries/Components/DrawerAndroid/{DrawerLayoutAndroid.ios.js → DrawerLayoutAndroid.js} +0 -0
  587. /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 ButtonDown(uint32_t msg, uint64_t wParam, int64_t lParam);
43
- void PointerPressed(uint32_t msg, uint64_t wParam, int64_t lParam);
44
- void ButtonUp(uint32_t msg, uint64_t wParam, int64_t lParam);
45
- void PointerUp(uint32_t msg, uint64_t wParam, int64_t lParam);
46
- void MouseMove(uint32_t msg, uint64_t wParam, int64_t lParam);
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(TouchEventType eventType, PointerId pointerId);
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(ICompositionVisual, "2F7F7E82-0BEA-4Cf8-9531-E81338754187")
16
- struct ICompositionVisual : public IUnknown {
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(ICompositionDropShadow, "C6474C79-B99A-4312-8FE6-7BC0C9594E5C")
22
- struct ICompositionDropShadow : public IUnknown {
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(ICompositionBrush, "CFD63CA2-856E-4D5D-B2E2-68B982407051")
28
- struct ICompositionBrush : public IUnknown {
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(ICompositionDrawingSurfaceInner, "985963C3-1133-43CA-BAD2-AC4C893C3A1F")
34
- struct ICompositionDrawingSurfaceInner : public IUnknown {
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::CompositionContextHelper::CreateVisual(RootVisual()));
64
+ winrt::Microsoft::ReactNative::Composition::implementation::WindowsCompositionContextHelper::CreateVisual(
65
+ RootVisual()));
65
66
 
66
67
  UpdateSize();
67
68
  }
68
69
 
69
- double CompositionHwndHost::ScaleFactor() noexcept {
70
- return GetDpiForWindow(m_hwnd) / 96.0;
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::CompositionContextHelper::InnerCompositor(
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
- double ScaleFactor() noexcept;
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 S_OK;
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
- winrt::com_ptr<IRawElementProviderFragment> spFragment;
121
- focusedUiaProvider.as(spFragment);
122
- *pRetVal = spFragment.detach();
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
- double CompositionRootView::ScaleFactor() noexcept {
151
+ float CompositionRootView::ScaleFactor() noexcept {
142
152
  return m_scaleFactor;
143
153
  }
144
154
 
145
- void CompositionRootView::ScaleFactor(double value) noexcept {
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(Windows::Foundation::Size const &availableSize) const {
307
- Windows::Foundation::Size size{0.0f, 0.0f};
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(