react-native-windows 0.75.4 → 0.76.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 (310) hide show
  1. package/.flowconfig +6 -4
  2. package/Directory.Build.props +4 -0
  3. package/Directory.Build.targets +5 -0
  4. package/Libraries/Alert/Alert.js +3 -0
  5. package/Libraries/Alert/Alert.windows.js +3 -0
  6. package/Libraries/Animated/AnimatedEvent.js +1 -1
  7. package/Libraries/Animated/AnimatedImplementation.js +7 -7
  8. package/Libraries/Animated/NativeAnimatedAllowlist.js +111 -0
  9. package/Libraries/Animated/animations/Animation.js +11 -1
  10. package/Libraries/Animated/animations/DecayAnimation.js +1 -1
  11. package/Libraries/Animated/animations/SpringAnimation.js +1 -1
  12. package/Libraries/Animated/animations/TimingAnimation.js +2 -1
  13. package/Libraries/Animated/components/AnimatedScrollView.js +3 -2
  14. package/Libraries/Animated/createAnimatedComponent.js +10 -9
  15. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  16. package/Libraries/Animated/nodes/AnimatedInterpolation.js +3 -2
  17. package/Libraries/Animated/nodes/AnimatedNode.js +42 -33
  18. package/Libraries/Animated/nodes/AnimatedObject.js +56 -50
  19. package/Libraries/Animated/nodes/AnimatedProps.js +77 -40
  20. package/Libraries/Animated/nodes/AnimatedStyle.js +103 -59
  21. package/Libraries/Animated/nodes/AnimatedTracking.js +1 -1
  22. package/Libraries/Animated/nodes/AnimatedTransform.js +102 -67
  23. package/Libraries/Animated/nodes/AnimatedValue.js +2 -1
  24. package/Libraries/Animated/nodes/AnimatedWithChildren.js +21 -22
  25. package/Libraries/Animated/useAnimatedProps.js +142 -7
  26. package/Libraries/BatchedBridge/NativeModules.js +2 -0
  27. package/Libraries/Blob/FileReader.js +1 -1
  28. package/Libraries/Blob/URL.js +2 -62
  29. package/Libraries/Blob/URLSearchParams.js +71 -0
  30. package/Libraries/Components/Button.windows.js +0 -1
  31. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -1
  32. package/Libraries/Components/Keyboard/KeyboardExt.js.map +1 -1
  33. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +1 -1
  34. package/Libraries/Components/ScrollView/ScrollView.js +131 -169
  35. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -1
  36. package/Libraries/Components/StatusBar/StatusBar.js +3 -1
  37. package/Libraries/Components/TextInput/TextInput.d.ts +32 -2
  38. package/Libraries/Components/TextInput/TextInput.js +230 -94
  39. package/Libraries/Components/TextInput/TextInput.windows.js +230 -105
  40. package/Libraries/Components/View/ReactNativeStyleAttributes.js +22 -0
  41. package/Libraries/Components/View/ReactNativeViewAttributes.js +2 -0
  42. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +2 -0
  43. package/Libraries/Components/View/View.windows.js +32 -30
  44. package/Libraries/Components/View/ViewAccessibility.d.ts +15 -0
  45. package/Libraries/Components/View/ViewNativeComponent.js +0 -1
  46. package/Libraries/Components/View/ViewPropTypes.js +14 -0
  47. package/Libraries/Components/View/ViewPropTypes.windows.js +14 -0
  48. package/Libraries/Core/ExceptionsManager.js +2 -0
  49. package/Libraries/Core/InitializeCore.js +3 -1
  50. package/Libraries/Core/ReactFiberErrorDialog.js +3 -0
  51. package/Libraries/Core/ReactNativeVersion.js +4 -4
  52. package/Libraries/Core/setUpErrorHandling.js +7 -1
  53. package/Libraries/Core/setUpGlobals.js +1 -0
  54. package/Libraries/Core/setUpReactRefresh.js +0 -4
  55. package/Libraries/Image/AssetSourceResolver.js +28 -1
  56. package/Libraries/Image/AssetSourceResolver.windows.js +28 -1
  57. package/Libraries/Image/Image.android.js +9 -14
  58. package/Libraries/Image/Image.ios.js +11 -22
  59. package/Libraries/Image/Image.windows.js +11 -22
  60. package/Libraries/Image/ImageBackground.js +1 -8
  61. package/Libraries/Image/ImageUtils.js +9 -9
  62. package/Libraries/Image/ImageViewNativeComponent.js +1 -0
  63. package/Libraries/Inspector/Inspector.js +3 -2
  64. package/Libraries/Inspector/InspectorPanel.js +16 -10
  65. package/Libraries/Inspector/NetworkOverlay.js +1 -1
  66. package/Libraries/Interaction/TaskQueue.js +1 -0
  67. package/Libraries/Lists/FlatList.js +1 -1
  68. package/Libraries/Lists/SectionList.js +2 -2
  69. package/Libraries/Lists/SectionListModern.js +3 -3
  70. package/Libraries/LogBox/Data/LogBoxData.js +24 -3
  71. package/Libraries/LogBox/LogBoxNotificationContainer.js +3 -2
  72. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +9 -8
  73. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +9 -8
  74. package/Libraries/Modal/Modal.js +0 -1
  75. package/Libraries/NativeComponent/BaseViewConfig.android.js +8 -0
  76. package/Libraries/NativeComponent/BaseViewConfig.ios.js +7 -0
  77. package/Libraries/NativeComponent/BaseViewConfig.windows.js +7 -0
  78. package/Libraries/NativeComponent/NativeComponentRegistry.js +22 -22
  79. package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -21
  80. package/Libraries/Network/XMLHttpRequest.js +4 -2
  81. package/Libraries/ReactNative/AppContainer-dev.js +1 -5
  82. package/Libraries/ReactNative/AppContainer-prod.js +1 -5
  83. package/Libraries/ReactNative/AppContainer.js +1 -2
  84. package/Libraries/ReactNative/AppRegistry.d.ts +0 -4
  85. package/Libraries/ReactNative/AppRegistry.js +1 -7
  86. package/Libraries/ReactNative/BridgelessUIManager.js +1 -0
  87. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +1 -1
  88. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +5 -5
  89. package/Libraries/ReactNative/RendererImplementation.js +26 -4
  90. package/Libraries/ReactNative/getNativeComponentAttributes.js +8 -0
  91. package/Libraries/ReactNative/renderApplication.js +1 -3
  92. package/Libraries/Renderer/shims/ReactNativeTypes.js +11 -4
  93. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  94. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +57 -0
  95. package/Libraries/StyleSheet/StyleSheetTypes.js +60 -5
  96. package/Libraries/StyleSheet/processBackgroundImage.js +384 -0
  97. package/Libraries/StyleSheet/processBoxShadow.js +211 -0
  98. package/Libraries/StyleSheet/processFilter.js +231 -42
  99. package/Libraries/Text/Text.js +394 -196
  100. package/Libraries/Text/Text.windows.js +476 -300
  101. package/Libraries/Text/TextNativeComponent.js +2 -1
  102. package/Libraries/TurboModule/TurboModuleRegistry.js +13 -50
  103. package/Libraries/Types/CodegenTypes.js +3 -1
  104. package/Libraries/Utilities/Appearance.js +108 -84
  105. package/Libraries/Utilities/DevLoadingView.js +2 -4
  106. package/Libraries/Utilities/HMRClient.js +2 -1
  107. package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
  108. package/Libraries/Utilities/createPerformanceLogger.js +0 -9
  109. package/Libraries/Utilities/stringifyViewConfig.js +22 -0
  110. package/Libraries/Utilities/useColorScheme.js +3 -3
  111. package/Libraries/WebSocket/WebSocket.js +1 -1
  112. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  113. package/Libraries/vendor/emitter/EventEmitter.js +6 -5
  114. package/Microsoft.ReactNative/ComponentView.idl +11 -0
  115. package/Microsoft.ReactNative/Composition.Input.idl +1 -0
  116. package/Microsoft.ReactNative/CompositionSwitcher.idl +3 -0
  117. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +9 -9
  118. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.cpp +9 -9
  119. package/Microsoft.ReactNative/Fabric/ComponentView.cpp +7 -9
  120. package/Microsoft.ReactNative/Fabric/ComponentView.h +5 -6
  121. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp +4 -0
  122. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h +1 -0
  123. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +44 -13
  124. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +42 -5
  125. package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +1 -0
  126. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +81 -63
  127. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +2 -3
  128. package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +8 -6
  129. package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.h +1 -2
  130. package/Microsoft.ReactNative/Fabric/Composition/FocusManager.cpp +20 -6
  131. package/Microsoft.ReactNative/Fabric/Composition/FocusManager.h +13 -6
  132. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +2 -3
  133. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.h +1 -2
  134. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +72 -54
  135. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +14 -4
  136. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +26 -8
  137. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +5 -2
  138. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +18 -7
  139. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +1 -2
  140. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +6 -6
  141. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.h +1 -2
  142. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +97 -140
  143. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +8 -4
  144. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +18 -11
  145. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +5 -4
  146. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +0 -13
  147. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.h +0 -3
  148. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +29 -4
  149. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +2 -0
  150. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +1 -2
  151. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.h +1 -2
  152. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +28 -12
  153. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/HostPlatformColor.h +33 -0
  154. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +26 -9
  155. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +10 -4
  156. package/Microsoft.ReactNative/IReactModuleBuilder.cpp +5 -0
  157. package/Microsoft.ReactNative/IReactModuleBuilder.h +1 -0
  158. package/Microsoft.ReactNative/IReactModuleBuilder.idl +9 -0
  159. package/Microsoft.ReactNative/IReactViewComponentBuilder.idl +8 -1
  160. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +2 -0
  161. package/Microsoft.ReactNative/Modules/AlertModule.cpp +3 -1
  162. package/Microsoft.ReactNative/Modules/AppearanceModule.cpp +1 -1
  163. package/Microsoft.ReactNative/Modules/AppearanceModule.h +7 -1
  164. package/Microsoft.ReactNative/Modules/DevSettingsModule.cpp +3 -3
  165. package/Microsoft.ReactNative/Modules/DevSettingsModule.h +1 -1
  166. package/Microsoft.ReactNative/Modules/LinkingManagerModule.cpp +2 -2
  167. package/Microsoft.ReactNative/Modules/LinkingManagerModule.h +1 -1
  168. package/Microsoft.ReactNative/Modules/LogBoxModule.cpp +9 -0
  169. package/Microsoft.ReactNative/Modules/LogBoxModule.h +2 -0
  170. package/Microsoft.ReactNative/Modules/SampleTurboModule.cpp +121 -0
  171. package/Microsoft.ReactNative/Modules/SampleTurboModule.h +90 -0
  172. package/Microsoft.ReactNative/ReactHost/MsoReactContext.cpp +0 -7
  173. package/Microsoft.ReactNative/ReactHost/MsoReactContext.h +0 -5
  174. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +5 -1
  175. package/Microsoft.ReactNative/ReactInstanceSettingsBuilder.cpp +59 -0
  176. package/Microsoft.ReactNative/ReactInstanceSettingsBuilder.h +23 -0
  177. package/Microsoft.ReactNative/ReactNativeAppBuilder.cpp +179 -0
  178. package/Microsoft.ReactNative/ReactNativeAppBuilder.h +35 -0
  179. package/Microsoft.ReactNative/ReactNativeAppBuilder.idl +69 -0
  180. package/Microsoft.ReactNative/ReactNativeIsland.idl +2 -0
  181. package/Microsoft.ReactNative/ReactNativeWin32App.cpp +82 -0
  182. package/Microsoft.ReactNative/ReactNativeWin32App.h +38 -0
  183. package/Microsoft.ReactNative/TurboModulesProvider.cpp +45 -0
  184. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +2 -1
  185. package/Microsoft.ReactNative/Views/FlyoutViewManager.cpp +25 -16
  186. package/Microsoft.ReactNative/packages.fabric.lock.json +159 -0
  187. package/Microsoft.ReactNative/packages.lock.json +11 -12
  188. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +3 -4
  189. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +3 -0
  190. package/Microsoft.ReactNative.Cxx/ModuleRegistration.cpp +2 -2
  191. package/Microsoft.ReactNative.Cxx/ModuleRegistration.h +62 -4
  192. package/Microsoft.ReactNative.Cxx/NativeModules.h +131 -14
  193. package/Microsoft.ReactNative.Managed/packages.lock.json +9 -9
  194. package/Microsoft.ReactNative.Managed.CodeGen/ReactNativeNames.cs +10 -2
  195. package/PropertySheets/Autolink.props +1 -1
  196. package/PropertySheets/Bundle.props +1 -1
  197. package/PropertySheets/Codegen.props +1 -1
  198. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  199. package/PropertySheets/NuGet.LockFile.props +18 -0
  200. package/README.md +29 -29
  201. package/ReactCommon/ReactCommon.vcxproj +5 -1
  202. package/ReactCommon/ReactCommon.vcxproj.filters +11 -2
  203. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -7
  204. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +441 -0
  205. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h +266 -0
  206. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/Utf8.h +56 -0
  207. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Base.h +3 -1
  208. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +2 -2
  209. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +1 -1
  210. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Convert.h +172 -0
  211. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/EventEmitter.h +4 -5
  212. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Function.h +2 -2
  213. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +1 -1
  214. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +3 -2
  215. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +9 -0
  216. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/LayoutableShadowNode.cpp +363 -0
  217. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.h +22 -2
  218. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +118 -51
  219. package/ReactCommon/packages.lock.json +2 -2
  220. package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +8 -1
  221. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +2 -2
  222. package/Shared/Modules/WebSocketModule.cpp +1 -2
  223. package/Shared/Networking/WinRTWebSocketResource.cpp +4 -1
  224. package/Shared/Shared.vcxitems +38 -2
  225. package/Shared/Shared.vcxitems.filters +6 -1
  226. package/Shared/TurboModuleManager.cpp +0 -3
  227. package/codegen/NativeLinkingManagerSpec.g.h +3 -3
  228. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +198 -54
  229. package/codegen/NativeSampleTurboModuleSpec.g.h +35 -0
  230. package/codegen/rnwcoreJSI-generated.cpp +245 -101
  231. package/codegen/rnwcoreJSI.h +847 -548
  232. package/index.js +3 -1
  233. package/index.windows.js +3 -1
  234. package/jest/mockComponent.js +4 -1
  235. package/jest/mockModal.js +1 -3
  236. package/jest/mockScrollView.js +1 -1
  237. package/jest/renderer.js +2 -2
  238. package/jest/setup.js +16 -13
  239. package/package.json +29 -29
  240. package/src/private/animated/NativeAnimatedHelper.js +438 -0
  241. package/src/private/animated/NativeAnimatedValidation.js +64 -0
  242. package/src/private/components/HScrollViewNativeComponents.js +56 -0
  243. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +27 -0
  244. package/src/private/components/VScrollViewNativeComponents.js +48 -0
  245. package/src/private/components/useSyncOnScroll.js +48 -0
  246. package/src/private/featureflags/ReactNativeFeatureFlags.js +166 -16
  247. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +29 -5
  248. package/src/private/fusebox/FuseboxSessionObserver.js +42 -0
  249. package/{Libraries/Core → src/private/renderer/errorhandling}/ErrorHandlers.js +14 -4
  250. package/src/private/setup/setUpDOM.js +28 -0
  251. package/src/private/setup/setUpIntersectionObserver.js +27 -0
  252. package/src/private/setup/setUpMutationObserver.js +26 -0
  253. package/src/private/setup/setUpPerformanceObserver.js +64 -0
  254. package/src/private/specs/modules/NativeAppearance.js +3 -3
  255. package/src/private/specs/modules/NativeLinkingManager.js +1 -1
  256. package/src/private/specs/modules/NativePlatformConstantsWindows.js +7 -0
  257. package/src/private/specs/modules/NativeSampleTurboModule.js +14 -1
  258. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +6 -4
  259. package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver}/IntersectionObserver.js +5 -3
  260. package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver}/IntersectionObserverEntry.js +3 -3
  261. package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver}/IntersectionObserverManager.js +14 -17
  262. package/src/private/{specs/modules → webapis/intersectionobserver/specs}/NativeIntersectionObserver.js +2 -2
  263. package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver/specs}/__mocks__/NativeIntersectionObserver.js +4 -4
  264. package/{Libraries/MutationObserver → src/private/webapis/mutationobserver}/MutationObserver.js +5 -3
  265. package/{Libraries/MutationObserver → src/private/webapis/mutationobserver}/MutationObserverManager.js +24 -15
  266. package/{Libraries/MutationObserver → src/private/webapis/mutationobserver}/MutationRecord.js +4 -6
  267. package/src/private/{specs/modules → webapis/mutationobserver/specs}/NativeMutationObserver.js +2 -2
  268. package/{Libraries/MutationObserver → src/private/webapis/mutationobserver/specs}/__mocks__/NativeMutationObserver.js +5 -5
  269. package/src/private/webapis/performance/{EventCounts.js → EventTiming.js} +65 -3
  270. package/src/private/webapis/performance/LongTasks.js +39 -0
  271. package/src/private/webapis/performance/Performance.js +22 -9
  272. package/src/private/webapis/performance/PerformanceEntry.js +36 -18
  273. package/src/private/webapis/performance/PerformanceObserver.js +29 -43
  274. package/src/private/webapis/performance/RawPerformanceEntry.js +24 -1
  275. package/src/private/webapis/performance/UserTiming.js +17 -12
  276. package/src/private/webapis/performance/specs/NativePerformanceObserver.js +1 -1
  277. package/template/cpp-app/src/AutolinkedNativeModules.g.cpp +1 -1
  278. package/template/cpp-app/src/AutolinkedNativeModules.g.h +1 -1
  279. package/template/cs-app/src/AutolinkedNativeModules.g.cs +1 -1
  280. package/template/index.windows.bundle +1 -1
  281. package/template/metro.config.js +2 -2
  282. package/template/shared-app/src/AutolinkedNativeModules.g.props +1 -1
  283. package/template/shared-app/src/AutolinkedNativeModules.g.targets +1 -1
  284. package/templates/cpp-app/metro.config.js +2 -2
  285. package/templates/cpp-app/template.config.js +5 -5
  286. package/templates/cpp-app/windows/MyApp/AutolinkedNativeModules.g.cpp +1 -1
  287. package/templates/cpp-app/windows/MyApp/AutolinkedNativeModules.g.h +1 -1
  288. package/templates/cpp-app/windows/MyApp/MyApp.cpp +2 -0
  289. package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +1 -1
  290. package/templates/cpp-lib/example/metro.config.js +2 -2
  291. package/templates/cpp-lib/template.config.js +3 -3
  292. package/templates/cpp-lib/windows/MyLib/MyLib.h +3 -3
  293. package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +1 -1
  294. package/types/experimental.d.ts +20 -1
  295. package/Libraries/Animated/NativeAnimatedHelper.js +0 -615
  296. package/Libraries/Core/setUpIntersectionObserver.js +0 -16
  297. package/Libraries/Core/setUpMutationObserver.js +0 -16
  298. package/Libraries/Core/setUpPerformanceObserver.js +0 -18
  299. package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +0 -13
  300. package/Libraries/MutationObserver/NativeMutationObserver.js +0 -13
  301. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +0 -135
  302. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +0 -2396
  303. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.cpp +0 -136
  304. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.h +0 -92
  305. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.cpp +0 -48
  306. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.h +0 -122
  307. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.cpp +0 -388
  308. package/src/private/core/setUpDOM.js +0 -18
  309. package/src/private/webapis/performance/PerformanceEventTiming.js +0 -55
  310. /package/src/private/{core → styles}/composeStyles.js +0 -0
@@ -256,16 +256,14 @@ void ComponentView::CustomCommandHandler(const HandleCommandDelegate &handler) n
256
256
  m_customCommandHandler = handler;
257
257
  }
258
258
 
259
- void ComponentView::HandleCommand(
260
- winrt::hstring commandName,
261
- const winrt::Microsoft::ReactNative::IJSValueReader &args) noexcept {
259
+ void ComponentView::HandleCommand(const winrt::Microsoft::ReactNative::HandleCommandArgs &args) noexcept {
262
260
  if (m_customCommandHandler) {
263
- m_customCommandHandler(*this, commandName, args);
261
+ m_customCommandHandler(*this, args);
264
262
  }
265
263
  }
266
264
 
267
- winrt::Microsoft::ReactNative::Composition::implementation::RootComponentView *
268
- ComponentView::rootComponentView() noexcept {
265
+ winrt::Microsoft::ReactNative::Composition::implementation::RootComponentView *ComponentView::rootComponentView()
266
+ const noexcept {
269
267
  if (m_rootView)
270
268
  return m_rootView;
271
269
 
@@ -285,7 +283,7 @@ void ComponentView::parent(const winrt::Microsoft::ReactNative::ComponentView &p
285
283
  m_parent = parent;
286
284
  if (!parent) {
287
285
  if (oldRootView && oldRootView->GetFocusedComponent() == *this) {
288
- oldRootView->TrySetFocusedComponent(oldParent);
286
+ oldRootView->TrySetFocusedComponent(oldParent, winrt::Microsoft::ReactNative::FocusNavigationDirection::None);
289
287
  }
290
288
  }
291
289
  if (parent) {
@@ -424,7 +422,7 @@ void ComponentView::GotFocus(winrt::event_token const &token) noexcept {
424
422
 
425
423
  bool ComponentView::TryFocus() noexcept {
426
424
  if (auto root = rootComponentView()) {
427
- return root->TrySetFocusedComponent(*get_strong());
425
+ return root->TrySetFocusedComponent(*get_strong(), winrt::Microsoft::ReactNative::FocusNavigationDirection::None);
428
426
  }
429
427
 
430
428
  return false;
@@ -638,7 +636,7 @@ winrt::IInspectable ComponentView::EnsureUiaProvider() noexcept {
638
636
  return nullptr;
639
637
  }
640
638
 
641
- std::optional<std::string> ComponentView::getAcccessiblityValue() noexcept {
639
+ std::optional<std::string> ComponentView::getAccessiblityValue() noexcept {
642
640
  return std::nullopt;
643
641
  }
644
642
 
@@ -93,7 +93,8 @@ struct ComponentView : public ComponentViewT<ComponentView> {
93
93
  facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept;
94
94
  virtual void prepareForRecycle() noexcept;
95
95
  virtual facebook::react::Props::Shared props() noexcept;
96
- virtual winrt::Microsoft::ReactNative::Composition::implementation::RootComponentView *rootComponentView() noexcept;
96
+ virtual winrt::Microsoft::ReactNative::Composition::implementation::RootComponentView *rootComponentView()
97
+ const noexcept;
97
98
  virtual void parent(const winrt::Microsoft::ReactNative::ComponentView &parent) noexcept;
98
99
  virtual winrt::Microsoft::ReactNative::ComponentView Parent() const noexcept;
99
100
  virtual winrt::IVectorView<winrt::Microsoft::ReactNative::ComponentView> Children() const noexcept;
@@ -198,7 +199,7 @@ struct ComponentView : public ComponentViewT<ComponentView> {
198
199
  virtual facebook::react::Tag
199
200
  hitTest(facebook::react::Point pt, facebook::react::Point &localPt, bool ignorePointerEvents = false) const noexcept;
200
201
  virtual winrt::IInspectable EnsureUiaProvider() noexcept;
201
- virtual std::optional<std::string> getAcccessiblityValue() noexcept;
202
+ virtual std::optional<std::string> getAccessiblityValue() noexcept;
202
203
  virtual void setAcccessiblityValue(std::string &&value) noexcept;
203
204
  virtual bool getAcccessiblityIsReadOnly() noexcept;
204
205
  virtual ToggleState getToggleState() noexcept;
@@ -228,9 +229,7 @@ struct ComponentView : public ComponentViewT<ComponentView> {
228
229
  virtual void UnmountChildComponentView(
229
230
  const winrt::Microsoft::ReactNative::ComponentView &childComponentView,
230
231
  uint32_t index) noexcept;
231
- virtual void HandleCommand(
232
- winrt::hstring commandName,
233
- const winrt::Microsoft::ReactNative::IJSValueReader &args) noexcept;
232
+ virtual void HandleCommand(const winrt::Microsoft::ReactNative::HandleCommandArgs &args) noexcept;
234
233
  virtual void FinalizeUpdates(winrt::Microsoft::ReactNative::ComponentViewUpdateMask updateMask) noexcept;
235
234
  virtual void OnPointerEntered(
236
235
  const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept;
@@ -255,7 +254,7 @@ struct ComponentView : public ComponentViewT<ComponentView> {
255
254
  bool m_mounted : 1 {false};
256
255
  const facebook::react::Tag m_tag;
257
256
  winrt::IInspectable m_userData;
258
- winrt::Microsoft::ReactNative::Composition::implementation::RootComponentView *m_rootView{nullptr};
257
+ mutable winrt::Microsoft::ReactNative::Composition::implementation::RootComponentView *m_rootView{nullptr};
259
258
  mutable winrt::Microsoft::ReactNative::Composition::implementation::Theme *m_theme{nullptr};
260
259
  const winrt::Microsoft::ReactNative::ReactContext m_reactContext;
261
260
  winrt::Microsoft::ReactNative::ComponentView m_parent{nullptr};
@@ -637,6 +637,10 @@ bool PointerPoint::IsPointerMessage(uint32_t message) const noexcept {
637
637
  return (message >= WM_POINTERFIRST && message <= WM_POINTERLAST);
638
638
  }
639
639
 
640
+ winrt::Microsoft::UI::Input::PointerPoint PointerPoint::Inner() const noexcept {
641
+ return m_sysPointerPoint;
642
+ }
643
+
640
644
  PointerRoutedEventArgs::PointerRoutedEventArgs(
641
645
  const winrt::Microsoft::ReactNative::ReactContext &context,
642
646
  facebook::react::Tag tag,
@@ -198,6 +198,7 @@ struct PointerPoint : PointerPointT<PointerPoint> {
198
198
  uint64_t Timestamp() const noexcept;
199
199
  winrt::Microsoft::ReactNative::Composition::Input::PointerPoint GetOffsetPoint(
200
200
  const winrt::Windows::Foundation::Point &offset) const noexcept;
201
+ winrt::Microsoft::UI::Input::PointerPoint Inner() const noexcept;
201
202
 
202
203
  private:
203
204
  bool IsPointerMessage(uint32_t message) const noexcept;
@@ -12,6 +12,7 @@
12
12
 
13
13
  #include <Windows.Graphics.Interop.h>
14
14
  #include <windows.ui.composition.interop.h>
15
+ #include <winrt/Microsoft.ReactNative.Composition.Input.h>
15
16
  #include <winrt/Windows.Graphics.DirectX.Direct3D11.h>
16
17
  #include <winrt/Windows.UI.Composition.h>
17
18
  #include <winrt/Windows.UI.Composition.interactions.h>
@@ -744,14 +745,9 @@ struct CompScrollerVisual : winrt::implements<
744
745
  m_interactionTracker.MaxScale(1.0);
745
746
 
746
747
  m_visualInteractionSource = TTypeRedirects::VisualInteractionSource::Create(m_visual);
747
-
748
- m_visualInteractionSource.PositionXSourceMode(TTypeRedirects::InteractionSourceMode::EnabledWithInertia);
749
- m_visualInteractionSource.PositionYSourceMode(TTypeRedirects::InteractionSourceMode::EnabledWithInertia);
750
748
  m_visualInteractionSource.ScaleSourceMode(TTypeRedirects::InteractionSourceMode::Disabled);
751
-
752
- m_visualInteractionSource.ManipulationRedirectionMode(
753
- TTypeRedirects::VisualInteractionSourceRedirectionMode::CapableTouchpadAndPointerWheel);
754
749
  m_interactionTracker.InteractionSources().Add(m_visualInteractionSource);
750
+ UpdateInteractionModes();
755
751
 
756
752
  auto positionExpression = compositor.CreateExpressionAnimation(L"-tracker.Position");
757
753
  positionExpression.SetReferenceParameter(L"tracker", m_interactionTracker);
@@ -762,6 +758,44 @@ struct CompScrollerVisual : winrt::implements<
762
758
  return m_visual;
763
759
  }
764
760
 
761
+ void OnPointerPressed(
762
+ const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept {
763
+ if constexpr (std::is_same_v<TTypeRedirects, MicrosoftTypeRedirects>) {
764
+ auto pointerDeviceType = args.Pointer().PointerDeviceType();
765
+ if (pointerDeviceType == winrt::Microsoft::ReactNative::Composition::Input::PointerDeviceType::Touch) {
766
+ m_visualInteractionSource.TryRedirectForManipulation(args.GetCurrentPoint(args.OriginalSource()).Inner());
767
+ }
768
+ }
769
+ }
770
+
771
+ bool Horizontal() const noexcept {
772
+ return m_horizontal;
773
+ }
774
+
775
+ void Horizontal(bool value) noexcept {
776
+ m_horizontal = value;
777
+
778
+ UpdateInteractionModes();
779
+ }
780
+
781
+ void UpdateInteractionModes() noexcept {
782
+ if (m_isScrollEnabled) {
783
+ m_visualInteractionSource.PositionXSourceMode(
784
+ m_horizontal ? TTypeRedirects::InteractionSourceMode::EnabledWithInertia
785
+ : TTypeRedirects::InteractionSourceMode::Disabled);
786
+ m_visualInteractionSource.PositionYSourceMode(
787
+ m_horizontal ? TTypeRedirects::InteractionSourceMode::Disabled
788
+ : TTypeRedirects::InteractionSourceMode::EnabledWithInertia);
789
+ m_visualInteractionSource.ManipulationRedirectionMode(
790
+ TTypeRedirects::VisualInteractionSourceRedirectionMode::CapableTouchpadAndPointerWheel);
791
+ } else {
792
+ m_visualInteractionSource.PositionXSourceMode(TTypeRedirects::InteractionSourceMode::Disabled);
793
+ m_visualInteractionSource.PositionYSourceMode(TTypeRedirects::InteractionSourceMode::Disabled);
794
+ m_visualInteractionSource.ManipulationRedirectionMode(
795
+ TTypeRedirects::VisualInteractionSourceRedirectionMode::Off);
796
+ }
797
+ }
798
+
765
799
  void InsertAt(
766
800
  const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &visual,
767
801
  uint32_t index) noexcept {
@@ -796,13 +830,8 @@ struct CompScrollerVisual : winrt::implements<
796
830
  }
797
831
 
798
832
  void ScrollEnabled(bool isScrollEnabled) noexcept {
799
- if (isScrollEnabled) {
800
- m_visualInteractionSource.ManipulationRedirectionMode(
801
- TTypeRedirects::VisualInteractionSourceRedirectionMode::CapableTouchpadAndPointerWheel);
802
- } else {
803
- m_visualInteractionSource.ManipulationRedirectionMode(
804
- TTypeRedirects::VisualInteractionSourceRedirectionMode::Off);
805
- }
833
+ m_isScrollEnabled = isScrollEnabled;
834
+ UpdateInteractionModes();
806
835
  }
807
836
 
808
837
  void Opacity(float opacity) noexcept {
@@ -970,6 +999,8 @@ struct CompScrollerVisual : winrt::implements<
970
999
  0});
971
1000
  }
972
1001
 
1002
+ bool m_isScrollEnabled{true};
1003
+ bool m_horizontal{false};
973
1004
  bool m_inertia{false};
974
1005
  bool m_custom{false};
975
1006
  winrt::Windows::Foundation::Numerics::float3 m_targetPosition;
@@ -125,6 +125,10 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::get_ProviderOptions(Prov
125
125
  return S_OK;
126
126
  }
127
127
 
128
+ bool accessibilityValueHasValue(const facebook::react::AccessibilityValue &value) {
129
+ return (value.min.has_value() && value.max.has_value()) || value.now.has_value() || value.text.has_value();
130
+ }
131
+
128
132
  HRESULT __stdcall CompositionDynamicAutomationProvider::GetPatternProvider(PATTERNID patternId, IUnknown **pRetVal) {
129
133
  if (pRetVal == nullptr)
130
134
  return E_POINTER;
@@ -135,11 +139,15 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::GetPatternProvider(PATTE
135
139
  if (strongView == nullptr)
136
140
  return UIA_E_ELEMENTNOTAVAILABLE;
137
141
 
142
+ auto compositionView = strongView.try_as<winrt::Microsoft::ReactNative::Composition::implementation::ComponentView>();
143
+ if (compositionView == nullptr)
144
+ return UIA_E_ELEMENTNOTAVAILABLE;
138
145
  auto props = std::static_pointer_cast<const facebook::react::ViewProps>(
139
146
  winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)->props());
140
147
  if (props == nullptr)
141
148
  return UIA_E_ELEMENTNOTAVAILABLE;
142
- auto accessibilityRole = props->accessibilityRole;
149
+ auto accessibilityRole =
150
+ props->accessibilityRole.empty() ? compositionView->DefaultControlType() : props->accessibilityRole;
143
151
  // Invoke control pattern is used to support controls that do not maintain state
144
152
  // when activated but rather initiate or perform a single, unambiguous action.
145
153
  if (patternId == UIA_InvokePatternId &&
@@ -155,7 +163,15 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::GetPatternProvider(PATTE
155
163
  AddRef();
156
164
  }
157
165
 
158
- if (patternId == UIA_ValuePatternId) {
166
+ if (patternId == UIA_ValuePatternId &&
167
+ (accessibilityRole == "textinput" || accessibilityRole == "searchbox" ||
168
+ (accessibilityRole == "button" && accessibilityValueHasValue(props->accessibilityValue)) ||
169
+ (accessibilityRole == "combobox" && accessibilityValueHasValue(props->accessibilityValue)) ||
170
+ (accessibilityRole == "link" && accessibilityValueHasValue(props->accessibilityValue)) ||
171
+ (accessibilityRole == "listitem" && accessibilityValueHasValue(props->accessibilityValue)) ||
172
+ (accessibilityRole == "progressbar" && accessibilityValueHasValue(props->accessibilityValue)) ||
173
+ (accessibilityRole == "adjustable" && accessibilityValueHasValue(props->accessibilityValue)) ||
174
+ (accessibilityRole == "spinbutton" && accessibilityValueHasValue(props->accessibilityValue)))) {
159
175
  *pRetVal = static_cast<IValueProvider *>(this);
160
176
  AddRef();
161
177
  }
@@ -365,6 +381,8 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::Invoke() {
365
381
  if (spProviderSimple != nullptr) {
366
382
  UiaRaiseAutomationEvent(spProviderSimple.get(), UIA_Invoke_InvokedEventId);
367
383
  }
384
+ DispatchAccessibilityAction(m_view, "invoke");
385
+ DispatchAccessibilityAction(m_view, "activate");
368
386
 
369
387
  return S_OK;
370
388
  }
@@ -378,6 +396,7 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::ScrollIntoView() {
378
396
  winrt::Microsoft::ReactNative::implementation::BringIntoViewOptions scrollOptions;
379
397
  winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)
380
398
  ->StartBringIntoView(std::move(scrollOptions));
399
+ DispatchAccessibilityAction(m_view, "scrollIntoView");
381
400
 
382
401
  return S_OK;
383
402
  }
@@ -406,6 +425,7 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::SetValue(LPCWSTR val) {
406
425
 
407
426
  winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)
408
427
  ->setAcccessiblityValue(winrt::to_string(val));
428
+ DispatchAccessibilityAction(m_view, "setValue");
409
429
  return S_OK;
410
430
  }
411
431
 
@@ -418,7 +438,7 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::get_Value(BSTR *pRetVal)
418
438
  return UIA_E_ELEMENTNOTAVAILABLE;
419
439
 
420
440
  *pRetVal = StringToBSTR(winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)
421
- ->getAcccessiblityValue()
441
+ ->getAccessiblityValue()
422
442
  .value_or(""));
423
443
  return S_OK;
424
444
  }
@@ -431,8 +451,24 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::get_IsReadOnly(BOOL *pRe
431
451
  if (!strongView)
432
452
  return UIA_E_ELEMENTNOTAVAILABLE;
433
453
 
434
- *pRetVal = winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)
435
- ->getAcccessiblityIsReadOnly();
454
+ auto props = std::static_pointer_cast<const facebook::react::ViewProps>(
455
+ winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)->props());
456
+ if (props == nullptr)
457
+ return UIA_E_ELEMENTNOTAVAILABLE;
458
+ auto accessibilityRole = props->accessibilityRole;
459
+ if (accessibilityRole.empty()) {
460
+ // Control is using default control type. Use default IsReadOnly value.
461
+ *pRetVal = winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)
462
+ ->getAcccessiblityIsReadOnly();
463
+ } else if (
464
+ accessibilityRole == "textinput" || accessibilityRole == "searchbox" || accessibilityRole == "adjustable" ||
465
+ accessibilityRole == "spinbutton" || accessibilityRole == "combobox") {
466
+ // Control is using customized control type which should not be IsReadOnly for value pattern.
467
+ *pRetVal = false;
468
+ } else {
469
+ // Control is using customized control type which should be IsReadOnly for value pattern.
470
+ *pRetVal = true;
471
+ }
436
472
  return S_OK;
437
473
  }
438
474
 
@@ -456,6 +492,7 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::Toggle() {
456
492
  return UIA_E_ELEMENTNOTAVAILABLE;
457
493
 
458
494
  winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(strongView)->Toggle();
495
+ DispatchAccessibilityAction(m_view, "toggle");
459
496
  return S_OK;
460
497
  }
461
498
 
@@ -102,6 +102,7 @@ void CompositionHwndHost::UpdateSize() noexcept {
102
102
  // Do not relayout when minimized
103
103
  if (!IsIconic(m_hwnd)) {
104
104
  winrt::Microsoft::ReactNative::LayoutConstraints constraints;
105
+ constraints.LayoutDirection = winrt::Microsoft::ReactNative::LayoutDirection::Undefined;
105
106
  constraints.MinimumSize = constraints.MaximumSize = size;
106
107
  m_compRootView.Arrange(constraints, {0, 0});
107
108
  }
@@ -248,23 +248,26 @@ void ComponentView::updateEventEmitter(facebook::react::EventEmitter::Shared con
248
248
  base_type::updateEventEmitter(eventEmitter);
249
249
  }
250
250
 
251
- void ComponentView::HandleCommand(
252
- winrt::hstring commandName,
253
- const winrt::Microsoft::ReactNative::IJSValueReader &args) noexcept {
251
+ void ComponentView::HandleCommand(const winrt::Microsoft::ReactNative::HandleCommandArgs &args) noexcept {
252
+ base_type::HandleCommand(args);
253
+ if (args.Handled())
254
+ return;
255
+
256
+ auto commandName = args.CommandName();
254
257
  if (commandName == L"focus") {
255
258
  if (auto root = rootComponentView()) {
256
- root->TrySetFocusedComponent(*get_strong());
259
+ root->TrySetFocusedComponent(*get_strong(), winrt::Microsoft::ReactNative::FocusNavigationDirection::None);
257
260
  }
258
261
  return;
259
262
  }
260
263
  if (commandName == L"blur") {
261
264
  if (auto root = rootComponentView()) {
262
- root->TrySetFocusedComponent(nullptr); // Todo store this component as previously focused element
265
+ root->TrySetFocusedComponent(
266
+ nullptr, winrt::Microsoft::ReactNative::FocusNavigationDirection::None); // Todo store this component as
267
+ // previously focused element
263
268
  }
264
269
  return;
265
270
  }
266
-
267
- base_type::HandleCommand(commandName, args);
268
271
  }
269
272
 
270
273
  bool ComponentView::CapturePointer(const winrt::Microsoft::ReactNative::Composition::Input::Pointer &pointer) noexcept {
@@ -518,7 +521,7 @@ static winrt::com_ptr<ID2D1PathGeometry> GenerateRoundedRectPathGeometry(
518
521
  }
519
522
 
520
523
  RoundedPathParameters GenerateRoundedPathParameters(
521
- const facebook::react::RectangleCorners<float> &baseRadius,
524
+ const facebook::react::RectangleCorners<facebook::react::CornerRadii> &baseRadius,
522
525
  const facebook::react::RectangleEdges<float> &inset,
523
526
  const facebook::react::Size &pathSize) noexcept {
524
527
  RoundedPathParameters result;
@@ -527,10 +530,10 @@ RoundedPathParameters GenerateRoundedPathParameters(
527
530
  return result;
528
531
  }
529
532
 
530
- float totalTopRadius = baseRadius.topLeft + baseRadius.topRight;
531
- float totalRightRadius = baseRadius.topRight + baseRadius.bottomRight;
532
- float totalBottomRadius = baseRadius.bottomRight + baseRadius.bottomLeft;
533
- float totalLeftRadius = baseRadius.bottomLeft + baseRadius.topLeft;
533
+ float totalTopRadius = baseRadius.topLeft.horizontal + baseRadius.topRight.horizontal;
534
+ float totalRightRadius = baseRadius.topRight.vertical + baseRadius.bottomRight.vertical;
535
+ float totalBottomRadius = baseRadius.bottomRight.horizontal + baseRadius.bottomLeft.horizontal;
536
+ float totalLeftRadius = baseRadius.bottomLeft.vertical + baseRadius.topLeft.vertical;
534
537
 
535
538
  float maxHorizontalRadius = std::max(totalTopRadius, totalBottomRadius);
536
539
  float maxVerticalRadius = std::max(totalLeftRadius, totalRightRadius);
@@ -543,21 +546,21 @@ RoundedPathParameters GenerateRoundedPathParameters(
543
546
 
544
547
  float maxScale = std::max(1.0f, std::max(scaleHoriz, scaleVert));
545
548
 
546
- result.topLeftRadiusX = std::max(0.0f, baseRadius.topLeft / maxScale - inset.left);
547
- result.topLeftRadiusY = std::max(0.0f, baseRadius.topLeft / maxScale - inset.top);
548
- result.topRightRadiusX = std::max(0.0f, baseRadius.topRight / maxScale - inset.right);
549
- result.topRightRadiusY = std::max(0.0f, baseRadius.topRight / maxScale - inset.top);
550
- result.bottomRightRadiusX = std::max(0.0f, baseRadius.bottomRight / maxScale - inset.right);
551
- result.bottomRightRadiusY = std::max(0.0f, baseRadius.bottomRight / maxScale - inset.bottom);
552
- result.bottomLeftRadiusX = std::max(0.0f, baseRadius.bottomLeft / maxScale - inset.left);
553
- result.bottomLeftRadiusY = std::max(0.0f, baseRadius.bottomLeft / maxScale - inset.bottom);
549
+ result.topLeftRadiusX = std::max(0.0f, baseRadius.topLeft.horizontal / maxScale - inset.left);
550
+ result.topLeftRadiusY = std::max(0.0f, baseRadius.topLeft.vertical / maxScale - inset.top);
551
+ result.topRightRadiusX = std::max(0.0f, baseRadius.topRight.horizontal / maxScale - inset.right);
552
+ result.topRightRadiusY = std::max(0.0f, baseRadius.topRight.vertical / maxScale - inset.top);
553
+ result.bottomRightRadiusX = std::max(0.0f, baseRadius.bottomRight.horizontal / maxScale - inset.right);
554
+ result.bottomRightRadiusY = std::max(0.0f, baseRadius.bottomRight.vertical / maxScale - inset.bottom);
555
+ result.bottomLeftRadiusX = std::max(0.0f, baseRadius.bottomLeft.horizontal / maxScale - inset.left);
556
+ result.bottomLeftRadiusY = std::max(0.0f, baseRadius.bottomLeft.vertical / maxScale - inset.bottom);
554
557
 
555
558
  return result;
556
559
  }
557
560
 
558
561
  static winrt::com_ptr<ID2D1PathGeometry> GenerateRoundedRectPathGeometry(
559
562
  winrt::Microsoft::ReactNative::Composition::Experimental::ICompositionContext &compContext,
560
- const facebook::react::RectangleCorners<float> &baseRadius,
563
+ const facebook::react::RectangleCorners<facebook::react::CornerRadii> &baseRadius,
561
564
  const facebook::react::RectangleEdges<float> &inset,
562
565
  const facebook::react::RectangleEdges<float> &rectPathGeometry) noexcept {
563
566
  RoundedPathParameters params = GenerateRoundedPathParameters(
@@ -774,11 +777,11 @@ void DrawAllBorderLayers(
774
777
  spTextures[0], // Target Layer, Source Texture, Target Texture
775
778
  {0,
776
779
  0,
777
- borderRadii.topLeft + borderWidths.left,
778
- borderRadii.topLeft + borderWidths.top}, // Texture Left, Top, Width, Height
780
+ borderRadii.topLeft.vertical + borderWidths.left,
781
+ borderRadii.topLeft.horizontal + borderWidths.top}, // Texture Left, Top, Width, Height
779
782
  {AnchorPosition::Left, AnchorPosition::Top}, // Layer Anchor Point
780
783
  {0, 0}, // Layer Anchor Offset
781
- {borderRadii.topLeft + borderWidths.left, borderRadii.topLeft + borderWidths.top}, // size
784
+ {borderRadii.topLeft.vertical + borderWidths.left, borderRadii.topLeft.horizontal + borderWidths.top}, // size
782
785
  {0.0f, 0.0f}, // relativeSize
783
786
  std::max(borderWidths.left, borderWidths.top),
784
787
  borderColors.left ? borderColors.left : borderColors.top,
@@ -791,13 +794,13 @@ void DrawAllBorderLayers(
791
794
  spBorderLayers[1],
792
795
  shape,
793
796
  spTextures[1],
794
- {borderRadii.topLeft + borderWidths.left,
797
+ {borderRadii.topLeft.vertical + borderWidths.left,
795
798
  0,
796
- textureWidth - (borderRadii.topRight + borderWidths.right),
799
+ textureWidth - (borderRadii.topRight.vertical + borderWidths.right),
797
800
  borderWidths.top},
798
801
  {AnchorPosition::Left, AnchorPosition::Top},
799
- {borderRadii.topLeft + borderWidths.left, 0},
800
- {-(borderRadii.topLeft + borderWidths.left + borderRadii.topRight + borderWidths.right),
802
+ {borderRadii.topLeft.vertical + borderWidths.left, 0},
803
+ {-(borderRadii.topLeft.vertical + borderWidths.left + borderRadii.topRight.vertical + borderWidths.right),
801
804
  borderWidths.top}, // size
802
805
  {1.0f, 0.0f}, // relativeSize
803
806
  borderWidths.top,
@@ -811,13 +814,13 @@ void DrawAllBorderLayers(
811
814
  spBorderLayers[2],
812
815
  shape,
813
816
  spTextures[2],
814
- {textureWidth - (borderRadii.topRight + borderWidths.right),
817
+ {textureWidth - (borderRadii.topRight.vertical + borderWidths.right),
815
818
  0,
816
819
  textureWidth,
817
- borderRadii.topRight + borderWidths.top},
820
+ borderRadii.topRight.horizontal + borderWidths.top},
818
821
  {AnchorPosition::Right, AnchorPosition::Top},
819
- {-(borderRadii.topRight + borderWidths.right), 0},
820
- {borderRadii.topRight + borderWidths.right, borderRadii.topRight + borderWidths.top},
822
+ {-(borderRadii.topRight.vertical + borderWidths.right), 0},
823
+ {borderRadii.topRight.vertical + borderWidths.right, borderRadii.topRight.horizontal + borderWidths.top},
821
824
  {0.0f, 0.0f},
822
825
  std::max(borderWidths.right, borderWidths.top),
823
826
  borderColors.right ? borderColors.right : borderColors.top,
@@ -831,13 +834,14 @@ void DrawAllBorderLayers(
831
834
  shape,
832
835
  spTextures[3],
833
836
  {textureWidth - borderWidths.right,
834
- borderWidths.top + borderRadii.topRight,
837
+ borderWidths.top + borderRadii.topRight.horizontal,
835
838
  textureWidth,
836
- textureHeight - (borderWidths.bottom + borderRadii.bottomRight)},
839
+ textureHeight - (borderWidths.bottom + borderRadii.bottomRight.horizontal)},
837
840
  {AnchorPosition::Right, AnchorPosition::Top},
838
- {-borderWidths.right, borderWidths.top + borderRadii.topRight},
841
+ {-borderWidths.right, borderWidths.top + borderRadii.topRight.horizontal},
839
842
  {borderWidths.right,
840
- -(borderWidths.top + borderRadii.topRight + borderWidths.bottom + borderRadii.bottomRight)}, // size
843
+ -(borderWidths.top + borderRadii.topRight.horizontal + borderWidths.bottom +
844
+ borderRadii.bottomRight.horizontal)}, // size
841
845
  {0.0f, 1.0f},
842
846
  borderWidths.right,
843
847
  borderColors.right,
@@ -850,13 +854,14 @@ void DrawAllBorderLayers(
850
854
  spBorderLayers[4],
851
855
  shape,
852
856
  spTextures[4],
853
- {textureWidth - (borderWidths.right + borderRadii.bottomRight),
854
- textureHeight - (borderWidths.bottom + borderRadii.bottomRight),
857
+ {textureWidth - (borderWidths.right + borderRadii.bottomRight.vertical),
858
+ textureHeight - (borderWidths.bottom + borderRadii.bottomRight.horizontal),
855
859
  textureWidth,
856
860
  textureHeight},
857
861
  {AnchorPosition::Right, AnchorPosition::Bottom},
858
- {-(borderWidths.right + borderRadii.bottomRight), -(borderWidths.bottom + borderRadii.bottomRight)},
859
- {borderWidths.right + borderRadii.bottomRight, borderWidths.bottom + borderRadii.bottomRight},
862
+ {-(borderWidths.right + borderRadii.bottomRight.vertical),
863
+ -(borderWidths.bottom + borderRadii.bottomRight.horizontal)},
864
+ {borderWidths.right + borderRadii.bottomRight.vertical, borderWidths.bottom + borderRadii.bottomRight.horizontal},
860
865
  {0, 0},
861
866
  std::max(borderWidths.right, borderWidths.bottom),
862
867
  borderColors.right ? borderColors.right : borderColors.bottom,
@@ -869,13 +874,13 @@ void DrawAllBorderLayers(
869
874
  spBorderLayers[5],
870
875
  shape,
871
876
  spTextures[5],
872
- {borderWidths.left + borderRadii.bottomLeft,
877
+ {borderWidths.left + borderRadii.bottomLeft.vertical,
873
878
  textureHeight - borderWidths.bottom,
874
- textureWidth - (borderWidths.right + borderRadii.bottomRight),
879
+ textureWidth - (borderWidths.right + borderRadii.bottomRight.vertical),
875
880
  textureHeight},
876
881
  {AnchorPosition::Left, AnchorPosition::Bottom},
877
- {borderWidths.left + borderRadii.bottomLeft, -borderWidths.bottom},
878
- {-(borderWidths.right + borderRadii.bottomLeft + borderWidths.left + borderRadii.bottomRight),
882
+ {borderWidths.left + borderRadii.bottomLeft.vertical, -borderWidths.bottom},
883
+ {-(borderWidths.right + borderRadii.bottomLeft.vertical + borderWidths.left + borderRadii.bottomRight.vertical),
879
884
  borderWidths.bottom},
880
885
  {1.0f, 0.0f},
881
886
  borderWidths.bottom,
@@ -890,12 +895,12 @@ void DrawAllBorderLayers(
890
895
  shape,
891
896
  spTextures[6],
892
897
  {0,
893
- textureHeight - (borderWidths.bottom + borderRadii.bottomLeft),
894
- borderWidths.left + borderRadii.bottomLeft,
898
+ textureHeight - (borderWidths.bottom + borderRadii.bottomLeft.horizontal),
899
+ borderWidths.left + borderRadii.bottomLeft.vertical,
895
900
  textureHeight},
896
901
  {AnchorPosition::Left, AnchorPosition::Bottom},
897
- {0, -(borderWidths.bottom + borderRadii.bottomLeft)},
898
- {borderWidths.left + borderRadii.bottomLeft, borderWidths.bottom + borderRadii.bottomLeft},
902
+ {0, -(borderWidths.bottom + borderRadii.bottomLeft.horizontal)},
903
+ {borderWidths.left + borderRadii.bottomLeft.vertical, borderWidths.bottom + borderRadii.bottomLeft.horizontal},
899
904
  {0, 0},
900
905
  std::max(borderWidths.left, borderWidths.bottom),
901
906
  borderColors.left ? borderColors.left : borderColors.bottom,
@@ -909,12 +914,13 @@ void DrawAllBorderLayers(
909
914
  shape,
910
915
  spTextures[7],
911
916
  {0,
912
- borderWidths.top + borderRadii.topLeft,
917
+ borderWidths.top + borderRadii.topLeft.horizontal,
913
918
  borderWidths.left,
914
- textureHeight - (borderWidths.bottom + borderRadii.bottomLeft)},
919
+ textureHeight - (borderWidths.bottom + borderRadii.bottomLeft.horizontal)},
915
920
  {AnchorPosition::Left, AnchorPosition::Top},
916
- {0, borderWidths.top + borderRadii.topLeft},
917
- {borderWidths.left, -(borderWidths.top + borderRadii.topLeft + borderWidths.bottom + borderRadii.bottomLeft)},
921
+ {0, borderWidths.top + borderRadii.topLeft.horizontal},
922
+ {borderWidths.left,
923
+ -(borderWidths.top + borderRadii.topLeft.horizontal + borderWidths.bottom + borderRadii.bottomLeft.horizontal)},
918
924
  {0, 1},
919
925
  borderWidths.left,
920
926
  borderColors.left,
@@ -923,7 +929,7 @@ void DrawAllBorderLayers(
923
929
 
924
930
  winrt::com_ptr<ID2D1GeometryGroup> GetGeometryForRoundedBorder(
925
931
  winrt::Microsoft::ReactNative::Composition::Experimental::ICompositionContext &compContext,
926
- const facebook::react::RectangleCorners<float> &radius,
932
+ const facebook::react::RectangleCorners<facebook::react::CornerRadii> &radius,
927
933
  const facebook::react::RectangleEdges<float> &inset,
928
934
  const facebook::react::RectangleEdges<float> &thickness,
929
935
  const facebook::react::RectangleEdges<float> &rectPathGeometry) noexcept {
@@ -993,10 +999,17 @@ winrt::com_ptr<ID2D1GeometryGroup> GetGeometryForRoundedBorder(
993
999
  // Also apply scale factor to the radii at this point
994
1000
  void pixelRoundBorderRadii(facebook::react::BorderRadii &borderRadii, float scaleFactor) noexcept {
995
1001
  // Always round radii down to avoid spikey circles
996
- borderRadii.topLeft = std::floor(borderRadii.topLeft * scaleFactor);
997
- borderRadii.topRight = std::floor(borderRadii.topRight * scaleFactor);
998
- borderRadii.bottomLeft = std::floor(borderRadii.bottomLeft * scaleFactor);
999
- borderRadii.bottomRight = std::floor(borderRadii.bottomRight * scaleFactor);
1002
+ borderRadii.topLeft = {
1003
+ std::floor(borderRadii.topLeft.horizontal * scaleFactor), std::floor(borderRadii.topLeft.vertical * scaleFactor)};
1004
+ borderRadii.topRight = {
1005
+ std::floor(borderRadii.topRight.horizontal * scaleFactor),
1006
+ std::floor(borderRadii.topRight.vertical * scaleFactor)};
1007
+ borderRadii.bottomLeft = {
1008
+ std::floor(borderRadii.bottomLeft.horizontal * scaleFactor),
1009
+ std::floor(borderRadii.bottomLeft.vertical * scaleFactor)};
1010
+ borderRadii.bottomRight = {
1011
+ std::floor(borderRadii.bottomRight.horizontal * scaleFactor),
1012
+ std::floor(borderRadii.bottomRight.vertical * scaleFactor)};
1000
1013
  }
1001
1014
 
1002
1015
  void scaleAndPixelRoundBorderWidths(
@@ -1084,8 +1097,10 @@ bool ComponentView::TryUpdateSpecialBorderLayers(
1084
1097
  float extentWidth = layoutMetrics.frame.size.width * layoutMetrics.pointScaleFactor;
1085
1098
  float extentHeight = layoutMetrics.frame.size.height * layoutMetrics.pointScaleFactor;
1086
1099
 
1087
- if (borderMetrics.borderRadii.topLeft != 0 || borderMetrics.borderRadii.topRight != 0 ||
1088
- borderMetrics.borderRadii.bottomLeft != 0 || borderMetrics.borderRadii.bottomRight != 0) {
1100
+ if (borderMetrics.borderRadii.topLeft.horizontal != 0 || borderMetrics.borderRadii.topRight.horizontal != 0 ||
1101
+ borderMetrics.borderRadii.bottomLeft.horizontal != 0 || borderMetrics.borderRadii.bottomRight.horizontal != 0 ||
1102
+ borderMetrics.borderRadii.topLeft.vertical != 0 || borderMetrics.borderRadii.topRight.vertical != 0 ||
1103
+ borderMetrics.borderRadii.bottomLeft.vertical != 0 || borderMetrics.borderRadii.bottomRight.vertical != 0) {
1089
1104
  if (borderStyle == facebook::react::BorderStyle::Dotted || borderStyle == facebook::react::BorderStyle::Dashed) {
1090
1105
  // Because in DirectX geometry starts at the center of the stroke, we need to deflate
1091
1106
  // rectangle by half the stroke width to render correctly.
@@ -1310,8 +1325,9 @@ void ComponentView::updateAccessibilityProps(
1310
1325
  newViewProps.accessibilityLiveRegion);
1311
1326
  }
1312
1327
 
1313
- std::optional<std::string> ComponentView::getAcccessiblityValue() noexcept {
1314
- return std::static_pointer_cast<const facebook::react::ViewProps>(props())->accessibilityValue.text;
1328
+ std::optional<std::string> ComponentView::getAccessiblityValue() noexcept {
1329
+ return winrt::Microsoft::ReactNative::implementation::extractAccessibilityValue(
1330
+ std::static_pointer_cast<const facebook::react::ViewProps>(props())->accessibilityValue);
1315
1331
  }
1316
1332
 
1317
1333
  void ComponentView::setAcccessiblityValue(std::string &&value) noexcept {
@@ -1335,8 +1351,10 @@ void ComponentView::updateBorderLayoutMetrics(
1335
1351
  const facebook::react::ViewProps &viewProps) noexcept {
1336
1352
  auto borderMetrics = resolveAndAlignBorderMetrics(layoutMetrics, viewProps);
1337
1353
 
1338
- if (borderMetrics.borderRadii.topLeft == 0 && borderMetrics.borderRadii.topRight == 0 &&
1339
- borderMetrics.borderRadii.bottomLeft == 0 && borderMetrics.borderRadii.bottomRight == 0) {
1354
+ if (borderMetrics.borderRadii.topLeft.horizontal == 0 && borderMetrics.borderRadii.topRight.horizontal == 0 &&
1355
+ borderMetrics.borderRadii.bottomLeft.horizontal == 0 && borderMetrics.borderRadii.bottomRight.horizontal == 0 &&
1356
+ borderMetrics.borderRadii.topLeft.vertical == 0 && borderMetrics.borderRadii.topRight.vertical == 0 &&
1357
+ borderMetrics.borderRadii.bottomLeft.vertical == 0 && borderMetrics.borderRadii.bottomRight.vertical == 0) {
1340
1358
  Visual().as<::Microsoft::ReactNative::Composition::Experimental::IVisualInterop>()->SetClippingPath(nullptr);
1341
1359
  } else {
1342
1360
  winrt::com_ptr<ID2D1PathGeometry> pathGeometry = GenerateRoundedRectPathGeometry(
@@ -38,8 +38,7 @@ struct ComponentView : public ComponentViewT<
38
38
  virtual winrt::Microsoft::ReactNative::Composition::Experimental::IVisual OuterVisual() const noexcept;
39
39
  void updateEventEmitter(facebook::react::EventEmitter::Shared const &eventEmitter) noexcept override;
40
40
  const facebook::react::SharedViewEventEmitter &GetEventEmitter() const noexcept;
41
- void HandleCommand(winrt::hstring commandName, const winrt::Microsoft::ReactNative::IJSValueReader &args) noexcept
42
- override;
41
+ void HandleCommand(const winrt::Microsoft::ReactNative::HandleCommandArgs &args) noexcept override;
43
42
  facebook::react::Props::Shared props() noexcept override;
44
43
  virtual const facebook::react::SharedViewProps &viewProps() const noexcept {
45
44
  static facebook::react::SharedViewProps emptyProps;
@@ -92,7 +91,7 @@ struct ComponentView : public ComponentViewT<
92
91
  void EnsureTransformMatrixFacade() noexcept;
93
92
 
94
93
  winrt::IInspectable EnsureUiaProvider() noexcept override;
95
- std::optional<std::string> getAcccessiblityValue() noexcept override;
94
+ std::optional<std::string> getAccessiblityValue() noexcept override;
96
95
  void setAcccessiblityValue(std::string &&value) noexcept override;
97
96
  bool getAcccessiblityIsReadOnly() noexcept override;
98
97
  ToggleState getToggleState() noexcept override;